在mojoportal中建立自定义模块
在mojoportal中建立自定义模块
原文:http://techblog.strongeye.com/archive/2009/12/16/creating-a-mojoportal-module.aspx
Mojoportal是一个开源的内容管理系统,正是我们在StrongEye站点中使用的这个系统。它对asp.net 网络应用程序进行了广泛的封装,并且对开发者非常友好。
更新:对许多常用的网站开发任务,你可能不需要编写额外的代码。这篇指南针对的读者是想要了解如何在mojoportal建立新的功能模块的读者。
开发者需要在mojoportal中建立一个新的模块,这个模块是一个100%的自定义应用程序,可以无缝的嵌入到mojoportal系统中。
首先你需要下载mojoportal的源代码,然后建立自己的vs解决方案。
如何建立一个mojoportal模块
Category 类型 |
Steps 步骤 |
Notes 注意 |
Create UI project
建立UI 工程
|
建立一个新的工程 [你的工程名].UI 删除或重命名工程自动生成的Default.aspx文件,以确保不会错误的拷贝到网站中 建立子文件夹 /[你的工程名] /[你的工程名]/Controls 建立子文件夹 /Setup/ |
. 注意:建立的是web应用程序而不是web站点。 建立setup 文件夹中的内容超出本文的讨论范围,具体见See the developer documentation here for details |
建立Bussiness工程 |
建立一个类库工程 [你的工程名].Business |
|
建立Data层工程 |
建立一个类库工程 [你的工程名].Data
重命名你的数据层工程为 [你的工程名].Data.MSSQL(或者你使用的其他数据库) |
|
为你得web UI工程添加引用 |
· Log4net · mojoPortal.Business · mojoPortal.Business.WebHelpers · mojoPortal.Features.UI · mojoPortal.Net · mojoPortal.Web · mojoPortal.Web.Controls · mojoPortal.Web.Editor · mojoPortal.Web.Framework · [yourProject].Business |
|
为[你的工程名].Business 工程添加引用 |
· [yourProject].Data.MSSQL
|
|
添加 .resx 文件用于本地化 |
建立一个标准的asp.net文件夹App_GlobalResources. 在这个文件夹中,添加一个新的.resc文件通过选择添加-新项-Resources文件。 这个文件以程序名命名,这样可以确保名字的唯一性。. |
|
Step 2:
让你得工程模仿mojoportal.web,这样才可以编译通过
Category 类别 |
Steps 步骤 |
Notes 注意 |
更新 Web.Config |
打开mojoportal.web中的web.config文件, 拷贝整个<pages>部分到你的工程.UI的web.config文件中 |
<pages>部分在<system.web>中,你的工程中可能有自动生成的<pages>,替换之即可。 . |
拷贝 Master Pages
|
在[你的工程名].UI工程中,建立App_MasterPages文件夹,拷贝WebStore.UI中的layout.master文件过来。(这个更适合,因为他是整个master 页面的子集,也是我们需要来开发的)
注意不是mojoportal.web中的。 |
这个给你的aspx页面正确的内容占位符,当你开发你的特色模块时 |
Step 3:建立你自己的模块
这个模块是一个.ascx控件,这个控件继承自SiteModuleControl 并且建立特别实例的入口点到你的自定义代码中。从这个入口点,你可能有许多其他的页面,比如自定义的aspx页面,使用了master页面。
这些步骤可以用CodeSmith来生成。
分类 |
步骤 |
注意 |
建立模块 ascx |
建立文件夹,如下: [你的工程名].UI /[工程名]/ 右键点击并且建立一个新的用户控件(.ascx),如下: [工程名]Module.ascx |
|
使用CodeSmith模板,生成ascx文件 |
打开codeSmith管理器,在模板Explorer中,打开Codesmith4x文件夹,这个文件夹在mojoportal\codeSmith Templates中
找到模板: Mp_UI-starter_ModuleControlGenerator.cst 右键单击,选择“开始生成” 在弹出的窗口中输入: 作者:[你的名字] BusinessLayerNameSpace: [yourProject].Business ControlName: [yourModuleControlName] FeatureName: [yourProject] UINameSpace: [yourProject].UI 单击“生成” |
生成的结果包含了html和cs代码,你需要分离他们,然后再进行相关操作 |
粘贴到你的模块中 |
选择以 // Author: [yourname]开始的代码,直到最后 . 这段代码粘贴到 [yourModule]Module.ascx.cs 中
拷贝剩余的代码到module.ascx文件中
|
|
Step 3:添加编译时的逻辑代码到你的Web 工程中
这个步骤将使得你得代码同mojoportal进行整合,当正确编译的时候。
分类 |
步骤 |
说明 |
打开你得.UI工程的属性 |
打开你得.UI工程的属性,打开Build Events选项卡 |
|
添加编译时的命令行 |
拷贝以下代码到你的Post-build事件命令行中,以你的工程名路径名替换XXX, 以你的工程名替换YYY
xcopy /s /y "$(ProjectDir)bin\YYY.UI.dll" "$(SolutionDir)Web\bin\" xcopy /s /y "$(ProjectDir)bin\YYY.Business.dll" "$(SolutionDir)Web\bin\" xcopy /s /y "$(ProjectDir)bin\YYY.Data.dll" "$(SolutionDir)Web\bin\" xcopy /s /y "$(ProjectDir)XXX\*.ashx" "$(SolutionDir)Web\XXX\" xcopy /s /y "$(ProjectDir)XXX\*.ascx" "$(SolutionDir)Web\XXX\" xcopy /s /y "$(ProjectDir)XXX\*.aspx" "$(SolutionDir)Web\XXX\" xcopy /s /y "$(ProjectDir)XXX\Controls\*.ascx" "$(SolutionDir)Web\XXX\Controls\" xcopy /s /y "$(ProjectDir)App_GlobalResources\*.resx" "$(SolutionDir)Web\App_GlobalResources\" xcopy /s /y "$(ProjectDir)Setup\*" "$(SolutionDir)Web\Setup"
保存,点击“Edit post-build”
| |
I
安装模块 |
在后台管理中添加特色模块。 |
如下图: