Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.66 KB | None | 0 0
  1. <?php
  2. require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
  3. $APPLICATION->SetTitle("Регистрация сертифицирующего органа");
  4.  
  5.  
  6. //Добавление офисов
  7. if (isset($_POST['form_send'])) {
  8.     $message = '';
  9.     if (CModule::IncludeModule("iblock")) {
  10.         $CIBlockSection = new CIBlockSection;
  11.         $sectionArray = array(
  12.             'IBLOCK_ID' => BxClass::OFFICE_IBLOCK_ID,
  13.             'IBLOCK_CODE' => BxClass::OFFICE_IBLOCK_CODE,
  14.             'NAME' => $USER->GetLogin(),
  15.             'CHECK_PERMISSIONS' => 'N',
  16.         );
  17.         $section_result = $CIBlockSection->GetList(array(), $sectionArray);
  18.  
  19.         if ($section_result->SelectedRowsCount() != 0) {
  20.             $section_id = $section_result->Fetch();
  21.             foreach ($_POST['office'] as $office) {
  22.                 $officeArray = array(
  23.                     'IBLOCK_ID' => BxClass::OFFICE_IBLOCK_ID,
  24.                     'IBLOCK_SECTION_ID' => $section_id['ID'],
  25.                     'NAME' => BxClass::mb_ucfirst($office['city']) . ' ' . BxClass::mb_ucfirst($office['street']),
  26.                     'PROPERTY_VALUES' => array(
  27.                         'city' => BxClass::mb_ucfirst($office['city']),
  28.                         'street' => BxClass::mb_ucfirst($office['street']),
  29.                         'phones' => $office['phones'],
  30.                         'main' => ((int)$office['main'] ? '14' : false),
  31.                     ),
  32.                 );
  33.                 $CIBlockElement = new CIBlockElement;
  34.                 if (!(int)$office['id']) {
  35.                     if($CIBlockElement->Add($officeArray)) {
  36.                         $message = '<p style="color: green; padding-bottom: 20px;">Данные успешно обновлены, <a href="/">перейти на главную</a></p>';
  37.                     }
  38.                 } else {
  39.                     if($CIBlockElement->Update($office['id'], $officeArray)) {
  40.                         $message = '<p style="color: green; padding-bottom: 20px;">Данные успешно обновлены, <a href="/">перейти на главную</a></p>';
  41.                     }
  42.                 }
  43.             }
  44.         } else {
  45.             $CIBlockSection->Add($sectionArray);
  46.         }
  47.     }
  48. }
  49.  
  50. //Выборка офисов
  51. if (CModule::IncludeModule("iblock")) {
  52.     $CIBlockSection = new CIBlockSection;
  53.     $sectionArray = array(
  54.         'IBLOCK_ID' => BxClass::OFFICE_IBLOCK_ID,
  55.         'IBLOCK_CODE' => BxClass::OFFICE_IBLOCK_CODE,
  56.         'NAME' => $USER->GetLogin(),
  57.         'CHECK_PERMISSIONS' => 'N',
  58.     );
  59.     $section_result = $CIBlockSection->GetList(array(), $sectionArray);
  60.  
  61.     if ($section_result->SelectedRowsCount() != 0) {
  62.         $section_array = $section_result->Fetch();
  63.         if ((int)$section_array['ID']) {
  64.             $officeFilter = array(
  65.                 'IBLOCK_ID' => BxClass::OFFICE_IBLOCK_ID,
  66.                 'SECTION_ID' => $section_array['ID']
  67.             );
  68.             $office_result = CIBlockElement::GetList(array('PROPERTY_main' => 'DESC'), $officeFilter, false, false, array('IBLOCK_ID', 'ID', 'NAME', 'PROPERTY_city', 'PROPERTY_street', 'PROPERTY_phones', 'PROPERTY_main'));
  69.             while($office_tmp = $office_result->GetNext()) {
  70.                 $performer_offices[] = $office_tmp;
  71.             }
  72. //            debug($performer_offices);
  73.         }
  74.     }
  75. }
  76. $city = BxClass::getCityArray();
  77. ?>
  78. <div class="body-section transparent-bg">
  79.     <div class="w-container body-container">
  80.         <div class="content-container mid">
  81.             <div class="w-form request-form-container customer-reg">
  82.                 <h1 class="content-title customer-reg">Укажите все ваши офисы</h1>
  83.                 <span class="content-title">Головной офис</span><br/><br/>
  84.  
  85.                 <?= (!empty($message) ? $message : ''); ?>
  86.  
  87.                 <form method="post">
  88.                     <?php if(is_array($performer_offices)):
  89.                         $i = 0;
  90.                         ?>
  91.                         <?php foreach($performer_offices as $performer_office):
  92.                             if((int)$performer_office['PROPERTY_MAIN_ENUM_ID']):?>
  93.                                 <div class="office">
  94.                                     <div class="form-row">
  95.                                         <label class="form-label customer-reg" for="">Город:</label>
  96.                                         <select name="office[<?=$i?>][city]" class="w-input form-input customer-reg" required="required"/>
  97.                                             <?php foreach($city as $value):?>
  98.                                                 <option <?php echo($performer_office['PROPERTY_CITY_VALUE'] == $value ? 'selected' : '')?> value="<?=$value?>"><?=$value?></option>
  99.                                             <?php endforeach; ?>
  100.                                         </select>
  101.                                     </div>
  102.                                     <div class="form-row">
  103.                                         <label class="form-label customer-reg" for="">Адрес:</label>
  104.                                         <input name="office[<?=$i?>][street]" size="30"  value="<?=$performer_office['PROPERTY_STREET_VALUE']?>" class="w-input form-input customer-reg"
  105.                                                required="required"/>
  106.                                     </div>
  107.                                     <div class="form-row">
  108.                                         <label class="form-label customer-reg" for="">Телефон(ы):</label>
  109.                                         <input name="office[<?=$i?>][phones]" size="30"  value="<?=$performer_office['PROPERTY_PHONES_VALUE']?>" class="w-input form-input customer-reg"
  110.                                                required="required"/>
  111.                                     </div>
  112.                                     <input type="hidden" name="office[<?=$i?>][main]" value="1">
  113.                                     <input type="hidden" name="office[<?=$i?>][id]" value="<?=$performer_office['ID']?>">
  114.                                 </div>
  115.                             <?php else: ?>
  116.                                 <div class="office">
  117.                                     <div class="form-row">
  118.                                         <label class="form-label customer-reg" for="">Город:</label>
  119.                                         <input name="office[<?=$i?>][city]" size="30" value="<?=$performer_office['PROPERTY_CITY_VALUE']?>" class="w-input form-input customer-reg green-bg" />
  120.                                     </div>
  121.                                     <div class="form-row">
  122.                                         <label class="form-label customer-reg" for="">Адрес:</label>
  123.                                         <input name="office[<?=$i?>][street]" size="30"  value="<?=$performer_office['PROPERTY_STREET_VALUE']?>" class="w-input form-input customer-reg green-bg" />
  124.                                     </div>
  125.                                     <div class="form-row">
  126.                                         <label class="form-label customer-reg" for="">Телефон(ы):</label>
  127.                                         <input name="office[<?=$i?>][phones]" size="30"  value="<?=$performer_office['PROPERTY_PHONES_VALUE']?>" class="w-input form-input customer-reg green-bg" />
  128.                                     </div>
  129.                                     <input type="hidden" name="office[<?=$i?>][main]" value="0">
  130.                                     <input type="hidden" class="office_id" name="office[<?=$i?>][id]" value="<?=$performer_office['ID']?>">
  131.                                     <a href="javascript:void(0)" class="deleteOffice">Удалить офис</a>
  132.                                 </div>
  133.                             <?php endif;
  134.                                 $i++;
  135.                             ?>
  136.                         <?php endforeach; ?>
  137.                     <?php else:?>
  138.                         <div class="office">
  139.                             <div class="form-row">
  140.                                 <label class="form-label customer-reg" for="">Город:</label>
  141.                                 <select name="office[0][city]"  class="w-input form-input customer-reg" required="required"/>
  142.                                 <?php if(count($city) > 0) {
  143.                                     foreach($city as $value):?>
  144.                                         <option value="<?=$value?>"><?=$value?></option>
  145.                                     <?php endforeach;
  146.                                 }
  147.                                 ?>
  148.                                 </select>
  149.                             </div>
  150.                             <div class="form-row">
  151.                                 <label class="form-label customer-reg" for="">Адрес:</label>
  152.                                 <input name="office[0][street]" size="30"  class="w-input form-input customer-reg"
  153.                                        required="required"/>
  154.                             </div>
  155.                             <div class="form-row">
  156.                                 <label class="form-label customer-reg" for="">Телефон(ы):</label>
  157.                                 <input name="office[0][phones]" size="30"  class="w-input form-input customer-reg"
  158.                                        required="required"/>
  159.                             </div>
  160.                             <input type="hidden" name="office[0][main]" value="1">
  161.                             <input type="hidden" name="office[0][id]" value="">
  162.                         </div>
  163.                     <?php endif;?>
  164.                     <div>
  165.                         <a href="javascript:void(0)" id="add" style="color: #2c8600; float: left;">Добавить еще
  166.                             офис</a>
  167.                     </div>
  168.                     <?php if(count($performer_offices) != 0):?>
  169.                     <input type="submit" class="w-inline-block button form form-button on-main green" name="form_send"
  170.                            value="Обновить"/>
  171.                     <?php else: ?>
  172.                         <input type="submit" class="w-inline-block button form form-button on-main green" name="form_send"
  173.                                value="Начать работу"/>
  174.                     <?php endif;?>
  175.                 </form>
  176.  
  177.                 <script type="template" data-template="form-item">
  178.                     <div data-form-item="{id}">
  179.                         <div class="office">
  180.                             <div data-form-item="{id}">
  181.                                 <div class="form-row">
  182.                                     <label class="form-label customer-reg" for="">Город:</label>
  183.                                     <input data-form-item-city name="office[{id}][city]" size="30" class="w-input form-input customer-reg green-bg"/>
  184.                                 </div>
  185.                                 <div class="form-row">
  186.                                     <label class="form-label customer-reg" for="">Адрес:</label>
  187.                                     <input name="office[{id}][street]" size="30" class="w-input form-input customer-reg green-bg"/>
  188.                                 </div>
  189.                                 <div class="form-row">
  190.                                    <label class="form-label customer-reg" for="">Телефон(ы):</label>
  191.                                    <input name="office[{id}][phones]" size="30" class="w-input form-input customer-reg green-bg"/>
  192.                                 </div>
  193.                                 <a href="" class="remOfficeElement">Удалить офис</a>
  194.                                 <input type="hidden" name="office[' + cnt_offices + '][main]" value="0">
  195.                             </div>
  196.                         </div>
  197.                     </div>
  198.                 </script>
  199.                 <script type="template" data-template="form-item-city">
  200.                     <select name="office[{id}][city]">
  201.                         <?php if(count($city) > 0) {
  202.                             foreach($city as $value):?>
  203.                                 <option value="<?=$value?>"><?=$value?></option>
  204.                             <?php endforeach;
  205.                         }
  206.                         ?>
  207.                     </select>
  208.                 </script>
  209.  
  210.                 <script>
  211.  
  212.                     'use strict';
  213.  
  214.                     var view = {
  215.                         templates: {},
  216.  
  217.                         getTemplate: function(template) {
  218.                             if (!this.templates[template]) {
  219.                                 this.templates[template] = document.querySelector('script[type="template"][data-template="' + template + '"]').innerHTML;
  220.                             }
  221.                             return this.templates[template];
  222.                         },
  223.  
  224.                         render: function(template, data) {
  225.                             var i,
  226.                                 regex;
  227.                             if (typeof data !== 'object') {
  228.                                 data = {};
  229.                             }
  230.                             template = this.getTemplate(template);
  231.                             for (i in data) {
  232.                                 regex = new RegExp('{' + i + '}', 'g');
  233.                                 template = template.replace(regex, data[i]);
  234.                             }
  235.                             return template;
  236.                         },
  237.  
  238.                         renderDom: function(template, data) {
  239.                             return $(this.render(template, data))[0];
  240.                         }
  241.                     };
  242.  
  243.                     (function() {
  244.                         var form = document.getElementById('form'),
  245.                             items = form.querySelectorAll('[data-form-item]'),
  246.                             add = document.getElementById('add'),
  247.                             lastId = 0,
  248.                             prepare,
  249.                             i;
  250.                         prepare = function(item) {
  251.                             var id = parseInt(item.dataset.formItem),
  252.                                 city = item.querySelector('[data-form-item-city]'),
  253.                                 citySelect = view.renderDom('form-item-city', {
  254.                                     id: id
  255.                                 });
  256.                             id > lastId ? lastId = id : null;
  257.                             citySelect.value = city.value;
  258.                             item.insertBefore(citySelect, city);
  259.                             item.removeChild(city);
  260.                         };
  261.                         for (i = items.length - 1; i >= 0; i--) {
  262.                             prepare(items[i]);
  263.                         }
  264.                         add.onclick = function(event) {
  265.                             event.preventDefault();
  266.                             var item = view.renderDom('form-item', {
  267.                                 id: ++lastId
  268.                             });
  269.                             form.appendChild(item);
  270.                             prepare(item);
  271.                         };
  272.                     })();
  273.  
  274.                 </script>
  275.  
  276.                 <script>
  277.                     $('#addOffice').click(function () {
  278. //                        var cnt_offices = ++$('.office').length;
  279. //                        var html =
  280. //                            '<div class="office">' +
  281. //                            '<div class="form-row">' +
  282. //                            '<label class="form-label customer-reg" for="">Город:</label>' +
  283. //                            '<input name="office[' + cnt_offices + '][city]" size="30" class="w-input form-input customer-reg green-bg"/>' +
  284. //                            '</div>' +
  285. //                            '<div class="form-row">' +
  286. //                            '<label class="form-label customer-reg" for="">Адрес:</label>' +
  287. //                            '<input name="office[' + cnt_offices + '][street]" size="30" class="w-input form-input customer-reg green-bg" />' +
  288. //                            '</div>' +
  289. //                            '<div class="form-row">' +
  290. //                            '<label class="form-label customer-reg" for="">Телефон(ы):</label>' +
  291. //                            '<input name="office[' + cnt_offices + '][phones]" size="30" class="w-input form-input customer-reg green-bg" />' +
  292. //                            '</div>' +
  293. //                            '<a href="" class="remOfficeElement">Удалить офис</a>' +
  294. //                            '<input type="hidden" name="office[' + cnt_offices + '][main]" value="0">' +
  295. //                            '</div>';
  296. //                        $(html).insertAfter($('.office').last());
  297. //                    });
  298.  
  299.                     $(document).on("click", '.remOfficeElement', function() {
  300.                         $(this).parent().remove();
  301.                     })
  302.  
  303.                     $('.deleteOffice').on('click', function(event) {
  304.                         var $this = $(this),
  305.                             office_id = $this.siblings('.office_id').val();
  306.  
  307.                         event.preventDefault();
  308.  
  309.                         if(office_id) {
  310.                             $.post('./delete.php', {id: office_id}, function(response) {
  311.                                 if (response.success) {
  312.                                     $this.parent().remove();
  313.                                 }
  314.                             });
  315.                         }
  316.                     })
  317.                 </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement