1###############################################################################
2#
3# ��Wiki��������ޤ���
4# WikiFarm�������Farm��ǽ����Ѥ�������ˤʤäƤ�����Τ�ͭ���ˤʤ�ޤ���
5#
6###############################################################################
7package plugin::core::CreateWikiHandler;
8use strict;
9use plugin::core::WikiList;
10#==============================================================================
11# �����ȥ饯��
12#==============================================================================
13sub new {
14	my $class = shift;
15	my $self  = {};
16	return bless $self,$class;
17}
18
19#==============================================================================
20# ���������ϥ�ɥ�
21#==============================================================================
22sub do_action{
23	my $self  = shift;
24	my $farm  = shift;
25	my $cgi   = $farm->get_CGI;
26	my $child = $cgi->param("child");
27	my $admin_id   = $cgi->param("admin_id");
28	my $admin_pass = $cgi->param("admin_pass");
29
30	my $can_create = 1;
31
32	my $config = &Util::load_config_hash($farm,$farm->config('farmconf_file'));
33	my $login  = $farm->get_login_info();
34	if($config->{create}==1){
35		if(!defined($login)){
36			$can_create = 0;
37			#return $farm->error("Wiki�κ����ϵ��Ĥ���Ƥ��ޤ���");
38		}
39	} elsif($config->{create}==2){
40		if(!defined($login) || $login->{type}!=0){
41			$can_create = 0;
42			#return $farm->error("Wiki�κ����ϵ��Ĥ���Ƥ��ޤ���");
43		}
44	}
45
46	if($child eq ""){
47		# ��Wiki��̾�����ϥե�����
48		$farm->set_title("WikiFarm",1);
49		my $buf = "";
50
51		if($can_create==1){
52			$buf = "<h2>����Wiki���</h2>\n".
53			       "<form method=\"post\" action=\"".$farm->config('script_name')."\">\n".
54			       "  <h3>Wiki��̾��</h3>\n".
55			       "  <p>���������ꤷ��Wiki̾��URL�˴ޤޤ�ޤ��ΤǤ���Wiki����ħ��ɽ������".
56			       "     �Ǥ������û��̾����Ĥ��뤳�Ȥ������ᤷ�ޤ���".
57			       "     Ⱦ�ѱѿ����������ѤǤ��ޤ���</p>\n".
58			       "  <p>Wiki̾��<input type=\"text\" name=\"child\" size=\"40\"></p>".
59			       "  <h3>�����Ԥξ���</h3>\n".
60			       "  <p>��������Wiki�δ�����ID�ȥѥ���ɤ����ꤷ�Ƥ���������".
61			       "     Ⱦ�ѱѿ����������ѤǤ��ޤ���</p>\n".
62			       "  <p>ID��<input type=\"text\" size=\"20\" name=\"admin_id\">\n".
63			       "     Pass��<input type=\"password\" size=\"20\" name=\"admin_pass\">\n".
64			       "  </p>\n".
65			       "  <input type=\"submit\" value=\" ���� \">".
66			       "  <input type=\"hidden\" name=\"action\" value=\"CREATE_WIKI\">".
67			       "</form>\n";
68		}
69
70		# ��Wiki���
71		my $wikilist = plugin::core::WikiList->new();
72		my $listcnt  = $wikilist->paragraph($farm);
73
74		$buf .= "<h2>Wiki�����Ȥΰ���</h2>\n";
75
76		if($listcnt eq "<ul>\n</ul>\n"){
77			$buf .= "<p>���ߤ���Wiki�۲��ˤ�Wiki�����ȤϤ���ޤ���</p>";
78		} else {
79			$buf .= "<p>���ߤ���Wiki���۲��ˤϰʲ���Wiki�����Ȥ�¸�ߤ��ޤ���</p>".$listcnt;
80		}
81
82		return $buf;
83
84	}else{
85		if($can_create==0){
86			return $farm->error("Wiki�κ����ϵ��Ĥ���Ƥ��ޤ���");
87		}
88
89		# ���ϥ����å�
90		if(!($child =~ /^[A-Za-z0-9]+$/)){
91			return $farm->error(&Util::escapeHTML($child)."��������̾�ΤǤ���");
92
93		} elsif($admin_id eq ""){
94			return $farm->error("������ID�����Ϥ��Ƥ���������");
95
96		} elsif($admin_pass eq ""){
97			return $farm->error("�����ԥѥ���ɤ����Ϥ��Ƥ���������");
98
99		} elsif(!($admin_id =~ /^[A-Za-z0-9]+$/)){
100			return $farm->error("������ID�������Ǥ���");
101
102		} elsif(!($admin_pass =~ /^[A-Za-z0-9]+$/)){
103			return $farm->error("�����ԥѥ���ɤ������Ǥ���");
104
105		# ��Wiki�ν�ʣ������å�
106		} elsif($farm->wiki_exists($child)){
107			return $farm->error(&Util::escapeHTML($child)."�ϴ���¸�ߤ��ޤ���");
108
109		# �桼���ν�ʣ������å�
110		#} elsif($farm->user_exists($admin_id)){
111		#	return $farm->error("ID��".&Util::escapeHTML($admin_id)."�Υ桼���ϴ���¸�ߤ��ޤ���");
112
113		# ��Wiki����
114		} else {
115			$farm->create_wiki($child,$admin_id,$admin_pass);
116			$farm->set_title(&Util::escapeHTML($child)."��������ޤ���");
117			return "<a href=\"".$farm->config('script_name')."/".&Util::escapeHTML($child)."\">".
118			       &Util::escapeHTML($child)."</a>��������ޤ�����";
119		}
120	}
121}
122
1231;
124