]> git.proxmox.com Git - pve-manager-legacy.git/commitdiff
copy LoginWindow.js from manager to manager5
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 27 Apr 2015 09:56:45 +0000 (11:56 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 27 Apr 2015 09:56:45 +0000 (11:56 +0200)
www/manager5/window/LoginWindow.js [new file with mode: 0644]

diff --git a/www/manager5/window/LoginWindow.js b/www/manager5/window/LoginWindow.js
new file mode 100644 (file)
index 0000000..3331444
--- /dev/null
@@ -0,0 +1,150 @@
+Ext.define('PVE.window.LoginWindow', {
+    extend: 'Ext.window.Window',
+
+    // private
+    onLogon: function() {
+       var me = this;
+
+       var form = me.getComponent(0).getForm();
+
+       if(form.isValid()){
+            me.el.mask(gettext('Please wait...'), 'x-mask-loading');
+
+           form.submit({
+               failure: function(f, resp){
+                   me.el.unmask();
+                   Ext.MessageBox.alert(gettext('Error'), 
+                                        gettext("Login failed. Please try again"), 
+                                        function() {
+                       var uf = form.findField('username');
+                       uf.focus(true, true);
+                   });
+               },
+               success: function(f, resp){
+                   me.el.unmask();
+                   
+                   var handler = me.handler || Ext.emptyFn;
+                   handler.call(me, resp.result.data);
+                   me.close();
+               }
+           });
+       }
+    },
+
+    initComponent: function() {
+       var me = this;
+
+       var otp_field = Ext.createWidget('textfield', { 
+           fieldLabel: gettext('OTP'), 
+           name: 'otp',
+           allowBlank: false,
+           hidden: true
+       });
+
+       Ext.apply(me, {
+           width: 400,
+           modal: true,
+           border: false,
+           draggable: true,
+           closable: false,
+           resizable: false,
+           layout: 'auto',
+           title: gettext('Proxmox VE Login'),
+
+           items: [{
+               xtype: 'form',
+               frame: true,
+               url: '/api2/extjs/access/ticket',
+
+               fieldDefaults: {
+                   labelAlign: 'right'
+               },
+
+               defaults: {
+                   anchor: '-5',
+                   allowBlank: false
+               },
+               
+               items: [
+                   { 
+                       xtype: 'textfield', 
+                       fieldLabel: gettext('User name'), 
+                       name: 'username',
+                       blankText: gettext("Enter your user name"),
+                       listeners: {
+                           afterrender: function(f) {
+                               // Note: only works if we pass delay 1000
+                               f.focus(true, 1000);
+                           },
+                           specialkey: function(f, e) {
+                               if (e.getKey() === e.ENTER) {
+                                   var pf = me.query('textfield[name="password"]')[0];
+                                   if (pf.getValue()) {
+                                       me.onLogon();
+                                   } else {
+                                       pf.focus(false);
+                                   }
+                               }
+                           }
+                       }
+                   },
+                   { 
+                       xtype: 'textfield', 
+                       inputType: 'password',
+                       fieldLabel: gettext('Password'), 
+                       name: 'password',
+                       blankText: gettext("Enter your password"),
+                       listeners: {
+                           specialkey: function(field, e) {
+                               if (e.getKey() === e.ENTER) {
+                                   me.onLogon();
+                               }
+                           }
+                       }
+                   },
+                   otp_field,
+                   {
+                       xtype: 'pveRealmComboBox',
+                       name: 'realm',
+                       listeners: {
+                           change: function(f, value) {
+                               if (f.needOTP(value)) {
+                                   otp_field.setVisible(true);
+                                   otp_field.setDisabled(false);
+                               } else {
+                                   otp_field.setVisible(false);
+                                   otp_field.setDisabled(true);
+                               }
+                           }
+                       }
+                   },
+                   {   
+                       xtype: 'pveLanguageSelector',
+                       fieldLabel: gettext('Language'), 
+                       value: Ext.util.Cookies.get('PVELangCookie') || 'en',
+                       name: 'lang',
+                       submitValue: false,
+                       listeners: {
+                           change: function(t, value) {
+                               var dt = Ext.Date.add(new Date(), Ext.Date.YEAR, 10);
+                               Ext.util.Cookies.set('PVELangCookie', value, dt);
+                               me.el.mask(gettext('Please wait...'), 'x-mask-loading');
+                               window.location.reload();
+                           }
+                       }
+                   }
+               ],
+               buttons: [
+                   {
+                       text: gettext('Login'),
+                       handler: function(){
+                           me.onLogon();
+                       }
+                   }
+               ]
+           }]
+       });
+
+       me.callParent();
+    }
+});