トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/97

ページの作成や編集にはユーザ登録が必要です。

カレンダーの当日以降/前表示で、曜日の表示・見出しレベルの変更と何日後/前を表示するパッチ

  • 投稿者: リュナン
  • カテゴリ: 新規
  • 優先度: 普通
  • 状態: 提案
  • 日時: 2004年02月05日 21時23分40秒

 内容

カレンダーの表示をするrecentcalendarとfuturecalendarプラグインで以下の機能を追加します。

  • 日付の表示の見出しレベルを1〜3で指定出来るようにする。
  • 日付の隣に、○日後・一昨日・昨日・今日・明日・明後日・○日前を表示するか選択出来るようにする。
  • 日付に曜日を表示させる。

使用例

どんな感じになるかはここを参照して下さい。

パッチ

  • オリジナルのバージョンは3.5.2です。
diff -rc org/CalendarHandler.pm patch/CalendarHandler.pm
*** org/CalendarHandler.pm	Sat Dec 20 19:13:10 2003
--- patch/CalendarHandler.pm	Fri Feb 20 00:55:01 2004
***************
*** 5,10 ****
--- 5,11 ----
  ################################################################################
  package plugin::calendar::CalendarHandler;
  use strict;
+ use Time::Local;
  #===============================================================================
  # コンストラクタ
  #===============================================================================
***************
*** 198,203 ****
--- 199,206 ----
  	my $name  = quotemeta(shift);
  	my $count = shift;
  	my $para  = shift;
+ 	my $paralv= shift;
+ 	my $diffday = shift;
  	my $cgi   = $wiki->get_CGI;
  	
  	$count =~ m/\s*([-]?\d*)\s*([+]?)([-]?)/;
