100 likes | 206 Views
Improving DNN Metadata. Sebastian Leupold. Current Limitations I. Core Objects are not extensible Page Settings HeaderImage ( used in Skin) Slogan ( used in Skin) Accent color ( used in Skin) TabModule Product displayed in HTML instance (ID used in Solution) Folder
E N D
Improving DNN Metadata Sebastian Leupold
CurrentLimitations I • Core Objects are not extensible • Page Settings • HeaderImage (used in Skin) • Slogan (used in Skin) • Accent color (used in Skin) • TabModule • Productdisplayed in HTML instance (ID used in Solution) • Folder • Allowedfiletypesfor a custommodule
CurrentLimitations II • Cascadedeleteofmoduledata on moduledeleterequiresforeignkeyortrigger on coretable Modules • When a moduleisuninstalled, recordsmayremain in portalSettings,… • Modules usinganotherstoragethan DNN databasehavenooption • Extensionshavenochance, togetnotified on insert/update/deleteofpages, files, folders, users … • The coreframeworkhasfewinformationaboutthemodules, onlybyinterfaces • Interfaces require additional implementation
Whatother CMS do • Other CMS have a single „content“ type, thatgetsmorphed per usecase (bycontent type specificattributes, stored in dedicateddependanttablesorserialized) • mayrestricttheoptionsforextensiondevelopers • mayaffectperformance
Idea • Offerbettercommunicationwithcoreframework: • Access coreobjects • Extendobjectmodelwithcustomobjects • Use a commonpatternforobjecttypes • Offeractionbasedaccess on BCL level • Registration ofcustomobjecttypesduringinstallprocess
PropertyTypes ContentTypes PropertyTypeId PropertyDefinitions PropertyTypeName PropertyDefId ContentTypes [ContentTypeId] PropertyName User Module Tab (Page) TabModule Website Host UserRole RoleGroup EventType Forum ThreadPostBlogPostComment [ModuleDefId] PropertyTypeId ContentTypeId EventTypes EventDefinitions EventTypeId EventTypeName EventDefId [ContentTypeId] EventDefName [ModuleDefId] EventType ContentTypeId PermissionTypes PermissionDefinitions PermissionTypeId PermissionTypeName PermissionDefId [ContentTypeId] PermissionDefName [ModuleDefId] PermissionType [ModuleDefId] ContentTypeId
Event Registration ContentTypes User Module Tab (Page) TabModule Website Host UserRole RoleGroup EventType Forum ThreadPostBlogPostComment EventRegistrations EventDefinitions EventRegisterId ContentTypeId EventDefId EventDefinition EventDefName Before/after… EventType Method Call ContentTypeId [ModuleDefId]
ContentProperties Content PropertyId PropertyTypeId Tabs ObjectTypeId TabId TabName … ModuleId ModuleName … ModuleId ModuleName … TabId/ModuleId/… PropertyValue EventLog Modules EventId EventTypeId ObjectTypeId TabId/ModuleId/… LogData Forums Permissions PermissionId PermissionTypeId ObjectTypeId TabId/ModuleId/… User/Role PermissionValue
ContentProperties Contents PropertyId PropertyTypeId Tabs ContentId objectId = RegisterContent(type, localId) ContentId ContentTypeIdLocalId Auditing TabId TabNameContentId … ModuleId ModuleName ContentId … ModuleId ModuleName ContentId … PropertyValue EventLog ContentItem Modules EventId EventTypeId ContentId LogData Forums Permissions PermissionId PermissionTypeId Taxonomy ContentId User/Role PermissionValue
Profile Property Definitions PropertyTypeId PortalId (optional) ContentId ModuleId