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

Change subject: Batch gallery imageinfo requests via ImageInfoCache subclass
......................................................................


Batch gallery imageinfo requests via ImageInfoCache subclass

Also get rid of .join( '|' ) for API request parameters per Bartosz

Bug: T147067
Change-Id: If4444cca300d65e28d6fb9003fcac5e076a5129a
---
M extension.json
M modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
A modules/ve-mw/init/ve.init.mw.GalleryImageInfoCache.js
M modules/ve-mw/init/ve.init.mw.ImageInfoCache.js
M modules/ve-mw/init/ve.init.mw.LinkCache.js
M modules/ve-mw/init/ve.init.mw.Platform.js
M modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js
M modules/ve-mw/ui/styles/dialogs/ve.ui.MWGalleryDialog.css
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
10 files changed, 70 insertions(+), 30 deletions(-)

Approvals:
  Jforrester: Looks good to me, approved
  Esanders: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index bc9c784..afe3f0a 100644
--- a/extension.json
+++ b/extension.json
@@ -463,6 +463,7 @@
                                
"modules/ve-mw/init/ve.init.mw.ApiResponseCache.js",
                                "modules/ve-mw/init/ve.init.mw.LinkCache.js",
                                
"modules/ve-mw/init/ve.init.mw.ImageInfoCache.js",
+                               
"modules/ve-mw/init/ve.init.mw.GalleryImageInfoCache.js",
                                "modules/ve-mw/init/ve.init.mw.Platform.js",
                                
"modules/ve-mw/init/ve.init.mw.Platform.init.js",
                                "modules/ve-mw/init/ve.init.mw.Target.js",
diff --git a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js 
b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
index 6268fd9..f316126 100644
--- a/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
+++ b/modules/ve-mw/dm/models/ve.dm.MWTransclusionModel.js
@@ -298,7 +298,7 @@
        ve.dm.MWTransclusionModel.prototype.fetchRequest = function ( titles, 
specs, queue ) {
                var xhr = new mw.Api().get( {
                        action: 'templatedata',
-                       titles: titles.join( '|' ),
+                       titles: titles,
                        lang: mw.config.get( 'wgUserLanguage' ),
                        redirects: '1'
                } ).done( this.fetchRequestDone.bind( this, titles, specs ) );
diff --git a/modules/ve-mw/init/ve.init.mw.GalleryImageInfoCache.js 
b/modules/ve-mw/init/ve.init.mw.GalleryImageInfoCache.js
new file mode 100644
index 0000000..1466d58
--- /dev/null
+++ b/modules/ve-mw/init/ve.init.mw.GalleryImageInfoCache.js
@@ -0,0 +1,40 @@
+/*!
+ * VisualEditor MediaWiki Initialization GalleryImageInfoCache class.
+ *
+ * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * Get thumbnail URL information about gallery images.
+ *
+ * @class
+ * @extends ve.init.mw.ImageInfoCache
+ * @constructor
+ */
+ve.init.mw.GalleryImageInfoCache = function VeInitMwGalleryImageInfoCache() {
+       ve.init.mw.GalleryImageInfoCache.super.call( this );
+};
+
+/* Inheritance */
+
+OO.inheritClass( ve.init.mw.GalleryImageInfoCache, ve.init.mw.ImageInfoCache );
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ */
+ve.init.mw.GalleryImageInfoCache.prototype.getRequestPromise = function ( 
subqueue ) {
+       return new mw.Api().get(
+               {
+                       action: 'query',
+                       prop: 'imageinfo',
+                       iiprop: 'url',
+                       titles: subqueue,
+                       iiurlwidth: 200,
+                       iiurlheight: 200
+               },
+               { type: 'POST' }
+       );
+};
diff --git a/modules/ve-mw/init/ve.init.mw.ImageInfoCache.js 
b/modules/ve-mw/init/ve.init.mw.ImageInfoCache.js
index 5977691..a7750ac 100644
--- a/modules/ve-mw/init/ve.init.mw.ImageInfoCache.js
+++ b/modules/ve-mw/init/ve.init.mw.ImageInfoCache.js
@@ -45,7 +45,7 @@
                        prop: 'imageinfo',
                        indexpageids: '1',
                        iiprop: 'size|mediatype',
-                       titles: subqueue.join( '|' )
+                       titles: subqueue
                },
                { type: 'POST' }
        );
diff --git a/modules/ve-mw/init/ve.init.mw.LinkCache.js 
b/modules/ve-mw/init/ve.init.mw.LinkCache.js
index 92413a1..7ee46a7 100644
--- a/modules/ve-mw/init/ve.init.mw.LinkCache.js
+++ b/modules/ve-mw/init/ve.init.mw.LinkCache.js
@@ -146,7 +146,7 @@
                pilimit: subqueue.length,
                wbptterms: 'description',
                ppprop: 'disambiguation',
-               titles: subqueue.join( '|' ),
+               titles: subqueue,
                'continue': ''
        } );
 };
diff --git a/modules/ve-mw/init/ve.init.mw.Platform.js 
b/modules/ve-mw/init/ve.init.mw.Platform.js
index 97c157a..3b2316a 100644
--- a/modules/ve-mw/init/ve.init.mw.Platform.js
+++ b/modules/ve-mw/init/ve.init.mw.Platform.js
@@ -29,6 +29,7 @@
        this.parsedMessages = {};
        this.linkCache = new ve.init.mw.LinkCache();
        this.imageInfoCache = new ve.init.mw.ImageInfoCache();
