Commit 7f52c0c950926f945c8ecfcdff258163605c6c5e

Authored by Administrator
1 parent c1196c22

slider

models/SliderImage.php
@@ -18,6 +18,7 @@ @@ -18,6 +18,7 @@
18 * @property string $url 18 * @property string $url
19 * @property integer $status 19 * @property integer $status
20 * @property integer $sort 20 * @property integer $sort
  21 + * @property integer $end_at
21 * @property Slider $slider 22 * @property Slider $slider
22 * * From language behavior * 23 * * From language behavior *
23 * @property SliderImageLang $lang 24 * @property SliderImageLang $lang
@@ -68,11 +69,13 @@ @@ -68,11 +69,13 @@
68 'slider_id', 69 'slider_id',
69 'status', 70 'status',
70 'sort', 71 'sort',
  72 +
71 ], 73 ],
72 'integer', 74 'integer',
73 ], 75 ],
74 [ 76 [
75 [ 77 [
  78 + 'end_at',
76 'url', 79 'url',
77 ], 80 ],
78 'string', 81 'string',
@@ -105,6 +108,38 @@ @@ -105,6 +108,38 @@
105 ], 108 ],
106 ]; 109 ];
107 } 110 }
  111 +
  112 +
  113 +
  114 + public function beforeSave($insert)
  115 + {
  116 + if (parent::beforeSave($insert)) {
  117 +
  118 + $this->end_at = !empty($this->end_at) ? strtotime($this->end_at) : '';
  119 + return true;
  120 + } else {
  121 + return false;
  122 + }
  123 + }
  124 +
  125 + public function afterFind(){
  126 + $this->end_at = !empty($this->end_at) ? date("Y-m-d", $this->end_at) : '';
  127 + }
  128 +
  129 +
  130 + /**
  131 + * @return bool
  132 + */
  133 + public function isActive(){
  134 + if($this->status){
  135 +
  136 + if(!empty($this->end_at) && (strtotime($this->end_at) <= strtotime(date("Y-m-d")))){
  137 + return false;
  138 + }
  139 + return true;
  140 + }
  141 + return false;
  142 + }
