From: David McCabe Date: Fri, 12 Oct 2007 23:12:24 +0000 (+0000) Subject: Merged in changes from Liquid Threads branch including extra hooks and minor changes... X-Git-Tag: 1.31.0-rc.0~51153 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/fiche.php?a=commitdiff_plain;h=c474b77da3f9700c6fc04619f8fc65ae9bd9a0e4;p=lhc%2Fweb%2Fwiklou.git Merged in changes from Liquid Threads branch including extra hooks and minor changes to EditPage. (Liquid Threads itself is still an extension; this is just some things it needs.) --- diff --git a/includes/ChangesList.php b/includes/ChangesList.php index 8d0f95086f..617e12e196 100644 --- a/includes/ChangesList.php +++ b/includes/ChangesList.php @@ -176,6 +176,9 @@ class ChangesList { global $wgContLang; $articlelink .= $wgContLang->getDirMark(); + wfRunHooks('ChangesListInsertArticleLink', + array(&$this, &$articlelink, &$s, &$rc, $unpatrolled, $watched)); + $s .= ' '.$articlelink; } diff --git a/includes/EditPage.php b/includes/EditPage.php index ad5c759f26..276d7c4c2a 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -42,10 +42,14 @@ class EditPage { # extensions should take care to _append_ to the present value public $editFormPageTop; // Before even the preview public $editFormTextTop; + public $editFormTextBeforeContent; public $editFormTextAfterWarn; public $editFormTextAfterTools; public $editFormTextBottom; + public $didSave = false; + public $suppressIntro = false; + /** * @todo document * @param $article @@ -58,6 +62,7 @@ class EditPage { # Placeholders for text injection by hooks (empty per default) $this->editFormPageTop = $this->editFormTextTop = + $this->editFormTextBeforeContent = $this->editFormTextAfterWarn = $this->editFormTextAfterTools = $this->editFormTextBottom = ""; @@ -78,10 +83,10 @@ class EditPage { wfProfileIn( __METHOD__ ); $text = ''; - if( !$this->mTitle->exists() ) { - if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if( !$this->mArticle->getTitle()->exists() ) { + if ( $this->mArticle->getTitle()->getNamespace() == NS_MEDIAWIKI ) { # If this is a system message, get the default text. - $text = wfMsgWeirdKey ( $this->mTitle->getText() ) ; + $text = wfMsgWeirdKey ( $this->mArticle->getTitle()->getText() ) ; } else { # If requested, preload some text. $text = $this->getPreloadedText( $preload ); @@ -318,9 +323,9 @@ class EditPage { return; } - $permErrors = $this->mTitle->getUserPermissionsErrors('edit', $wgUser); - if( !$this->mTitle->exists() ) - $permErrors += array_diff( $this->mTitle->getUserPermissionsErrors('create', $wgUser), $permErrors ); + $permErrors = $this->mArticle->getTitle()->getUserPermissionsErrors('edit', $wgUser); + if( !$this->mArticle->getTitle()->exists() ) + $permErrors += array_diff( $this->mArticle->getTitle()->getUserPermissionsErrors('create', $wgUser), $permErrors ); # Ignore some permissions errors. $remove = array(); @@ -372,8 +377,8 @@ class EditPage { $this->isConflict = false; // css / js subpages of user pages get a special treatment - $this->isCssJsSubpage = $wgTitle->isCssJsSubpage(); - $this->isValidCssJsSubpage = $wgTitle->isValidCssJsSubpage(); + $this->isCssJsSubpage = $this->mArticle->getTitle()->isCssJsSubpage(); + $this->isValidCssJsSubpage = $this->mArticle->getTitle()->isValidCssJsSubpage(); /* Notice that we can't use isDeleted, because it returns true if article is ever deleted * no matter it's current state @@ -385,7 +390,7 @@ class EditPage { * deletes. This is done on every preview and save request. Move it further down * to only perform it on saves */ - if ( $this->mTitle->isDeleted() ) { + if ( $this->mArticle->getTitle()->isDeleted() ) { $this->lastDelete = $this->getLastDelete(); if ( !is_null($this->lastDelete) ) { $deletetime = $this->lastDelete->log_timestamp; @@ -400,7 +405,7 @@ class EditPage { if( $this->formtype == 'initial' || $this->firsttime ) $this->showIntro(); - if( $this->mTitle->isTalkPage() ) { + if( $this->mArticle->getTitle()->isTalkPage() ) { $wgOut->addWikiText( wfMsg( 'talkpagetext' ) ); } @@ -426,8 +431,8 @@ class EditPage { wfProfileOut( $fname ); return; } - if( !$this->mTitle->getArticleId() ) - wfRunHooks( 'EditFormPreloadText', array( &$this->textbox1, &$this->mTitle ) ); + if( !$this->mArticle->getID() ) + wfRunHooks( 'EditFormPreloadText', array( &$this->textbox1, &$this->mArticle->mTitle ) ); } $this->showEditForm(); @@ -442,6 +447,7 @@ class EditPage { */ private function previewOnOpen() { global $wgRequest, $wgUser; + $title = $this->mArticle->getTitle(); if( $wgRequest->getVal( 'preview' ) == 'yes' ) { // Explicit override from request return true; @@ -451,10 +457,10 @@ class EditPage { } elseif( $this->section == 'new' ) { // Nothing *to* preview for new sections return false; - } elseif( ( $wgRequest->getVal( 'preload' ) !== '' || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) { + } elseif( ( $wgRequest->getVal( 'preload' ) !== '' || $title->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) { // Standard preference behaviour return true; - } elseif( !$this->mTitle->exists() && $this->mTitle->getNamespace() == NS_CATEGORY ) { + } elseif( !$title->exists() && $title->getNamespace() == NS_CATEGORY ) { // Categories are special return true; } else { @@ -531,7 +537,7 @@ class EditPage { $this->watchthis = $request->getCheck( 'wpWatchthis' ); # Don't force edit summaries when a user is editing their own user or talk page - if( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) && $this->mTitle->getText() == $wgUser->getName() ) { + if( ( $this->mArticle->getTitle()->mNamespace == NS_USER || $this->mArticle->getTitle()->mNamespace == NS_USER_TALK ) && $this->mArticle->getTitle()->getText() == $wgUser->getName() ) { $this->allowBlankSummary = true; } else { $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ); @@ -587,7 +593,8 @@ class EditPage { */ private function showIntro() { global $wgOut, $wgUser; - if( !$this->showCustomIntro() && !$this->mTitle->exists() ) { + if ( $this->suppressIntro ) return; + if( !$this->showCustomIntro() && !$this->mArticle->getTitle()->exists() ) { if( $wgUser->isLoggedIn() ) { $wgOut->addWikiText( wfMsg( 'newarticletext' ) ); } else { @@ -648,7 +655,7 @@ class EditPage { wfProfileOut( $fname ); return false; } - if ( $wgFilterCallback && $wgFilterCallback( $this->mTitle, $this->textbox1, $this->section ) ) { + if ( $wgFilterCallback && $wgFilterCallback( $this->mArticle->getTitle(), $this->textbox1, $this->section ) ) { # Error messages or other handling should be performed by the filter function wfProfileOut( $fname ); wfProfileOut( "$fname-checks" ); @@ -720,11 +727,11 @@ class EditPage { wfProfileOut( "$fname-checks" ); # If article is new, insert it. - $aid = $this->mTitle->getArticleID( GAID_FOR_UPDATE ); + $aid = $this->mArticle->getTitle()->getArticleID( GAID_FOR_UPDATE ); if ( 0 == $aid ) { // Late check for create permission, just in case *PARANOIA* - if ( !$this->mTitle->userCan( 'create' ) ) { + if ( !$this->mArticle->getTitle()->userCan( 'create' ) ) { wfDebug( "$fname: no create permission\n" ); $this->noCreatePermission(); wfProfileOut( $fname ); @@ -741,6 +748,7 @@ class EditPage { $isComment=($this->section=='new'); $this->mArticle->insertNewArticle( $this->textbox1, $this->summary, $this->minoredit, $this->watchthis, false, $isComment); + $this->didSave = true; wfProfileOut( $fname ); return false; @@ -878,6 +886,7 @@ class EditPage { # update the article here if( $this->mArticle->updateArticle( $text, $this->summary, $this->minoredit, $this->watchthis, '', $sectionanchor ) ) { + $this->didSave = true; wfProfileOut( $fname ); return false; } else { @@ -897,8 +906,8 @@ class EditPage { $this->textbox1 = $this->getContent(false); if ($this->textbox1 === false) return false; - if ( !$this->mArticle->exists() && $this->mArticle->mTitle->getNamespace() == NS_MEDIAWIKI ) - $this->textbox1 = wfMsgWeirdKey( $this->mArticle->mTitle->getText() ); + if ( !$this->mArticle->exists() && $this->mArticle->getTitle()->getNamespace() == NS_MEDIAWIKI ) + $this->textbox1 = wfMsgWeirdKey( $this->mArticle->getTitle()->getText() ); wfProxyCheck(); return true; } @@ -1007,12 +1016,12 @@ class EditPage { } } - if( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) { + if( $this->mArticle->getTitle()->getNamespace() == NS_MEDIAWIKI ) { # Show a warning if editing an interface message $wgOut->addWikiText( wfMsg( 'editinginterface' ) ); - } elseif( $this->mTitle->isProtected( 'edit' ) ) { + } elseif( $this->mArticle->getTitle()->isProtected( 'edit' ) ) { # Is the title semi-protected? - if( $this->mTitle->isSemiProtected() ) { + if( $this->mArticle->getTitle()->isSemiProtected() ) { $notice = wfMsg( 'semiprotectedpagewarning' ); if( wfEmptyMsg( 'semiprotectedpagewarning', $notice ) || $notice == '-' ) $notice = ''; @@ -1022,9 +1031,9 @@ class EditPage { } $wgOut->addWikiText( $notice ); } - if ( $this->mTitle->isCascadeProtected() ) { + if ( $this->mArticle->getTitle()->isCascadeProtected() ) { # Is this page under cascading protection from some source pages? - list($cascadeSources, /* $restrictions */) = $this->mTitle->getCascadeProtectionSources(); + list($cascadeSources, /* $restrictions */) = $this->mArticle->getTitle()->getCascadeProtectionSources(); if ( count($cascadeSources) > 0 ) { # Explain, and list the titles responsible $notice = wfMsgExt( 'cascadeprotectedwarning', array('parsemag'), count($cascadeSources) ) . "\n"; @@ -1090,10 +1099,10 @@ class EditPage { if( $wgUser->getOption( 'watchdefault' ) ) { # Watch all edits $this->watchthis = true; - } elseif( $wgUser->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) { + } elseif( $wgUser->getOption( 'watchcreations' ) && !$this->mArticle->getTitle()->exists() ) { # Watch creations $this->watchthis = true; - } elseif( $this->mTitle->userIsWatching() ) { + } elseif( $this->mArticle->getTitle()->userIsWatching() ) { # Already watched $this->watchthis = true; } @@ -1125,12 +1134,12 @@ class EditPage { if( $this->section == 'new' ) { $commentsubject="\n
\n
"; $editsummary = ''; - $subjectpreview = $summarytext && $this->preview ? "
".wfMsg('subject-preview').':'.$sk->commentBlock( $this->summary, $this->mTitle )."
\n" : ''; + $subjectpreview = $summarytext && $this->preview ? "
".wfMsg('subject-preview').':'.$sk->commentBlock( $this->summary, $this->mArticle->getTitle() )."
\n" : ''; $summarypreview = ''; } else { $commentsubject = ''; $editsummary="\n
\n
"; - $summarypreview = $summarytext && $this->preview ? "
".wfMsg('summary-preview').':'.$sk->commentBlock( $this->summary, $this->mTitle )."
\n" : ''; + $summarypreview = $summarytext && $this->preview ? "
".wfMsg('summary-preview').':'.$sk->commentBlock( $this->summary, $this->mArticle->getTitle() )."
\n" : ''; $subjectpreview = ''; } @@ -1203,6 +1212,7 @@ END $recreate {$commentsubject} {$subjectpreview} +{$this->editFormTextBeforeContent}