Commit 7f52c0c950926f945c8ecfcdff258163605c6c5e
1 parent
c1196c22
slider
Showing
5 changed files
with
45 additions
and
121 deletions
Show diff stats
models/SliderImage.php
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 | * @property string $url |
19 | 19 | * @property integer $status |
20 | 20 | * @property integer $sort |
21 | + * @property integer $end_at | |
21 | 22 | * @property Slider $slider |
22 | 23 | * * From language behavior * |
23 | 24 | * @property SliderImageLang $lang |
... | ... | @@ -68,11 +69,13 @@ |
68 | 69 | 'slider_id', |
69 | 70 | 'status', |
70 | 71 | 'sort', |
72 | + | |
71 | 73 | ], |
72 | 74 | 'integer', |
73 | 75 | ], |
74 | 76 | [ |
75 | 77 | [ |
78 | + 'end_at', | |
76 | 79 | 'url', |
77 | 80 | ], |
78 | 81 | 'string', |
... | ... | @@ -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 | 145 | * @inheritdoc |
... | ... | @@ -118,6 +153,7 @@ |
118 | 153 | 'url' => Yii::t('app', 'url'), |
119 | 154 | 'status' => Yii::t('app', 'status'), |
120 | 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 | 9 | use yii\helpers\Html; |
10 | 10 | use yii\web\View; |
11 | 11 | use yii\widgets\ActiveForm; |
12 | - | |
12 | +use kartik\date\DatePicker; | |
13 | 13 | /** |
14 | 14 | * @var View $this |
15 | 15 | * @var SliderImage $model |
... | ... | @@ -44,7 +44,13 @@ |
44 | 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 | 54 | <?= $form->field($model, 'url') |
49 | 55 | ->textInput([ 'maxlength' => true ]) ?> |
50 | 56 | ... | ... |
views/slider/_form.php
... | ... | @@ -22,15 +22,7 @@ |
22 | 22 | |
23 | 23 | <?= $form->field($model, 'title') |
24 | 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 | 26 | <?= $form->field($model, 'status') |
35 | 27 | ->widget( |
36 | 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 | -?> |