summaryrefslogtreecommitdiff
path: root/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js')
-rw-r--r--www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js82
1 files changed, 82 insertions, 0 deletions
diff --git a/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js b/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js
new file mode 100644
index 00000000..36395259
--- /dev/null
+++ b/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js
@@ -0,0 +1,82 @@
+/*!
+ * MediaWiki Widgets - MediaSearchQueue class.
+ *
+ * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+( function ( mw ) {
+
+ /**
+ * MediaWiki media resource queue.
+ *
+ * @class
+ * @extends mw.widgets.MediaResourceQueue
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {number} maxHeight The maximum height of the media, used in the
+ * search call to the API.
+ */
+ mw.widgets.MediaSearchQueue = function MwWidgetsMediaSearchQueue( config ) {
+ config = config || {};
+
+ // Parent constructor
+ mw.widgets.MediaSearchQueue.super.call( this, config );
+
+ this.searchQuery = '';
+ };
+
+ /* Inheritance */
+ OO.inheritClass( mw.widgets.MediaSearchQueue, mw.widgets.MediaResourceQueue );
+
+ /**
+ * Override parent method to set up the providers according to
+ * the file repos
+ *
+ * @return {jQuery.Promise} Promise that resolves when the resources are set up
+ */
+ mw.widgets.MediaSearchQueue.prototype.setup = function () {
+ var i, len,
+ queue = this;
+
+ return this.getFileRepos().then( function ( sources ) {
+ if ( queue.providers.length === 0 ) {
+ // Set up the providers
+ for ( i = 0, len = sources.length; i < len; i++ ) {
+ queue.providers.push( new mw.widgets.MediaSearchProvider(
+ sources[ i ].apiurl,
+ {
+ name: sources[ i ].name,
+ local: sources[ i ].local,
+ scriptDirUrl: sources[ i ].scriptDirUrl,
+ userParams: {
+ gsrsearch: queue.getSearchQuery()
+ },
+ staticParams: {
+ iiurlheight: queue.getMaxHeight()
+ }
+ } )
+ );
+ }
+ }
+ } );
+ };
+
+ /**
+ * Set the search query
+ *
+ * @param {string} searchQuery API search query
+ */
+ mw.widgets.MediaSearchQueue.prototype.setSearchQuery = function ( searchQuery ) {
+ this.setParams( { gsrsearch: searchQuery } );
+ };
+
+ /**
+ * Get the search query
+ *
+ * @return {string} API search query
+ */
+ mw.widgets.MediaSearchQueue.prototype.getSearchQuery = function () {
+ return this.getParams().gsrsearch;
+ };
+}( mediaWiki ) );