Recommit r38149, with the fatal error fixed. The EditSectionLinkForOther hook is now removed entirely -- EditSectionLink is run unconditionally instead. This is extremely unlikely to break any extensions.

This commit is contained in:
Aryeh Gregor 2008-07-28 23:52:55 +00:00
parent b0c477aa1d
commit 39273d2c67
4 changed files with 56 additions and 40 deletions

View file

@ -29,6 +29,11 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
* (bug 8068) New __INDEX__ and __NOINDEX__ magic words allow user control of
search engine indexing on a per-article basis.
* Handheld stylesheet options
* Added 'DoEditSectionLink' hook as a cleaner unified version of the old
'EditSectionLink' and 'EditSectionLinkForOther' hooks. Note that the
'EditSectionLinkForOther' hook has been removed, but 'EditSectionLink' is
run in all cases instead, so extensions using the old hooks should still work
if they ran roughly the same code for both hooks (as is almost certain).
=== Bug fixes in 1.14 ===

View file

@ -533,6 +533,17 @@ $newRev: Revision object of the "new" revision
$article: article (object) being viewed
$oldid: oldid (int) being viewed
'DoEditSectionLink': Override the HTML generated for section edit links
$skin: Skin object rendering the UI
$title: Title object for the title being linked to (may not be the same as
$wgTitle, if the section is included from a template)
$section: The designation of the section being pointed to, to be included in
the link, like "&section=$section"
$tooltip: The default tooltip. Escape with htmlspecialchars() before using.
By default, this is wrapped in the 'editsectionhint' message.
$result: The HTML to return, prefilled with the default plus whatever other
changes earlier hooks have made
'EditFilter': Perform checks on an edit
$editor: Edit form (see includes/EditPage.php)
$text: Contents of the edit box
@ -579,21 +590,13 @@ sections.
&$editpage: The current EditPage object
&$buttons: Array of edit buttons "Save", "Preview", "Live", and "Diff"
'EditSectionLink': Override the return value of Linker::editSectionLink()
'EditSectionLink': Do not use, use DoEditSectionLink instead.
$skin: Skin rendering the UI
$title: Title being linked to
$section: Section to link to
$link: Default link
$result: Result (alter this to override the generated links)
'EditSectionLinkForOther': Override the return value of Linker::editSectionLinkForOther()
$skin: Skin rendering the UI
$title: Title being linked to
$section: Section to link to
$hint: Anchor title/tooltip attributes
$link: Default link
$result: Result (alter this to override the generated links)
'EmailConfirmed': When checking that the user's email address is "confirmed"
$user: User being checked
$confirmed: Whether or not the email address is confirmed

View file

@ -1276,6 +1276,7 @@ class Linker {
* @param $section Integer: section number.
*/
public function editSectionLinkForOther( $title, $section ) {
wfDeprecated( __METHOD__ );
$title = Title::newFromText( $title );
return $this->doEditSectionLink( $title, $section, '', 'EditSectionLinkForOther' );
}
@ -1286,48 +1287,55 @@ class Linker {
* @param $hint Link String: title, or default if omitted or empty
*/
public function editSectionLink( Title $nt, $section, $hint='' ) {
if( $hint != '' ) {
$hint = wfMsgHtml( 'editsectionhint', htmlspecialchars( $hint ) );
$hint = " title=\"$hint\"";
}
wfDeprecated( __METHOD__ );
return $this->doEditSectionLink( $nt, $section, $hint, 'EditSectionLink' );
}
/**
* Implement editSectionLink and editSectionLinkForOther.
* Create a section edit link. This supersedes editSectionLink() and
* editSectionLinkForOther().
*
* @param $nt Title object
* @param $section Integer, section number
* @param $hint String, for HTML title attribute
* @param $hook String, name of hook to run
* @return String, HTML to use for edit link
* @param $nt Title The title being linked to (may not be the same as
* $wgTitle, if the section is included from a template)
* @param $section string The designation of the section being pointed to,
* to be included in the link, like "&section=$section"
* @param $tooltip string The tooltip to use for the link: will be escaped
* and wrapped in the 'editsectionhint' message
* @return string HTML to use for edit link
*/
protected function doEditSectionLink( Title $nt, $section, $hint, $hook ) {
global $wgContLang;
$editurl = '&section='.$section;
public function doEditSectionLink( Title $nt, $section, $tooltip='' ) {
$attribs = '';
if( $tooltip ) {
$attribs = wfMsgHtml( 'editsectionhint', htmlspecialchars( $tooltip ) );
$attribs = " title=\"$attribs\"";
}
$url = $this->makeKnownLinkObj(
$nt,
htmlspecialchars(wfMsg('editsection')),
'action=edit'.$editurl,
'', '', '', $hint
"action=edit&section=$section",
'', '', '', $attribs
);
# Run the old hook
$result = null;
// The two hooks have slightly different interfaces . . .
if( $hook == 'EditSectionLink' ) {
wfRunHooks( 'EditSectionLink', array( &$this, $nt, $section, $hint, $url, &$result ) );
} elseif( $hook == 'EditSectionLinkForOther' ) {
wfRunHooks( 'EditSectionLinkForOther', array( &$this, $nt, $section, $url, &$result ) );
}
// For reverse compatibility, add the brackets *after* the hook is run,
// and even add them to hook-provided text.
if( is_null( $result ) ) {
wfRunHooks( 'EditSectionLink', array( &$this, $nt, $section, $attribs, $url, &$result ) );
if( !is_null( $result ) ) {
# For reverse compatibility, add the brackets *after* the hook is
# run, and even add them to hook-provided text. (This is the main
# reason that the EditSectionLink hook is deprecated in favor of
# DoEditSectionLink: it can't change the brackets or the span.)
$result = wfMsgHtml( 'editsection-brackets', $url );
} else {
$result = wfMsgHtml( 'editsection-brackets', $result );
return "<span class=\"editsection\">$result</span>";
}
return "<span class=\"editsection\">$result</span>";
# Add the brackets and the span, and *then* run the nice new hook, with
# clean and non-redundant arguments.
$result = wfMsgHtml( 'editsection-brackets', $url );
$result = "<span class=\"editsection\">$result</span>";
wfRunHooks( 'DoEditSectionLink', array( $this, $nt, $section, $tooltip, &$result ) );
return $result;
}
/**

View file

@ -3609,9 +3609,9 @@ class Parser
if( $isTemplate ) {
# Put a T flag in the section identifier, to indicate to extractSections()
# that sections inside <includeonly> should be counted.
$editlink = $sk->editSectionLinkForOther($titleText, "T-$sectionIndex");
$editlink = $sk->doEditSectionLink(Title::newFromText( $titleText ), "T-$sectionIndex");
} else {
$editlink = $sk->editSectionLink($this->mTitle, $sectionIndex, $headlineHint);
$editlink = $sk->doEditSectionLink($this->mTitle, $sectionIndex, $headlineHint);
}
} else {
$editlink = '';