Commit fed9ec18574e8b21df6deb23d6f074f837121c84

Authored by Administrator
1 parent c6435b1f

image size

.htaccess
... ... @@ -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 100 <IfModule mod_deflate.c>
101 101 AddOutputFilterByType DEFLATE text/plain
... ... @@ -117,25 +117,25 @@ RewriteCond %{HTTP:Accept-encoding} gzip
117 117 RewriteCond %{REQUEST_FILENAME}.gz -f
118 118 RewriteRule ^(.*)$ $1.gz [QSA,L]
119 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 140 #Запрет отдачи HTTP-заголовков Vary браузерам семейства MSIE
141 141 <IfModule mod_setenvif.c>
... ...
backend/config/main.php
1 1 <?php
2   -use developeruz\db_rbac\behaviors\AccessBehavior;
  2 +use common\behaviors\ArtBoxAccessBehavior;
3 3 $params = array_merge(
4 4 require(__DIR__ . '/../../common/config/params.php'),
5 5 require(__DIR__ . '/../../common/config/params-local.php'),
... ... @@ -40,7 +40,7 @@ return [
40 40 'controllerNamespace' => 'backend\controllers',
41 41 'bootstrap' => ['log'],
42 42 'as AccessBehavior' => [
43   - 'class' => AccessBehavior::className(),
  43 + 'class' => ArtBoxAccessBehavior::className(),
44 44 'rules' =>
45 45 [
46 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 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 +
... ...
composer.json
... ... @@ -35,7 +35,6 @@
35 35 "unclead/yii2-multiple-input": "~1.0",
36 36 "codeception/codeception":"*",
37 37 "phpmailer/phpmailer": "^5.2",
38   - "league/oauth2-client": "^1.3",
39 38 "kartik-v/yii2-grid": "@dev",
40 39 "kartik-v/yii2-mpdf": "@dev",
41 40 "kartik-v/yii2-widget-fileinput": "@dev",
... ...
frontend/controllers/BasketController.php
... ... @@ -40,29 +40,36 @@ class BasketController extends Controller
40 40 $body .= "\n\r";
41 41  
42 42 if ($modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) {
  43 + $productV = $_POST['ProductVariant'];
  44 +
43 45 foreach ($_POST['ProductVariant'] as $index=>$row) {
44   - $modelOrdersProducts = new OrdersProducts();
  46 + $modelOrdersProducts = new OrdersProducts();
45 47 $mod_id = $row['id'];
46 48 unset($row['id']);
47   - $data['OrdersProducts'] = $row;
  49 + $data['OrdersProducts'] = $row;
48 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 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 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 1 <?php
2 2 use yii\helpers\Url;
3 3 use yii\helpers\Html;
  4 +use yii\web\View;
4 5 use yii\widgets\Breadcrumbs;
5 6 use yii\widgets\ActiveForm;
6 7  
... ... @@ -8,6 +9,29 @@ $this-&gt;title = &#39;Корзина&#39;;
8 9 $this->registerMetaTag(['name' => 'description', 'content' => 'Корзина']);
9 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 36 <nav class="bread-crumbs">
13 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 64 });
65 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 77 // AssetBundle jcarousel :D [close]
68 78  
69 79 ?>
... ...
frontend/web/css/style.dev.css
1 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 8 h1,h2,h3{margin:0px;padding:0px 0px 10px 0px;}
6 9 .fl{float:left;}
... ...