休日表示カレンダープラグイン のバージョンアップを行った。今回のリリースは 1.3。月の変わり目をウェブログの設定と同期するように修正した。
■ ■ ■
バージョン 1.2 では、サーバのタイムゾーンと MovableType で設定したタイムゾーンが違っている場合、月の変わり目で不整合が生じることがあった。バージョン 1.2 のプラグインは、サーバの時刻に合わせてあったので、MovableType の更新時刻が次の月になっているのにサーバの時刻が前の月の場合、前の月の休日を表示してしまっていた。これは最大でも24時間以内に解消されることではあるのだが、合っていた方がよい。
以下のようにして、MovableType の設定に同期させるようにした。
my $period = $args->{month} || '';
if (lc($period) eq 'this' || $period eq '') {
my $ct = $ctx->{current_timestamp};
my $blog_id = $ctx->stash('blog_id');
my @ts = offset_time_list(time, $blog_id);
$period = $ct ? substr($ct, 0, 6) : sprintf "%04d%02d", $ts[5]+1900, $ts[4]+1;
}
今回のバージョンから、$period に初期値としてサーバの時刻を設定しないことにした。month 属性に「this」を設定した場合は、年月を current_timestamp から取得する。月ごとのアーカイブ内で呼ばれる場合がこれに該当する。month 属性に何も設定しなかった場合は、現在の年月を time 関数で取得し、offset_time_list 関数によって、ウェブログで設定したタイムゾーン分だけ補正する。この場合は current_timestamp に値は設定されていないので、補正した時刻から年月を抽出して $period にセットするという形になっている。
month 属性が「this」の時と、何も設定していない時で、if 文を分けてしまった方がよかったのかも知れない。$period に何もセットされないと困るので、お茶を濁してしまった。
2005年1月4日追記:
休日表示カレンダープラグインをバージョンアップし、コンテナタグのタイプのバージョン 1.4 と、コンテナでないバージョン 2.0 にブランチしました(バージョン 2.0, 1.4 リリース情報)。1.3 をお使いの方は 1.4 にバージョンアップできます。1.x と 2.x ではテンプレートタグの書式が違います。新規導入の方は、2.0 をお勧めします。
Posted by n at 2004-08-23 01:23 | Edit | Comments (10) | Trackback(8)
Trackbacks
- 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
- タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
- トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
MovableTypeのPluginを入れてみた お天気表示プラグインと休日表示プラグイン
Trackbacked from: バイクとカメラと雑記 at August 28, 2004 14:50
今の悩み事 その1 カレンダーの土日(出来れば祝日も)のセルに色を付けたい。休日表示カレンダープラグインはDate::Japanese::Holidayモジュール等が無いと...
Trackbacked from: 半兵衛の徒然記 at October 07, 2004 00:36
休日表示カレンダープラグイン nlog(n) - 休日表示カレンダープラグインMovableType のカレンダーに色づけをするプラグインです。色づけできるのは、日本の休日(日曜・祝祭日)、土曜日、奇数カラムの曜日(月・水・金)、偶数カラムの曜日(火・木・土)で、色はそれぞれ別に指定することができます。以・b...
Trackbacked from: at October 07, 2004 19:43
カレンダーを少し改良しました。 nlog(n) 休日表示カレンダープラグインを使って、色付けしてみました。 これ...
Trackbacked from: Magic White at October 07, 2004 23:51
横一列カレンダー 横1列(横一行)カレンダー自体は珍しくもありません。探してみてみるとゆるゆるな日々の横1行カレンダーというものを見つけました。しかし、これは日にちをすべてまと...
Trackbacked from: 半兵衛の徒然記 at October 09, 2004 00:14
休日表示カレンダープラグインの適用 例によって小粋空間さんの記事を参考にして、『カレンダーの本日に枠線を表示』すると...
Trackbacked from: 都会の片隅で at December 05, 2004 14:19
休日は赤なんだってば。わかってくださいよ。 nlog(n) - 休日表示カレンダープラグインというプラグインを利用させていただいていたがサーバーをお引越ししたらDate::Japanese::Holidaysがインストールされてなくて困った、困った。しかし、無いなら作る、修正する!ですよね。というのが前回までのおさらいです。 今...
Trackbacked from: Kishi-chan.net Blog at February 10, 2005 23:24
Plugins(カレンダーの休日表示) nlog(n) - 休日表示カレンダープラグイン MTに関して、あまり不勉強であ...
Trackbacked from: Poco Blog at September 01, 2005 06:59
もるです。
Posted by: もる at August 28, 2004 15:03前から、カレンダーの土日の数字の色を変えたいと思っていたところに、ちょうどいいプラグインがあるじゃないですか。
ありがたく使わせていただきます。
これで、なんか「もやもや」ってした気分が晴れました。
ところで、トラックバックを送ったのですが、何故かPing 'http://nlogn.ath.cx/opentype/mt-tb.cgi/265' failed: HTTP error: 500 read timeoutというErrorが出たようです。一応正常に更新はされているようですが、ちょっと変な気分。
後、http://nlogn.ath.cx/archives/cat_plugin.html でそれぞれの記事のcommentやtrackbackのリンクをクリックをするとErrorがでますね。でもその後普通にリンク先に飛ぶので、これももやもやっと。
こちらの環境がおかしいのかも知れませんが一応ご報告まで。
タイムアウトエラーは、こちらのサーバの処理能力不足が原因です。トラックバックは以下のように処理されます。
そちらからのトラックバック送信
↓
こちらでトラックバック受信
↓
関連するインデックスを再構築
↓
個別エントリ再構築
↓
こちらから処理完了通知送信
↓
そちらで処理完了通知受信
そちらからトラックバックを送ってから、処理完了通知を受信する前にタイムアウト時間を過ぎてしまうと、500 番のエラーとなってしまいます。このサイトでは、「個別エントリの再構築」を追加してしまっているので、さらに処理時間がかかるようになっています。
タイムアウトは mt.cfg の「PingTimeout」ディレクティブで設定されます。
http://movabletype.jp/manual/mtmanual_configuration.html
デフォルトは 15 秒なので、長くすれば 500 のエラーはなくなると思います(私は 60 秒にしています)。気にされなくてもよいのですが、「今までに送信したトラックバック」に記録が残らないのでもやもやっとしますよね。この説明でスッキリされることを期待します。
カテゴリー一覧の方は(エラーではないのですが)こちらのミスです。修正しておきます。
ご報告ありがとうございました。
Posted by: n at August 28, 2004 17:58カレンダーを横一列にしたために曜日が分からなくなり、色をつける方法がないかと探していてここを見つけました。
Posted by: 半兵衛 at September 22, 2004 22:36こりゃ望みどおりのものだと思ったのですが、モジュールが入っていないようで使えませんでした。
このモジュールを使わなくても良いような方法はありませんでしょうか?
このプラグインは以下の Perl モジュールを MTPath/lib にインストールすれば、もしかすると動くかも知れません。
Date::Japanese::Holiday
Test::More
Time::JulianDay
Date::Calc
Date::Simple
未確認です。
祝祭日を除いた土曜日と日曜日に色をつけるだけであれば、追加の Perl モジュールが不要なプラグインが比較的簡単に作れると思います。
Posted by: n at September 23, 2004 01:03ご返事ありがとうございます。
Posted by: 半兵衛 at September 23, 2004 12:02CPANより落としてきた下記のものをlibに入れました。
Holiday.pm
More.pm
JulianDay.pm
Calc.pm
Simple.pm
しかしダメでした。
上に書いたやり方は間違ってますか?
ディレクトリを作って入れてみて下さい。例えば、lib の下に Date ディレクトリを作り、その中に Calc.pm と Simple.pm を置きます。さらに Japanese ディレクトリを作って、その中に置きます。他のモジュールも同様です。以下のような構成になります。
Posted by: n at September 23, 2004 15:45lib/Date/Calc.pm
lib/Date/Simple.pm
lib/Date/Japanese/Holiday.pm
lib/Test/More.pm
lib/Time/JulianDay.pm
これでいかがでしょうか?
お手数を掛け、すいません。
Posted by: 半兵衛 at September 23, 2004 17:51試してみたのですがダメでした。
http://f40.aaacafe.ne.jp/~hanbei/mt/test/
プラグインが動いていないようです。
(MTPaginate.plってのも動かせなかった)
力不足なのかサーバの問題なのか。。。分かりかねます。
試して頂きありがとうございました。また何か情報がありましたら、教えてください。
Posted by: n at September 23, 2004 18:40うっかり書き間違えてしまいました。モジュールを置くのは「lib」でなく「extlib」でした。
Posted by: n at September 24, 2004 09:56extlib/Date/Calc.pm
extlib/Date/Simple.pm
extlib/Date/Japanese/Holiday.pm
extlib/Test/More.pm
extlib/Time/JulianDay.pm
その節は色々とお世話になりましたが、めでたくこのプラグインを使うことが出来ました。鯖の方が対応してくれました。
Posted by: 半兵衛 at October 07, 2004 21:36私のところはSTEPSERVERですが、ロリポップでも導入可能なようです。一応連絡までに