/* global $, APP, config*/ var messageHandler = require('../util/MessageHandler'); //FIXME: use LoginDialog to add retries to XMPP.connect method used when // anonymous domain is not enabled function Dialog(successCallback, cancelCallback) { var message = '

'; message += APP.translation.translateString("dialog.passwordRequired"); message += '

' + ''; var okButton = APP.translation.generateTranslationHTML("dialog.Ok"); var cancelButton = APP.translation.generateTranslationHTML("dialog.Cancel"); var states = { login: { html: message, buttons: [ { title: okButton, value: true}, { title: cancelButton, value: false} ], focus: ':input:first', submit: function (e, v, m, f) { e.preventDefault(); if (v) { var jid = f.username; var password = f.password; if (jid && password) { connDialog.goToState('connecting'); successCallback(jid, password); } } else { // User cancelled cancelCallback(); } } }, connecting: { title: APP.translation.translateString('dialog.connecting'), html: '
', buttons: [], defaultButton: 0 }, finished: { title: APP.translation.translateString('dialog.error'), html: '
', buttons: [ { title: APP.translation.translateString('dialog.retry'), value: 'retry' }, { title: APP.translation.translateString('dialog.Cancel'), value: 'cancel' }, ], defaultButton: 0, submit: function (e, v, m, f) { e.preventDefault(); if (v === 'retry') { connDialog.goToState('login'); } else { cancelCallback(); } } } }; var connDialog = messageHandler.openDialogWithStates( states, { persistent: true, closeText: '' }, null ); /** * Displays error message in 'finished' state which allows either to cancel * or retry. * @param message the final message to be displayed. */ this.displayError = function (message) { var finishedState = connDialog.getState('finished'); var errorMessageElem = finishedState.find('#errorMessage'); errorMessageElem.text(message); connDialog.goToState('finished'); }; /** * Closes LoginDialog. */ this.close = function () { connDialog.close(); }; } var LoginDialog = { /** * Displays login prompt used to establish new XMPP connection. Given * callback(Strophe.Connection, Strophe.Status) function will be * called when we connect successfully(status === CONNECTED) or when we fail * to do so. On connection failure program can call Dialog.close() method in * order to cancel or do nothing to let the user retry. * @param callback function(Strophe.Connection, Strophe.Status) * called when we either fail to connect or succeed(check * Strophe.Status). * @param obtainSession true if we want to send ConferenceIQ to * Jicofo in order to create session-id after the connection is * established. * @returns {Dialog} */ show: function (successCallback, cancelCallback) { return new Dialog(successCallback, cancelCallback); }, showExternalAuthDialog: function (url, callback) { var dialog = messageHandler.openCenteredPopup( url, 910, 660, // On closed callback ); if (!dialog) { messageHandler.openMessageDialog(null, "dialog.popupError"); } return dialog; } }; module.exports = LoginDialog;