Preserve 'ooui' query string when overriding
authorEd Sanders <esanders@wikimedia.org>
Thu, 3 May 2018 13:17:41 +0000 (14:17 +0100)
committerBartosz Dziewoński <matma.rex@gmail.com>
Tue, 8 May 2018 21:24:41 +0000 (21:24 +0000)
Change-Id: I32df23b427f18e6275beaa6cc10cd58dc3b6eb36

includes/preferences/DefaultPreferencesFactory.php
includes/specials/SpecialPreferences.php

index d948324..2d7d73f 100644 (file)
@@ -1724,17 +1724,25 @@ class DefaultPreferencesFactory implements PreferencesFactory {
                $res = $this->saveFormData( $formData, $form );
 
                if ( $res ) {
+                       $context = $form->getContext();
+
                        $urlOptions = [];
 
                        if ( $res === 'eauth' ) {
                                $urlOptions['eauth'] = 1;
                        }
 
+                       if (
+                               $context->getRequest()->getFuzzyBool( 'ooui' ) !==
+                               $context->getConfig()->get( 'OOUIPreferences' )
+                       ) {
+                               $urlOptions[ 'ooui' ] = $context->getRequest()->getFuzzyBool( 'ooui' ) ? 1 : 0;
+                       }
+
                        $urlOptions += $form->getExtraSuccessRedirectParameters();
 
                        $url = $form->getTitle()->getFullURL( $urlOptions );
 
-                       $context = $form->getContext();
                        // Set session data for the success message
                        $context->getRequest()->getSession()->set( 'specialPreferencesSaveSuccess', 1 );
 
index 0f6be06..f67fe9f 100644 (file)
@@ -154,6 +154,8 @@ class SpecialPreferences extends SpecialPage {
                        );
                }
 
+               $htmlForm->addHiddenField( 'ooui', $this->oouiEnabled ? '1' : '0' );
+
                $htmlForm->show();
        }