############################################################ # # ToDoAddプラグインのアクションハンドラ。 # ToDoを追加します。 # ############################################################ package plugin::todo::ToDoAddHandler; use strict; #=========================================================== # コンストラクタ #=========================================================== sub new { my $class = shift; my $self = {}; return bless $self,$class; } #=========================================================== # ToDoの追加 #=========================================================== sub do_action { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI; my $priority = $cgi->param("priority"); my $dothing = $cgi->param("dothing"); my $dist = $cgi->param("dist"); my $page = $cgi->param("page"); # フォーマットプラグインへの対応 my $format = $wiki->get_edit_format(); $priority = $wiki->convert_to_fswiki($priority,$format,1); $dothing = $wiki->convert_to_fswiki($dothing ,$format,1); if($priority =~ /\d+/ && $dothing ne "" && $dist ne ""){ my $content = $wiki->get_page($dist); $content =~ s/(^|\n)\*\s*\d+\s+\Q$dothing\E(\n|$)/$1* $priority $dothing$2/ or $content =~ s/(^|.*\n)(\Q{{todoadd}}\E)/$1* $priority $dothing\n$2/ or $content =~ s/(\n?)$/\n* $priority $dothing$1/; $wiki->save_page($dist,$content); $wiki->do_hook("save_end"); } $wiki->redirect($page); } 1;