implement "action=render"

This commit is contained in:
River Tarnell 2005-07-03 04:00:33 +00:00
parent 3791c6e5e0
commit e4a87e105a
7 changed files with 101 additions and 84 deletions

View file

@ -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

View file

@ -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();

View file

@ -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();

View file

@ -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;
}

View file

@ -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 ('&lt;'.$msgKey.'&gt;' != $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' ) )
?>

View file

@ -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;

View file

@ -9,6 +9,7 @@
/** */
require_once( "commandLine.inc" );
require_once("memcached-client.php");
$mcc = new memcached( array('persistant' => true) );
$mcc->set_servers( $wgMemCachedServers );