diff --git a/backend/protected/modules/contact/controllers/BContactController.php b/backend/protected/modules/contact/controllers/BContactController.php index 6c829d29..0a844be0 100644 --- a/backend/protected/modules/contact/controllers/BContactController.php +++ b/backend/protected/modules/contact/controllers/BContactController.php @@ -14,6 +14,214 @@ class BContactController extends BController public $position = 1; + /** + * @param $id + */ + public function actionUpdate($id) + { + Yii::app()->clientScript->registerScript( + 'BContactFormScripts', " + $(function(){ + //----------------------------------------------------------------------------- + // Добавить тестовое поле + var textblockCounter = 0; + $('.action.btn[data-action=\"add-textblock\"]').on('click', function(){ + var name = $(''); + var sysname = $(''); + + // создание кнопки \"Удалить\" + var button_delete = $(''); + button_delete.on('click', function(e) { + e.preventDefault(); + $(this).parent('div').remove(); + }); + + var content = $('
'); + content.append(name); + $(content).append(' '); + content.append(sysname); + $(content).append(' '); + $(content).append(button_delete); + $('#textblock-add-cell').append(content); + + textblockCounter++; + }); + + //----------------------------------------------------------------------------- + // Добавление группы полей + var group_counter = 1; + $('.action.btn[data-action=\"group\"]').on('click', function(){ + // создание поля с названием поля + var name = $(''); + + // создание поля с системным именем поля + var sysname = $(''); + + // создание кнопки \"Удалить\" + var button_delete = $(''); + button_delete.on('click', function(e) { + e.preventDefault(); + $(this).parent('div').remove(); + }); + + var content = $(''); + content.append(name); + $(content).append(' '); + content.append(sysname); + $(content).append(' '); + $(content).append(button_delete); + + $('#group-add-cell').append(content); + group_counter++; + }); + + //----------------------------------------------------------------------------- + // Добавление поля к группе + $('.action.btn[data-action=\"field\"]').on('click', function(){ + var group = $(this).attr('data-group'), + list = $('.field-add-cell[data-group=' + group + '] ul'); + var last_id = list.find('li').size(); + + // создание иконки + var icon = $(''); + + // создание поля со значением поля + var name = $(''); + + // создание поля с описанием поля + var description = $(''); + + // создание кнопки \"Удалить\" + var button_delete = $(''); + button_delete.on('click', function(e) { + e.preventDefault(); + $(this).parent('li').remove(); + }); + + // добавляем все созданные элементы в список + var content = $(''); + + $(content).append(icon); + $(content).append(' '); + $(content).append(name); + $(content).append(' '); + $(content).append(description); + $(content).append(' '); + $(content).append(button_delete); + + list.append(content); + }); + + // ----------------------------------------------------------------------------------------- + // Сортировка полей в группе + $('.sortable').sortable({ + items: 'li:not(.not-sortable)', + update: function(event, ui) { + sortFields(ui.item); + } + }); + + function sortFields(item) { + var url = '" . $this->createUrl('sort') . "'; + var list = []; + var position = 1; + var hasError = false; + + // создание массива полей + $(item).parents('ul').children('li:not(.not-sortable)').each(function(){ + var listItem = {}; + listItem['id'] = $(this).attr('data-fid'); + listItem['position'] = position; + + list.push(listItem); + position++; + }); + + if( !hasError ) + $.post(url, {'sort' : list, 'type' : 'field'}); + } + + // ----------------------------------------------------------------------------------------- + // Сортировка текстовых блоков + $('.textblock-container').sortable({ + update: function(event, ui) { + sortTextBlocks(ui.item); + } + }); + + function sortTextBlocks(item) + { + var url = '" . $this->createUrl('sort') . "'; + var list = []; + var position = 1; + var hasError = false; + + console.log(item); + + // создание массива полей + $(item).parents('ul').children('li').each(function(){ + var listItem = {}; + listItem['id'] = $(this).attr('data-textblock-id'); + listItem['position'] = position; + + list.push(listItem); + position++; + }); + + if( !hasError ) + $.post(url, {'sort' : list, 'type' : 'textblock'}); + } + + // ------------------------------------------------------------------------------------------- + // Удаление полей + $('.btn.delete').on('click', function(e){ + e.preventDefault(); + + var id = $(this).attr('data-fid'); + var type = 'field'; + + if( id === undefined ) + { + id = $(this).attr('data-textblock-id'); + type = 'textblock'; + } + + if( id === undefined ) + return false; + + var url = '" . $this->createUrl('delete') . "'; + var self = $(this); + + var callback = function(resp){ + $(self).parents('li').fadeOut(); + }; + + $.post(url, {'delete' : {'id' : id, 'type' : type}}, callback); + }); + + // ------------------------------------------------------------------------------------------- + // Удаление группы полей + $('span.delete-group').on('click', function(){ + if( !confirm('Вы уверены, что хотите удалить группу полей?') ) + return false; + + var url = '" . $this->createUrl('delete') . "'; + var id = $(this).attr('data-group'); + + var callback = function(resp){ + $('td.field-add-cell[data-group=' + id + ']').parents('tr').fadeOut(); + }; + + $.post(url, {'delete' : {'id' : id, 'type' : 'group'}}, callback); + }); + + });", + CClientScript::POS_END + ); + + parent::actionUpdate($id); + } + /** * Сохранение сортировки */ @@ -134,7 +342,7 @@ protected function saveModels($models, $extendedSave = true, $redirectToUpdate = */ protected function saveTextblock(BContact $model) { - $textblocks = Yii::app()->request->getPost('ContactTextBlock'); + $textblocks = Yii::app()->request->getPost('BContactTextBlock'); if( !empty($textblocks['new']) ) { diff --git a/backend/protected/modules/contact/models/BContact.php b/backend/protected/modules/contact/models/BContact.php index beb99b2b..3cdd92e8 100644 --- a/backend/protected/modules/contact/models/BContact.php +++ b/backend/protected/modules/contact/models/BContact.php @@ -20,6 +20,7 @@ * @property integer $visible * * @property BContactGroup[] $contactGroups + * @property BContactTextBlock[] $textblocks */ class BContact extends BActiveRecord { diff --git a/backend/protected/modules/contact/views/contact/_form.php b/backend/protected/modules/contact/views/contact/_form.php index b6f9058f..f4965920 100644 --- a/backend/protected/modules/contact/views/contact/_form.php +++ b/backend/protected/modules/contact/views/contact/_form.php @@ -112,204 +112,3 @@ renderPartial('//_form_buttons', array('model' => $model));?> endWidget(); ?> - - \ No newline at end of file