将Google日历嵌入到Mediawiki

来説两句

最近在把“教育会议日历”添加进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/教育会议日历

本站文章一律遵守創作共用「署名-非商業使用-相同方式共享」中國大陸2.5協議

轉摘文章請注明原文鏈接,並向我發送引用通告

Random Posts

歡迎留言評論