下面一段兒視頻《Wikis in Plain English》推薦給Wiki老手和Wiki新人們:老手們可以學習一下如何以非常生動、易懂的方式向大眾介紹Wiki;新手可以了解一下Wiki最核心、最有用的知識 :-)

背景配音中說:Email是一種過時的交流方式了,而Wiki則是一種新型方式。很佩服這位不停地做演示的先生,他把我們平時聽上去很技術化的、說起來很麻煩的Wiki應用,完全用紙張來演示。

其中花了相當大的一部分時間來演示“編輯”--“保存”這個內容。從第一位夥伴到第四位夥伴的互相編輯、保存,很生動地說明了利用Wiki進行的新型“協作”方式。

演示的最後一環則點出了另外一個核心內容“鏈接”。此處演示的是Wiki的內部鏈接:當你點擊某個鏈接後,被告知是一個新頁面時,你和你的夥伴又可以協作 編輯這個新的頁面了!--是否這位作者認為外部鏈接沒啥必要說明呢?反正我是覺得沒啥必要說明,比起內部鏈接的魅力,外部鏈接不值一提,哈哈:-P

最後作者強調說,你可以在任何Wiki上進行這樣的操作,並推薦了幾個Wiki網站。我這裡推薦wikispaces :-)

最近在把“教育会议日历”添加进Google日历中与大家共享--这里要感谢翻译和审校“教育会议日历”的同志们 :-) 因为内容过于庞大,本月15号之前只把2007年度的会议放上去,做成一个Beta版,2008年的稍后上菜。同时,我用到的是Google Apps中的calendar。(广告时间:想试用Google Apps的朋友,可以试着申请下周五论坛的邮箱用)

原打算只在教育中文翻译主站嵌入日历的,想想既然在推wiki,何不在此也添加一下呢?

将Google提供的HTML代码直接放入Mediawiki的做法是行不通的。我尝试着直接将代码放入页面,不行;创建一个模板来放置也不行!于是开始找插件。用中文搜索时,我只找到一个不是很健全的插件,并且不是为Google日历做的,而是在Mediawiki中实现日历功能。果然老天不负有心人呐,找到了专门为嵌入Google日历而做的Mediawiki插件,一步步说来:

  • 一、先创建一个叫googleCalendar.php的文件,文件里放进如下代码(这代码不能直接用)
    <?php
    # Google Calendars
    #
    # Tag :
    #   <googlecalendar>docid</googlecalendar>  
    
    # Ex :
    #   from url http://calendar.google.com/calendarplay?docid=6444586097901795775
    #   <googlecalendar>6444586097901795775</googlecalendar>
    #
    # Enjoy !  
    
    $wgExtensionFunctions[] = 'wfGoogleCalendar';
    $wgExtensionCredits['parserhook'][] = array(
    'name' => 'Google Calendar',
    'description' => 'Display Google Calendar',
    'author' => 'Kasper Souren',
    'url' => '/wiki/Google_Calendar_MediaWiki_plugin'
    );  
    
    function wfGoogleCalendar() {
    global $wgParser;
    $wgParser->setHook('googlecalendar', 'renderGoogleCalendar');
    }  
    
    # The callback function for converting the input text to HTML output
    function renderGoogleCalendar($input) {
    $input = htmlspecialchars($input);
    //$input = "6444586097901795775"  
    
    $width = 425;
    $height = 350;  
    
    $output = '<iframe src="http://www.google.com/calendar/embed?src=g43t277um81su1tjvgvah609qk%40group.calendar.google.com&pvttk=db8cdde758254dbe5a511723cac5da46&title=CSC-NZ&chrome=NAVIGATION&height=600&epr=4" mce_src="http://www.google.com/calendar/embed?src=g43t277um81su1tjvgvah609qk%40group.calendar.google.com&pvttk=db8cdde758254dbe5a511723cac5da46&title=CSC-NZ&chrome=NAVIGATION&height=600&epr=4" style=" border-width:0 " width="480" frameborder="0" height="600"></iframe>';
    $output = '<iframe src="http://www.google.com/calendar/embed?src='.$input.'&title=CSC-NZ&chrome=NAVIGATION&height=600&epr=4" mce_src="http://www.google.com/calendar/embed?src='.$input.'&title=CSC-NZ&chrome=NAVIGATION&height=600&epr=4" style=" border-width:0 " width="480" frameborder="0" height="600"></iframe>';  
    
    /*  
    
    $output = '<embed style="width:'.$width.'px; height:'.$height.'px;" '
    .'id="CalendarPlayback" type="application/x-shockwave-flash" '
    .'src="http://calendar.google.com/googleplayer.swf?docId='
    .$input.'" mce_src="http://calendar.google.com/googleplayer.swf?docId='
    .$input.'"> </embed>';
    */
    return $output;
    }
    ?>

    你需要对代码做本地化工作,才能让它显示你想要的效果。这个下面具体说。

  • 二、将这个googleCalendar.php文件放进wiki的extensions/目录下。
  • 三、在LocalSetting.php文件末尾添加这样一行: require_once('extensions/googleCalendar.php');

