sss

mac2022-06-30  22

在UrlRewriteModule有个功能取当前的tab和tab下的module.PortalSettings.vb:GetPortalSettings()

IconBar.ascx是页面最上边负责站点管理的控件。向页面加入module--ControlPanelBase.vb:AddNewModule()

setting页面出现的原理1。在模块的基类PortalModuleBase.vb: LoadActions()_actions.Add(GetNextActionID, Services.Localization.Localization.GetString(ModuleActionType.ModuleSettings, Services.Localization.Localization.GlobalResourceFile), ModuleActionType.ModuleSettings, "", "settings.gif", NavigateURL(TabId, "Module", "ModuleId=" & ModuleId.ToString), secure:=SecurityAccessLevel.Admin, Visible:=True)

2.当点击时相当与访问: http://localhost/DotNetNuke/Test/tabid/53/ctl/Module/ModuleId/370/Default.aspx其中 ctl = Module3.skin.vb中会载入 Admin/Modules/ModuleSettings.ascx

4.ModuleSettings:会载入具体模块的setting.ascx

5.前提是在.dnn文件中配置好模块ControlKey=Setting所对应的ascx

skin.vb中关于页面中模块加载的原理主要工作都在Page_Init实现1。首先加载ControlPanel ctlPane.Controls.Add(objControlPanel)2.IsAdminControl() =true ( 本质就在于ctl=null 或者 ModuleId =null)就加载module主页面。主页面和其他页面的区别就在与controlkey=null3.IsAdminControl() =false就根据controlkey取该模块该key所对应的ascx

样式表的应用顺序1.default.aspx:ManageStyleSheets()

default.cssskin.css*sinName*.css

portal.css

2.skin.vb: InjectModule()container.css*ContainerName*.css

 

skin和Container加载的过程

1。在default.aspx的Page_Init():   SkinPlaceHolder.Controls.Add(ctlSkin)2。在skin.vb的page_init(): 首先:从数据库得到module的存放位置,并在当前的skin.ascx中找到对印的Panel Dim parent As Control = Me.FindControl(objModule.PaneName)

接着:InjectModule(parent, objModule, PortalSettings)

3.  InjectModule(其中 parent = objPane):

找到容器ctlContainer = LoadContainer(objModule.ContainerSrc, objPane)

向容器的内容部分加入module找到容器中的放module的cell Dim objCell As Control = ctlContainer.FindControl(glbDefaultPane)把module放入一个临时的panelobjPanel.Controls.Add(objPortalModuleBase)把临时的panel放入容器的contentPanelobjCell.Controls.Add(objPanel)

把容器加入道objPane生成一个领事的容器panel,并把容器加入道这个领事的panel中Dim ctlDragDropContainer As Panel = New Panel  objPane.Controls.Add(ctlDragDropContainer)   ctlDragDropContainer.Controls.Add(ctlContainer)把容器加入道objPane.Controls.Add(ctlContainer)

最后处理actionProcessActionControls(objPortalModuleBase, ctlContainer)

 

action的原理1。本module如果有自己的的action则重载 属性 ModuleActions2。在module的基类PortalModuleBase.vb: LoadActions()加入所有的action3.container.ascx决定怎么显示SolPartActions.ascx以菜单的形式显示ActionButton.ascx以按钮的形式显示

 

 

 

 

转载于:https://www.cnblogs.com/Elong/archive/2007/02/25/655273.html

相关资源:sss扫描工具
最新回复(0)