将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/教育会议日历
歡迎留言評論