r44432 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r44431‎ | r44432 | r44433 >
Date:23:21, 10 December 2008
Author:brion
Status:ok
Tags:
Comment:
Revert r44271 "(bug 12998) Weaken DISPLAYTITLE restictions (patch by 'rememberthedot@gmail.com')"
Behavior seems a bit hard to predict, as far as what's going to go in the header and what in the browser window etc. Pulling it back for further testing and discussion.
Modified paths:
  • /trunk/phase3/includes/EditPage.php (modified) (history)
  • /trunk/phase3/includes/OutputPage.php (modified) (history)
  • /trunk/phase3/includes/Skin.php (modified) (history)
  • /trunk/phase3/includes/parser/CoreParserFunctions.php (modified) (history)
  • /trunk/phase3/includes/parser/ParserOutput.php (modified) (history)
  • /trunk/phase3/skins/Modern.php (modified) (history)
  • /trunk/phase3/skins/MonoBook.php (modified) (history)

Diff [purge]

Index: trunk/phase3/skins/MonoBook.php
@@ -115,7 +115,7 @@
116116 <div id="content">
117117 <a name="top" id="top"></a>
118118 <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
119 - <h1 class="firstHeading"><?php $this->html('title'); ?></h1>
 119+ <h1 class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
120120 <div id="bodyContent">
121121 <h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
122122 <div id="contentSub"><?php $this->html('subtitle') ?></div>
Index: trunk/phase3/skins/Modern.php
@@ -102,7 +102,7 @@
103103 class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
104104
105105 <!-- heading -->
106 - <div id="mw_header"><h1 id="firstHeading"><?php $this->html('title') ?></h1></div>
 106+ <div id="mw_header"><h1 id="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1></div>
107107
108108 <div id="mw_main">
109109 <div id="mw_contentwrapper">
Index: trunk/phase3/includes/parser/ParserOutput.php
@@ -29,8 +29,7 @@
3030 /**
3131 * Overridden title for display
3232 */
33 - private $displayTitle = false; #for use in the <title> tag
34 - private $displayTitleH1 = false; #for use in the <h1> tag, may contain further HTML tags
 33+ private $displayTitle = false;
3534
3635 function ParserOutput( $text = '', $languageLinks = array(), $categoryLinks = array(),
3736 $containsOldMagic = false, $titletext = '' )
@@ -146,15 +145,6 @@
147146 }
148147
149148 /**
150 - * Get the title to be used for display
151 - *
152 - * @return string
153 - */
154 - public function getDisplayTitle() {
155 - return $this->displayTitle;
156 - }
157 -
158 - /**
159149 * Override the title to be used for display
160150 * -- this is assumed to have been validated
161151 * (check equal normalisation, etc.)
@@ -164,14 +154,15 @@
165155 public function setDisplayTitle( $text ) {
166156 $this->displayTitle = $text;
167157 }
168 -
169 - public function getDisplayTitleH1() {
170 - return $this->displayTitleH1;
 158+
 159+ /**
 160+ * Get the title to be used for display
 161+ *
 162+ * @return string
 163+ */
 164+ public function getDisplayTitle() {
 165+ return $this->displayTitle;
171166 }
172 -
173 - public function setDisplayTitleH1( $html ) {
174 - $this->displayTitleH1 = $html;
175 - }
176167
177168 /**
178169 * Fairly generic flag setter thingy.
Index: trunk/phase3/includes/parser/CoreParserFunctions.php
@@ -164,32 +164,17 @@
165165 * @param string $text Desired title text
166166 * @return string
167167 */
168 - static function displaytitle( $parser, $displayTitleH1 = '', $displayTitleTitle = '' ) {
 168+ static function displaytitle( $parser, $text = '' ) {
169169 global $wgRestrictDisplayTitle;
170 -
171 - $titleHTML = Sanitizer::removeHTMLtags( $displayTitleH1 ); #escape the bad tags
172 - $titleText = trim( Sanitizer::stripAllTags( $titleHTML ) ); #remove the good tags, leaving the bad tags escaped, and trim it to make sure it comes out pretty
173 -
174 - #the user can put any sanitized text into the page title used in the <title> attribute, since it is not copy-pasteable like the <h1> tag
175 - if ($displayTitleTitle == '') {
176 - $parser->mOutput->setDisplayTitle( $titleText ); #use the stripped contents of <h1>
177 - } else {
178 - $parser->mOutput->setDisplayTitle( $displayTitleTitle ); #use what the user explicitly requested, MediaWiki escapes this automatically before it is served out
179 - }
180 -
 170+ $text = trim( Sanitizer::decodeCharReferences( $text ) );
 171+
181172 if ( !$wgRestrictDisplayTitle ) {
182 - $parser->mOutput->setDisplayTitleH1( $titleHTML );
 173+ $parser->mOutput->setDisplayTitle( $text );
183174 } else {
184 - #only titles that normalize to the same title are allowed in the <h1> tag
185 - $title = Title::newFromText( $titleText );
186 -
187 - if ( $title instanceof Title && $title->getFragment() == '' && $title->equals( $parser->mTitle ) ) {
188 - $parser->mOutput->setDisplayTitleH1( $titleHTML );
189 - } else {
190 - $parser->mOutput->setDisplayTitleH1( $parser->mTitle );
191 - }
 175+ $title = Title::newFromText( $text );
 176+ if( $title instanceof Title && $title->getFragment() == '' && $title->equals( $parser->mTitle ) )
 177+ $parser->mOutput->setDisplayTitle( $text );
192178 }
193 -
194179 return '';
195180 }
196181
Index: trunk/phase3/includes/EditPage.php
@@ -1083,11 +1083,11 @@
10841084 # Use the title defined by DISPLAYTITLE magic word when present
10851085 if ( isset($this->mParserOutput)
10861086 && ( $dt = $this->mParserOutput->getDisplayTitle() ) !== false ) {
1087 - $wgOut->setPageTitle( wfMsg( 'editing', $this->mParserOutput->getDisplayTitleH1() ) );
1088 - $wgOut->setHTMLTitle( wfMsg( 'editing', $dt ) ); #override the HTML that setPageTitle slated for inclusion in the <title>
 1087+ $title = $dt;
10891088 } else {
1090 - $wgOut->setPageTitle( wfMsg( 'editing', $wgTitle->getPrefixedText() ) );
 1089+ $title = $wgTitle->getPrefixedText();
10911090 }
 1091+ $wgOut->setPageTitle( wfMsg( 'editing', $title ) );
10921092 }
10931093 }
10941094
Index: trunk/phase3/includes/OutputPage.php
@@ -309,10 +309,7 @@
310310 }
311311 }
312312
313 - # "HTML title" means <title>
314 - public function setHTMLTitle( $name ) { $this->mHTMLtitle = $name; }
315 -
316 - # "Page title" means <h1>
 313+ public function setHTMLTitle( $name ) {$this->mHTMLtitle = $name; }
