Файл: protected/views/page/new_additional_field.php
Строк: 298
<?php $this->pageTitle = 'Новое поле | Анкета контакта'; ?>
<?php $correct_path = 'http://' . $_SERVER["HTTP_HOST"]; ?>
<div class="clients-hat">
    <div class="settings-name">
        <?php echo CHtml::link('Настройки', array('page/settings_additional_field')); ?>
        <img src="/img/right-arrow-button.svg">
        Анкета контакта
        <img src="/img/right-arrow-button.svg">
        Новое поле
    </div>
    <div class="goback-link pull-right">
        <input class="btn_close" type="button" onclick="history.back();" value="❮  Назад "/>
    </div>
</div>
<main class="content full2" role="main">
    <?php
    $form = $this->beginWidget('CActiveForm', array(
        'id' => 'new-client',
        'htmlOptions' => [
            'class' => 'page-form'
        ]
    ));
    ?>
    <div class="edit_user_view">
        <div class="content-01">
            <div class="title_name_1">Настройка поля</div>
            <div class="centre_settings">
                <table class="main_table_12">
                    <tr>
                        <td class="an_001" width="132">Поле:<span class="star">*</span></td>
                        <td><?php echo $form->textField($addField, 'name', array('class' => 'form-control', 'autocomplete' => 'off', 'placeholder' => 'Наименование')); ?>
                            <?php echo $form->error($addField, 'name', array('class' => 'form-error')); ?>
                    </tr>
                    <tr>
                        <td class="an_001" width="132">Тип поля:</td>
                        <td style="white-space: normal;"><?php echo $form->dropDownList($addField, 'type', AdditionalFields::model()->getTypeField(), array('class' => 'styled', 'autocomplete' => 'off', 'data-placeholder' => '')); ?>
                    </tr>
                    <tr id="size" style="display: none">
                        <td class="an_001" width="132">Размер:</td>
                        <td style="white-space: normal;"><?php echo $form->dropDownList($addField, 'size', AdditionalFields::model()->getSizeText(), array('class' => 'styled', 'data-placeholder' => '')); ?>
                        </td>
                    </tr>
                    <tr id="defaultString">
                        <td class="an_001" width="132">По умолчанию:</td>
                        <td><?php
                            echo $form->textField($addField, 'defaultValueType[string]', array('class' => 'form-control ' . ($addField->getError('default_value') ? 'error' : ''), 'autocomplete' => 'off', 'placeholder' => '', 'value' => $addField->default_value)); ?>
                            <?php echo $form->error($addField, 'default_value', array('class' => 'form-error')); ?></td>
                    </tr>
                    <tr id="defaultCheckBox" style="display: none">
                        <td class="an_001" width="132">По умолчанию:</td>
                        <td><?php echo $form->checkBox($addField, 'defaultValueType[checkBox]', array('class' => 'form-control_1 checkBox')); ?>
                            <?php echo $form->error($addField, 'defaultValueType[checkBox]', array('class' => 'form-error')); ?></td>
                    </tr>
                    <tr id="defaultDate" style="display: none">
                        <td class="an_001" width="132">По умолчанию:</td>
                        <td><?php
                            echo $this->widget('ext.CJuiDateTimePicker.CJuiDateTimePicker', array(
                                'name' => "AdditionalFields[defaultValueType][date]",
                                'model' => $addField,
                                'attribute' => "defaultValueType[date]",
                                'language' => 'ru',
                                'htmlOptions' => array(
                                    'class' => 'form-control editable',
                                    'autocomplete' => 'off'
                                ),
                                'options' => array(
                                    'dateFormat' => 'dd.mm.yy',
                                    'changeMonth' => 'true',
                                    'changeYear' => 'true',
                                    'showButtonPanel' => true,
                                    'beforeShow' => new CJavaScriptExpression('function(element){dataPickerFocus = $(element).attr('id').trim();}')
                                ),
                            ), true);
                            ?>
                        </td>
                    </tr>
                    <tr id="defaultSelect">
                        <td class="an_001" width="132">По умолчанию:</td>
                        <td><?php echo $form->textField($addField, 'defaultValueType[select]', array('class' => 'form-control', 'autocomplete' => 'off', 'placeholder' => 'Нет значения')); ?>
                            <?php echo $form->error($addField, 'defaultValueType[select]', array('class' => 'form-error')); ?></td>
                    </tr>
                    <tr id="required">
                        <td class="an_001" width="132">Обязательное:</td>
                        <td><?php echo $form->checkBox($addField, 'required', array('class' => 'form-control_1 checkBox')); ?>
                            <?php echo $form->error($addField, 'required', array('class' => 'form-error')); ?></td>
                    </tr>
                    <tr>
                        <td class="an_001" width="132">Порядок:<span class="star">*</span></td>
                        <td><?php echo $form->textField($addField, 'weight', array('class' => 'form-control', 'autocomplete' => 'off', 'placeholder' => '')); ?>
                            <?php echo $form->error($addField, 'weight', array('class' => 'form-error')); ?></td>
                    </tr>
                    <tr id="tipInput">
                        <td class="an_001 tip-label" width="132">Подсказка:</td>
                        <td><?php echo $form->textArea($addField, 'tip', array('class' => 'form-control tip-input', 'autocomplete' => 'off', 'placeholder' => '')); ?>
                            <?php echo $form->error($addField, 'tip', array('class' => 'form-error')); ?></td>
                    </tr>
                </table>
            </div>
            <div class="centre_setting_3">
                <div class="block-info" id="selectOptions">
                    <div class="block-row addSelectOption">
                        <div class="row-label">Значение в списке:<span class="star">*</span></div>
                        <div class="row-label label-weight">№:<span class="star">*</span></div>
                    </div>
                    <div class="block-options addSelectOption">
                        <? $count = 1;
                        foreach ($selectOptions as $value) { ?>
                            <div class="block-row">
                                <div class="row-input input-option">
                                    <? echo CHtml::textField('AdditionalFields[Select][' . $count . '][optionName]', $value['optionName'], ['maxlenght' => 20, 'placeholder' => 'Вариант ' . $count, 'autocomplete' => 'off',]) ?>
                                </div>
                                <div class="row-input input-weight">
                                    <? echo CHtml::textField('AdditionalFields[Select][' . $count . '][optionWeight]', $value['optionWeight'], ['maxlength' => 2, 'autocomplete' => 'off', 'class' => 'optionWeight', 'id' => "inputWeight", 'pattern' => "^[ 0-9]+$"]) ?>
                                </div>
                                <div class="row-input input-radioButton">
                                    <? echo CHtml::radioButton('AdditionalFields[Select][' . $count . '][default]',
                                        isset($value['default']), ['id' => 'radio' . $count, 'onClick' => 'changeRadioActive(' . $count . ')']) ?>
                                </div>
                                <div class="row-input">
                                    <img class="delDocument_set" onclick="deleteOption(event, <? echo $count ?>)"
                                         src="/img/cancel_newdoc.svg" alt="">
                                </div>
                            </div>
                            <? $count++;
                        } ?>
                    </div>
                    <div class="block-row addSelectOption">
                        <a class="add" id="addOption" href="#">Добавить</a>
                    </div>
                    <? if ($addField->getError('selectError')) { ?>
                        <div class="block-row addSelectOption">
                            <div class="custom-error"><? echo $addField->getError('selectError') ?></div>
                        </div>
                    <? } ?>
                </div>
            </div>
            <div class="save_button">
                <?php echo CHtml::submitButton('Создать поле', array('class' => 'btn', 'id' => 'save')); ?>
                <div id="preloader"></div>
            </div>
            <?php $this->endWidget(); ?>
        </div>
    </div>
    <div class="right-sidebar">
            <div class="title_name_2">Справка</div>
            <div class="popup__form_actions">
                <ul>
                    <li>
                        <strong>О полях</strong>
                        <br>
                        <br>
                        Поля нужны, чтобы собрать как можно больше информации о контакте. Поля заполняются в анкете
                        контакта и входят в состав разделов. Можно перенести поле в другой раздел. Изменить тип текущего
                        поля невозможно
                    </li>
                    <details class="help_0">
                        <summary class="help_1">Как сделать поле обязательным?</summary>
                        <p>Включите параметр "Обязательное". Если такое поле не заполнить, тогда сохранить контакт не
                            получится</p>
                    </details>
                    <details class="help_0">
                        <summary class="help_1">Как сделать автозаполнение поля?</summary>
                        <p>Заполните параметр "По умолчанию". При создании контакта поле будет уже заполнено, в текущих
                            контактах поле не изменится</p>
                    </details>
                    <details class="help_0">
                        <summary class="help_1">Что будет если удалить поле?</summary>
                        <p>Поле удалится безвозвратно</p>
                    </details>
            </div>
        </div>
   
