Let administrators disable extra hits for user CSS and Javascript pages,
authorEvan Prodromou <evanprodromou@users.mediawiki.org>
Sat, 13 Nov 2004 00:07:35 +0000 (00:07 +0000)
committerEvan Prodromou <evanprodromou@users.mediawiki.org>
Sat, 13 Nov 2004 00:07:35 +0000 (00:07 +0000)
and for site-wide CSS and Javascript settings. Can save 4 dynamic Web
hits (modulo caching) by turning off these features.

includes/DefaultSettings.php
includes/SkinPHPTal.php
skins/Amethyst.pt
skins/Chick.pt
skins/MonoBook.pt
skins/WikimediaWiki.pt

index 6d89f1f..afabae9 100644 (file)
@@ -721,6 +721,12 @@ $wgAllowUserJs = true;
 # Allow user Cascading Style Sheets (CSS)?
 $wgAllowUserCss = true;
 
+# Use the site's Javascript page?
+$wgUseSiteJs = true;
+
+# Use the site's Cascading Style Sheets (CSS)?
+$wgUseSiteCss = true;
+       
 # Filter for Special:Randompage. Part of a WHERE clause
 $wgExtraRandompageSQL = false;
 
index 82f2dbd..110707c 100644 (file)
@@ -159,8 +159,8 @@ class SkinPHPTal extends Skin {
                $this->userpageUrlDetails = $this->makeUrlDetails($this->userpage);
 
                $this->usercss =  $this->userjs = $this->userjsprev = false;
-               $this->setupUserCssJs();
-
+               $this->setupUserCss();
+               $this->setupUserJs();
                $this->titletxt = $wgTitle->getPrefixedText();
 
                $tpl->set( 'title', $wgOut->getPageTitle() );
@@ -223,10 +223,15 @@ class SkinPHPTal extends Skin {
                $tpl->setRef( 'usercss', $this->usercss);
                $tpl->setRef( 'userjs', $this->userjs);
                $tpl->setRef( 'userjsprev', $this->userjsprev);
-               if($this->loggedin) {
-                       $tpl->set( 'jsvarurl', $this->makeUrl('-','action=raw&smaxage=0&gen=js') );
+               global $wgUseSiteJs;
+               if ($wgUseSiteJs) {
+                       if($this->loggedin) {
+                               $tpl->set( 'jsvarurl', $this->makeUrl('-','action=raw&smaxage=0&gen=js') );
+                       } else {
+                               $tpl->set( 'jsvarurl', $this->makeUrl('-','action=raw&gen=js') );
+                       }
                } else {
-                       $tpl->set( 'jsvarurl', $this->makeUrl('-','action=raw&gen=js') );
+                       $tpl->set('jsvarurl', false);
                }
                if( $wgUser->getNewtalk() ) {
                        $usertitle = Title::newFromText( $this->userpage );
@@ -670,40 +675,63 @@ class SkinPHPTal extends Skin {
                }
        }
        
-
        /**
         * @access private
         */
-       function setupUserCssJs () {
-               global $wgRequest, $wgTitle;
-               $action = $wgRequest->getText('action');
-               # generated css
-               $this->usercss = '@import "'.$this->makeUrl('-','action=raw&gen=css').'";'."\n";
+       
+       function setupUserCss () {
+               
+               global $wgRequest, $wgTitle, $wgAllowUserCss, $wgUseSiteCss;
+
+               $sitecss = "";
+               $usercss = "";
+               $siteargs = "";
 
-               if( $this->loggedin ) {
+               # Add user-specific code if this is a user and we allow that kind of thing
+               
+               if ( $wgAllowUserCss && $this->loggedin ) {
+                       $action = $wgRequest->getText('action');
+                       
+                       # if we're previewing the CSS page, use it
                        if($wgTitle->isCssSubpage() and $action == 'submit' and  $wgTitle->userCanEditCssJsSubpage()) {
-                               # generated css
-                               $this->usercss = '@import "'.$this->makeUrl('-','action=raw&smaxage=0&maxage=0&gen=css').'";'."\n";
-                               // css preview
-                               $this->usercss .= $wgRequest->getText('wpTextbox1');
+                               $siteargs .= "&smaxage=0&maxage=0";
+                               $usercss = $wgRequest->getText('wpTextbox1');
                        } else {
-                               # generated css
-                               $this->usercss .= '@import "'.$this->makeUrl('-','action=raw&smaxage=0&gen=css').'";'."\n";
-                               # import user stylesheet
-                               $this->usercss .= '@import "'.
-                               $this->makeUrl($this->userpage.'/'.$this->skinname.'.css', 'action=raw&ctype=text/css').'";'."\n";
+                               $siteargs .= "&maxage=0";
+                               $usercss = '@import "' .
+                                 $this->makeUrl($this->userpage . '/'.$this->skinname.'.css',
+                                                                'action=raw&ctype=text/css') . '";' ."\n";
                        }
+               }
+
+               # If we use the site's dynamic CSS, throw that in, too
+               
+               if ( $wgUseSiteCss ) {
+                       $sitecss = '@import "'.$this->makeUrl('-','action=raw&gen=css' . $siteargs).'";'."\n";
+               }
+               
+               # If we use any dynamic CSS, make a little CDATA block out of it.
+               
+               if ( !empty($sitecss) || !empty($usercss) ) {
+                       $this->usercss = '/*<![CDATA[*/ ' . $sitecss . ' ' . $usercss . ' /*]]>*/';
+               }
+       }
+
+       /**
+        * @access private
+        */
+       function setupUserJs () {
+               global $wgRequest, $wgTitle, $wgAllowUserJs;
+               $action = $wgRequest->getText('action');
+
+               if( $wgAllowUserJs && $this->loggedin ) {
                        if($wgTitle->isJsSubpage() and $action == 'submit' and  $wgTitle->userCanEditCssJsSubpage()) {
                                # XXX: additional security check/prompt?
-                               $this->userjsprev = $wgRequest->getText('wpTextbox1');
+                               $this->userjsprev = '/*<![CDATA[*/ ' . $wgRequest->getText('wpTextbox1') . ' /*]]>*/';
                        } else {
                                $this->userjs = $this->makeUrl($this->userpage.'/'.$this->skinname.'.js', 'action=raw&ctype=text/javascript&dontcountme=s');
                        }
                }
-               $this->usercss = '/*<![CDATA[*/ ' . $this->usercss . ' /*]]>*/';
-               if( $this->userjsprev ) {
-                       $this->userjsprev = '/*<![CDATA[*/ ' . $this->userjsprev . ' /*]]>*/';
-               }
        }
        
        /**
index f77b7db..1cf115c 100644 (file)
@@ -9,7 +9,7 @@
     <!--[if IE]><style type="text/css" media="all">@import "${stylepath}/${stylename}/IEFixes.css";</style>
     <script type="text/javascript" src="${stylepath}/common/IEFixes.js"></script>
     <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-    <script type="text/javascript" tal:attributes="src jsvarurl"></script>
+    <script tal:condition="jsvarurl" type="text/javascript" tal:attributes="src jsvarurl"></script>
     <script type="text/javascript" src="${stylepath}/common/wikibits.js"></script>
     <style tal:condition="usercss" type="text/css">/*<![CDATA[*/ ${usercss} /*]]>*/</style>
     <script tal:condition="userjs" type="text/javascript" tal:attributes="src userjs"></script><script 
index 061fe70..f6d7092 100644 (file)
@@ -5,7 +5,7 @@
     <div tal:replace="structure headlinks"></div>
     <title tal:content="pagetitle">Exciting xhtml slimfast</title>
     <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "${stylepath}/${stylename}/main.css"; /*]]>*/</style>
-    <script type="text/javascript" tal:attributes="src jsvarurl"></script>
+    <script tal:condition="jsvarurl" type="text/javascript" tal:attributes="src jsvarurl"></script>
     <script type="text/javascript" src="${stylepath}/common/wikibits.js"></script>
     <style tal:condition="usercss" tal:content="structure usercss" type="text/css"></style>
     <script tal:condition="userjs" type="text/javascript" tal:attributes="src userjs"></script><script 
index 329264f..2614b01 100644 (file)
@@ -9,7 +9,7 @@
     <!--[if IE]><style type="text/css" media="all">@import "${stylepath}/${stylename}/IEFixes.css";</style>
     <script type="text/javascript" src="${stylepath}/common/IEFixes.js"></script>
     <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-    <script type="text/javascript" tal:attributes="src jsvarurl"></script>
+    <script tal:condition="jsvarurl" type="text/javascript" tal:attributes="src jsvarurl"></script>
     <script type="text/javascript" src="${stylepath}/common/wikibits.js"></script>
     <style tal:condition="usercss" tal:content="structure usercss" type="text/css"></style>
     <script tal:condition="userjs" type="text/javascript" tal:attributes="src userjs"></script><script 
index 681b5c7..412ad8f 100644 (file)
@@ -9,7 +9,7 @@
     <!--[if IE]><style type="text/css" media="all">@import "${stylepath}/${stylename}/common/IEFixes.css";</style>
     <script type="text/javascript" src="${stylepath}/IEFixes.js"></script>
     <meta http-equiv="imagetoolbar" content="no" /><![endif]-->
-    <script type="text/javascript" tal:attributes="src jsvarurl"></script>
+    <script tal:condition="jsvarurl" type="text/javascript" tal:attributes="src jsvarurl"></script>
     <script type="text/javascript" src="${stylepath}/common/wikibits.js"></script>
     <style tal:condition="usercss" type="text/css">/*<![CDATA[*/ ${usercss} /*]]>*/</style>
     <script tal:condition="userjs" type="text/javascript" tal:attributes="src userjs"></script><script