317314 public function setPageTitle( $name ) {
318315 global $action, $wgContLang;
319316 $name = $wgContLang->convert($name, true);
@@ -323,7 +320,7 @@
324321 $name .= ' - '.$taction;
325322 }
326323 }
327 -
 324+
328325 $this->setHTMLTitle( wfMsg( 'pagetitle', $name ) );
329326 }
330327 public function getHTMLTitle() { return $this->mHTMLtitle; }
@@ -542,10 +539,8 @@
543540 }
544541 }
545542 // Display title
546 - if( ( $displayTitleText = $parserOutput->getDisplayTitle() ) !== false ) {
547 - $this->setPageTitle( $parserOutput->getDisplayTitleH1() );
548 - $this->setHTMLTitle( wfMsg( 'pagetitle', $displayTitleText ) ); #override the HTML that setPageTitle slated for inclusion in the <title>
549 - }
 543+ if( ( $dt = $parserOutput->getDisplayTitle() ) !== false )
 544+ $this->setPageTitle( $dt );
550545
551546 // Hooks registered in the object
552547 global $wgParserOutputHooks;
Index: trunk/phase3/includes/Skin.php
@@ -1014,7 +1014,7 @@
10151015
10161016 function pageTitle() {
10171017 global $wgOut;
1018 - $s = '<h1 class="pagetitle">' . $wgOut->getPageTitle() . '</h1>';
 1018+ $s = '<h1 class="pagetitle">' . htmlspecialchars( $wgOut->getPageTitle() ) . '</h1>';
10191019 return $s;
10201020 }
10211021

Follow-up revisions

RevisionCommit summaryAuthorDate
r45181(Bug 12998) Weaken DISPLAYTITLE restictions (patch by rememberthedot@gmail.com)aaron12:22, 30 December 2008
r45226Pull back r45181 "(Bug 12998) Weaken DISPLAYTITLE restictions (patch by remem...brion16:49, 31 December 2008
r49330(bug 12998) Allow <sup>, <sub>, etc. in DISPLAYTITLErememberthedot05:15, 9 April 2009

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r44271(bug 12998) Weaken DISPLAYTITLE restictions (patch by 'rememberthedot@gmail.c...aaron18:00, 6 December 2008

Status & tagging log