From 68ea91084dff8b37848dcdf5d675e4898ee6773f Mon Sep 17 00:00:00 2001 From: Jan Paul Posma Date: Fri, 4 Mar 2011 11:45:22 +0000 Subject: [PATCH] Followup of r82891 and r82894. Fixes hook for InlineEditor, which forces a page reparse when either a or tag shows up. Doesn't affect normal behaviour when not using InlineEditor. --- Cite_body.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Cite_body.php b/Cite_body.php index 00dac82b..f16b1c2b 100644 --- a/Cite_body.php +++ b/Cite_body.php @@ -71,6 +71,12 @@ class Cite { * @var int */ var $mInCnt = 0; + + /** + * Counter to track the total number of (useful) calls to either the + * ref or references tag hook + */ + var $mCallCnt = 0; /** * The backlinks, in order, to pass as $3 to @@ -151,6 +157,7 @@ class Cite { if ( $this->mInCite ) { return htmlspecialchars( "$str" ); } else { + $this->mCallCnt++; $this->mInCite = true; $ret = $this->guardedRef( $str, $argv, $parser ); $this->mInCite = false; @@ -507,6 +514,7 @@ class Cite { return htmlspecialchars( "$str" ); } } else { + $this->mCallCnt++; $this->mInReferences = true; $ret = $this->guardedReferences( $str, $argv, $parser ); $this->mInReferences = false; @@ -984,6 +992,7 @@ class Cite { $this->mGroupCnt = array(); $this->mOutCnt = - 1; $this->mInCnt = 0; + $this->mCallCnt = 0; $this->mRefs = array(); $this->mReferencesErrors = array(); $this->mRefCallStack = array(); @@ -1015,11 +1024,11 @@ class Cite { } /** - * Hook for the InlineEditor extension. If any reference is in the text, the entire + * Hook for the InlineEditor extension. If any ref or reference reference tag is in the text, the entire * page should be reparsed, so we return false in that case. */ - function checkAnyRefs( &$output ) { - return ( count( $this->mRefs ) <= 0 ); + function checkAnyCalls( &$output ) { + return ( $this->mCallCnt <= 0 ); } /** @@ -1033,7 +1042,7 @@ class Cite { $wgHooks['ParserClearState'][] = array( self::$instance, 'clearState' ); $wgHooks['ParserBeforeTidy'][] = array( self::$instance, 'checkRefsNoReferences' ); - $wgHooks['InlineEditorPartialAfterParse'][] = array( self::$instance, 'checkAnyRefs' ); + $wgHooks['InlineEditorPartialAfterParse'][] = array( self::$instance, 'checkAnyCalls' ); } $parser->setHook( 'ref' , array( self::$instance, 'ref' ) ); $parser->setHook( 'references' , array( self::$instance, 'references' ) );