X-Git-Url: https://git.cyclocoop.org/%242?a=blobdiff_plain;f=includes%2FEditPage.php;h=f73d5e2a1aea2a6224e3cff7a5b166b13b4cc735;hb=22c392d03c1cfb2ae294cc67c481382995613f95;hp=a97558f73bc1224313e19008740a0a90f97fd26a;hpb=9cc44a6aed735d3e73ce188ddff56f7821d6dc90;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/EditPage.php b/includes/EditPage.php index a97558f73b..f73d5e2a1a 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -149,7 +149,7 @@ class EditPage { $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(); @@ -298,7 +298,7 @@ class EditPage { function editForm( $formtype, $firsttime = false ) { global $wgOut, $wgUser; global $wgLang, $wgContLang, $wgParser, $wgTitle; - global $wgAllowAnonymousMinor; + global $wgAllowAnonymousMinor, $wgRequest; global $wgSpamRegex, $wgFilterCallback; $sk = $wgUser->getSkin(); @@ -306,9 +306,28 @@ class EditPage { // css / js subpages of user pages get a special treatment $isCssJsSubpage = $wgTitle->isCssJsSubpage(); + # If we're creating a discussion page, use the standard comment + # form. + if(!$wgTitle->exists() && $wgTitle->isTalkPage()) { + $this->section='new'; + } 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() ) { @@ -334,7 +353,7 @@ class EditPage { # 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; @@ -371,9 +390,11 @@ class EditPage { } 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)); @@ -490,14 +511,14 @@ class EditPage { $s = wfMsg('editingcomment', $this->mTitle->getPrefixedText() ); } else { $s = wfMsg('editingsection', $this->mTitle->getPrefixedText() ); - } - if( !$this->preview && !$this->diff ) { - 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() ); @@ -774,7 +795,14 @@ END $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",