r83487 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r83486‎ | r83487 | r83488 >
Date:21:44, 7 March 2011
Author:catrope
Status:ok (Comments)
Tags:
Comment:
Modified paths:
  • /branches/wmf/1.17wmf1/RELEASE-NOTES (modified) (history)
  • /branches/wmf/1.17wmf1/extensions/NewUserMessage/NewUserMessage.class.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/DefaultSettings.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/Linker.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/api/ApiEmailUser.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/api/ApiQueryAllUsers.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/api/ApiQueryBase.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/api/ApiQueryFilearchive.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/api/ApiQueryUsers.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/media/Generic.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/media/SVGMetadataExtractor.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/parser/Parser.php (modified) (history)
  • /branches/wmf/1.17wmf1/includes/specials/SpecialEmailuser.php (modified) (history)
  • /branches/wmf/1.17wmf1/resources/mediawiki.util/mediawiki.util.js (modified) (history)
  • /branches/wmf/1.17wmf1/resources/mediawiki/mediawiki.js (modified) (history)

Diff [purge]

Index: branches/wmf/1.17wmf1/extensions/NewUserMessage/NewUserMessage.class.php
@@ -84,11 +84,14 @@
8585 */
8686 static function fetchText() {
8787 $template = wfMsg( 'newusermessage-template-body' );
 88+
 89+ $title = Title::newFromText( $template );
 90+ if ( $title && $title->exists() && $title->getLength() ) {
 91+ return $template;
 92+ }
 93+
8894 // Fall back if necessary to the old template
89 - if ( !$template ) {
90 - $template = wfMsg( 'newusermessage-template' );
91 - }
92 - return $template;
 95+ return wfMsg( 'newusermessage-template' );
9396 }
9497
9598 /**
Index: branches/wmf/1.17wmf1/includes/parser/Parser.php
@@ -3936,7 +3936,7 @@
39373937 if ( $prevtoclevel > 0 && $prevtoclevel < $wgMaxTocLevel ) {
39383938 $toc .= $sk->tocUnindent( $prevtoclevel - 1 );
39393939 }
3940 - $toc = $sk->tocList( $toc );
 3940+ $toc = $sk->tocList( $toc, $this->mOptions->getUserLang() );
39413941 $this->mOutput->setTOCHTML( $toc );
39423942 }
39433943
Property changes on: branches/wmf/1.17wmf1/includes/parser/Parser.php
___________________________________________________________________
Modified: svn:mergeinfo
39443944 Merged /trunk/phase3/includes/parser/Parser.php:r82696,83270,83284,83374,83390,83392,83402-83403,83410-83411,83420,83461,83463
Index: branches/wmf/1.17wmf1/includes/Linker.php
@@ -1330,10 +1330,11 @@
13311331 * Wraps the TOC in a table and provides the hide/collapse javascript.
13321332 *
13331333 * @param $toc String: html of the Table Of Contents
 1334+ * @param $lang mixed: Language code for the toc title
13341335 * @return String: full html of the TOC
13351336 */
1336 - function tocList( $toc ) {
1337 - $title = wfMsgHtml( 'toc' ) ;
 1337+ function tocList( $toc, $lang = false ) {
 1338+ $title = wfMsgExt( 'toc', array( 'language' => $lang, 'escape' ) );
13381339 return
13391340 '<table id="toc" class="toc"><tr><td>'
13401341 . '<div id="toctitle"><h2>' . $title . "</h2></div>\n"
Index: branches/wmf/1.17wmf1/includes/api/ApiQueryBase.php
@@ -440,6 +440,36 @@
441441 return substr( $this->keyToTitle( $keyPart . 'x' ), 0, - 1 );
442442 }
443443
 444+ /**
 445+ * Filters hidden users (where the user doesn't have the right to view them)
 446+ * Also adds relevant block information
 447+ *
 448+ * @param bool $showBlockInfo
 449+ * @return void
 450+ */
 451+ public function showHiddenUsersAddBlockInfo( $showBlockInfo ) {
 452+ global $wgUser;
 453+ $userCanViewHiddenUsers = $wgUser->isAllowed( 'hideuser' );
 454+
 455+ if ( $showBlockInfo || !$userCanViewHiddenUsers ) {
 456+ $this->addTables( 'ipblocks' );
 457+ $this->addJoinConds( array(
 458+ 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=user_id' ),
 459+ ) );
 460+
 461+ $this->addFields( 'ipb_deleted' );
 462+
 463+ if ( $showBlockInfo ) {
 464+ $this->addFields( array( 'ipb_reason', 'ipb_by_text', 'ipb_expiry' ) );
 465+ }
 466+
 467+ // Don't show hidden names
 468+ if ( !$userCanViewHiddenUsers ) {
 469+ $this->addWhereFld( 'ipb_deleted', 0 );
 470+ }
 471+ }
 472+ }
 473+
444474 public function getPossibleErrors() {
445475 return array_merge( parent::getPossibleErrors(), array(
446476 array( 'invalidtitle', 'title' ),
Index: branches/wmf/1.17wmf1/includes/api/ApiQueryFilearchive.php
@@ -66,7 +66,7 @@
6767
6868 $this->addTables( 'filearchive' );
6969
70 - $this->addFields( 'fa_name' );
 70+ $this->addFields( array( 'fa_name', 'fa_deleted' ) );
7171 $this->addFieldsIf( 'fa_storage_key', $fld_sha1 );
7272 $this->addFieldsIf( 'fa_timestamp', $fld_timestamp );
7373
@@ -92,27 +92,22 @@
9393 $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
9494 $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
9595 $this->addWhereRange( 'fa_name', $dir, $from, null );
96 - if ( isset( $params['prefix'] ) )
 96+ if ( isset( $params['prefix'] ) ) {
9797 $this->addWhere( 'fa_name' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
98 -
99 - if ( isset( $params['minsize'] ) ) {
100 - $this->addWhere( 'fa_size>=' . intval( $params['minsize'] ) );
10198 }
102 -
103 - if ( isset( $params['maxsize'] ) ) {
104 - $this->addWhere( 'fa_size<=' . intval( $params['maxsize'] ) );
 99+
 100+ if ( !$wgUser->isAllowed( 'suppressrevision' ) ) {
 101+ // Filter out revisions that the user is not allowed to see. There
 102+ // is no way to indicate that we have skipped stuff because the
 103+ // continuation parameter is fa_name
 104+
 105+ // Note that this field is unindexed. This should however not be
 106+ // a big problem as files with fa_deleted are rare
 107+ $this->addWhereFld( 'fa_deleted', 0 );
105108 }
106109
107 - $sha1 = false;
108 - if ( isset( $params['sha1'] ) ) {
109 - $sha1 = wfBaseConvert( $params['sha1'], 16, 36, 31 );
110 - } elseif ( isset( $params['sha1base36'] ) ) {
111 - $sha1 = $params['sha1base36'];
112 - }
113 - if ( $sha1 ) {
114 - $this->addWhere( 'fa_storage_key=' . $db->addQuotes( $sha1 ) );
115 - }
116 -
 110+
 111+
117112 $limit = $params['limit'];
118113 $this->addOption( 'LIMIT', $limit + 1 );
119114 $this->addOption( 'ORDER BY', 'fa_name' .
@@ -162,7 +157,22 @@
163158 if ( $fld_mime ) {
164159 $file['mime'] = "$row->fa_major_mime/$row->fa_minor_mime";
165160 }
 161+
 162+ if ( $row->fa_deleted & File::DELETED_FILE ) {
 163+ $file['filehidden'] = '';
 164+ }
 165+ if ( $row->fa_deleted & File::DELETED_COMMENT ) {
 166+ $file['commenthidden'] = '';
 167+ }
 168+ if ( $row->fa_deleted & File::DELETED_USER ) {
 169+ $file['userhidden'] = '';
 170+ }
 171+ if ( $row->fa_deleted & File::DELETED_RESTRICTED ) {
 172+ // This file is deleted for normal admins
 173+ $file['suppressed'] = '';
 174+ }
166175
 176+
167177 $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $file );
168178 if ( !$fit ) {
169179 $this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->fa_name ) );
@@ -177,12 +187,6 @@
178188 return array (
179189 'from' => null,
180190 'prefix' => null,
181 - 'minsize' => array(
182 - ApiBase::PARAM_TYPE => 'integer',
183 - ),
184 - 'maxsize' => array(
185 - ApiBase::PARAM_TYPE => 'integer',
186 - ),
187191 'limit' => array(
188192 ApiBase::PARAM_DFLT => 10,
189193 ApiBase::PARAM_TYPE => 'limit',
@@ -197,8 +201,6 @@
198202 'descending'
199203 )
200204 ),
201 - 'sha1' => null,
202 - 'sha1base36' => null,
203205 'prop' => array(
204206 ApiBase::PARAM_DFLT => 'timestamp',
205207 ApiBase::PARAM_ISMULTI => true,
@@ -222,11 +224,7 @@
223225 'from' => 'The image title to start enumerating from',
224226 'prefix' => 'Search for all image titles that begin with this value',
225227 'dir' => 'The direction in which to list',
226 - 'minsize' => 'Limit to images with at least this many bytes',
227 - 'maxsize' => 'Limit to images with at most this many bytes',
228228 'limit' => 'How many total images to return',
229 - 'sha1' => "SHA1 hash of image. Overrides {$this->getModulePrefix()}sha1base36",
230 - 'sha1base36' => 'SHA1 hash of image in base 36 (used in MediaWiki)',
231229 'prop' => array(
232230 'What image information to get:',
233231 ' sha1 - Adds sha1 hash for the image',
Index: branches/wmf/1.17wmf1/includes/api/ApiEmailUser.php
@@ -63,6 +63,17 @@
6464 'CCMe' => $params['ccme'],
6565 );
6666 $retval = SpecialEmailUser::submit( $data );
 67+
 68+ if ( $retval instanceof Status ) {
 69+ // SpecialEmailUser sometimes returns a status
 70+ // sometimes it doesn't.
 71+ if ( $retval->isGood() ) {
 72+ $retval = true;
 73+ } else {
 74+ $retval = $retval->getErrorsArray();
 75+ }
 76+ }
 77+
6778 if ( $retval === true ) {
6879 $result = array( 'result' => 'Success' );
6980 } else {
Index: branches/wmf/1.17wmf1/includes/api/ApiQueryAllUsers.php
@@ -96,15 +96,7 @@
9797 } else {
9898 $sqlLimit = $limit + 1;
9999 }
100 - if ( $fld_blockinfo ) {
101 - $this->addTables( 'ipblocks' );
102 - $this->addTables( 'user', 'u2' );
103 - $u2 = $this->getAliasedName( 'user', 'u2' );
104 - $this->addJoinConds( array(
105 - 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=u1.user_id' ),
106 - $u2 => array( 'LEFT JOIN', 'ipb_by=u2.user_id' ) ) );
107 - $this->addFields( array( 'ipb_reason', 'u2.user_name AS blocker_name' ) );
108 - }
 100+ $this->showHiddenUsersAddBlockInfo( $fld_blockinfo );
109101
110102 $this->addOption( 'LIMIT', $sqlLimit );
111103
@@ -169,6 +161,9 @@
170162 $lastUserData['blockedby'] = $row->blocker_name;
171163 $lastUserData['blockreason'] = $row->ipb_reason;
172164 }
 165+ if ( $row->ipb_deleted ) {
 166+ $lastUserData['hidden'] = '';
 167+ }
173168 if ( $fld_editcount ) {
174169 $lastUserData['editcount'] = intval( $row->user_editcount );
175170 }
@@ -206,7 +201,7 @@
207202 }
208203
209204 public function getCacheMode( $params ) {
210 - return 'public';
 205+ return 'anon-public-user-private';
211206 }
212207
213208 public function getAllowedParams() {
Index: branches/wmf/1.17wmf1/includes/api/ApiQueryUsers.php
@@ -114,16 +114,9 @@
115115 $this->addJoinConds( array( 'user_groups' => array( 'LEFT JOIN', 'ug_user=u1.user_id' ) ) );
116116 $this->addFields( 'ug_group' );
117117 }
118 - if ( isset( $this->prop['blockinfo'] ) ) {
119 - $this->addTables( 'ipblocks' );
120 - $this->addTables( 'user', 'u2' );
121 - $u2 = $this->getAliasedName( 'user', 'u2' );
122 - $this->addJoinConds( array(
123 - 'ipblocks' => array( 'LEFT JOIN', 'ipb_user=u1.user_id' ),
124 - $u2 => array( 'LEFT JOIN', 'ipb_by=u2.user_id' ) ) );
125 - $this->addFields( array( 'ipb_reason', 'u2.user_name AS blocker_name', 'ipb_expiry' ) );
126 - }
127118
 119+ $this->showHiddenUsersAddBlockInfo( isset( $this->prop['blockinfo'] ) );
 120+
128121 $data = array();
129122 $res = $this->select( __METHOD__ );
130123 foreach ( $res as $row ) {
@@ -144,8 +137,20 @@
145138 $data[$name]['groups'][] = $row->ug_group;
146139 }
147140
148 - if ( isset( $this->prop['blockinfo'] ) && !is_null( $row->blocker_name ) ) {
149 - $data[$name]['blockedby'] = $row->blocker_name;
 141+ if ( isset( $this->prop['rights'] ) && !is_null( $row->ug_group ) ) {
 142+ if ( !isset( $data[$name]['rights'] ) ) {
 143+ $data[$name]['rights'] = User::getGroupPermissions( User::getImplicitGroups() );
 144+ }
 145+
 146+ $data[$name]['rights'] = array_unique( array_merge( $data[$name]['rights'],
 147+ User::getGroupPermissions( array( $row->ug_group ) ) ) );
 148+ $result->setIndexedTagName( $data[$name]['rights'], 'r' );
 149+ }
 150+ if ( $row->ipb_deleted ) {
 151+ $data[$name]['hidden'] = '';
 152+ }
 153+ if ( isset( $this->prop['blockinfo'] ) && !is_null( $row->ipb_by_text ) ) {
 154+ $data[$name]['blockedby'] = $row->ipb_by_text;
150155 $data[$name]['blockreason'] = $row->ipb_reason;
151156 $data[$name]['blockexpiry'] = $row->ipb_expiry;
152157 }
@@ -239,7 +244,7 @@
240245 if ( isset( $params['token'] ) ) {
241246 return 'private';
242247 } else {
243 - return 'public';
 248+ return 'anon-public-user-private';
244249 }
245250 }
246251
Index: branches/wmf/1.17wmf1/includes/media/Generic.php
@@ -81,7 +81,8 @@
8282 /**
8383 * Get handler-specific metadata which will be saved in the img_metadata field.
8484 *
85 - * @param $image File: the image object, or false if there isn't one
 85+ * @param $image File: the image object, or false if there isn't one.
 86+ * Warning, File::getPropsFromPath might pass an (object)array() instead (!)
8687 * @param $path String: the filename
8788 * @return String
8889 */
Index: branches/wmf/1.17wmf1/includes/media/SVGMetadataExtractor.php
@@ -47,13 +47,40 @@
4848 * @param $source String: URI from which to read
4949 */
5050 function __construct( $source ) {
 51+ global $wgSVGMetadataCutoff;
5152 $this->reader = new XMLReader();
52 - $this->reader->open( $source, null, LIBXML_NOERROR | LIBXML_NOWARNING );
5353
 54+ // Don't use $file->getSize() since file object passed to SVGHandler::getMetadata is bogus.
 55+ $size = filesize( $source );
 56+ if ( $size === false ) {
 57+ throw new MWException( "Error getting filesize of SVG." );
 58+ }
 59+
 60+ if ( $size > $wgSVGMetadataCutoff ) {
 61+ $this->debug( "SVG is $size bytes, which is bigger than $wgSVGMetadataCutoff. Truncating." );
 62+ $contents = file_get_contents( $source, false, null, -1, $wgSVGMetadataCutoff );
 63+ if ($contents === false) {
 64+ throw new MWException( 'Error reading SVG file.' );
 65+ }
 66+ $this->reader->XML( $contents, null, LIBXML_NOERROR | LIBXML_NOWARNING );
 67+ } else {
 68+ $this->reader->open( $source, null, LIBXML_NOERROR | LIBXML_NOWARNING );
 69+ }
 70+
5471 $this->metadata['width'] = self::DEFAULT_WIDTH;
5572 $this->metadata['height'] = self::DEFAULT_HEIGHT;
5673
57 - $this->read();
 74+ // Because we cut off the end of the svg making an invalid one. Complicated
 75+ // try catch thing to make sure warnings get restored. Seems like there should
 76+ // be a better way.
 77+ wfSuppressWarnings();
 78+ try {
 79+ $this->read();
 80+ } catch( Exception $e ) {
 81+ wfRestoreWarnings();
 82+ throw $e;
 83+ }
 84+ wfRestoreWarnings();
5885 }
5986
6087 /*
@@ -83,7 +110,6 @@
84111
85112 $exitDepth = $this->reader->depth;
86113 $keepReading = $this->reader->read();
87 - $skip = false;
88114 while ( $keepReading ) {
89115 $tag = $this->reader->name;
90116 $type = $this->reader->nodeType;
@@ -100,17 +126,15 @@
101127 $this->readXml( $tag, 'metadata' );
102128 } elseif ( $tag !== '#text' ) {
103129 $this->debug( "Unhandled top-level XML tag $tag" );
104 - $this->animateFilter( $tag );
105 - //$skip = true;
 130+
 131+ if ( !isset( $this->metadata['animated'] ) ) {
 132+ // Recurse into children of current tag, looking for animation.
 133+ $this->animateFilter( $tag );
 134+ }
106135 }
107136
108 - if ($skip) {
109 - $keepReading = $this->reader->next();
110 - $skip = false;
111 - $this->debug( "Skip" );
112 - } else {
113 - $keepReading = $this->reader->read();
114 - }
 137+ // Goto next element, which is sibling of current (Skip children).
 138+ $keepReading = $this->reader->next();
115139 }
116140
117141 $this->reader->close();
@@ -134,7 +158,7 @@
135159 if( $this->reader->name == $name && $this->reader->nodeType == XmlReader::END_ELEMENT ) {
136160 break;
137161 } elseif( $this->reader->nodeType == XmlReader::TEXT ){
138 - $this->metadata[$metafield] = $this->reader->value;
 162+ $this->metadata[$metafield] = trim( $this->reader->value );
139163 }
140164 $keepReading = $this->reader->read();
141165 }
Index: branches/wmf/1.17wmf1/includes/DefaultSettings.php
@@ -665,6 +665,9 @@
666666 $wgSVGConverterPath = '';
667667 /** Don't scale a SVG larger than this */
668668 $wgSVGMaxSize = 2048;
 669+/** Don't read SVG metadata beyond this point.
 670+ * Default is 1024*256 bytes */
 671+$wgSVGMetadataCutoff = 262144;
669672
670673 /**
671674 * MediaWiki will reject HTMLesque tags in uploaded files due to idiotic browsers which can't
Property changes on: branches/wmf/1.17wmf1/includes/DefaultSettings.php
___________________________________________________________________
Modified: svn:mergeinfo
672675 Merged /trunk/phase3/includes/DefaultSettings.php:r82696,83270,83284,83374,83390,83392,83402-83403,83410-83411,83420,83461,83463
Index: branches/wmf/1.17wmf1/includes/specials/SpecialEmailuser.php
@@ -221,7 +221,8 @@
222222 * getPermissionsError(). It is probably also a good
223223 * idea to check the edit token and ping limiter in advance.
224224 *
225 - * @return Mixed: True on success, String on error
 225+ * @return Mixed: Status object, or potentially a String on error
 226+ * or maybe even true on success if anything uses the EmailUser hook.
226227 */
227228 public static function submit( $data ) {
228229 global $wgUser, $wgUserEmailUseReplyTo;
Index: branches/wmf/1.17wmf1/RELEASE-NOTES
@@ -101,6 +101,8 @@
102102 which should be resolved by the 1.18 release
103103 * $wgCopyrightIcon is deprecated and $wgFooterIcons['copyright']['copyright'] should
104104 be used instead.
 105+* (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an svg we
 106+ look at when finding metadata to prevent excessive resource usage.
105107
106108 === New features in 1.17 ===
107109 * (bug 10183) Users can now add personal styles and scripts to all skins via
@@ -505,7 +507,11 @@
506508 * (bug 27479) API error when using both prop=pageprops and
507509 prop=info&inprop=displaytitle
508510 * (bug 27715) imageinfo didn't respect revdelete
509 -
 511+* (bug 27862) Useremail module didn't properly return success on success.
 512+* (bug 27590) prop=imageinfo now allows querying the media type
 513+* (bug 27587) list=filearchive now outputs full title info
 514+* (bug 27018) Added action=filerevert to revert files to an old version
 515+* (bug 27897) list=allusers and list=users list hidden users
510516 * (bug 22738) Allow filtering by action type on query=logevent.
511517 * (bug 22764) uselang parameter for action=parse.
512518 * (bug 22944) API: watchlist options are inconsistent.
Property changes on: branches/wmf/1.17wmf1/RELEASE-NOTES
___________________________________________________________________
Modified: svn:mergeinfo
513519 Merged /trunk/phase3/RELEASE-NOTES:r82696,83270,83284,83374,83390,83392,83402-83403,83410-83411,83420,83461,83463
Index: branches/wmf/1.17wmf1/resources/mediawiki.util/mediawiki.util.js
@@ -235,7 +235,10 @@
236236 return null;
237237 }
238238 // Setup the anchor tag
239 - var $link = $('<a />').attr( 'href', href ).text( text );
 239+ var $link = $( '<a></a>' ).attr( 'href', href ).text( text );
 240+ if ( tooltip ) {
 241+ $link.attr( 'title', tooltip );
 242+ }
240243
241244 // Some skins don't have any portlets
242245 // just add it to the bottom of their 'sidebar' element as a fallback
@@ -261,11 +264,11 @@
262265 if ($ul.length === 0) {
263266 // If there's no <div> inside, append it to the portlet directly
264267 if ($portlet.find( 'div' ).length === 0) {
265 - $portlet.append( '<ul/>' );
 268+ $portlet.append( '<ul></ul>' );
266269 } else {
267270 // otherwise if there's a div (such as div.body or div.pBody)
268271 // append the <ul> to last (most likely only) div
269 - $portlet.find( 'div' ).eq( -1 ).append( '<ul/>' );
 272+ $portlet.find( 'div' ).eq( -1 ).append( '<ul></ul>' );
270273 }
271274 // Select the created element
272275 $ul = $portlet.find( 'ul' ).eq( 0 );
@@ -280,7 +283,7 @@
281284
282285 // Wrap the anchor tag in a <span> and create a list item for it
283286 // and back up the selector to the list item
284 - var $item = $link.wrap( '<li><span /></li>' ).parent().parent();
 287+ var $item = $link.wrap( '<li><span></span></li>' ).parent().parent();
285288
286289 // Implement the properties passed to the function
287290 if ( id ) {
Index: branches/wmf/1.17wmf1/resources/mediawiki/mediawiki.js
@@ -14,7 +14,7 @@
1515 return str.substr( 0, 1 ).toUpperCase() + str.substr( 1, str.length );
1616 },
1717 escapeRE : function( str ) {
18 - return str.replace ( /([\\{}()|.?*+^$\[\]])/g, "\\$1" );
 18+ return str.replace ( /([\\{}()\|.?*+-^$\[\]])/g, "\\$1" );
1919 },
2020 isEmpty : function( v ) {
2121 var key;
Property changes on: branches/wmf/1.17wmf1/resources/mediawiki/mediawiki.js
___________________________________________________________________
Modified: svn:mergeinfo
2222 Merged /trunk/phase3/resources/mediawiki/mediawiki.js:r82696,83270,83284,83374,83390,83392,83402-83403,83410-83411,83420,83461,83463

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r82696(Bug #27634) TOC title appears in wrong language...mah20:32, 23 February 2011
r83270(bug 27862; follow-up r77714) Make emailuser api module not freak out when Sp...bawolff03:35, 5 March 2011
r83284Fixed (bug 27848) Escape '-' in $.escapeRE()krinkle14:46, 5 March 2011
r83374(bug 27508) SVGMetadataExtractor takes too much resources on huge svg's. Chan...bawolff08:15, 6 March 2011
r83390* (bug 27897) list=allusers and list=users list hidden users...reedy17:59, 6 March 2011
r83392Followup r83390, change cache modesreedy18:16, 6 March 2011
r83402Fix where ipb_deleted from r83390reedy20:38, 6 March 2011
r83403Followup r83390...reedy20:51, 6 March 2011
r83410Breaking change: remove faminsize/famaxsize because they lead to an unindexed...btongminh22:03, 6 March 2011
r83411Kill filtering by hash because the query is unindexed. We need a condition on...btongminh22:16, 6 March 2011
r83420Fix for IE7, jQuery magic doesn't help here, it needs to be valid html, short...krinkle23:25, 6 March 2011
r83461(bug 27722) list=filearchive now supports revdel...btongminh17:07, 7 March 2011
r83463Follow-up r83461, replace deleted with hidden and reverse the word, e.g. dele...btongminh17:17, 7 March 2011
r83468(bug 27753) Fix the fallback to newuser-message-template by inspecting the te...btongminh18:27, 7 March 2011

Comments

#Comment by Krinkle (talk | contribs)   19:31, 8 March 2011
+			if ( tooltip ) {
+				$link.attr( 'title', tooltip );
+			}

That wasn't in any of the mentioned revisions. That was added/moved in r80786.

#Comment by Catrope (talk | contribs)   10:47, 9 March 2011

Yeah. I remember it showing up during conflict resolution, and I decided to keep it.

Status & tagging log