don't try to prefill edit summary when section=new (relevant only for preload=)
[lhc/web/wiklou.git] / includes / EditPage.php
index a97558f..f73d5e2 100644 (file)
@@ -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",