(bug 2164) Add a "reset to site defaults" link to Special:Preferences
authorAaron Schulz <aaron@users.mediawiki.org>
Thu, 8 Jan 2009 14:02:05 +0000 (14:02 +0000)
committerAaron Schulz <aaron@users.mediawiki.org>
Thu, 8 Jan 2009 14:02:05 +0000 (14:02 +0000)
includes/User.php
includes/specials/SpecialPreferences.php
languages/messages/MessagesEn.php

index e888422..41aaf5b 100644 (file)
@@ -1909,6 +1909,13 @@ class User {
                }
                $this->mOptions[$oname] = $val;
        }
+       
+       /**
+        * Reset all options to the site defaults
+        */     
+       function restoreOptions() {
+               $this->mOptions = User::getDefaultOptions();
+       }
 
        /**
         * Get the user's preferred date format.
index ca2236e..209f347 100644 (file)
@@ -32,7 +32,7 @@ class PreferencesForm {
         * Constructor
         * Load some values
         */
-       function PreferencesForm( &$request ) {
+       function __construct( &$request ) {
                global $wgContLang, $wgUser, $wgAllowRealName;
 
                $this->mQuickbar = $request->getVal( 'wpQuickbar' );
@@ -60,6 +60,7 @@ class PreferencesForm {
                $this->mUnderline = $request->getInt( 'wpOpunderline' );
                $this->mAction = $request->getVal( 'action' );
                $this->mReset = $request->getCheck( 'wpReset' );
+               $this->mRestoreprefs = $request->getCheck( 'wpRestore' );
                $this->mPosted = $request->wasPosted();
                $this->mSuccess = $request->getCheck( 'success' );
                $this->mWatchlistDays = $request->getVal( 'wpWatchlistDays' );
@@ -117,6 +118,8 @@ class PreferencesForm {
                        $this->mainPrefsForm( 'reset', wfMsg( 'prefsreset' ) );
                } else if ( $this->mSaveprefs ) {
                        $this->savePreferences();
+               } else if ( $this->mRestoreprefs ) {
+                       $this->restorePreferences();
                } else {
                        $this->resetPrefs();
                        $this->mainPrefsForm( '' );
@@ -435,6 +438,17 @@ class PreferencesForm {
 
                wfRunHooks( 'ResetPreferences', array( $this, $wgUser ) );
        }
+       
+       /**
+        * @access private
+        */
+       function restorePreferences() {
+               global $wgUser;
+               $wgUser->restoreOptions();
+               $wgUser->setCookies();
+               $wgUser->saveSettings();
+               $this->mainPrefsForm( 'success' );
+       }
 
        /**
         * @access private
@@ -1192,11 +1206,11 @@ class PreferencesForm {
                $skin = $wgUser->getSkin();
                $wgOut->addHTML( "
        <div id='prefsubmit'>
-       <div>
-               <input type='submit' name='wpSaveprefs' class='btnSavePrefs' value=\"" . wfMsgHtml( 'saveprefs' ) . '"'.$skin->tooltipAndAccesskey('save')." />
+               <input type='submit' name='wpSaveprefs' class='btnSavePrefs' value=\"" . wfMsgHtml( 'saveprefs' ) . 
+                       '"'.$skin->tooltipAndAccesskey('save')." />
                <input type='submit' name='wpReset' value=\"" . wfMsgHtml( 'resetprefs' ) . "\" />
-       </div>
-
+               <input type='submit' name='wpRestore' class='btnSavePrefs' style='float:right;' value=\"" . 
+                       wfMsgHtml( 'restoreprefs' ) . "\" />
        </div>
 
        <input type='hidden' name='wpEditToken' value=\"{$token}\" />
index bbd6ce4..ebabc4b 100644 (file)
@@ -1535,6 +1535,7 @@ please see math/README to configure.',
 'prefs-resetpass'           => 'Change password',
 'saveprefs'                 => 'Save',
 'resetprefs'                => 'Clear unsaved changes',
+'restoreprefs'              => 'Restore all default settings',
 'textboxsize'               => 'Editing',
 'prefs-edit-boxsize'        => 'Size of the edit window.',
 'rows'                      => 'Rows:',