image_sizer.php 3.67 KB
<?php
/**
 * Created by PhpStorm.
 * User: vitaliy
 * Date: 05.10.15
 * Time: 16:20
 */
use yii\helpers\Html;
$this->registerJsFile('@web/js/vendor/bower/jquery-file-upload/js/vendor/jquery.ui.widget.js');
$this->registerJsFile('@web/js/vendor/bower/jquery-file-upload/js/jquery.iframe-transport.js');
$this->registerJsFile('@web/js/vendor/bower/jquery-file-upload/js/jquery.fileupload.js');

?>
<style>
    .gallery_image{

        position: relative;
        margin-left: 20px;
        margin-top: 20px;
        display: inline-block;
    }
    .delete-gallery-item{
        background-color: #fff;
        opacity: 0.5;
        font-size: 20px;
        position: absolute;
        top: 5px;
        right: 5px;
        cursor: pointer;
    }

    .delete-field-item{
        position: absolute;
        top: 33%;
        right: -35px;
        font-size: 15px;
        cursor: pointer;
    }
</style>
<?php if(!$multi):?>
<?= $form->field( new \backend\models\ImageSizerForm(), 'file')->fileInput(['id'=>$field, 'data-url'=>"/admin/site/download-photo" ]); ?>

<?= $form->field($model,$field)->hiddenInput(['id' => "{$field}_picture_link"]) ?>
    <input type="hidden" name="ImageSizerForm[width]" value="<?=$width?>"/>
    <input type="hidden" name="ImageSizerForm[height]" value="<?=$height?>"/>
    <input type="hidden" name="ImageSizerForm[old_img]" value="<?=$model->$field?>"/>
<div id="<?= $field?>_img_block">
    <?= $model->$field ? Html::img($model->$field): '' ?>
</div>

<script>
    $(function(){

        $("#<?= $field?>").fileupload({
            dataType: 'json',
            done: function (e, data) {
                var host = window.location.host.toString();
                var img = '<img src="http://'+host+data.result.link+'">';
                var block = $("#<?= $field?>_img_block");
                block.find('img').remove();
                block.append(img);
                $("#<?= $field?>_picture_link").val(data.result.link);
            }
        });

    })
</script>
<?php else:?>
    <?= $form->field( new \backend\models\ImageSizerForm(), 'file')->fileInput(['id'=>$field, 'data-url'=>"/admin/site/download-photo", 'multiple'=> 'multiple']); ?>

    <?= $form->field($model,$field)->hiddenInput(['id' => "{$field}_picture_link"]) ?>
    <input type="hidden" name="ImageSizerForm[width]" value="<?=$width?>"/>
    <input type="hidden" name="ImageSizerForm[height]" value="<?=$height?>"/>
    <input type="hidden" name="ImageSizerForm[multi]" value="<?=$multi?>"/>

    <div id="<?= $field?>_img_block">
        <?php

        foreach($this->context->getGallery() as  $image){
            echo $this->render('_gallery_item', [ 'item' => ['image'=>$image]]);
        }
        ?>
    </div>
    <script>
        $(function(){

            $("#<?= $field?>").fileupload({
                dataType: 'json',
                done: function (e, data) {

                    var img = data.result.view;
                    var block = $("#<?= $field?>_img_block");
                    block.append(img);
                    var gallery = $("#<?= $field?>_picture_link");
                    gallery.val(gallery.val()+data.result.link+',');
                }
            });
            $('body').on('click','.delete-gallery-item', function(){
                var url = $(this).data('url');
                $(this).parent('.gallery_image').remove();
                var gallery = $("#<?= $field?>_picture_link");
                var urls = gallery.val();
                gallery.val(urls.replace(url+',', ""));
                $.post( "/admin/site/delete-image",{old_img: url},  function( data ) {
                    $( ".result" ).html( data );
                });
            })

        })
    </script>
<? endif;?>