jenkins-bot has submitted this change and it was merged.

Change subject: build: Enable jscs rule 'requireVarDeclFirst' and make pass
......................................................................


build: Enable jscs rule 'requireVarDeclFirst' and make pass

Change-Id: Ia2f765d12bde001c329c2ff4c080a36b71de9803
---
M .jscsrc
M build/tasks/jsduckcatconfig.js
M modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
M modules/ve-mw/dm/models/ve.dm.MWTemplateModel.js
M modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
M modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
M modules/ve-mw/dm/nodes/ve.dm.MWReferenceNode.js
M modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
M modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
M modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
M modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
M modules/ve-mw/init/ve.init.mw.Platform.js
M modules/ve-mw/init/ve.init.mw.Target.js
M modules/ve-mw/init/ve.init.mw.trackSubscriber.js
M modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
M modules/ve-mw/tests/ve.test.utils.js
M modules/ve-mw/ui/commands/ve.ui.MWUseExistingReferenceCommand.js
M modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js
M modules/ve-mw/ui/inspectors/ve.ui.MWAlienExtensionInspector.js
M modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js
M modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWReferenceSourceSelectWidget.js
25 files changed, 210 insertions(+), 164 deletions(-)

Approvals:
  Cscott: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/.jscsrc b/.jscsrc
index 9c685d3..deae449 100644
--- a/.jscsrc
+++ b/.jscsrc
@@ -1,6 +1,5 @@
 {
        "preset": "wikimedia",
 
-       "requireVarDeclFirst": null,
        "jsDoc": null
 }
