summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/UploadWizard/resources/ui/uw.ui.Wizard.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/UploadWizard/resources/ui/uw.ui.Wizard.js')
-rw-r--r--www/wiki/extensions/UploadWizard/resources/ui/uw.ui.Wizard.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/www/wiki/extensions/UploadWizard/resources/ui/uw.ui.Wizard.js b/www/wiki/extensions/UploadWizard/resources/ui/uw.ui.Wizard.js
new file mode 100644
index 00000000..7f6e7c4b
--- /dev/null
+++ b/www/wiki/extensions/UploadWizard/resources/ui/uw.ui.Wizard.js
@@ -0,0 +1,136 @@
+/*
+ * This file is part of the MediaWiki extension UploadWizard.
+ *
+ * UploadWizard is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * UploadWizard is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with UploadWizard. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+( function ( mw, $, uw, OO ) {
+ /**
+ * Represents the UI for the wizard.
+ *
+ * @class uw.ui.Wizard
+ * @mixins OO.EventEmitter
+ * @constructor
+ * @param {string} selector Where to put all of the wizard interface.
+ */
+ uw.ui.Wizard = function UWUIWizard( selector ) {
+ OO.EventEmitter.call( this );
+
+ this.$div = $( '<div>' )
+ .attr( 'id', 'mwe-upwiz-content' );
+
+ $( selector ).append(
+ this.$div,
+ $( '<div>' ).addClass( 'mwe-upwiz-clearing' )
+ );
+
+ this.initHeader( mw.UploadWizard.config );
+ };
+
+ OO.mixinClass( uw.ui.Wizard, OO.EventEmitter );
+
+ /**
+ * Initializes the static stuff above the wizard.
+ *
+ * @param {Object} config
+ */
+ uw.ui.Wizard.prototype.initHeader = function ( config ) {
+ var feedbackLink;
+
+ if ( config.feedbackLink ) {
+ // Preferred. Send user to bug tracker (defaults to UW's own
+ // Phabricator project)
+ feedbackLink = config.feedbackLink;
+ } else if ( config.feedbackPage ) {
+ // Backwards compatibility...send user to talk page to give
+ // feedback.
+ feedbackLink = mw.util.getUrl( config.feedbackPage );
+ }
+
+ if ( feedbackLink ) {
+ this.$feedbackLink = $( '<a>' )
+ .addClass( 'contentSubLink' )
+ .prop( 'href', config.feedbackLink )
+ .msg( 'mwe-upwiz-feedback-prompt' );
+
+ $( '#contentSub' ).append( this.$feedbackLink );
+ }
+
+ if ( config.alternativeUploadToolsPage ) {
+ this.$alternativeUploads = $( '<a>' )
+ .addClass( 'contentSubLink' )
+ .prop( 'href', new mw.Title( config.alternativeUploadToolsPage ).getUrl() )
+ .msg( 'mwe-upwiz-subhead-alternatives' );
+
+ $( '#contentSub' ).append( this.$alternativeUploads );
+ }
+
+ if ( config.altUploadForm ) {
+ this.initAltUploadForm( config.altUploadForm );
+ }
+
+ // Separate each link in the header with a dot.
+ $( '#contentSub .contentSubLink:not(:last)' ).after( '&nbsp;&middot;&nbsp;' );
+
+ // construct the arrow steps from the UL in the HTML
+ this.initArrowSteps();
+ };
+
+ /**
+ * Initializes a link to the alternate upload form, if any.
+ *
+ * @param {Object|string} configAltUploadForm A link or map of languages to links, pointing at an alternate form.
+ */
+ uw.ui.Wizard.prototype.initAltUploadForm = function ( configAltUploadForm ) {
+ var altUploadForm, userLanguage, title;
+
+ if ( typeof configAltUploadForm === 'object' ) {
+ userLanguage = mw.config.get( 'wgUserLanguage' );
+
+ if ( configAltUploadForm[ userLanguage ] ) {
+ altUploadForm = configAltUploadForm[ userLanguage ];
+ } else if ( configAltUploadForm.default ) {
+ altUploadForm = configAltUploadForm.default;
+ }
+ } else {
+ altUploadForm = configAltUploadForm;
+ }
+
+ // altUploadForm is expected to be a page title like 'Commons:Upload', so convert to URL
+ if ( typeof altUploadForm === 'string' && altUploadForm.length > 0 ) {
+ try {
+ title = new mw.Title( altUploadForm );
+
+ $( '<a>' )
+ .msg( 'mwe-upwiz-subhead-alt-upload' )
+ .addClass( 'contentSubLink' )
+ .attr( 'href', title.getUrl() )
+ .appendTo( '#contentSub' );
+ } catch ( e ) {
+ // page was empty, or impossible on this wiki (missing namespace or some other issue). Give up.
+ }
+ }
+ };
+
+ /**
+ * Initializes the arrow steps above the wizard.
+ */
+ uw.ui.Wizard.prototype.initArrowSteps = function () {
+ $( '<ul>' )
+ .attr( 'id', 'mwe-upwiz-steps' )
+ .addClass( 'ui-helper-clearfix' )
+ .insertBefore( '#mwe-upwiz-content' );
+ };
+
+}( mediaWiki, jQuery, mediaWiki.uploadWizard, OO ) );