Remove most named character references from output

Recommit of r66254 to trunk.  This was just

find extensions phase3 -iname '*.php' \! -iname '*.i18n.php' \! -iname 'Messages*.php' \! -iname '*_Messages.php' -exec sed -i 's/ /\ /g;s/—/―/g;s/•/•/g;s/á/á/g;s/´/´/g;s/à/à/g;s/α/α/g;s/ä/ä/g;s/ç/ç/g;s/©/©/g;s/↓/↓/g;s/°/°/g;s/é/é/g;s/ê/ê/g;s/ë/ë/g;s/è/è/g;s/€/€/g;s/↔//g;s/…/…/g;s/í/í/g;s/ì/ì/g;s/←/←/g;s/“/“/g;s/·/·/g;s/−/−/g;s/–/–/g;s/ó/ó/g;s/ô/ô/g;s/œ/œ/g;s/ò/ò/g;s/õ/õ/g;s/ö/ö/g;s/£/£/g;s/′/′/g;s/″/″/g;s/»/»/g;s/→/→/g;s/”/”/g;s/Σ/Σ/g;s/×/×/g;s/ú/ú/g;s/↑/↑/g;s/ü/ü/g;s/¥/¥/g' {} +

followed by reading over every single line of the resulting diff and
fixing a whole bunch of false positives.  The reason for this change is
given in <http://lists.wikimedia.org/pipermail/wikitech-l/2010-April/047617.html>.
I cleared it with Tim and Brion on IRC before committing.  It might
cause a few problems, but I tried to be careful; please report any
issues.

I skipped all messages files.  I plan to make a follow-up commit that
alters wfMsgExt() with 'escapenoentities' to sanitize all the entities.
That way, the only messages that will be problems will be ones that
output raw HTML, and we want to get rid of those anyway.

This should get rid of all named entities everywhere except messages.  I
skipped a few things like &nbsp that I noticed in manual inspection,
because they weren't well-formed XML anyway.

Also, to everyone who uses non-breaking spaces when they could use a
normal space, or nothing at all, or CSS padding: I still hate you.  Die.
This commit is contained in:
Aryeh Gregor 2010-05-30 17:33:59 +00:00
parent 86572930d9
commit 74a21f3bd1
41 changed files with 107 additions and 106 deletions

View file

