From 1da765544b416bbac2b76c9a8a0d581f8ca99e64 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 15 Sep 2016 19:17:06 +0300 Subject: [PATCH] big commti --- backend/controllers/EventController.php | 27 +++++++++++++++++++++++++-- backend/controllers/SliderImageController.php | 32 ++++++++++++++++++++++++++++++-- backend/views/event/_form.php | 30 ++++++++++++++++++++++++++++-- backend/views/slider-image/_form.php | 20 +++++++++----------- common/config/main.php | 16 ++++++++++++++++ common/models/Event.php | 50 +++++++++++++++++++++++++++++++++++++++++--------- common/models/SliderImage.php | 49 ++++++++++++++++++++++++++++++++++--------------- common/modules/product/models/Import.php | 39 ++++++++++++++++++++++++++++++++++----- common/modules/product/models/Product.php | 5 ++++- frontend/assets/FlipclockAsset.php | 28 ++++++++++++++++++++++++++++ frontend/controllers/EventController.php | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ frontend/views/catalog/product.php | 296 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------- frontend/views/event/_objects.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frontend/views/event/index.php | 36 ++++++++++++++++++++++++++++++++++++ frontend/views/event/show.php | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frontend/web/css/css_header.css | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ frontend/web/js/artbox_basket.js | 2 +- frontend/web/js/artbox_basket.js.map | 2 +- 18 files changed, 785 insertions(+), 173 deletions(-) create mode 100755 frontend/assets/FlipclockAsset.php create mode 100755 frontend/controllers/EventController.php create mode 100755 frontend/views/event/_objects.php create mode 100755 frontend/views/event/index.php create mode 100755 frontend/views/event/show.php diff --git a/backend/controllers/EventController.php b/backend/controllers/EventController.php index bf67aab..edc71fe 100755 --- a/backend/controllers/EventController.php +++ b/backend/controllers/EventController.php @@ -2,6 +2,7 @@ namespace backend\controllers; +use common\modules\product\models\Import; use Yii; use common\models\Event; use common\models\EventSearch; @@ -85,8 +86,13 @@ class EventController extends Controller $model->image = $image->name; } + if ( ($banner = UploadedFile::getInstance($model, 'banner')) ) { + $model->banner = $banner->name; + $image->saveAs(Yii::getAlias('@imagesDir/event/' . $banner->name)); + } + if ($model->save() && $image) { - $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); + $image->saveAs(Yii::getAlias('@imagesDir/event/' . $image->name)); } return $this->redirect(['view', 'id' => $model->event_id]); @@ -113,8 +119,25 @@ class EventController extends Controller $model->image = $image->name; } + if ( ($banner = UploadedFile::getInstance($model, 'banner')) ) { + $model->banner = $banner->name; + $banner->saveAs(Yii::getAlias('@imagesDir/event/' . $banner->name)); + } + if ($model->save() && $image) { - $image->saveAs(Yii::getAlias('@imagesDir/articles/' . $image->name)); + $image->saveAs(Yii::getAlias('@imagesDir/event/' . $image->name)); + + } + + + + if ( ($file = UploadedFile::getInstance($model, 'products_file')) ) { + if(!empty($file)){ + $file->saveAs(Yii::getAlias('@uploadDir/' . $file->name)); + $import = new Import(); + $import->goEvent(Yii::getAlias('@uploadDir/' . $file->name)); + } + } return $this->redirect(['view', 'id' => $model->event_id]); diff --git a/backend/controllers/SliderImageController.php b/backend/controllers/SliderImageController.php index b055c0d..a0009cd 100755 --- a/backend/controllers/SliderImageController.php +++ b/backend/controllers/SliderImageController.php @@ -85,7 +85,19 @@ class SliderImageController extends Controller if ($model->load(Yii::$app->request->post())) { $model->slider_id = $slider_id; - $model->save(); + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { + $model->image = $image->name; + } + if ($model->save() && $image) { + + $imgDir = Yii::getAlias('@storage/slider/'); + + if(!is_dir($imgDir)) { + mkdir($imgDir, 0755, true); + } + + $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); + } return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); } else { @@ -114,7 +126,23 @@ class SliderImageController extends Controller - $model->save(); + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { + $model->image = $image->name; + } + + if(!$model->image){ + $model->image = $model->getOldAttribute('image'); + } + + if ($model->save() && $image) { + $imgDir = Yii::getAlias('@storage/slider/'); + + if(!is_dir($imgDir)) { + mkdir($imgDir, 0755, true); + } + + $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name)); + } return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]); } else { diff --git a/backend/views/event/_form.php b/backend/views/event/_form.php index 228ef35..6891637 100755 --- a/backend/views/event/_form.php +++ b/backend/views/event/_form.php @@ -17,6 +17,8 @@ use mihaildev\elfinder\ElFinder; 'options' => ['enctype' => 'multipart/form-data'] ]); ?> + field($model, 'event_id')->textInput(['maxlength' => true, 'disabled'=>true]) ?> + field($model, 'name')->textInput(['maxlength' => true]) ?> field($model, 'alias')->textInput(['maxlength' => true]) ?> @@ -35,8 +37,8 @@ use mihaildev\elfinder\ElFinder; field($model, 'end_at') ->widget(DatePicker::className(), [ 'pluginOptions' => [ - 'format' => 'dd-M-yyyy', - 'todayHighlight' => true + 'todayHighlight' => true, + 'format' => 'yyyy-mm-dd', ]]) ?> @@ -56,6 +58,28 @@ use mihaildev\elfinder\ElFinder; ], ]); ?> + + field($model, 'banner')->widget(\kartik\file\FileInput::classname(), [ + 'language' => 'ru', + 'options' => [ + 'accept' => 'image/*', + 'multiple' => false, + ], + 'pluginOptions' => [ + 'allowedFileExtensions' => ['jpg', 'gif', 'png'], + 'initialPreview' => !empty($model->bannerUrl) ? \common\components\artboximage\ArtboxImageHelper::getImage($model->bannerUrl, 'list') : '', + 'overwriteInitial' => true, + 'showRemove' => false, + 'showUpload' => false, + 'previewFileType' => 'image', + ], + ]); ?> + + field($model, 'products_file')->widget(\kartik\file\FileInput::classname(), [ + 'language' => 'ru' + ]); ?> + + field($model, 'meta_title')->textInput(['maxlength' => true]) ?> field($model, 'description')->textInput(['maxlength' => true]) ?> @@ -64,6 +88,8 @@ use mihaildev\elfinder\ElFinder; field($model, 'seo_text')->textarea(['rows' => 6]) ?> + field($model, 'status')->checkbox() ?> +
diff --git a/backend/views/slider-image/_form.php b/backend/views/slider-image/_form.php index 01f72be..46b9940 100755 --- a/backend/views/slider-image/_form.php +++ b/backend/views/slider-image/_form.php @@ -5,7 +5,7 @@ use common\modules\file\widgets\ImageUploader; use kartik\select2\Select2; use yii\helpers\Html; use yii\widgets\ActiveForm; - +use kartik\date\DatePicker; /* @var $this yii\web\View */ /* @var $slider Slider*/ /* @var $model common\models\SliderImage */ @@ -16,7 +16,6 @@ use yii\widgets\ActiveForm; ['enctype' => 'multipart/form-data']]); ?> - field($model, 'image')->widget(\kartik\file\FileInput::classname(), [ 'model' => $model, 'attribute' => 'image', @@ -38,17 +37,16 @@ use yii\widgets\ActiveForm; field($model, 'title')->textInput(['maxlength' => true]) ?> + field($model, 'end_at') + ->widget(DatePicker::className(), [ + 'pluginOptions' => [ + 'todayHighlight' => true, + 'format' => 'yyyy-mm-dd', + ]]) ?> + field($model, 'url')->textInput(['maxlength' => true]) ?> - field($model, 'status')->widget(Select2::className(),([ - 'name' => 'status', - 'hideSearch' => true, - 'data' => [1 => 'Active', 2 => 'Inactive'], - 'options' => ['placeholder' => 'Select status...'], - 'pluginOptions' => [ - 'allowClear' => true - ] - ])) ?> + field($model, 'status')->checkbox() ?> field($model, 'sort')->textInput() ?> diff --git a/common/config/main.php b/common/config/main.php index 8e1a87e..a00ee66 100755 --- a/common/config/main.php +++ b/common/config/main.php @@ -116,6 +116,22 @@ return [ 'master' => null ], ], + 'event_in_product' => + [ + 'resize' => [ + 'width' => 730, + 'height' => 100, + 'master' => null + ], + ], + 'event_left' => + [ + 'resize' => [ + 'width' => 960, + 'height' => 400, + 'master' => null + ], + ], 'brand_item' => [ 'resize' => [ 'width' => 125, diff --git a/common/models/Event.php b/common/models/Event.php index 7f34b95..922247c 100755 --- a/common/models/Event.php +++ b/common/models/Event.php @@ -1,7 +1,8 @@ SaveImgBehavior::className(), + 'directory' => 'event' + ], TimestampBehavior::className(), 'slug' => [ 'class' => 'common\behaviors\Slug', @@ -55,7 +66,8 @@ class Event extends \yii\db\ActiveRecord public function beforeSave($insert) { if (parent::beforeSave($insert)) { - $this->end_at = strtotime($this->end_at); + + $this->end_at = !empty($this->end_at) ? strtotime($this->end_at) : ''; return true; } else { return false; @@ -63,7 +75,7 @@ class Event extends \yii\db\ActiveRecord } public function afterFind(){ - $this->end_at = date("Y-m-d", $this->end_at); + $this->end_at = !empty($this->end_at) ? date("Y-m-d", $this->end_at) : ''; } @@ -75,10 +87,11 @@ class Event extends \yii\db\ActiveRecord return [ [['body', 'seo_text'], 'string'], [['created_at', 'updated_at' ], 'integer'], - [['name', 'alias', 'image', 'meta_title', 'description', 'h1','end_at'], 'string', 'max' => 255], + [['name', 'alias', 'image', 'meta_title', 'description', 'h1','end_at','banner'], 'string', 'max' => 255], [['name','body'], 'required'], [['imageUpload'], 'safe'], [['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'], + [['products_file'], 'file'], ]; } @@ -88,7 +101,7 @@ class Event extends \yii\db\ActiveRecord public function attributeLabels() { return [ - 'event_id' => Yii::t('app', 'event_id'), + 'event_id' => Yii::t('app', 'ID акции'), 'name' => Yii::t('app', 'name'), 'alias' => Yii::t('app', 'alias'), 'body' => Yii::t('app', 'body'), @@ -100,16 +113,35 @@ class Event extends \yii\db\ActiveRecord 'created_at' => Yii::t('app', 'created_at'), 'updated_at' => Yii::t('app', 'updated_at'), 'end_at' => Yii::t('app', 'end_at'), + 'status' => Yii::t('app', 'Статус акции'), + 'products_file' => Yii::t('app', 'Загрузка файла'), ]; } - public function getImageFile() { - return empty($this->image) ? null : Yii::getAlias('@imagesDir/articles/'. $this->image); + public function isActive(){ + if($this->status){ + + if(!empty($this->end_at) && (strtotime($this->end_at) <= strtotime(date("Y-m-d")))){ + return false; + } + return true; + } + return false; + } + + + public function getBannerFile() { + return empty($this->image) ? null : Yii::getAlias('@imagesDir/event/'. $this->banner); + } + + + public function getProducts(){ + return $this->hasMany(Product::className(),['product_id' => 'product_id'] )->viaTable('events_to_products', ['event_id' => 'event_id']); } - public function getImageUrl() + public function getBannerUrl() { - return empty($this->image) ? null : Yii::getAlias('@imagesUrl/articles/' . $this->image); + return empty($this->image) ? null : Yii::getAlias('@imagesUrl/event/' . $this->banner); } } diff --git a/common/models/SliderImage.php b/common/models/SliderImage.php index e54c941..7720fe5 100755 --- a/common/models/SliderImage.php +++ b/common/models/SliderImage.php @@ -16,12 +16,19 @@ use Yii; * @property string $url * @property integer $status * @property integer $sort + * @property integer $end_at * * @property Slider $slider */ class SliderImage extends \yii\db\ActiveRecord { - + /** + * @inheritdoc + */ + public static function tableName() + { + return 'slider_image'; + } /** @@ -36,16 +43,6 @@ class SliderImage extends \yii\db\ActiveRecord ] ]; } - - - /** - * @inheritdoc - */ - public static function tableName() - { - return 'slider_image'; - } - /** * @inheritdoc */ @@ -53,11 +50,26 @@ class SliderImage extends \yii\db\ActiveRecord { return [ [['slider_id', 'status', 'sort'], 'integer'], - [['image', 'alt', 'title', 'url'], 'string', 'max' => 255], + [['image', 'alt', 'title', 'url','end_at'], 'string', 'max' => 255], [['slider_id'], 'exist', 'skipOnError' => true, 'targetClass' => Slider::className(), 'targetAttribute' => ['slider_id' => 'slider_id']], ]; } + + public function beforeSave($insert) + { + if (parent::beforeSave($insert)) { + + $this->end_at = !empty($this->end_at) ? strtotime($this->end_at) : ''; + return true; + } else { + return false; + } + } + + public function afterFind(){ + $this->end_at = !empty($this->end_at) ? date("Y-m-d", $this->end_at) : ''; + } /** * @inheritdoc */ @@ -74,8 +86,16 @@ class SliderImage extends \yii\db\ActiveRecord 'sort' => Yii::t('app', 'sort'), ]; } - - + public function isActive(){ + if($this->status){ + + if(!empty($this->end_at) && (strtotime($this->end_at) <= strtotime(date("Y-m-d")))){ + return false; + } + return true; + } + return false; + } /** * @return \yii\db\ActiveQuery @@ -86,5 +106,4 @@ class SliderImage extends \yii\db\ActiveRecord } - } diff --git a/common/modules/product/models/Import.php b/common/modules/product/models/Import.php index 2df4d3c..d7fea3d 100755 --- a/common/modules/product/models/Import.php +++ b/common/modules/product/models/Import.php @@ -2,6 +2,7 @@ namespace common\modules\product\models; +use common\models\EventsToProducts; use common\modules\product\helpers\ProductHelper; use common\modules\product\models\Category; use common\modules\product\models\CategoryName; @@ -265,7 +266,7 @@ class Import extends Model { // 5 Описание Рус $product_body_ru = $data[4]; - // 6 Фильтр + // 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:нет] $filters = explode ('*', $data[5]); // 11 Цена акция @@ -312,7 +313,7 @@ class Import extends Model { foreach($catalog_names as $catalog_name){ // ==== Set category ==== - if ( ($category = Category::find()->filterWhere(['ilike', 'name', trim($catalog_name)])->one()) === null ) { + if ( ($category = CategoryName::find()->filterWhere(['ilike', 'value', trim($catalog_name)])->one()) === null ) { // Create category $category = new Category(); $category->name = trim($catalog_name); @@ -327,7 +328,7 @@ class Import extends Model { // ===== Set brand ==== if ( $brand_name ) { - if ( ($brand = Brand::find()->filterWhere(['ilike', 'name', trim($brand_name)])->one()) !== null ) { + if ( ($brand = BrandName::find()->filterWhere(['ilike', 'value', trim($brand_name)])->one()) !== null ) { $_product->brand_id = $brand->brand_id; } else { // Create brand @@ -432,7 +433,6 @@ class Import extends Model { $MOD_ARRAY[] = $_productVariant->product_variant_id; if ($mod_image) { - $source_image = Yii::getAlias('@uploadDir') . '/product_images/'. urlencode($mod_image); if (file_exists($source_image)) { 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 { return $result; } + + public function goEvent($file) { + + set_time_limit(0); + + + $handle = fopen($file, 'r'); + + + while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { + if(isset($data[0]) && isset($data[1])){ + $product = ProductVariant::find()->where(['sku' => $data[1]])->joinWith('product')->one(); + if($product instanceof ProductVariant){ + $model= EventsToProducts::find()->where(['event_id' =>$data[0], 'product_id' => $product->product->product_id ])->one(); + if(!$model instanceof EventsToProducts){ + $model = new EventsToProducts; + $model->event_id = $data[0]; + $model->product_id = $product->product->product_id; + $model->save(); + } + } + } + + } + fclose($handle); + unlink($file); + + } + private function getProductsFile($file_type) { $filename = Yii::getAlias('@uploadDir') .'/'. Yii::getAlias('@'. $file_type); if (!is_file($filename)) { @@ -528,7 +557,7 @@ class Import extends Model { $taxGroup->name = $filter_name; $taxGroup->module = 'string'; $taxGroup->hierarchical = FALSE; - $taxGroup->categories = $catalog_names; + $taxGroup->group_to_category = $catalog_names; $taxGroup->is_filter = FALSE; $taxGroup->save(); } diff --git a/common/modules/product/models/Product.php b/common/modules/product/models/Product.php index 5326577..65d3ea6 100755 --- a/common/modules/product/models/Product.php +++ b/common/modules/product/models/Product.php @@ -13,7 +13,7 @@ use Yii; use yii\db\ActiveQuery; use yii\db\ActiveRecord; use yii\helpers\ArrayHelper; - +use common\models\Event; /** * This is the model class for table "{{%product}}". * @@ -67,6 +67,9 @@ class Product extends \yii\db\ActiveRecord { return '{{%product}}'; } + public function getEvents(){ + return $this->hasMany(Event::className(), ['event_id' => 'event_id'])->viaTable('events_to_products', ['product_id' => 'product_id']); + } /** * @inheritdoc diff --git a/frontend/assets/FlipclockAsset.php b/frontend/assets/FlipclockAsset.php new file mode 100755 index 0000000..5a26f26 --- /dev/null +++ b/frontend/assets/FlipclockAsset.php @@ -0,0 +1,28 @@ + + * @since 2.0 + */ +class FlipclockAsset extends AssetBundle +{ + public $sourcePath = '@bower'; + public $css = [ + 'flipclock/compiled/flipclock.css' + ]; + public $js = [ + 'flipclock/compiled/flipclock.min.js' + ]; + public $jsOptions = array( + 'position' => \yii\web\View::POS_END + ); +} diff --git a/frontend/controllers/EventController.php b/frontend/controllers/EventController.php new file mode 100755 index 0000000..8880598 --- /dev/null +++ b/frontend/controllers/EventController.php @@ -0,0 +1,53 @@ + Event::find() ]); + + return $this->render('index', [ + 'dataProvider' => $dataProvider, + ]); + } + + + + public function actionShow($alias) + { + + $model = $this->findModel($alias); + $productProvider = new ActiveDataProvider([ + 'query' => $model->getProducts(), + ]); + return $this->render('show', [ + 'productProvider' => $productProvider, + 'model' => $model, + ]); + } + + + protected function findModel($alias) + { + if (($model = Event::findOne(["alias"=>$alias])) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } + + +} \ No newline at end of file diff --git a/frontend/views/catalog/product.php b/frontend/views/catalog/product.php index e5da6ad..3c89425 100755 --- a/frontend/views/catalog/product.php +++ b/frontend/views/catalog/product.php @@ -8,8 +8,10 @@ use yii\bootstrap\ActiveForm; use yii\bootstrap\Html; use yii\widgets\MaskedInput; - - //FotoramaAsset::register($this); +use frontend\assets\FlipclockAsset; + FotoramaAsset::register($this); +FlipclockAsset::register($this); + $this->params[ 'seo' ][ 'key' ] = $category->name; $this->params[ 'seo' ][ 'fields' ][ 'name' ] = $product->fullname; $this->params[ 'seo' ][ 'h1' ] = !empty( Seo::widget([ 'row' => 'h1' ]) ) ? Seo::widget([ 'row' => 'h1' ]) : $product->fullname; @@ -208,7 +210,47 @@ - + + events as $event):?> + end_at) && $event->isActive()):?> +
+ +
name,Url::to(['event/show','alias'=>$event->alias,'id'=>$event->primaryKey]))?>
+
До конца осталось:
+
+ + +
+ + + +
@@ -344,10 +386,16 @@
- Мы рекомендуем выбрать люстра Элстед по самой лучшей цене среди интернет каталогов светильников и других осветительных систем в Киеве и Украине +
+ events as $event):?> + banner) && $event->isActive()):?> + bannerUrl, 'event_in_product'),Url::to(['event/show','alias'=>$event->alias,'id'=>$event->primaryKey]))?> + + +

