/[pub]/suikawiki/script/misc/plugins/WikiPageRename.pm
Suika

Contents of /suikawiki/script/misc/plugins/WikiPageRename.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Sun May 16 23:05:49 2010 UTC (14 years, 5 months ago) by wakaba
Branch: MAIN
CVS Tags: suikawiki3-redirect, HEAD
added latest .pm files

1 wakaba 1.1 use strict;
2     package SuikaWiki::Plugin::Registry;
3    
4    
5     our %Info;
6     $Info{q#WikiPageRename#}->{Name} = q#WikiPageRename#;
7     $Info{q#WikiPageRename#}->{q#Version#} = q#2004.0831.0328#;
8     $Info{q#WikiPageRename#}->{q#InterfaceVersion#} = q#2.9.1#;
9     $Info{q#WikiPageRename#}->{q#mkpluginVersion#} = q#2.1.19#;
10     $Info{q#WikiPageRename#}->{q#module_name#} = q#SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a#;
11     $Info{q#WikiPageRename#}->{q#Date.RCS#} = q#$Date: 2004/04/25 07:06:50 $#;
12     $Info{q#WikiPageRename#}->{RequiredPlugin} = [q#Error#, q#InterWikiCore#, q#InterWikiText#, q#WikiFormCore#, q#WikiResource#];
13     $Info{q#WikiPageRename#}->{Description} = [[q#WikiPage renaming#, q#en#, q##]];
14     $Info{q#WikiPageRename#}->{License} = [[q#%%Perl%%#, q##, q##]];
15     $Info{q#WikiPageRename#}->{Author} = [[[[q#Wakaba#, q#ja#, q#Latn#]], [[q#w@suika.fam.cx#]], [q##]]];
16     package SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a;
17    
18    
19     #line 1 "(WikiPlugin module source WikiPageRename.wp2, block Plugin/Use)"
20     use Message::Util::Error;
21     #line 1 "(WikiPlugin module WikiPageRename, chunk 1)"
22    
23     push @SuikaWiki::View::Implementation::CommonViewDefs, {
24     condition => {q#mode#, q#pi_wp__rename_#, q#http_method#, [q#POST#]},
25     object_class => q#SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::pi_wp__rename_1040731032806rcfh#,
26     };
27     package SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::pi_wp__rename_1040731032806rcfh;
28    
29    
30     our @ISA = q#SuikaWiki::View::template#;
31    
32     #line 1 "(WikiPlugin module source WikiPageRename.wp2, block ViewDefinition[Mode='pi_wp__rename_']/Use)"
33     use Message::Util::Error;
34    
35     sub main ($$) {
36     my ($self, $opt, $opt2) = @_;
37    
38     #line 1 "(WikiPlugin module source WikiPageRename.wp2, block ViewDefinition[Mode='pi_wp__rename_']/method[Name='main'])"
39     my $wiki = $self->{view}->{wiki};
40     $wiki->{var}->{db}->{read_only}->{'content'} = 0;
41     $wiki->{var}->{db}->{read_only}->{'content_prop'} = 0;
42     $wiki->{var}->{db}->{read_only}->{'lastmodified'} = 0;
43     $self->{view}->init_db;
44     my $from_page = $wiki->{var}->{page};
45     my $to_page = $wiki->name ($wiki->{input}->parameter ('wprn--rename-as')
46     or $from_page);
47     if ($from_page eq $to_page) {
48     $wiki->view_in_mode (mode => '-wprn--same-name');
49     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
50     }
51     my $check = 1;
52     try {
53     for (qw/content content_prop lastmodified/) {
54     $check = 0, last if $wiki->{db}->exist ($_ => $to_page);
55     }
56     } catch SuikaWiki::DB::Util::Error with {
57     my $err = shift;
58     $err->throw if $err->{-type} eq 'ERROR_REPORTED';
59     $wiki->view_in_mode (mode => '-wdb--fatal-error');
60     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
61     };
62     unless ($check) {
63     $self->{view}->{wiki}->view_in_mode (mode => '-wprn--new-name-exists');
64     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
65     }
66     try {
67     for (qw/content content_prop lastmodified/) {
68     $wiki->{db}->set ($_ => $to_page
69     => $wiki->{db}->get ($_ => $from_page));
70     }
71     for (qw/content content_prop lastmodified/) {
72     $wiki->{db}->delete ($_ => $from_page);
73     }
74     } catch SuikaWiki::DB::Util::Error with {
75     my $err = shift;
76     $err->throw if $err->{-type} eq 'ERROR_REPORTED';
77     $wiki->view_in_mode (mode => '-wdb--fatal-error');
78     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
79     };
80     $wiki->view_in_mode (mode => '-wprn--renamed');}
81    
82     #line 1 "(WikiPlugin module WikiPageRename, chunk 2)"
83    
84     package SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a;
85    
86     $SuikaWiki::Plugin::Rule{view}->{wp_rename_form} = {q#Parameter#, {q#page#, {q#Type#, q#WikiName#, q#Default#, q#(auto)#, q#Description#, [[q#WikiPage name to be renamed from#, q#en#, q##]]}}, q#Description#, [[q#Renaming form#, q#en#, q##]], q#main#, sub {my ($f, $rule_name, $p, $o, %opt) = @_;
87    
88     #line 1 "(WikiPlugin module source WikiPageRename.wp2, block FormattingRule[name()='[q#view#]/wp_rename_form']/Formatting)"
89     $p->{q#page#} = do { my $r = $f->parse_attr ($p=>q#page#, $o, -non_parsed_to_node => 1, %opt); ref $r?$r->inner_text:$r};
90     my $page = $o->{wiki}->name ($p->{page} || $o->{wiki}->{var}->{page});
91     SuikaWiki::Plugin->module_package ('WikiFormCore')
92     ->make_form_in_html
93     ($p->{-parent}, $p->{content},
94     wiki => $o->{wiki}, o => $o,
95     index => -1,
96     output => {
97     mode => 'pi-wp--rename-',
98     page => $page,
99     });}}
100     #line 1 "(WikiPlugin module WikiPageRename, chunk 3)"
101     ;
102    
103     {my $def = {q#Parameter#, {}, q#Description#, [], q#main#, sub {my ($f, $rule_name, $p, $o, %opt) = @_;
104    
105     #line 1 "(WikiPlugin module source WikiPageRename.wp2, block FormattingRule[name()='[q#view#, q#view-resource#]/wp_new_page_name']/Formatting)"
106     $p->{-parent}->append_text (scalar $o->{wiki}->{input}->parameter
107     ('wprn--rename-as'));}}
108     #line 1 "(WikiPlugin module WikiPageRename, chunk 5)"
109     ;
110     $SuikaWiki::Plugin::Rule{view}->{wp_new_page_name} = $def;
111     $SuikaWiki::Plugin::Rule{view_resource}->{wp_new_page_name} = $def;
112     };
113    
114     push @{$SuikaWiki::View::Implementation::TemplateFragment{q#we__adminedit_body#}}, {
115     Main => q#%section (
116     title => {%res(name=>{Edit:Rename:Title});}p, heading,
117     content => {
118     %wp-rename-form (
119     content => {
120     %text (
121     id => wprn--rename-as,
122     label => {%res(name=>{Edit:Rename:To=});}p,
123     size => 10,
124     default => {%page-name;}p,
125     );
126     %submit;
127     }p,
128     );
129     }p,
130     );#,
131     Order => 100,
132     Description => [[q#Renaming WikiName section in adminedit mode#, q#en#, q##]],
133     };
134    
135     push @SuikaWiki::View::Implementation::CommonViewDefs, {
136     condition => {q#mode#, q#-wprn__new_name_exists#, q#http_method#, [q#GET#, q#HEAD#, q#POST#]},
137     object_class => q#SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::wprn__new_name_exists1040731032806b0CC#,
138     };
139     package SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::wprn__new_name_exists1040731032806b0CC;
140    
141    
142     our @ISA = q#SuikaWiki::View::template#;
143    
144     sub main ($$$) {
145     my ($self, $opt, $opt2) = @_;
146     require SuikaWiki::Output::HTTP;
147     $opt2->{output} = SuikaWiki::Output::HTTP->new
148     (wiki => $self->{view}->{wiki},
149     view => $self->{view}, viewobj => $self);
150     for (@{$self->{view}->{wiki}->{var}->{client}->{used_for_negotiate}},
151     'Accept-Language') {
152     $opt2->{output}->add_negotiate_header_field ($_);
153     }
154    
155     $opt2->{template} = q#%template (
156     name => err--general-error,
157     -web-page-title => {%res (name => {WikiPageRename:DestinationExists:WebPageTitle});}p,
158     -section-title => {%res (name => {WikiPageRename:DestinationExists:Title});}p,
159     -content => {%res (name => {WikiPageRename:DestinationExists:Descriptions});}p,
160     );#;
161     $opt2->{o} = bless {
162     ## SuikaWiki 3 WikiPlugin interface
163     wiki => $self->{view}->{wiki},
164     plugin => $self->{view}->{wiki}->{plugin},
165     var => {},
166     }, 'SuikaWiki::Plugin';
167     $opt2->{output}->{status_code} = 409;
168     $opt2->{output}->{status_phrase} = q#Destination WikiName Already Used#;
169     $opt2->{output}->{entity}->{media_type} = q#text/html#;
170    
171     $opt2->{output}->{entity}->{charset} = $self->{view}->{wiki}->{config}->{charset}->{output};
172     $opt2->{output}->set_expires (%{$self->{view}->{wiki}->{config}->{entity}->{expires}->{q#error#}});
173     $opt2->{output}->{entity}->{body_is_octet_stream} = 0;
174    
175     $self->{view}->{wiki}->init_db;
176     $self->main_pre ($opt, $opt2);
177    
178     require Message::Markup::XML::Serialize::HTML;
179     use Message::Util::Error;
180     try {
181     $opt2->{output}->{entity}->{body}
182     = Message::Markup::XML::Serialize::HTML::html_simple
183     (SuikaWiki::Plugin->formatter ('view')
184     ->replace ($opt2->{template}, param => $opt2->{o}));
185     } $self->{view}->{wiki}->{config}->{catch}->{ formatter_view };
186     $opt2->{output}->output (output => 'http-cgi');
187    
188     $self->main_post ($opt, $opt2);
189     }
190    
191     push @SuikaWiki::View::Implementation::CommonViewDefs, {
192     condition => {q#mode#, q#-wprn__same_name#, q#http_method#, [q#GET#, q#HEAD#, q#POST#]},
193     object_class => q#SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::wprn__same_name10407310328069drd#,
194     };
195     package SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::wprn__same_name10407310328069drd;
196    
197    
198     our @ISA = q#SuikaWiki::View::template#;
199    
200     sub main ($$$) {
201     my ($self, $opt, $opt2) = @_;
202     require SuikaWiki::Output::HTTP;
203     $opt2->{output} = SuikaWiki::Output::HTTP->new
204     (wiki => $self->{view}->{wiki},
205     view => $self->{view}, viewobj => $self);
206     for (@{$self->{view}->{wiki}->{var}->{client}->{used_for_negotiate}},
207     'Accept-Language') {
208     $opt2->{output}->add_negotiate_header_field ($_);
209     }
210    
211     $opt2->{template} = q#%template (
212     name => err--general-error,
213     -web-page-title => {%res (name => {WikiPageRename:SameName:WebPageTitle});}p,
214     -section-title => {%res (name => {WikiPageRename:SameName:Title});}p,
215     -content => {%res (name => {WikiPageRename:SameName:Descriptions});}p,
216     );#;
217     $opt2->{o} = bless {
218     ## SuikaWiki 3 WikiPlugin interface
219     wiki => $self->{view}->{wiki},
220     plugin => $self->{view}->{wiki}->{plugin},
221     var => {},
222     }, 'SuikaWiki::Plugin';
223     $opt2->{output}->{status_code} = 403;
224     $opt2->{output}->{status_phrase} = q#Same Source and Destination WikiNames#;
225     $opt2->{output}->{entity}->{media_type} = q#text/html#;
226    
227     $opt2->{output}->{entity}->{charset} = $self->{view}->{wiki}->{config}->{charset}->{output};
228     $opt2->{output}->set_expires (%{$self->{view}->{wiki}->{config}->{entity}->{expires}->{q#error#}});
229     $opt2->{output}->{entity}->{body_is_octet_stream} = 0;
230    
231     $self->{view}->{wiki}->init_db;
232     $self->main_pre ($opt, $opt2);
233    
234     require Message::Markup::XML::Serialize::HTML;
235     use Message::Util::Error;
236     try {
237     $opt2->{output}->{entity}->{body}
238     = Message::Markup::XML::Serialize::HTML::html_simple
239     (SuikaWiki::Plugin->formatter ('view')
240     ->replace ($opt2->{template}, param => $opt2->{o}));
241     } $self->{view}->{wiki}->{config}->{catch}->{ formatter_view };
242     $opt2->{output}->output (output => 'http-cgi');
243    
244     $self->main_post ($opt, $opt2);
245     }
246    
247     push @SuikaWiki::View::Implementation::CommonViewDefs, {
248     condition => {q#mode#, q#-wprn__renamed#, q#http_method#, [q#GET#, q#HEAD#, q#POST#]},
249     object_class => q#SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::wprn__renamed1040731032806stTo#,
250     };
251     package SuikaWiki::Plugin::plugin::WikiPageRename1040731032806qG6a::wprn__renamed1040731032806stTo;
252    
253    
254     our @ISA = q#SuikaWiki::View::template#;
255    
256     sub main ($$$) {
257     my ($self, $opt, $opt2) = @_;
258     require SuikaWiki::Output::HTTP;
259     $opt2->{output} = SuikaWiki::Output::HTTP->new
260     (wiki => $self->{view}->{wiki},
261     view => $self->{view}, viewobj => $self);
262     for (@{$self->{view}->{wiki}->{var}->{client}->{used_for_negotiate}},
263     'Accept-Language') {
264     $opt2->{output}->add_negotiate_header_field ($_);
265     }
266    
267     $opt2->{template} = q#%template (
268     name => err--general-error,
269     -web-page-title => {%res (name => {WikiPageRename:Renamed:WebPageTitle});}p,
270     -section-title => {%res (name => {WikiPageRename:Renamed:Title});}p,
271     -content => {%res (name => {WikiPageRename:Renamed:Descriptions});}p,
272     );#;
273     $opt2->{o} = bless {
274     ## SuikaWiki 3 WikiPlugin interface
275     wiki => $self->{view}->{wiki},
276     plugin => $self->{view}->{wiki}->{plugin},
277     var => {},
278     }, 'SuikaWiki::Plugin';
279     $opt2->{output}->{status_code} = 201;
280     $opt2->{output}->{status_phrase} = q#WikiPage Renamed#;
281     $opt2->{output}->{entity}->{media_type} = q#text/html#;
282    
283     $opt2->{output}->{entity}->{charset} = $self->{view}->{wiki}->{config}->{charset}->{output};
284     $opt2->{output}->set_expires (%{$self->{view}->{wiki}->{config}->{entity}->{expires}->{q#error#}});
285     $opt2->{output}->{entity}->{body_is_octet_stream} = 0;
286    
287     $self->{view}->{wiki}->init_db;
288     $self->main_pre ($opt, $opt2);
289    
290     require Message::Markup::XML::Serialize::HTML;
291     use Message::Util::Error;
292     try {
293     $opt2->{output}->{entity}->{body}
294     = Message::Markup::XML::Serialize::HTML::html_simple
295     (SuikaWiki::Plugin->formatter ('view')
296     ->replace ($opt2->{template}, param => $opt2->{o}));
297     } $self->{view}->{wiki}->{config}->{catch}->{ formatter_view };
298     $opt2->{output}->output (output => 'http-cgi');
299    
300     $self->main_post ($opt, $opt2);
301     }
302    
303     package SuikaWiki::Plugin::Resource;
304    
305     our $BaseResource;
306     $BaseResource->{q#en#}->{q##}->{q#Edit:Rename:Title#} = q#Change WikiName#;
307     $BaseResource->{q#en#}->{q##}->{q#Edit:Rename:To=#} = q#New name#;
308     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:DestinationExists:Descriptions#} = q#%paragraph (content => {Specified new WikiName %link-to-wikipage (page => {%wp-new-page-name;}p, label => {%link-to-it (label => {%page-name;}p);}); is already used for another WikiPage.}p);#;
309     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:DestinationExists:Title#} = q#Destination WikiName Already Used#;
310     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:DestinationExists:WebPageTitle#} = q#409 Destination WikiName Already Used (%page-name; => %wp-new-page-name;)#;
311     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:Renamed:Descriptions#} = q#%paragraph (content => {WikiPage %page-name; successfully renamed as new WikiName %link-to-wikipage (page => {%wp-new-page-name;}p, label => {%link-to-it (label => {%page-name;}p);});.}p);#;
312     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:Renamed:Title#} = q#WikiPage Renamed#;
313     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:Renamed:WebPageTitle#} = q#201 WikiPage Renamed#;
314     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:SameName:Descriptions#} = q#%paragraph (content => {Specified new WikiName is exact same as current WikiName.});#;
315     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:SameName:Title#} = q#Same Source and Destination WikiNames#;
316     $BaseResource->{q#en#}->{q##}->{q#WikiPageRename:SameName:WebPageTitle#} = q#403 Same Source and Destination WikiNames (%page-name;)#;
317     package SuikaWiki::Plugin::Registry;
318    
319     $Info{q#WikiPageRename#}->{provide} = {q#rule#, {q#view#, [q#wp_rename_form#, q#wp_new_page_name#], q#view_resource#, [q#wp_new_page_name#]}, q#viewfragment#, [{q#Name#, q#we__adminedit_body#}], q#viewdef#, [{q#Description#, [q#Renaming a WikiPage#, q#en#, q##], q#Name#, q#pi_wp__rename_#}, {q#Description#, [q#WikiPage with new WikiName already exists#, q#en#, q##], q#Name#, q#-wprn__new_name_exists#}, {q#Description#, [q#New WikiName is same as current WikiName#, q#en#, q##], q#Name#, q#-wprn__same_name#}, {q#Description#, [q#Successfully renamed#, q#en#, q##], q#Name#, q#-wprn__renamed#}]};
320    
321     1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24