Commit 1da765544b416bbac2b76c9a8a0d581f8ca99e64

Authored by Administrator
1 parent d86d7105

big commti

backend/controllers/EventController.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace backend\controllers; 3 namespace backend\controllers;
4 4
  5 +use common\modules\product\models\Import;
5 use Yii; 6 use Yii;
6 use common\models\Event; 7 use common\models\Event;
7 use common\models\EventSearch; 8 use common\models\EventSearch;
@@ -85,8 +86,13 @@ class EventController extends Controller @@ -85,8 +86,13 @@ class EventController extends Controller
85 $model->image = $image->name; 86 $model->image = $image->name;
86 } 87 }
87 88
  89 + if ( ($banner = UploadedFile::getInstance($model, 'banner')) ) {
  90 + $model->banner = $banner->name;
  91 + $image->saveAs(Yii::getAlias('@imagesDir/event/' . $banner->name));
  92 + }
  93 +
88 if ($model->save() && $image) { 94 if ($model->save() && $image) {
89 - $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); 95 + $image->saveAs(Yii::getAlias('@imagesDir/event/' . $image->name));
90 } 96 }
91 97
92 return $this->redirect(['view', 'id' => $model->event_id]); 98 return $this->redirect(['view', 'id' => $model->event_id]);
@@ -113,8 +119,25 @@ class EventController extends Controller @@ -113,8 +119,25 @@ class EventController extends Controller
113 $model->image = $image->name; 119 $model->image = $image->name;
114 } 120 }
115 121
  122 + if ( ($banner = UploadedFile::getInstance($model, 'banner')) ) {
  123 + $model->banner = $banner->name;
  124 + $banner->saveAs(Yii::getAlias('@imagesDir/event/' . $banner->name));
  125 + }
  126 +
116 if ($model->save() && $image) { 127 if ($model->save() && $image) {
117 - $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); 128 + $image->saveAs(Yii::getAlias('@imagesDir/event/' . $image->name));
  129 +
  130 + }
  131 +
  132 +
  133 +
  134 + if ( ($file = UploadedFile::getInstance($model, 'products_file')) ) {
  135 + if(!empty($file)){
  136 + $file->saveAs(Yii::getAlias('@uploadDir/' . $file->name));
  137 + $import = new Import();
  138 + $import->goEvent(Yii::getAlias('@uploadDir/' . $file->name));
  139 + }
  140 +
118 } 141 }
119 142
120 return $this->redirect(['view', 'id' => $model->event_id]); 143 return $this->redirect(['view', 'id' => $model->event_id]);
backend/controllers/SliderImageController.php
@@ -85,7 +85,19 @@ class SliderImageController extends Controller @@ -85,7 +85,19 @@ class SliderImageController extends Controller
85 85
86 if ($model->load(Yii::$app->request->post())) { 86 if ($model->load(Yii::$app->request->post())) {
87 $model->slider_id = $slider_id; 87 $model->slider_id = $slider_id;
88 - $model->save(); 88 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
  89 + $model->image = $image->name;
  90 + }
  91 + if ($model->save() && $image) {
  92 +
  93 + $imgDir = Yii::getAlias('@storage/slider/');
  94 +
  95 + if(!is_dir($imgDir)) {
  96 + mkdir($imgDir, 0755, true);
  97 + }
  98 +
  99 + $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name));
  100 + }
89 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); 101 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]);
90 } else { 102 } else {
91 103
@@ -114,7 +126,23 @@ class SliderImageController extends Controller @@ -114,7 +126,23 @@ class SliderImageController extends Controller
114 126
115 127
116 128
117 - $model->save(); 129 + if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
  130 + $model->image = $image->name;
  131 + }
  132 +
  133 + if(!$model->image){
  134 + $model->image = $model->getOldAttribute('image');
  135 + }
  136 +
  137 + if ($model->save() && $image) {
  138 + $imgDir = Yii::getAlias('@storage/slider/');
  139 +
  140 + if(!is_dir($imgDir)) {
  141 + mkdir($imgDir, 0755, true);
  142 + }
  143 +
  144 + $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name));
  145 + }
118 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); 146 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]);
119 } else { 147 } else {
120 148
backend/views/event/_form.php
@@ -17,6 +17,8 @@ use mihaildev\elfinder\ElFinder; @@ -17,6 +17,8 @@ use mihaildev\elfinder\ElFinder;
17 'options' => ['enctype' => 'multipart/form-data'] 17 'options' => ['enctype' => 'multipart/form-data']
18 ]); ?> 18 ]); ?>
19 19
  20 + <?= $form->field($model, 'event_id')->textInput(['maxlength' => true, 'disabled'=>true]) ?>
  21 +
20 <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> 22 <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
21 23
22 <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> 24 <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?>
@@ -35,8 +37,8 @@ use mihaildev\elfinder\ElFinder; @@ -35,8 +37,8 @@ use mihaildev\elfinder\ElFinder;
35 <?= $form->field($model, 'end_at') 37 <?= $form->field($model, 'end_at')
36 ->widget(DatePicker::className(), [ 38 ->widget(DatePicker::className(), [
37 'pluginOptions' => [ 39 'pluginOptions' => [
38 - 'format' => 'dd-M-yyyy',  
39 - 'todayHighlight' => true 40 + 'todayHighlight' => true,
  41 + 'format' => 'yyyy-mm-dd',
40 ]]) ?> 42 ]]) ?>
41 43
42 44
@@ -56,6 +58,28 @@ use mihaildev\elfinder\ElFinder; @@ -56,6 +58,28 @@ use mihaildev\elfinder\ElFinder;
56 ], 58 ],
57 ]); ?> 59 ]); ?>
58 60
  61 +
  62 + <?= $form->field($model, 'banner')->widget(\kartik\file\FileInput::classname(), [
  63 + 'language' => 'ru',
  64 + 'options' => [
  65 + 'accept' => 'image/*',
  66 + 'multiple' => false,
  67 + ],
  68 + 'pluginOptions' => [
  69 + 'allowedFileExtensions' => ['jpg', 'gif', 'png'],
  70 + 'initialPreview' => !empty($model->bannerUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->bannerUrl, 'list') : '',
  71 + 'overwriteInitial' => true,
  72 + 'showRemove' => false,
  73 + 'showUpload' => false,
  74 + 'previewFileType' => 'image',
  75 + ],
  76 + ]); ?>
  77 +
  78 + <?= $form->field($model, 'products_file')->widget(\kartik\file\FileInput::classname(), [
  79 + 'language' => 'ru'
  80 + ]); ?>
  81 +
  82 +
59 <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> 83 <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?>
60 84
61 <?= $form->field($model, 'description')->textInput(['maxlength' => true]) ?> 85 <?= $form->field($model, 'description')->textInput(['maxlength' => true]) ?>
@@ -64,6 +88,8 @@ use mihaildev\elfinder\ElFinder; @@ -64,6 +88,8 @@ use mihaildev\elfinder\ElFinder;
64 88
65 <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?> 89 <?= $form->field($model, 'seo_text')->textarea(['rows' => 6]) ?>
66 90
  91 + <?= $form->field($model, 'status')->checkbox() ?>
  92 +
