1############################################################## 2# 3# <p>ToDo�ꥹ�Ȥ�ɽ�����ޤ���</p> 4# <p> 5# �ޤ�Ŭ���ʥڡ�����ToDo�Ҥ��ޤ���ToDo�ε��Ҥϰʲ��Τ褦�ʴ����Ǥ��� 6# </p> 7# <pre> 8# * 22(ͥ����) �ȥ���åȥڡ��ѡ����㤦(��ư) 9# </pre> 10# <p> 11# ͥ���٤ȹ�ư�δ֤϶�����İʾ�����Ƥ��������� 12# �ץ饰����λȤ����ϰʲ��Τ褦�ˤʤ�ޤ��� 13# </p> 14# <pre> 15# {{todolist ToDo(ToDo�Ҥ����ڡ���),5(ɽ������������ά��)}} 16# </pre> 17# <p> 18# ͥ���٤ι⤤��˾夫��ɽ������ޤ��� 19# always���ץ�����Ĥ���ȥ����å��ܥå����ȴ�λ�ܥ���ɽ�����졢 20# ToDo����λ����������å��ܥå����˥����å�������ơִ�λ�פ��� 21# ToDo�Ҥ����ڡ����Ǥ� 22# </p> 23# <pre> 24# * �� 22 �ȥ���åȥڡ��ѡ����㤦 25# </pre> 26# <p> 27# �Τ褦���ѹ�����todolist���鳰����ޤ��� 28# �ʤ���always���ץ�����Ĥ��Ƥ��ʤ����Ǥ⡢ 29# �����ԤȤ��ƥ������Ʊ�ͤΥե����बɽ������ޤ��� 30# </p> 31# 32############################################################## 33package plugin::todo::ToDoList; 34use strict; 35#============================================================= 36# ���ȥ饯�� 37#============================================================= 38sub new{ 39 my $class = shift; 40 my $self = {}; 41 return bless $self,$class; 42} 43 44#============================================================= 45# �ѥ饰��ե�å� 46#============================================================= 47sub paragraph { 48 my $self = shift; 49 my $wiki = shift; 50 my $source = shift; 51 my $count = shift; 52 my $option = shift; 53 if($count eq "always"){ 54 $option = "always"; 55 } 56 my $cgi = $wiki->get_CGI; 57 my $page = $cgi->param("page"); 58 my $buf = ""; 59 my @todolist=(); 60 61 if($source eq ""){ 62 return &Util::paragraph_error("�ڡ�������ꤷ�Ƥ���������"); 63 } 64 unless($wiki->page_exists($source)){ 65 return &Util::paragraph_error("$source��¸�ߤ��ޤ���"); 66 } 67 unless($wiki->can_show($source)){ 68 return &Util::paragraph_error("�ڡ����λ��ȸ�������ޤ���"); 69 } 70 71 my $content = $wiki->get_page($source); 72 my @lines = split(/\n/,$content); 73 74 # ����todo����� 75 foreach(@lines){ 76 if($_ =~ /^\*\s*(\d+)\s+(.*)/){ 77 my $priority = $1; 78 my $dothing = $2; 79 my $todo = {priority => $priority,dothing => $dothing}; 80 push(@todolist,$todo); 81 } 82 } 83 84 # ͥ���̤ǥ����� 85 @todolist = sort { 86 return $b->{priority} <=> $a->{priority}; 87 } @todolist; 88 89 # �ꥹ��ɽ�� + ��λ�ե����� 90 my $login = $wiki->get_login_info(); 91 if($option eq "always" || defined($login)){ 92 $buf .= "<div class=\"todo\">" 93 ."<form action=\"".$wiki->config('script_name')."\" method=\"POST\">\n" 94 ."<input type=\"hidden\" name=\"source\" value=\"".Util::escapeHTML($source)."\">\n" 95 ."<input type=\"hidden\" name=\"page\" value=\"".Util::escapeHTML($page)."\">\n" 96 ."<input type=\"hidden\" name=\"action\" value=\"FINISH_TODO\">"; 97 } 98 $buf .= "<ol>\n"; 99 my $i=0; 100 foreach (@todolist){ 101 my $priority = $_->{priority}; 102 my $dothing = $_->{dothing}; 103 my $value = Util::escapeHTML($dothing); 104 my $content = $wiki->process_wiki($dothing); 105 $content =~ s/<\/?p>//g; 106 $buf .= "<li value=\"$priority\">"; 107 if($option eq "always" || defined($login)){ 108 $buf .= "<input name=\"todo.$i\" type=\"checkbox\" value=\"$value\">" 109 .$content."</input></li>\n"; 110 } else { 111 $buf .= $content."</li>\n"; 112 } 113 $i++; 114 last if($i==$count); 115 } 116 117 $buf .= "</ol>"; 118 if($option eq "always" || defined($login)){ 119 $buf .= "<input type=\"submit\" value=\"��λ\"></form></div>"; 120 } 121 return $buf; 122} 123 1241; 125