diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2007-05-16 20:58:53 +0000 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2007-05-16 20:58:53 +0000 |
commit | cecb985bee3bdd252e1b8dc0bd500b37cd52be01 (patch) | |
tree | 17266aa237742640aabee7856f0202317a45d540 /includes/OutputPage.php | |
parent | 0bac06c301f2a83edb0236e4c2434da16848d549 (diff) |
Aktualisierung auf MediaWiki 1.10.0
Plugins angepasst und verbessert
kleine Korrekturen am Design
Diffstat (limited to 'includes/OutputPage.php')
-rw-r--r-- | includes/OutputPage.php | 122 |
1 files changed, 79 insertions, 43 deletions
diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 6d3cc0ac..03e832a4 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -2,12 +2,10 @@ if ( ! defined( 'MEDIAWIKI' ) ) die( 1 ); /** - * @package MediaWiki */ /** * @todo document - * @package MediaWiki */ class OutputPage { var $mMetatags, $mKeywords; @@ -34,7 +32,7 @@ class OutputPage { * Constructor * Initialise private variables */ - function OutputPage() { + function __construct() { $this->mMetatags = $this->mKeywords = $this->mLinktags = array(); $this->mHTMLtitle = $this->mPagetitle = $this->mBodytext = $this->mRedirect = $this->mLastModified = @@ -49,6 +47,7 @@ class OutputPage { $this->mParserOptions = null; $this->mSquidMaxage = 0; $this->mScripts = ''; + $this->mHeadItems = array(); $this->mETag = false; $this->mRevisionId = null; $this->mNewSectionLink = false; @@ -71,7 +70,7 @@ class OutputPage { # To add an http-equiv meta tag, precede the name with "http:" function addMeta( $name, $val ) { array_push( $this->mMetatags, array( $name, $val ) ); } function addKeyword( $text ) { array_push( $this->mKeywords, $text ); } - function addScript( $script ) { $this->mScripts .= $script; } + function addScript( $script ) { $this->mScripts .= "\t\t".$script; } /** * Add a self-contained script tag with the given contents @@ -79,10 +78,24 @@ class OutputPage { */ function addInlineScript( $script ) { global $wgJsMimeType; - $this->mScripts .= "<script type=\"$wgJsMimeType\"><!--\n$script\n--></script>"; + $this->mScripts .= "<script type=\"$wgJsMimeType\">/*<![CDATA[*/\n$script\n/*]]>*/</script>"; } - function getScript() { return $this->mScripts; } + function getScript() { + return $this->mScripts . $this->getHeadItems(); + } + + function getHeadItems() { + $s = ''; + foreach ( $this->mHeadItems as $item ) { + $s .= $item; + } + return $s; + } + + function addHeadItem( $name, $value ) { + $this->mHeadItems[$name] = $value; + } function setETag($tag) { $this->mETag = $tag; } function setArticleBodyOnly($only) { $this->mArticleBodyOnly = $only; } @@ -254,7 +267,7 @@ class OutputPage { $lb->setArray( $arr ); $lb->execute(); - $sk =& $wgUser->getSkin(); + $sk = $wgUser->getSkin(); foreach ( $categories as $category => $unused ) { $title = Title::makeTitleSafe( NS_CATEGORY, $category ); $text = $wgContLang->convertHtml( $title->getText() ); @@ -315,14 +328,26 @@ class OutputPage { $this->addWikiTextTitle($text, $title, $linestart); } - private function addWikiTextTitle($text, &$title, $linestart) { + function addWikiTextTitleTidy($text, &$title, $linestart = true) { + $this->addWikiTextTitle( $text, $title, $linestart, true ); + } + + public function addWikiTextTitle($text, &$title, $linestart, $tidy = false) { global $wgParser; + $fname = 'OutputPage:addWikiTextTitle'; wfProfileIn($fname); + wfIncrStats('pcache_not_possible'); - $parserOutput = $wgParser->parse( $text, $title, $this->parserOptions(), + + $popts = $this->parserOptions(); + $popts->setTidy($tidy); + + $parserOutput = $wgParser->parse( $text, $title, $popts, $linestart, true, $this->mRevisionId ); + $this->addParserOutput( $parserOutput ); + wfProfileOut($fname); } @@ -345,6 +370,7 @@ class OutputPage { $this->mSubtitle .= $parserOutput->mSubtitle ; } $this->mNoGallery = $parserOutput->getNoGallery(); + $this->mHeadItems = array_merge( $this->mHeadItems, (array)$parserOutput->mHeadItems ); wfRunHooks( 'OutputPageParserOutput', array( &$this, $parserOutput ) ); } @@ -366,6 +392,7 @@ class OutputPage { * @param string $text * @param Article $article * @param bool $cache + * @deprecated Use Article::outputWikitext */ public function addPrimaryWikiText( $text, $article, $cache = true ) { global $wgParser, $wgUser; @@ -384,17 +411,19 @@ class OutputPage { } /** - * For anything that isn't primary text or interface message - * - * @param string $text - * @param bool $linestart Is this the start of a line? + * @deprecated use addWikiTextTidy() */ public function addSecondaryWikiText( $text, $linestart = true ) { global $wgTitle; - $popts = $this->parserOptions(); - $popts->setTidy(true); - $this->addWikiTextTitle($text, $wgTitle, $linestart); - $popts->setTidy(false); + $this->addWikiTextTitleTidy($text, $wgTitle, $linestart); + } + + /** + * Add wikitext with tidy enabled + */ + public function addWikiTextTidy( $text, $linestart = true ) { + global $wgTitle; + $this->addWikiTextTitleTidy($text, $wgTitle, $linestart); } @@ -476,7 +505,7 @@ class OutputPage { # maintain different caches for logged-in users and non-logged in ones $wgRequest->response()->header( 'Vary: Accept-Encoding, Cookie' ); if( !$this->uncacheableBecauseRequestvars() && $this->mEnableClientCache ) { - if( $wgUseSquid && ! isset( $_COOKIE[ini_get( 'session.name') ] ) && + if( $wgUseSquid && session_id() == '' && ! $this->isPrintable() && $this->mSquidMaxage != 0 ) { if ( $wgUseESI ) { @@ -536,13 +565,16 @@ class OutputPage { if ( $wgUseAjax ) { $this->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$wgStylePath}/common/ajax.js?$wgStyleVersion\"></script>\n" ); + + wfRunHooks( 'AjaxAddScript', array( &$this ) ); + if( $wgAjaxSearch ) { - $this->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$wgStylePath}/common/ajaxsearch.js\"></script>\n" ); + $this->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$wgStylePath}/common/ajaxsearch.js?$wgStyleVersion\"></script>\n" ); $this->addScript( "<script type=\"{$wgJsMimeType}\">hookEvent(\"load\", sajax_onload);</script>\n" ); } if( $wgAjaxWatch && $wgUser->isLoggedIn() ) { - $this->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$wgStylePath}/common/ajaxwatch.js\"></script>\n" ); + $this->addScript( "<script type=\"{$wgJsMimeType}\" src=\"{$wgStylePath}/common/ajaxwatch.js?$wgStyleVersion\"></script>\n" ); } } @@ -750,7 +782,7 @@ class OutputPage { $this->returnToMain( false ); } - /** @obsolete */ + /** @deprecated */ public function errorpage( $title, $msg ) { throw new ErrorPageError( $title, $msg ); } @@ -792,10 +824,10 @@ class OutputPage { $groupName = User::getGroupName( $key ); $groupPage = User::getGroupPage( $key ); if( $groupPage ) { - $skin =& $wgUser->getSkin(); - $groups[] = '"'.$skin->makeLinkObj( $groupPage, $groupName ).'"'; + $skin = $wgUser->getSkin(); + $groups[] = $skin->makeLinkObj( $groupPage, $groupName ); } else { - $groups[] = '"'.$groupName.'"'; + $groups[] = $groupName; } } } @@ -860,7 +892,7 @@ class OutputPage { $this->returnToMain( true, $mainPage ); } - /** @obsolete */ + /** @deprecated */ public function databaseError( $fname, $sql, $error, $errno ) { throw new MWException( "OutputPage::databaseError is obsolete\n" ); } @@ -881,10 +913,22 @@ class OutputPage { $this->setPageTitle( wfMsg( 'viewsource' ) ); $this->setSubtitle( wfMsg( 'viewsourcefor', $skin->makeKnownLinkObj( $wgTitle ) ) ); + list( $cascadeSources, $restrictions ) = $wgTitle->getCascadeProtectionSources(); + # Determine if protection is due to the page being a system message # and show an appropriate explanation - if( $wgTitle->getNamespace() == NS_MEDIAWIKI && !$wgUser->isAllowed( 'editinterface' ) ) { + if( $wgTitle->getNamespace() == NS_MEDIAWIKI ) { $this->addWikiText( wfMsg( 'protectedinterface' ) ); + } if ( $cascadeSources && count($cascadeSources) > 0 ) { + $titles = ''; + + foreach ( $cascadeSources as $title ) { + $titles .= '* [[:' . $title->getPrefixedText() . "]]\n"; + } + + $notice = wfMsgExt( 'cascadeprotected', array('parsemag'), count($cascadeSources) ) . "\n$titles"; + + $this->addWikiText( $notice ); } else { $this->addWikiText( wfMsg( 'protectedpagetext' ) ); } @@ -900,17 +944,8 @@ class OutputPage { if( is_string( $source ) ) { $this->addWikiText( wfMsg( 'viewsourcetext' ) ); - if( $source === '' ) { - global $wgTitle; - if ( $wgTitle->getNamespace() == NS_MEDIAWIKI ) { - $source = wfMsgWeirdKey ( $wgTitle->getText() ); - } else { - $source = ''; - } - } $rows = $wgUser->getIntOption( 'rows' ); $cols = $wgUser->getIntOption( 'cols' ); - $text = "\n<textarea name='wpTextbox1' id='wpTextbox1' cols='$cols' rows='$rows' readonly='readonly'>" . htmlspecialchars( $source ) . "\n</textarea>"; $this->addHTML( $text ); @@ -921,32 +956,32 @@ class OutputPage { $this->returnToMain( false ); } - /** @obsolete */ + /** @deprecated */ public function fatalError( $message ) { throw new FatalError( $message ); } - /** @obsolete */ + /** @deprecated */ public function unexpectedValueError( $name, $val ) { throw new FatalError( wfMsg( 'unexpected', $name, $val ) ); } - /** @obsolete */ + /** @deprecated */ public function fileCopyError( $old, $new ) { throw new FatalError( wfMsg( 'filecopyerror', $old, $new ) ); } - /** @obsolete */ + /** @deprecated */ public function fileRenameError( $old, $new ) { throw new FatalError( wfMsg( 'filerenameerror', $old, $new ) ); } - /** @obsolete */ + /** @deprecated */ public function fileDeleteError( $name ) { throw new FatalError( wfMsg( 'filedeleteerror', $name ) ); } - /** @obsolete */ + /** @deprecated */ public function fileNotFoundError( $name ) { throw new FatalError( wfMsg( 'filenotfound', $name ) ); } @@ -1082,6 +1117,7 @@ class OutputPage { $ret .= $sk->getHeadScripts(); $ret .= $this->mScripts; $ret .= $sk->getUserStyles(); + $ret .= $this->getHeadItems(); if ($wgUseTrackbacks && $this->isArticleRelated()) $ret .= $wgTitle->trackbackRDF(); @@ -1118,11 +1154,11 @@ class OutputPage { "/<.*?>/" => '', "/_/" => ' ' ); - $ret .= "<meta name=\"keywords\" content=\"" . + $ret .= "\t\t<meta name=\"keywords\" content=\"" . htmlspecialchars(preg_replace(array_keys($strip), array_values($strip),implode( ",", $this->mKeywords ))) . "\" />\n"; } foreach ( $this->mLinktags as $tag ) { - $ret .= '<link'; + $ret .= "\t\t<link"; foreach( $tag as $attr => $val ) { $ret .= " $attr=\"" . htmlspecialchars( $val ) . "\""; } |