summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/UploadWizard/resources/details/uw.DeedChooserDetailsWidget.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/UploadWizard/resources/details/uw.DeedChooserDetailsWidget.js')
-rw-r--r--www/wiki/extensions/UploadWizard/resources/details/uw.DeedChooserDetailsWidget.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/www/wiki/extensions/UploadWizard/resources/details/uw.DeedChooserDetailsWidget.js b/www/wiki/extensions/UploadWizard/resources/details/uw.DeedChooserDetailsWidget.js
new file mode 100644
index 00000000..6dc80ad6
--- /dev/null
+++ b/www/wiki/extensions/UploadWizard/resources/details/uw.DeedChooserDetailsWidget.js
@@ -0,0 +1,100 @@
+( function ( mw, uw, $, OO ) {
+
+ /**
+ * A deed chooser field in UploadWizard's "Details" step form.
+ *
+ * @extends uw.DetailsWidget
+ */
+ uw.DeedChooserDetailsWidget = function UWDeedChooserDetailsWidget() {
+ uw.DeedChooserDetailsWidget.parent.call( this );
+
+ this.deedChooser = false;
+ this.$element.addClass( 'mwe-upwiz-deedChooserDetailsWidget' );
+ };
+ OO.inheritClass( uw.DeedChooserDetailsWidget, uw.DetailsWidget );
+
+ /**
+ * Toggles whether we use the 'macro' deed or our own
+ *
+ * @param {mw.UploadWizardUpload} upload
+ */
+ uw.DeedChooserDetailsWidget.prototype.useCustomDeedChooser = function ( upload ) {
+ var deedDiv;
+
+ // Defining own deedChooser for uploads coming from external service
+ if ( upload.file.fromURL ) {
+ // XXX can be made a separate class as mw.UploadFromUrlDeedChooser
+ this.deedChooser = upload.deedChooser = {
+ deed: {},
+ valid: function () {
+ return true;
+ },
+ getSerialized: function () {
+ return this.deed ? this.deed.getSerialized() : {};
+ },
+ setSerialized: function ( serialized ) {
+ if ( this.deed.setSerialized ) {
+ this.deed.setSerialized( serialized );
+ }
+ }
+ };
+
+ if ( upload.file.license ) {
+ // XXX need to add code in the remaining functions
+ this.$element.append( upload.file.licenseMessage );
+ this.deedChooser.deed = new uw.deed.Custom( mw.UploadWizard.config, upload );
+ } else {
+ this.deedChooser.deed = new uw.deed.External(
+ mw.UploadWizard.config,
+ upload,
+ { type: 'or', licenses: [ 'custom' ], special: 'custom' }
+ );
+ this.$element.append( this.deedChooser.deed.licenseInputField.$element );
+ this.$element.append( upload.file.licenseMessage );
+ }
+ } else {
+ deedDiv = $( '<div class="mwe-upwiz-custom-deed" />' );
+ this.$element.append( deedDiv );
+ this.deedChooser = upload.deedChooser = new mw.UploadWizardDeedChooser(
+ mw.UploadWizard.config,
+ deedDiv,
+ mw.UploadWizard.getLicensingDeeds( [ upload ], mw.UploadWizard.config ),
+ [ upload ] );
+ this.deedChooser.onLayoutReady();
+ }
+ };
+
+ /**
+ * @inheritdoc
+ */
+ uw.DeedChooserDetailsWidget.prototype.getErrors = function () {
+ var errors = [];
+ if ( this.deedChooser ) {
+ if ( !this.deedChooser.deed ) {
+ errors.push( mw.message( 'mwe-upwiz-deeds-need-deed' ) );
+ }
+ }
+ return $.Deferred().resolve( errors ).promise();
+ };
+
+ /**
+ * @return {Object}
+ */
+ uw.DeedChooserDetailsWidget.prototype.getSerialized = function () {
+ if ( this.deedChooser ) {
+ return this.deedChooser.getSerialized();
+ }
+
+ return {};
+ };
+
+ /**
+ * @param {Object} serialized
+ */
+ uw.DeedChooserDetailsWidget.prototype.setSerialized = function ( serialized ) {
+ if ( this.deedChooser ) {
+ this.deedChooser.setSerialized( serialized );
+ }
+ };
+
+}( mediaWiki, mediaWiki.uploadWizard, jQuery, OO ) );