GoogleカレンダーっぽいWebアプリ「wdCalendar」を試してみる

LAMP環境で動くオープンソース(LGPL)のGoogleカレンダーもどき「wdCalendar」を試してみました。
ついでに日本語化とか、バグ対応とか。


ソース

http://www.webappers.com/2010/06/08/wdcalendar-jquery-based-google-calendar-clone/ からダウンロードして解凍。

データベース対応

MySQLにデータベースを作成。
解凍してできたsetup.sqlを修正。
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE `jqcalendar` (
  `Id` int(11) NOT NULL auto_increment,
  `Subject` varchar(1000) character set utf8 default NULL,
  `Location` varchar(200) character set utf8 default NULL,
  `Description` varchar(255) character set utf8 default NULL,
  `StartTime` datetime default NULL,
  `EndTime` datetime default NULL,
  `IsAllDayEvent` smallint(6) NOT NULL,
  `Color` varchar(200) character set utf8 default NULL,
  `RecurringRule` varchar(500) character set utf8 default NULL,
  PRIMARY KEY  (`Id`)
) ENGINE=InnoDB  DEFAULT CHARSET=UTF8 AUTO_INCREMENT=4 ;

文字コードをutf8にしています。phpMyAdminなどで実行します。

php/dbconfig.phpを修正。
<?php
class DBConnection{
 function getConnection(){
   //change to your database server/user name/password
  mysql_connect("servername","username","password") or
         die("Could not connect: " . mysql_error());
    //change to your database name
  mysql_select_db("databasename") or 
       die("Could not select database: " . mysql_error());
 }
}
?>

日本語化

src/plugins/datepicker_US.js, src/plugins/wdCalendar_lang_US.jsをコピーして、JP.jsを作成。
sample.phpとedit.phpに「US.js」と書かれている個所が数行あるのでJPに書き換え。
(書き換えた内容は省略します)

不具合修正

日本語の日付形式(yyyy/M/d)に変更した場合、日付の扱いがおかしくなります。
さきほどのJP.jsのseparator / year_index / month_index / day_indexを書き換えればいい作りになっていますが・・・

面倒なので、php/functions.phpにハードコーディングしました。
function js2PhpTime($jsdate){
  if(preg_match('@(\d+)/(\d+)/(\d+)\s+(\d+):(\d+)@', $jsdate, $matches)==1){
//    $ret = mktime($matches[4], $matches[5], 0, $matches[1], $matches[2], $matches[3]);
    //echo $matches[4] ."-". $matches[5] ."-". 0  ."-". $matches[1] ."-". $matches[2] ."-". $matches[3];
 $ret = mktime($matches[4], $matches[5], 0, $matches[2], $matches[3], $matches[1]);
  }else if(preg_match('@(\d+)/(\d+)/(\d+)@', $jsdate, $matches)==1){
//    $ret = mktime(0, 0, 0, $matches[1], $matches[2], $matches[3]);
    //echo 0 ."-". 0 ."-". 0 ."-". $matches[1] ."-". $matches[2] ."-". $matches[3];
 $ret = mktime(0, 0, 0, $matches[2], $matches[3], $matches[1]);
  }
  return $ret;
}

function php2JsTime($phpDate){
    //echo $phpDate;
    //return "/Date(" . $phpDate*1000 . ")/";
//    return date("m/d/Y H:i", $phpDate);
 return date("Y/m/d H:i", $phpDate);
}

日本語も通りますし、よくできていると思います。

  • Spread The Love
  • Digg This Post
  • Tweet This Post
  • Stumble This Post
  • Submit This Post To Delicious
  • Submit This Post To Reddit
  • Submit This Post To Mixx

0 Response to “GoogleカレンダーっぽいWebアプリ「wdCalendar」を試してみる”

Leave a Reply