2009年5月23日

个人知识管理系统

一度有这种经历,自己以前弄过的东西,由于过了很长时间,就是忘了该怎么弄,非得经历较长的时间才能恢复起那种技能,或者几乎就是需要重新经历一遍才行。还有这样一种经历,自己信心满满的准备学习一种分为很多部分的资料,开始几天坚持得很好,但是由于临时性的事情打乱了我的计划,使得我渐渐成为计划容易执行困难的人。还有一种情况,我在更新我的个人网站(纯HTML撰写)时,更新一次比较麻烦,如果不能访问到服务器的文件夹,几乎就无法更。

为了解决上面三种困扰,我花了三天时间更新了自己的个人网站系统,并且具有个人知识管理的功能。这里备份一下基本的搭建流程,以备将来查找。

----------------------------------

1. 初始安装:下载moin-1.8.3.tar.gz,解压后在主目录下新建"mywiki"文件夹,将wiki目录下的data和underlay文件夹拷贝放入mywiki文件夹中,然后在主目录下修改wikiconfig.py中对应的site_name为你喜欢的名字,logo_string中修改你的logo(注意这里的/moin_static183就是\wiki\htdocs\),data_dir为'./mywiki/data',data_underlay_dir = './mywiki/underlay/', 设置超级用户superuser = [u"yourid", ], 设置网站访问权限acl_right_default = u"yourid:read,write,delete,revert,admin All:read"(这样写yourid有管理员权限,其他人有只读权限);记得将acl_rights_before注释掉,这样便于利用moin自带的单网页权限控制,后面会介绍;修改navi_bar为你需要的网站目录结构,修改网站主题theme_default为你喜欢的,可以安装新主题。然后运行主目录下的wikiserver.py,即可在你本地浏览器中访问你的个人wiki网站了,地址http://localhost:8080 这里的端口8080可以在wikiserverconfig.py中修改配置。

2. 权限管理:在对应的wiki页面源码顶部添加"#acl Default -All",就可以实现相关页面的私有化。如果不希望你的系统被注册新用户的话,可以将\MoinMoin\action\newaccount.py删除。

3. 个性化配置:首先是如何切换网站主题,在初始安装过程中的theme_default进行修改。系统默认的主题有四个classic,modern,modernized,rightsidebar。也可以安装新的主题,一般流程为在http://moinmo.in/ThemeMarket 页面中选定并下载你需要的主题压缩包,解压后将主题名称的文件夹拷贝放入wiki\htdocs\,将主题名称的py文件放入mywiki\data\plugin\theme\。然后就可以如法修改为你喜欢的主题了。如果需要进一步做细微的调整,可以修改对应主题的py程序(这个需要一点点python功底)。这里说明几个不容易看明白的个性化配置选项。

3.1 在对应主题的py程序中def title(self, d)函数返回的链接似乎有问题,生成在页面顶部的链接点击时会出现找不到的情况。我的修改如下:将这段
html = '''
<ul id="pagelocation">%s </ul>
''' % "".join(content)

修改为
html = '''
<ul id="pagelocation">%s</ul>
''' % "".join('''<li><a class="backlink" href="/''' + d['page_name'] + '" rel="nofollow">' + d['page_name'] + '</a></li>')

3.2 对应的def wikipanel是你的目录块,我将下面几行注释掉了,感觉不必输出wiki字样
#u'<h1>%s</h1>' % _("Wiki"),
#u'<h1>%s</h1>',

3.3同样的pagepanel中注释掉了
#u'<h1>%s</h1>' % _("Page"),
#u'<h1>%s</h1>',

3.4 由于我最终采用了sinorca4moin这种类似于http://www.scipy.org/网站的主题,页面顶端的header部分感觉比较罗嗦,我在def header函数块中注释掉了middle header部分使得不显示logo等相关部分,还注释掉了其中的self.msg(d), self.iconbar(d),等冗余部分。相应的注释还需要在editorheader部分同样进行,因为这部分是管编辑状态下的页面顶端内容的。

3.5 改动比较大的应该算是其中的def footer函数块了。这里主管每个页面的底栏部分。我把其中的self.credits(d),self.showversion(d, **keywords) 注释掉了,替换为自己的版权信息。

做完这些配置,我的wiki个人网站系统就非常的符合我的口味了。

4. 插件安装:这个部分是我花费了较多时间来逐一尝试和学习的,也就是这个部分的内容使得我的这个个人网站wiki系统非常的棒。

我自己在moin官网上下载并安装了如下的macro和parser。安装方法就是将相应的macro拷贝放入mywiki/data/plugin/macro,将相应的parser拷贝放入mywiki/data/plugin/parser即可:

Macros:PageComment2(可以添加和网友交互的注释框,用来方便的实现留言板), MonthCalendarTopList(将所在页面的monthcalender抽取出最新的记录), EventCalendar(比monthcalender高级的月历,类似于google calender,不知为何只能安装原始的0.8版,功能比最新版差很多,不倾向于推荐),MonthCalendarHack(原先的monthcalender必须要求日期页面采用= xxx =的格式,hack后可以采用'''xxx'''来实现), Color2(实现文本颜色)

Parsers:todo(实现todolist的功能), eventcal(用于EventCalender 0.80版)

5. 高级用法:经过这次安装和不断的上网查找信息,我学会了一些更高级的moin用法,其中最高兴的功能就是Include,可以实现相关页面的嵌入,配合上正则表达式还可以将任何一个Monthcalender中的日历内容批量式显示在任何页面中。

---------------------

经过以上无补,我的个人知识管理系统搭建好了。Moin作为个人知识管理系统的好处可以参见这个slides: DriveIntoMoinPub

1 条评论:

匿名 说...

HI。。哥们 能跟你请教下moinmoin wiki的技术问题吗 留个联系方式吧 或者你加我QQ411741709