在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

 

安装模块

在后台管理中添加特色模块。

 

 如下图:

 

 

 

posted on 2010-03-19 22:05  蓝蓝的天2016  阅读(737)  评论(0编辑  收藏  举报