***************
*** 245,258 ****
  
  	# calendarプラグインと同様の表示
  	my $source = "";
  	foreach my $page (@pages2) {
  		$page =~ /((\d+)-(\d+)-(\d+))$/;
  		if($wiki->can_show($page)){
  			if ($para ne "") {
- 				$source .= "{{paragraph 3,[[$1|$page]]}}\n";
  				$source .= "{{include $page,$para}}\n";
  			} else {
- 				$source .= "{{paragraph 3,[[$1|$page]]}}\n";
  				$source .= "{{include $page}}\n";
  			}
  			$count--;
--- 248,289 ----
  
  	# calendarプラグインと同様の表示
  	my $source = "";
+ 	my $todaytime = timelocal(0,0,0,$mday,$mon,$year);
+ 	my $pagetime = 0;
+ 	my $datediff = 0;
+ 	my $pagewday = "";
  	foreach my $page (@pages2) {
  		$page =~ /((\d+)-(\d+)-(\d+))$/;
+ 		my $prtdate = $1;
+ 		$pagetime= timelocal(0,0,0,$4,$3 - 1,$2 - 1900);
+ 		$pagewday = (qw(日 月 火 水 木 金 土))[(localtime($pagetime))[6]];
+ 		$prtdate .= " ($pagewday)";
+ 		$datediff = int(($pagetime - $todaytime) / 60 / 60 /24);
  		if($wiki->can_show($page)){
+ 			if($diffday ne '' && ($diffday =~ /\*/ || $diffday >= abs($datediff))){
+ 				$source .= "{{paragraph $paralv,[[$prtdate|$page]] ";
+ 				if($datediff > 2){
+ 					$source .= "$datediff日後}}\n";
+ 				} elsif($datediff == 2){
+ 					$source .= "明後日}}\n";
+ 				} elsif($datediff == 1){
+ 					$source .= "明日}}\n";
+ 				} elsif($datediff == 0){
+ 					$source .= "今日}}\n";
+ 				} elsif($datediff == -1){
+ 					$source .= "昨日}}\n";
+ 				} elsif($datediff == -2){
+ 					$source .= "一昨日}}\n";
+ 				} else {
+ 					$datediff = abs($datediff);
+ 					$source .= "$datediff日前}}\n";
+ 				}
+ 			} else {
+ 				$source .= "{{paragraph $paralv,[[$prtdate|$page]]}}\n";
+ 			}
  			if ($para ne "") {
  				$source .= "{{include $page,$para}}\n";
  			} else {
  				$source .= "{{include $page}}\n";
  			}
  			$count--;
***************
*** 268,274 ****
  # FutureCalendarからも使うのでメソッドではなくモジュール関数として実装
  #===============================================================================
  sub make_future_pages {
! 	return &make_recent_pages(shift, shift, (shift)."-", shift);
  }
  
  #===============================================================================
--- 299,305 ----
  # FutureCalendarからも使うのでメソッドではなくモジュール関数として実装
  #===============================================================================
  sub make_future_pages {
! 	return &make_recent_pages(shift, shift, (shift)."-", shift, shift, shift,);
  }
  
  #===============================================================================
*** .\ORG\FutureCalendar.pm	Sat Dec 20 19:13:10 2003
--- .\PATCH\FutureCalendar.pm	Sat Feb 07 14:27:17 2004
***************
*** 19,24 ****
--- 19,37 ----
  # <pre>
  # {{futurecalendar カレンダ名, [表示件数[+]],段落名}}
  # </pre>
+ # 表示する日付の見出しレベル、表示方向指示、今日からの差を表示を指示できます。
+ # <pre>
+ # {{futurecalendar カレンダ名, [表示件数[+],段落名,1〜3(見出しレベル),0〜*(今日からの差を指定日数分表示、*だと全て)]}}
+ # </pre>
+ # [ ]の項目で使いたいオプションより前のオプションで必要が無い物が有るときは、それを_(半角アンダーバー)としてください。
+ # 以下の例では、5件表示、段落名は指定無し、見出しレベル2、(今日・明日・明後日)表示となります。
+ # <pre>
+ # {{futurecalendar TEST,5,_,2,2]}} 
+ # </pre>
+ # 以下は5件表示、段落名指定無し、見出しレベル2です。
+ # <pre>
+ # {{futurecalendar TEST,5,_,2]}}
+ # </pre>
  #
  ###################################################################
  package plugin::calendar::FutureCalendar;
***************
*** 42,53 ****
  	my $name    = shift;
  	my $count   = shift;
  	my $section = shift;
  	
  	if ($name eq "") {
  		return &Util::paragraph_error("カレンダ名が指定されていません。","WIKI");
  	}
! 	
! 	return plugin::calendar::CalendarHandler::make_future_pages($wiki,$name,$count,$section);
  }
  
  1;
--- 55,73 ----
  	my $name    = shift;
  	my $count   = shift;
  	my $section = shift;
+ 	my $paralv  = shift;
+ 	my $diffday = shift;
  	
  	if ($name eq "") {
  		return &Util::paragraph_error("カレンダ名が指定されていません。","WIKI");
  	}
! 	if($section =~ /^ *_ *$/){
! 		$section = "";
! 	}
! 	if($paralv < 1 || $paralv > 3) {
! 		$paralv = 3;
! 	}
! 	return plugin::calendar::CalendarHandler::make_future_pages($wiki,$name,$count,$section,$paralv,$diffday);
  }
  
  1;
*** .\ORG\RecentCalendar.pm	Sat Dec 20 19:13:10 2003
--- .\PATCH\RecentCalendar.pm	Sat Feb 07 14:25:53 2004
***************
*** 19,24 ****
--- 19,37 ----
  # <pre>
  # {{recentcalendar カレンダ名, [表示件数[+]],段落名}}
  # </pre>
+ # 表示する日付の見出しレベル、表示方向指示、今日からの差を表示を指示できます。
+ # <pre>
+ # {{recentcalendar カレンダ名, [表示件数[+],段落名,1〜3(見出しレベル),0〜*(今日からの差を指定日数分表示、*だと全て)]}}
+ # </pre>
+ # [ ]の項目で使いたいオプションより前のオプションで必要が無い物が有るときは、それを_(半角アンダーバー)としてください。
+ # 以下の例では、5件表示、段落名は指定無し、見出しレベル2、(今日・昨日・一昨日)表示となります。
+ # <pre>
+ # {{recentcalendar TEST,5,_,2,2]}} 
+ # </pre>
+ # 以下は5件表示、段落名指定無し、見出しレベル2です。
+ # <pre>
+ # {{recentcalendar TEST,5,_,2]}}
+ # </pre>
  #
  ###################################################################
  package plugin::calendar::RecentCalendar;
***************
*** 42,53 ****
  	my $name    = shift;
  	my $count   = shift;
  	my $section = shift;
  	
  	if ($name eq "") {
  		return &Util::paragraph_error("カレンダ名が指定されていません。","WIKI");
  	}
! 	
! 	return plugin::calendar::CalendarHandler::make_recent_pages($wiki,$name,$count,$section);
  }
  
  1;
--- 55,73 ----
  	my $name    = shift;
  	my $count   = shift;
  	my $section = shift;
+ 	my $paralv   = shift;
+ 	my $diffday = shift;
  	
  	if ($name eq "") {
  		return &Util::paragraph_error("カレンダ名が指定されていません。","WIKI");
  	}
! 	if($section =~ /^ *_ *$/){
! 		$section = "";
! 	}
! 	if($paralv < 1 || $paralv > 3) {
! 		$paralv = 3;
! 	}
! 	return plugin::calendar::CalendarHandler::make_recent_pages($wiki,$name,$count,$section,$paralv,$diffday);
  }
  
  1;

変更履歴

  • 2004/2/5
    • 公開
  • 2004/2/7
    • 過去〜未来の表示順の指定は、上手く動作しない事がわかって、面倒だったので削除しました。
    • 一昨日・昨日・明日・明後日と表示するようにし、また表示する範囲を日数指定出来るようにしました。
  • 2004/2/20
    • 今日との差の表示をしない場合に、当日だけ'今日'が表示されるバグの修正

 コメント

  • あー、こんなの欲しかったです。 - kuwa (2004年02月06日 22時23分35秒)
  • ちょっと思ったんですが、何日前から何日後までといった日付の範囲が指定出来るともっと便利ではありませんか。それと、"2日後です"という表示じゃなくて、"明日"とか"あさって","昨日"などで表示できる場合はそうすると、もっとかっこいいです。 - Kinsan (2004年02月07日 11時00分26秒)
  • RecentCalendar.pm FutureCalendar.pm CalendarHandler.pmをファイルで頂けないですか? - kame (2004年02月16日 13時56分31秒)
  • ファイルで添付20040220.lzh(409)しました。 PluginフォルダのCalendarフォルダに上書きして下さい。 - リュナン (2004年02月20日 01時34分38秒)
お名前: コメント:
20040220.lzh

最終更新時間:2004年06月04日 13時31分48秒