经过一夜的折腾,总算把站点上的WIKI搭上了,
在首页上有WIKI首页的连接,因为考虑到WIKI的内容的问题,所以,当前需要注册才能访问,点击"WIKI主页",进入之后点击注册即可进行WIKI发布,欢迎发布哈,现在我没有开放文件上传的功能,主要是因为站点的空间不是很多,上传太多我受不了啊。
站点使用的是BlogEngine.NET,而集成的WIKI是ScrewTurn Wiki,这个东西是个纯ASP.Net2.0的开源WIKI。BlogEngine.NET站点上的WIKI就是集成的这个。在BlogEngine.Net上面有一位仁兄问道这个问题,答复是直接集成,前提条件是需要设置WIKI的目录未虚拟目录,这哪成啊,我的web站点服务器不是我操控,废了。所以只能从源代码上入手了。
看到了ScrewTurn的源代码的时候,只有一句话,真是名不副实的东西太多了。ScrewTurn Wiki如果说是成熟,也勉强算得上,功能,插件都有了,但是代码质量就有些不敢恭维了,初时一个Settings类整的我的机器差点挂掉,这次真正深入的时候发现另外一个问题:单例类的初始化居然在单例类之外!!!这个初始化就麻烦了,实在Global中初始化了。
整合的步骤如下
-
拷贝Global中的函数到主站点的Global里面,关键是函数
|
void Application_BeginRequest(object sender, EventArgs e)
{
// Extract the physical page name, i.e. MainPage.ashx
string pageName = System.IO.Path.GetFileNameWithoutExtension(HttpContext.Current.Request.PhysicalPath);
// Exctract the extension, i.e. .ashx
string ext = System.IO.Path.GetExtension(HttpContext.Current.Request.PhysicalPath).ToLower();
// Remove trailing dot, .ashx -> ashx
if (ext.Length > 0) ext = ext.Substring(1);
string qs = "";
try
{
// This might throw exceptions if 3rd party modules interefer with the request pipeline
qs = HttpContext.Current.Request.Url.Query.Replace("?", "&");
}
catch { }
if (ext.Equals("ashx"))
{
// Demand the request to Default.aspx
HttpContext.Current.RewritePath("~/wiki/Default.aspx?Page=" + pageName + qs);
}
}
void Session_Start(object sender, EventArgs e)
{
ScrewTurn.Wiki.SessionFacade.Breadcrumbs = new ScrewTurn.Wiki.BreadcrumbsManager();
}
|
注意函数里面的ashx,这个后缀和settings中的配置要一致。默认也是这个。
在函数Application_Start中增加初始化函数
ScrewTurn.Wiki.StartupTools.Startup();
-
将Wiki的文件拷贝到wiki目录下,复制App_code下的代码到主目录下的App_Code下,修改每个aspx的引用的MasterPage.master的路径为"~/wiki/MasterPage.master".
源代码中存在一个缺陷,部分ASPX中对Session没有创建,需要手工增加 EnableSessionState="True"。
- 拷贝bin下的文件到主目录下的相同目录。
我对源代码做了如下修改
- 保持Singleton初始化的时候是自己类初始化自己
- 创建的文件不再以cs结尾,修改成.wiki结尾
- 所有的目录修正为wiki目录下
- 修正加载文件信息的时候文件内容为空的时候出现的异常。
- 集成fckeditor到wiki的编辑器,刨除原先的那个非常晦涩的wiki编辑器
- 修改Edit.aspx中,无需再输入文件名,文件名自动生成。
- 修改展示页面,增加管理功能,页面太多的时候ScrewTurn的管理工具就难了。呵呵。
写一幅字,激励自己一下,哈
看样子还行,哈哈!这句"使作善也"出自《弟子规》,原句是"养子使作善也",这句是典型的教育核心,呵呵,孩子明年二月就要出生了,以前和小飞聊了不少养孩子的事情,现在看样子要开始实践了,哈哈。