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,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 | -?> |