From dd3a2ccdf13509286a47e861eb2d642cb919c40d Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 8 Jan 2009 14:02:05 +0000 Subject: [PATCH] (bug 2164) Add a "reset to site defaults" link to Special:Preferences --- includes/User.php | 7 +++++++ includes/specials/SpecialPreferences.php | 24 +++++++++++++++++++----- languages/messages/MessagesEn.php | 1 + 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/includes/User.php b/includes/User.php index e888422ee0..41aaf5bfa4 100644 --- a/includes/User.php +++ b/includes/User.php @@ -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. diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php index ca2236ee04..209f347f42 100644 --- a/includes/specials/SpecialPreferences.php +++ b/includes/specials/SpecialPreferences.php @@ -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( "
-
- tooltipAndAccesskey('save')." /> + tooltipAndAccesskey('save')." /> -
- +
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index bbd6ce4a73..ebabc4b4ed 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -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:', -- 2.20.1