67 93
68 94
69 <div class="form-group"> 95 <div class="form-group">
backend/views/slider-image/_form.php
@@ -5,7 +5,7 @@ use common\modules\file\widgets\ImageUploader; @@ -5,7 +5,7 @@ use common\modules\file\widgets\ImageUploader;
5 use kartik\select2\Select2; 5 use kartik\select2\Select2;
6 use yii\helpers\Html; 6 use yii\helpers\Html;
7 use yii\widgets\ActiveForm; 7 use yii\widgets\ActiveForm;
8 - 8 +use kartik\date\DatePicker;
9 /* @var $this yii\web\View */ 9 /* @var $this yii\web\View */
10 /* @var $slider Slider*/ 10 /* @var $slider Slider*/
11 /* @var $model common\models\SliderImage */ 11 /* @var $model common\models\SliderImage */
@@ -16,7 +16,6 @@ use yii\widgets\ActiveForm; @@ -16,7 +16,6 @@ use yii\widgets\ActiveForm;
16 16
17 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> 17 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
18 18
19 -  
20 <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [ 19 <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
21 'model' => $model, 20 'model' => $model,
22 'attribute' => 'image', 21 'attribute' => 'image',
@@ -38,17 +37,16 @@ use yii\widgets\ActiveForm; @@ -38,17 +37,16 @@ use yii\widgets\ActiveForm;
38 37
39 <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?> 38 <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
40 39
  40 + <?= $form->field($model, 'end_at')
  41 + ->widget(DatePicker::className(), [
  42 + 'pluginOptions' => [
  43 + 'todayHighlight' => true,
  44 + 'format' => 'yyyy-mm-dd',
  45 + ]]) ?>
  46 +
41 <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?> 47 <?= $form->field($model, 'url')->textInput(['maxlength' => true]) ?>
42 48
43 - <?= $form->field($model, 'status')->widget(Select2::className(),([  
44 - 'name' => 'status',  
45 - 'hideSearch' => true,  
46 - 'data' => [1 => 'Active', 2 => 'Inactive'],  
47 - 'options' => ['placeholder' => 'Select status...'],  
48 - 'pluginOptions' => [  
49 - 'allowClear' => true  
50 - ]  
51 - ])) ?> 49 + <?= $form->field($model, 'status')->checkbox() ?>
52 50
53 <?= $form->field($model, 'sort')->textInput() ?> 51 <?= $form->field($model, 'sort')->textInput() ?>
54 52
common/config/main.php
@@ -116,6 +116,22 @@ return [ @@ -116,6 +116,22 @@ return [
116 'master' => null 116 'master' => null
117 ], 117 ],
118 ], 118 ],
  119 + 'event_in_product' =>
  120 + [
  121 + 'resize' => [
  122 + 'width' => 730,
  123 + 'height' => 100,
  124 + 'master' => null
  125 + ],
  126 + ],
  127 + 'event_left' =>
  128 + [
  129 + 'resize' => [
  130 + 'width' => 960,
  131 + 'height' => 400,
  132 + 'master' => null
  133 + ],
  134 + ],
