2012-03-29 16:42:09 -04:00
|
|
|
/*
|
|
|
|
|
* ProcessMaker Login
|
|
|
|
|
* Created on date Jul 15, 2011
|
|
|
|
|
*
|
|
|
|
|
* @author Erik Amaru Ortiz <erik@colosa.com>
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
var loadMask = function(){
|
|
|
|
|
return {
|
|
|
|
|
init: function() {
|
|
|
|
|
var loading = Ext.get('loading');
|
|
|
|
|
var mask = Ext.get('loading-mask');
|
|
|
|
|
mask.setOpacity(0.8);
|
|
|
|
|
mask.shift({
|
|
|
|
|
xy: loading.getXY(),
|
|
|
|
|
width: loading.getWidth(),
|
|
|
|
|
height: loading.getHeight(),
|
|
|
|
|
remove: true,
|
|
|
|
|
duration: 1,
|
|
|
|
|
opacity: 0.3,
|
|
|
|
|
easing: 'bounceOut',
|
|
|
|
|
callback: function(){
|
|
|
|
|
loading.fadeOut({
|
|
|
|
|
duration: 0.2,
|
|
|
|
|
remove: true
|
|
|
|
|
});
|
|
|
|
|
document.getElementById('loginLogo').style.display = 'block';
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}};
|
|
|
|
|
}();
|
|
|
|
|
|
|
|
|
|
Ext.onReady(loadMask.init, loadMask, true);
|
|
|
|
|
|
|
|
|
|
var Login = function() {
|
|
|
|
|
return {
|
|
|
|
|
/** Properties */
|
|
|
|
|
form : null,
|
|
|
|
|
window : null,
|
2012-04-26 13:21:41 -04:00
|
|
|
enableVirtualKeyboard : false,
|
2012-03-29 16:42:09 -04:00
|
|
|
fieldsWidth : 200,
|
|
|
|
|
|
|
|
|
|
/** Init method */
|
|
|
|
|
init : function() {
|
|
|
|
|
new Ext.KeyMap(document, {
|
|
|
|
|
key: [10, 13],
|
|
|
|
|
fn: function(keycode, e) {
|
|
|
|
|
Login.submit();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Ext.QuickTips.init();
|
|
|
|
|
Ext.form.Field.prototype.msgTarget = 'side';
|
2012-04-26 13:21:41 -04:00
|
|
|
|
|
|
|
|
if ((PMExt.cookie.read('x-pm-ws')))
|
|
|
|
|
defaultWS = PMExt.cookie.read('x-pm-ws');
|
|
|
|
|
|
|
|
|
|
if ((PMExt.cookie.read('x-pm-ws')))
|
|
|
|
|
defaultLang = PMExt.cookie.read('x-pm-lang');
|
2012-03-29 16:42:09 -04:00
|
|
|
|
|
|
|
|
this.initComponents();
|
|
|
|
|
|
|
|
|
|
this.window.show();
|
|
|
|
|
Ext.getCmp('userTxt').focus(true, 1000);
|
|
|
|
|
|
|
|
|
|
if (typeof flyNotify != 'undefined') {
|
|
|
|
|
Ext.msgBoxSlider.msgTopCenter(flyNotify.type, flyNotify.title, flyNotify.text, flyNotify.time);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}();
|
|
|
|
|
|
|
|
|
|
Login.initComponents = function()
|
|
|
|
|
{
|
|
|
|
|
var userTxt = {
|
|
|
|
|
id : 'userTxt',
|
|
|
|
|
name : 'form[USR_USERNAME]',
|
|
|
|
|
fieldLabel: _('ID_USER'),
|
|
|
|
|
allowBlank: false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var passwordTxt = {
|
|
|
|
|
fieldLabel: _('ID_PASSWORD'),
|
|
|
|
|
name : 'form[USR_PASSWORD]',
|
|
|
|
|
inputType : 'password',
|
|
|
|
|
allowBlank: false,
|
|
|
|
|
|
|
|
|
|
validationEvent : this.enableVirtualKeyboard == true ? 'blur' : 'keyup',
|
|
|
|
|
enableKeyEvents : true,
|
|
|
|
|
width: this.fieldsWidth, //this.enableVirtualKeyboard == true ? 183 : this.fieldsWidth,
|
|
|
|
|
keyboardConfig: {
|
|
|
|
|
showIcon: true,
|
|
|
|
|
languageSelection: true
|
|
|
|
|
},
|
|
|
|
|
plugins: this.enableVirtualKeyboard == true ? new Ext.ux.plugins.VirtualKeyboard() : null,
|
|
|
|
|
|
|
|
|
|
listeners: {
|
|
|
|
|
render: function() {
|
|
|
|
|
this.capsWarningTooltip = new Ext.ToolTip({
|
|
|
|
|
target: this.id,
|
|
|
|
|
anchor: 'top',
|
|
|
|
|
width: 305,
|
|
|
|
|
html: '<div class="ux-auth-warning">'+_('ID_CAPS_LOCK_IS_ON')+'</div><br />' +
|
|
|
|
|
'<div>'+_('ID_CAPS_LOCK_ALERT1')+'</div><br />' +
|
|
|
|
|
'<div>'+_('ID_CAPS_LOCK_ALERT2')+'</div>'
|
|
|
|
|
});
|
|
|
|
|
this.capsWarningTooltip.disable();
|
|
|
|
|
this.capsWarningTooltip.on('enable', function() {
|
|
|
|
|
this.disable();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
keypress: {
|
|
|
|
|
fn: function(field, e) {
|
|
|
|
|
if(this.forceVirtualKeyboard) {
|
|
|
|
|
field.plugins.expand();
|
|
|
|
|
e.stopEvent();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
var charCode = e.getCharCode();
|
|
|
|
|
if((e.shiftKey && charCode >= 97 && charCode <= 122) ||
|
|
|
|
|
(!e.shiftKey && charCode >= 65 && charCode <= 90)) {
|
|
|
|
|
|
|
|
|
|
field.capsWarningTooltip.show();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if(field.capsWarningTooltip.hidden == false) {
|
|
|
|
|
field.capsWarningTooltip.hide();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
scope: this
|
|
|
|
|
},
|
|
|
|
|
blur: function(field) {
|
|
|
|
|
if(this.capsWarningTooltip.hidden == false) {
|
|
|
|
|
this.capsWarningTooltip.hide();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var workspaceField;
|
|
|
|
|
|
|
|
|
|
if (wsPrivate) {
|
|
|
|
|
workspaceField = {
|
|
|
|
|
id: 'workspace',
|
|
|
|
|
name: 'form[USER_ENV]',
|
|
|
|
|
fieldLabel: _('ID_WORKSPACE'),
|
|
|
|
|
allowBlank: false
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
workspaceField = new Ext.form.ComboBox({
|
|
|
|
|
id: 'workspace',
|
|
|
|
|
fieldLabel: _('ID_WORKSPACE'),
|
|
|
|
|
name : 'form[USER_ENV]',
|
|
|
|
|
store: new Ext.data.ArrayStore({
|
|
|
|
|
fields: ['id', 'name'],
|
|
|
|
|
data : workspaces
|
|
|
|
|
}),
|
|
|
|
|
displayField:'name',
|
|
|
|
|
typeAhead : true,
|
|
|
|
|
mode : 'local',
|
|
|
|
|
forceSelection: true,
|
|
|
|
|
triggerAction: 'all',
|
|
|
|
|
emptyText : _('ID_SELECT_WORKSPACE'),
|
|
|
|
|
allowBlank : false,
|
|
|
|
|
selectOnFocus: true,
|
|
|
|
|
valueField : 'id',
|
|
|
|
|
editable : true,
|
|
|
|
|
listeners: {
|
|
|
|
|
afterrender: function(){
|
2012-04-26 13:21:41 -04:00
|
|
|
if (defaultWS == '') return;
|
|
|
|
|
|
2012-03-29 16:42:09 -04:00
|
|
|
var store = workspaceField.getStore();
|
|
|
|
|
var i = store.findExact('id', defaultWS, 0);
|
|
|
|
|
if (i > -1){
|
|
|
|
|
Ext.getCmp('workspace').setValue(store.getAt(i).data.id);
|
|
|
|
|
Ext.getCmp('workspace').setRawValue(store.getAt(i).data.name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var languagesCmb = new Ext.form.ComboBox({
|
|
|
|
|
id : 'language',
|
|
|
|
|
fieldLabel : _('ID_LAN_LANGUAGE'),
|
|
|
|
|
name : 'form[USER_LANG]',
|
|
|
|
|
displayField: 'name',
|
|
|
|
|
typeAhead : true,
|
|
|
|
|
mode : 'local',
|
|
|
|
|
emptyText : _('ID_SELECT'),
|
|
|
|
|
allowBlank : false,
|
|
|
|
|
valueField : 'id',
|
|
|
|
|
editable : true,
|
|
|
|
|
selectOnFocus : true,
|
|
|
|
|
forceSelection: true,
|
|
|
|
|
triggerAction : 'all',
|
|
|
|
|
store : new Ext.data.ArrayStore({
|
|
|
|
|
fields: ['id', 'name'],
|
|
|
|
|
data : languages
|
|
|
|
|
}),
|
|
|
|
|
listeners : {
|
2012-04-05 12:52:33 -04:00
|
|
|
afterrender : function() {
|
2012-07-10 17:55:22 -04:00
|
|
|
if (sysLang == '') return;
|
2012-04-26 13:21:41 -04:00
|
|
|
|
2012-03-29 16:42:09 -04:00
|
|
|
var store = languagesCmb.getStore();
|
2012-07-10 17:55:22 -04:00
|
|
|
var i = store.findExact('id', sysLang, 0);
|
2012-04-05 12:52:33 -04:00
|
|
|
if (i > -1) {
|
2012-03-29 16:42:09 -04:00
|
|
|
Ext.getCmp('language').setValue(store.getAt(i).data.id);
|
|
|
|
|
Ext.getCmp('language').setRawValue(store.getAt(i).data.name);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.form = new Ext.FormPanel({
|
|
|
|
|
id : 'login-form',
|
|
|
|
|
name : 'login_form',
|
|
|
|
|
labelWidth: 80,
|
|
|
|
|
labelAlign: 'right',
|
|
|
|
|
url : "../main/sysLoginVerify",
|
|
|
|
|
frame : true,
|
|
|
|
|
width : 230,
|
|
|
|
|
padding : 10,
|
|
|
|
|
defaultType : 'textfield',
|
|
|
|
|
monitorValid: true,
|
|
|
|
|
defaults : {
|
|
|
|
|
width:200
|
|
|
|
|
},
|
|
|
|
|
items: [
|
|
|
|
|
userTxt,
|
|
|
|
|
passwordTxt,
|
|
|
|
|
workspaceField,
|
|
|
|
|
languagesCmb
|
|
|
|
|
],
|
|
|
|
|
buttons: [{
|
|
|
|
|
text: _('LOGIN'),
|
|
|
|
|
formBind: true,
|
|
|
|
|
handler: Login.submit
|
|
|
|
|
}]
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.window = new Ext.Window({
|
|
|
|
|
layout: 'fit',
|
|
|
|
|
width: 380,
|
|
|
|
|
height: 210,
|
|
|
|
|
title : _('LOGIN'),
|
|
|
|
|
iconCls: 'ux-auth-header-icon',
|
|
|
|
|
closable: false,
|
|
|
|
|
resizable: false,
|
|
|
|
|
plain: true,
|
|
|
|
|
draggable: false,
|
|
|
|
|
items: [this.form],
|
|
|
|
|
bbar: new Ext.ux.StatusBar({
|
|
|
|
|
defaultText: '',
|
|
|
|
|
id: 'login-statusbar',
|
|
|
|
|
statusAlign: 'right', // the magic config
|
|
|
|
|
items: []
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Login.submiting = false;
|
|
|
|
|
|
|
|
|
|
Login.submit = function()
|
|
|
|
|
{
|
|
|
|
|
if (Login.submiting) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ext.getCmp('login-statusbar').showBusy();
|
|
|
|
|
|
|
|
|
|
if (!Login.form.getForm().isValid()) {
|
|
|
|
|
Ext.getCmp('login-statusbar').setStatus({
|
|
|
|
|
text: _('ID_VALIDATION_ERRORS'),
|
|
|
|
|
iconCls: 'x-status-error',
|
|
|
|
|
clear: true
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Login.submiting = true;
|
2012-04-05 12:52:33 -04:00
|
|
|
|
|
|
|
|
document.getElementById('language').value = Ext.getCmp('language').getValue();
|
2012-04-26 13:21:41 -04:00
|
|
|
|
|
|
|
|
// persistene on cookie
|
|
|
|
|
PMExt.cookie.create('x-pm-ws', Ext.getCmp('workspace').getValue(), 30);
|
|
|
|
|
PMExt.cookie.create('x-pm-lang', document.getElementById('language').value, 30);
|
|
|
|
|
|
2012-03-29 16:42:09 -04:00
|
|
|
document.forms[0].action = '../login/sysLoginVerify';
|
|
|
|
|
document.forms[0].submit();
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
Login.form.getForm().submit({
|
|
|
|
|
method: 'POST',
|
2013-09-02 10:55:45 -04:00
|
|
|
waitTitle: " ",
|
2012-03-29 16:42:09 -04:00
|
|
|
//waitMsg: 'Verifying User...',
|
|
|
|
|
success: function(form, action)
|
|
|
|
|
{
|
|
|
|
|
// persistene on cookie
|
|
|
|
|
PMExt.cookie.create('x-pm-ws', Ext.getCmp('workspace').getValue(), 30);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
serverResponse = Ext.util.JSON.decode(action.response.responseText);
|
|
|
|
|
Ext.getCmp('login-statusbar').setStatus({
|
|
|
|
|
text: serverResponse.message,
|
|
|
|
|
iconCls: 'x-status-valid',
|
|
|
|
|
clear: true // auto-clear after a set interval
|
|
|
|
|
});
|
|
|
|
|
window.location = serverResponse.url;
|
|
|
|
|
},
|
|
|
|
|
failure: function(form, action)
|
|
|
|
|
{
|
|
|
|
|
Login.submiting = false;
|
|
|
|
|
if (action.failureType == 'server') {
|
|
|
|
|
serverResponse = Ext.util.JSON.decode(action.response.responseText);
|
|
|
|
|
Ext.getCmp('login-statusbar').setStatus({
|
|
|
|
|
text: serverResponse.message,
|
|
|
|
|
iconCls: 'x-status-error',
|
|
|
|
|
clear: true // auto-clear after a set interval
|
|
|
|
|
});
|
|
|
|
|
//Ext.msgBoxSlider.msgTopCenter('alert', 'LOGIN ERROR', serverResponse.message, 10);
|
|
|
|
|
}
|
|
|
|
|
else {
|
2013-03-14 15:15:04 -04:00
|
|
|
Ext.Msg.alert( _('ID_ERROR'), _('ID_SERVER_PROBLEM') + ' ' + action.response.responseText);
|
2012-03-29 16:42:09 -04:00
|
|
|
}
|
|
|
|
|
//Login.form.getForm().reset();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ext.onReady(Login.init, Login, true);
|
|
|
|
|
|