1###############################################################################
2#
3# �ڡ���̾�Τ��ѹ����ڡ����Υ��ԡ�����ϥ�ɥ顣
4# ��������rename�եå���ƤӽФ��ޤ���
5#
6###############################################################################
7package plugin::rename::RenameHandler;
8use strict;
9#==============================================================================
10# �����ȥ饯��
11#==============================================================================
12sub new {
13	my $class = shift;
14	my $self = {};
15	return bless $self,$class;
16}
17
18#==============================================================================
19# ���������μ¹�
20#==============================================================================
21sub do_action {
22	my $self = shift;
23	my $wiki = shift;
24
25	return $self->do_rename($wiki);
26}
27
28#==============================================================================
29# ��͡����¹�
30#==============================================================================
31sub do_rename {
32	my $self = shift;
33	my $wiki = shift;
34	my $cgi  = $wiki->get_CGI;
35
36	my $pagename    = $cgi->param("page");
37	my $newpagename = $cgi->param("newpage");
38	my $do          = $cgi->param("do");
39	my $time        = $wiki->get_last_modified($pagename);
40	my $buf         = "";
41	my $login       = $wiki->get_login_info();
42
43	# ���顼�����å�
44	if($newpagename eq ""){
45		return $wiki->error("�ڡ��������ꤵ��Ƥ��ޤ���!!");
46	}
47	if($newpagename =~ /[\|:\[\]]/){
48		return $wiki->error("�ڡ���̾�˻��ѤǤ��ʤ�ʸ�����ޤޤ�Ƥ��ޤ���");
49	}
50	if($wiki->page_exists($newpagename)){
51		return $wiki->error("���˥�͡�����Υڡ�����¸�ߤ��ޤ�!!");
52	}
53	if($newpagename eq $pagename){
54		return $wiki->error("Ʊ��Υڡ��������ꤵ��Ƥ��ޤ�!!");
55	}
56	if(!$wiki->can_modify_page($pagename) || !$wiki->can_modify_page($newpagename)){
57		return $wiki->error("�ڡ������Խ��ϵ��Ĥ���Ƥ��ޤ���");
58	}
59	if($wiki->page_exists($pagename)){
60		if($cgi->param("lastmodified") < $time){
61			return $wiki->error("�ڡ����ϴ����̤Υ桼���ˤ�äƹ�������Ƥ��ޤ���");
62		}
63	}
64
65	# FrontPage���ư���褦�Ȥ������ˤϥ��顼
66	if($pagename eq $wiki->config("frontpage") && $do ne "copy"){
67		return $wiki->error($wiki->config("frontpage")."���ư���뤳�ȤϤǤ��ޤ���");
68	}
69
70	# ���ԡ�����
71	$wiki->do_hook("rename");
72	my $content = $wiki->get_page($pagename);
73	$wiki->save_page($newpagename,$content);
74
75	# �������
76	if($do eq "move"){
77		$wiki->save_page($pagename,'');
78	}elsif($do eq "movewm"){
79		$wiki->save_page($pagename,'[['.$newpagename.']]�˰�ư���ޤ�����');
80	}
81
82	# �եå��ε�ư���ֵѥ�å�����
83	if($do eq "copy"){
84		$wiki->set_title($pagename."���ԡ����ޤ���");
85		return $cgi->escapeHTML($pagename)."���ԡ����ޤ�����";
86	} else {
87		$wiki->set_title($pagename."���͡��ष�ޤ���");
88		return $cgi->escapeHTML($pagename)."���͡��ष�ޤ�����";
89	}
90}
91
921;
93