Rename page for admins to use.
Patch by fu.
diffs (130 lines):
diff -r 444c0e7f053e -r 8b6c7a57e647 cgi-bin/DW/Controller/Rename.pm
--- a/cgi-bin/DW/Controller/Rename.pm Fri Oct 22 22:44:44 2010 +0800
+++ b/cgi-bin/DW/Controller/Rename.pm Fri Oct 22 22:57:33 2010 +0800
@@ -32,6 +32,8 @@ DW::Routing->register_regex( qr!^/rename
DW::Routing->register_string( "/admin/rename", \&rename_admin_handler, app =>
1 );
DW::Routing->register_string( "/admin/rename/edit",
\&rename_admin_edit_handler, app => 1 );
+
+DW::Routing->register_string( "/admin/rename/new", \&siteadmin_rename_handler,
app => 1 );
sub rename_handler {
my $r = DW::Request->get;
@@ -309,4 +311,51 @@ sub handle_admin_post {
return ( 0, $errref );
}
+
+sub siteadmin_rename_handler {
+ my ( $ok, $rv ) = controller( privcheck => [ "siteadmin:rename" ] );
+ return $rv unless $ok;
+
+ my $r = DW::Request->get;
+ my $post_args = DW::Request->get->post_args || {};
+
+ my $vars = {};
+
+ if ( $r->method eq "POST" ) {
+ my ( $post_ok, $rv ) = handle_siteadmin_rename_post( $post_args );
+ return $rv if $post_ok;
+
+ $vars->{error_list} = $rv;
+ }
+
+ return DW::Template->render_template( "admin/rename_new.tt", $vars );
+}
+
+
+sub handle_siteadmin_rename_post {
+ my ( $post_args ) = @_;
+
+ return ( 0, [ LJ::Lang::ml( '/rename.tt.error.invalidform' ) ] )
+ unless LJ::check_form_auth( $post_args->{lj_form_auth} );
+
+ my $errref = [];
+
+ my $from_user = LJ::load_user( $post_args->{user} );
+ my $to_user = $post_args->{touser};
+
+ push @$errref, LJ::Lang::ml( '/rename.tt.error.nojournal' ) unless
$from_user;
+
+ $from_user->rename( $to_user,
+ token => DW::RenameToken->create_token( systemtoken => 1 ),
+ user => LJ::get_remote(),
+ force => 1,
+ errref => $errref,
+ );
+
+ return ( 1, DW::Template->render_template(
+ 'success.tt', { message => "Successfully changed settings." }
+ ) ) unless @$errref;
+
+ return ( 0, $errref );
+}
1;
diff -r 444c0e7f053e -r 8b6c7a57e647 cgi-bin/DW/User/Rename.pm
--- a/cgi-bin/DW/User/Rename.pm Fri Oct 22 22:44:44 2010 +0800
+++ b/cgi-bin/DW/User/Rename.pm Fri Oct 22 22:57:33 2010 +0800
@@ -178,8 +178,10 @@ sub rename {
my $errref = $opts{errref} || [];
my $remote = LJ::isu( $opts{user} ) ? $opts{user} : $self;
- push @$errref, LJ::Lang::ml( 'rename.error.tokeninvalid' ) unless
$opts{token} && $opts{token}->isa( "DW::RenameToken" )
- && $opts{token}->ownerid == $remote->userid;
+ push @$errref, LJ::Lang::ml( 'rename.error.tokeninvalid' )
+ unless $opts{token} && $opts{token}->isa( "DW::RenameToken" )
+ && ( $opts{token}->ownerid == $remote->userid
+ || $remote->has_priv( "siteadmin", "rename" ) && $opts{force} ) ;
push @$errref, LJ::Lang::ml( 'rename.error.tokenapplied' ) if $opts{token}
&& $opts{token}->applied;
my $can_rename_to = $self->can_rename_to( $tousername, %opts );
diff -r 444c0e7f053e -r 8b6c7a57e647 views/admin/rename.tt
--- a/views/admin/rename.tt Fri Oct 22 22:44:44 2010 +0800
+++ b/views/admin/rename.tt Fri Oct 22 22:57:33 2010 +0800
@@ -23,7 +23,7 @@ the same terms as Perl itself. For a co
<tr>
<td>[%rename.from | html %]</td>
<td>[%rename.to | html %]</td>
- <td>[%rename.owner.ljuser_display %]</td>
+ <td>[% rename.owner ? rename.owner.ljuser_display : "(system)"
%]</td>
<td>[%rename.target.ljuser_display %]</td>
<td>[%rename.date%]</td>
<td><a
href="[%site.root%]/admin/rename/edit?token=[%rename.token%]">[%
'.renames.list.item.details' | ml | html %]</a></td>
diff -r 444c0e7f053e -r 8b6c7a57e647 views/admin/rename_new.tt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/views/admin/rename_new.tt Fri Oct 22 22:57:33 2010 +0800
@@ -0,0 +1,34 @@
+[%# admin/rename/do.tt
+
+Admin page to do renames.
+
+Authors:
+ Afuna <[email protected]>
+
+This program is free software; you may redistribute it and/or modify it under
+the same terms as Perl itself. For a copy of the license, please reference
+'perldoc perlartistic' or 'perldoc perlgpl'.
+%]
+
+[% sections.title = 'System Renames' %]
+
+[% IF error_list %]
+ <p>Error</p>
+ <ul class='error-list'>
+ [% FOREACH error = error_list %]
+ <li>[% error %] </li>
+ [% END %]
+ </ul>
+[% END %]
+
+<p>This allows a system user to perform a rename. The rules are slightly
relaxed compared to normal renames: we check for validity of the username, but
we don't care about other things like the journal's status or ownership.</p>
+<p>All existing relationships are kept; email and journal redirects are
broken.</p>
+<form method="POST">
+ [% dw.form_auth %]
+ <div class='formfield'>
+ <label for="user">User:</label> <input type="text" name="user"
id="user"/></div>
+ <div class='formfield'>
+ <label for="touser">To:</label> <input type="text" name="touser"
id="touser" />
+ </div>
+ <input type="submit" value="Perform rename" />
+</form>
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog