You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.5 KiB

YUI.add('moodle-core-languninstallconfirm', function (Y, NAME) {
/* global NAME */
/**
* Home for a Confirmation class.
*
* @module moodle-core-languninstallconfirm
*/
/**
* A class for a language uninstall confirmation.
*
* @class M.core.languninstallconfirm
* @constructor
* @extends Base
*/
function Confirmation() {
Confirmation.superclass.constructor.apply(this, arguments);
}
var SELECTORS = {
UNINSTALLBUTTON: '#languninstallbutton',
UNINSTALLSELECT: '#menuuninstalllang option',
ENGLISHOPTION: '#menuuninstalllang option[value=\'en\']'
};
Confirmation.NAME = NAME;
Confirmation.ATTRS = {
/**
* Uninstall url
*
* @property uninstallUrl
* @type string
*/
uninstallUrl: {
validator: Y.Lang.isString
}
};
Y.extend(Confirmation, Y.Base, {
/**
* Initializer.
* Registers onclicks.
*
* @method initializer
*/
initializer: function() {
Y.one(SELECTORS.UNINSTALLBUTTON).on('click', this._confirm, this);
},
/**
* Confirmation.
* Displays the confirmation dialogue.
*
* @method _confirm
* @protected
* @param {EventFacade} e
*/
_confirm: function(e) {
e.preventDefault();
var selectedLangCodes = [];
var selectedLangNames = [];
Y.all(SELECTORS.UNINSTALLSELECT).each(function(option) {
if (option.get('selected')) {
selectedLangCodes.push(option.getAttribute('value'));
selectedLangNames.push(option.get('text'));
}
});
// Nothing was selected, show warning.
if (selectedLangCodes.length === 0) {
new M.core.alert({message: M.util.get_string('selectlangs', 'tool_langimport')}).show();
return;
} else if (selectedLangCodes.indexOf('en') > -1) { // Don't uninstall english.
Y.one(SELECTORS.ENGLISHOPTION).set('selected', false);
new M.core.alert({message: M.util.get_string('noenglishuninstall', 'tool_langimport')}).show();
return;
}
var confirmationConfig = {
modal: true,
visible: false,
centered: true,
title: M.util.get_string('uninstall', 'tool_langimport'),
question: M.util.get_string('uninstallconfirm', 'tool_langimport', selectedLangNames.join(", "))
};
new M.core.confirm(confirmationConfig)
.show()
.on('complete-yes', this._uninstall, this, selectedLangCodes);
},
/**
* Uninstall.
* Redirects to an uninstall process.
*
* @method _uninstall
* @protected
* @param {EventFacade} e
* @param {Array} langCodes array of lang codes to be uninstalled
*/
_uninstall: function(e, langCodes) {
Y.config.win.location.href = this.get('uninstallUrl') + '?mode=4' +
'&sesskey=' + M.cfg.sesskey +
'&confirmtouninstall=' + langCodes.join('/');
}
});
Y.namespace('M.core.languninstallconfirm').Confirmation = Confirmation;
Y.namespace('M.core.languninstallconfirm').init = function(config) {
return new Confirmation(config);
};
}, '@VERSION@', {"requires": ["base", "node", "moodle-core-notification-confirm", "moodle-core-notification-alert"]});