- Характеристики люстра Elstead FE/LEILA6 + Характеристики name ?>

@@ -398,125 +446,125 @@
-
-
-

- Коллекция светильников -

- -
-
-
-
- - -
-
- Цена: - 25794.00 грн - -
-
-
-
-
-
-
-
-
-
-
- - -
-
- Цена: - 14330.40 грн - -
-
-
-
-
-
-
-
-
-
-
- - -
-
- Цена: - 8598.00 грн - -
-
-
-
-
-
-
-
-
-
- -
+ + + +--> + + + + + + + + + + + + + + +variant->product_variant_id; ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +variant->product_variant_id; ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +variant->product_variant_id; ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + +

diff --git a/frontend/views/event/_objects.php b/frontend/views/event/_objects.php new file mode 100755 index 0000000..c02e301 --- /dev/null +++ b/frontend/views/event/_objects.php @@ -0,0 +1,66 @@ + +
+ + + name?> + + +
+ + imageUrl, 'event_left', ['align' => 'left'])?> + + + + end_at) && strtotime($model->end_at) > strtotime(date("Y-m-d"))){ + ?> +
+ + + + +
+
+ + + + + +
\ No newline at end of file diff --git a/frontend/views/event/index.php b/frontend/views/event/index.php new file mode 100755 index 0000000..d82c111 --- /dev/null +++ b/frontend/views/event/index.php @@ -0,0 +1,36 @@ + +title = 'Акции'; +$this->registerMetaTag(['name' => 'description', 'content' => 'Акции']); +$this->registerMetaTag(['name' => 'keywords', 'content' => 'Акции']); +?> + + +
+
+

Акции

+ models as $model){ + + if($model->isActive()){ + echo $this->render('_objects',['model' => $model]); + } + + } + ?> + +
+ + +
+ +
\ No newline at end of file diff --git a/frontend/views/event/show.php b/frontend/views/event/show.php new file mode 100755 index 0000000..e846060 --- /dev/null +++ b/frontend/views/event/show.php @@ -0,0 +1,77 @@ + +title = $model->name; + +?> + + +
+
+

