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