diff options
author | River Tarnell <kateturner@users.mediawiki.org> | 2005-07-03 04:00:33 +0000 |
---|---|---|
committer | River Tarnell <kateturner@users.mediawiki.org> | 2005-07-03 04:00:33 +0000 |
commit | e4a87e105aa20858d5edd07dee20ea8cad5643dc (patch) | |
tree | aa40c2d37864d16a9e599e4a183a9a2823cdebbf | |
parent | 3791c6e5e013b16ae1096a64985727134f80ab04 (diff) | |
download | mediawikicore-e4a87e105aa20858d5edd07dee20ea8cad5643dc.tar.gz mediawikicore-e4a87e105aa20858d5edd07dee20ea8cad5643dc.zip |
implement "action=render"
Notes
Notes:
http://mediawiki.org/wiki/Special:Code/MediaWiki/9849
-rw-r--r-- | includes/Article.php | 15 | ||||
-rw-r--r-- | includes/OutputPage.php | 12 | ||||
-rw-r--r-- | includes/Setup.php | 18 | ||||
-rw-r--r-- | includes/Skin.php | 28 | ||||
-rw-r--r-- | includes/SkinTemplate.php | 92 | ||||
-rw-r--r-- | index.php | 19 | ||||
-rwxr-xr-x | maintenance/mcc.php | 1 |
7 files changed, 101 insertions, 84 deletions
diff --git a/includes/Article.php b/includes/Article.php index a35d535c1b25..5d239e13c316 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -93,7 +93,7 @@ class Article { if ( 0 == $this->getID() ) { if ( 'edit' == $action ) { - wfProfileOut( $fname ); + wfProfileOut( $fname ); # Should we put something in the textarea? # if &preload=Pagename is set, we try to get # the revision text and put it in. @@ -109,12 +109,12 @@ class Article { # Don't preload anything. # We used to put MediaWiki:Newarticletext here. # This is now shown above the edit box instead. - return ''; + return ''; } wfProfileOut( $fname ); - + return wfMsg( 'noarticletext' ); - } else { + } else { $this->loadContent( $noredir ); # check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page if ( $this->mTitle->getNamespace() == NS_USER_TALK && @@ -833,6 +833,13 @@ class Article { wfProfileOut( $fname ); } + function render() { + global $wgOut; + + $wgOut->setArticleBodyOnly(true); + $this->view(); + } + /** * Insert a new empty page record for this article. * This *must* be followed up by creating a revision diff --git a/includes/OutputPage.php b/includes/OutputPage.php index e079edb1fa21..f58fde9f0698 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -32,6 +32,7 @@ class OutputPage { var $mParserOptions; var $mShowFeedLinks = false; var $mEnableClientCache = true; + var $mArticleBodyOnly = false; /** * Constructor @@ -67,6 +68,7 @@ class OutputPage { function getScript() { return $this->mScripts; } function setETag($tag) { $this->mETag = $tag; } + function setArticleBodyOnly($only) { $this->mArticleBodyOnly = $only; } function addLink( $linkarr ) { # $linkarr should be an associative array of attributes. We'll escape on output. @@ -447,9 +449,13 @@ class OutputPage { setcookie( $name, $val, $exp, '/' ); } - wfProfileIn( 'Output-skin' ); - $sk->outputPage( $this ); - wfProfileOut( 'Output-skin' ); + if ($this->mArticleBodyOnly) { + $this->out($this->mBodytext); + } else { + wfProfileIn( 'Output-skin' ); + $sk->outputPage( $this ); + wfProfileOut( 'Output-skin' ); + } $this->sendCacheControl(); ob_end_flush(); diff --git a/includes/Setup.php b/includes/Setup.php index ecbd474b5bf3..1b31c1881be6 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -51,7 +51,7 @@ wfProfileIn( $fname.'-includes' ); require_once( 'GlobalFunctions.php' ); require_once( 'Hooks.php' ); require_once( 'Namespace.php' ); -require_once( 'RecentChange.php' ); +require_once( 'RecentChange.php' ); require_once( 'User.php' ); require_once( 'Skin.php' ); require_once( 'OutputPage.php' ); @@ -110,8 +110,8 @@ $wgMemc =& wfGetMainCache(); $messageMemc =& wfGetMessageCacheStorage(); $parserMemc =& wfGetParserCacheStorage(); -wfDebug( 'Main cache: ' . get_class( $wgMemc ) . - "\nMessage cache: " . get_class( $messageMemc ) . +wfDebug( 'Main cache: ' . get_class( $wgMemc ) . + "\nMessage cache: " . get_class( $messageMemc ) . "\nParser cache: " . get_class( $parserMemc ) . "\n" ); wfProfileOut( $fname.'-memcached' ); @@ -134,7 +134,7 @@ wfProfileOut( $fname.'-SetupSession' ); wfProfileIn( $fname.'-database' ); if ( !$wgDBservers ) { - $wgDBservers = array(array( + $wgDBservers = array(array( 'host' => $wgDBserver, 'user' => $wgDBuser, 'password' => $wgDBpassword, @@ -188,7 +188,7 @@ wfProfileOut( $fname.'-language1' ); wfProfileIn( $fname.'-User' ); # Skin setup functions -# Entries can be added to this variable during the inclusion +# Entries can be added to this variable during the inclusion # of the extension file. Skins can then perform any necessary initialisation. foreach ( $wgSkinExtensionFunctions as $func ) { $func(); @@ -246,14 +246,14 @@ wfProfileOut( $fname.'-MessageCache' ); # SEARCH INDEX UPDATES, AND MANY MANY THINGS. # DO NOT USE THIS MODE EXCEPT FOR TESTING RIGHT NOW. # -# To disable it, the easiest thing could be to uncomment the +# To disable it, the easiest thing could be to uncomment the # following; they should effectively disable the UI switch functionality # # $wgLangClass = $wgContLangClass; # $wgLanguageCode = $wgContLanguageCode; # $wgLang = $wgContLang; # -# TODO: Need to change reference to $wgLang to $wgContLang at proper +# TODO: Need to change reference to $wgLang to $wgContLang at proper # places, including namespaces, dates in signatures, magic words, # and links # @@ -299,8 +299,8 @@ wfProfileOut( $fname.'-misc2' ); wfProfileIn( $fname.'-extensions' ); # Extension setup functions for extensions other than skins -# Entries should be added to this variable during the inclusion -# of the extension file. This allows the extension to perform +# Entries should be added to this variable during the inclusion +# of the extension file. This allows the extension to perform # any necessary initialisation in the fully initialised environment foreach ( $wgExtensionFunctions as $func ) { $func(); diff --git a/includes/Skin.php b/includes/Skin.php index 65b16d31dcdc..ad48e25210e3 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -147,6 +147,7 @@ class Skin extends Linker { wfProfileIn( 'Skin::outputPage' ); $this->initPage( $out ); + $out->out( $out->headElement() ); $out->out( "\n<body" ); @@ -159,6 +160,7 @@ class Skin extends Linker { $out->out( "<!-- Wiki debugging output:\n" . $out->mDebugtext . "-->\n" ); } + $out->out( $this->beforeContent() ); $out->out( $out->mBodytext . "\n" ); @@ -197,17 +199,17 @@ class Skin extends Linker { */ function userCanPreview( $action ) { global $wgTitle, $wgRequest, $wgUser; - + if( $action != 'submit' ) return false; if( !$wgRequest->wasPosted() ) return false; - if( !$wgTitle->userCanEditCssJsSubpage() ) + if( !$wgTitle->userCanEditCssJsSubpage() ) return false; return $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ); } - + # get the user/site-specific stylesheet, SkinPHPTal called from RawPage.php (settings are cached that way) function getUserStylesheet() { global $wgOut, $wgStylePath, $wgContLang, $wgUser, $wgRequest, $wgTitle, $wgAllowUserCss; @@ -258,7 +260,7 @@ class Skin extends Linker { return $s . $this->reallyDoGetUserStyles(); } - + function reallyDoGetUserStyles() { global $wgUser; $s = ''; @@ -406,7 +408,7 @@ END; return $s; } - + function getCategoryLinks () { global $wgOut, $wgTitle, $wgParser; global $wgUseCategoryMagic, $wgUseCategoryBrowser, $wgLang; @@ -926,7 +928,7 @@ END; } } } - + $go = wfMsg( 'go' ); $sp = wfMsg( 'specialpages' ); $spp = $wgContLang->specialPage( 'Specialpages' ); @@ -936,7 +938,7 @@ END; $s .= "<select name=\"wpDropdown\">\n"; $s .= "<option value=\"{$spp}\">{$sp}</option>\n"; - + foreach ( $a as $name => $desc ) { $p = $wgContLang->specialPage( $name ); $s .= "<option value=\"{$p}\">{$desc}</option>\n"; @@ -1097,7 +1099,7 @@ END; # 0 != $id->getEmailauthenticationtimestamp() && # .. which is authenticated # 1 != $wgUser->getOption('disablemail'); # and not disabled } - + function emailUserLink() { global $wgTitle; @@ -1235,13 +1237,13 @@ END; $title = Title::makeTitle( NS_SPECIAL, $name ); return $title->getLocalURL( $urlaction ); } - + /*static*/ function makeI18nUrl ( $name, $urlaction='' ) { $title = Title::newFromText( wfMsgForContent($name) ); $this->checkTitle($title, $name); return $title->getLocalURL( $urlaction ); } - + /*static*/ function makeUrl ( $name, $urlaction='' ) { $title = Title::newFromText( $name ); $this->checkTitle($title, $name); @@ -1290,11 +1292,11 @@ END; * * @return array * @access private - */ + */ function buildSidebar() { $fname = 'SkinTemplate::buildSidebar'; wfProfileIn( $fname ); - + $bar = array(); $lines = explode( "\n", wfMsgForContent( 'sidebar' ) ); foreach ($lines as $line) { @@ -1317,7 +1319,7 @@ END; } else { continue; } } } - + wfProfileOut( $fname ); return $bar; } diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php index 9aa3b874704a..20f017d44c40 100644 --- a/includes/SkinTemplate.php +++ b/includes/SkinTemplate.php @@ -23,7 +23,7 @@ * Todo: Needs some serious refactoring into functions that correspond * to the computations individual esi snippets need. Most importantly no body * parsing for most of those of course. - * + * * PHPTAL support has been moved to a subclass in SkinPHPTal.php, * and is optional. You'll need to install PHPTAL manually to use * skins that depend on it. @@ -57,10 +57,10 @@ class MediaWiki_I18N { function translate($value) { $fname = 'SkinTemplate-translate'; wfProfileIn( $fname ); - + // Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23 $value = preg_replace( '/^string:/', '', $value ); - + $value = wfMsg( $value ); // interpolate variables while (preg_match('/\$([0-9]*?)/sm', $value, $m)) { @@ -135,7 +135,7 @@ class SkinTemplate extends Skin { function &setupTemplate( $classname, $repository=false, $cache_dir=false ) { return new $classname(); } - + /** * initialize various variables and generate the template * @@ -152,7 +152,7 @@ class SkinTemplate extends Skin { $fname = 'SkinTemplate::outputPage'; wfProfileIn( $fname ); - + extract( $wgRequest->getValues( 'oldid', 'diff' ) ); wfProfileIn( "$fname-init" ); @@ -355,7 +355,7 @@ class SkinTemplate extends Skin { # Language links $language_urls = array(); - + if ( !$wgHideInterlanguageLinks ) { foreach( $wgOut->getLanguageLinks() as $l ) { $nt = Title::newFromText( $l ); @@ -395,12 +395,12 @@ class SkinTemplate extends Skin { wfProfileIn( "$fname-execute" ); $res = $tpl->execute(); wfProfileOut( "$fname-execute" ); - + // result may be an error $this->printOrError( $res ); wfProfileOut( $fname ); } - + /** * Output the string, or print error message if it's * an error object of the appropriate type. @@ -421,7 +421,7 @@ class SkinTemplate extends Skin { function buildPersonalUrls() { $fname = 'SkinTemplate::buildPersonalUrls'; wfProfileIn( $fname ); - + /* set up the default links for the personal toolbar */ global $wgShowIPinHeader; $personal_urls = array(); @@ -507,7 +507,7 @@ class SkinTemplate extends Skin { 'exists' => $title->getArticleID() != 0?true:false ); } - + function makeArticleUrlDetails( $name, $urlaction='' ) { $title = Title::newFromText( $name ); $title= $title->getSubjectPage(); @@ -517,7 +517,7 @@ class SkinTemplate extends Skin { 'exists' => $title->getArticleID() != 0?true:false ); } - + /** * an array of edit links by default used for the tabs * @return array @@ -527,7 +527,7 @@ class SkinTemplate extends Skin { global $wgContLang, $wgUseValidation, $wgDBprefix, $wgValidationForAnons; $fname = 'SkinTemplate::buildContentActionUrls'; wfProfileIn( $fname ); - + global $wgUser, $wgRequest; $action = $wgRequest->getText( 'action' ); $section = $wgRequest->getText( 'section' ); @@ -543,14 +543,14 @@ class SkinTemplate extends Skin { $nskey, !$this->mTitle->isTalkPage(), '', true); - + $content_actions['talk'] = $this->tabAction( $this->mTitle->getTalkPage(), 'talk', $this->mTitle->isTalkPage(), '', true); - + wfProfileIn( "$fname-edit" ); if ( $this->mTitle->userCanEdit() ) { $oid = ( $oldid && ! isset( $diff ) ) ? '&oldid='.IntVal( $oldid ) : false; @@ -651,7 +651,7 @@ class SkinTemplate extends Skin { } if( $wgUser->isLoggedIn() || $wgValidationForAnons ) { # and $action != 'submit' ) { - # Validate tab. TODO: add validation to logged-in user rights + # Validate tab. TODO: add validation to logged-in user rights if($wgUseValidation && ( $action == "" || $action=='view' ) ){ # && $wgUser->isAllowed('validate')){ if ( $oldid ) $oid = IntVal( $oldid ) ; # Use the oldid else @@ -710,7 +710,7 @@ class SkinTemplate extends Skin { wfProfileOut( $fname ); return $content_actions; } - + /** @@ -721,14 +721,14 @@ class SkinTemplate extends Skin { function buildNavUrls () { $fname = 'SkinTemplate::buildNavUrls'; wfProfileIn( $fname ); - + global $wgUser, $wgRequest; global $wgSiteSupportPage, $wgEnableUploads, $wgUploadNavigationUrl; $action = $wgRequest->getText( 'action' ); $oldid = $wgRequest->getVal( 'oldid' ); $diff = $wgRequest->getVal( 'diff' ); - + $nav_urls = array(); $nav_urls['mainpage'] = array('href' => $this->makeI18nUrl('mainpage')); $nav_urls['randompage'] = array('href' => $this->makeSpecialUrl('Random')); @@ -741,8 +741,8 @@ class SkinTemplate extends Skin { $nav_urls['help'] = array('href' => $this->makeI18nUrl('helppage')); if( $wgEnableUploads ) { if ($wgUploadNavigationUrl) { - $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl ); - } else { + $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl ); + } else { $nav_urls['upload'] = array('href' => $this->makeSpecialUrl('Upload')); } } else { @@ -750,7 +750,7 @@ class SkinTemplate extends Skin { } $nav_urls['specialpages'] = array('href' => $this->makeSpecialUrl('Specialpages')); - + // A print stylesheet is attached to all pages, but nobody ever // figures that out. :) Add a link... if( $this->iscontent && ($action == '' || $action == 'view' || $action == 'purge' ) ) { @@ -758,7 +758,7 @@ class SkinTemplate extends Skin { 'text' => wfMsg( 'printableversion' ), 'href' => $wgRequest->appendQuery( 'printable=yes' ) ); } - + if( $this->mTitle->getNamespace() != NS_SPECIAL) { $nav_urls['whatlinkshere'] = array( 'href' => $this->makeSpecialUrl("Whatlinkshere/$this->thispage") @@ -832,14 +832,14 @@ class SkinTemplate extends Skin { return 'nstab-main'; } } - + /** * @access private */ function setupUserCss() { $fname = 'SkinTemplate::setupUserCss'; wfProfileIn( $fname ); - + global $wgRequest, $wgAllowUserCss, $wgUseSiteCss, $wgContLang, $wgSquidMaxage, $wgStylePath, $wgUser; $sitecss = ''; @@ -847,10 +847,10 @@ class SkinTemplate extends Skin { $siteargs = '&maxage=' . $wgSquidMaxage; # 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( $this->mTitle->isCssSubpage() and $this->userCanPreview( $action ) ) { $siteargs = "&smaxage=0&maxage=0"; @@ -865,15 +865,15 @@ class SkinTemplate extends Skin { } if ($wgContLang->isRTL()) $sitecss .= '@import "' . $wgStylePath . '/' . $this->stylename . '/rtl.css";' . "\n"; - + # If we use the site's dynamic CSS, throw that in, too if ( $wgUseSiteCss ) { $sitecss .= '@import "' . $this->makeNSUrl(ucfirst($this->skinname) . '.css', 'action=raw&ctype=text/css&smaxage=' . $wgSquidMaxage, NS_MEDIAWIKI) . '";' . "\n"; $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[*/\n" . $sitecss . $usercss . '/*]]>*/'; } @@ -886,7 +886,7 @@ class SkinTemplate extends Skin { function setupUserJs() { $fname = 'SkinTemplate::setupUserJs'; wfProfileIn( $fname ); - + global $wgRequest, $wgAllowUserJs, $wgJsMimeType; $action = $wgRequest->getText('action'); @@ -900,7 +900,7 @@ class SkinTemplate extends Skin { } wfProfileOut( $fname ); } - + /** * returns css with user-specific options * @access public @@ -909,21 +909,21 @@ class SkinTemplate extends Skin { function getUserStylesheet() { $fname = 'SkinTemplate::getUserStylesheet'; wfProfileIn( $fname ); - + global $wgUser; $s = "/* generated user stylesheet */\n"; $s .= $this->reallyDoGetUserStyles(); wfProfileOut( $fname ); return $s; } - + /** * @access public */ function getUserJs() { $fname = 'SkinTemplate::getUserJs'; wfProfileIn( $fname ); - + global $wgStylePath; $s = '/* generated javascript */'; $s .= "var skin = '{$this->skinname}';\nvar stylepath = '{$wgStylePath}';"; @@ -936,7 +936,7 @@ class SkinTemplate extends Skin { if ('<'.$msgKey.'>' != $userJS) { $s .= $userJS; } - + wfProfileOut( $fname ); return $s; } @@ -956,28 +956,28 @@ class QuickTemplate { $this->data = array(); $this->translator = new MediaWiki_I18N(); } - + /** * @access public */ function set( $name, $value ) { $this->data[$name] = $value; } - + /** * @access public */ function setRef($name, &$value) { $this->data[$name] =& $value; } - + /** * @access public */ function setTranslator( &$t ) { $this->translator = &$t; } - + /** * @access public */ @@ -992,28 +992,28 @@ class QuickTemplate { function text( $str ) { echo htmlspecialchars( $this->data[$str] ); } - + /** * @access private */ function html( $str ) { echo $this->data[$str]; } - + /** * @access private */ function msg( $str ) { echo htmlspecialchars( $this->translator->translate( $str ) ); } - + /** * @access private */ function msgHtml( $str ) { echo $this->translator->translate( $str ); } - + /** * An ugly, ugly hack. * @access private @@ -1026,14 +1026,14 @@ class QuickTemplate { $wgOut->mParserOptions, true ); echo $parserOutput->getText(); } - + /** * @access private */ function haveData( $str ) { return $this->data[$str]; } - + /** * @access private */ @@ -1043,5 +1043,5 @@ class QuickTemplate { } } -} // end of if( defined( 'MEDIAWIKI' ) ) +} // end of if( defined( 'MEDIAWIKI' ) ) ?> diff --git a/index.php b/index.php index c808f95b97f7..27b7fb988a17 100644 --- a/index.php +++ b/index.php @@ -25,7 +25,7 @@ if( !file_exists( 'LocalSettings.php' ) ) { <head> <title>MediaWiki <?php echo $wgVersion ?></title> <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> - + <style type='text/css' media='screen, projection'> html, body { color: #000; @@ -41,7 +41,7 @@ if( !file_exists( 'LocalSettings.php' ) ) { </head> <body> <img src='skins/common/images/mediawiki.png' alt='The MediaWiki logo' /> - + <h1>MediaWiki <?php echo $wgVersion ?></h1> <div class='error'> <?php @@ -81,12 +81,12 @@ if ( '' == $title && 'delete' != $action ) { $wgTitle = Title::newFromID( $curid ); } else { $wgTitle = Title::newFromURL( $title ); - /* check variant links so that interwiki links don't have to worry about + /* check variant links so that interwiki links don't have to worry about the possible different language variants */ if( !is_null($wgTitle) && $wgTitle->getArticleID() == 0 ) $wgContLang->findVariantLink( $title, $wgTitle ); - + } wfProfileOut( 'main-misc-setup' ); @@ -172,6 +172,7 @@ if( !$wgDisableInternalSearch && !is_null( $search ) && $search !== '' ) { case 'info': case 'markpatrolled': case 'validate': + case 'render': $wgArticle->$action(); break; case 'print': @@ -203,20 +204,20 @@ if( !$wgDisableInternalSearch && !is_null( $search ) && $search !== '' ) { User::SetupSession(); } # Continue... - case 'edit': + case 'edit': $internal = $wgRequest->getVal( 'internaledit' ); $external = $wgRequest->getVal( 'externaledit' ); $section = $wgRequest->getVal( 'section' ); - $oldid = $wgRequest->getVal( 'oldid' ); - if(!$wgUseExternalEditor || $action=='submit' || $internal || + $oldid = $wgRequest->getVal( 'oldid' ); + if(!$wgUseExternalEditor || $action=='submit' || $internal || $section || $oldid || (!$wgUser->getOption('externaleditor') && !$external)) { require_once( 'includes/EditPage.php' ); $editor = new EditPage( $wgArticle ); - $editor->submit(); + $editor->submit(); } elseif($wgUseExternalEditor && ($external || $wgUser->getOption('externaleditor'))) { require_once( 'includes/ExternalEdit.php' ); $mode = $wgRequest->getVal( 'mode' ); - $extedit = new ExternalEdit( $wgArticle, $mode ); + $extedit = new ExternalEdit( $wgArticle, $mode ); $extedit->edit(); } break; diff --git a/maintenance/mcc.php b/maintenance/mcc.php index 1a063f2363f1..b7697c730bde 100755 --- a/maintenance/mcc.php +++ b/maintenance/mcc.php @@ -9,6 +9,7 @@ /** */ require_once( "commandLine.inc" ); +require_once("memcached-client.php"); $mcc = new memcached( array('persistant' => true) ); $mcc->set_servers( $wgMemCachedServers ); |