Commit fed9ec18574e8b21df6deb23d6f074f837121c84

Authored by Administrator
1 parent c6435b1f

image size

@@ -81,21 +81,21 @@ AddDefaultCharset utf-8 @@ -81,21 +81,21 @@ AddDefaultCharset utf-8
81 81
82 82
83 # кеширование в браузере на стороне пользователя 83 # кеширование в браузере на стороне пользователя
84 -<IfModule mod_expires.c>  
85 -ExpiresActive On  
86 -ExpiresDefault "access 7 days"  
87 -ExpiresByType application/javascript "access plus 1 year"  
88 -ExpiresByType text/javascript "access plus 1 year"  
89 -ExpiresByType text/css "access plus 1 year"  
90 -ExpiresByType text/html "access plus 7 day"  
91 -ExpiresByType text/x-javascript "access 1 year"  
92 -ExpiresByType image/gif "access plus 1 year"  
93 -ExpiresByType image/jpeg "access plus 1 year"  
94 -ExpiresByType image/png "access plus 1 year"  
95 -ExpiresByType image/jpg "access plus 1 year"  
96 -ExpiresByType image/x-icon "access 1 year"  
97 -ExpiresByType application/x-shockwave-flash "access 1 year"  
98 -</IfModule> 84 +#<IfModule mod_expires.c>
  85 +#ExpiresActive On
  86 +#ExpiresDefault "access 7 days"
  87 +#ExpiresByType application/javascript "access plus 1 year"
  88 +#ExpiresByType text/javascript "access plus 1 year"
  89 +#ExpiresByType text/css "access plus 1 year"
  90 +#ExpiresByType text/html "access plus 7 day"
  91 +#ExpiresByType text/x-javascript "access 1 year"
  92 +#ExpiresByType image/gif "access plus 1 year"
  93 +#ExpiresByType image/jpeg "access plus 1 year"
  94 +#ExpiresByType image/png "access plus 1 year"
  95 +#ExpiresByType image/jpg "access plus 1 year"
  96 +#ExpiresByType image/x-icon "access 1 year"
  97 +#ExpiresByType application/x-shockwave-flash "access 1 year"
  98 +#</IfModule>
99 99
100 <IfModule mod_deflate.c> 100 <IfModule mod_deflate.c>
101 AddOutputFilterByType DEFLATE text/plain 101 AddOutputFilterByType DEFLATE text/plain
@@ -117,25 +117,25 @@ RewriteCond %{HTTP:Accept-encoding} gzip @@ -117,25 +117,25 @@ RewriteCond %{HTTP:Accept-encoding} gzip
117 RewriteCond %{REQUEST_FILENAME}.gz -f 117 RewriteCond %{REQUEST_FILENAME}.gz -f
118 RewriteRule ^(.*)$ $1.gz [QSA,L] 118 RewriteRule ^(.*)$ $1.gz [QSA,L]
119 </IfModule> 119 </IfModule>
120 -# Cache-Control  
121 -<ifModule mod_headers.c>  
122 -# 30 дней  
123 -<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">  
124 -Header set Cache-Control "max-age=2592000, public"  
125 -</filesMatch>  
126 -# 30 дней  
127 -<filesMatch "\.(css|js)$">  
128 -Header set Cache-Control "max-age=2592000, public"  
129 -</filesMatch>  
130 -# 2 дня  
131 -<filesMatch "\.(xml|txt)$">  
132 -Header set Cache-Control "max-age=172800, public, must-revalidate"  
133 -</filesMatch>  
134 -# 1 день  
135 -<filesMatch "\.(html|htm|php)$">  
136 -Header set Cache-Control "max-age=172800, private, must-revalidate"  
137 -</filesMatch>  
138 -</ifModule> 120 +## Cache-Control
  121 +#<ifModule mod_headers.c>
  122 +## 30 дней
  123 +#<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
  124 +#Header set Cache-Control "max-age=2592000, public"
  125 +#</filesMatch>
  126 +## 30 дней
  127 +#<filesMatch "\.(css|js)$">
  128 +#Header set Cache-Control "max-age=2592000, public"
  129 +#</filesMatch>
  130 +## 2 дня
  131 +#<filesMatch "\.(xml|txt)$">
  132 +#Header set Cache-Control "max-age=172800, public, must-revalidate"
  133 +#</filesMatch>
  134 +## 1 день
  135 +#<filesMatch "\.(html|htm|php)$">
  136 +#Header set Cache-Control "max-age=172800, private, must-revalidate"
  137 +#</filesMatch>
  138 +#</ifModule>
