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');
}
}