allowed changes in preferences, especially skin, to be immediately displayed in the...
authorTim Starling <tstarling@users.mediawiki.org>
Wed, 7 Apr 2004 13:58:14 +0000 (13:58 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Wed, 7 Apr 2004 13:58:14 +0000 (13:58 +0000)
includes/SpecialPreferences.php
includes/User.php

index abd63f1..c353cb7 100644 (file)
@@ -125,7 +125,7 @@ class PreferencesForm {
 
        /* private */ function savePreferences()
        {
-               global $wgUser, $wgLang, $wgDeferredUpdateList;
+               global $wgUser, $wgLang, $wgDeferredUpdateList, $wgOut;
 
                if ( "" != $this->mNewpass ) {
                        if ( $this->mNewpass != $this->mRetypePass ) {
@@ -170,6 +170,11 @@ class PreferencesForm {
                $wgUser->setCookies();
                $up = new UserUpdate();
                array_push( $wgDeferredUpdateList, $up );
+               $wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) );
+               $po = ParserOptions::newFromUser( $wgUser );
+               print get_class( $wgUser->getSkin() ) . "<br>\n";
+               print get_class( $po->mSkin ) . "<br>\n";
+               print get_class( $wgOut->mParserOptions->mSkin ) . "<br>\n";
                $this->mainPrefsForm( wfMsg( "savedprefs" ) );
        }
 
index 287c49c..c1607e7 100644 (file)
@@ -379,6 +379,10 @@ class User {
        function setOption( $oname, $val )
        {
                $this->loadFromDatabase();
+               if ( $oname == 'skin' ) {
+                       # Clear cached skin, so the new one displays immediately in Special:Preferences
+                       unset( $this->mSkin );
+               }
                $this->mOptions[$oname] = $val;
                $this->invalidateCache();
        }