八.设置控制(Settings Control)
作为最后一步,我们将学会如何使用模块的设置控制。该控制将使用标准的DotNetNuke核心特性被添加到模块动作菜单的默认设置选项中。
打开Settings.ascx用户控件并添加一个CheckBox控件(将它命名为Checkbox1)并设置文本属性为“Header in bold”。
打开该控件的代码文件并将下面的代码代替LoadSettings中的代码:
Public Overrides Sub LoadSettings() Try If Not Page.IsPostBack Then CheckBox1.Checked = CType(Settings("HelloBold"), Boolean) End If Catch exc As Exception ProcessModuleLoadException(Me, exc) End Try End Sub
用下面的代码代替UpdateSettings中的代码:
Public Overrides Sub UpdateSettings() Try Dim objModules As New Entities.Modules.ModuleController objModules.UpdateModuleSetting(ModuleId, "HelloBold", CheckBox1.Checked.ToString) Catch exc As Exception ProcessModuleLoadException(Me, exc) End Try End Sub
现在你可以重新编译项目,测试一下看是否工作正常。增加几条信息并改变模块设置中的粗体选项,看看模块是如何工作的。  一切ok!你现在在DotNetNuke 3.X中已经拥有了一个很好的HelloWorld模块。
九.打包(Packaging)
如果你打算分发该模块,你应当把所有必需的文件打包到一个zip文件中,并创建一个配置文件(其扩展名为 .dnn)。之后你就可以在任何站点使用DotNetNuke的自动处理来安装该模块。
如果你遵从先前的指导的话,压根儿你就不需要修改HelloWorld.dnn文件(你可以在VS.NET中你的项目的Install文件夹下找到该文件)。为了确信该文件的正确性,检查其中列出的文件并查看它们是否和你创建的文件相同。
除了zip文件自身,对于zip压缩文件中的每个文件,确信HelloWorld.dnn包含一节:
<file>
<name>……</name>
</file>
在App_LocalResources文件夹下的文件应该象下面这样列出:
<file>
<path>App_LocalResources </path>
<name>……</name>
</file>
Zip文件中应当包含如下文件:
- HelloWorld.ascx
- HelloWorldEdit.ascx
- Settings.ascx
- VMasanas.DNN.Modules.HelloWorld.dll (dll for the module project)
- VMasanas.DNN.Modules.HelloWorld.SqlDataProvider.dll (dll for the dataprovider)
- HelloWorld.dnn (install file)
- icon_HelloWorld_32px.gif
- module.css
- HelloWorld.ascx.res (from the App_LocalResources folder)
- HelloWorldEdit.ascx.res (from the App_LocalResources folder)
- Settings.ascx.res (from the App_LocalResources folder)
还应该包含2个文件:
-
01.00.00
.SqlDataProvider。该文件包含第四步(数据库DataBase)中产生的代码。还记得我们把那些代码保存到一个文件中吗?把这些生成的代码复制到该文件中并把它包含在zip压缩文件中。名称的第一部分应当和dnn文件(<version>01.00.00</version>)中的数字相同。该文件会在这个私有程序集(PA)被安装到DotNetNuke中时执行。你也必须添加sql脚本来创建在该指南中我们先前创建的HelloWorld表(你可以使用VS.NET或企业管理器来生成该表的创建脚本)。在生成的脚本中你应当移除所有对你使用的数据库的引用-数据库拥有者,并用{databaseOwner}替代。同样的,如果你对你所有的DotNetNuke对象(在web.config中所指定)使用了一个对象限定符,你应当把所有的引用用{objectQualifier}来替代。
- uninstall.SqlDataProvider。你应当把当模块卸载时清理数据库所需要的代码放到这里。在我们的用例中,它应当包含用于存储过程和HelloWorld表的drop语句。
你会在HelloWorldSqlDataProvider文件夹中找到上述的两个文件。
这是一个在任何给定的DotNetNuke安装中用来创建HelloWorld表的正确的脚本:
if exists (select * from dbo.sysobjects where id = object_id( N'{databaseOwner}{objectQualifier}VMasanas_HelloWorld') and OBJECTPROPERTY(id, N'IsUserTable') = 1) {databaseOwner}{objectQualifier}VMasanas_HelloWorld GO
if not exists (select * from dbo.sysobjects where id = object_id( N'{databaseOwner}{objectQualifier}VMasanas_HelloWorld') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE {databaseOwner}{objectQualifier}VMasanas_HelloWorld ( [itemID] [int] IDENTITY (1, 1) NOT NULL , [moduleID] [int] NOT NULL , [message] [nvarchar] (50) NOT NULL ) ON [PRIMARY] END
GO
ALTER TABLE {databaseOwner}{objectQualifier}VMasanas_HelloWorld WITH NOCHECK ADD CONSTRAINT [PK_VMasanas_HelloWorld] PRIMARY KEY CLUSTERED ( [itemID] ) ON [PRIMARY] GO
ALTER TABLE {databaseOwner}{objectQualifier}VMasanas_HelloWorld ADD CONSTRAINT [FK_VMasanas_HelloWorld_Modules] FOREIGN KEY ( [moduleID] ) REFERENCES {databaseOwner}{objectQualifier}Modules ( [ModuleID] ) ON DELETE CASCADE GO
你需要用一个干净的,没有安装HelloWorld的DotNetNuke站点来测试私有程序集安装包。 (全文完!)
 |