为了达到所见即所得的目标,当管理员的身份被识别,控制条将被动态的插入页面。控制条提供了多个频道和模块的管理选项。默认状态下,控制条横向显示于浏览器的顶端,这样做的目的是让整体页面的显示尽可能的不受到影响。
皮肤解决方案也允许用户改变默认的控制条位置使其包含在某个栏目中,方法是在自定义皮肤中设置一个名为“ControlPanel”的栏目。这个栏目可以放置在页面中的任何位置——但是必须记住的是它仅仅在网站管理员和主机管理员登陆的时候显示。你也可以通过站点设置创建或修改自定义控制条。
为多种应用等级配置的皮肤设置必须是稳固的,所以这些设置需要存储在数据库中。为了对核心的站点表产生尽可能小的影响,我们创建了一个外键允许为空的映射表。这个映射表存储了皮肤的配置信息,包括页面皮肤和容器,并且允许前台站点和后台管理页面具有不同的皮肤。站点,频道,模块的等级关系表现为一个平面,这样就允许了简单的查询来确定对任意对象的皮肤的正确分配。
映射表的数据存储是相当简明的——唯一的复杂性在于ID字段。如果一个站点ID为空,则该站点将引用主机级别的皮肤,如果不为空则引用特定站点的皮肤。同样一个频道的ID引用一个特定频道皮肤,一个模块ID引用一个特定模块的容器。如果在映射表中找不到需要的数据,应用程序将使用默认的应用程序皮肤和容器 ( _default )。
皮肤对象是一个可以包含在皮肤文件的静态HTML标签中的动态元素,它提供了动态的用户界面。由许多默认的皮肤对象已经包含在DotNetNuke 中(请看附录B的定义),这些默认的皮肤对象提供了最普遍的应用程序函数,比如登陆,身份,以及导航。然而,事实上一个解决方案如果没有良好的拓展性,那么它将无法称为优秀的解决方案。基于这个需求,DotNetNuke 添加了允许用户创建和安装自定义皮肤对象的特性。
自定义皮肤对象和自定义模块(私有配件)的安装是一样的。所有必须的皮肤对象资源文件与DotNetNuke 清单关联在一起,并压缩成ZIP包。
一个皮肤对象创建成私有配件的样本已经包含在/DesktopModules/PageTitle 中,如下所示的*.dnn清单定义了该私有配件包:
<?xml version="1.0" encoding="utf-8" ?>
<dotnetnuke version="2.0" type="SkinObject">
<folders>
<folder>
<name>CompanyName - PageTitle</name>
<modules>
<module>
<controls>
<control>
<key>PAGETITLE</key>
<src>PageTitle.ascx</src>
<type>SkinObject</type>
</control>
</controls>
</module>
</modules>
<files>
<file>
<name>PageTitle.ascx</name>
</file>
<file>
<name>YourCompanyName.PageTitle.dll</name>
</file>
</files>
</folder>
</folders>
</dotnetnuke>
在DotNetNuke中实现的皮肤解决方案获得了大量优秀的程序员无私的帮助和努力。我们在这里将感谢:
Bandar Naghi HostIsIt Networks ( http://www.naghi.net ) – 版面设计
Phil Beadle of Nexxus Systems International ( http://www.nexxus.com.au ) – XML皮肤
David Haggard and Erik France of NewCovenant Evangelistic Ministries ( http://www.newcovenant.com ) – HTML 主题
Snapsis Dynamic Website Services ( http://www.snapsis.com ) – CSS皮肤
Joe Brinkman of TAG Software ( http://www.tag-software.net ) – 模块名称
and Steve Fabian of Gooddogs.Com (http://www.gooddogs.com/dnn ) - 加强的容器.
同时我们要感谢SMARTY template engine ( http://smarty.php.net/ ) 的概念设计。最后,我们要感谢微软的ASP.NET项目组提供了如此强大和优秀的web应用程序框架。
In order to achieve WYSIWYG usability, a Control Panel control is dynamically injected into the page when Administrators identify themselves. The Control Panel contains a variety of administrative options for managing tabs and modules. By default, the Control Panel is displayed as a horizontal bar at the top of your browser window. The placement of this bar at the top of the page is intended to minimize the distortion to the overall appearance of the page.
The Skinning solution also offers the ability for you to override the default Control Panel behaviour by including a pane named “ControlPanel” in your skin. This pane could be anywhere on your page – but you need to remember that the Control Panel control will only be displayed for the Administrator or Host. You also have the ability to create and leverage a custom Control Panel through the Host Settings.
The assignment of skins to various application levels must be persistent and is therefore stored in the database. To minimize the impact on core portal database tables, a separate mapping table was created with nullable foreign keys. The mapping table stores skin assignment information for both page skins and containers and can differentiate between public portal and private admin skins. The hierarchical relationship of Portal, Tab, and Module is represented in a flat format which allows for a single query to determine the appropriate skin assignment for any object.
The data stored in the mapping table is fairly straightforward – the only complexity is in the ID area. A PortalID of NULL refers to a page skin defined at the host level. A PortalID which is not NULL refers to page skin for a specific portal. A TabID refers to a page skin for a specific tab. And a ModuleID refers to a container skin for a specific module. If no records exist in the mapping table, the application will use the default application skin and container ( _default ).
Skins Objects are active elements which can be included in the static HTML markup of your skin file to produce a dynamic user interface. There are a number of default skin objects included with DotNetNuke ( outlined in Appendix B ) for common portal functions such as login, status, and navigation. However, the fact is, any good technical solution falls short unless it provides at least a minimal degree of extensibility. Based on this requirement, a feature was added which allows you to create and install your own custom skin objects.
Custom skin objects are packaged and installed using the same process as Custom Modules ( Private Assemblies ). All of the necessary skin object resource files are combined with a DotNetNuke manifest file ( * .dnn ) and packaged into a compressed ZIP file.
A sample skin object created as a Private Assembly has been included in the default installation at /DesktopModules/PageTitle. The following *.dnn manifest file defines the package:
<?xml version="1.0" encoding="utf-8" ?>
<dotnetnuke version="2.0" type="SkinObject">
<folders>
<folder>
<name>CompanyName - PageTitle</name>
<modules>
<module>
<controls>
<control>
<key>PAGETITLE</key>
<src>PageTitle.ascx</src>
<type>SkinObject</type>
</control>
</controls>
</module>
</modules>
<files>
<file>
<name>PageTitle.ascx</name>
</file>
<file>
<name>YourCompanyName.PageTitle.dll</name>
</file>
</files>
</folder>
</folders>
</dotnetnuke>
The skinning solution implemented in DotNetNuke represents the combined efforts of many talented individuals. I would like to give credit to Bandar Naghi of HostIsIt Networks ( http://www.naghi.net ) – Multi-Layouts, Phil Beadle of Nexxus Systems International ( http://www.nexxus.com.au ) - XML Skins, David Haggard and Erik France of NewCovenant Evangelistic Ministries ( http://www.newcovenant.com ) – HTML Themes, Snapsis Dynamic Website Services ( http://www.snapsis.com ) – CSS Skins, Joe Brinkman of TAG Software ( http://www.tag-software.net ) – Module Title, and Steve Fabian of Gooddogs.Com (http://www.gooddogs.com/dnn ) - Enhanced Containers. I would also like to acknowledge the SMARTY template engine ( http://smarty.php.net/ ) for design concepts and inspiration. And finally I would like to thank the Microsoft ASP.NET project team for providing such a powerful and robust web application framework.
DotNetNuke Skinning Whitepaper 翻译记录:
DotNetNuke Skinning Whitepaper 翻译记录(简介部分)
DotNetNuke Skinning Whitepaper 翻译记录(术语与win客户端程序部分)
DotNetNuke Skinning Whitepaper 翻译记录(技术部分)
DotNetNuke Skinning Whitepaper 翻译记录(定义部分--大厨师翻译)
DotNetNuke Skinning Whitepaper 翻译记录(DotNetNuke部分)
DotNetNuke Skinning Whitepaper 翻译记录(总揽部分)
DotNetNuke Skinning Whitepaper 翻译记录(文件组织部分--大厨师翻译)
DotNetNuke Skinning Whitepaper 翻译记录(页面处理部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤包部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤定义部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤创建部分) (大厨师翻译中...)
DotNetNuke Skinning Whitepaper 翻译记录(容器创建部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤上传部分)
DotNetNuke Skinning Whitepaper 翻译记录(XCOPY 部署部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤管理与皮肤预览部分)
在DotNetNuke中实现的皮肤解决方案获得了大量优秀的程序员无私的帮助和努力。我们在这里将感谢:
Bandar Naghi HostIsIt Networks ( http://www.naghi.net ) – 版面设计
Phil Beadle of Nexxus Systems International ( http://www.nexxus.com.au ) – XML皮肤
David Haggard and Erik France of NewCovenant Evangelistic Ministries ( http://www.newcovenant.com ) – HTML 主题
Snapsis Dynamic Website Services ( http://www.snapsis.com ) – CSS皮肤
Joe Brinkman of TAG Software ( http://www.tag-software.net ) – 模块名称
and Steve Fabian of Gooddogs.Com (http://www.gooddogs.com/dnn ) - 加强的容器.
同时我们要感谢SMARTY template engine ( http://smarty.php.net/ ) 的概念设计。最后,我们要感谢微软的ASP.NET项目组提供了如此强大和优秀的web应用程序框架。
In order to achieve WYSIWYG usability, a Control Panel control is dynamically injected into the page when Administrators identify themselves. The Control Panel contains a variety of administrative options for managing tabs and modules. By default, the Control Panel is displayed as a horizontal bar at the top of your browser window. The placement of this bar at the top of the page is intended to minimize the distortion to the overall appearance of the page.
The Skinning solution also offers the ability for you to override the default Control Panel behaviour by including a pane named “ControlPanel” in your skin. This pane could be anywhere on your page – but you need to remember that the Control Panel control will only be displayed for the Administrator or Host. You also have the ability to create and leverage a custom Control Panel through the Host Settings.
The assignment of skins to various application levels must be persistent and is therefore stored in the database. To minimize the impact on core portal database tables, a separate mapping table was created with nullable foreign keys. The mapping table stores skin assignment information for both page skins and containers and can differentiate between public portal and private admin skins. The hierarchical relationship of Portal, Tab, and Module is represented in a flat format which allows for a single query to determine the appropriate skin assignment for any object.
The data stored in the mapping table is fairly straightforward – the only complexity is in the ID area. A PortalID of NULL refers to a page skin defined at the host level. A PortalID which is not NULL refers to page skin for a specific portal. A TabID refers to a page skin for a specific tab. And a ModuleID refers to a container skin for a specific module. If no records exist in the mapping table, the application will use the default application skin and container ( _default ).
Skins Objects are active elements which can be included in the static HTML markup of your skin file to produce a dynamic user interface. There are a number of default skin objects included with DotNetNuke ( outlined in Appendix B ) for common portal functions such as login, status, and navigation. However, the fact is, any good technical solution falls short unless it provides at least a minimal degree of extensibility. Based on this requirement, a feature was added which allows you to create and install your own custom skin objects.
Custom skin objects are packaged and installed using the same process as Custom Modules ( Private Assemblies ). All of the necessary skin object resource files are combined with a DotNetNuke manifest file ( * .dnn ) and packaged into a compressed ZIP file.
A sample skin object created as a Private Assembly has been included in the default installation at /DesktopModules/PageTitle. The following *.dnn manifest file defines the package:
<?xml version="1.0" encoding="utf-8" ?>
<dotnetnuke version="2.0" type="SkinObject">
<folders>
<folder>
<name>CompanyName - PageTitle</name>
<modules>
<module>
<controls>
<control>
<key>PAGETITLE</key>
<src>PageTitle.ascx</src>
<type>SkinObject</type>
</control>
</controls>
</module>
</modules>
<files>
<file>
<name>PageTitle.ascx</name>
</file>
<file>
<name>YourCompanyName.PageTitle.dll</name>
</file>
</files>
</folder>
</folders>
</dotnetnuke>
The skinning solution implemented in DotNetNuke represents the combined efforts of many talented individuals. I would like to give credit to Bandar Naghi of HostIsIt Networks ( http://www.naghi.net ) – Multi-Layouts, Phil Beadle of Nexxus Systems International ( http://www.nexxus.com.au ) - XML Skins, David Haggard and Erik France of NewCovenant Evangelistic Ministries ( http://www.newcovenant.com ) – HTML Themes, Snapsis Dynamic Website Services ( http://www.snapsis.com ) – CSS Skins, Joe Brinkman of TAG Software ( http://www.tag-software.net ) – Module Title, and Steve Fabian of Gooddogs.Com (http://www.gooddogs.com/dnn ) - Enhanced Containers. I would also like to acknowledge the SMARTY template engine ( http://smarty.php.net/ ) for design concepts and inspiration. And finally I would like to thank the Microsoft ASP.NET project team for providing such a powerful and robust web application framework.
DotNetNuke Skinning Whitepaper 翻译记录:
DotNetNuke Skinning Whitepaper 翻译记录(简介部分)
DotNetNuke Skinning Whitepaper 翻译记录(术语与win客户端程序部分)
DotNetNuke Skinning Whitepaper 翻译记录(技术部分)
DotNetNuke Skinning Whitepaper 翻译记录(定义部分--大厨师翻译)
DotNetNuke Skinning Whitepaper 翻译记录(DotNetNuke部分)
DotNetNuke Skinning Whitepaper 翻译记录(总揽部分)
DotNetNuke Skinning Whitepaper 翻译记录(文件组织部分--大厨师翻译)
DotNetNuke Skinning Whitepaper 翻译记录(页面处理部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤包部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤定义部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤创建部分) (大厨师翻译中...)
DotNetNuke Skinning Whitepaper 翻译记录(容器创建部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤上传部分)
DotNetNuke Skinning Whitepaper 翻译记录(XCOPY 部署部分)
DotNetNuke Skinning Whitepaper 翻译记录(皮肤管理与皮肤预览部分)