+       this.galleryImageInfoCache = new ve.init.mw.GalleryImageInfoCache();
 };
 
 /* Inheritance */
diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js 
b/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js
index 23a6d0e..93f1b83 100644
--- a/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js
+++ b/modules/ve-mw/ui/dialogs/ve.ui.MWGalleryDialog.js
@@ -279,7 +279,7 @@
 ve.ui.MWGalleryDialog.prototype.getSetupProcess = function ( data ) {
        return ve.ui.MWGalleryDialog.super.prototype.getSetupProcess.call( 
this, data )
                .next( function () {
-                       var titlesString, title, titleText, imageTitles, mode,
+                       var title, titleText, imageTitles, mode,
                                caption, widths, heights, perrow,
                                showFilename, classes, styles,
                                namespaceIds = mw.config.get( 'wgNamespaceIds' 
),
@@ -290,7 +290,6 @@
                        // If editing an existing gallery, populate with the 
images...
                        if ( this.selectedNode ) {
                                imageTitles = [];
-
                                // Get image and caption data
                                // TODO: Can be multiple pipes. See parser.php 
-> renderImageGallery in MediaWiki
                                $.trim( this.selectedNode.getAttribute( 'mw' 
).body.extsrc )
@@ -322,9 +321,8 @@
                                );
 
                                // Populate menu and edit panels
-                               titlesString = imageTitles.join( '|' );
                                this.imagesPromise = this.requestImages( {
-                                       titlesString: titlesString
+                                       titles: imageTitles
                                } ).done( function () {
                                        dialog.onHighlightItem();
                                } );
@@ -421,34 +419,34 @@
  * @param {Object} options Options for the request
  */
 ve.ui.MWGalleryDialog.prototype.requestImages = function ( options ) {
-       return new mw.Api().get( {
-               action: 'query',
-               prop: 'imageinfo',
-               iiprop: 'url',
-               iiurlwidth: options.width || 200,
-               // Matches height of this.$highlightedImage
-               iiurlheight: options.height || 200,
-               titles: options.titlesString
-       } ).done( this.onRequestImagesSuccess.bind( this ) );
+       var i, len,
+               dialog = this,
+               promises = [];
+       for ( i = 0, len = options.titles.length; i < len; i++ ) {
+               promises.push( ve.init.platform.galleryImageInfoCache.get( 
options.titles[ i ] ) );
+       }
+       return $.when.apply( $, promises )
+               .done( function () {
+                       var resp = {};
+                       for ( i = 0; i < len; i++ ) {
+                               resp[ options.titles[ i ] ] = arguments[ i ];
+                       }
+                       dialog.onRequestImagesSuccess( resp );
+               } );
 };
 
 /**
  * Create items for the returned images and add them to the gallery group
  *
- * @param {Object} deferred jQuery deferred object
  * @param {Object} response jQuery response object
  */
-ve.ui.MWGalleryDialog.prototype.onRequestImagesSuccess = function ( deferred, 
response ) {
-       var index, title,
+ve.ui.MWGalleryDialog.prototype.onRequestImagesSuccess = function ( response ) 
{
+       var title,
                thumbUrls = {},
-               items = [],
-               pages = response.responseJSON.query.pages;
+               items = [];
 
-       // Store object of titles to thumbUrls
-       for ( index in pages ) {
-               if ( pages[ index ].imageinfo ) {
-                       thumbUrls[ pages[ index ].title ] = pages[ index 
].imageinfo[ 0 ].thumburl;
-               }
+       for ( title in response ) {
+               thumbUrls[ title ] = response[ title ].thumburl;
        }
 
        if ( this.initialImageData.length > 0 ) {
@@ -489,7 +487,7 @@
 
        // Request image
        this.requestImages( {
-               titlesString: title
+               titles: [ title ]
        } ).done( function () {
 
                // populate edit panel with the new image
diff --git a/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGalleryDialog.css 
b/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGalleryDialog.css
index 99e5d26..cf0398d 100644
--- a/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGalleryDialog.css
+++ b/modules/ve-mw/ui/styles/dialogs/ve.ui.MWGalleryDialog.css
@@ -29,7 +29,7 @@
 .ve-ui-mwGalleryDialog-highlighted-image {
        background-color: #f9f9f9;
        width: 100%;
-       /* Matches default height in requestImages */
+       /* Matches default height in GalleryImageInfoCache */
        height: 200px;
        background-repeat: no-repeat;
        background-position: 50% 50%;
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
index 81709da..51229cf 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
@@ -274,7 +274,7 @@
        return new mw.Api().get( {
                action: 'query',
                prop: 'pageprops',
-               titles: categoryNamesToQuery.join( '|' ),
+               titles: categoryNamesToQuery,
                ppprop: 'hiddencat',
                redirects: ''
        } ).then( function ( result ) {
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
index 93e812e..ef052d2 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWTemplateTitleInputWidget.js
@@ -87,7 +87,7 @@
                                if ( titles.length > 0 ) {
                                        params = {
                                                action: 'templatedata',
-                                               titles: titles.join( '|' ),
+                                               titles: titles,
                                                lang: mw.config.get( 
'wgUserLanguage' )
                                        };
                                        if ( widget.showRedirects ) {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: If4444cca300d65e28d6fb9003fcac5e076a5129a
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
Gerrit-Reviewer: Bartosz DziewoƄski <[email protected]>
Gerrit-Reviewer: DLynch <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: Tchanders <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to