Пример #1
0
<?php

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use justinvoelker\awesomebootstrapcheckbox\ActiveField;
use yii\widgets\MaskedInput;
use common\widgets\GooglePlacesAutoComplete\GooglePlacesAutoComplete;
use common\widgets\ImageLoad\assets\CropperAsset;
use common\widgets\Chosen\ChosenAsset;
use common\widgets\FontAwesome\AssetBundle;
use yii\helpers\Url;
AssetBundle::register($this);
ChosenAsset::register($this);
CropperAsset::register($this);
/* @var $this yii\web\View */
/* @var $modelAdTransport common\models\AdTransport */
/* @var $user common\models\User */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $key int */
/* @var $pjaxUrl string */
$user = Yii::$app->user->identity;
?>
<div class="col-md-6 col-md-offset-3">
    <div class="ad-real-estate-form">
        <div class="row">
            <?php 
$form = ActiveForm::begin(['action' => $modelAdTransport->isNewRecord ? 'create' : Url::to(['update', 'id' => $modelAdTransport->id]), 'method' => 'post', 'fieldClass' => justinvoelker\awesomebootstrapcheckbox\ActiveField::className(), 'id' => 'ad_form']);
?>

            <?php 
//d($modelAdTransport->scenario);
Пример #2
0
    public function registerClientScript()
    {
        $view = $this->getView();
        // Регистрация виджета
        CropperAsset::register($view);
        // Пользовательские настройки переводим в JSON
        $options = Json::encode($this->pluginOptions);
        $cropBoxData = Json::encode($this->cropBoxData);
        $canvasData = Json::encode($this->canvasData);
        $imageClass = $this->classesWidget['imageClass'];
        $buttonDeleteClass = $this->classesWidget['buttonDeleteClass'];
        $imageContainerClass = $this->classesWidget['imageContainerClass'];
        $formImagesContainerClass = $this->classesWidget['formImagesContainerClass'];
        $js = <<<JS
            var loadFile = function(event) {                                // Создается объект события, который срабатывает при выборе нового изображения
                var output = document.getElementById("previewImg-{$this->id}");         // output - объект, куда будет помещено выбранное изображение
                output.src = URL.createObjectURL(event.target.files[0]);    // в свойство src объекта output помещает url выбранного изображения\\
                \$("#modal-{$this->id}").modal('show');                  // открывает модальное окно с ID "#{$this->id}", запускается перед событием shown.bs.modal
            };

            var deleteImage = function(event) {                                // Функция для удаления изображения
                if (confirm("Удалить изображение?")) {                                   // подтверждение удаления
                    var imageData = JSON.stringify({
                        modelName: "{$this->modelName}",
                        id: "{$this->id}",
                        object_id: "{$this->object_id}",
                        image_id: window.idImage,
                        images_num: "{$this->images_num}",
                        images_label: "{$this->images_label}",
                        images_temp: "{$this->images_temp}",
                        imageSmallWidth: "{$this->imageSmallWidth}",
                        imageSmallHeight: "{$this->imageSmallHeight}",
                        deleteUrl: "{$this->deleteUrl}",
                        baseUrl: "{$this->baseUrl}",
                        imagePath: "{$this->imagePath}",
                        noImage: "{$this->noImage}",
                        imageClass: "{$imageClass}",
                        buttonDeleteClass: "{$buttonDeleteClass}",
                        imageContainerClass: "{$imageContainerClass}",
                        formImagesContainerClass: "{$formImagesContainerClass}"
                    });
                    \$.pjax({
                        type: "POST",
                        url: "{$this->deleteUrl}",
                        data: {imageData: imageData},
                        container: "#images-widget",
                        push: false
                    });
                } else {
                return false;
                }
            };
JS;
        $view->registerJs($js, View::POS_HEAD);
        // Событие, загрзки файла, регистрируем в head
        $js = <<<JS
            var modalBox = \$("#modal-{$this->id}"),                                 // modalBox - объект модального окна с ID "#{$this->id}"
                image = \$("#modal-{$this->id} .crop-image-container > img"),        // селектор для выбранного изображения
                cropBoxData = {$cropBoxData},
                canvasData = {$canvasData},
                cropUrl;                                                    // путь контроллер/действие, куда будут отправлятся pjax данные

            modalBox.on("shown.bs.modal", function (event) {                // событие, перед фактическим показом модального окна, выполняется после события show
                cropUrl = \$("#crop-url-{$this->id}").attr("data-crop-url");   // в объект cropUrl помещаем маршрут из свойства data-crop-url элемента "#crop-url-{$this->id}"
                image.cropper(\$.extend({                                    // \$.extend объеденяем объекты built и dragend, результат будет записан в built
                    built: function () {                                    // событие происходит когда Cropper полностью построен
                        // Начальные настройки изображения
                        image.cropper('setCropBoxData', cropBoxData);
                        image.cropper('setCanvasData', canvasData);
                    },
                    dragend: function() {                                   // событие завершения выделения и получения данных
                        cropBoxData = image.cropper('getCropBoxData');      // получение состояния рамки
                        canvasData = image.cropper('getCanvasData');        // получение состояние холста
                    }
                }, {$options}));                                              // дополнительные настройки

            }).on('hidden.bs.modal', function () {                          // событие выполняется перед фактическим закрытием модального окна и после события hide
                cropBoxData = image.cropper('getCropBoxData');              // получение конечных данных рамки
                canvasData = image.cropper('getCanvasData');                // получение конечных данных холста
                image.cropper('destroy');                                   // уничтожает Cropper и удаляет экземпляр из изображения
            });

            \$(document).on("click", "#rotate-left-{$this->id}", function(e) { // при нажатие на элемент "#rotate-left-{$this->id}" происходит поворот влево на 90 градусов
                image.cropper("rotate", -90);
            });

            \$(document).on("click", "#rotate-right-{$this->id}", function(e) {    // при нажатие на элемент "#rotate-right-{$this->id}" происходит поворот вправо на 90 градусов
                image.cropper("rotate", 90);
            });
JS;
        $view->registerJs($js);
        $js = <<<JS
                \$(document).on("click", "#modal-{$this->id} .crop-submit", function(e) {    // событие нажатия на кнопку с классом .crop-submit в элементе с ID "#{$this->id}"
                    e.preventDefault();                                             // событие не сработает по умолчанию
                    // console.log(image.cropper("getData"));                       // вывод объекта image.cropper("getData") в консоль
                    var form = \$("#image-form-{$this->id}");

                    cropBoxData = image.cropper('getCropBoxData');              // получение конечных данных рамки
                    canvasData = image.cropper('getCanvasData');                // получение конечных данных холста

                    var cropData = JSON.stringify(image.cropper("getData"));

                    form.trigger('submit');

                    form.on("beforeSubmit", function(e) {

                        \$("#image_id-{$this->id}").attr("value", window.idImage);      // отправляем ID изображения, которое нужно изменить
                        var cropData = JSON.stringify(image.cropper("getData"));
                        \$("#imageCrop-{$this->id}").attr("value", cropData);
                    });
                    modalBox.modal("hide");                                     // событие выполняется перед фактическим закрытием модального окна и перед событием hidden.bs.modal
                });
JS;
        $view->registerJs($js);
    }