name?>

+
+ image){?> + imageUrl, 'event_left', ['align' => 'left'])?> + + + end_at) && strtotime($model->end_at) > strtotime(date("Y-m-d"))){ + ?> +
+ + + + +
+ + body?> +
+ + +
+
+
    + models as $product) :?> + enabledVariants) ):?> + render('../catalog/product_item', ['product' => $product])?> + + +
+
+
+ +
\ No newline at end of file diff --git a/frontend/web/css/css_header.css b/frontend/web/css/css_header.css index d1da880..4cc431a 100755 --- a/frontend/web/css/css_header.css +++ b/frontend/web/css/css_header.css @@ -14391,3 +14391,133 @@ h1.title { } } +.flip-clock-wrapper ul{ + width: 40px; + height: 60px; +} + +.flip-clock-wrapper ul li{ + line-height: 60px; +} + +.flip-clock-wrapper ul li a div div.inn{ + font-size: 50px; +} + +.flip-clock-dot.top{ + top: 40px; +} +.flip-clock-dot.bottom{ + bottom: 40px; +} +.flip-clock-divider { + height: 70px; +} + +.events{ + margin-top: 20px; + margin-bottom: 20px; + +} +.events img{ + display: block; + margin: 0 auto; +} + +.news_item{ + position: relative; +} +.clock_style{ + position: absolute; + top:10px; + left: 10px; +} +.clock_style .flip-clock-label{ + right: -65px !important; +} +.event_block{ + position: relative; + width: 260px; + overflow: hidden; + border: 2px solid #799920; + padding: 5px; +} + +.event_block .flip-clock-wrapper{ + margin-top: 15px; + margin-left: 0px; +} +.event_block .flip-clock-wrapper ul{ + width: 27px; + height: 46px; + padding: 0; + margin: 1px; +} + +.event_block .event_title a{ + color: #799920; + font-size: 20px; + margin-bottom: 5px; +} +.event_block .flip-clock-label{ + right: -45px !important; +} + +.event_block .flip-clock-wrapper ul li a div div.inn{ + font-size: 40px; +} + + +.event_block .flip-clock-dot { + left: 2px; +} +.event_block .flip-clock-divider.hours, +.event_block .flip-clock-divider.minutes, +.event_block .flip-clock-divider.seconds{ + width: 9px; +} + +.event_block .flip-clock-dot{ + width: 6px; + height: 6px; +} + +.event_block .flip-clock-dot.top{ + top: 30px; +} +.event_block .flip-clock-dot.bottom{ + bottom: 50px; +} + +.event_block .flip-clock-wrapper ul li{ + line-height: 50px; +} +#HOME_SLIDER .flip-clock-wrapper{ + z-index: 1000; +} + +ul.product-special li.promo div{ + color: #fff; +} + +.news_item{ + display: block; + height: 270px; +} +.news_item{ + margin-bottom: 20px +} + +.news_item { + padding-bottom: 20px; + border-bottom: 1px solid silver +} + + +.news_item a { + font-size: 16px +} +.event_block_img{ + position: relative; + overflow: hidden; +} diff --git a/frontend/web/js/artbox_basket.js b/frontend/web/js/artbox_basket.js index 83df4af..2e463aa 100755 --- a/frontend/web/js/artbox_basket.js +++ b/frontend/web/js/artbox_basket.js @@ -65,5 +65,5 @@ var ArtboxBasket = (function () { configurable: true }); return ArtboxBasket; -}()); +})(); //# sourceMappingURL=artbox_basket.js.map \ No newline at end of file diff --git a/frontend/web/js/artbox_basket.js.map b/frontend/web/js/artbox_basket.js.map index ac4a41e..894ec91 100755 --- a/frontend/web/js/artbox_basket.js.map +++ b/frontend/web/js/artbox_basket.js.map @@ -1 +1 @@ -{"version":3,"file":"artbox_basket.js","sourceRoot":"","sources":["artbox_basket.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"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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"} \ No newline at end of file -- libgit2 0.21.4