$wgOut->readOnlyPage( $this->mArticle->getContent( true ), true );
return;
}
- if ( !$this->preview && !$this->diff && $wgUser->isBlocked( !$this->save ) ) {
+ if ( !$this->preview && !$this->diff && $wgUser->isBlockedFrom( $this->mTitle, !$this->save ) ) {
# When previewing, don't check blocked state - will get caught at save time.
# Also, check when starting edition is done against slave to improve performance.
$this->blockedIPpage();
} else if ( $this->diff ) {
$this->editForm( 'diff' );
} else { # First time through
- if( $wgUser->getOption('previewonfirst')
- or $this->mTitle->getNamespace() == NS_CATEGORY ) {
+ if( $this->previewOnOpen() ) {
$this->editForm( 'preview', true );
} else {
$this->extractMetaDataFromArticle () ;
}
}
}
+
+ /**
+ * Return true if this page should be previewed when the edit form
+ * is initially opened.
+ * @return bool
+ * @access private
+ */
+ function previewOnOpen() {
+ global $wgUser;
+ return $wgUser->getOption( 'previewonfirst' ) ||
+ ( $this->mTitle->getNamespace() == NS_CATEGORY &&
+ !$this->mTitle->exists() );
+ }
/**
* @todo document
function editForm( $formtype, $firsttime = false ) {
global $wgOut, $wgUser;
global $wgLang, $wgContLang, $wgParser, $wgTitle;
- global $wgAllowAnonymousMinor;
+ global $wgAllowAnonymousMinor, $wgRequest;
global $wgSpamRegex, $wgFilterCallback;
$sk = $wgUser->getSkin();
// css / js subpages of user pages get a special treatment
$isCssJsSubpage = $wgTitle->isCssJsSubpage();
-
if(!$this->mTitle->getArticleID()) { # new article
- $wgOut->addWikiText(wfmsg('newarticletext'));
+ $editintro = $wgRequest->getText( 'editintro' );
+ $addstandardintro=true;
+ if($editintro) {
+ $introtitle=Title::newFromText($editintro);
+ if(isset($introtitle) && $introtitle->userCanRead()) {
+ $rev=Revision::newFromTitle($introtitle);
+ if($rev) {
+ $wgOut->addWikiText($rev->getText());
+ $addstandardintro=false;
+ }
+ }
+ }
+ if($addstandardintro) {
+ $wgOut->addWikiText(wfmsg('newarticletext'));
+ }
}
if( $this->mTitle->isTalkPage() ) {
# Error messages or other handling should be performed by the filter function
return;
}
- if ( $wgUser->isBlocked( false ) ) {
+ if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) {
# Check block state against master, thus 'false'.
$this->blockedIPpage();
return;
}
if (wfRunHooks('ArticleSave', array(&$this->mArticle, &$wgUser, &$this->textbox1,
&$this->summary, &$this->minoredit, &$this->watchthis, NULL)))
- {
+ {
+
+ $isComment=($this->section=='new');
$this->mArticle->insertNewArticle( $this->textbox1, $this->summary,
- $this->minoredit, $this->watchthis );
+ $this->minoredit, $this->watchthis, false, $isComment);
wfRunHooks('ArticleSaveComplete', array(&$this->mArticle, &$wgUser, $this->textbox1,
$this->summary, $this->minoredit,
$this->watchthis, NULL));
}
}
+ // Save errors may fall down to the edit form, but we've now
+ // merged the section into full text. Clear the section field
+ // so that later submission of conflict forms won't try to
+ // replace that into a duplicated mess.
+ $this->textbox1 = $text;
+ $this->section = '';
+
if (wfRunHooks('ArticleSave', array(&$this->mArticle, &$wgUser, &$text,
&$this->summary, &$this->minoredit,
&$this->watchthis, &$sectionanchor)))
$this->summary, $this->minoredit,
$this->watchthis, $sectionanchor));
return;
+ } else {
+ $isConflict = true;
}
- else
- $isConflict = true;
}
}
}
$s = wfMsg('editingcomment', $this->mTitle->getPrefixedText() );
} else {
$s = wfMsg('editingsection', $this->mTitle->getPrefixedText() );
- }
- if(!$this->preview) {
- preg_match( "/^(=+)(.+)\\1/mi",
- $this->textbox1,
- $matches );
- if( !empty( $matches[2] ) ) {
- $this->summary = "/* ". trim($matches[2])." */ ";
- }
+ if( !$this->preview && !$this->diff ) {
+ preg_match( "/^(=+)(.+)\\1/mi",
+ $this->textbox1,
+ $matches );
+ if( !empty( $matches[2] ) ) {
+ $this->summary = "/* ". trim($matches[2])." */ ";
+ }
+ }
}
} else {
$s = wfMsg( 'editing', $this->mTitle->getPrefixedText() );
$this->mArticle->setOldSubtitle();
$wgOut->addWikiText( wfMsg( 'nonunicodebrowser') );
}
- if ( $this->oldid ) {
+ if ( isset( $this->mArticle )
+ && isset( $this->mArticle->mRevision )
+ && !$this->mArticle->mRevision->isCurrent() ) {
$this->mArticle->setOldSubtitle();
$wgOut->addWikiText( wfMsg( 'editingold' ) );
}
$this->textbox1 = $this->mArticle->getContent(true);
}
- $toparse = $this->textbox1 ;
+ $toparse = $this->textbox1;
+
+ # If we're adding a comment, we need to show the
+ # summary as the headline
+ if($this->section=="new" && $this->summary!="") {
+ $toparse="== {$this->summary} ==\n\n".$toparse;
+ }
+
if ( $this->mMetaData != "" ) $toparse .= "\n" . $this->mMetaData ;
$parserOutput = $wgParser->parse( $this->mArticle->preSaveTransform( $toparse ) ."\n\n",
* @todo document
*/
function mergeChangesInto( &$editText ){
+ $fname = 'EditPage::mergeChangesInto';
+ wfProfileIn( $fname );
+
$db =& wfGetDB( DB_MASTER );
// This is the revision the editor started from
$baseRevision = Revision::loadFromTimestamp(
$db, $this->mArticle->mTitle, $this->edittime );
if( is_null( $baseRevision ) ) {
+ wfProfileOut( $fname );
return false;
}
$baseText = $baseRevision->getText();
$currentRevision = Revision::loadFromTitle(
$db, $this->mArticle->mTitle );
if( is_null( $currentRevision ) ) {
+ wfProfileOut( $fname );
return false;
}
$currentText = $currentRevision->getText();
if( wfMerge( $baseText, $editText, $currentText, $result ) ){
$editText = $result;
+ wfProfileOut( $fname );
return true;
} else {
+ wfProfileOut( $fname );
return false;
}
}