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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Wed Mar 10 07:00:32 2004 UTC (20 years, 7 months ago) by wakaba
Branch: MAIN
Imported to CVS

1 wakaba 1.1 #?SuikaWikiConfig/2.0
2    
3     Plugin:
4     @Name: WikiPageRename
5     @Description:
6     @@@: WikiPage renaming
7     @@lang:en
8     @License: %%Perl%%
9     @Author:
10     @@Name:
11     @@@@: Wakaba
12     @@@lang:ja
13     @@@script:Latn
14     @@Mail[list]: w@suika.fam.cx
15     @Date.RCS:
16     $Date: 2004/02/08 08:49:05 $
17     @RequiredPlugin[list]:
18     Error
19     InterWikiCore
20     InterWikiText
21     WikiFormCore
22     WikiResource
23     @Use:
24     use Message::Util::Error;
25    
26     PluginConst:
27     @NS_XHTML1:
28     http://www.w3.org/1999/xhtml
29    
30     ViewDefinition:
31     @Mode: pi-wp--rename-
32     @Condition:
33     @@http-method[list]:
34     POST
35     @Description:
36     @@@: Renaming a WikiPage
37     @@lang: en
38     @Use:
39     use Message::Util::Error;
40     @method:
41     @@Name: main
42     @@@:
43     my $wiki = $self->{view}->{wiki};
44     $wiki->{var}->{db}->{read_only}->{'content'} = 0;
45     $wiki->{var}->{db}->{read_only}->{'lastmodified'} = 0;
46     $self->{view}->init_db;
47     my $from_page = $wiki->{var}->{page};
48     my $to_page = $wiki->name ($wiki->{input}->parameter ('wprn--rename-as')
49     or $from_page);
50    
51     ## Check confliction
52     if ($from_page eq $to_page) {
53     $wiki->view_in_mode (mode => '-wprn--same-name');
54     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
55     }
56     my $check = 1;
57     try {
58     for (qw/content lastmodified/) {
59     $check = 0, last if $wiki->{db}->exist ($_ => $to_page);
60     }
61     } catch SuikaWiki::DB::Util::Error with {
62     my $err = shift;
63     $err->throw if $err->{-type} eq 'ERROR_REPORTED';
64     $wiki->view_in_mode (mode => '-wdb--fatal-error');
65     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
66     };
67     unless ($check) {
68     $self->{view}->{wiki}->view_in_mode (mode => '-wprn--new-name-exists');
69     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
70     }
71    
72     try {
73     for (qw/content lastmodified/) {
74     $wiki->{db}->set ($_ => $to_page
75     => $wiki->{db}->get ($_ => $from_page));
76     }
77     for (qw/content lastmodified/) {
78     $wiki->{db}->delete ($_ => $from_page);
79     }
80     } catch SuikaWiki::DB::Util::Error with {
81     my $err = shift;
82     $err->throw if $err->{-type} eq 'ERROR_REPORTED';
83     $wiki->view_in_mode (mode => '-wdb--fatal-error');
84     throw SuikaWiki::DB::Util::Error -type => 'ERROR_REPORTED';
85     };
86     $wiki->view_in_mode (mode => '-wprn--renamed');
87    
88     FormattingRule:
89     @Category[list]: view
90     @Name: wp-rename-form
91     @Description:
92     @@@: Renaming form
93     @@lang: en
94     @Parameter:
95     @@Name: page
96     @@Type: WikiName
97     @@Default: (auto)
98     @@Description:
99     @@@@: WikiPage name to be renamed from
100     @@@lang:en
101     @Formatting:
102     __ATTRTEXT:%page__;
103    
104     my $page = $o->{wiki}->name ($p->{page} || $o->{wiki}->{var}->{page});
105     SuikaWiki::Plugin->module_package ('WikiFormCore')
106     ->make_form_in_html
107     ($p->{-parent}, $p->{content},
108     wiki => $o->{wiki}, o => $o,
109     index => -1,
110     output => {
111     mode => 'pi-wp--rename-',
112     page => $page,
113     });
114    
115     FormattingRule:
116     @Category[list]:
117     view
118     view-resource
119     @Name: wp-new-page-name
120     @Formatting:
121     $p->{-parent}->append_text (scalar $o->{wiki}->{input}->parameter
122     ('wprn--rename-as'));
123    
124     ViewFragment:
125     @Template[list]: we--adminedit-body
126     @Order:100
127     @Description:
128     @@@: Renaming WikiName section in adminedit mode
129     @@lang:en
130     @Formatting:
131     %section (
132     title => {%res(name=>{Edit:Rename:Title});}p, heading,
133     content => {
134     %wp-rename-form (
135     content => {
136     %text (
137     id => wprn--rename-as,
138     label => {%res(name=>{Edit:Rename:To=});}p,
139     size => 10,
140     default => {%page-name;}p,
141     );
142     %submit;
143     }p,
144     );
145     }p,
146     );
147    
148     ## See RFC 2518 8.9.4 for HTTP status code use.
149     ##
150     ## 201 Created - Success
151     ## 204 No Content - Success
152     ## 403 Forbidden - Source and destination are same
153     ## 409 Conflict - Can't create destination
154     ## 412 Precondition Failed
155     ## 423 Locked - Source or destination was locked
156     ## 502 Bad Gateway - Destination server refused
157    
158     ViewDefinition:
159     @Mode: -wprn--new-name-exists
160     @Condition:
161     @@http-method[list]:
162     GET
163     HEAD
164     POST
165     @Description:
166     @@@: WikiPage with new WikiName already exists
167     @@lang: en
168     @template:
169     @@http-status-code: 409
170     @@http-status-phrase: Destination WikiName Already Used
171     @@media-type: text/html
172     @@use-media-type-charset: 1
173     @@expires: %%error%%
174     @@body:
175     %template (
176     name => err--general-error,
177     -web-page-title => {%res (name => {WikiPageRename:DestinationExists:WebPageTitle});}p,
178     -section-title => {%res (name => {WikiPageRename:DestinationExists:Title});}p,
179     -content => {%res (name => {WikiPageRename:DestinationExists:Descriptions});}p,
180     );
181    
182     ViewDefinition:
183     @Mode: -wprn--same-name
184     @Condition:
185     @@http-method[list]:
186     GET
187     HEAD
188     POST
189     @Description:
190     @@@: New WikiName is same as current WikiName
191     @@lang: en
192     @template:
193     @@http-status-code: 403
194     @@http-status-phrase: Same Source and Destination WikiNames
195     @@media-type: text/html
196     @@use-media-type-charset: 1
197     @@expires: %%error%%
198     @@body:
199     %template (
200     name => err--general-error,
201     -web-page-title => {%res (name => {WikiPageRename:SameName:WebPageTitle});}p,
202     -section-title => {%res (name => {WikiPageRename:SameName:Title});}p,
203     -content => {%res (name => {WikiPageRename:SameName:Descriptions});}p,
204     );
205    
206     ViewDefinition:
207     @Mode: -wprn--renamed
208     @Condition:
209     @@http-method[list]:
210     GET
211     HEAD
212     POST
213     @Description:
214     @@@: Successfully renamed
215     @@lang: en
216     @template:
217     @@http-status-code: 201
218     @@http-status-phrase: WikiPage Renamed
219     @@media-type: text/html
220     @@use-media-type-charset: 1
221     @@expires: %%error%%
222     @@body:
223     %template (
224     name => err--general-error,
225     -web-page-title => {%res (name => {WikiPageRename:Renamed:WebPageTitle});}p,
226     -section-title => {%res (name => {WikiPageRename:Renamed:Title});}p,
227     -content => {%res (name => {WikiPageRename:Renamed:Descriptions});}p,
228     );
229    
230     Resource:
231     @Edit:Rename:Title:
232     @@@: Change WikiName
233     @@lang: en
234     @Edit:Rename:To=:
235     @@@: New name
236     @@lang: en
237     @WikiPageRename:DestinationExists:Descriptions:
238     @@@:
239     %paragraph (content => {Specified new WikiName
240     %link-to-wikipage (page => {%wp-new-page-name;}p,
241     label => {%link-to-it (label => {%page-name;}p);});
242     is already used for another WikiPage.}p);
243     @@lang: en
244     @WikiPageRename:DestinationExists:Title:
245     @@@: Destination WikiName Already Used
246     @@lang: en
247     @WikiPageRename:DestinationExists:WebPageTitle:
248     @@@: 409 Destination WikiName Already Used (%page-name; => %wp-new-page-name;)
249     @@lang: en
250     @WikiPageRename:Renamed:Descriptions:
251     @@@:
252     %paragraph (content => {WikiPage %page-name; successfully renamed
253     as new WikiName
254     %link-to-wikipage (page => {%wp-new-page-name;}p,
255     label => {%link-to-it (label => {%page-name;}p);});.}p);
256     @@lang: en
257     @WikiPageRename:Renamed:Title:
258     @@@: WikiPage Renamed
259     @@lang: en
260     @WikiPageRename:Renamed:WebPageTitle:
261     @@@: 201 WikiPage Renamed
262     @@lang: en
263     @WikiPageRename:SameName:Descriptions:
264     @@@:
265     %paragraph (content => {Specified new WikiName is exact same as
266     current WikiName.});
267     @@lang: en
268     @WikiPageRename:SameName:Title:
269     @@@: Same Source and Destination WikiNames
270     @@lang: en
271     @WikiPageRename:SameName:WebPageTitle:
272     @@@: 403 Same Source and Destination WikiNames (%page-name;)
273     @@lang: en
274    
275    
276    

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24