From a6e05537472942db1c5f72fb2d23cfd170263c03 Mon Sep 17 00:00:00 2001 From: Happy-melon Date: Sat, 13 Mar 2010 20:46:22 +0000 Subject: [PATCH] Add $wgAllowUserCssPrefs option to disable CSS-based preferences. These are injected by a 'stylesheet' /w/index.php?title=-&action=raw&gen=css, which is ~20 times slower to get out to the browser than a normal stylesheet. If you don't care about your users too much, getting rid of these options can dramatically improve page load times. Also, update monobook/main.css to actually offer the redlink colour that's been seen on wikipedia since forever. It's only when you turn off this per-user styling stuff that you realise that it's been overriding a different colour since September 2004 :D --- RELEASE-NOTES | 2 + includes/DefaultSettings.php | 7 +++ includes/Preferences.php | 110 +++++++++++++++++++---------------- includes/Skin.php | 26 +++++---- skins/monobook/main.css | 2 +- 5 files changed, 85 insertions(+), 62 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 1ea8620a18..515979d8f5 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -30,6 +30,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN the names of the individual files within the gallery * (bug 12797) Add $wgGalleryOptions for adjusting of default gallery display options +* $wgAllowUserCssPrefs option allows disabling CSS-based preferences; which can + improve page loading speed. === Bug fixes in 1.17 === * (bug 17560) Half-broken deletion moved image files to deletion archive without diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index a8d10c5a08..8f47cd1f21 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -2905,6 +2905,13 @@ $wgAllowUserJs = false; */ $wgAllowUserCss = false; +/** + * Allow user-preferences implemented in CSS? + * This allows users to customise the site appearance to a greater + * degree; disabling it will improve page load times. + */ +$wgAllowUserCssPrefs = true; + /** Use the site's Javascript page? */ $wgUseSiteJs = true; diff --git a/includes/Preferences.php b/includes/Preferences.php index 28edc4b614..6047df58b8 100644 --- a/includes/Preferences.php +++ b/includes/Preferences.php @@ -593,17 +593,20 @@ class Preferences { static function renderingPreferences( $user, &$defaultPreferences ) { ## Page Rendering ############################## - $defaultPreferences['underline'] = - array( - 'type' => 'select', - 'options' => array( - wfMsg( 'underline-never' ) => 0, - wfMsg( 'underline-always' ) => 1, - wfMsg( 'underline-default' ) => 2, - ), - 'label-message' => 'tog-underline', - 'section' => 'rendering/advancedrendering', - ); + global $wgAllowUserCssPrefs; + if( $wgAllowUserCssPrefs ){ + $defaultPreferences['underline'] = + array( + 'type' => 'select', + 'options' => array( + wfMsg( 'underline-never' ) => 0, + wfMsg( 'underline-always' ) => 1, + wfMsg( 'underline-default' ) => 2, + ), + 'label-message' => 'tog-underline', + 'section' => 'rendering/advancedrendering', + ); + } $stubThresholdValues = array( 0, 50, 100, 500, 1000, 2000, 5000, 10000 ); $stubThresholdOptions = array(); @@ -619,18 +622,20 @@ class Preferences { 'size' => 20, 'label' => wfMsg( 'stub-threshold' ), // Raw HTML message. Yay? ); - $defaultPreferences['highlightbroken'] = - array( - 'type' => 'toggle', - 'section' => 'rendering/advancedrendering', - 'label' => wfMsg( 'tog-highlightbroken' ), // Raw HTML - ); - $defaultPreferences['showtoc'] = - array( - 'type' => 'toggle', - 'section' => 'rendering/advancedrendering', - 'label-message' => 'tog-showtoc', - ); + if( $wgAllowUserCssPrefs ){ + $defaultPreferences['highlightbroken'] = + array( + 'type' => 'toggle', + 'section' => 'rendering/advancedrendering', + 'label' => wfMsg( 'tog-highlightbroken' ), // Raw HTML + ); + $defaultPreferences['showtoc'] = + array( + 'type' => 'toggle', + 'section' => 'rendering/advancedrendering', + 'label-message' => 'tog-showtoc', + ); + } $defaultPreferences['nocache'] = array( 'type' => 'toggle', @@ -649,12 +654,14 @@ class Preferences { 'section' => 'rendering/advancedrendering', 'label-message' => 'tog-showjumplinks', ); - $defaultPreferences['justify'] = - array( - 'type' => 'toggle', - 'section' => 'rendering/advancedrendering', - 'label-message' => 'tog-justify', - ); + if( $wgAllowUserCssPrefs ){ + $defaultPreferences['justify'] = + array( + 'type' => 'toggle', + 'section' => 'rendering/advancedrendering', + 'label-message' => 'tog-justify', + ); + } $defaultPreferences['numberheadings'] = array( 'type' => 'toggle', @@ -664,7 +671,7 @@ class Preferences { } static function editingPreferences( $user, &$defaultPreferences ) { - global $wgUseExternalEditor, $wgLivePreview; + global $wgUseExternalEditor, $wgLivePreview, $wgAllowUserCssPrefs; ## Editing ##################################### $defaultPreferences['cols'] = @@ -683,19 +690,20 @@ class Preferences { 'min' => 4, 'max' => 1000, ); - - $defaultPreferences['editfont'] = - array( - 'type' => 'select', - 'section' => 'editing/advancedediting', - 'label-message' => 'editfont-style', - 'options' => array( - wfMsg( 'editfont-default' ) => 'default', - wfMsg( 'editfont-monospace' ) => 'monospace', - wfMsg( 'editfont-sansserif' ) => 'sans-serif', - wfMsg( 'editfont-serif' ) => 'serif', - ) - ); + if( $wgAllowUserCssPrefs ){ + $defaultPreferences['editfont'] = + array( + 'type' => 'select', + 'section' => 'editing/advancedediting', + 'label-message' => 'editfont-style', + 'options' => array( + wfMsg( 'editfont-default' ) => 'default', + wfMsg( 'editfont-monospace' ) => 'monospace', + wfMsg( 'editfont-sansserif' ) => 'sans-serif', + wfMsg( 'editfont-serif' ) => 'serif', + ) + ); + } $defaultPreferences['previewontop'] = array( 'type' => 'toggle', @@ -708,12 +716,14 @@ class Preferences { 'section' => 'editing/advancedediting', 'label-message' => 'tog-previewonfirst', ); - $defaultPreferences['editsection'] = - array( - 'type' => 'toggle', - 'section' => 'editing/advancedediting', - 'label-message' => 'tog-editsection', - ); + if( $wgAllowUserCssPrefs ){ + $defaultPreferences['editsection'] = + array( + 'type' => 'toggle', + 'section' => 'editing/advancedediting', + 'label-message' => 'tog-editsection', + ); + } $defaultPreferences['editsectiononrightclick'] = array( 'type' => 'toggle', @@ -1116,7 +1126,7 @@ class Preferences { $ret = array(); foreach ( $wgImageLimits as $index => $limits ) { - $display = "{$limits[0]}×{$limits[1]}" . wfMsg( 'unit-pixel' ); + $display = "{$limits[0]}×{$limits[1]}" . wfMsg( 'unit-pixel' ); $ret[$display] = $index; } diff --git a/includes/Skin.php b/includes/Skin.php index 8e231804b6..3244573f73 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -548,6 +548,7 @@ class Skin extends Linker { /** * Split for easier subclassing in SkinSimple, SkinStandard and SkinCologneBlue + * Anything in here won't be generated if $wgAllowUserCssPrefs is false. */ protected function reallyGenerateUserStylesheet() { global $wgUser; @@ -629,18 +630,21 @@ CSS; $out->addStyle( self::makeNSUrl( $this->getSkinName() . '.css', $query, NS_MEDIAWIKI ) ); } - if( $wgUser->isLoggedIn() ) { - // Ensure that logged-in users' generated CSS isn't clobbered - // by anons' publicly cacheable generated CSS. - $siteargs['smaxage'] = '0'; - $siteargs['ts'] = $wgUser->mTouched; - } - // Per-user styles based on preferences - $siteargs['gen'] = 'css'; - if( ( $us = $wgRequest->getVal( 'useskin', '' ) ) !== '' ) { - $siteargs['useskin'] = $us; + global $wgAllowUserCssPrefs; + if( $wgAllowUserCssPrefs ){ + if( $wgUser->isLoggedIn() ) { + // Ensure that logged-in users' generated CSS isn't clobbered + // by anons' publicly cacheable generated CSS. + $siteargs['smaxage'] = '0'; + $siteargs['ts'] = $wgUser->mTouched; + } + // Per-user styles based on preferences + $siteargs['gen'] = 'css'; + if( ( $us = $wgRequest->getVal( 'useskin', '' ) ) !== '' ) { + $siteargs['useskin'] = $us; + } + $out->addStyle( self::makeUrl( '-', wfArrayToCGI( $siteargs ) ) ); } - $out->addStyle( self::makeUrl( '-', wfArrayToCGI( $siteargs ) ) ); // Per-user custom style pages if( $wgAllowUserCss && $wgUser->isLoggedIn() ) { diff --git a/skins/monobook/main.css b/skins/monobook/main.css index 727355bb77..fedfca8eb5 100644 --- a/skins/monobook/main.css +++ b/skins/monobook/main.css @@ -86,7 +86,7 @@ a.stub { color: #772233; } a.new, #p-personal a.new { - color: #ba0000; + color: #cc2200; } a.new:visited, #p-personal a.new:visited { color: #a55858; -- 2.20.1