108 143
109 /** 144 /**
110 * @inheritdoc 145 * @inheritdoc
@@ -118,6 +153,7 @@ @@ -118,6 +153,7 @@
118 'url' => Yii::t('app', 'url'), 153 'url' => Yii::t('app', 'url'),
119 'status' => Yii::t('app', 'status'), 154 'status' => Yii::t('app', 'status'),
120 'sort' => Yii::t('app', 'sort'), 155 'sort' => Yii::t('app', 'sort'),
  156 + 'end_at' => Yii::t('app', 'Таймер до'),
121 ]; 157 ];
122 } 158 }
123 159
views/slider-image/_form.php
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 use yii\helpers\Html; 9 use yii\helpers\Html;
10 use yii\web\View; 10 use yii\web\View;
11 use yii\widgets\ActiveForm; 11 use yii\widgets\ActiveForm;
12 - 12 +use kartik\date\DatePicker;
13 /** 13 /**
14 * @var View $this 14 * @var View $this
15 * @var SliderImage $model 15 * @var SliderImage $model
@@ -44,7 +44,13 @@ @@ -44,7 +44,13 @@
44 'showUpload' => false, 44 'showUpload' => false,
45 ], 45 ],
46 ]); ?> 46 ]); ?>
47 - 47 + <?= $form->field($model, 'end_at')
  48 + ->widget(DatePicker::className(), [
  49 + 'pluginOptions' => [
  50 + 'todayHighlight' => true,
  51 + 'format' => 'yyyy-mm-dd',
  52 + ]]) ?>
  53 +
48 <?= $form->field($model, 'url') 54 <?= $form->field($model, 'url')
49 ->textInput([ 'maxlength' => true ]) ?> 55 ->textInput([ 'maxlength' => true ]) ?>
50 56
views/slider/_form.php
@@ -22,15 +22,7 @@ @@ -22,15 +22,7 @@
22 22
23 <?= $form->field($model, 'title') 23 <?= $form->field($model, 'title')
24 ->textInput([ 'maxlength' => true ]) ?> 24 ->textInput([ 'maxlength' => true ]) ?>
25 -  
26 -  
27 - <?= $form->field($model, 'width')  
28 - ->textInput([ 'maxlength' => true ]) ?>  
29 -  
30 - <?= $form->field($model, 'height')  
31 - ->textInput([ 'maxlength' => true ]) ?>  
32 -  
33 - 25 +
34 <?= $form->field($model, 'status') 26 <?= $form->field($model, 'status')
35 ->widget( 27 ->widget(
36 Select2::className(), 28 Select2::className(),
widgets/Slider.php deleted
1 -<?php  
2 -namespace frontend\widgets;  
3 -  
4 -use yii\base\Widget;  
5 -  
6 -class Slider extends Widget  
7 -{  
8 - public $title;  
9 -  
10 - public function init(){  
11 -  
12 - parent::init();  
13 -  
14 - }  
15 -  
16 - public function run()  
17 - {  
18 -  
19 -  
20 - $slider = \artweb\artbox\design\models\Slider::find()->where([\artweb\artbox\design\models\Slider::tableName().'.title'=>$this->title])->joinWith("sliderImage")->one();  
21 - if($slider instanceof \artweb\artbox\design\models\Slider){  
22 - return $this->render('slider',[  
23 - 'slider'=>$slider,  
24 - 'title'=>$this->title  
25 - ]);  
26 -  
27 - }  
28 -  
29 -  
30 - }  
31 -  
32 -}  
widgets/views/slider.php deleted
1 -<?php  
2 - /* @var $slider Slider */  
3 - use artweb\artbox\components\artboximage\ArtboxImageHelper;  
4 - use artweb\artbox\design\models\Slider;  
5 - use yii\helpers\Html;  
6 - use yii\web\View;  
7 -  
8 -?>  
9 -  
10 -  
11 -<div id="<?= $title ?>" class="owl-carousel owl-theme">  
12 - <?php if ($slider instanceof Slider) {  
13 - foreach ($slider->sliderImage as $image):  
14 -  
15 - ?>  
16 - <div class="item">  
17 - <?php  
18 - if (!empty( $image->end_at ) && strtotime($image->end_at) > strtotime(date("Y-m-d"))) {  
19 - ?>  
20 - <div class="clock_centered">  
21 - <div class="clock_style clock_<?= $image->primaryKey ?>"></div>  
22 - </div>  
23 - <?php $js = "var clock;  
24 - clock = new FlipClock($('.clock_" . $image->primaryKey . "'), {  
25 - clockFace: 'DailyCounter',  
26 - language: 'ru',  
27 - classes: {  
28 - active: 'flip-clock-active',  
29 - before: 'flip-clock-before',  
30 - divider: 'flip-clock-divider',  
31 - dot: 'flip-clock-dot',  
32 - label: 'flip-clock-label',  
33 - flip: 'flip',  
34 - play: 'play',  
35 - wrapper: 'flip-clock-wrapper'  
36 - },  
37 - });  
38 -  
39 - clock.setTime(" . ( strtotime($image->end_at) - strtotime(date('Y-m-d H:i:s')) ) . ");  
40 - clock.setCountdown(true);  
41 - clock.start();";  
42 - $this->registerJs($js, View::POS_LOAD) ?>  
43 -  
44 -  
45 - <?php  
46 - } ?>  
47 - <?= Html::a(Html::img(ArtboxImageHelper::getImageSrc($image->imageUrl, 'slider')), $image->url) ?>  
48 - </div>  
49 -  
50 -  
51 - <?php endforeach;  
52 - }  
53 - ?>  
54 -</div>  
55 -<?php  
56 - $dur = $slider->duration ? $slider->duration : 5000;  
57 - $speed = $slider->speed ? $slider->speed : 500;  
58 - $js = " $(\"#$title\").owlCarousel({  
59 - navigation : true, // Show next and prev buttons  
60 - slideSpeed : 500,  
61 - autoplayTimeout:$dur,  
62 - paginationSpeed : $speed,  
63 - singleItem:true,  
64 - autoPlay:true  
65 -  
66 - });  
67 - var owl = $(\"#$title\");  
68 - $('#next_slide').click(function() {  
69 - owl.trigger('owl.next');  
70 - })  
71 - $('#prev_slide').click(function() {  
72 - owl.trigger('owl.prev');  
73 - })  
74 - ";  
75 -  
76 - $this->registerJs($js, View::POS_READY);  
77 -  
78 -?>