(bug 16854) Show an error message when a page has <ref> tags and no <references/>. Patch by Brad Jorsch.

This commit is contained in:
Alex Z. 2009-01-26 18:02:28 +00:00
parent a84dfc7b4a
commit ca5c36c9b5
3 changed files with 26 additions and 2 deletions

View file

@ -44,6 +44,8 @@ Define more in the <nowiki>[[MediaWiki:Cite references link many format backlink
'cite_error_references_no_text' => 'Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>$1</code>',
'cite_error_included_ref' => 'Closing &lt;/ref&gt; missing for &lt;ref&gt; tag',
'cite_error_refs_without_references' => '<code>&lt;ref&gt;</code> tags exist, but no <code>&lt;references/&gt;</code> tag was found',
'cite_error_group_refs_without_references' => '<code>&lt;ref&gt;</code> tags exist for a group named "$1", but no corresponding <code>&lt;references group="$1"/&gt;</code> tag was found',
/*
Output formatting

View file

@ -666,6 +666,25 @@ class Cite {
return true;
}
/**
* Called at the end of page processing to append an error if refs were
* used without a references tag.
*/
function checkRefsNoReferences(&$parser, &$text){
if ( $parser->getOptions()->getIsSectionPreview() ) return true;
foreach ( $this->mRefs as $group => $refs ) {
if ( count( $refs ) == 0 ) continue;
$text .= "\n<br />";
if ( $group == CITE_DEFAULT_GROUP ) {
$text .= $this->error( 'cite_error_refs_without_references' );
} else {
$text .= $this->error( 'cite_error_group_refs_without_references', htmlspecialchars( $group ) );
}
}
return true;
}
/**
* Initialize the parser hooks
*/
@ -676,6 +695,7 @@ class Cite {
$wgParser->setHook( 'references' , array( &$this, 'references' ) );
$wgHooks['ParserClearState'][] = array( &$this, 'clearState' );
$wgHooks['ParserBeforeTidy'][] = array( &$this, 'checkRefsNoReferences' );
}
/**

View file

@ -11,6 +11,7 @@ Wikipedia rocks!<ref>Proceeds of Rockology, vol. XXI</ref>
!! result
<p>Wikipedia rocks!<sup id="cite_ref-0" class="reference"><a href="#cite_note-0" title="">[1]</a></sup>
</p>
<br /><strong class="error">Cite error: <code>&lt;ref&gt;</code> tags exist, but no <code>&lt;references/&gt;</code> tag was found</strong>
!! end
!! test
@ -129,6 +130,7 @@ Templating<ref>Text<!--comment--></ref>
!! result
<p>1337<sup id="cite_ref-0" class="reference"><a href="#cite_note-0" title="">[1]</a></sup>
</p>
<br /><strong class="error">Cite error: <code>&lt;ref&gt;</code> tags exist, but no <code>&lt;references/&gt;</code> tag was found</strong>
!! end
!! test
@ -236,8 +238,8 @@ refs with no content must have a name</strong>
</p><p><strong class="error">Cite error: Invalid <code>&lt;references&gt;</code> tag;
no input is allowed. Use <code>&lt;references /&gt;</code></strong>
</p><p><strong class="error">Cite error: Invalid <code>&lt;references&gt;</code> tag;
no parameters are allowed.
Use <code>&lt;references /&gt;</code></strong>
parameter "group" is allowed only.
Use <code>&lt;references /&gt;</code>, or <code>&lt;references group="..." /&gt;</code></strong>
</p>
<ol class="references"><li id="cite_note-0"><a href="#cite_ref-0" title="">↑</a> Also zero, but differently! (Normal ref)</li>
<li id="cite_note-bar"><a href="#cite_ref-bar_0" title="">↑</a> <strong class="error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;