@ -1582,7 +1582,7 @@ if( count( $errs ) ) {
<div class="config-input">
<label class="column">Superuser account:</label>
<input type="checkbox" name="useroot" id="useroot" <?php if( $useRoot ) { ?>checked="checked" <?php } ?> />
&nbsp;<label for="useroot">Use superuser account</label>
&#160;<label for="useroot">Use superuser account</label>
</div>
<div class="config-input"><?php aField( $conf, "RootUser", "Superuser name:", "text" ); ?></div>
<div class="config-input"><?php aField( $conf, "RootPW", "Superuser password:", "password" ); ?></div>
@ -1689,7 +1689,7 @@ if( count( $errs ) ) {
</fieldset>
<div class="config-input" style="padding:2em 0 3em">
<label class='column'>&nbsp;</label>
<label class='column'>&#160;</label>
<input type="submit" value="Install MediaWiki!" class="btn-install" />
</div>
</div>

View file

@ -1562,7 +1562,7 @@ class Article {
$imageDir = $wgContLang->getDir();
$imageUrl = $wgStylePath . '/common/images/redirect' . $imageDir . '.png';
$imageUrl2 = $wgStylePath . '/common/images/nextredirect' . $imageDir . '.png';
$alt2 = $wgContLang->isRTL() ? '&larr;' : '&rarr;'; // should -> and <- be used instead of entities?
$alt2 = $wgContLang->isRTL() ? '←' : '→'; // should -> and <- be used instead of Unicode?
if ( $appendSubtitle ) {
$wgOut->appendSubtitle( wfMsgHtml( 'redirectpagesub' ) );

View file

@ -168,7 +168,7 @@ class ChangeTags {
return $data;
}
$html = implode( '&nbsp;', $data );
$html = implode( '&#160;', $data );
$html .= "\n" . Xml::element( 'input', array( 'type' => 'submit', 'value' => wfMsg( 'tag-filter-submit' ) ) );
$html .= "\n" . Xml::hidden( 'title', $wgTitle-> getPrefixedText() );
$html = Xml::tags( 'form', array( 'action' => $wgTitle->getLocalURL(), 'method' => 'get' ), $html );

View file

@ -87,7 +87,7 @@ class ChangesList {
* @param $bot Boolean
* @return String
*/
protected function recentChangesFlags( $new, $minor, $patrolled, $nothing = '&nbsp;', $bot = false ) {
protected function recentChangesFlags( $new, $minor, $patrolled, $nothing = '&#160;', $bot = false ) {
$f = $new ? self::flag( 'newpage' ) : $nothing;
$f .= $minor ? self::flag( 'minor' ) : $nothing;
$f .= $bot ? self::flag( 'bot' ) : $nothing;
@ -843,13 +843,13 @@ class EnhancedChangesList extends ChangesList {
$tl = "<span id='mw-rc-openarrow-$jsid' class='mw-changeslist-expanded' style='visibility:hidden'><a href='#' $toggleLink title='$expandTitle'>" . $this->sideArrow() . "</a></span>";
$tl .= "<span id='mw-rc-closearrow-$jsid' class='mw-changeslist-hidden' style='display:none'><a href='#' $toggleLink title='$closeTitle'>" . $this->downArrow() . "</a></span>";
$r .= '<td class="mw-enhanced-rc">'.$tl.'&nbsp;';
$r .= '<td class="mw-enhanced-rc">'.$tl.'&#160;';
# Main line
$r .= $this->recentChangesFlags( $isnew, false, $unpatrolled, '&nbsp;', $bot );
$r .= $this->recentChangesFlags( $isnew, false, $unpatrolled, '&#160;', $bot );
# Timestamp
$r .= '&nbsp;'.$block[0]->timestamp.'&nbsp;</td><td style="padding:0px;">';
$r .= '&#160;'.$block[0]->timestamp.'&#160;</td><td style="padding:0px;">';
# Article link
if( $namehidden ) {
@ -953,8 +953,8 @@ class EnhancedChangesList extends ChangesList {
#$r .= '<tr><td valign="top">'.$this->spacerArrow();
$r .= '<tr><td style="vertical-align:top;font-family:monospace; padding:0px;">';
$r .= $this->spacerIndent() . $this->spacerIndent();
$r .= $this->recentChangesFlags( $rc_new, $rc_minor, $rcObj->unpatrolled, '&nbsp;', $rc_bot );
$r .= '&nbsp;</td><td style="vertical-align:top; padding:0px;"><span style="font-family:monospace">';
$r .= $this->recentChangesFlags( $rc_new, $rc_minor, $rcObj->unpatrolled, '&#160;', $rc_bot );
$r .= '&#160;</td><td style="vertical-align:top; padding:0px;"><span style="font-family:monospace">';
$params = $queryParams;
@ -1069,7 +1069,7 @@ class EnhancedChangesList extends ChangesList {
* @return String: HTML <td> tag
*/
protected function spacerIndent() {
return '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
return '&#160;&#160;&#160;&#160;&#160;';
}
/**
@ -1089,14 +1089,14 @@ class EnhancedChangesList extends ChangesList {
$query['curid'] = $rc_cur_id;
$r = '<table class="mw-enhanced-rc"><tr>';
$r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow() . '&nbsp;';
$r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow() . '&#160;';
# Flag and Timestamp
if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
$r .= '&nbsp;&nbsp;&nbsp;&nbsp;'; // 4 flags -> 4 spaces
$r .= '&#160;&#160;&#160;&#160;'; // 4 flags -> 4 spaces
} else {
$r .= $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, '&nbsp;', $rc_bot );
$r .= $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, '&#160;', $rc_bot );
}
$r .= '&nbsp;'.$rcObj->timestamp.'&nbsp;</td><td style="padding:0px;">';
$r .= '&#160;'.$rcObj->timestamp.'&#160;</td><td style="padding:0px;">';
# Article or log link
if( $rc_log_type ) {
$logtitle = Title::newFromText( "Log/$rc_log_type", NS_SPECIAL );

View file

@ -2280,7 +2280,7 @@ INPUTS
);
$checkboxes['minor'] =
Xml::check( 'wpMinoredit', $checked['minor'], $attribs ) .
"&nbsp;<label for='wpMinoredit'" . $skin->tooltip( 'minoredit', 'withaccess' ) . ">{$minorLabel}</label>";
"&#160;<label for='wpMinoredit'" . $skin->tooltip( 'minoredit', 'withaccess' ) . ">{$minorLabel}</label>";
}
$watchLabel = wfMsgExt( 'watchthis', array( 'parseinline' ) );
@ -2293,7 +2293,7 @@ INPUTS
);
$checkboxes['watch'] =
Xml::check( 'wpWatchthis', $checked['watch'], $attribs ) .
"&nbsp;<label for='wpWatchthis'" . $skin->tooltip( 'watch', 'withaccess' ) . ">{$watchLabel}</label>";
"&#160;<label for='wpWatchthis'" . $skin->tooltip( 'watch', 'withaccess' ) . ">{$watchLabel}</label>";
}
wfRunHooks( 'EditPageBeforeEditChecks', array( &$this, &$checkboxes, &$tabindex ) );
return $checkboxes;

View file

@ -795,7 +795,7 @@ function wfMsgWikiHtml( $key ) {
* <i>parseinline</i>: parses wikitext to html and removes the surrounding
* p's added by parser or tidy
* <i>escape</i>: filters message through htmlspecialchars
* <i>escapenoentities</i>: same, but allows entity references like &nbsp; through
* <i>escapenoentities</i>: same, but allows entity references like &#160; through
* <i>replaceafter</i>: parameters are substituted after parsing or escaping
* <i>parsemag</i>: transform the message using magic phrases
* <i>content</i>: fetch message for content language instead of interface

View file

@ -587,7 +587,7 @@ class HTMLForm {
: $value->getDefault();
$tableHtml .= $value->getTableRow( $v );
if ( $value->getLabel() != '&nbsp;' )
if ( $value->getLabel() != '&#160;' )
$hasLeftColumn = true;
} elseif ( is_array( $value ) ) {
$section = $this->displaySection( $value, $key );
@ -1133,7 +1133,7 @@ class HTMLCheckField extends HTMLFormField {
$attr['disabled'] = 'disabled';
}
return Xml::check( $this->mName, $value, $attr ) . '&nbsp;' .
return Xml::check( $this->mName, $value, $attr ) . '&#160;' .
Html::rawElement( 'label', array( 'for' => $this->mID ), $this->mLabel );
}
@ -1142,7 +1142,7 @@ class HTMLCheckField extends HTMLFormField {
* added in getInputHTML(), rather than HTMLFormField::getRow()
*/
function getLabel() {
return '&nbsp;';
return '&#160;';
}
function loadDataFromRequest( $request ) {
@ -1333,7 +1333,7 @@ class HTMLMultiSelectField extends HTMLFormField {
$checkbox = Xml::check( $this->mName . '[]', in_array( $info, $value, true ),
$attribs + $thisAttribs );
$checkbox .= '&nbsp;' . Html::rawElement( 'label', array( 'for' => $this->mID . "-$info" ), $label );
$checkbox .= '&#160;' . Html::rawElement( 'label', array( 'for' => $this->mID . "-$info" ), $label );
$html .= $checkbox . '<br />';
}
@ -1425,7 +1425,7 @@ class HTMLRadioField extends HTMLFormField {
$info == $value,
$attribs + array( 'id' => $id )
);
$html .= '&nbsp;' .
$html .= '&#160;' .
Html::rawElement( 'label', array( 'for' => $id ), $label );
$html .= "<br />\n";

View file

@ -148,8 +148,8 @@ class HistoryPage {
) .
Xml::hidden( 'title', $this->title->getPrefixedDBKey() ) . "\n" .
Xml::hidden( 'action', 'history' ) . "\n" .
Xml::dateMenu( $year, $month ) . '&nbsp;' .
( $tagSelector ? ( implode( '&nbsp;', $tagSelector ) . '&nbsp;' ) : '' ) .
Xml::dateMenu( $year, $month ) . '&#160;' .
( $tagSelector ? ( implode( '&#160;', $tagSelector ) . '&#160;' ) : '' ) .
$checkDeleted .
Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
'</fieldset></form>'

View file

@ -107,7 +107,7 @@ class LogEventsList {
// Tag filter
if ($tagSelector) {
$html .= Xml::tags( 'p', null, implode( '&nbsp;', $tagSelector ) );
$html .= Xml::tags( 'p', null, implode( '&#160;', $tagSelector ) );
}
// Filter links

View file

@ -569,6 +569,7 @@ class MessageCache {
'&#32;' => ' ',
# Fix for NBSP, converted to space by firefox
'&nbsp;' => "\xc2\xa0",
'&#160;' => "\xc2\xa0",
) );
return $message;

View file

@ -817,7 +817,7 @@ abstract class TablePager extends IndexPager {
# Make table header
foreach ( $fields as $field => $name ) {
if ( strval( $name ) == '' ) {
$s .= "<th>&nbsp;</th>\n";
$s .= "<th>&#160;</th>\n";
} elseif ( $this->isFieldSortable( $field ) ) {
$query = array( 'sort' => $field, 'limit' => $this->mLimit );
if ( $field == $this->mSort ) {
@ -870,7 +870,7 @@ abstract class TablePager extends IndexPager {
$value = isset( $row->$field ) ? $row->$field : null;
$formatted = strval( $this->formatValue( $field, $value ) );
if ( $formatted == '' ) {
$formatted = '&nbsp;';
$formatted = '&#160;';
}
$s .= Xml::tags( 'td', $this->getCellAttrs( $field, $value ), $formatted );
}
@ -1061,7 +1061,7 @@ abstract class TablePager extends IndexPager {
/**
* Format a table cell. The return value should be HTML, but use an empty
* string not &nbsp; for empty cells. Do not include the <td> and </td>.
* string not &#160; for empty cells. Do not include the <td> and </td>.
*
* The current result row is available as $this->mCurrentRow, in case you
* need more context.

View file

@ -436,7 +436,7 @@ class Preferences {
$defaultPreferences['skin'] = array(
'type' => 'radio',
'options' => self::generateSkinOptions( $user ),
'label' => '&nbsp;',
'label' => '&#160;',
'section' => 'rendering/skin',
);
@ -488,7 +488,7 @@ class Preferences {
$defaultPreferences['math'] = array(
'type' => 'radio',
'options' => array_flip( array_map( 'wfMsgHtml', $wgLang->getMathNames() ) ),
'label' => '&nbsp;',
'label' => '&#160;',
'section' => 'rendering/math',
);
}
@ -519,7 +519,7 @@ class Preferences {
$defaultPreferences['date'] = array(
'type' => 'radio',
'options' => $dateOptions,
'label' => '&nbsp;',
'label' => '&#160;',
'section' => 'datetime/dateformat',
);
}

View file

@ -966,7 +966,7 @@ class Sanitizer {
/**
* Given HTML input, escape with htmlspecialchars but un-escape entites.
* This allows (generally harmless) entities like &nbsp; to survive.
* This allows (generally harmless) entities like &#160; to survive.
*
* @param $html String to escape
* @return String: escaped input

View file

@ -875,7 +875,7 @@ CSS;
}
function getQuickbarCompensator( $rows = 1 ) {
return "<td width='152' rowspan='{$rows}'>&nbsp;</td>";
return "<td width='152' rowspan='{$rows}'>&#160;</td>";
}
/**
@ -1275,7 +1275,7 @@ CSS;
. '<input type="submit" name="go" value="' . wfMsg( 'searcharticle' ) . '" />';
if( $wgUseTwoButtonsSearchForm ) {
$s .= '&nbsp;<input type="submit" name="fulltext" value="' . wfMsg( 'searchbutton' ) . "\" />\n";
$s .= '&#160;<input type="submit" name="fulltext" value="' . wfMsg( 'searchbutton' ) . "\" />\n";
} else {
$s .= ' <a href="' . $this->escapeSearchLink() . '" rel="search">' . wfMsg( 'powersearch-legend' ) . "</a>\n";
}

View file

@ -147,7 +147,7 @@ class Xml {
. "\n"
. Xml::closeElement( 'select' );
if ( !is_null( $label ) ) {
$ret = Xml::label( $label, $element_name ) . '&nbsp;' . $ret;
$ret = Xml::label( $label, $element_name ) . '&#160;' . $ret;
}
return $ret;
}
@ -368,7 +368,7 @@ class Xml {
*/
public static function inputLabel( $label, $name, $id, $size=false, $value=false, $attribs=array() ) {
list( $label, $input ) = self::inputLabelSep( $label, $name, $id, $size, $value, $attribs );
return $label . '&nbsp;' . $input;
return $label . '&#160;' . $input;
}
/**
@ -387,7 +387,7 @@ class Xml {
*/
public static function checkLabel( $label, $name, $id, $checked=false, $attribs=array() ) {
return self::check( $name, $checked, array( 'id' => $id ) + $attribs ) .
'&nbsp;' .
'&#160;' .
self::label( $label, $id, $attribs );
}
@ -397,7 +397,7 @@ class Xml {
*/
public static function radioLabel( $label, $name, $value, $id, $checked=false, $attribs=array() ) {
return self::radio( $name, $value, $checked, array( 'id' => $id ) + $attribs ) .
'&nbsp;' .
'&#160;' .
self::label( $label, $id, $attribs );
}

View file

@ -1141,9 +1141,9 @@ class TableDiffFormatter extends DiffFormatter {
}
public static function escapeWhiteSpace( $msg ) {
$msg = preg_replace( '/^ /m', '&nbsp; ', $msg );
$msg = preg_replace( '/ $/m', ' &nbsp;', $msg );
$msg = preg_replace( '/ /', '&nbsp; ', $msg );
$msg = preg_replace( '/^ /m', '&#160; ', $msg );
$msg = preg_replace( '/ $/m', ' &#160;', $msg );
$msg = preg_replace( '/ /', '&#160; ', $msg );
return $msg;
}
@ -1187,7 +1187,7 @@ class TableDiffFormatter extends DiffFormatter {
}
function emptyLine() {
return '<td colspan="2">&nbsp;</td>';
return '<td colspan="2">&#160;</td>';
}
function _added( $lines ) {

View file

@ -199,7 +199,7 @@ CONTROL;
// Check if page is editable
$editable = $this->mNewRev->getTitle()->userCan( 'edit' );
if ( $editable && $this->mNewRev->isCurrent() && $wgUser->isAllowed( 'rollback' ) ) {
$rollback = '&nbsp;&nbsp;&nbsp;' . $sk->generateRollback( $this->mNewRev );
$rollback = '&#160;&#160;&#160;' . $sk->generateRollback( $this->mNewRev );
} else {
$rollback = '';
}
@ -286,7 +286,7 @@ CONTROL;
$query['oldid'] = $this->mNewid;
# Skip next link on the top revision
if( $this->mNewRev->isCurrent() ) {
$nextlink = '&nbsp;';
$nextlink = '&#160;';
} else {
$nextlink = $sk->link(
$this->mTitle,
@ -401,7 +401,7 @@ CONTROL;
$link = $sk->revDeleteLink( $query,
$rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
}
$link = '&nbsp;&nbsp;&nbsp;' . $link . ' ';
$link = '&#160;&#160;&#160;' . $link . ' ';
}
return $link;
}

View file

@ -550,7 +550,7 @@ class WebInstaller extends Installer {
*/
function label( $msg, $forId, $contents ) {
if ( strval( $msg ) == '' ) {
$labelText = '&nbsp;';
$labelText = '&#160;';
} else {
$labelText = wfMsgHtml( $msg );
}
@ -717,7 +717,7 @@ class WebInstaller extends Installer {
$s .=
'<li>' .
Xml::radio( $params['controlName'], $value, $checked, $itemAttribs ) .
'&nbsp;' .
'&#160;' .
Xml::tags( 'label', array( 'for' => $id ), $this->parse(
wfMsgNoTrans( $params['itemLabelPrefix'] . strtolower( $value ) )
) ) .
@ -1492,7 +1492,7 @@ class WebInstaller_Options extends WebInstallerPage {
return
'<p>'.
Xml::element( 'img', array( 'src' => $this->getVar( 'wgRightsIcon' ) ) ) .
'&nbsp;&nbsp;' .
'&#160;&#160;' .
htmlspecialchars( $this->getVar( 'wgRightsText' ) ) .
"</p>\n" .
"<p style=\"text-align: center\">" .
@ -1725,6 +1725,6 @@ class WebInstaller_Copying extends WebInstaller_Document {
}
private static function replaceLeadingSpaces( $matches ) {
return "\n" . str_repeat( '&nbsp;', strlen( $matches[0] ) );
return "\n" . str_repeat( '&#160;', strlen( $matches[0] ) );
}
}

View file

@ -333,10 +333,10 @@ class Parser {
$fixtags = array(
# french spaces, last one Guillemet-left
# only if there is something before the space
'/(.) (?=\\?|:|;|!|%|\\302\\273)/' => '\\1&nbsp;\\2',
'/(.) (?=\\?|:|;|!|%|\\302\\273)/' => '\\1&#160;\\2',
# french spaces, Guillemet-right
'/(\\302\\253) /' => '\\1&nbsp;',
'/&nbsp;(!\s*important)/' => ' \\1', # Beware of CSS magic word !important, bug #11874.
'/(\\302\\253) /' => '\\1&#160;',
'/&#160;(!\s*important)/' => ' \\1', # Beware of CSS magic word !important, bug #11874.
);
$text = preg_replace( array_keys( $fixtags ), array_values( $fixtags ), $text );
@ -1366,7 +1366,7 @@ class Parser {
# Use the encoded URL
# This means that users can paste URLs directly into the text
# Funny characters like &ouml; aren't valid in URLs anyway
# Funny characters like ö aren't valid in URLs anyway
# This was changed in August 2004
$s .= $sk->makeExternalLink( $url, $text, false, $linktype,
$this->getExternalLinkAttribs( $url ) ) . $dtrail . $trail;

View file

@ -327,7 +327,7 @@ class AllmessagesTablePager extends TablePager {
$s .= Xml::openElement( 'tr', $this->getRowAttrs( $row, true ) );
$formatted = strval( $this->formatValue( 'am_actual', $row->am_actual ) );
if ( $formatted == '' ) {
$formatted = '&nbsp;';
$formatted = '&#160;';
}
$s .= Xml::tags( 'td', $this->getCellAttrs( 'am_actual', $row->am_actual ), $formatted )
. "</tr>\n";

View file

@ -250,7 +250,7 @@ class IPBlockForm {
</td>
</tr>
<tr id='wpAnonOnlyRow'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipbanononly' ),
'wpAnonOnly', 'wpAnonOnly', $this->BlockAnonOnly,
@ -258,7 +258,7 @@ class IPBlockForm {
</td>
</tr>
<tr id='wpCreateAccountRow'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipbcreateaccount' ),
'wpCreateAccount', 'wpCreateAccount', $this->BlockCreateAccount,
@ -266,7 +266,7 @@ class IPBlockForm {
</td>
</tr>
<tr id='wpEnableAutoblockRow'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipbenableautoblock' ),
'wpEnableAutoblock', 'wpEnableAutoblock', $this->BlockEnableAutoblock,
@ -278,7 +278,7 @@ class IPBlockForm {
if( self::canBlockEmail( $wgUser ) ) {
$wgOut->addHTML("
<tr id='wpEnableEmailBan'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipbemailban' ),
'wpEmailBan', 'wpEmailBan', $this->BlockEmail,
@ -292,7 +292,7 @@ class IPBlockForm {
if( $wgUser->isAllowed( 'hideuser' ) ) {
$wgOut->addHTML("
<tr id='wpEnableHideUser'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'><strong>" .
Xml::checkLabel( wfMsg( 'ipbhidename' ),
'wpHideName', 'wpHideName', $this->BlockHideName,
@ -307,7 +307,7 @@ class IPBlockForm {
if( $wgUser->isLoggedIn() ) {
$wgOut->addHTML("
<tr id='wpEnableWatchUser'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipbwatchuser' ),
'wpWatchUser', 'wpWatchUser', $this->BlockWatchUser,
@ -322,7 +322,7 @@ class IPBlockForm {
if( $wgBlockAllowsUTEdit ){
$wgOut->addHTML("
<tr id='wpAllowUsertalkRow'>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg( 'ipballowusertalk' ),
'wpAllowUsertalk', 'wpAllowUsertalk', $this->BlockAllowUsertalk,
@ -334,7 +334,7 @@ class IPBlockForm {
$wgOut->addHTML("
<tr>
<td style='padding-top: 1em'>&nbsp;</td>
<td style='padding-top: 1em'>&#160;</td>
<td class='mw-submit' style='padding-top: 1em'>" .
Xml::submitButton( wfMsg( $alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit' ),
array( 'name' => 'wpBlock', 'tabindex' => '13', 'accesskey' => 's' ) ) . "

View file

@ -101,7 +101,7 @@ class SpecialBookSources extends SpecialPage {
$form .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
$form .= Xml::hidden( 'title', $title->getPrefixedText() );
$form .= '<p>' . Xml::inputLabel( wfMsg( 'booksources-isbn' ), 'isbn', 'isbn', 20, $this->isbn );
$form .= '&nbsp;' . Xml::submitButton( wfMsg( 'booksources-go' ) ) . '</p>';
$form .= '&#160;' . Xml::submitButton( wfMsg( 'booksources-go' ) ) . '</p>';
$form .= Xml::closeElement( 'form' );
$form .= '</fieldset>';
return $form;

View file

@ -327,7 +327,7 @@ class SpecialContributions extends SpecialPage {
'</span>' .
Xml::checkLabel( wfMsg( 'history-show-deleted' ),
'deletedOnly', 'mw-show-deleted-only', $this->opts['deletedOnly'] ) .
( $tagFilter ? Xml::tags( 'p', null, implode( '&nbsp;', $tagFilter ) ) : '' ) .
( $tagFilter ? Xml::tags( 'p', null, implode( '&#160;', $tagFilter ) ) : '' ) .
Xml::openElement( 'p' ) .
'<span style="white-space: nowrap">' .
Xml::dateMenu( $this->opts['year'], $this->opts['month'] ) .

View file

@ -148,11 +148,11 @@ class SpecialExport extends SpecialPage {
$form = Xml::openElement( 'form', array( 'method' => 'post',
'action' => $this->getTitle()->getLocalUrl( 'action=submit' ) ) );
$form .= Xml::inputLabel( wfMsg( 'export-addcattext' ) , 'catname', 'catname', 40 ) . '&nbsp;';
$form .= Xml::inputLabel( wfMsg( 'export-addcattext' ) , 'catname', 'catname', 40 ) . '&#160;';
$form .= Xml::submitButton( wfMsg( 'export-addcat' ), array( 'name' => 'addcat' ) ) . '<br />';
if ( $wgExportFromNamespaces ) {
$form .= Xml::namespaceSelector( $nsindex, null, 'nsindex', wfMsg( 'export-addnstext' ) ) . '&nbsp;';
$form .= Xml::namespaceSelector( $nsindex, null, 'nsindex', wfMsg( 'export-addnstext' ) ) . '&#160;';
$form .= Xml::submitButton( wfMsg( 'export-addns' ), array( 'name' => 'addns' ) ) . '<br />';
}

View file

@ -149,7 +149,7 @@ class IPUnblockForm {
"</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( wfMsg( 'ipusubmit' ), array( 'name' => 'wpBlock', 'tabindex' => '3' ) ) .
"</td>
@ -382,7 +382,7 @@ class IPUnblockForm {
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'ipblocklist-legend' ) ) .
Xml::inputLabel( wfMsg( 'ipblocklist-username' ), 'ip', 'ip', /* size */ false, $this->ip ) .
'&nbsp;' .
'&#160;' .
Xml::submitButton( wfMsg( 'ipblocklist-submit' ) ) . '<br />' .
$hl .
Xml::closeElement( 'fieldset' )

View file

@ -198,7 +198,7 @@ class UsersPager extends AlphabeticPager {
$out .= Xml::option( $groupText, $group, $group == $this->requestedGroup );
$out .= Xml::closeElement( 'select' ) . '<br />';
$out .= Xml::checkLabel( wfMsg('listusers-editsonly'), 'editsOnly', 'editsOnly', $this->editsOnly );
$out .= '&nbsp;';
$out .= '&#160;';
$out .= Xml::checkLabel( wfMsg('listusers-creationsort'), 'creationSort', 'creationSort', $this->creationSort );
$out .= '<br />';

View file

@ -77,7 +77,7 @@ class DBLockForm {
<td align="left">{$lc}</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td align="left">
<input type="submit" name="wpLock" value="{$lb}" />
</td>

View file

@ -174,7 +174,7 @@ class SpecialMergeHistory extends SpecialPage {
"</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( wfMsg( 'mergehistory-submit' ), array( 'name' => 'merge', 'id' => 'mw-merge-submit' ) ) .
"</td>

View file

@ -277,7 +277,7 @@ class MovePageForm {
# move and we aren't moving the talk page.
$this->moveSubpages && ($this->oldTitle->hasSubpages() || $this->moveTalk),
array( 'id' => 'wpMovesubpages' )
) . '&nbsp;' .
) . '&#160;' .
Xml::tags( 'label', array( 'for' => 'wpMovesubpages' ),
wfMsgExt(
( $this->oldTitle->hasSubpages()
@ -310,7 +310,7 @@ class MovePageForm {
$wgOut->addHTML( "
{$confirm}
<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( $movepagebtn, array( 'name' => $submitVar ) ) .
"</td>

View file

@ -139,16 +139,16 @@ class ProtectedPagesForm {
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', array(), wfMsg( 'protectedpages' ) ) .
Xml::hidden( 'title', $title->getPrefixedDBkey() ) . "\n" .
$this->getNamespaceMenu( $namespace ) . "&nbsp;\n" .
$this->getTypeMenu( $type ) . "&nbsp;\n" .
$this->getLevelMenu( $level ) . "&nbsp;\n" .
$this->getNamespaceMenu( $namespace ) . "&#160;\n" .
$this->getTypeMenu( $type ) . "&#160;\n" .
$this->getLevelMenu( $level ) . "&#160;\n" .
"<br /><span style='white-space: nowrap'>" .
$this->getExpiryCheck( $indefOnly ) . "&nbsp;\n" .
$this->getCascadeCheck( $cascadeOnly ) . "&nbsp;\n" .
$this->getExpiryCheck( $indefOnly ) . "&#160;\n" .
$this->getCascadeCheck( $cascadeOnly ) . "&#160;\n" .
"</span><br /><span style='white-space: nowrap'>" .
$this->getSizeLimit( $sizetype, $size ) . "&nbsp;\n" .
$this->getSizeLimit( $sizetype, $size ) . "&#160;\n" .
"</span>" .
"&nbsp;" . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
"&#160;" . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
Xml::closeElement( 'fieldset' ) .
Xml::closeElement( 'form' );
}
@ -162,7 +162,7 @@ class ProtectedPagesForm {
*/
protected function getNamespaceMenu( $namespace = null ) {
return "<span style='white-space: nowrap'>" .
Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&nbsp;'
Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&#160;'
. Xml::namespaceSelector( $namespace, '' ) . "</span>";
}
@ -190,11 +190,11 @@ class ProtectedPagesForm {
return
Xml::radioLabel( wfMsg('minimum-size'), 'sizetype', 'min', 'wpmin', !$max ) .
'&nbsp;' .
'&#160;' .
Xml::radioLabel( wfMsg('maximum-size'), 'sizetype', 'max', 'wpmax', $max ) .
'&nbsp;' .
'&#160;' .
Xml::input( 'size', 9, $size, array( 'id' => 'wpsize' ) ) .
'&nbsp;' .
'&#160;' .
Xml::label( wfMsg('pagesize'), 'wpsize' );
}
@ -222,7 +222,7 @@ class ProtectedPagesForm {
}
return "<span style='white-space: nowrap'>" .
Xml::label( wfMsg('restriction-type') , $this->IdType ) . '&nbsp;' .
Xml::label( wfMsg('restriction-type') , $this->IdType ) . '&#160;' .
Xml::tags( 'select',
array( 'id' => $this->IdType, 'name' => $this->IdType ),
implode( "\n", $options ) ) . "</span>";

View file

@ -100,10 +100,10 @@ class ProtectedTitlesForm {
return "<form action=\"$action\" method=\"get\">\n" .
'<fieldset>' .
Xml::element( 'legend', array(), wfMsg( 'protectedtitles' ) ) .
Xml::hidden( 'title', $special ) . "&nbsp;\n" .
$this->getNamespaceMenu( $namespace ) . "&nbsp;\n" .
$this->getLevelMenu( $level ) . "&nbsp;\n" .
"&nbsp;" . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
Xml::hidden( 'title', $special ) . "&#160;\n" .
$this->getNamespaceMenu( $namespace ) . "&#160;\n" .
$this->getLevelMenu( $level ) . "&#160;\n" .
"&#160;" . Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
"</fieldset></form>";
}
@ -116,7 +116,7 @@ class ProtectedTitlesForm {
*/
function getNamespaceMenu( $namespace = null ) {
return Xml::label( wfMsg( 'namespace' ), 'namespace' )
. '&nbsp;'
. '&#160;'
. Xml::namespaceSelector( $namespace, '' );
}
@ -148,7 +148,7 @@ class ProtectedTitlesForm {
}
return
Xml::label( wfMsg('restriction-level') , $this->IdLevel ) . '&nbsp;' .
Xml::label( wfMsg('restriction-level') , $this->IdLevel ) . '&#160;' .
Xml::tags( 'select',
array( 'id' => $this->IdLevel, 'name' => $this->IdLevel ),
implode( "\n", $options ) );

View file

@ -1070,7 +1070,7 @@ class UndeleteForm {
if( $wgUser->isAllowed( 'suppressrevision' ) ) {
$unsuppressBox =
"<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-input'>" .
Xml::checkLabel( wfMsg('revdelete-unsuppress'), 'wpUnsuppress',
'mw-undelete-unsuppress', $this->mUnsuppress ).
@ -1096,7 +1096,7 @@ class UndeleteForm {
"</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( wfMsg( 'undeletebtn' ), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
Xml::element( 'input', array( 'type' => 'reset', 'value' => wfMsg( 'undeletereset' ), 'id' => 'mw-undelete-reset' ) ) . ' ' .

View file

@ -66,7 +66,7 @@ class DBUnlockForm {
<td align="left">{$lc}</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&#160;</td>
<td align="left">
<input type="submit" name="wpLock" value="{$lb}" />
</td>

View file

@ -675,7 +675,7 @@ class SpecialUpload extends SpecialPage {
// if there isn't an exact match...
$file = wfLocalFile( $filename );
}
$s = '&nbsp;';
$s = '&#160;';
if ( $file ) {
$exists = UploadBase::getExistsWarning( $file );
$warning = self::getExistsWarning( $exists );

View file

@ -296,9 +296,9 @@ function wfSpecialWatchlist( $par ) {
$form .= $wgLang->pipeList( $links );
$form .= Xml::openElement( 'form', array( 'method' => 'post', 'action' => $thisTitle->getLocalUrl(), 'id' => 'mw-watchlist-form-namespaceselector' ) );
$form .= '<hr /><p>';
$form .= Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&nbsp;';
$form .= Xml::namespaceSelector( $nameSpace, '' ) . '&nbsp;';
$form .= Xml::checkLabel( wfMsg('invert'), 'invert', 'nsinvert', $invert ) . '&nbsp;';
$form .= Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&#160;';
$form .= Xml::namespaceSelector( $nameSpace, '' ) . '&#160;';
$form .= Xml::checkLabel( wfMsg('invert'), 'invert', 'nsinvert', $invert ) . '&#160;';
$form .= Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . '</p>';
$form .= Xml::hidden( 'days', $days );
if( $hideMinor )

View file

@ -382,7 +382,7 @@ class SpecialWhatLinksHere extends SpecialPage {
$f .= ' ';
# Namespace selector
$f .= Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&nbsp;' .
$f .= Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&#160;' .
Xml::namespaceSelector( $namespace, '' );
$f .= ' ';

View file

@ -100,7 +100,7 @@ class UserloginTemplate extends QuickTemplate {
'tabindex' => '5'
) );
if ( $this->data['useemail'] && $this->data['canreset'] ) {
echo '&nbsp;';
echo '&#160;';
echo Html::input( 'wpMailmypassword', wfMsg( 'mailmypassword' ), 'submit', array(
'id' => 'wpMailmypassword',
'tabindex' => '6'

View file

@ -2410,7 +2410,7 @@ class Language {
}
} else {
if ( $ch == '&' ) {
$entityState = 1; // entity found, (e.g. "&nbsp;")
$entityState = 1; // entity found, (e.g. "&#160;")
} else {
$displayLen++; // this char is displayed
// Add on the other display text after this...

View file

@ -111,7 +111,7 @@ class profile_point {
if ( $name != $this->name() )
$e += array( $name => $ep );
$extet = " <a href=\"" . makeurl( false, false, $e ) . "\">[&ndash;]</a>";
$extet = " <a href=\"" . makeurl( false, false, $e ) . "\">[]</a>";
}
?>
<tr>

View file

@ -229,7 +229,7 @@ if($this->data['copyrightico']) { ?>
'accesskey' => $this->skin->accesskey( 'search' )
) ); ?>
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>&nbsp;
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>&#160;
<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
@ -267,7 +267,7 @@ if($this->data['copyrightico']) { ?>
if($this->data['feeds']) { ?>
<li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>&nbsp;
echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>&#160;
<?php } ?></li><?php
}

View file

@ -772,7 +772,7 @@ class VectorTemplate extends QuickTemplate {
<?php if ( $wgVectorUseSimpleSearch ): ?>
<div id="simpleSearch">
<input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
<button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>>&nbsp;</button>
<button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>>&#160;</button>
</div>
<?php else: ?>
<input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />