From: Fomafix Date: Thu, 11 Jan 2018 22:27:28 +0000 (+0100) Subject: Widgets: Allow titles with name of Object.prototypes X-Git-Tag: 1.31.0-rc.0~828^2 X-Git-Url: https://git.cyclocoop.org/%27.%24link.%27?a=commitdiff_plain;h=e24061424e6dfc5bf101cc6f85b178e4ac39c461;p=lhc%2Fweb%2Fwiklou.git Widgets: Allow titles with name of Object.prototypes Bug: T184776 Change-Id: I1ba75e779e9c4f0ce5957d752a02da27044b9d07 --- diff --git a/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js index 42ef1ac620..17da7d85f0 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js @@ -6,6 +6,8 @@ */ ( function ( $, mw ) { + var hasOwn = Object.prototype.hasOwnProperty; + /** * @class mw.widgets.PageExistenceCache * @private @@ -38,10 +40,10 @@ queue = this.existenceCheckQueue; this.existenceCheckQueue = {}; titles = Object.keys( queue ).filter( function ( title ) { - if ( cache.existenceCache.hasOwnProperty( title ) ) { + if ( hasOwn.call( cache.existenceCache, title ) ) { queue[ title ].resolve( cache.existenceCache[ title ] ); } - return !cache.existenceCache.hasOwnProperty( title ); + return !hasOwn.call( cache.existenceCache, title ); } ); if ( !titles.length ) { return; @@ -63,7 +65,7 @@ } ); titles.forEach( function ( title ) { var normalizedTitle = title; - while ( normalized[ normalizedTitle ] ) { + while ( hasOwn.call( normalized, normalizedTitle ) ) { normalizedTitle = normalized[ normalizedTitle ]; } cache.existenceCache[ title ] = pages[ normalizedTitle ]; @@ -81,7 +83,7 @@ */ PageExistenceCache.prototype.checkPageExistence = function ( title ) { var key = title.getPrefixedText(); - if ( !this.existenceCheckQueue[ key ] ) { + if ( !hasOwn.call( this.existenceCheckQueue, key ) ) { this.existenceCheckQueue[ key ] = $.Deferred(); } this.processExistenceCheckQueueDebounced(); diff --git a/resources/src/mediawiki.widgets/mw.widgets.CategoryMultiselectWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CategoryMultiselectWidget.js index d14a47abc5..045744cd4e 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CategoryMultiselectWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CategoryMultiselectWidget.js @@ -5,7 +5,8 @@ * @license The MIT License (MIT); see LICENSE.txt */ ( function ( $, mw ) { - var NS_CATEGORY = mw.config.get( 'wgNamespaceIds' ).category; + var hasOwn = Object.prototype.hasOwnProperty, + NS_CATEGORY = mw.config.get( 'wgNamespaceIds' ).category; /** * Category selector widget. Displays an OO.ui.CapsuleMultiselectWidget @@ -273,7 +274,7 @@ cacheKey = input + searchType.toString(); // Check cache - if ( this.searchCache[ cacheKey ] !== undefined ) { + if ( hasOwn.call( this.searchCache, cacheKey ) ) { return this.searchCache[ cacheKey ]; } diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js index 0c6385b33e..190962c774 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js @@ -5,6 +5,7 @@ * @license The MIT License (MIT); see LICENSE.txt */ ( function ( $, mw ) { + var hasOwn = Object.prototype.hasOwnProperty; /** * Mixin for title widgets @@ -254,7 +255,7 @@ titles.push( suggestionPage.title ); } - redirects = redirectsTo[ suggestionPage.title ] || []; + redirects = hasOwn.call( redirectsTo, suggestionPage.title ) ? redirectsTo[ suggestionPage.title ] : []; for ( i = 0, len = redirects.length; i < len; i++ ) { pageData[ redirects[ i ] ] = { missing: false, @@ -278,7 +279,7 @@ // mismatch where normalisation would make them matching (T50476) pageExistsExact = ( - Object.prototype.hasOwnProperty.call( pageData, this.getQueryValue() ) && + hasOwn.call( pageData, this.getQueryValue() ) && ( !pageData[ this.getQueryValue() ].missing || pageData[ this.getQueryValue() ].known @@ -286,7 +287,7 @@ ); pageExists = pageExistsExact || ( titleObj && - Object.prototype.hasOwnProperty.call( pageData, titleObj.getPrefixedText() ) && + hasOwn.call( pageData, titleObj.getPrefixedText() ) && ( !pageData[ titleObj.getPrefixedText() ].missing || pageData[ titleObj.getPrefixedText() ].known @@ -303,7 +304,7 @@ } for ( i = 0, len = titles.length; i < len; i++ ) { - page = pageData[ titles[ i ] ] || {}; + page = hasOwn.call( pageData, titles[ i ] ) ? pageData[ titles[ i ] ] : {}; items.push( this.createOptionWidget( this.getOptionWidgetData( titles[ i ], page ) ) ); }