diff --git a/build/tasks/jsduckcatconfig.js b/build/tasks/jsduckcatconfig.js
index afc1ca0..92075fc 100644
--- a/build/tasks/jsduckcatconfig.js
+++ b/build/tasks/jsduckcatconfig.js
@@ -35,8 +35,9 @@
                                        targetCat.forEach( function ( 
targetGroupName ) {
                                                // ... find the category in the 
aggregate source
                                                srcCategories.forEach( function 
( aggrCat ) {
+                                                       var targetGroup;
                                                        if ( aggrCat.name === 
targetGroupName ) {
-                                                               var targetGroup 
= {
+                                                               targetGroup = {
                                                                        name: 
targetGroupName,
                                                                        
classes: []
                                                                };
diff --git a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js 
b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
index 68553af..aa83ca4 100644
--- a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
+++ b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
@@ -57,17 +57,19 @@
  * @returns {Object} Plain object with 'title' and 'hrefPrefix' keys.
  */
 ve.dm.MWInternalLinkAnnotation.static.getTargetDataFromHref = function ( href, 
doc ) {
+       var relativeBase, relativeBaseRegex, relativeHref, matches;
+
        function regexEscape( str ) {
                return str.replace( /([.?*+^$[\]\\(){}|-])/g, '\\$1' );
        }
 
-       var // Protocol relative base
-               relativeBase = ve.resolveUrl( mw.config.get( 'wgArticlePath' ), 
doc ).replace( /^https?:/, '' ),
-               relativeBaseRegex = new RegExp( regexEscape( relativeBase 
).replace( regexEscape( '$1' ), '(.*)' ) ),
-               // Protocol relative href
-               relativeHref = href.replace( /^https?:/, '' ),
-               // Check if this matches the server's article path
-               matches = relativeHref.match( relativeBaseRegex );
+       // Protocol relative base
+       relativeBase = ve.resolveUrl( mw.config.get( 'wgArticlePath' ), doc 
).replace( /^https?:/, '' );
+       relativeBaseRegex = new RegExp( regexEscape( relativeBase ).replace( 
regexEscape( '$1' ), '(.*)' ) );
+       // Protocol relative href
+       relativeHref = href.replace( /^https?:/, '' );
+       // Check if this matches the server's article path
+       matches = relativeHref.match( relativeBaseRegex );
 
        if ( matches ) {
                // Take the relative path
diff --git a/modules/ve-mw/dm/models/ve.dm.MWTemplateModel.js 
b/modules/ve-mw/dm/models/ve.dm.MWTemplateModel.js
index 950b62d..2ca256d 100644
--- a/modules/ve-mw/dm/models/ve.dm.MWTemplateModel.js
+++ b/modules/ve-mw/dm/models/ve.dm.MWTemplateModel.js
@@ -208,14 +208,15 @@
                }
                // Unknown parameters in alpha-numeric order second, empty 
string at the very end
                paramNames.sort( function ( a, b ) {
+                       var aIsNaN = isNaN( a ),
+                               bIsNaN = isNaN( b );
+
                        if ( a === '' ) {
                                return 1;
                        }
                        if ( b === '' ) {
                                return -1;
                        }
-                       var aIsNaN = isNaN( a ),
-                               bIsNaN = isNaN( b );
                        if ( aIsNaN && bIsNaN ) {
                                // Two strings
                                return a < b ? -1 : a === b ? 0 : 1;
diff --git a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js 
b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
index 316aa2c..b1238e6 100644
--- a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
+++ b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
@@ -194,14 +194,15 @@
 
        /** */
        ve.dm.MWTransclusionModel.prototype.fetch = function () {
+               var i, len, item, title, queue,
+                       titles = [],
+                       specs = {};
+
                if ( !this.queue.length ) {
                        return;
                }
 
-               var i, len, item, title,
-                       titles = [],
-                       specs = {},
-                       queue = this.queue.slice();
+               queue = this.queue.slice();
 
                // Clear shared queue for future calls
                this.queue.length = 0;
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
index 1a833d9..2b7cde3 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
@@ -79,6 +79,10 @@
 };
 
 ve.dm.MWBlockImageNode.static.toDataElement = function ( domElements, 
converter ) {
+       var dataElement, newDimensions, attributes,
+               figure, imgWrapper, img, caption,
+               classAttr, typeofAttrs, errorIndex, width, height, altText;
+
        // Workaround for jQuery's .children() being expensive due to
        // https://github.com/jquery/sizzle/issues/311
        function findChildren( parent, nodeNames ) {
@@ -87,17 +91,16 @@
                } );
        }
 
-       var dataElement, newDimensions, attributes,
-               figure = domElements[ 0 ],
-               imgWrapper = findChildren( figure, [ 'a', 'span' ] )[ 0 ] || 
null,
-               img = imgWrapper && findChildren( imgWrapper, [ 'img' ] )[ 0 ] 
|| null,
-               caption = findChildren( figure, [ 'figcaption' ] )[ 0 ] || null,
-               classAttr = figure.getAttribute( 'class' ),
-               typeofAttrs = figure.getAttribute( 'typeof' ).split( ' ' ),
-               errorIndex = typeofAttrs.indexOf( 'mw:Error' ),
-               width = img && img.getAttribute( 'width' ),
-               height = img && img.getAttribute( 'height' ),
-               altText = img && img.getAttribute( 'alt' );
+       figure = domElements[ 0 ];
+       imgWrapper = findChildren( figure, [ 'a', 'span' ] )[ 0 ] || null;
+       img = imgWrapper && findChildren( imgWrapper, [ 'img' ] )[ 0 ] || null;
+       caption = findChildren( figure, [ 'figcaption' ] )[ 0 ] || null;
+       classAttr = figure.getAttribute( 'class' );
+       typeofAttrs = figure.getAttribute( 'typeof' ).split( ' ' );
+       errorIndex = typeofAttrs.indexOf( 'mw:Error' );
+       width = img && img.getAttribute( 'width' );
+       height = img && img.getAttribute( 'height' );
+       altText = img && img.getAttribute( 'alt' );
 
        if ( errorIndex !== -1 ) {
                typeofAttrs.splice( errorIndex, 1 );
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWReferenceNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWReferenceNode.js
index 373a437..422f120 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWReferenceNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWReferenceNode.js
@@ -59,27 +59,28 @@
 ve.dm.MWReferenceNode.static.listKeyRegex = /^(auto|literal)\/(.*)$/;
 
 ve.dm.MWReferenceNode.static.toDataElement = function ( domElements, converter 
) {
+       var dataElement, mwDataJSON, mwData, reflistItemId, body, refGroup, 
listGroup, autoKeyed, listKey, queueResult, listIndex, contentsUsed;
+
        function getReflistItemHtml( id ) {
                var elem = converter.getHtmlDocument().getElementById( id );
                return elem && elem.innerHTML || '';
        }
 
-       var dataElement,
-               mwDataJSON = domElements[ 0 ].getAttribute( 'data-mw' ),
-               mwData = mwDataJSON ? JSON.parse( mwDataJSON ) : {},
-               reflistItemId = mwData.body && mwData.body.id,
-               body = ( mwData.body && mwData.body.html ) ||
-                       ( reflistItemId && getReflistItemHtml( reflistItemId ) 
) ||
-                       '',
-               refGroup = mwData.attrs && mwData.attrs.group || '',
-               listGroup = this.name + '/' + refGroup,
-               autoKeyed = !mwData.attrs || mwData.attrs.name === undefined,
-               listKey = autoKeyed ?
-                       'auto/' + converter.internalList.getNextUniqueNumber() :
-                       'literal/' + mwData.attrs.name,
-               queueResult = converter.internalList.queueItemHtml( listGroup, 
listKey, body ),
-               listIndex = queueResult.index,
-               contentsUsed = ( body !== '' && queueResult.isNew );
+       mwDataJSON = domElements[ 0 ].getAttribute( 'data-mw' );
+       mwData = mwDataJSON ? JSON.parse( mwDataJSON ) : {};
+       reflistItemId = mwData.body && mwData.body.id;
+       body = ( mwData.body && mwData.body.html ) ||
+               ( reflistItemId && getReflistItemHtml( reflistItemId ) ) ||
+               '';
+       refGroup = mwData.attrs && mwData.attrs.group || '';
+       listGroup = this.name + '/' + refGroup;
+       autoKeyed = !mwData.attrs || mwData.attrs.name === undefined;
+       listKey = autoKeyed ?
+               'auto/' + converter.internalList.getNextUniqueNumber() :
+               'literal/' + mwData.attrs.name;
+       queueResult = converter.internalList.queueItemHtml( listGroup, listKey, 
body );
+       listIndex = queueResult.index;
+       contentsUsed = ( body !== '' && queueResult.isNew );
 
        dataElement = {
                type: this.name,
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
index 1cbc0f0..306fc26 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
@@ -123,8 +123,9 @@
                originalMw = dataElement.attributes.originalMw;
 
        function wrapTextNode( node ) {
+               var wrapper;
                if ( node.nodeType === Node.TEXT_NODE ) {
-                       var wrapper = doc.createElement( 'span' );
+                       wrapper = doc.createElement( 'span' );
                        wrapper.appendChild( node );
                        return wrapper;
                }
@@ -285,12 +286,13 @@
  * @return {boolean} Transclusion only contains a single template, which is 
one of the ones in templates
  */
 ve.dm.MWTransclusionNode.prototype.isSingleTemplate = function ( templates ) {
+       var i, len, partsList = this.getPartsList();
+
        function normalizeTitle( name ) {
                var title = mw.Title.newFromText( name );
                return title ? title.getPrefixedText() : name;
        }
 
-       var i, len, partsList = this.getPartsList();
        if ( partsList.length !== 1 ) {
                return false;
        }
diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js 
b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
index f7e03a3..40e6ab3 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.init.js
@@ -30,6 +30,8 @@
                plugins = [];
 
        function showLoading() {
+               var $content, contentRect, offsetTop, windowHeight, top, 
bottom, middle;
+
                if ( !init.$loading ) {
                        init.$loading = $(
                                '<div 
class="ve-init-mw-desktopArticleTarget-loading-overlay">' +
@@ -40,13 +42,14 @@
                                '</div>'
                        );
                }
-               var $content = $( '#content' ),
-                       contentRect = $content[ 0 ].getBoundingClientRect(),
-                       offsetTop = $content.offset().top,
-                       windowHeight = $( window ).height(),
-                       top = Math.max( contentRect.top, 0 ),
-                       bottom = Math.min( contentRect.bottom, windowHeight ),
-                       middle = ( top + bottom ) / 2;
+
+               $content = $( '#content' );
+               contentRect = $content[ 0 ].getBoundingClientRect();
+               offsetTop = $content.offset().top;
+               windowHeight = $( window ).height();
+               top = Math.max( contentRect.top, 0 );
+               bottom = Math.min( contentRect.bottom, windowHeight );
+               middle = ( top + bottom ) / 2;
 
                init.$loading.css( 'top', middle - offsetTop );
 
@@ -116,10 +119,12 @@
                                        return 
mw.libs.ve.targetLoader.loadModules();
                                } )
                                .then( function () {
+                                       var target;
+
                                        // Transfer methods
                                        
ve.init.mw.DesktopArticleTarget.prototype.setupSectionEditLinks = 
init.setupSectionLinks;
 
-                                       var target = new 
ve.init.mw.DesktopArticleTarget();
+                                       target = new 
ve.init.mw.DesktopArticleTarget();
                                        $( '#content' ).append( target.$element 
);
                                        return target;
                                }, function ( e ) {
@@ -278,14 +283,6 @@
                },
 
                setupTabs: function () {
-                       // HACK: Remove this when the Education Program offers 
a proper way to detect and disable.
-                       if (
-                               // HACK: Work around 
jscs.requireCamelCaseOrUpperCaseIdentifiers
-                               mw.config.get( 'wgNamespaceIds' )[ true && 
'education_program' ] === mw.config.get( 'wgNamespaceNumber' )
-                       ) {
-                               return;
-                       }
-
                        var caVeEdit,
                                action = pageExists ? 'edit' : 'create',
                                pTabsId = $( '#p-views' ).length ? 'p-views' : 
'p-cactions',
@@ -296,7 +293,19 @@
                                $caVeEditLink = $caVeEdit.find( 'a' ),
                                reverseTabOrder = $( 'body' ).hasClass( 'rtl' ) 
&& pTabsId === 'p-views',
                                /*jshint bitwise:false */
-                               caVeEditNextnode = ( reverseTabOrder ^ 
conf.tabPosition === 'before' ) ? $caEdit.get( 0 ) : $caEdit.next().get( 0 );
+                               caVeEditNextnode =
+                                       ( reverseTabOrder ^ conf.tabPosition 
=== 'before' ) ?
+                                               /*jshint bitwise:true */
+                                               $caEdit.get( 0 ) :
+                                               $caEdit.next().get( 0 );
+
+                       // HACK: Remove this when the Education Program offers 
a proper way to detect and disable.
+                       if (
+                               // HACK: Work around 
jscs.requireCamelCaseOrUpperCaseIdentifiers
+                               mw.config.get( 'wgNamespaceIds' )[ true && 
'education_program' ] === mw.config.get( 'wgNamespaceNumber' )
+                       ) {
+                               return;
+                       }
 
                        if ( !$caVeEdit.length ) {
                                // The below duplicates the functionality of 
VisualEditorHooks::onSkinTemplateNavigation()
diff --git a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
index a26f3c1..19a623f 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.DesktopArticleTarget.js
@@ -230,12 +230,13 @@
  * @inheritdoc
  */
 ve.init.mw.DesktopArticleTarget.prototype.loadSuccess = function ( response ) {
+       var $checkboxes, defaults, data,
+               target = this;
+
        // Parent method
        ve.init.mw.DesktopArticleTarget.super.prototype.loadSuccess.apply( 
this, arguments );
 
-       var $checkboxes, defaults,
-               target = this,
-               data = response ? response.visualeditor : {};
+       data = response ? response.visualeditor : {};
 
        this.checkboxFields = [];
        this.checkboxesByName = {};
@@ -603,10 +604,10 @@
  * @param {jQuery.Event} e Keydown event
  */
 ve.init.mw.DesktopArticleTarget.prototype.onDocumentKeyDown = function ( e ) {
+       var target = this;
+
        // Parent method
        
ve.init.mw.DesktopArticleTarget.super.prototype.onDocumentKeyDown.apply( this, 
arguments );
-
-       var target = this;
 
        if ( e.which === OO.ui.Keys.ESCAPE ) {
                setTimeout( function () {
@@ -641,10 +642,11 @@
 ve.init.mw.DesktopArticleTarget.prototype.saveComplete = function (
        html, categoriesHtml, newid, isRedirect, displayTitle, lastModified, 
contentSub, modules, jsconfigvars
 ) {
+       var newUrlParams, watchChecked;
+
        // Parent method
        ve.init.mw.DesktopArticleTarget.super.prototype.saveComplete.apply( 
this, arguments );
 
-       var newUrlParams, watchChecked;
        if ( !this.pageExists || this.restoring ) {
                // This is a page creation or restoration, refresh the page
                this.teardownUnloadHandlers();
diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
index 1fd7ad3..0675fb7 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.MobileArticleTarget.js
@@ -78,10 +78,12 @@
  * @inheritdoc
  */
 ve.init.mw.MobileArticleTarget.prototype.onSurfaceReady = function () {
+       var surfaceModel;
+
        // Parent method
        ve.init.mw.MobileArticleTarget.super.prototype.onSurfaceReady.apply( 
this, arguments );
 
-       var surfaceModel = this.getSurface().getModel();
+       surfaceModel = this.getSurface().getModel();
        surfaceModel.connect( this, {
                blur: 'onSurfaceBlur',
                focus: 'onSurfaceFocus'
diff --git a/modules/ve-mw/init/ve.init.mw.Platform.js 
b/modules/ve-mw/init/ve.init.mw.Platform.js
index 2e246d9..237801f 100644
--- a/modules/ve-mw/init/ve.init.mw.Platform.js
+++ b/modules/ve-mw/init/ve.init.mw.Platform.js
@@ -60,7 +60,8 @@
 
 /** @inheritdoc */
 ve.init.mw.Platform.prototype.addParsedMessages = function ( messages ) {
-       for ( var key in messages ) {
+       var key;
+       for ( key in messages ) {
                this.parsedMessages[ key ] = messages[ key ];
        }
 };
diff --git a/modules/ve-mw/init/ve.init.mw.Target.js 
b/modules/ve-mw/init/ve.init.mw.Target.js
index 7c001aa..93b11a5 100644
--- a/modules/ve-mw/init/ve.init.mw.Target.js
+++ b/modules/ve-mw/init/ve.init.mw.Target.js
@@ -427,8 +427,8 @@
  * @param {string} status Text status message
  */
 ve.init.mw.Target.prototype.saveSuccess = function ( doc, saveData, response ) 
{
-       this.saving = false;
        var data = response.visualeditoredit;
+       this.saving = false;
        if ( !data ) {
                this.saveFail( doc, saveData, null, 'Invalid response from 
server', response );
        } else if ( data.result !== 'success' ) {
@@ -885,8 +885,8 @@
  * @fires serializeComplete
  */
 ve.init.mw.Target.prototype.serializeSuccess = function ( response ) {
-       this.serializing = false;
        var data = response.visualeditor;
+       this.serializing = false;
        if ( !data && !response.error ) {
                this.serializeFail( null, 'Invalid response from server', null 
);
        } else if ( response.error ) {
@@ -1409,11 +1409,13 @@
  * @fires saveInitiated
  */
 ve.init.mw.Target.prototype.startSave = function ( saveDeferred ) {
+       var saveOptions;
+
        if ( this.deactivating ) {
                return false;
        }
 
-       var saveOptions = this.getSaveOptions();
+       saveOptions = this.getSaveOptions();
 
        // Reset any old captcha data
        if ( this.captcha ) {
@@ -1572,23 +1574,24 @@
  * @returns {boolean} Submitting has been started
 */
 ve.init.mw.Target.prototype.submit = function ( wikitext, fields ) {
+       var key, $form, params;
+
        // Prevent duplicate requests
        if ( this.submitting ) {
                return false;
        }
        // Save DOM
        this.submitting = true;
-       var key,
-               $form = $( '<form method="post" enctype="multipart/form-data" 
style="display: none;"></form>' ),
-               params = ve.extendObject( {
-                       format: 'text/x-wiki',
-                       model: 'wikitext',
-                       oldid: this.requestedRevId,
-                       wpStarttime: this.startTimeStamp,
-                       wpEdittime: this.baseTimeStamp,
-                       wpTextbox1: wikitext,
-                       wpEditToken: this.editToken
-               }, fields );
+       $form = $( '<form method="post" enctype="multipart/form-data" 
style="display: none;"></form>' );
+       params = ve.extendObject( {
+               format: 'text/x-wiki',
+               model: 'wikitext',
+               oldid: this.requestedRevId,
+               wpStarttime: this.startTimeStamp,
+               wpEdittime: this.baseTimeStamp,
+               wpTextbox1: wikitext,
+               wpEditToken: this.editToken
+       }, fields );
        // Add params as hidden fields
        for ( key in params ) {
                $form.append( $( '<input>' ).attr( { type: 'hidden', name: key, 
value: params[ key ] } ) );
@@ -1655,8 +1658,9 @@
        var target = this;
        setTimeout( function () {
                // Build model
+               var dmDoc;
                ve.track( 'trace.convertModelFromDom.enter' );
-               var dmDoc = ve.dm.converter.getModelFromDom( doc, {
+               dmDoc = ve.dm.converter.getModelFromDom( doc, {
                        lang: mw.config.get( 'wgVisualEditor' 
).pageLanguageCode,
                        dir: mw.config.get( 'wgVisualEditor' ).pageLanguageDir
                } );
@@ -1666,14 +1670,15 @@
                dmDoc.buildNodeTree();
                ve.track( 'trace.buildModelTree.exit' );
                setTimeout( function () {
+                       var surface, surfaceView, $documentNode;
                        // Clear dummy surfaces
                        target.clearSurfaces();
 
                        // Create ui.Surface (also creates ce.Surface and 
dm.Surface and builds CE tree)
                        ve.track( 'trace.createSurface.enter' );
-                       var surface = target.addSurface( dmDoc ),
-                               surfaceView = surface.getView(),
-                               $documentNode = 
surfaceView.getDocument().getDocumentNode().$element;
+                       surface = target.addSurface( dmDoc );
+                       surfaceView = surface.getView();
+                       $documentNode = 
surfaceView.getDocument().getDocumentNode().$element;
                        ve.track( 'trace.createSurface.exit' );
 
                        surface.$element
@@ -1772,6 +1777,7 @@
  * @fires saveWorkflowBegin
  */
 ve.init.mw.Target.prototype.showSaveDialog = function () {
+       var target = this;
        this.emit( 'saveWorkflowBegin' );
 
        // Preload the serialization
@@ -1779,8 +1785,6 @@
                this.docToSave = this.getSurface().getDom();
        }
        this.prepareCacheKey( this.docToSave );
-
-       var target = this;
 
        // Connect events to save dialog
        this.getSurface().getDialogs().getWindow( 'mwSave' ).done( function ( 
win ) {
@@ -1818,11 +1822,13 @@
  * @method
  */
 ve.init.mw.Target.prototype.restoreEditSection = function () {
+       var surfaceView, $documentNode, $section, headingNode;
+
        if ( this.section !== undefined && this.section > 0 ) {
-               var surfaceView = this.getSurface().getView(),
-                       $documentNode = 
surfaceView.getDocument().getDocumentNode().$element,
-                       $section = $documentNode.find( 'h1, h2, h3, h4, h5, h6' 
).eq( this.section - 1 ),
-                       headingNode = $section.data( 'view' );
+               surfaceView = this.getSurface().getView();
+               $documentNode = 
surfaceView.getDocument().getDocumentNode().$element;
+               $section = $documentNode.find( 'h1, h2, h3, h4, h5, h6' ).eq( 
this.section - 1 );
+               headingNode = $section.data( 'view' );
 
                if ( $section.length && new mw.Uri().query.summary === 
undefined ) {
                        this.initialEditSummary = '/* ' +
diff --git a/modules/ve-mw/init/ve.init.mw.trackSubscriber.js 
b/modules/ve-mw/init/ve.init.mw.trackSubscriber.js
index 2812846..f4870e2 100644
--- a/modules/ve-mw/init/ve.init.mw.trackSubscriber.js
+++ b/modules/ve-mw/init/ve.init.mw.trackSubscriber.js
@@ -8,14 +8,16 @@
  */
 
 ( function () {
+       var timing, editingSessionId;
+
        if ( mw.loader.getState( 'schema.Edit' ) === null ) {
                // Only route any events into the Edit schema if the module is 
actually available.
                // It won't be if EventLogging is installed but WikimediaEvents 
is not.
                return;
        }
 
-       var timing = {},
-               editingSessionId = mw.user.generateRandomSessionId();
+       timing = {};
+       editingSessionId = mw.user.generateRandomSessionId();
 
        function computeDuration( action, event, timeStamp ) {
                if ( event.timing !== undefined ) {
diff --git a/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js 
b/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
index 9b3be9f..eea42bd 100644
--- a/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
+++ b/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
@@ -45,7 +45,8 @@
                                method: 'autolinkUrl',
                                expectedRange: new ve.Range( 52, 52 ),
                                expectedData: function ( data ) {
-                                       for ( var i = 1; i < 51; i++ ) {
+                                       var i;
+                                       for ( i = 1; i < 51; i++ ) {
                                                data[ i ] = [ data[ i ], [ 0 ] 
];
                                        }
                                },
diff --git a/modules/ve-mw/tests/ve.test.utils.js 
b/modules/ve-mw/tests/ve.test.utils.js
index b77a6e3..21dfdef 100644
--- a/modules/ve-mw/tests/ve.test.utils.js
+++ b/modules/ve-mw/tests/ve.test.utils.js
@@ -6,12 +6,15 @@
  */
 
 ve.test.utils.createSurfaceFromDocument = function ( doc ) {
+       var target, mwTarget;
+
        // Prevent the target from setting up the surface immediately
        ve.init.platform.initialized = $.Deferred();
+
        // HACK: MW targets are async and heavy, use an SA target but
        // override the global registration
-       var target = new ve.init.sa.Target(),
-               mwTarget = new ve.init.mw.Target();
+       target = new ve.init.sa.Target();
+       mwTarget = new ve.init.mw.Target();
 
        $( '#qunit-fixture' ).append( target.$element );
        target.addSurface( doc );
diff --git a/modules/ve-mw/ui/commands/ve.ui.MWUseExistingReferenceCommand.js 
b/modules/ve-mw/ui/commands/ve.ui.MWUseExistingReferenceCommand.js
index dbea21c..b2984d2 100644
--- a/modules/ve-mw/ui/commands/ve.ui.MWUseExistingReferenceCommand.js
+++ b/modules/ve-mw/ui/commands/ve.ui.MWUseExistingReferenceCommand.js
@@ -30,13 +30,14 @@
  * @inheritdoc
  */
 ve.ui.MWUseExistingReferenceCommand.prototype.isExecutable = function ( 
fragment ) {
+       var groupName, groups;
+
        // Parent method
        if ( 
!ve.ui.MWUseExistingReferenceCommand.super.prototype.isExecutable.apply( this, 
arguments ) ) {
                return false;
        }
 
-       var groupName,
-               groups = 
fragment.getDocument().getInternalList().getNodeGroups();
+       groups = fragment.getDocument().getInternalList().getNodeGroups();
 
        for ( groupName in groups ) {
                if ( groupName.lastIndexOf( 'mwReference/' ) === 0 && groups[ 
groupName ].indexOrder.length ) {
diff --git a/modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js 
b/modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js
index 094389b..208716e 100644
--- a/modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js
+++ b/modules/ve-mw/ui/commands/ve.ui.MWWikitextWarningCommand.js
@@ -30,10 +30,10 @@
  * @inheritdoc
  */
 ve.ui.MWWikitextWarningCommand.prototype.execute = function () {
+       var command = this;
        if ( this.warning && this.warning.isOpen ) {
                return false;
        }
-       var command = this;
        mw.notify(
                $( $.parseHTML( ve.init.platform.getParsedMessage( 
'visualeditor-wikitext-warning' ) ) )
                        .filter( 'a' ).attr( 'target', '_blank' ).end(),
diff --git a/modules/ve-mw/ui/inspectors/ve.ui.MWAlienExtensionInspector.js 
b/modules/ve-mw/ui/inspectors/ve.ui.MWAlienExtensionInspector.js
index e5a5182..1f505a4 100644
--- a/modules/ve-mw/ui/inspectors/ve.ui.MWAlienExtensionInspector.js
+++ b/modules/ve-mw/ui/inspectors/ve.ui.MWAlienExtensionInspector.js
@@ -94,10 +94,10 @@
 
 /** */
 ve.ui.MWAlienExtensionInspector.prototype.updateMwData = function ( mwData ) {
+       var key;
+
        // Parent method
        ve.ui.MWAlienExtensionInspector.super.prototype.updateMwData.call( 
this, mwData );
-
-       var key;
 
        if ( !ve.isEmptyObject( this.attributeInputs ) ) {
                // Make sure we have an attrs object to populate
diff --git a/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js 
b/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js
index 3f34de4..87ea21d 100644
--- a/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js
+++ b/modules/ve-mw/ui/pages/ve.ui.MWAdvancedSettingsPage.js
@@ -213,31 +213,30 @@
  * @param {Object} [data] Dialog setup data
  */
 ve.ui.MWAdvancedSettingsPage.prototype.setup = function ( metaList ) {
-       this.metaList = metaList;
-
-       var // Indexing items
-               indexingField = this.indexing.getField(),
-               indexingOption = this.getMetaItem( 'mwIndex' ),
-               indexingType = indexingOption && indexingOption.element.type || 
'default',
-
-               // New section edit link items
-               newSectionEditField = this.newEditSectionLink.getField(),
-               newSectionEditLinkOption = this.getMetaItem( 'mwNewSectionEdit' 
),
-               newSectionEditLinkType = newSectionEditLinkOption && 
newSectionEditLinkOption.element.type || 'default',
-
-               displayTitleItem = this.getMetaItem( 'mwDisplayTitle' ),
-               displayTitle = displayTitleItem && 
displayTitleItem.getAttribute( 'content' ) || '',
-
+       var indexingField, indexingOption, indexingType,
+               newSectionEditField, newSectionEditLinkOption, 
newSectionEditLinkType,
+               displayTitleItem, displayTitle,
                advancedSettingsPage = this;
 
+       this.metaList = metaList;
+
        // Indexing items
+       indexingField = this.indexing.getField();
+       indexingOption = this.getMetaItem( 'mwIndex' );
+       indexingType = indexingOption && indexingOption.element.type || 
'default';
        indexingField.selectItemByData( indexingType );
        this.indexingOptionTouched = false;
 
        // New section edit link items
+       newSectionEditField = this.newEditSectionLink.getField();
+       newSectionEditLinkOption = this.getMetaItem( 'mwNewSectionEdit' );
+       newSectionEditLinkType = newSectionEditLinkOption && 
newSectionEditLinkOption.element.type || 'default';
        newSectionEditField.selectItemByData( newSectionEditLinkType );
        this.newSectionEditLinkOptionTouched = false;
 
+       // Display title items
+       displayTitleItem = this.getMetaItem( 'mwDisplayTitle' );
+       displayTitle = displayTitleItem && displayTitleItem.getAttribute( 
'content' ) || '';
        this.enableDisplayTitleCheckbox.setSelected( !!displayTitleItem );
        this.displayTitleInput.setValue( displayTitle );
        this.displayTitleInput.setDisabled( !displayTitle );
@@ -256,25 +255,20 @@
  * @param {Object} [data] Dialog tear down data
  */
 ve.ui.MWAdvancedSettingsPage.prototype.teardown = function ( data ) {
+       var currentIndexingItem, newIndexingData,
+               currentNewSectionEditLinkItem, newNewSectionEditLinkOptionData,
+               currentDisplayTitleItem, newDisplayTitle, 
newDisplayTitleItemData,
+               advancedSettingsPage = this;
+
        // Data initialization
        data = data || {};
        if ( data.action !== 'apply' ) {
                return;
        }
 
-       var // Indexing items
-               currentIndexingItem = this.getMetaItem( 'mwIndex' ),
-               newIndexingData = this.indexing.getField().getSelectedItem(),
-
-               // New section edit link items
-               currentNewSectionEditLinkItem = this.getMetaItem( 
'mwNewSectionEdit' ),
-               newNewSectionEditLinkOptionData = 
this.newEditSectionLink.getField().getSelectedItem(),
-
-               currentDisplayTitleItem = this.getMetaItem( 'mwDisplayTitle' ),
-               newDisplayTitle = this.displayTitleInput.getValue(),
-               newDisplayTitleItemData = { type: 'mwDisplayTitle', attributes: 
{ content: newDisplayTitle } },
-
-               advancedSettingsPage = this;
+       // Indexing items
+       currentIndexingItem = this.getMetaItem( 'mwIndex' );
+       newIndexingData = this.indexing.getField().getSelectedItem();
 
        // Alter the indexing option flag iff it's been touched & is actually 
different
        if ( this.indexingOptionTouched ) {
@@ -296,6 +290,10 @@
                }
        }
 
+       // New section edit link items
+       currentNewSectionEditLinkItem = this.getMetaItem( 'mwNewSectionEdit' );
+       newNewSectionEditLinkOptionData = 
this.newEditSectionLink.getField().getSelectedItem();
+
        // Alter the new section edit option flag iff it's been touched & is 
actually different
        if ( this.newSectionEditLinkOptionTouched ) {
                if ( newNewSectionEditLinkOptionData.data === 'default' ) {
@@ -316,6 +314,12 @@
                }
        }
 
+       // Display title items
+       currentDisplayTitleItem = this.getMetaItem( 'mwDisplayTitle' );
+       newDisplayTitle = this.displayTitleInput.getValue();
+       newDisplayTitleItemData = { type: 'mwDisplayTitle', attributes: { 
content: newDisplayTitle } };
+
+       // Alter the display title flag iff it's been touched & is actually 
different
        if ( this.displayTitleTouched ) {
                if ( currentDisplayTitleItem ) {
                        if ( newDisplayTitle ) {
diff --git a/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js 
b/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js
index 98d0ada..adeafc1 100644
--- a/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js
+++ b/modules/ve-mw/ui/pages/ve.ui.MWSettingsPage.js
@@ -236,26 +236,24 @@
  * @param {Object} [data] Dialog setup data
  */
 ve.ui.MWSettingsPage.prototype.setup = function ( metaList ) {
-       this.metaList = metaList;
-
-       var // Table of Contents items
-               tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' ),
-               tableOfContentsField = this.tableOfContents.getField(),
-               tableOfContentsMode = tableOfContentsMetaItem &&
-                       tableOfContentsMetaItem.getType() || 'default',
-
-               // Redirect items
-               redirectTargetItem = this.getMetaItem( 'mwRedirect' ),
-               redirectTarget = redirectTargetItem && 
redirectTargetItem.getAttribute( 'title' ) || '',
-               redirectStatic = this.getMetaItem( 'mwStaticRedirect' ),
-
+       var tableOfContentsMetaItem, tableOfContentsField, tableOfContentsMode,
+               redirectTargetItem, redirectTarget, redirectStatic,
                settingsPage = this;
 
+       this.metaList = metaList;
+
        // Table of Contents items
+       tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' );
+       tableOfContentsField = this.tableOfContents.getField();
+       tableOfContentsMode = tableOfContentsMetaItem &&
+               tableOfContentsMetaItem.getType() || 'default';
        tableOfContentsField.selectItemByData( tableOfContentsMode );
        this.tableOfContentsTouched = false;
 
        // Redirect items (disabled states set by change event)
+       redirectTargetItem = this.getMetaItem( 'mwRedirect' );
+       redirectTarget = redirectTargetItem && redirectTargetItem.getAttribute( 
'title' ) || '';
+       redirectStatic = this.getMetaItem( 'mwStaticRedirect' );
        this.enableRedirectInput.setSelected( !!redirectTargetItem );
        this.redirectTargetInput.setValue( redirectTarget );
        this.redirectTargetInput.setDisabled( !redirectTargetItem );
@@ -276,26 +274,29 @@
  * @param {Object} [data] Dialog tear down data
  */
 ve.ui.MWSettingsPage.prototype.teardown = function ( data ) {
+       var tableOfContentsMetaItem, tableOfContentsSelectedItem, 
tableOfContentsValue,
+               currentRedirectTargetItem, newRedirectData, newRedirectItemData,
+               currentStaticRedirectItem, newStaticRedirectState,
+               settingsPage = this;
+
        // Data initialisation
        data = data || {};
        if ( data.action !== 'apply' ) {
                return;
        }
 
-       var // Table of Contents items
-               tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' ),
-               tableOfContentsSelectedItem = 
this.tableOfContents.getField().getSelectedItem(),
-               tableOfContentsValue = tableOfContentsSelectedItem && 
tableOfContentsSelectedItem.getData(),
+       // Table of Contents items
+       tableOfContentsMetaItem = this.getMetaItem( 'mwTOC' );
+       tableOfContentsSelectedItem = 
this.tableOfContents.getField().getSelectedItem();
+       tableOfContentsValue = tableOfContentsSelectedItem && 
tableOfContentsSelectedItem.getData();
 
-               // Redirect items
-               currentRedirectTargetItem = this.getMetaItem( 'mwRedirect' ),
-               newRedirectData = this.redirectTargetInput.getValue(),
-               newRedirectItemData = { type: 'mwRedirect', attributes: { 
title: newRedirectData } },
+       // Redirect items
+       currentRedirectTargetItem = this.getMetaItem( 'mwRedirect' );
+       newRedirectData = this.redirectTargetInput.getValue();
+       newRedirectItemData = { type: 'mwRedirect', attributes: { title: 
newRedirectData } };
 
-               currentStaticRedirectItem = this.getMetaItem( 
'mwStaticRedirect' ),
-               newStaticRedirectState = 
this.enableStaticRedirectInput.isSelected(),
-
-               settingsPage = this;
+       currentStaticRedirectItem = this.getMetaItem( 'mwStaticRedirect' );
+       newStaticRedirectState = this.enableStaticRedirectInput.isSelected();
 
        // Alter the TOC option flag iff it's been touched & is actually 
different
        if ( this.tableOfContentsTouched ) {
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
index c615138..e70d8e0 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
@@ -128,10 +128,11 @@
  * @method
  */
 ve.ui.MWCategoryPopupWidget.prototype.onToggle = function ( show ) {
+       var newSortkey;
        if ( show ) {
                return;
        }
-       var newSortkey = this.sortKeyInput.$input.val();
+       newSortkey = this.sortKeyInput.$input.val();
        if ( !this.removed && newSortkey !== ( this.origSortkey || '' ) ) {
                this.emit( 'updateSortkey', this.category, 
this.sortKeyInput.$input.val() );
        }
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js
index d14f360..9162ec5 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceGroupInputWidget.js
@@ -47,8 +47,9 @@
        this.menu.addItems( [ placeholderGroupItem ].concat( $.map(
                Object.keys( internalList.getNodeGroups() ),
                function ( groupInternalName ) {
+                       var groupName;
                        if ( groupInternalName.indexOf( 'mwReference/' ) === 0 
) {
-                               var groupName = groupInternalName.slice( 
'mwReference/'.length );
+                               groupName = groupInternalName.slice( 
'mwReference/'.length );
                                if ( groupName ) {
                                        return new OO.ui.MenuOptionWidget( { 
data: groupName, label: groupName } );
                                }
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
index e8df837..09b441e 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
@@ -116,14 +116,14 @@
  * @method
  */
 ve.ui.MWReferenceSearchWidget.prototype.buildIndex = function () {
-       if ( this.built ) {
-               return;
-       }
-
        var n, i, iLen, j, jLen, refModel, group, groupName, groupNames, view, 
text, firstNodes, indexOrder,
                refGroup, refNode, matches, name, citation,
                groups = this.internalList.getNodeGroups();
 
+       if ( this.built ) {
+               return;
+       }
+
        function extractAttrs() {
                text += ' ' + this.getAttribute( 'href' );
        }
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSourceSelectWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSourceSelectWidget.js
index 56043e0..fdf9bf6 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSourceSelectWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSourceSelectWidget.js
@@ -16,13 +16,15 @@
  * @cfg {boolean} [showExisting] Show 're-use existing reference' as an option
  */
 ve.ui.MWReferenceSourceSelectWidget = function 
VeUiMWReferenceSourceSelectWidget( config ) {
+       var i, len, tools, item, limit,
+               items = [];
+
        config = config || {};
 
        // Parent constructor
        ve.ui.MWReferenceSourceSelectWidget.super.call( this, config );
 
-       var i, len, tools, item, items = [],
-               limit = ve.init.target.constructor.static.citationToolsLimit;
+       limit = ve.init.target.constructor.static.citationToolsLimit;
 
        try {
                // Must use mw.message to avoid JSON being parsed as Wikitext

-- 
To view, visit https://gerrit.wikimedia.org/r/232549
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ia2f765d12bde001c329c2ff4c080a36b71de9803
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Jforrester <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to