summaryrefslogtreecommitdiff
path: root/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchProvider.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchProvider.js')
-rw-r--r--www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchProvider.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchProvider.js b/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchProvider.js
new file mode 100644
index 00000000..a46d9110
--- /dev/null
+++ b/www/wiki/resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchProvider.js
@@ -0,0 +1,69 @@
+/*!
+ * MediaWiki Widgets - MediaSearchProvider class.
+ *
+ * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+( function ( $, mw ) {
+
+ /**
+ * MediaWiki media search provider.
+ *
+ * @class
+ * @extends mw.widgets.MediaResourceProvider
+ *
+ * @constructor
+ * @param {string} apiurl The API url
+ * @param {Object} [config] Configuration options
+ */
+ mw.widgets.MediaSearchProvider = function MwWidgetsMediaSearchProvider( apiurl, config ) {
+ config = config || {};
+
+ config.staticParams = $.extend( {
+ generator: 'search',
+ gsrnamespace: mw.config.get( 'wgNamespaceIds' ).file
+ }, config.staticParams );
+
+ // Parent constructor
+ mw.widgets.MediaSearchProvider.super.call( this, apiurl, config );
+ };
+
+ /* Inheritance */
+ OO.inheritClass( mw.widgets.MediaSearchProvider, mw.widgets.MediaResourceProvider );
+
+ /* Methods */
+
+ /**
+ * @inheritdoc
+ */
+ mw.widgets.MediaSearchProvider.prototype.getContinueData = function ( howMany ) {
+ return {
+ gsroffset: this.getOffset(),
+ gsrlimit: howMany || this.getDefaultFetchLimit()
+ };
+ };
+
+ /**
+ * @inheritdoc
+ */
+ mw.widgets.MediaSearchProvider.prototype.setContinue = function ( continueData ) {
+ // Update the offset for next time
+ this.setOffset( continueData.gsroffset );
+ };
+
+ /**
+ * @inheritdoc
+ */
+ mw.widgets.MediaSearchProvider.prototype.sort = function ( results ) {
+ return results.sort( function ( a, b ) {
+ return a.index - b.index;
+ } );
+ };
+
+ /**
+ * @inheritdoc
+ */
+ mw.widgets.MediaSearchProvider.prototype.isValid = function () {
+ return this.getUserParams().gsrsearch && mw.widgets.MediaSearchProvider.super.prototype.isValid.call( this );
+ };
+}( jQuery, mediaWiki ) );