八.設置控制(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站點來測試私有程序集安裝包。
(全文完!)
|