这算是“安装”完成,下面来看本地化如何做:

  • 一、将上面代码中的“input = "6444586097901795775"”改成你自己日历的ID。这个ID是什么呢?就是Google给你的那段儿代码中,src=后面,;title前面的那一部分,注意不要漏掉任何一个字符哦!
  • 二、把接下来的width、height换成和你设置的宽度、高度一样的数值,不然将按照这个默认的来显示。
  • 三、把第一段$output=后面<iframe></iframe>的内容,换成Google日历提供给你的内容。

本地化工作就是这些,怎么让它显示出来呢?

你看这个插件作者在代码开头的注释中其实已经说清楚了:
<googlecalendar>6444586097901795775</googlecalendar>
你发现没?就是在googlecalendar这一组标签的中间,放入input后的ID就可以了。

另外,我发现个问题,这里只能显示一个想要共享的日历,如果想要在wiki中共享很多日历呢?这个ID怎么变?等我试好了再写吧。

以上效果演示地址:http://edu2do.com/wiki/教育会议日历

为Mediawiki做Pretty URL

刚才用了一个小时左右折腾Mediawiki“洁净的URL”,终于为“教育中文翻译·Wiki”做好了漂亮、整洁的URL。此次折腾,参考了网络上的资料,受到启发,自己做了小的改动:

天下维客有关“洁净URL”的页面中提到了好多种方法,我先试了多种不使用mod_rewrite方法的一种,获得成功,效果是“www.edu2do.com/eduwiki/wiki/首页”的样子。但我不喜欢多出一个/wiki来,所以打算尝试新的方法。

然后找到了这篇文章,根据这里的提示,我基本完成了URL的美化。但问题是:在注册和登陆时,原URL未被正确重置。从而导致我眼看着“用户登陆”,点击并填入信息后,就是不能注册和登陆。于是我开始一行行地分析RewriteRules。

然后我找到一行错误的东西:

RewriteRule ^(.*)$ /wiki/index.php$1 [L]

我把它改成了这样:

RewriteRule ^(.*)$ /wiki/index.php?title=$1 [L,QSA]

请注意,差别就在于“?title=”这里,其它地方都没问题。就是这里让URL未被正确重置。改过之后,就可以正常注册、登陆无误了,并且现在没有了中间多套一层的“/wiki”,看上去舒服些了。--其实我发现呀,这东西万变不离其宗!

分享下.htaccess文件和LocalSettings.php中一些设置(以下abc是指安装mediawiki的目录):
.htaccess RewriteRules如下:

RewriteEngine On

RewriteBase /abc

RewriteCond %{REQUEST_URI} !^/abc/$

RewriteCond %{REQUEST_URI} !^/abc/(stylesheets|images|skins)/

RewriteCond %{REQUEST_URI} !^/abc/(redirect|texvc|index).php

RewriteCond %{REQUEST_URI} !^/abc/error/(40(1|3|4)|500).html

RewriteCond %{REQUEST_URI} !^/abc/favicon.ico

RewriteCond %{REQUEST_URI} !^/abc/robots.txt

RewriteCond %{QUERY_STRING} ^$ [OR] %{REQUEST_URI} ^/abc/Special:Search

RewriteRule ^(.*)$ /abc/index.php?title=$1 [L,QSA]

LocalSettings.php我是学习来的,要改的地方很少:

$wgSitename = “教育中文翻译·Wiki”;

$wgScriptPath = “/abc”;

$wgScript = “$wgScriptPath/abc”;

$wgRedirectScript = “$wgScriptPath/redirect.php”;

$wgArticlePath = “$wgScriptPath/$1″;

##$wgArticlePath = “$wgScript?title=$1″;

update:刚刚发现这美化后的URL影响了上传文件,我找到原因再来分享一次吧!