バージョン 1.0 では、土曜日に色を指定したとき、日付が入っていない場合にも土曜の色がついてしまっていた。修正して 休日表示カレンダープラグイン 1.1 としてリリースする。
バージョン 1.0 での問題は、29日の下のセル。土曜日の色がついてしまっている。
修正をして、空セルの色を消した。
かなり手を加えたので、エンバグした可能性もある。
あまり意味はないかも知れないが、今回から古いバージョンも公開することにした。
2004年7月26日追記:
休日表示カレンダープラグイン 1.2 にバージョンアップ
Master Archive Index
Total Entry Count: 1957
休日表示カレンダープラグイン 1.1
を利用させてもらいました。いい感じに仕上がりますね。
さて、色付けをしているうちに、evencolcolorが使えないことが分かりました。どうやら53行目の後に条件分岐が一つ足りなく、下のようにelseを一つ追加すると、evencolcolorがうまく働くようになりました。
更新版を公開する際に取り込んでいただければと思います。
$ diff -c jcalendarcolor.pl.orig jcalendarcolor.pl
Posted by: なかう at July 25, 2004 05:39*** jcalendarcolor.pl.orig 2004-07-25 04:51:38.000000000 +0900
--- jcalendarcolor.pl 2004-07-25 05:27:28.000000000 +0900
***************
*** 51,56 ****
--- 51,58 ----
$color = $saturdaycolor ? $saturdaycolor : $oddcolcolor;
} elsif (($num % 7) % 2) {
$color = $oddcolcolor;
+ } else {
+ $color = $evencolcolor;
}
} else {
if (($num % 7) % 2 || ($num % 7 == 0)) {
連続してしまい、すみません。
↓を参考に、月曜日を先頭とするように改変したところ、土曜日に色を付けられなくなりました。
http://skys.jp/blog/archives/200404/12-1643.php
曜日を回転しても、土曜日も色が付くように変更したのが下のpatchです。
他にも実装方法はあると思いますし、差し出がましいようで、恐縮ですが。よろしくお願いします。
@@ -21,6 +21,7 @@
$VERSION = 1.1;
use Date::Japanese::Holiday qw(is_japanese_holiday);
+use Time::Local;
sub CCalendarColor {
Posted by: なかう at July 25, 2004 07:33my ($ctx, $args) = @_;
@@ -47,10 +48,13 @@
if ((lc($holidaycolor) ne 'none') &&
is_japanese_holiday($year, $month, $day)) {
$color = $holidaycolor;
- } elsif ($num % 7 == 0) {
- $color = $saturdaycolor ? $saturdaycolor : $oddcolcolor;
+ } elsif ( ((localtime(timelocal(0,0,0,$day,$month-1,$year)))[6] == 6)
+ && $saturdaycolor) {
+ $color = $saturdaycolor;
} elsif (($num % 7) % 2) {
$color = $oddcolcolor;
ありがとうございました。次回のバージョンアップ時に反映したいと思います。
Posted by: n at July 25, 2004 22:43早速の対応有難うございました。さて、再び変更案で恐縮ですが、よろしくお願いします。
システムのタイムゾーンとMovabletypeのタイムゾーンが異なる際に、月変わり時に色配分が崩れる問題を修正。
私の管理するサーバがzone=-8なのですが、その上でzone=9(JST)な設定のMovabletypeを動かすと、現在色化けしてしまっています。そこで、localtime関数の代わりにsever_offset変数を使うように変更してみました。
--- jcalendarcolor.pl.orig 2004-07-31 21:55:52.325845865 -0800
Posted by: なかう at August 01, 2004 15:13+++ jcalendarcolor.pl.pub 2004-07-31 21:55:40.252760270 -0800
@@ -37,3 +37,5 @@
my $num = $_[0]->stash('calendar_cell');
- my $ltime = (((localtime)[5]+1900)*100) + (localtime)[4] + 1;
+ my $tz = $_[0]->stash('blog')->server_offset();
+ my $now = time()+$tz*3600;
+ my $ltime = (((gmtime($now))[5]+1900)*100) + (gmtime($now))[4] + 1;
my $period = $args->{month} || $ltime;
そういう問題があることは全く考えていませんでした。
Posted by: n at August 03, 2004 06:20サーバシステムのタイムゾーンを使うのではなく、MovableType のタイムゾーンを使うというというアイデアですね。うまい。次回のバージョンに反映します。