119 'brand_item' => [ 135 'brand_item' => [
120 'resize' => [ 136 'resize' => [
121 'width' => 125, 137 'width' => 125,
common/models/Event.php
1 <?php 1 <?php
2 2
3 namespace common\models; 3 namespace common\models;
4 - 4 +use common\behaviors\SaveImgBehavior;
  5 +use common\modules\product\models\Product;
5 use Yii; 6 use Yii;
6 use yii\behaviors\TimestampBehavior; 7 use yii\behaviors\TimestampBehavior;
7 /** 8 /**
@@ -19,10 +20,13 @@ use yii\behaviors\TimestampBehavior; @@ -19,10 +20,13 @@ use yii\behaviors\TimestampBehavior;
19 * @property integer $created_at 20 * @property integer $created_at
20 * @property integer $updated_at 21 * @property integer $updated_at
21 * @property integer $end_at 22 * @property integer $end_at
  23 + * @property integer $status
  24 + * @property integer $banner
22 */ 25 */
23 class Event extends \yii\db\ActiveRecord 26 class Event extends \yii\db\ActiveRecord
24 { 27 {
25 public $imageUpload; 28 public $imageUpload;
  29 + public $products_file;
26 30
27 /** 31 /**
28 * @inheritdoc 32 * @inheritdoc
@@ -32,12 +36,19 @@ class Event extends \yii\db\ActiveRecord @@ -32,12 +36,19 @@ class Event extends \yii\db\ActiveRecord
32 return 'event'; 36 return 'event';
33 } 37 }
34 38
  39 +
  40 +
  41 +
35 /** 42 /**
36 * @inheritdoc 43 * @inheritdoc
37 */ 44 */
38 public function behaviors() 45 public function behaviors()
39 { 46 {
40 return [ 47 return [
  48 + [
  49 + 'class' => SaveImgBehavior::className(),
  50 + 'directory' => 'event'
  51 + ],
41 TimestampBehavior::className(), 52 TimestampBehavior::className(),
42 'slug' => [ 53 'slug' => [
43 'class' => 'common\behaviors\Slug', 54 'class' => 'common\behaviors\Slug',
@@ -55,7 +66,8 @@ class Event extends \yii\db\ActiveRecord @@ -55,7 +66,8 @@ class Event extends \yii\db\ActiveRecord
55 public function beforeSave($insert) 66 public function beforeSave($insert)
56 { 67 {
57 if (parent::beforeSave($insert)) { 68 if (parent::beforeSave($insert)) {
58 - $this->end_at = strtotime($this->end_at); 69 +
  70 + $this->end_at = !empty($this->end_at) ? strtotime($this->end_at) : '';
59 return true; 71 return true;
60 } else { 72 } else {
61 return false; 73 return false;
@@ -63,7 +75,7 @@ class Event extends \yii\db\ActiveRecord @@ -63,7 +75,7 @@ class Event extends \yii\db\ActiveRecord
63 } 75 }
64 76
65 public function afterFind(){ 77 public function afterFind(){
66 - $this->end_at = date("Y-m-d", $this->end_at); 78 + $this->end_at = !empty($this->end_at) ? date("Y-m-d", $this->end_at) : '';
67 } 79 }
68 80
69 81
@@ -75,10 +87,11 @@ class Event extends \yii\db\ActiveRecord @@ -75,10 +87,11 @@ class Event extends \yii\db\ActiveRecord
75 return [ 87 return [
76 [['body', 'seo_text'], 'string'], 88 [['body', 'seo_text'], 'string'],
77 [['created_at', 'updated_at' ], 'integer'], 89 [['created_at', 'updated_at' ], 'integer'],
78 - [['name', 'alias', 'image', 'meta_title', 'description', 'h1','end_at'], 'string', 'max' => 255], 90 + [['name', 'alias', 'image', 'meta_title', 'description', 'h1','end_at','banner'], 'string', 'max' => 255],
79 [['name','body'], 'required'], 91 [['name','body'], 'required'],
80 [['imageUpload'], 'safe'], 92 [['imageUpload'], 'safe'],
81 [['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'], 93 [['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'],
  94 + [['products_file'], 'file'],
82 ]; 95 ];
83 } 96 }
84 97
@@ -88,7 +101,7 @@ class Event extends \yii\db\ActiveRecord @@ -88,7 +101,7 @@ class Event extends \yii\db\ActiveRecord
88 public function attributeLabels() 101 public function attributeLabels()
89 { 102 {
90 return [ 103 return [
91 - 'event_id' => Yii::t('app', 'event_id'), 104 + 'event_id' => Yii::t('app', 'ID ะฐะบั†ะธะธ'),
92 'name' => Yii::t('app', 'name'), 105 'name' => Yii::t('app', 'name'),
93 'alias' => Yii::t('app', 'alias'), 106 'alias' => Yii::t('app', 'alias'),
94 'body' => Yii::t('app', 'body'), 107 'body' => Yii::t('app', 'body'),
@@ -100,16 +113,35 @@ class Event extends \yii\db\ActiveRecord @@ -100,16 +113,35 @@ class Event extends \yii\db\ActiveRecord
100 'created_at' => Yii::t('app', 'created_at'), 113 'created_at' => Yii::t('app', 'created_at'),
101 'updated_at' => Yii::t('app', 'updated_at'), 114 'updated_at' => Yii::t('app', 'updated_at'),
102 'end_at' => Yii::t('app', 'end_at'), 115 'end_at' => Yii::t('app', 'end_at'),
  116 + 'status' => Yii::t('app', 'ะกั‚ะฐั‚ัƒั ะฐะบั†ะธะธ'),
  117 + 'products_file' => Yii::t('app', 'ะ—ะฐะณั€ัƒะทะบะฐ ั„ะฐะนะปะฐ'),
103 ]; 118 ];
104 } 119 }
105 120
106 121
107 - public function getImageFile() {  
108 - return empty($this->image) ? null : Yii::getAlias('@imagesDir/articles/'. $this->image); 122 + public function isActive(){
  123 + if($this->status){
  124 +
  125 + if(!empty($this->end_at) && (strtotime($this->end_at) <= strtotime(date("Y-m-d")))){
  126 + return false;
  127 + }
  128 + return true;
  129 + }
  130 + return false;
  131 + }
  132 +
  133 +
  134 + public function getBannerFile() {
  135 + return empty($this->image) ? null : Yii::getAlias('@imagesDir/event/'. $this->banner);
  136 + }
  137 +
  138 +
  139 + public function getProducts(){
  140 + return $this->hasMany(Product::className(),['product_id' => 'product_id'] )->viaTable('events_to_products', ['event_id' => 'event_id']);
109 } 141 }
110 142
111 - public function getImageUrl() 143 + public function getBannerUrl()
112 { 144 {
113 - return empty($this->image) ? null : Yii::getAlias('@imagesUrl/articles/' . $this->image); 145 + return empty($this->image) ? null : Yii::getAlias('@imagesUrl/event/' . $this->banner);
114 } 146 }
115 } 147 }
common/models/SliderImage.php
@@ -16,12 +16,19 @@ use Yii; @@ -16,12 +16,19 @@ use Yii;
16 * @property string $url 16 * @property string $url
17 * @property integer $status 17 * @property integer $status
18 * @property integer $sort 18 * @property integer $sort
  19 + * @property integer $end_at
19 * 20 *
20 * @property Slider $slider 21 * @property Slider $slider
21 */ 22 */
22 class SliderImage extends \yii\db\ActiveRecord 23 class SliderImage extends \yii\db\ActiveRecord
23 { 24 {
24 - 25 + /**
  26 + * @inheritdoc
  27 + */
  28 + public static function tableName()
  29 + {
  30 + return 'slider_image';
  31 + }
25 32
26 33
27 /** 34 /**
@@ -36,16 +43,6 @@ class SliderImage extends \yii\db\ActiveRecord @@ -36,16 +43,6 @@ class SliderImage extends \yii\db\ActiveRecord
36 ] 43 ]
37 ]; 44 ];
38 } 45 }
39 -  
40 -  
41 - /**  
42 - * @inheritdoc  
43 - */  
44 - public static function tableName()  
45 - {  
46 - return 'slider_image';  
47 - }  
48 -  
49 /** 46 /**
50 * @inheritdoc 47 * @inheritdoc
51 */ 48 */
@@ -53,11 +50,26 @@ class SliderImage extends \yii\db\ActiveRecord @@ -53,11 +50,26 @@ class SliderImage extends \yii\db\ActiveRecord
53 { 50 {
54 return [ 51 return [
55 [['slider_id', 'status', 'sort'], 'integer'], 52 [['slider_id', 'status', 'sort'], 'integer'],
56 - [['image', 'alt', 'title', 'url'], 'string', 'max' => 255], 53 + [['image', 'alt', 'title', 'url','end_at'], 'string', 'max' => 255],
57 [['slider_id'], 'exist', 'skipOnError' => true, 'targetClass' => Slider::className(), 'targetAttribute' => ['slider_id' => 'slider_id']], 54 [['slider_id'], 'exist', 'skipOnError' => true, 'targetClass' => Slider::className(), 'targetAttribute' => ['slider_id' => 'slider_id']],
58 ]; 55 ];
59 } 56 }
60 57
  58 +
  59 + public function beforeSave($insert)
  60 + {
  61 + if (parent::beforeSave($insert)) {
  62 +
  63 + $this->end_at = !empty($this->end_at) ? strtotime($this->end_at) : '';
  64 + return true;
  65 + } else {
  66 + return false;
  67 + }
  68 + }
  69 +
  70 + public function afterFind(){
  71 + $this->end_at = !empty($this->end_at) ? date("Y-m-d", $this->end_at) : '';
  72 + }
61 /** 73 /**
62 * @inheritdoc 74 * @inheritdoc
63 */ 75 */
@@ -74,8 +86,16 @@ class SliderImage extends \yii\db\ActiveRecord @@ -74,8 +86,16 @@ class SliderImage extends \yii\db\ActiveRecord
74 'sort' => Yii::t('app', 'sort'), 86 'sort' => Yii::t('app', 'sort'),
75 ]; 87 ];
76 } 88 }
77 -  
78 - 89 + public function isActive(){
  90 + if($this->status){
  91 +
  92 + if(!empty($this->end_at) && (strtotime($this->end_at) <= strtotime(date("Y-m-d")))){
  93 + return false;
  94 + }
  95 + return true;
  96 + }
  97 + return false;
  98 + }
79 99
80 /** 100 /**
81 * @return \yii\db\ActiveQuery 101 * @return \yii\db\ActiveQuery
@@ -86,5 +106,4 @@ class SliderImage extends \yii\db\ActiveRecord @@ -86,5 +106,4 @@ class SliderImage extends \yii\db\ActiveRecord
86 } 106 }
87 107
88 108
89 -  
90 } 109 }
common/modules/product/models/Import.php
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace common\modules\product\models; 3 namespace common\modules\product\models;
4 4
  5 +use common\models\EventsToProducts;
5 use common\modules\product\helpers\ProductHelper; 6 use common\modules\product\helpers\ProductHelper;
6 use common\modules\product\models\Category; 7 use common\modules\product\models\Category;
7 use common\modules\product\models\CategoryName; 8 use common\modules\product\models\CategoryName;
@@ -265,7 +266,7 @@ class Import extends Model { @@ -265,7 +266,7 @@ class Import extends Model {
265 // 5 ะžะฟะธัะฐะฝะธะต ะ ัƒั 266 // 5 ะžะฟะธัะฐะฝะธะต ะ ัƒั
266 $product_body_ru = $data[4]; 267 $product_body_ru = $data[4];
267 268
268 - // 6 ะคะธะปัŒั‚ั€ 269 + // 6 ะคะธะปัŒั‚ั€ [god:2013-2014]*[pol:ะผัƒะถัะบะพะน]*[naznacenie-germo-beg:ะ”ะปั ะฒะตั‰ะตะน]*[material-germo-bag:ะฝะตั‚]*[value-germo-bag:ะฝะตั‚]*[weight-germo-bag:ะฝะตั‚]*[ipx-germo-bag:ะฝะตั‚]*[in-pacage-bag:ะฝะตั‚]*[size-germo-bag:ะฝะตั‚]*[rekomend-germo-bag:ะฝะตั‚]
269 $filters = explode ('*', $data[5]); 270 $filters = explode ('*', $data[5]);
270 271
271 // 11 ะฆะตะฝะฐ ะฐะบั†ะธั 272 // 11 ะฆะตะฝะฐ ะฐะบั†ะธั
@@ -312,7 +313,7 @@ class Import extends Model { @@ -312,7 +313,7 @@ class Import extends Model {
312 313
313 foreach($catalog_names as $catalog_name){ 314 foreach($catalog_names as $catalog_name){
314 // ==== Set category ==== 315 // ==== Set category ====
315 - if ( ($category = Category::find()->filterWhere(['ilike', 'name', trim($catalog_name)])->one()) === null ) { 316 + if ( ($category = CategoryName::find()->filterWhere(['ilike', 'value', trim($catalog_name)])->one()) === null ) {
316 // Create category 317 // Create category
317 $category = new Category(); 318 $category = new Category();
318 $category->name = trim($catalog_name); 319 $category->name = trim($catalog_name);
@@ -327,7 +328,7 @@ class Import extends Model { @@ -327,7 +328,7 @@ class Import extends Model {
327 328
328 // ===== Set brand ==== 329 // ===== Set brand ====
329 if ( $brand_name ) { 330 if ( $brand_name ) {
330 - if ( ($brand = Brand::find()->filterWhere(['ilike', 'name', trim($brand_name)])->one()) !== null ) { 331 + if ( ($brand = BrandName::find()->filterWhere(['ilike', 'value', trim($brand_name)])->one()) !== null ) {
331 $_product->brand_id = $brand->brand_id; 332 $_product->brand_id = $brand->brand_id;
332 } else { 333 } else {
333 // Create brand 334 // Create brand
@@ -432,7 +433,6 @@ class Import extends Model { @@ -432,7 +433,6 @@ class Import extends Model {
432 $MOD_ARRAY[] = $_productVariant->product_variant_id; 433 $MOD_ARRAY[] = $_productVariant->product_variant_id;
433 434
434 if ($mod_image) { 435 if ($mod_image) {
435 -  
436 $source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($mod_image); 436 $source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($mod_image);
437 if (file_exists($source_image)) { 437 if (file_exists($source_image)) {
438 if (($variantImage = ProductImage::find()->andFilterWhere(['ilike', 'image', $mod_image])->andFilterWhere(['product_variant_id' => $_productVariant->product_variant_id])->one()) === null) { 438 if (($variantImage = ProductImage::find()->andFilterWhere(['ilike', 'image', $mod_image])->andFilterWhere(['product_variant_id' => $_productVariant->product_variant_id])->one()) === null) {
@@ -483,6 +483,35 @@ class Import extends Model { @@ -483,6 +483,35 @@ class Import extends Model {
483 return $result; 483 return $result;
484 } 484 }
485 485
  486 +
  487 + public function goEvent($file) {
  488 +
  489 + set_time_limit(0);
  490 +
  491 +
  492 + $handle = fopen($file, 'r');
  493 +
  494 +
  495 + while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
  496 + if(isset($data[0]) && isset($data[1])){
  497 + $product = ProductVariant::find()->where(['sku' => $data[1]])->joinWith('product')->one();
  498 + if($product instanceof ProductVariant){
  499 + $model= EventsToProducts::find()->where(['event_id' =>$data[0], 'product_id' => $product->product->product_id ])->one();
  500 + if(!$model instanceof EventsToProducts){
  501 + $model = new EventsToProducts;
  502 + $model->event_id = $data[0];
  503 + $model->product_id = $product->product->product_id;
  504 + $model->save();
  505 + }
  506 + }
  507 + }
  508 +
  509 + }
  510 + fclose($handle);
  511 + unlink($file);
  512 +
  513 + }
  514 +
486 private function getProductsFile($file_type) { 515 private function getProductsFile($file_type) {
487 $filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@'. $file_type); 516 $filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@'. $file_type);
488 if (!is_file($filename)) { 517 if (!is_file($filename)) {
@@ -528,7 +557,7 @@ class Import extends Model { @@ -528,7 +557,7 @@ class Import extends Model {
528 $taxGroup->name = $filter_name; 557 $taxGroup->name = $filter_name;
529 $taxGroup->module = 'string'; 558 $taxGroup->module = 'string';
530 $taxGroup->hierarchical = FALSE; 559 $taxGroup->hierarchical = FALSE;
531 - $taxGroup->categories = $catalog_names; 560 + $taxGroup->group_to_category = $catalog_names;
532 $taxGroup->is_filter = FALSE; 561 $taxGroup->is_filter = FALSE;
533 $taxGroup->save(); 562 $taxGroup->save();
534 } 563 }
common/modules/product/models/Product.php
@@ -13,7 +13,7 @@ use Yii; @@ -13,7 +13,7 @@ use Yii;
13 use yii\db\ActiveQuery; 13 use yii\db\ActiveQuery;
14 use yii\db\ActiveRecord; 14 use yii\db\ActiveRecord;
15 use yii\helpers\ArrayHelper; 15 use yii\helpers\ArrayHelper;
16 - 16 +use common\models\Event;
17 /** 17 /**
18 * This is the model class for table "{{%product}}". 18 * This is the model class for table "{{%product}}".
19 * 19 *
@@ -67,6 +67,9 @@ class Product extends \yii\db\ActiveRecord @@ -67,6 +67,9 @@ class Product extends \yii\db\ActiveRecord
67 { 67 {
68 return '{{%product}}'; 68 return '{{%product}}';
69 } 69 }
  70 + public function getEvents(){
  71 + return $this->hasMany(Event::className(), ['event_id' => 'event_id'])->viaTable('events_to_products', ['product_id' => 'product_id']);
  72 + }
70 73
71 /** 74 /**
72 * @inheritdoc 75 * @inheritdoc
frontend/assets/FlipclockAsset.php 0 โ†’ 100755
  1 +<?php
  2 +/**
  3 + * @link http://www.yiiframework.com/
  4 + * @copyright Copyright (c) 2008 Yii Software LLC
  5 + * @license http://www.yiiframework.com/license/
  6 + */
  7 +
  8 +namespace frontend\assets;
  9 +
  10 +use yii\web\AssetBundle;
  11 +
  12 +/**
  13 + * @author Qiang Xue <qiang.xue@gmail.com>
  14 + * @since 2.0
  15 + */
  16 +class FlipclockAsset extends AssetBundle
  17 +{
  18 + public $sourcePath = '@bower';
  19 + public $css = [
  20 + 'flipclock/compiled/flipclock.css'
  21 + ];
  22 + public $js = [
  23 + 'flipclock/compiled/flipclock.min.js'
  24 + ];
  25 + public $jsOptions = array(
  26 + 'position' => \yii\web\View::POS_END
  27 + );
  28 +}
frontend/controllers/EventController.php 0 โ†’ 100755
  1 +<?php
  2 +
  3 +namespace frontend\controllers;
  4 +
  5 +use Yii;
  6 +use common\models\Event;
  7 +use yii\web\Controller;
  8 +use yii\web\NotFoundHttpException;
  9 +use yii\data\ActiveDataProvider;
  10 +
  11 +
  12 +
  13 +class EventController extends Controller
  14 +{
  15 +
  16 + public function actionIndex()
  17 + {
  18 +
  19 + $dataProvider = new ActiveDataProvider([
  20 + 'query' => Event::find() ]);
  21 +
  22 + return $this->render('index', [
  23 + 'dataProvider' => $dataProvider,
  24 + ]);
  25 + }
  26 +
  27 +
  28 +
  29 + public function actionShow($alias)
  30 + {
  31 +
  32 + $model = $this->findModel($alias);
  33 + $productProvider = new ActiveDataProvider([
  34 + 'query' => $model->getProducts(),
  35 + ]);
  36 + return $this->render('show', [
  37 + 'productProvider' => $productProvider,
  38 + 'model' => $model,
  39 + ]);
  40 + }
  41 +
  42 +
  43 + protected function findModel($alias)
  44 + {
  45 + if (($model = Event::findOne(["alias"=>$alias])) !== null) {
  46 + return $model;
  47 + } else {
  48 + throw new NotFoundHttpException('The requested page does not exist.');
  49 + }
  50 + }
  51 +
  52 +
  53 +}
0 \ No newline at end of file 54 \ No newline at end of file
frontend/views/catalog/product.php
@@ -8,8 +8,10 @@ @@ -8,8 +8,10 @@
8 use yii\bootstrap\ActiveForm; 8 use yii\bootstrap\ActiveForm;
9 use yii\bootstrap\Html; 9 use yii\bootstrap\Html;
10 use yii\widgets\MaskedInput; 10 use yii\widgets\MaskedInput;
11 -  
12 - //FotoramaAsset::register($this); 11 +use frontend\assets\FlipclockAsset;
  12 + FotoramaAsset::register($this);
  13 +FlipclockAsset::register($this);
  14 +
13 $this->params[ 'seo' ][ 'key' ] = $category->name; 15 $this->params[ 'seo' ][ 'key' ] = $category->name;
14 $this->params[ 'seo' ][ 'fields' ][ 'name' ] = $product->fullname; 16 $this->params[ 'seo' ][ 'fields' ][ 'name' ] = $product->fullname;
15 $this->params[ 'seo' ][ 'h1' ] = !empty( Seo::widget([ 'row' => 'h1' ]) ) ? Seo::widget([ 'row' => 'h1' ]) : $product->fullname; 17 $this->params[ 'seo' ][ 'h1' ] = !empty( Seo::widget([ 'row' => 'h1' ]) ) ? Seo::widget([ 'row' => 'h1' ]) : $product->fullname;
@@ -208,7 +210,47 @@ @@ -208,7 +210,47 @@
208 </table> 210 </table>
209 </td> 211 </td>
210 </tr> 212 </tr>
211 - 213 + <tr>
  214 + <?php foreach($product->events as $event):?>
  215 + <?php if(!empty($event->end_at) && $event->isActive()):?>
  216 + <div class="event_block">
  217 +
  218 + <div class="event_title"> <?= Html::a('ะะบั†ะธั!!! '.$event->name,Url::to(['event/show','alias'=>$event->alias,'id'=>$event->primaryKey]))?></div>
  219 + <div class="event_time">ะ”ะพ ะบะพะฝั†ะฐ ะพัั‚ะฐะปะพััŒ:</div>
  220 + <div class="clock_<?= $event->primaryKey ?> clock_product_first "></div>
  221 + <script type="text/javascript">
  222 + var clock;
  223 +
  224 + $(document).ready(function() {
  225 + var clock;
  226 +
  227 + clock = $('.clock_<?= $event->primaryKey ?>').FlipClock({
  228 + clockFace: 'DailyCounter',
  229 + language: 'ru',
  230 + classes: {
  231 + active: 'flip-clock-active',
  232 + before: 'flip-clock-before',
  233 + divider: 'flip-clock-divider',
  234 + dot: 'flip-clock-dot',
  235 + label: 'flip-clock-label',
  236 + flip: 'flip',
  237 + play: 'play',
  238 + wrapper: 'flip-clock-wrapper'
  239 + },
  240 + });
  241 +
  242 + clock.setTime(<?= strtotime($event->end_at) - strtotime(date("Y-m-d H:i:s"))?>);
  243 + clock.setCountdown(true);
  244 + clock.start();
  245 +
  246 + });
  247 + </script>
  248 +
  249 + </div>
  250 + <?php endif; ?>
  251 + <?php endforeach; ?>
  252 +
  253 + </tr>
212 <tr> 254 <tr>
213 <td class="price_block"> 255 <td class="price_block">
214 <div class="price_block_container"> 256 <div class="price_block_container">
@@ -344,10 +386,16 @@ @@ -344,10 +386,16 @@
344 386
345 387
346 <div class="detail_tabs_content"> 388 <div class="detail_tabs_content">
347 - ะœั‹ ั€ะตะบะพะผะตะฝะดัƒะตะผ ะฒั‹ะฑั€ะฐั‚ัŒ ะปัŽัั‚ั€ะฐ ะญะปัั‚ะตะด ะฟะพ ัะฐะผะพะน ะปัƒั‡ัˆะตะน ั†ะตะฝะต ัั€ะตะดะธ ะธะฝั‚ะตั€ะฝะตั‚ ะบะฐั‚ะฐะปะพะณะพะฒ ัะฒะตั‚ะธะปัŒะฝะธะบะพะฒ ะธ ะดั€ัƒะณะธั… ะพัะฒะตั‚ะธั‚ะตะปัŒะฝั‹ั… ัะธัั‚ะตะผ ะฒ ะšะธะตะฒะต ะธ ะฃะบั€ะฐะธะฝะต 389 + <div class="events">
  390 + <?php foreach($product->events as $event):?>
  391 + <?php if(!empty($event->banner) && $event->isActive()):?>
  392 + <?= Html::a(\common\components\artboximage\ArtboxImageHelper::getImage($event->bannerUrl, 'event_in_product'),Url::to(['event/show','alias'=>$event->alias,'id'=>$event->primaryKey]))?>
  393 + <?php endif; ?>
  394 + <?php endforeach; ?>
  395 + </div>
348 <div class="clear properties tab_div"> 396 <div class="clear properties tab_div">
349 <h2 id="characteristics"> 397 <h2 id="characteristics">
350 - ะฅะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบะธ ะปัŽัั‚ั€ะฐ Elstead FE/LEILA6 398 + ะฅะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบะธ <?= $product->name ?>
351 </h2> 399 </h2>
352 400
353 <!-- Nav tabs --> 401 <!-- Nav tabs -->
@@ -398,125 +446,125 @@ @@ -398,125 +446,125 @@
398 </div> 446 </div>
399 447
400 <div class="clearfix"></div> 448 <div class="clearfix"></div>
401 - <div class="collection">  
402 - <br/>  
403 - <h2 id="collection">  
404 - ะšะพะปะปะตะบั†ะธั ัะฒะตั‚ะธะปัŒะฝะธะบะพะฒ <!--ะ”ะ•ะšะžะ ะ-->  
405 - </h2>  
406 - <?php /* Collection products begin (should be reworked) */ ?>  
407 - <div class="catalog_product_list view_table">  
408 - <div class="catalog_item">  
409 - <div class="wrapper">  
410 - <div class="item_container">  
411 - <div class="title">  
412 - <a href="http://www.linija-svitla.ua/lyustra-elstead-fe-leila3-5893.htm">ะปัŽัั‚ั€ะฐ FE/LEILA3</a>  
413 - </div>  
414 - <div class="img">  
415 - <a href="http://www.linija-svitla.ua/lyustra-elstead-fe-leila3-5893.htm">  
416 - <img src="http://www.linija-svitla.ua/gallery/prod/fe_leila3/5893_5.jpg" alt="ะปัŽัั‚ั€ะฐ FE/LEILA3" class="selected">  
417 - </a>  
418 - <div class="info_icons">  
419 - <a href="#" class="btn btnBuy buy_button" data-id="<?php echo $product->variant->product_variant_id; ?>" data-toggle="modal" data-target="#buyForm" lang="5893">ะšัƒะฟะธั‚ัŒ ัะฒะตั‚ะธะปัŒะฝะธะบ</a>  
420 - <ul class="ul wishlike_block">  
421 - <li class="compare">  
422 - <a onclick="add2compare(); return false;" class="compare compare_text_link_5893" lang="5893" href="#">ะš ัั€ะฐะฒะฝะตะฝะธัŽ</a>  
423 - <span class="icon"></span>  
424 - </li>  
425 - <li class="like">  
426 - <a class="like like_text_link_5893" lang="5893" href="#">ะ’ ะธะทะฑั€ะฐะฝะฝะพะต</a><span class="icon"></span>  
427 - </li>  
428 - </ul>  
429 - </div>  
430 - </div>  
431 - <div class="price">  
432 - <div class="dlexfduinxipi">  
433 - ะฆะตะฝะฐ:  
434 - <span class="main"> 25794.00 <span class="currency">ะณั€ะฝ</span>  
435 - </span>  
436 - </div>  
437 - </div>  
438 - <div class="additional_info params">  
439 - </div>  
440 - <div class="opacity_bg"></div>  
441 - </div>  
442 - </div>  
443 - </div>  
444 - <div class="catalog_item">  
445 - <div class="wrapper">  
446 - <div class="item_container">  
447 - <div class="title">  
448 - <a href="http://www.linija-svitla.ua/elstead-fe-leila1c-6991.htm"> FE/LEILA1C</a>  
449 - </div>  
450 - <div class="img">  
451 - <a href="http://www.linija-svitla.ua/elstead-fe-leila1c-6991.htm">  
452 - <img src="http://www.linija-svitla.ua/gallery/prod/fe_leila1c/6991_5.jpg" alt=" FE/LEILA1C" class="selected">  
453 - </a>  
454 - <div class="info_icons">  
455 - <a href="#" class="btn btnBuy buy_button" data-toggle="modal" data-id="<?php echo $product->variant->product_variant_id; ?>" data-target="#buyForm" lang="6991">ะšัƒะฟะธั‚ัŒ ัะฒะตั‚ะธะปัŒะฝะธะบ</a>  
456 - <ul class="ul wishlike_block">  
457 - <li class="compare">  
458 - <a onclick="add2compare(); return false;" class="compare compare_text_link_6991" lang="6991" href="#">ะš ัั€ะฐะฒะฝะตะฝะธัŽ</a>  
459 - <span class="icon"></span>  
460 - </li>  
461 - <li class="like">  
462 - <a class="like like_text_link_6991" lang="6991" href="#">ะ’ ะธะทะฑั€ะฐะฝะฝะพะต</a><span class="icon"></span>  
463 - </li>  
464 - </ul>  
465 - </div>  
466 - </div>  
467 - <div class="price">  
468 - <div class="dlexfduinxipi">  
469 - ะฆะตะฝะฐ:  
470 - <span class="main"> 14330.40 <span class="currency">ะณั€ะฝ</span>  
471 - </span>  
472 - </div>  
473 - </div>  
474 - <div class="additional_info params">  
475 - </div>  
476 - <div class="opacity_bg"></div>  
477 - </div>  
478 - </div>  
479 - </div>  
480 - <div class="catalog_item">  
481 - <div class="wrapper">  
482 - <div class="item_container">  
483 - <div class="title">  
484 - <a href="http://www.linija-svitla.ua/nastennyy-svetilnik-elstead-fe-leila2-5894.htm">ะฝะฐัั‚ะตะฝะฝั‹ะน ัะฒะตั‚ะธะปัŒะฝะธะบ FE/LEILA2</a>  
485 - </div>  
486 - <div class="img">  
487 - <a href="http://www.linija-svitla.ua/nastennyy-svetilnik-elstead-fe-leila2-5894.htm">  
488 - <img src="http://www.linija-svitla.ua/gallery/prod/fe_leila2/5894_5.jpg" alt="ะฝะฐัั‚ะตะฝะฝั‹ะน ัะฒะตั‚ะธะปัŒะฝะธะบ FE/LEILA2" class="selected">  
489 - </a>  
490 - <div class="info_icons">  
491 - <a href="#" class="btn btnBuy buy_button" data-id="<?php echo $product->variant->product_variant_id; ?>" data-toggle="modal" data-target="#buyForm" lang="5894">ะšัƒะฟะธั‚ัŒ ัะฒะตั‚ะธะปัŒะฝะธะบ</a>  
492 - <ul class="ul wishlike_block">  
493 - <li class="compare">  
494 - <a onclick="add2compare(); return false;" class="compare compare_text_link_5894" lang="5894" href="#">ะš ัั€ะฐะฒะฝะตะฝะธัŽ</a>  
495 - <span class="icon"></span>  
496 - </li>  
497 - <li class="like">  
498 - <a class="like like_text_link_5894" lang="5894" href="#">ะ’ ะธะทะฑั€ะฐะฝะฝะพะต</a><span class="icon"></span>  
499 - </li>  
500 - </ul>  
501 - </div>  
502 - </div>  
503 - <div class="price">  
504 - <div class="dlexfduinxipi">  
505 - ะฆะตะฝะฐ:  
506 - <span class="main"> 8598.00 <span class="currency">ะณั€ะฝ</span>  
507 - </span>  
508 - </div>  
509 - </div>  
510 - <div class="additional_info params">  
511 - </div>  
512 - <div class="opacity_bg"></div>  
513 - </div>  
514 - </div>  
515 - </div>  
516 - </div>  
517 - <div class="clearfix"></div>  
518 - <?php /* Collection products end (should be reworked) */ ?>  
519 - </div> 449 +<!-- <div class="collection">-->
  450 +<!-- <br/>-->
  451 +<!-- <h2 id="collection">-->
  452 +<!-- ะšะพะปะปะตะบั†ะธั ัะฒะตั‚ะธะปัŒะฝะธะบะพะฒ <!--ะ”ะ•ะšะžะ ะ-->-->
  453 +<!-- </h2>-->
  454 +<!-- --><?php ///* Collection products begin (should be reworked) */ ?>
  455 +<!-- <div class="catalog_product_list view_table">-->
  456 +<!-- <div class="catalog_item">-->
  457 +<!-- <div class="wrapper">-->
  458 +<!-- <div class="item_container">-->
  459 +<!-- <div class="title">-->
  460 +<!-- <a href="http://www.linija-svitla.ua/lyustra-elstead-fe-leila3-5893.htm">ะปัŽัั‚ั€ะฐ FE/LEILA3</a>-->
  461 +<!-- </div>-->
  462 +<!-- <div class="img">-->
  463 +<!-- <a href="http://www.linija-svitla.ua/lyustra-elstead-fe-leila3-5893.htm">-->
  464 +<!-- <img src="http://www.linija-svitla.ua/gallery/prod/fe_leila3/5893_5.jpg" alt="ะปัŽัั‚ั€ะฐ FE/LEILA3" class="selected">-->
  465 +<!-- </a>-->
  466 +<!-- <div class="info_icons">-->
  467 +<!-- <a href="#" class="btn btnBuy buy_button" data-id="--><?php //echo $product->variant->product_variant_id; ?><!--" data-toggle="modal" data-target="#buyForm" lang="5893">ะšัƒะฟะธั‚ัŒ ัะฒะตั‚ะธะปัŒะฝะธะบ</a>-->
  468 +<!-- <ul class="ul wishlike_block">-->
  469 +<!-- <li class="compare">-->
  470 +<!-- <a onclick="add2compare(); return false;" class="compare compare_text_link_5893" lang="5893" href="#">ะš ัั€ะฐะฒะฝะตะฝะธัŽ</a>-->
  471 +<!-- <span class="icon"></span>-->
  472 +<!-- </li>-->
  473 +<!-- <li class="like">-->
  474 +<!-- <a class="like like_text_link_5893" lang="5893" href="#">ะ’ ะธะทะฑั€ะฐะฝะฝะพะต</a><span class="icon"></span>-->
  475 +<!-- </li>-->
  476 +<!-- </ul>-->
  477 +<!-- </div>-->
  478 +<!-- </div>-->
  479 +<!-- <div class="price">-->
  480 +<!-- <div class="dlexfduinxipi">-->
  481 +<!-- ะฆะตะฝะฐ:-->
  482 +<!-- <span class="main"> 25794.00 <span class="currency">ะณั€ะฝ</span>-->
  483 +<!-- </span>-->
  484 +<!-- </div>-->
  485 +<!-- </div>-->
  486 +<!-- <div class="additional_info params">-->
  487 +<!-- </div>-->
  488 +<!-- <div class="opacity_bg"></div>-->
  489 +<!-- </div>-->
  490 +<!-- </div>-->
  491 +<!-- </div>-->
  492 +<!-- <div class="catalog_item">-->
  493 +<!-- <div class="wrapper">-->
  494 +<!-- <div class="item_container">-->
  495 +<!-- <div class="title">-->
  496 +<!-- <a href="http://www.linija-svitla.ua/elstead-fe-leila1c-6991.htm"> FE/LEILA1C</a>-->
  497 +<!-- </div>-->
  498 +<!-- <div class="img">-->
  499 +<!-- <a href="http://www.linija-svitla.ua/elstead-fe-leila1c-6991.htm">-->
  500 +<!-- <img src="http://www.linija-svitla.ua/gallery/prod/fe_leila1c/6991_5.jpg" alt=" FE/LEILA1C" class="selected">-->
  501 +<!-- </a>-->
  502 +<!-- <div class="info_icons">-->
  503 +<!-- <a href="#" class="btn btnBuy buy_button" data-toggle="modal" data-id="--><?php //echo $product->variant->product_variant_id; ?><!--" data-target="#buyForm" lang="6991">ะšัƒะฟะธั‚ัŒ ัะฒะตั‚ะธะปัŒะฝะธะบ</a>-->
  504 +<!-- <ul class="ul wishlike_block">-->
  505 +<!-- <li class="compare">-->
  506 +<!-- <a onclick="add2compare(); return false;" class="compare compare_text_link_6991" lang="6991" href="#">ะš ัั€ะฐะฒะฝะตะฝะธัŽ</a>-->
  507 +<!-- <span class="icon"></span>-->
  508 +<!-- </li>-->
  509 +<!-- <li class="like">-->
  510 +<!-- <a class="like like_text_link_6991" lang="6991" href="#">ะ’ ะธะทะฑั€ะฐะฝะฝะพะต</a><span class="icon"></span>-->
  511 +<!-- </li>-->
  512 +<!-- </ul>-->
  513 +<!-- </div>-->
  514 +<!-- </div>-->
  515 +<!-- <div class="price">-->
  516 +<!-- <div class="dlexfduinxipi">-->
  517 +<!-- ะฆะตะฝะฐ:-->
  518 +<!-- <span class="main"> 14330.40 <span class="currency">ะณั€ะฝ</span>-->
  519 +<!-- </span>-->
  520 +<!-- </div>-->
  521 +<!-- </div>-->
  522 +<!-- <div class="additional_info params">-->
  523 +<!-- </div>-->
  524 +<!-- <div class="opacity_bg"></div>-->
  525 +<!-- </div>-->
  526 +<!-- </div>-->
  527 +<!-- </div>-->
  528 +<!-- <div class="catalog_item">-->
  529 +<!-- <div class="wrapper">-->
  530 +<!-- <div class="item_container">-->
  531 +<!-- <div class="title">-->
  532 +<!-- <a href="http://www.linija-svitla.ua/nastennyy-svetilnik-elstead-fe-leila2-5894.htm">ะฝะฐัั‚ะตะฝะฝั‹ะน ัะฒะตั‚ะธะปัŒะฝะธะบ FE/LEILA2</a>-->
  533 +<!-- </div>-->
  534 +<!-- <div class="img">-->
  535 +<!-- <a href="http://www.linija-svitla.ua/nastennyy-svetilnik-elstead-fe-leila2-5894.htm">-->
  536 +<!-- <img src="http://www.linija-svitla.ua/gallery/prod/fe_leila2/5894_5.jpg" alt="ะฝะฐัั‚ะตะฝะฝั‹ะน ัะฒะตั‚ะธะปัŒะฝะธะบ FE/LEILA2" class="selected">-->
  537 +<!-- </a>-->
  538 +<!-- <div class="info_icons">-->
  539 +<!-- <a href="#" class="btn btnBuy buy_button" data-id="--><?php //echo $product->variant->product_variant_id; ?><!--" data-toggle="modal" data-target="#buyForm" lang="5894">ะšัƒะฟะธั‚ัŒ ัะฒะตั‚ะธะปัŒะฝะธะบ</a>-->
  540 +<!-- <ul class="ul wishlike_block">-->
  541 +<!-- <li class="compare">-->
  542 +<!-- <a onclick="add2compare(); return false;" class="compare compare_text_link_5894" lang="5894" href="#">ะš ัั€ะฐะฒะฝะตะฝะธัŽ</a>-->
  543 +<!-- <span class="icon"></span>-->
  544 +<!-- </li>-->
  545 +<!-- <li class="like">-->
  546 +<!-- <a class="like like_text_link_5894" lang="5894" href="#">ะ’ ะธะทะฑั€ะฐะฝะฝะพะต</a><span class="icon"></span>-->
  547 +<!-- </li>-->
  548 +<!-- </ul>-->
  549 +<!-- </div>-->
  550 +<!-- </div>-->
  551 +<!-- <div class="price">-->
  552 +<!-- <div class="dlexfduinxipi">-->
  553 +<!-- ะฆะตะฝะฐ:-->
  554 +<!-- <span class="main"> 8598.00 <span class="currency">ะณั€ะฝ</span>-->
  555 +<!-- </span>-->
  556 +<!-- </div>-->
  557 +<!-- </div>-->
  558 +<!-- <div class="additional_info params">-->
  559 +<!-- </div>-->
  560 +<!-- <div class="opacity_bg"></div>-->
  561 +<!-- </div>-->
  562 +<!-- </div>-->
  563 +<!-- </div>-->
  564 +<!-- </div>-->
  565 +<!-- <div class="clearfix"></div>-->
  566 +<!-- --><?php ///* Collection products end (should be reworked) */ ?>
  567 +<!-- </div>-->
520 <div class="clearfix"></div> 568 <div class="clearfix"></div>
521 <br/> 569 <br/>
522 <h2 id="reviews"> 570 <h2 id="reviews">
frontend/views/event/_objects.php 0 โ†’ 100755
  1 +<?php
  2 +use yii\helpers\Html;
  3 +use frontend\helpers\TextHelper;
  4 +use yii\helpers\Url;
  5 +use frontend\components\Text;
  6 +use frontend\assets\FlipclockAsset;
  7 +FlipclockAsset::register($this);
  8 +?>
  9 +<div class="news_item">
  10 +
  11 +
  12 + <a href="<?=Url::to(['event/show','alias'=>$model->alias,'id'=>$model->primaryKey])?>" class="name"><?=$model->name?></a>
  13 +
  14 +
  15 + <div style="position: relative">
  16 + <a href="<?=Url::to(['event/show','alias'=>$model->alias,'id'=>$model->primaryKey])?>">
  17 + <?= \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'event_left', ['align' => 'left'])?>
  18 + </a>
  19 +
  20 +
  21 + <?php
  22 +
  23 + if(!empty($model->end_at) && strtotime($model->end_at) > strtotime(date("Y-m-d"))){
  24 + ?>
  25 + <div class="clock_style clock_<?= $model->primaryKey ?>"></div>
  26 + <script type="text/javascript">
  27 + var clock;
  28 +
  29 + $(document).ready(function() {
  30 + var clock;
  31 +
  32 + clock = $('.clock_<?= $model->primaryKey ?>').FlipClock({
  33 + clockFace: 'DailyCounter',
  34 + language: 'ru',
  35 + classes: {
  36 + active: 'flip-clock-active',
  37 + before: 'flip-clock-before',
  38 + divider: 'flip-clock-divider',
  39 + dot: 'flip-clock-dot',
  40 + label: 'flip-clock-label',
  41 + flip: 'flip',
  42 + play: 'play',
  43 + wrapper: 'flip-clock-wrapper'
  44 + },
  45 + });
  46 +
  47 + clock.setTime(<?= strtotime($model->end_at) - strtotime(date("Y-m-d H:i:s"))?>);
  48 + clock.setCountdown(true);
  49 + clock.start();
  50 +
  51 + });
  52 + </script>
  53 +
  54 +
  55 + <?php
  56 + }
  57 +
  58 + ?>
  59 + </div>
  60 + <div class="both"></div>
  61 +
  62 +
  63 +
  64 +
  65 +
  66 +</div>
0 \ No newline at end of file 67 \ No newline at end of file
frontend/views/event/index.php 0 โ†’ 100755
  1 +<?php
  2 +use yii\helpers\Url;
  3 +use yii\widgets\Breadcrumbs;
  4 +//use app\models\News;
  5 +use yii\widgets\LinkPager;
  6 +
  7 +use yii\widgets\ListView;
  8 +
  9 +?>
  10 +<?php
  11 +$this->title = 'ะะบั†ะธะธ';
  12 +$this->registerMetaTag(['name' => 'description', 'content' => 'ะะบั†ะธะธ']);
  13 +$this->registerMetaTag(['name' => 'keywords', 'content' => 'ะะบั†ะธะธ']);
  14 +?>
  15 +
  16 +
  17 +<div class="wrapper white item_container">
  18 + <div class="container">
  19 + <h1>ะะบั†ะธะธ</h1>
  20 + <?php
  21 +
  22 + foreach($dataProvider->models as $model){
  23 +
  24 + if($model->isActive()){
  25 + echo $this->render('_objects',['model' => $model]);
  26 + }
  27 +
  28 + }
  29 + ?>
  30 +
  31 + <div class="both"></div>
  32 +
  33 +
  34 + </div>
  35 +
  36 +</div>
0 \ No newline at end of file 37 \ No newline at end of file
frontend/views/event/show.php 0 โ†’ 100755
  1 +<?php
  2 +use frontend\assets\FlipclockAsset;
  3 +use yii\helpers\Url;
  4 +use yii\widgets\Breadcrumbs;
  5 +FlipclockAsset::register($this);
  6 +?>
  7 +<?php
  8 +$this->title = $model->name;
  9 +
  10 +?>
  11 +
  12 +
  13 +<div class="wrapper white item_container">
  14 + <div class="container">
  15 + <h1><?=$model->name?></h1>
  16 + <div class="event_block_img">
  17 + <?php if($model->image){?>
  18 + <?= \common\components\artboximage\ArtboxImageHelper::getImage($model->imageUrl, 'event_left', ['align' => 'left'])?>
  19 + <?php }?>
  20 +
  21 + <?php
  22 +
  23 + if(!empty($model->end_at) && strtotime($model->end_at) > strtotime(date("Y-m-d"))){
  24 + ?>
  25 + <div class="clock_style clock"></div>
  26 + <script type="text/javascript">
  27 + var clock;
  28 +
  29 + $(document).ready(function() {
  30 + var clock;
  31 +
  32 + clock = $('.clock').FlipClock({
  33 + clockFace: 'DailyCounter',
  34 + language: 'ru',
  35 + classes: {
  36 + active: 'flip-clock-active',
  37 + before: 'flip-clock-before',
  38 + divider: 'flip-clock-divider',
  39 + dot: 'flip-clock-dot',
  40 + label: 'flip-clock-label',
  41 + flip: 'flip',
  42 + play: 'play',
  43 + wrapper: 'flip-clock-wrapper'
  44 + },
  45 + });
  46 +
  47 + clock.setTime(<?= strtotime($model->end_at) - strtotime(date("Y-m-d H:i:s"))?>);
  48 + clock.setCountdown(true);
  49 + clock.start();
  50 +
  51 + });
  52 + </script>
  53 +
  54 +
  55 + <?php
  56 + }
  57 +
  58 + ?>
  59 + </div>
  60 +
  61 + <?=$model->body?>
  62 + </div>
  63 +
  64 +
  65 + <div class="content">
  66 + <div class="products pn">
  67 + <ul>
  68 + <?php foreach($productProvider->models as $product) :?>
  69 + <?php if(!empty($product->enabledVariants) ):?>
  70 + <?= $this->render('../catalog/product_item', ['product' => $product])?>
  71 + <?php endif;?>
  72 + <?php endforeach?>
  73 + </ul>
  74 + </div>
  75 + </div>
  76 +
  77 +</div>
0 \ No newline at end of file 78 \ No newline at end of file
frontend/web/css/css_header.css
@@ -14391,3 +14391,133 @@ h1.title { @@ -14391,3 +14391,133 @@ h1.title {
14391 } 14391 }
14392 } 14392 }
14393 14393
  14394 +.flip-clock-wrapper ul{
  14395 + width: 40px;
  14396 + height: 60px;
  14397 +}
  14398 +
  14399 +.flip-clock-wrapper ul li{
  14400 + line-height: 60px;
  14401 +}
  14402 +
  14403 +.flip-clock-wrapper ul li a div div.inn{
  14404 + font-size: 50px;
  14405 +}
  14406 +
  14407 +.flip-clock-dot.top{
  14408 + top: 40px;
  14409 +}
  14410 +.flip-clock-dot.bottom{
  14411 + bottom: 40px;
  14412 +}
  14413 +.flip-clock-divider {
  14414 + height: 70px;
  14415 +}
  14416 +
  14417 +.events{
  14418 + margin-top: 20px;
  14419 + margin-bottom: 20px;
  14420 +
  14421 +}
  14422 +.events img{
  14423 + display: block;
  14424 + margin: 0 auto;
  14425 +}
  14426 +
  14427 +.news_item{
  14428 + position: relative;
  14429 +}
  14430 +.clock_style{
  14431 + position: absolute;
  14432 + top:10px;
  14433 + left: 10px;
  14434 +}
  14435 +.clock_style .flip-clock-label{
  14436 + right: -65px !important;
  14437 +}
  14438 +.event_block{
  14439 + position: relative;
  14440 + width: 260px;
  14441 + overflow: hidden;
  14442 + border: 2px solid #799920;
  14443 + padding: 5px;
  14444 +}
  14445 +
  14446 +.event_block .flip-clock-wrapper{
  14447 + margin-top: 15px;
  14448 + margin-left: 0px;
  14449 +}
  14450 +.event_block .flip-clock-wrapper ul{
  14451 + width: 27px;
  14452 + height: 46px;
  14453 + padding: 0;
  14454 + margin: 1px;
  14455 +}
  14456 +
  14457 +.event_block .event_title a{
  14458 + color: #799920;
  14459 + font-size: 20px;
  14460 + margin-bottom: 5px;
  14461 +}
  14462 +.event_block .flip-clock-label{
  14463 + right: -45px !important;
  14464 +}
  14465 +
  14466 +.event_block .flip-clock-wrapper ul li a div div.inn{
  14467 + font-size: 40px;
  14468 +}
  14469 +
  14470 +
  14471 +.event_block .flip-clock-dot {
  14472 + left: 2px;
  14473 +}
  14474 +.event_block .flip-clock-divider.hours,
  14475 +.event_block .flip-clock-divider.minutes,
  14476 +.event_block .flip-clock-divider.seconds{
  14477 + width: 9px;
  14478 +}
  14479 +
  14480 +.event_block .flip-clock-dot{
  14481 + width: 6px;
  14482 + height: 6px;
  14483 +}
  14484 +
  14485 +.event_block .flip-clock-dot.top{
  14486 + top: 30px;
  14487 +}
  14488 +.event_block .flip-clock-dot.bottom{
  14489 + bottom: 50px;
  14490 +}
  14491 +
  14492 +.event_block .flip-clock-wrapper ul li{
  14493 + line-height: 50px;
  14494 +}
  14495 +#HOME_SLIDER .flip-clock-wrapper{
  14496 + z-index: 1000;
  14497 +}
  14498 +
  14499 +ul.product-special li.promo div{
  14500 + color: #fff;
  14501 +}
  14502 +
  14503 +.news_item{
  14504 + display: block;
  14505 + height: 270px;
  14506 +}
  14507 +.news_item{
  14508 + margin-bottom: 20px
  14509 +}
  14510 +
  14511 +.news_item {
  14512 + padding-bottom: 20px;
  14513 + border-bottom: 1px solid silver
  14514 +}
  14515 +
  14516 +
  14517 +.news_item a {
  14518 + font-size: 16px
  14519 +}
  14520 +.event_block_img{
  14521 + position: relative;
  14522 + overflow: hidden;
  14523 +}
frontend/web/js/artbox_basket.js
@@ -65,5 +65,5 @@ var ArtboxBasket = (function () { @@ -65,5 +65,5 @@ var ArtboxBasket = (function () {
65 configurable: true 65 configurable: true
66 }); 66 });
67 return ArtboxBasket; 67 return ArtboxBasket;
68 -}()); 68 +})();
69 //# sourceMappingURL=artbox_basket.js.map 69 //# sourceMappingURL=artbox_basket.js.map
70 \ No newline at end of file 70 \ No newline at end of file
frontend/web/js/artbox_basket.js.map
1 -{"version":3,"file":"artbox_basket.js","sourceRoot":"","sources":["artbox_basket.ts"],"names":[],"mappings":"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"}  
2 \ No newline at end of file 1 \ No newline at end of file
  2 +{"version":3,"file":"artbox_basket.js","sourceRoot":"","sources":["artbox_basket.ts"],"names":["ArtboxBasket","ArtboxBasket.constructor","ArtboxBasket.items","ArtboxBasket.add","ArtboxBasket.set","ArtboxBasket.updateModal","ArtboxBasket.updateCart","ArtboxBasket.count","ArtboxBasket.sum"],"mappings":"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"}
3 \ No newline at end of file 3 \ No newline at end of file