</main>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
    $("#new-client").submit(function () {
        $("#preloader").addClass('preloader');
        $("#save_and_create").hide();
        $("#save").hide();
    });
    function showHide() {
        switch ($("#AdditionalFields_type").val()) {
            case 'int':
                $("#defaultString").show();
                $("#defaultCheckBox").hide();
                $("#defaultSelect").hide();
                $("#defaultDate").hide();
                $("#size").hide();
                $("#required").show();
                $("#selectOptions").hide();
                $("#selectOptions").hide();
                break;
            case 'varchar':
                $("#defaultString").show();
                $("#size").show();
                $("#defaultCheckBox").hide();
                $("#defaultDate").hide();
                $("#required").show();
                $("#selectOptions").hide();
                $("#defaultSelect").hide();
                break;
            case 'checkbox':
                $("#defaultString").hide();
                $("#defaultCheckBox").show();
                $("#defaultDate").hide();
                $("#size").hide();
                $("#required").hide();
                $("#selectOptions").hide();
                $("#defaultSelect").hide();
                break;
            case 'date':
                $("#defaultString").hide();
                $("#defaultCheckBox").hide();
                $("#size").hide();
                $("#defaultDate").show();
                $("#required").show();
                $("#selectOptions").hide();
                $("#defaultSelect").hide();
                break;
            case 'select':
                $("#defaultString").hide();
                $("#defaultCheckBox").hide();
                $("#size").hide();
                $("#defaultDate").hide();
                $("#required").hide();
                $("#selectOptions").show();
                $("#defaultSelect").hide();
                break;
        }
    }
    $("#AdditionalFields_type").change(function () {
        showHide()
    });
    deleteOption = function (event) {
        event.preventDefault();
        var blockOption = event.path[2];
        if (!blockOption.querySelectorAll('input[type="radio"]')[0].checked) {
            blockOption = event.path[2];
            blockListOptions = $('.block-options.addSelectOption');
            listOptions = blockListOptions.children();
            if (listOptions.length > 2) {
                blockOption.remove();
                changeShowButtonDelete();
            } else {
                alert('Невозможно удалить значение! В селекторе должно быть не менее 2-х значений')
            }
        } else {
            alert('Значение по умолчанию в селекторе невозможно удалить!');
        }
    };
    var count = <?echo $count - 1?>;
    changeShowButtonDelete();
    $('#addOption').click(function () {
        event.preventDefault();
        blockListOptions = $('.block-options.addSelectOption');
        listOptions = blockListOptions.children();
        Weights = $('.optionWeight');
        listWeight = [];
        // массив с весами
        for (var i = 0; i < Weights.length; i++) {
            listWeight.push(+Weights[i].value);
        }
        weigth = null;
        for (var i = 1; i <= listOptions.length; i++) {
            if (listWeight.indexOf(i) < 0) {
                weigth = i;
                break;
            }
        }
        count++;
        weigth = weigth || listOptions.length + 1;
        blockOption = '<div class="block-row">n' +
            '                                <div class="row-input input-option">n' +
            '                                    <input type="text" autocomplete="off" name="AdditionalFields[Select][' + count + '][optionName]" class="optionName" placeholder="Вариант ' + count + '" maxlength="20">' +
            '                                </div>n' +
            '                                <div class="row-input input-weight">n' +
            '                                    <input type="text" autocomplete="off" name="AdditionalFields[Select][' + count + '][optionWeight]" id="inputWeight" pattern="^[ 0-9]+$" maxlength="2" class="optionWeight" value="' + weigth + '">' +
            '                                </div>n' +
            '                                <div class="row-input input-radioButton">n' +
            '                                    <input type="radio" name="AdditionalFields[Select][' + count + '][default]" id="radio' + count + '" onclick="changeRadioActive(' + count + ')">' +
            '                                </div>n' +
            '                                <div class="row-input">n' +
            '                                    <img class="delDocument_set" onclick="deleteOption(event, count)" src="/img/cancel_newdoc.svg" alt="">n' +
            '                                </div>n' +
            '                            </div>';
        blockListOptions.append(blockOption);
        changeShowButtonDelete();
    });
    changeRadioActive = function (radioId) {
        $('input:radio').prop('checked', false);
        $('#radio' + radioId).prop("checked", true);
        changeShowButtonDelete();
    };
    function changeShowButtonDelete() {
        var listButtonDelete = $('.block-row').find('.delete');
        if (listButtonDelete.length <= 2) {
            $('.delete-option').addClass('hide');
            for (var i = 0; i <= listButtonDelete.length - 1; i++) {
                listButtonDelete[i].classList.add('hide');
            }
        } else {
            for (var i = 0; i <= listButtonDelete.length - 1; i++) {
                listButtonDelete[i].classList.remove('hide');
            }
            // затираем  ссылку "удалить" активного радиобаттон
            $("input:radio:checked").closest('.block-row').find('.delete').addClass('hide');
        }
    }
    showHide();
</script>