fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2010-07-12 10:25 am

[dw-free] formatting preferences lost post-subscription

[commit: http://hg.dwscoalition.org/dw-free/rev/bc40d2bf36ca]

http://bugs.dwscoalition.org/show_bug.cgi?id=2536

Redirect to the page you came from, when subscribing to a user.

Patch by [personal profile] kareila.

Files modified:
  • htdocs/manage/subscriptions/user.bml
--------------------------------------------------------------------------------
diff -r cbe5fd6cd290 -r bc40d2bf36ca htdocs/manage/subscriptions/user.bml
--- a/htdocs/manage/subscriptions/user.bml	Mon Jul 12 18:18:33 2010 +0800
+++ b/htdocs/manage/subscriptions/user.bml	Mon Jul 12 18:31:47 2010 +0800
@@ -89,9 +89,25 @@ body<=
             flags   => LJ::Subscription::TRACKING,
         );
 
+    # validate referer for ret_url
+    my $referer = BML::get_client_header('Referer');
+    $referer = $LJ::SITEROOT . $referer if $referer =~ /^\//;
+    if ( DW::Controller::validate_redirect_url( $referer ) ) {
+        # validate args
+        my ( $url, $args ) = ( $referer =~ /^(.*)\?(.*)$/ );
+        if ( $url && $args ) {
+            my %args = map { split( /=/, $_ ) } split( /&/, $args );
+            $args = LJ::viewing_style_args( %args );
+            $referer = $args ? "$url?$args" : $url;
+        }
+    } else {
+        $referer = undef;  # invalid redirect
+    }
+
     return LJ::subscribe_interface( $remote,
         categories => $categories,
         journal    => $journal,
+        ret_url    => $referer,
         post_to_settings_page => 1,
     );
 
--------------------------------------------------------------------------------