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