################################################################################ # #

カレンダを表示します。

#
# {{calendar カレンダ名}}
# 
#

# カレンダの「<<」をクリックすると前月、 # 「>>」をクリックすると翌月、 # 年月をクリックするとその月のカレンダとページ内容を一覧表示します。 # また、カレンダの日付をクリックすると該当する日付のページを表示 # (ページが存在しない場合は編集画面を表示)します。 #

#

# オプションで編集画面に見本として表示されるテンプレートページを指定することができます。 #

#
# {{calendar カレンダ名[,テンプレートとなるページ名[,表示月指定]]}}
# 
#

# 表示月指定に[半角10進数]nextと書くと、[半角10進数]月後のカレンダーを表示します。 # 表示月指定に[半角10進数]prevと書くと、[半角10進数]月前のカレンダーを表示します。 # 表示月指定に[半角で1〜12]と書くと、[1〜12]月のカレンダーを表示します。 # その他の表示月指定は無視されます。 #

#

# 以下にカレンダプラグインの使用例を示します。 #

#
# {{calendar 予定表}}
# {{calendar 予定表,予定表テンプレート}}
# {{calendar 予定表,予定表テンプレート,6}} : 6月のカレンダー
# {{calendar 予定表, ,1next}} : 翌月のカレンダー
# {{calendar 予定表, ,2prev}} : 先々月のカレンダー
# 
#

# CSSで表示形式を変更することも出来ます。使用しているクラス名は以下の通りです。 #

# #

# 使用しているid名は以下の通りです。 #

# # ################################################################################ package plugin::calendar::Calendar; use strict; use plugin::calendar::CalendarHandler; #=============================================================================== # コンストラクタ #=============================================================================== sub new { my $class = shift; my $self = {}; return bless $self,$class; } #=============================================================================== # パラグラフ #=============================================================================== sub paragraph { my $self = shift; my $wiki = shift; my $name = shift; my $template = shift; my $argmon = shift; # my $align = shift; my $error_message = ""; # 存在しないテンプレートを指定された場合。 undef $template if !$wiki->page_exists($template); # # 表示位置指定がない場合。 # $align = "left" if $align eq ""; # エラーチェック $error_message = "カレンダ名が指定されていません。" if($name eq ""); # $error_message = "表示月が指定されていません。" if($argmon eq ""); # $error_message = "位置指定が間違っています。[$align]" if !(($align eq "center") || ($align eq "right") || ($align eq "left")); return Util::paragraph_error($error_message) if !($error_message eq ""); my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time()); $year += 1900; $mon += 1; my $id = ""; # 表示月指定を解釈 if ($argmon =~ /(\d*)next/i) { # 相対指定(次月) my $step = ($1 > 0) ? $1 : 1; $mon += $step; $id = "calendar-${step}next"; } elsif ($argmon =~ /(\d*)prev/i) { # 相対指定(前月) my $step = ($1 > 0) ? $1 : 1; $mon -= $step; $id = "calendar-${step}prev"; } elsif ($argmon =~ /(\d+)/) { # 絶対指定 if ($1>=1 and $1<=12) { $year += (($1 - $mon) > 6) ? -1 : 0; $year += (($1 - $mon) < -6) ? 1 : 0; $mon = $1; $id = "calendar-$1"; } } else { # 指定なし } # 年月の正規化 if ($mon > 0) { $year += int (($mon - 1) / 12); } else { $year += int (($mon - 12) / 12); } $mon = ($mon - 1) % 12 + 1; return &plugin::calendar::CalendarHandler::make_calendar($wiki,$year,$mon,$name,$template,$id); } 1;