139 139
140 #Запрет отдачи HTTP-заголовков Vary браузерам семейства MSIE 140 #Запрет отдачи HTTP-заголовков Vary браузерам семейства MSIE
141 <IfModule mod_setenvif.c> 141 <IfModule mod_setenvif.c>
backend/config/main.php
1 <?php 1 <?php
2 -use developeruz\db_rbac\behaviors\AccessBehavior; 2 +use common\behaviors\ArtBoxAccessBehavior;
3 $params = array_merge( 3 $params = array_merge(
4 require(__DIR__ . '/../../common/config/params.php'), 4 require(__DIR__ . '/../../common/config/params.php'),
5 require(__DIR__ . '/../../common/config/params-local.php'), 5 require(__DIR__ . '/../../common/config/params-local.php'),
@@ -40,7 +40,7 @@ return [ @@ -40,7 +40,7 @@ return [
40 'controllerNamespace' => 'backend\controllers', 40 'controllerNamespace' => 'backend\controllers',
41 'bootstrap' => ['log'], 41 'bootstrap' => ['log'],
42 'as AccessBehavior' => [ 42 'as AccessBehavior' => [
43 - 'class' => AccessBehavior::className(), 43 + 'class' => ArtBoxAccessBehavior::className(),
44 'rules' => 44 'rules' =>
45 [ 45 [
46 'permit/access' => 46 'permit/access' =>
common/behaviors/ArtBoxAccessBehavior.php 0 → 100755
  1 +<?php
  2 +
  3 +namespace common\behaviors;
  4 +
  5 +use Yii;
  6 +use yii\behaviors\AttributeBehavior;
  7 +use yii\di\Instance;
  8 +use yii\base\Module;
  9 +use yii\web\User;
  10 +use yii\web\ForbiddenHttpException;
  11 +
  12 +class ArtBoxAccessBehavior extends AttributeBehavior {
  13 +
  14 + public $rules=[];
  15 +
  16 + private $_rules = [];
  17 +
  18 + public function events()
  19 + {
  20 + return [
  21 + Module::EVENT_BEFORE_ACTION => 'interception',
  22 + ];
  23 + }
  24 +
  25 + public function interception($event)
  26 + {
  27 + if(!isset( Yii::$app->i18n->translations['db_rbac'])){
  28 + Yii::$app->i18n->translations['db_rbac'] = [
  29 + 'class' => 'yii\i18n\PhpMessageSource',
  30 + 'sourceLanguage' => 'ru-Ru',
  31 + 'basePath' => '@developeruz/db_rbac/messages',
  32 + ];
  33 + }
  34 +
  35 + $route = Yii::$app->getRequest()->resolve();
  36 +
  37 + //Проверяем права по конфигу
  38 + $this->createRule();
  39 + $user = Instance::ensure(Yii::$app->user, User::className());
  40 + $request = Yii::$app->getRequest();
  41 + $action = $event->action;
  42 +
  43 +
  44 +
  45 +
  46 + if(!$this->cheсkByRule($action, $user, $request))
  47 + {
  48 +
  49 + //И по AuthManager
  50 + if(!$this->checkPermission($route)){
  51 + if ($user->getIsGuest()) {
  52 + $user->loginRequired();
  53 + } else {
  54 + throw new ForbiddenHttpException(Yii::t('db_rbac','Недостаточно прав'));
  55 + }
  56 + }
  57 +
  58 + }
  59 + }
  60 +
  61 + protected function createRule()
  62 + {
  63 +
  64 + foreach($this->rules as $controller => $rule)
  65 + {
  66 +
  67 + foreach ($rule as $singleRule) {
  68 + if (is_array($singleRule)) {
  69 + $option = [
  70 + 'controllers' => [$controller],
  71 + 'class' => 'yii\filters\AccessRule'
  72 + ];
  73 + $this->_rules[] = Yii::createObject(array_merge($option, $singleRule));
  74 +
  75 + }
  76 + }
  77 + }
  78 + }
  79 +
  80 + protected function cheсkByRule($action, $user, $request)
  81 + {
  82 +
  83 + foreach ($this->_rules as $rule) {
  84 +
  85 + if ($rule->allows($action, $user, $request))
  86 + return true;
  87 + }
  88 + return false;
  89 + }
  90 +
  91 + protected function checkPermission($route)
  92 + {
  93 + //$route[0] - is the route, $route[1] - is the associated parameters
  94 +
  95 + $routePathTmp = explode('/', $route[0]);
  96 + $routeVariant = array_shift($routePathTmp);
  97 + if(Yii::$app->user->can($routeVariant, $route[1]))
  98 + return true;
  99 +
  100 + foreach($routePathTmp as $routePart)
  101 + {
  102 + $routeVariant .= '/'.$routePart;
  103 +
  104 + if(Yii::$app->user->can($routeVariant, $route[1]))
  105 + return true;
  106 + }
  107 +
  108 + return false;
  109 + }
  110 +
  111 +}
0 \ No newline at end of file 112 \ No newline at end of file
common/components/Mailer.php deleted
1 -<?php  
2 -  
3 -namespace common\components;  
4 -use PHPMailer\PHPMailer\PHPMailer;  
5 -use yii\base\Widget;  
6 -  
7 -class Mailer extends Widget{  
8 - public $message;  
9 - public $email;  
10 - public $text;  
11 - public $subject;  
12 - public $type;  
13 -  
14 - public function init(){  
15 -  
16 - parent::init();  
17 -  
18 - }  
19 -  
20 - public function run(){  
21 -  
22 - $mail = new PHPMailer();  
23 -  
24 - $mail->IsSMTP();  
25 -  
26 - $mail->CharSet = 'UTF-8';  
27 - $mail->Username = "dockdep@gmail.com";  
28 - $mail->Password = "k0l0b04eg";  
29 - $mail->SetFrom('dockdep@gmail.com');  
30 - $mail->Subject = $this->subject;  
31 - $mail->MsgHTML('test');  
32 - $address = "dockdep@gmail.com";  
33 - $mail->AddAddress($address);  
34 - $mail->AddAddress($this->email);  
35 - if(!$mail->send()) {  
36 -  
37 - \Yii::$app->getSession()->setFlash('error', 'Mailer Error: ' . $mail->ErrorInfo);  
38 - return 'Mailer Error: ' . $mail->ErrorInfo;  
39 - } else {  
40 -  
41 - \Yii::$app->getSession()->setFlash('success', 'Мастер-приемщик свяжется с вами в ближайшее время');  
42 - return 'Message has been sent';  
43 - }  
44 - }  
45 -  
46 -}  
47 -  
common/widgets/Mailer.php 0 → 100755
  1 +<?php
  2 +
  3 +namespace common\widgets;
  4 +
  5 +use yii\base\Widget;
  6 +
  7 +class Mailer extends Widget{
  8 + public $message;
  9 + public $email;
  10 + public $text;
  11 + public $subject;
  12 + public $type;
  13 +
  14 + public function init(){
  15 +
  16 + parent::init();
  17 +
  18 + }
  19 +
  20 + public function run(){
  21 +
  22 +// $mail = new \PHPMailer();
  23 +//
  24 +// $mail->IsSMTP();
  25 +//
  26 +// $mail->CharSet = 'UTF-8';
  27 +// $mail->Username = "dockdep@gmail.com";
  28 +// $mail->Password = "k0l0b04eg@";
  29 +// $mail->SetFrom('dockdep@gmail.com');
  30 +// $mail->Subject = $this->subject;
  31 +// $mail->MsgHTML('test');
  32 +// $address = "dockdep@gmail.com";
  33 +// $mail->AddAddress($address);
  34 +// $mail->AddAddress($this->email);
  35 +// if(!$mail->send()) {
  36 +//
  37 +// \Yii::$app->getSession()->setFlash('error', 'Mailer Error: ' . $mail->ErrorInfo);
  38 +// return 'Mailer Error: ' . $mail->ErrorInfo;
  39 +// } else {
  40 +//
  41 +// \Yii::$app->getSession()->setFlash('success', 'Мастер-приемщик свяжется с вами в ближайшее время');
  42 +// return 'Message has been sent';
  43 +// }
  44 + }
  45 +
  46 +}
  47 +
@@ -35,7 +35,6 @@ @@ -35,7 +35,6 @@
35 "unclead/yii2-multiple-input": "~1.0", 35 "unclead/yii2-multiple-input": "~1.0",
36 "codeception/codeception":"*", 36 "codeception/codeception":"*",
37 "phpmailer/phpmailer": "^5.2", 37 "phpmailer/phpmailer": "^5.2",
38 - "league/oauth2-client": "^1.3",  
39 "kartik-v/yii2-grid": "@dev", 38 "kartik-v/yii2-grid": "@dev",
40 "kartik-v/yii2-mpdf": "@dev", 39 "kartik-v/yii2-mpdf": "@dev",
41 "kartik-v/yii2-widget-fileinput": "@dev", 40 "kartik-v/yii2-widget-fileinput": "@dev",
frontend/controllers/BasketController.php
@@ -40,29 +40,36 @@ class BasketController extends Controller @@ -40,29 +40,36 @@ class BasketController extends Controller
40 $body .= "\n\r"; 40 $body .= "\n\r";
41 41
42 if ($modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) { 42 if ($modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) {
  43 + $productV = $_POST['ProductVariant'];
  44 +
43 foreach ($_POST['ProductVariant'] as $index=>$row) { 45 foreach ($_POST['ProductVariant'] as $index=>$row) {
44 - $modelOrdersProducts = new OrdersProducts(); 46 + $modelOrdersProducts = new OrdersProducts();
45 $mod_id = $row['id']; 47 $mod_id = $row['id'];
46 unset($row['id']); 48 unset($row['id']);
47 - $data['OrdersProducts'] = $row; 49 + $data['OrdersProducts'] = $row;
48 $data['OrdersProducts']['mod_id'] = $mod_id; 50 $data['OrdersProducts']['mod_id'] = $mod_id;
49 - $data['OrdersProducts']['order_id'] = $modelOrder->id; 51 + $data['OrdersProducts']['order_id'] = $modelOrder->id;
50 52
51 - $modelOrdersProducts->load($data);  
52 - $modelOrdersProducts->save(); 53 + $modelOrdersProducts->load($data);
  54 + $modelOrdersProducts->save();
53 } 55 }
54 if(!Yii::$app->user->id && !empty($modelOrder->email)){ 56 if(!Yii::$app->user->id && !empty($modelOrder->email)){
55 - $modelUser = new Customer();  
56 - $modelUser->role = 'person';  
57 - $modelUser->username = $modelOrder->email;  
58 - $modelUser->name = $modelOrder->name;  
59 - $modelUser->phone = $modelOrder->phone;  
60 - $modelUser->password = Yii::$app->getSecurity()->generateRandomString(10);  
61 - $modelUser->group_id = 2;  
62 - $modelUser->save(); 57 + $modelUser = new Customer();
  58 + $modelUser->role = 'person';
  59 + $modelUser->username = $modelOrder->email;
  60 + $modelUser->name = $modelOrder->name;
  61 + $modelUser->phone = $modelOrder->phone;
  62 + $modelUser->password = Yii::$app->getSecurity()->generateRandomString(10);
  63 + $modelUser->group_id = 2;
  64 + $modelUser->save();
63 } 65 }
  66 + $order = clone $modelOrder;
64 $modelOrder->clearBasket(); 67 $modelOrder->clearBasket();
65 - return Yii::$app->response->redirect(['basket/success']); 68 +
  69 + return $this->render('success',[
  70 + 'order' => $order,
  71 + 'variants' => $productV,
  72 + ]);
66 } 73 }
67 } 74 }
68 75
frontend/views/basket/success.php
1 <?php 1 <?php
2 use yii\helpers\Url; 2 use yii\helpers\Url;
3 use yii\helpers\Html; 3 use yii\helpers\Html;
  4 +use yii\web\View;
4 use yii\widgets\Breadcrumbs; 5 use yii\widgets\Breadcrumbs;
5 use yii\widgets\ActiveForm; 6 use yii\widgets\ActiveForm;
6 7
@@ -8,6 +9,29 @@ $this-&gt;title = &#39;Корзина&#39;; @@ -8,6 +9,29 @@ $this-&gt;title = &#39;Корзина&#39;;
8 $this->registerMetaTag(['name' => 'description', 'content' => 'Корзина']); 9 $this->registerMetaTag(['name' => 'description', 'content' => 'Корзина']);
9 $this->registerMetaTag(['name' => 'keywords', 'content' => 'Корзина']); 10 $this->registerMetaTag(['name' => 'keywords', 'content' => 'Корзина']);
10 11
  12 +if(isset($variants) && isset($order)){
  13 + $orderData = "
  14 + ga('require', 'ecommerce');
  15 + ga('ecommerce:addTransaction', {
  16 + 'id': $order->id, // где ID - транзакции, обязательно
  17 + });";
  18 +
  19 + foreach($variants as $index=>$row){
  20 + $orderData .= "
  21 + ga('ecommerce:addItem', {
  22 + 'id': {$row['id']}, // ID - транзакции, обязательно
  23 + 'name': {$row['name']}, // Имя товара
  24 + 'price': {$row['price']}, // Цена товара
  25 + 'quantity': {$row['count']} // Количество
  26 + });
  27 + ga('ecommerce:send');";
  28 + }
  29 +
  30 + $this->registerJs ($orderData, View::POS_HEAD);
  31 +
  32 +}
  33 +
  34 +
11 ?> 35 ?>
12 <nav class="bread-crumbs"> 36 <nav class="bread-crumbs">
13 <?= Breadcrumbs::widget([ 37 <?= Breadcrumbs::widget([
frontend/views/layouts/main.php
@@ -64,6 +64,16 @@ $this-&gt;registerJsFile (Yii::$app-&gt;request-&gt;baseUrl . &#39;/js/fix_height.js&#39;, [&#39;posi @@ -64,6 +64,16 @@ $this-&gt;registerJsFile (Yii::$app-&gt;request-&gt;baseUrl . &#39;/js/fix_height.js&#39;, [&#39;posi
64 }); 64 });
65 ", View::POS_READY); 65 ", View::POS_READY);
66 66
  67 +$this->registerJs("
  68 +(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  69 + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  70 +m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  71 +})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  72 +
  73 +ga('create', 'UA-75674711-1', 'auto');
  74 +ga('send', 'pageview');
  75 + ", View::POS_BEGIN);
  76 +
67 // AssetBundle jcarousel :D [close] 77 // AssetBundle jcarousel :D [close]
68 78
69 ?> 79 ?>
frontend/web/css/style.dev.css
1 html,form, 1 html,form,
2 -body { padding:0;margin:0;  
3 - font-family: 'Roboto';font-size:14px;color:#333;height:100%; 2 +body {
  3 + padding:0;
  4 + margin:0;
  5 + font-family: 'Roboto';
  6 + font-size:14px;color:#333;height:100%;
4 } 7 }
5 h1,h2,h3{margin:0px;padding:0px 0px 10px 0px;} 8 h1,h2,h3{margin:0px;padding:0px 0px 10px 0px;}
6 .fl{float:left;} 9 .fl{float:left;}