Changes between Version 14 and Version 15 of Store


Ignore:
Timestamp:
Jun 19, 2012 11:54:07 AM (13 years ago)
Author:
tolix
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Store

    v14 v15  
    33{{{
    44#!html
    5 
    6 <script language="javascript">
    7 
    8         Ext.BLANK_IMAGE_URL = 'icons/s.gif';
    9         Ext.ns('Application');
    10 
    11         // Localization support
    12         function _ (msgid) { return msgid; }
    13 
    14         function comfortShift(w) {
    15                 var pos = w.getPosition();
    16                 pos[1] *= 0.66;
    17                 // pos[0] += Math.round(Math.random() * 100) - 50;
    18                 // pos[1] += Math.round(Math.random() * 100) - 50;
    19                 w.setPosition(pos);
    20         }
    21 
    22         function purchase()
    23         {
    24                 var w;
    25 
    26                 var cardNav = function(incr) {
    27                     var l = Ext.getCmp('card-wizard-panel').getLayout();
    28                     var i = l.activeItem.id.split('card-')[1];
    29                     var next = parseInt(i, 10) + incr;
    30 
    31                         if(i == 0 || i == 1) {
    32                                 var form = l.activeItem.items.item(1).getForm();
    33                                 if(! form.isValid()) {
    34                                         // TODO: highlight first invalid field
    35                                         return;
    36                                 }
    37                         }
    38 
    39                         if(next >= 4) {
    40                                 w.close();
    41                                 return;
    42                         }
    43 
    44                     l.setActiveItem(next);
    45 
    46                     Ext.getCmp('card-prev').setDisabled(next == 0);
    47 
    48                         if(next == 2) {
    49                                 Ext.getCmp('card-next').setText(_('Зарегистрировать'));
    50                         }
    51                         else if(next == 3) {
    52                                 Ext.getCmp('card-next').setText(_('Завершить'));
    53                         }
    54                         else {
    55                                 Ext.getCmp('card-next').setText(_('Далее') + ' &rarr;');
    56                         }
    57                 };
    58 
    59                 w = new Ext.Window({
    60                         id: 'card-wizard-panel',
    61                         title: _('Оформление интернет-заказа'),
    62                         minWidth: 600,
    63                         width: 600,
    64                         minHeight: 500,
    65                         height: 500,
    66                         modal: true,
    67                         layout: 'card',
    68                         stateful: false,
    69                         activeItem: 0,
    70                         defaults: {
    71                                 border: false
    72                         },
    73                         items: [
    74                                 {
    75                                         id: 'card-0',
    76                                         layout: 'border',
    77                                         defaults: {
    78                                                 border: true,
    79                                                 padding: '5px 10px 5px 10px'
    80                                         },
    81                                         items: [
    82                                                 {
    83                                                         region: 'north',
    84                                                         height: 84,
    85                                                         split: false,
    86                                                         bodyStyle: 'border-bottom: 0px;',
    87                                                         html: '<img style="vertical-align: middle; padding: 5px 20px 0px 15px;" src="../../site/shopping cart/tango-styled-shopping-cart-icon-cut_64x64.png"><b>'
    88                                                                         + _('Выбор способа оплаты')
    89                                                                         + '</b><div style="float: right; color: gray;">'
    90                                                                         + _('Шаг 1 из 3 - Выбор способа оплаты') + '</div>'
    91                                                 },
    92                                                 {
    93                                                         region: 'center',
    94                                                         xtype: 'form',
    95                                                         labelWidth: 150,
    96                                                         defaultType: 'textfield',
    97                                                         padding: '20px 30px 30px 30px',
    98                                                         items: [
    99 /*
    100                                                                 {
    101                                                                         fieldLabel: '<b>' + _('Имя учетной записи (логин)') + '</b>',
    102                                                                         name: 'login',
    103                                                                         allowBlank: false,
    104                                                                         regex: new RegExp('^[a-z][a-z0-9\\.\\-\\@]*$', 'i'),
    105                                                                         regexText: _('Имя учетной записи должно начинаться с латинской буквы и содержать только латинские буквы, цифры, точки, дефисы'),
    106                                                                         anchor: '100%'
    107                                                                 },
    108 */
    109                                                                 {
    110                                                                         fieldLabel: _('Сумма заказа, руб'),
    111                                                                         name: 'amount',
    112                                                                         readOnly: true,
    113                                                                         value: 350.00,
    114                                                                         // anchor: '100%'
    115                                                                         width: 200
    116                                                                 },
    117                                                                 {
    118                                                                         fieldLabel: _('Способ оплаты'),
    119                                                                         name: 'currency',
    120                                                                         xtype: 'combo',
    121                                                                         // anchor: '100%'
    122                                                                         width: 200
    123                                                                 },
    124                                                                 {
    125                                                                         fieldLabel: _('Сумма к списанию'),
    126                                                                         name: 'amount',
    127                                                                         readOnly: true,
    128                                                                         value: 350.00,
    129                                                                         // anchor: '100%'
    130                                                                         width: 200
    131                                                                 },
    132                                                                 {
    133                                                                         fieldLabel: _('E-mail'),
    134                                                                         name: 'email',
    135                                                                         allowBlank: false,
    136                                                                         regex: new RegExp('^[a-z0-9\\.\\-\\_]+\@(?:[a-z0-9\\-]+\\.)+[a-z]+$', 'i'),
    137                                                                         regexText: _('Такой почтовый адрес не может существовать'),
    138                                                                         anchor: '100%'
    139                                                                 },
    140                                                                 {       
    141                                                                         xtype: 'label',
    142                                                                         html: '<div style="padding: 0 0 15px 155px;">сюда будут направляться серийные номера, коды активации</div>'
    143                                                                 },
    144                                                                 {
    145                                                                         fieldLabel: _('Имя'),
    146                                                                         name: 'name',
    147                                                                         allowBlank: true,
    148                                                                         anchor: '100%'
    149                                                                 },
    150                                                                 {
    151                                                                         fieldLabel: _('Телефон'),
    152                                                                         name: 'phone',
    153                                                                         allowBlank: true,
    154                                                                         // maskRe: new RegExp('[^\\d\\+]', 'ig'),
    155                                                                         stripCharsRe: new RegExp('[^\\d\\+]+', 'ig'),
    156                                                                         regex: new RegExp('^\\+?[0-9]{10,}$', 'i'),
    157                                                                         regexText: _('Пожалуйста, укажите номер телефона в федеральном формате, используйте только цифры, знак +'),
    158                                                                         // anchor: '100%',
    159                                                                         width: 200
    160                                                                 }
    161                                                         ]
    162                                                 }
    163                                         ]
    164                                 },
    165                                 {
    166                                         id: 'card-1',
    167                                         layout: 'border',
    168                                         defaults: {
    169                                                 border: true,
    170                                                 padding: '5px 10px 5px 10px'
    171                                         },
    172                                         items: [
    173                                                 {
    174                                                         region: 'north',
    175                                                         height: 60,
    176                                                         split: false,
    177                                                         bodyStyle: 'border-bottom: 0px;',
    178                                                         html: '<img style="vertical-align: middle;" src="icons/wizard-wand.jpg"><b>'
    179                                                                         + _('Объекты мониторинга')
    180                                                                         + '</b><div style="float: right; color: gray;">'
    181                                                                         + _('Шаг 2 из 3 - Объекты мониторинга')
    182                                                                         + '</div>'
    183                                                 },
    184                                                 {
    185                                                         region: 'center',
    186                                                         xtype: 'form',
    187                                                         labelWidth: 150,
    188                                                         defaultType: 'textfield',
    189                                                         padding: '20px 30px 30px 30px',
    190                                                         items: [
    191                                                                 {
    192                                                                         xtype: 'panel',
    193                                                                         baseCls: 'x-plain',
    194                                                                         layout: 'column',
    195                                                                         defaults: {
    196                                                                                 border: false
    197                                                                         },
    198                                                                         items: [
    199                                                                                 {
    200                                                                                         columnWidth: 0.5,
    201                                                                                         xtype: 'fieldset',
    202                                                                                         labelWidth: 120,
    203                                                                                         defaults: {
    204                                                                                                 xtype: 'textfield'
    205                                                                                         },
    206                                                                                         items: [
    207                                                                                                 {
    208                                                                                                         fieldLabel: _('Трекер 1 (код/IMEI)'),
    209                                                                                                         name: 'modemid1',
    210                                                                                                         maskRe: new RegExp('\\d'),
    211                                                                                                         allowBlank: true,
    212                                                                                                         anchor: '-10'
    213                                                                                                 },
    214                                                                                                 {
    215                                                                                                         fieldLabel: _('Трекер 2 (код/IMEI)'),
    216                                                                                                         name: 'modemid2',
    217                                                                                                         maskRe: new RegExp('\\d'),
    218                                                                                                         allowBlank: true,
    219                                                                                                         anchor: '-10'
    220                                                                                                 },
    221                                                                                                 {
    222                                                                                                         fieldLabel: _('Трекер 3 (код/IMEI)'),
    223                                                                                                         name: 'modemid3',
    224                                                                                                         maskRe: new RegExp('\\d'),
    225                                                                                                         allowBlank: true,
    226                                                                                                         anchor: '-10'
    227                                                                                                 }
    228                                                                                         ]
    229                                                                                 },
    230                                                                                 {
    231                                                                                         columnWidth: 0.5,
    232                                                                                         xtype: 'fieldset',
    233                                                                                         labelWidth: 140,
    234                                                                                         defaults: {
    235                                                                                                 xtype: 'textfield'
    236                                                                                         },
    237                                                                                         items: [
    238                                                                                                 {
    239                                                                                                         fieldLabel: _('Тел. номер SIM-карты'),
    240                                                                                                         name: 'phone1',
    241                                                                                                         maskRe: new RegExp('[\\d\\+]'),
    242                                                                                                         allowBlank: true,
    243                                                                                                         stripCharsRe: new RegExp('[^\\d\\+]+', 'ig'),
    244                                                                                                         regex: new RegExp('^\\+?[0-9]{10,}$', 'i'),
    245                                                                                                         regexText: _('Пожалуйста, укажите номер телефона в федеральном формате, используйте только цифры, знак +'),
    246                                                                                                         anchor: '100%'
    247                                                                                                 },
    248                                                                                                 {
    249                                                                                                         fieldLabel: _('Тел. номер SIM-карты'),
    250                                                                                                         name: 'phone2',
    251                                                                                                         maskRe: new RegExp('[\\d\\+]'),
    252                                                                                                         allowBlank: true,
    253                                                                                                         stripCharsRe: new RegExp('[^\\d\\+]+', 'ig'),
    254                                                                                                         regex: new RegExp('^\\+?[0-9]{10,}$', 'i'),
    255                                                                                                         regexText: _('Пожалуйста, укажите номер телефона в федеральном формате, используйте только цифры, знак +'),
    256                                                                                                         anchor: '100%'
    257                                                                                                 },
    258                                                                                                 {
    259                                                                                                         fieldLabel: _('Тел. номер SIM-карты'),
    260                                                                                                         name: 'phone3',
    261                                                                                                         maskRe: new RegExp('[\\d\\+]'),
    262                                                                                                         allowBlank: true,
    263                                                                                                         stripCharsRe: new RegExp('[^\\d\\+]+', 'ig'),
    264                                                                                                         regex: new RegExp('^\\+?[0-9]{10,}$', 'i'),
    265                                                                                                         regexText: _('Пожалуйста, укажите номер телефона в федеральном формате, используйте только цифры, знак +'),
    266                                                                                                         anchor: '100%'
    267                                                                                                 }
    268                                                                                         ]
    269                                                                                 }
    270                                                                         ]
    271                                                                 }
    272                                                         ]
    273                                                 }
    274                                         ]
    275                                 },
    276                                 {
    277                                         id: 'card-2',
    278                                         layout: 'border',
    279                                         defaults: {
    280                                                 border: true,
    281                                                 padding: '5px 10px 5px 10px'
    282                                         },
    283                                         items: [
    284                                                 {
    285                                                         region: 'north',
    286                                                         height: 60,
    287                                                         split: false,
    288                                                         bodyStyle: 'border-bottom: 0px;',
    289                                                         html: '<img style="vertical-align: middle;" src="icons/wizard-wand.jpg"><b>'
    290                                                                         + _('Подтверждение')
    291                                                                         + '</b><div style="float: right; color: gray;">'
    292                                                                         + _('Шаг 3 из 3 - Подтверждение')
    293                                                                         + '</div>'
    294                                                 },
    295                                                 {
    296                                                         region: 'center',
    297                                                         padding: '20px 30px 30px 30px',
    298                                                         bodyStyle: 'font-size: 1.1em;'
    299                                                 }
    300                                         ],
    301                                         listeners: {
    302                                                 activate: function(p) {
    303                                                         var card1 = p.ownerCt.items.item(0);
    304                                                         var form1 = card1.items.item(1).getForm();
    305                                                         var personalInfo = form1.getValues();
    306                                                         personalInfo.login = personalInfo.login ? personalInfo.login : personalInfo.email;
    307                                                         var personalInfoTpl = new Ext.Template(_('Зарегистрировать учетную запись с именем <b>{login}</b> (пароль будет сгенерирован автоматически и выслан на e-mail <b>{email}</b>) для <b>{name}</b>, часовой пояс <b>{timezone}</b>'));
    308                                                         p.items.item(1).body.dom.innerHTML = personalInfoTpl.apply(personalInfo);
    309 
    310                                                         if(personalInfo.phone) {
    311                                                                 p.items.item(1).body.dom.innerHTML += _(', телефон <b>') + personalInfo.phone + '</b>';
    312                                                         }
    313 
    314                                                         p.items.item(1).body.dom.innerHTML += '<br><br>';
    315 
    316                                                         var card2 = p.ownerCt.items.item(1);
    317                                                         var form2 = card2.items.item(1).getForm();
    318                                                         modems = form2.getValues();
    319                                                         if( modems.modem_id1 || modems.modem_id2 || modems.modem_id3 ) {
    320                                                                 p.items.item(1).body.dom.innerHTML += _('и подключить следующие трекеры (список может быть изменен в последующем): <ul>');
    321                                                                 if( modems.modem_id1 ) {
    322                                                                         p.items.item(1).body.dom.innerHTML += '<li><b>' + modems.modem_id1 + '</b>';
    323                                                                 }
    324                                                                 if( modems.modem_id2 ) {
    325                                                                         p.items.item(1).body.dom.innerHTML += '<li><b>' + modems.modem_id2 + '</b>';
    326                                                                 }
    327                                                                 if( modems.modem_id3 ) {
    328                                                                         p.items.item(1).body.dom.innerHTML += '<li><b>' + modems.modem_id3 + '</b>';
    329                                                                 }
    330                                                                 p.items.item(1).body.dom.innerHTML += '</ul>';
    331                                                         }
    332 
    333                                                         p.items.item(1).body.dom.innerHTML += '<br>';
    334                                                         p.items.item(1).body.dom.innerHTML += _('Регистрация означает согласие с <a href="EULA.html" target="blank">Условиями использования</a> сервиса.');
    335                                                 }
    336                                         }
    337                                 },
    338                                 {
    339                                         id: 'card-3',
    340                                         layout: 'border',
    341                                         defaults: {
    342                                                 border: true,
    343                                                 padding: '5px 10px 5px 10px'
    344                                         },
    345                                         items: [
    346                                                 {
    347                                                         region: 'north',
    348                                                         height: 60,
    349                                                         split: false,
    350                                                         bodyStyle: 'border-bottom: 0px;',
    351                                                         html: '<img style="vertical-align: middle;" src="icons/wizard-wand.jpg"><b>'
    352                                                                         + _('Регистрация')
    353                                                                         + '</b><div style="float: right; color: gray;">'
    354                                                                         + _('Завершение')
    355                                                                         + '</div>'
    356                                                 },
    357                                                 {
    358                                                         region: 'center',
    359                                                         padding: '20px 30px 30px 30px',
    360                                                         bodyStyle: 'font-size: 1.1em;'
    361                                                 }
    362                                         ],
    363                                         listeners: {
    364                                                 activate: function(p) {
    365                                                         var card1 = p.ownerCt.items.item(0);
    366                                                         var form1 = card1.items.item(1).getForm();
    367                                                         var personalInfo = form1.getValues();
    368 
    369                                                         var card2 = p.ownerCt.items.item(1);
    370                                                         var form2 = card2.items.item(1).getForm();
    371                                                         modems = form2.getValues();
    372 
    373                                                         p.items.item(1).body.dom.innerHTML = '<div id="signupProgress"><img src="ext/resources/images/default/shared/loading-balls.gif" style="vertical-align: middle; padding: 10px;">' + _('Создание нового пользователя и объектов мониторинга...') + '</div>';
    374 
    375                                                         modemsArray = [];
    376 
    377                                                         for(var n = 1; modems['modemid' + n] != undefined; n++) {
    378                                                                 if(modems['modemid' + n]) {
    379                                                                         modemsArray.push({
    380                                                                                 modemid: modems['modemid' + n],
    381                                                                                 phone: modems['phone' + n]
    382                                                                         });
    383                                                                 }
    384                                                         }
    385 
    386                                                         Ext.Ajax.request({
    387                                                                 url: '/obj/operator/signup',
    388                                                                 params: {
    389                                                                         login: personalInfo.login ? personalInfo.login : personalInfo.email,
    390                                                                         name: personalInfo.name,
    391                                                                         email: personalInfo.email,
    392                                                                         phone: personalInfo.phone,
    393                                                                         timezone: personalInfo.timezone,
    394                                                                         objects: Ext.util.JSON.encode(modemsArray)
    395                                                                 },
    396                                                                 callback: function(options, success, response) {
    397                                                                         Ext.fly('signupProgress').remove();
    398                                                                         var err = _('Возникли трудности, возможно, нет связи с сервером, попробуйте еще раз через 3-5 минут.');
    399                                                                         if(success) {
    400                                                                                 if(response.status > 0) {
    401                                                                                         if(response.getResponseHeader('Content-Type') == 'text/x-json') {
    402                                                                                                 var responseObject = Ext.util.JSON.decode(response.responseText);
    403                                                                                                 if( responseObject.success ) {
    404                                                                                                         p.items.item(1).body.dom.innerHTML += '<table width="100%"><tr><td><img src="ext/resources/images/default/tree/drop-yes.gif" style="vertical-align: middle; padding-right: 10px;"></td><td>' + _('Регистрация завершена успешно, пароль выслан на указанный почтовый адрес.') + '</td></tr></table>';
    405                                                                                                         return;
    406                                                                                                 }
    407                                                                                                 else {
    408                                                                                                         err = responseObject.msg;
    409                                                                                                 }
    410                                                                                         }
    411                                                                                 }
    412                                                                         }
    413                                                                         p.items.item(1).body.dom.innerHTML += '<table width="100%"><tr><td><img src="ext/resources/images/default/shared/warning.gif" style="vertical-align: middle;"></td><td>' + err + '</td></tr></table>';
    414                                                                 }
    415                                                         });
    416                                                 }
    417                                         }
    418                                 }
    419                         ],
    420                         bbar: [
    421                                 '->',
    422                                 {
    423                                         id: 'card-prev',
    424                                         width: 80,
    425                                         text: '&larr; ' + _('Назад'),
    426                                         handler: cardNav.createDelegate(this, [-1]),
    427                                         disabled: true
    428                                 },
    429                                 '-',
    430                                 {
    431                                         id: 'card-next',
    432                                         width: 80,
    433                                         text: _('Далее') + ' &rarr;',
    434                                         handler: cardNav.createDelegate(this, [1]),
    435                                 }
    436                         ]
    437                 });
    438 
    439                 w.show();
    440                 comfortShift(w);
    441 
    442                 return false;
    443         }
    444 
    445         Ext.onReady(function() {
    446                 // Ext.QuickTips.init();
    447 
    448                 var cp = new Ext.state.CookieProvider({
    449                         expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 30)) // 30 days
    450                 });
    451 
    452                 Ext.state.Manager.setProvider(cp);
    453         });
    454 
    455 </script>
    456 
    4575
    4586<form>