API: added query parameter indexpageids to list the page ids of all returned page...
[lhc/web/wiklou.git] / includes / OutputPage.php
index 18a5be4..458907f 100644 (file)
@@ -15,6 +15,7 @@ class OutputPage {
        var $mLastModified, $mETag, $mCategoryLinks;
        var $mScripts, $mLinkColours, $mPageLinkTitle;
 
+       var $mAllowUserJs;
        var $mSuppressQuickbar;
        var $mOnloadHandler;
        var $mDoNothing;
@@ -33,6 +34,8 @@ class OutputPage {
         * Initialise private variables
         */
        function __construct() {
+               global $wgAllowUserJs;
+               $this->mAllowUserJs = $wgAllowUserJs;
                $this->mMetatags = $this->mKeywords = $this->mLinktags = array();
                $this->mHTMLtitle = $this->mPagetitle = $this->mBodytext =
                $this->mRedirect = $this->mLastModified =
@@ -71,6 +74,13 @@ class OutputPage {
        function addMeta( $name, $val ) { array_push( $this->mMetatags, array( $name, $val ) ); }
        function addKeyword( $text ) { array_push( $this->mKeywords, $text ); }
        function addScript( $script ) { $this->mScripts .= "\t\t".$script; }
+       function addStyle( $style ) {
+               global $wgStylePath, $wgStyleVersion;
+               $this->addLink(
+                               array(
+                                       'rel' => 'stylesheet',
+                                       'href' => $wgStylePath . '/' . $style . '?' . $wgStyleVersion ) );
+       }
 
        /**
         * Add a self-contained script tag with the given contents
@@ -283,6 +293,9 @@ class OutputPage {
        public function suppressQuickbar() { $this->mSuppressQuickbar = true; }
        public function isQuickbarSuppressed() { return $this->mSuppressQuickbar; }
 
+       public function disallowUserJs() { $this->mAllowUserJs = false; }
+       public function isUserJsAllowed() { return $this->mAllowUserJs; }
+
        public function addHTML( $text ) { $this->mBodytext .= $text; }
        public function clearHTML() { $this->mBodytext = ''; }
        public function getHTML() { return $this->mBodytext; }
@@ -783,13 +796,13 @@ class OutputPage {
        }
 
        /**
-        * Outputs a pretty page to explain why the request exploded.
+        * Output a standard error page
         *
-        * @param string $title Message key for page title.
-        * @param string $msg   Message key for page text.
-        * @return nothing
+        * @param string $title Message key for page title
+        * @param string $msg Message key for page text
+        * @param array $params Message parameters
         */
-       public function showErrorPage( $title, $msg ) {
+       public function showErrorPage( $title, $msg, $params = array() ) {
                global $wgTitle;
 
                $this->mDebugtext .= 'Original title: ' .
@@ -800,9 +813,12 @@ class OutputPage {
                $this->setArticleRelated( false );
                $this->enableClientCache( false );
                $this->mRedirect = '';
-
                $this->mBodytext = '';
-               $this->addWikiText( wfMsg( $msg ) );
+               
+               array_unshift( $params, $msg );
+               $message = call_user_func_array( 'wfMsg', $params );
+               $this->addWikiText( $message );
+               
                $this->returnToMain( false );
        }
 
@@ -937,7 +953,7 @@ class OutputPage {
                        $this->setPageTitle( wfMsg( 'viewsource' ) );
                        $this->setSubtitle( wfMsg( 'viewsourcefor', $skin->makeKnownLinkObj( $wgTitle ) ) );
 
-                       list( $cascadeSources, $restrictions ) = $wgTitle->getCascadeProtectionSources();
+                       list( $cascadeSources, /* $restrictions */ ) = $wgTitle->getCascadeProtectionSources();
 
                        # Determine if protection is due to the page being a system message
                        # and show an appropriate explanation
@@ -1138,7 +1154,7 @@ class OutputPage {
                $ret .= "<link rel='stylesheet' type='text/css' $media href='$printsheet' />\n";
 
                $sk = $wgUser->getSkin();
-               $ret .= $sk->getHeadScripts();
+               $ret .= $sk->getHeadScripts( $this->mAllowUserJs );
                $ret .= $this->mScripts;
                $ret .= $sk->getUserStyles();
                $ret .= $this->getHeadItems();
@@ -1220,5 +1236,21 @@ class OutputPage {
        public function showNewSectionLink() {
                return $this->mNewSectionLink;
        }
+       
+       /**
+        * Show a warning about slave lag
+        *
+        * If the lag is higher than 30 seconds, then the warning is
+        * a bit more obvious
+        *
+        * @param int $lag Slave lag
+        */
+       public function showLagWarning( $lag ) {
+               $message = $lag >= 30 ? 'lag-warn-high' : 'lag-warn-normal';
+               $warning = wfMsgHtml( $message, htmlspecialchars( $lag ) );
+               $this->addHtml( "<div class=\"mw-{$message}\">\n{$warning}\n</div>\n" );
+       }
+       
 }
-?>
+
+?>
\ No newline at end of file