var RegisterUserForm; function reloadImg(id) { var obj = document.getElementById(id); var src = obj.src; var pos = src.indexOf('?'); if (pos >= 0) { src = src.substr(0, pos); } var date = new Date(); obj.src = src + '?v=' + date.getTime(); return false; } Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side'; Ext.form.TextField.prototype.blankText = 'Поле обязательно для заполнения'; Ext.form.VTypes.emailText = 'Это поле должно содержать адрес электронной почты в формате "user@domain.com"'; Ext.form.VTypes.alphaText = 'Это поле должно содержать только латинские буквы или символ подчеркивания "_"'; Ext.form.VTypes.alphanumText = 'Это поле должно содержать только латинские буквы или символ подчеркивания "_"'; Ext.form.Field.prototype.boxMaxWidth = 345; Ext.override(Ext.form.TextField, { filterKeys: function(e) { if (e.ctrlKey) { return; } var k = e.getKey(); if (Ext.isGecko && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))) { return; } var cc = String.fromCharCode(e.getCharCode()); if (!Ext.isGecko && e.isSpecialKey() && (Ext.isOpera || !cc)) { return; } if (!this.maskRe.test(cc)) { e.stopEvent(); } } }); Ext.time_zone_set_ar = [ ['-11','GMT -11:00'], ['-10','GMT -10:00'], ['-9','GMT -9:00'], ['-8','GMT -8:00'], ['-7','GMT -7:00'], ['-6','GMT -6:00'], ['-5','GMT -5:00'], ['-4','GMT -4:00'], ['-3','GMT -3:00'], ['-2','GMT -2:00'], ['-1','GMT -1:00'], ['0','GMT +0:00'], ['1','GMT +1:00'], ['2','GMT +2:00'], ['3','GMT +3:00'], ['4','GMT +4:00'], ['5','GMT +5:00'], ['6','GMT +6:00'], ['7','GMT +7:00'], ['8','GMT +8:00'], ['9','GMT +9:00'], ['10','GMT +10:00'], ['11','GMT +11:00'], ['12','GMT +12:00'], ['13','GMT +13:00'], ['14','GMT +14:00'] ]; var time_zone_set_store = new Ext.data.SimpleStore({ fields: ['value', 'string'], data : Ext.time_zone_set_ar }); Ext.register_user_form_class = Ext .extend( Ext.Window, { xtype : "window", title : "Регистрация нового пользователя", id : 'register_user_form', width : 410, height : 660, modal : true, // bodyStyle : 'background-color:#1a1a1a;', //frame : true, floating : true, resizable : false, closable : false, bodyBorder : true, border : true, shadow : 'frame', shadowOffset : 8, //layout: 'vbox', listeners:{ 'show':function(){if (RegisterUserForm.isnew==false) fillForm();} }, initComponent : function() { this.items = [ { xtype: 'tabpanel', activeTab: 0, items: [ { xtype: 'panel', title: 'Профиль', layout: 'form', height : 570, frame:true, items: [ { xtype : "fieldset", title : 'Личные данные', // layout : "form", labelAlign : "top", // frame:true, items : [ { xtype : "textfield", fieldLabel : "Имя", allowBlank : false, vtype : 'alphanum', blankText : 'Поле обязательно для заполнения', id:"firstname", anchor : "100%" }, { xtype : "textfield", fieldLabel : "Фамилия", allowBlank : false, vtype : 'alphanum', id:"lastname", anchor : "100%" }, { xtype : "textfield", fieldLabel : "Организация", allowBlank : false, vtype : 'alphanum', id:"organization", anchor : "100%" }, { xtype : "numberfield", fieldLabel : "Контактный телефон", allowBlank : false, id:"phone", anchor : "100%" } ] }, { xtype : "fieldset", title : 'Учетные данные', layout : "form", labelAlign : "top", items : [ { xtype : "textfield", fieldLabel : "Имя пользователя", allowBlank : false, vtype : 'latalphanum', id:"user", anchor : "100%" }, { xtype : "textfield", fieldLabel : "Пароль", allowBlank : false, vtype : 'alphanum', inputType:"password", id:"regpass", anchor : "100%" }, { xtype : "textfield", fieldLabel : "Подтверждение пароля", allowBlank : false, vtype : 'alphanum', inputType:"password", id:"cregpass", anchor : "100%" }, { xtype : "textfield", fieldLabel : "Email", allowBlank : false, vtype : 'email', id:"email", anchor : "100%" } ] }, { xtype : "container", layoutConfig : { align : "stretch" }, autoEl : "div", height : 65, autoHeight : false, autoWidth : false, layout : "hbox", items : [ { xtype : "container", autoEl : "div", layout : "form", labelAlign : "top", flex : 1, // width:100, margins : "1", autoHeight : false, items : [ { xtype : "textfield", id : "capcha", allowBlank : false, vtype : 'latalphanum', boxMaxWidth:170, fieldLabel : "Введите проверочный код (другая картинка)", anchor : "100%", style : "" } ] }, { xtype : "container", autoEl : "div", layout : "form", labelAlign : "top", flex : 1, margins : "1", autoHeight : false, layout : "absolute", stateful:false, items : [ { xtype : 'label', x : 5, html : '' } ] } ] } ] }, { xtype: 'panel', title: 'Настройки', height : 550, frame:true, layout: 'form', items: [ { fieldLabel : 'Часовой пояс: ', xtype: 'combo', forceSelection: true, triggerAction: 'all', editable : false, //emptyText:'Выберите тип отчета', store: time_zone_set_store, id: 'time_zone_set', mode: 'local', displayField: 'string', valueField: 'value' } ] } ] }, { xtype : "container", autoEl : "div", layout : "absolute", height : 30, items : [ { xtype : "button", text : "ОК", id:'up_ok_button', height : 25, width : 190, handler : function() { commitForm(); } }, { xtype : "button", text : "Отмена", height : 25, width : 190, x : 195, handler : function(){ RegisterUserForm.close(); } } ] } ] Ext.register_user_form_class.superclass.initComponent .call(this); } }); function fillForm(){ var m = Ext.Msg.wait("Запрос данных с сервера", "Пожалуйста, подождите......"); var prox = new Ext.data.HttpProxy( new Ext.data.Connection({ method:'POST', url : './user_profile.php', extraParams:{ 'act':'load' } })); var genres = new Ext.data.Store( { reader : new Ext.data.JsonReader( { fields : ["firstname", "lastname", "organization", "telno", "login", "user_mail", "time_zone"], root : 'userinfo' }), proxy : prox }); genres.on('load', function(a, records) { var rec = records[0]; if (rec == undefined) { RegisterUserForm.close(); delete RegisterUserForm; return; } Ext.getCmp("regpass").setValue("18a6b745a73763d4340524b262792801"); Ext.getCmp("cregpass").setValue("18a6b745a73763d4340524b262792801"); Ext.getCmp("firstname").setValue(rec.get("firstname")); Ext.getCmp("lastname").setValue(rec.get("lastname")); Ext.getCmp("organization").setValue(rec.get("organization")); Ext.getCmp("phone").setValue(rec.get("telno")); Ext.getCmp("user").setValue(rec.get("login")); Ext.getCmp("email").setValue(rec.get("user_mail")); Ext.getCmp("time_zone_set").setValue(rec.get("time_zone")); RegisterUserForm.enable(); m.hide(); }); genres.load(); } function commitForm() { var pass = Ext.getCmp("regpass").getValue(); var cpass = Ext.getCmp("cregpass").getValue(); if (pass!=cpass) { Ext.Msg.alert('Ошибка', "Введенные пароли не совпадают"); return; } if(pass.length == 0) { Ext.Msg.alert('Ошибка', "Пароль не может быть пустым"); return; } var data = {}; data.firstname = Ext.getCmp("firstname").getValue(); data.lastname = Ext.getCmp("lastname").getValue(); data.organization = Ext.getCmp("organization").getValue(); data.phone = Ext.getCmp("phone").getValue(); data.user = Ext.getCmp("user").getValue(); data.password = pass; data.email = Ext.getCmp("email").getValue(); data.time_zone = Ext.getCmp("time_zone_set").getValue(); for(var key in data) { if (data[key].length == 0) { Ext.Msg.alert('Ошибка', "Заполнены не все поля формы"); return; } } var m = Ext.Msg.wait("Отправка данных на сервер", "Пожалуйста, подождите......"); var act; if(RegisterUserForm.isnew) act = "new" else act = "save"; Ext.Ajax.request( { url : './user_profile.php', method : 'POST', success : function(result) { if (result.responseText != "OK") { m.hide(); Ext.Msg.alert('Ошибка', result.responseText); reloadImg('capchaimg'); Ext.getCmp("capcha").setValue(''); return; } else { m.hide(); if (RegisterUserForm.isnew){ Ext.Msg.alert('Операция успешно завершена', "Пользователь успешно создан.
На указанный почтовый адрес отправлен код активации учетной записи!"); //Ext.getCmp('login').setValue(data.user); //Ext.getCmp('password').setValue(data.password); } else{ Ext.Msg.alert('Операция успешно завершена', "Информация о пользователе обновлена"); } RegisterUserForm.close(); } }, failure : function() { m.hide(); Ext.Msg.alert('Ошибка', "Сервис временно недоступен.
Повторите запрос позже"); }, params : { 'code' : Ext.getCmp("capcha").getValue(), 'data' : Ext.util.JSON.encode(data), 'act' : act } }); } function registerUser(isnew) { RegisterUserForm = new Ext.register_user_form_class(); RegisterUserForm.isnew = isnew; if (isnew) {RegisterUserForm.show('register'); Ext.getCmp("time_zone_set").setValue(2); } else { RegisterUserForm.title = 'Редактирование профиля '; Ext.getCmp("user").disable(); Ext.getCmp("email").disable(); RegisterUserForm.disable(); RegisterUserForm.show('editProfile'); } }