Commit bada6a893fe788b7c9e0c0797878d9dab7c195ed

Authored by Alexey Boroda
1 parent 595ab5a0

-Artbox landing patched

backend/config/main.php
@@ -17,11 +17,12 @@ @@ -17,11 +17,12 @@
17 'controllerNamespace' => 'backend\controllers', 17 'controllerNamespace' => 'backend\controllers',
18 'bootstrap' => [ 'log' ], 18 'bootstrap' => [ 'log' ],
19 'controllerMap' => [ 19 'controllerMap' => [
20 - 'profile' => 'artbox\core\controllers\ProfileController',  
21 - 'page' => 'artbox\core\controllers\PageController',  
22 - 'alias' => 'artbox\core\controllers\AliasController',  
23 - 'seo' => 'artbox\core\controllers\SeoController',  
24 - 'feedback' => 'artbox\core\controllers\FeedbackController', 20 + 'profile' => 'artbox\core\controllers\ProfileController',
  21 + 'page' => 'artbox\core\controllers\PageController',
  22 + 'page-category' => 'artbox\core\controllers\PageCategoryController',
  23 + 'alias' => 'artbox\core\controllers\AliasController',
  24 + 'seo' => 'artbox\core\controllers\SeoController',
  25 + 'feedback' => 'artbox\core\controllers\FeedbackController',
25 ], 26 ],
26 'components' => [ 27 'components' => [
27 'assetManager' => [ 28 'assetManager' => [
backend/controllers/SettingsController.php
1 <?php 1 <?php
2 namespace backend\controllers; 2 namespace backend\controllers;
3 3
  4 + use common\models\Mail;
4 use common\models\Settings; 5 use common\models\Settings;
5 use yii\base\InvalidConfigException; 6 use yii\base\InvalidConfigException;
6 use yii\filters\AccessControl; 7 use yii\filters\AccessControl;
@@ -47,17 +48,23 @@ @@ -47,17 +48,23 @@
47 public function actionIndex() 48 public function actionIndex()
48 { 49 {
49 $model = $this->findSettings(); 50 $model = $this->findSettings();
50 - 51 + $mail = Mail::findOne(1);
  52 +
  53 + if ($mail->load(\Yii::$app->request->post())) {
  54 + $mail->save();
  55 + }
  56 +
51 if ($model->load(Yii::$app->request->post()) && $model->save()) { 57 if ($model->load(Yii::$app->request->post()) && $model->save()) {
52 Yii::$app->session->setFlash('success', \Yii::t('core', 'Settings saved')); 58 Yii::$app->session->setFlash('success', \Yii::t('core', 'Settings saved'));
53 - 59 +
54 return $this->goHome(); 60 return $this->goHome();
55 } 61 }
56 - 62 +
57 return $this->render( 63 return $this->render(
58 'settings', 64 'settings',
59 [ 65 [
60 'model' => $model, 66 'model' => $model,
  67 + 'mail' => $mail,
61 ] 68 ]
62 ); 69 );
63 } 70 }
backend/views/layouts/main.php
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 use artbox\core\models\UserData; 10 use artbox\core\models\UserData;
11 use artbox\core\widgets\FeedbackWidget; 11 use artbox\core\widgets\FeedbackWidget;
12 use artbox\core\widgets\FlashWidget; 12 use artbox\core\widgets\FlashWidget;
13 - use noam148\imagemanager\components\ImageManagerGetPath; 13 + use artbox\core\components\imagemanager\components\ImageManagerGetPath;
14 use yii\bootstrap\Html; 14 use yii\bootstrap\Html;
15 use yii\web\View; 15 use yii\web\View;
16 use yii\widgets\Breadcrumbs; 16 use yii\widgets\Breadcrumbs;
backend/views/layouts/menu_items.php
@@ -31,11 +31,20 @@ @@ -31,11 +31,20 @@
31 ], 31 ],
32 [ 32 [
33 'label' => \Yii::t('core', 'Static pages'), 33 'label' => \Yii::t('core', 'Static pages'),
34 - 'url' => [ 'page/index' ], 34 + 'url' => '#',
35 'icon' => 'file-text', 35 'icon' => 'file-text',
36 - 'active' => function () {  
37 - return \Yii::$app->controller->id === 'page';  
38 - }, 36 + 'items' => [
  37 + [
  38 + 'label' => \Yii::t('core', 'Pages'),
  39 + 'url' => [ '/page/index' ],
  40 + 'icon' => 'file-text',
  41 + ],
  42 + [
  43 + 'label' => \Yii::t('core', 'Categories'),
  44 + 'url' => [ '/page-category/index' ],
  45 + 'icon' => 'archive',
  46 + ]
  47 + ],
39 ], 48 ],
40 [ 49 [
41 'label' => \Yii::t('core', 'SEO'), 50 'label' => \Yii::t('core', 'SEO'),
backend/views/settings/_mail_tab.php 0 → 100644
  1 +<?php
  2 +
  3 + use common\models\Mail;
  4 + use yii\bootstrap\ActiveForm;
  5 + use yii\web\View;
  6 +
  7 + /**
  8 + * @var View $this
  9 + * @var Mail $mail
  10 + * @var ActiveForm $form
  11 + */
  12 +
  13 + echo $form->field($mail, 'host')
  14 + ->textInput();
  15 +
  16 + echo $form->field($mail, 'user')
  17 + ->textInput();
  18 +
  19 + echo $form->field($mail, 'pass')
  20 + ->textInput();
0 \ No newline at end of file 21 \ No newline at end of file
backend/views/settings/_main_tab.php
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 ->textInput(); 12 ->textInput();
13 echo $form->field($model, 'logo') 13 echo $form->field($model, 'logo')
14 ->widget( 14 ->widget(
15 - \noam148\imagemanager\components\ImageManagerInputWidget::className(), 15 + \artbox\core\components\imagemanager\components\ImageManagerInputWidget::className(),
16 [ 16 [
17 'showPreview' => true, 17 'showPreview' => true,
18 'showDeletePickedImageConfirm' => false, 18 'showDeletePickedImageConfirm' => false,
backend/views/settings/settings.php
@@ -73,6 +73,16 @@ @@ -73,6 +73,16 @@
73 ] 73 ]
74 ), 74 ),
75 ], 75 ],
  76 + [
  77 + 'label' => \Yii::t('core', 'Email'),
  78 + 'content' => $this->render(
  79 + '_mail_tab',
  80 + [
  81 + 'form' => $form,
  82 + 'mail' => $mail,
  83 + ]
  84 + ),
  85 + ],
76 ], 86 ],
77 ] 87 ]
78 ); 88 );
common/config/.gitignore
@@ -2,4 +2,5 @@ main-local.php @@ -2,4 +2,5 @@ main-local.php
2 db* 2 db*
3 params-local.php 3 params-local.php
4 test-local.php 4 test-local.php
5 -#settings.php  
6 \ No newline at end of file 5 \ No newline at end of file
  6 +settings.php
  7 +mail.php
7 \ No newline at end of file 8 \ No newline at end of file
common/config/mail.php 0 → 100755
  1 +<?php
  2 +
  3 +return [
  4 + 1 => [
  5 + 'host' => '',
  6 + 'user' => '',
  7 + 'pass' => '',
  8 + 'id' => 1,
  9 + ],
  10 +];
0 \ No newline at end of file 11 \ No newline at end of file
common/config/main.php
1 <?php 1 <?php
2 use artbox\core\components\SeoComponent; 2 use artbox\core\components\SeoComponent;
3 3
  4 + $mail = require ('mail.php');
  5 +
4 return [ 6 return [
5 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 7 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
6 'modules' => [ 8 'modules' => [
7 'imagemanager' => [ 9 'imagemanager' => [
8 - 'class' => 'noam148\imagemanager\Module', 10 + 'class' => 'artbox\core\components\imagemanager\Module',
9 'canUploadImage' => true, 11 'canUploadImage' => true,
10 'canRemoveImage' => function () { 12 'canRemoveImage' => function () {
11 return true; 13 return true;
@@ -45,14 +47,26 @@ @@ -45,14 +47,26 @@
45 'class' => SeoComponent::className(), 47 'class' => SeoComponent::className(),
46 ], 48 ],
47 'imagemanager' => [ 49 'imagemanager' => [
48 - 'class' => 'noam148\imagemanager\components\ImageManagerGetPath',  
49 - 'mediaPath' => dirname(dirname(__DIR__)) . '/common/images',  
50 - 'cachePath' => 'assets/images', 50 + 'class' => 'artbox\core\components\imagemanager\components\ImageManagerGetPath',
  51 + 'mediaPath' => dirname(dirname(__DIR__)) . '/storage',
  52 + 'cachePath' => '../../storage/cache',
51 'useFilename' => true, 53 'useFilename' => true,
52 'absoluteUrl' => false, 54 'absoluteUrl' => false,
53 ], 55 ],
54 'aliasCache' => [ 56 'aliasCache' => [
55 'class' => \artbox\core\components\AliasCache::className(), 57 'class' => \artbox\core\components\AliasCache::className(),
56 ], 58 ],
  59 + 'smtpmailer' => [
  60 + 'class' => 'yii\swiftmailer\Mailer',
  61 + 'transport' => [
  62 + 'class' => 'Swift_SmtpTransport',
  63 + 'host' => $mail[ 1 ][ 'host' ],
  64 + 'username' => $mail[ 1 ][ 'user' ],
  65 + 'password' => $mail[ 1 ][ 'pass' ],
  66 + 'port' => '587',
  67 + 'encryption' => 'tls',
  68 + ],
  69 + 'viewPath' => '@common/mail'
  70 + ],
57 ], 71 ],
58 ]; 72 ];
common/mail/feedback.php 0 → 100644
  1 +<?php
  2 + use artbox\core\models\Feedback;
  3 + use yii\web\View;
  4 +
  5 + /**
  6 + * @var View $this
  7 + * @var Feedback $model
  8 + */
  9 +
  10 +?>
  11 +
  12 +<table>
  13 + <tbody>
  14 + <tr>
  15 + <td><b><?= \Yii::t('app', 'Name: ') ?></b></td>
  16 + <td><?= $model->name ?></td>
  17 + </tr>
  18 + <tr>
  19 + <td><b><?= \Yii::t('app', 'Phone: ') ?></b></td>
  20 + <td><?= $model->phone ?></td>
  21 + </tr>
  22 + <tr>
  23 + <td><b><?= \Yii::t('app', 'Email: ') ?></b></td>
  24 + <td><?= $model->email ?></td>
  25 + </tr>
  26 + <tr>
  27 + <td><b><?= \Yii::t('app', 'Message: ') ?></b></td>
  28 + <td><?= $model->message ?></td>
  29 + </tr>
  30 + </tbody>
  31 +</table>
common/models/Mail.php 0 → 100644
  1 +<?php
  2 +
  3 + namespace common\models;
  4 +
  5 + use yii2tech\filedb\ActiveRecord;
  6 +
  7 + /**
  8 + * Class Mail
  9 + *
  10 + * @property string $host
  11 + * @property string $user
  12 + * @property string $pass
  13 + * @package common\models
  14 + */
  15 + class Mail extends ActiveRecord
  16 + {
  17 + /**
  18 + * @inheritdoc
  19 + */
  20 + public static function fileName()
  21 + {
  22 + return 'mail';
  23 + }
  24 +
  25 + public function rules()
  26 + {
  27 + return [
  28 + [
  29 + [
  30 + 'user',
  31 + 'host',
  32 + 'pass',
  33 + ],
  34 + 'string',
  35 + ],
  36 + ];
  37 + }
  38 + }
0 \ No newline at end of file 39 \ No newline at end of file
common/models/Settings.php
1 <?php 1 <?php
2 namespace common\models; 2 namespace common\models;
3 3
4 - use noam148\imagemanager\models\ImageManager; 4 + use artbox\core\components\imagemanager\models\ImageManager;
5 use yii2tech\filedb\ActiveRecord; 5 use yii2tech\filedb\ActiveRecord;
6 use Yii; 6 use Yii;
7 7
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
  7 + "hash": "fc40a7cfec5d7a574dd6b716d563a9b3",
7 "content-hash": "497cd4fa2109f53680f63a074ef3c552", 8 "content-hash": "497cd4fa2109f53680f63a074ef3c552",
8 "packages": [ 9 "packages": [
9 { 10 {
@@ -64,7 +65,7 @@ @@ -64,7 +65,7 @@
64 "yii 2", 65 "yii 2",
65 "yii2" 66 "yii2"
66 ], 67 ],
67 - "time": "2017-06-09T14:12:14+00:00" 68 + "time": "2017-06-09 14:12:14"
68 }, 69 },
69 { 70 {
70 "name": "artweb/artbox-core", 71 "name": "artweb/artbox-core",
@@ -72,7 +73,7 @@ @@ -72,7 +73,7 @@
72 "source": { 73 "source": {
73 "type": "git", 74 "type": "git",
74 "url": "git@gitlab.artweb.com.ua:yarik.nechyporuk/artbox-core.git", 75 "url": "git@gitlab.artweb.com.ua:yarik.nechyporuk/artbox-core.git",
75 - "reference": "d80f6a3ae32b635fdeb8850f68867a494f59f5d8" 76 + "reference": "b65a7fc01200b8e82deaafd0894e99eb9f771c67"
76 }, 77 },
77 "require": { 78 "require": {
78 "2amigos/yii2-tinymce-widget": "~1.0", 79 "2amigos/yii2-tinymce-widget": "~1.0",
@@ -95,7 +96,7 @@ @@ -95,7 +96,7 @@
95 "BSD-3-Clause" 96 "BSD-3-Clause"
96 ], 97 ],
97 "description": "Artbox core extension", 98 "description": "Artbox core extension",
98 - "time": "2017-07-07 12:33:25" 99 + "time": "2017-07-20 13:16:43"
99 }, 100 },
100 { 101 {
101 "name": "bower-asset/amcharts", 102 "name": "bower-asset/amcharts",
@@ -154,7 +155,7 @@ @@ -154,7 +155,7 @@
154 "shasum": "" 155 "shasum": ""
155 }, 156 },
156 "require": { 157 "require": {
157 - "bower-asset/jquery": ">=1.9.1,<4.0" 158 + "bower-asset/jquery": ">=1.9.1,<=3"
158 }, 159 },
159 "type": "bower-asset-library", 160 "type": "bower-asset-library",
160 "extra": { 161 "extra": {
@@ -548,16 +549,16 @@ @@ -548,16 +549,16 @@
548 }, 549 },
549 { 550 {
550 "name": "cebe/markdown", 551 "name": "cebe/markdown",
551 - "version": "1.1.1", 552 + "version": "1.1.2",
552 "source": { 553 "source": {
553 "type": "git", 554 "type": "git",
554 "url": "https://github.com/cebe/markdown.git", 555 "url": "https://github.com/cebe/markdown.git",
555 - "reference": "c30eb5e01fe021cc5bba2f9ee0eeef96d4931166" 556 + "reference": "25b28bae8a6f185b5030673af77b32e1163d5c6e"
556 }, 557 },
557 "dist": { 558 "dist": {
558 "type": "zip", 559 "type": "zip",
559 - "url": "https://api.github.com/repos/cebe/markdown/zipball/c30eb5e01fe021cc5bba2f9ee0eeef96d4931166",  
560 - "reference": "c30eb5e01fe021cc5bba2f9ee0eeef96d4931166", 560 + "url": "https://api.github.com/repos/cebe/markdown/zipball/25b28bae8a6f185b5030673af77b32e1163d5c6e",
  561 + "reference": "25b28bae8a6f185b5030673af77b32e1163d5c6e",
561 "shasum": "" 562 "shasum": ""
562 }, 563 },
563 "require": { 564 "require": {
@@ -604,7 +605,7 @@ @@ -604,7 +605,7 @@
604 "markdown", 605 "markdown",
605 "markdown-extra" 606 "markdown-extra"
606 ], 607 ],
607 - "time": "2016-09-14T20:40:20+00:00" 608 + "time": "2017-07-16 21:13:23"
608 }, 609 },
609 { 610 {
610 "name": "ezyang/htmlpurifier", 611 "name": "ezyang/htmlpurifier",
@@ -651,7 +652,7 @@ @@ -651,7 +652,7 @@
651 "keywords": [ 652 "keywords": [
652 "html" 653 "html"
653 ], 654 ],
654 - "time": "2017-06-03T02:28:16+00:00" 655 + "time": "2017-06-03 02:28:16"
655 }, 656 },
656 { 657 {
657 "name": "firebase/php-jwt", 658 "name": "firebase/php-jwt",
@@ -694,7 +695,7 @@ @@ -694,7 +695,7 @@
694 ], 695 ],
695 "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", 696 "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
696 "homepage": "https://github.com/firebase/php-jwt", 697 "homepage": "https://github.com/firebase/php-jwt",
697 - "time": "2016-07-18T04:51:16+00:00" 698 + "time": "2016-07-18 04:51:16"
698 }, 699 },
699 { 700 {
700 "name": "fortawesome/font-awesome", 701 "name": "fortawesome/font-awesome",
@@ -742,27 +743,27 @@ @@ -742,27 +743,27 @@
742 "font", 743 "font",
743 "icon" 744 "icon"
744 ], 745 ],
745 - "time": "2016-10-24T15:52:54+00:00" 746 + "time": "2016-10-24 15:52:54"
746 }, 747 },
747 { 748 {
748 "name": "google/apiclient", 749 "name": "google/apiclient",
749 - "version": "v2.1.3", 750 + "version": "v2.2.0",
750 "source": { 751 "source": {
751 "type": "git", 752 "type": "git",
752 "url": "https://github.com/google/google-api-php-client.git", 753 "url": "https://github.com/google/google-api-php-client.git",
753 - "reference": "43996f09df274158fd04fce98e8a82effe5f3717" 754 + "reference": "f3fadd538315d62ebd1191d89ac791468c617260"
754 }, 755 },
755 "dist": { 756 "dist": {
756 "type": "zip", 757 "type": "zip",
757 - "url": "https://api.github.com/repos/google/google-api-php-client/zipball/43996f09df274158fd04fce98e8a82effe5f3717",  
758 - "reference": "43996f09df274158fd04fce98e8a82effe5f3717", 758 + "url": "https://api.github.com/repos/google/google-api-php-client/zipball/f3fadd538315d62ebd1191d89ac791468c617260",
  759 + "reference": "f3fadd538315d62ebd1191d89ac791468c617260",
759 "shasum": "" 760 "shasum": ""
760 }, 761 },
761 "require": { 762 "require": {
762 - "firebase/php-jwt": "~2.0|~3.0|~4.0",  
763 - "google/apiclient-services": "^0.11",  
764 - "google/auth": "^0.11",  
765 - "guzzlehttp/guzzle": "~5.2|~6.0", 763 + "firebase/php-jwt": "~2.0|~3.0|~4.0|~5.0",
  764 + "google/apiclient-services": "~0.13",
  765 + "google/auth": "^1.0",
  766 + "guzzlehttp/guzzle": "~5.3.1|~6.0",
766 "guzzlehttp/psr7": "^1.2", 767 "guzzlehttp/psr7": "^1.2",
767 "monolog/monolog": "^1.17", 768 "monolog/monolog": "^1.17",
768 "php": ">=5.4", 769 "php": ">=5.4",
@@ -801,20 +802,20 @@ @@ -801,20 +802,20 @@
801 "keywords": [ 802 "keywords": [
802 "google" 803 "google"
803 ], 804 ],
804 - "time": "2017-03-22T18:32:04+00:00" 805 + "time": "2017-07-10 15:34:54"
805 }, 806 },
806 { 807 {
807 "name": "google/apiclient-services", 808 "name": "google/apiclient-services",
808 - "version": "v0.11", 809 + "version": "v0.15",
809 "source": { 810 "source": {
810 "type": "git", 811 "type": "git",
811 "url": "https://github.com/google/google-api-php-client-services.git", 812 "url": "https://github.com/google/google-api-php-client-services.git",
812 - "reference": "48c554aee06f2fd5700d7bdfa4fa6b82d184eb52" 813 + "reference": "9eaaa1062fa2a7cd2d16d3b5ab39efc0bc02a37e"
813 }, 814 },
814 "dist": { 815 "dist": {
815 "type": "zip", 816 "type": "zip",
816 - "url": "https://api.github.com/repos/google/google-api-php-client-services/zipball/48c554aee06f2fd5700d7bdfa4fa6b82d184eb52",  
817 - "reference": "48c554aee06f2fd5700d7bdfa4fa6b82d184eb52", 817 + "url": "https://api.github.com/repos/google/google-api-php-client-services/zipball/9eaaa1062fa2a7cd2d16d3b5ab39efc0bc02a37e",
  818 + "reference": "9eaaa1062fa2a7cd2d16d3b5ab39efc0bc02a37e",
818 "shasum": "" 819 "shasum": ""
819 }, 820 },
820 "require": { 821 "require": {
@@ -838,25 +839,25 @@ @@ -838,25 +839,25 @@
838 "keywords": [ 839 "keywords": [
839 "google" 840 "google"
840 ], 841 ],
841 - "time": "2017-03-13T17:40:44+00:00" 842 + "time": "2017-07-13 19:18:11"
842 }, 843 },
843 { 844 {
844 "name": "google/auth", 845 "name": "google/auth",
845 - "version": "v0.11.1", 846 + "version": "v1.0",
846 "source": { 847 "source": {
847 "type": "git", 848 "type": "git",
848 "url": "https://github.com/google/google-auth-library-php.git", 849 "url": "https://github.com/google/google-auth-library-php.git",
849 - "reference": "a240674b08a09949fd5597f7590b3ed83663a12d" 850 + "reference": "db77bd2de0bcc40bf50ebe851e9eed332aeaa4df"
850 }, 851 },
851 "dist": { 852 "dist": {
852 "type": "zip", 853 "type": "zip",
853 - "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/a240674b08a09949fd5597f7590b3ed83663a12d",  
854 - "reference": "a240674b08a09949fd5597f7590b3ed83663a12d", 854 + "url": "https://api.github.com/repos/google/google-auth-library-php/zipball/db77bd2de0bcc40bf50ebe851e9eed332aeaa4df",
  855 + "reference": "db77bd2de0bcc40bf50ebe851e9eed332aeaa4df",
855 "shasum": "" 856 "shasum": ""
856 }, 857 },
857 "require": { 858 "require": {
858 "firebase/php-jwt": "~2.0|~3.0|~4.0", 859 "firebase/php-jwt": "~2.0|~3.0|~4.0",
859 - "guzzlehttp/guzzle": "~5.3|~6.0", 860 + "guzzlehttp/guzzle": "~5.3.1|~6.0",
860 "guzzlehttp/psr7": "~1.2", 861 "guzzlehttp/psr7": "~1.2",
861 "php": ">=5.4", 862 "php": ">=5.4",
862 "psr/cache": "^1.0", 863 "psr/cache": "^1.0",
@@ -886,7 +887,7 @@ @@ -886,7 +887,7 @@
886 "google", 887 "google",
887 "oauth2" 888 "oauth2"
888 ], 889 ],
889 - "time": "2016-11-02T14:59:14+00:00" 890 + "time": "2017-06-13 18:00:07"
890 }, 891 },
891 { 892 {
892 "name": "guzzlehttp/guzzle", 893 "name": "guzzlehttp/guzzle",
@@ -951,7 +952,7 @@ @@ -951,7 +952,7 @@
951 "rest", 952 "rest",
952 "web service" 953 "web service"
953 ], 954 ],
954 - "time": "2017-06-22T18:50:49+00:00" 955 + "time": "2017-06-22 18:50:49"
955 }, 956 },
956 { 957 {
957 "name": "guzzlehttp/promises", 958 "name": "guzzlehttp/promises",
@@ -1002,7 +1003,7 @@ @@ -1002,7 +1003,7 @@
1002 "keywords": [ 1003 "keywords": [
1003 "promise" 1004 "promise"
1004 ], 1005 ],
1005 - "time": "2016-12-20T10:07:11+00:00" 1006 + "time": "2016-12-20 10:07:11"
1006 }, 1007 },
1007 { 1008 {
1008 "name": "guzzlehttp/psr7", 1009 "name": "guzzlehttp/psr7",
@@ -1067,7 +1068,7 @@ @@ -1067,7 +1068,7 @@
1067 "uri", 1068 "uri",
1068 "url" 1069 "url"
1069 ], 1070 ],
1070 - "time": "2017-03-20T17:10:46+00:00" 1071 + "time": "2017-03-20 17:10:46"
1071 }, 1072 },
1072 { 1073 {
1073 "name": "hiqdev/yii2-asset-icheck", 1074 "name": "hiqdev/yii2-asset-icheck",
@@ -1139,7 +1140,7 @@ @@ -1139,7 +1140,7 @@
1139 "iCheck", 1140 "iCheck",
1140 "yii2" 1141 "yii2"
1141 ], 1142 ],
1142 - "time": "2016-03-30T10:59:26+00:00" 1143 + "time": "2016-03-30 10:59:26"
1143 }, 1144 },
1144 { 1145 {
1145 "name": "hiqdev/yii2-asset-pnotify", 1146 "name": "hiqdev/yii2-asset-pnotify",
@@ -1201,7 +1202,7 @@ @@ -1201,7 +1202,7 @@
1201 "pnotify", 1202 "pnotify",
1202 "yii2" 1203 "yii2"
1203 ], 1204 ],
1204 - "time": "2015-09-09T15:16:38+00:00" 1205 + "time": "2015-09-09 15:16:38"
1205 }, 1206 },
1206 { 1207 {
1207 "name": "imagine/imagine", 1208 "name": "imagine/imagine",
@@ -1258,7 +1259,7 @@ @@ -1258,7 +1259,7 @@
1258 "image manipulation", 1259 "image manipulation",
1259 "image processing" 1260 "image processing"
1260 ], 1261 ],
1261 - "time": "2015-09-19T16:54:05+00:00" 1262 + "time": "2015-09-19 16:54:05"
1262 }, 1263 },
1263 { 1264 {
1264 "name": "kartik-v/bootstrap-fileinput", 1265 "name": "kartik-v/bootstrap-fileinput",
@@ -1311,7 +1312,7 @@ @@ -1311,7 +1312,7 @@
1311 "progress", 1312 "progress",
1312 "upload" 1313 "upload"
1313 ], 1314 ],
1314 - "time": "2017-06-24T05:15:30+00:00" 1315 + "time": "2017-06-24 05:15:30"
1315 }, 1316 },
1316 { 1317 {
1317 "name": "kartik-v/yii2-krajee-base", 1318 "name": "kartik-v/yii2-krajee-base",
@@ -1362,7 +1363,7 @@ @@ -1362,7 +1363,7 @@
1362 "widget", 1363 "widget",
1363 "yii2" 1364 "yii2"
1364 ], 1365 ],
1365 - "time": "2017-02-22T05:58:53+00:00" 1366 + "time": "2017-02-22 05:58:53"
1366 }, 1367 },
1367 { 1368 {
1368 "name": "kartik-v/yii2-widget-fileinput", 1369 "name": "kartik-v/yii2-widget-fileinput",
@@ -1417,7 +1418,7 @@ @@ -1417,7 +1418,7 @@
1417 "widget", 1418 "widget",
1418 "yii2" 1419 "yii2"
1419 ], 1420 ],
1420 - "time": "2017-05-25T20:12:30+00:00" 1421 + "time": "2017-05-25 20:12:30"
1421 }, 1422 },
1422 { 1423 {
1423 "name": "kartik-v/yii2-widget-select2", 1424 "name": "kartik-v/yii2-widget-select2",
@@ -1548,7 +1549,7 @@ @@ -1548,7 +1549,7 @@
1548 "logging", 1549 "logging",
1549 "psr-3" 1550 "psr-3"
1550 ], 1551 ],
1551 - "time": "2017-06-19T01:22:40+00:00" 1552 + "time": "2017-06-19 01:22:40"
1552 }, 1553 },
1553 { 1554 {
1554 "name": "noam148/yii2-image-manager", 1555 "name": "noam148/yii2-image-manager",
@@ -1597,7 +1598,7 @@ @@ -1597,7 +1598,7 @@
1597 "widget", 1598 "widget",
1598 "yii2" 1599 "yii2"
1599 ], 1600 ],
1600 - "time": "2017-06-11T09:21:10+00:00" 1601 + "time": "2017-06-11 09:21:10"
1601 }, 1602 },
1602 { 1603 {
1603 "name": "noam148/yii2-image-resize", 1604 "name": "noam148/yii2-image-resize",
@@ -1643,7 +1644,7 @@ @@ -1643,7 +1644,7 @@
1643 "resize", 1644 "resize",
1644 "yii2" 1645 "yii2"
1645 ], 1646 ],
1646 - "time": "2016-11-29T18:17:37+00:00" 1647 + "time": "2016-11-29 18:17:37"
1647 }, 1648 },
1648 { 1649 {
1649 "name": "phpseclib/phpseclib", 1650 "name": "phpseclib/phpseclib",
@@ -1735,7 +1736,7 @@ @@ -1735,7 +1736,7 @@
1735 "x.509", 1736 "x.509",
1736 "x509" 1737 "x509"
1737 ], 1738 ],
1738 - "time": "2017-06-05T06:31:10+00:00" 1739 + "time": "2017-06-05 06:31:10"
1739 }, 1740 },
1740 { 1741 {
1741 "name": "psr/cache", 1742 "name": "psr/cache",
@@ -1781,7 +1782,7 @@ @@ -1781,7 +1782,7 @@
1781 "psr", 1782 "psr",
1782 "psr-6" 1783 "psr-6"
1783 ], 1784 ],
1784 - "time": "2016-08-06T20:24:11+00:00" 1785 + "time": "2016-08-06 20:24:11"
1785 }, 1786 },
1786 { 1787 {
1787 "name": "psr/http-message", 1788 "name": "psr/http-message",
@@ -1831,7 +1832,7 @@ @@ -1831,7 +1832,7 @@
1831 "request", 1832 "request",
1832 "response" 1833 "response"
1833 ], 1834 ],
1834 - "time": "2016-08-06T14:39:51+00:00" 1835 + "time": "2016-08-06 14:39:51"
1835 }, 1836 },
1836 { 1837 {
1837 "name": "psr/log", 1838 "name": "psr/log",
@@ -1878,7 +1879,7 @@ @@ -1878,7 +1879,7 @@
1878 "psr", 1879 "psr",
1879 "psr-3" 1880 "psr-3"
1880 ], 1881 ],
1881 - "time": "2016-10-10T12:19:37+00:00" 1882 + "time": "2016-10-10 12:19:37"
1882 }, 1883 },
1883 { 1884 {
1884 "name": "rmrevin/yii2-fontawesome", 1885 "name": "rmrevin/yii2-fontawesome",
@@ -1930,7 +1931,7 @@ @@ -1930,7 +1931,7 @@
1930 "font", 1931 "font",
1931 "yii" 1932 "yii"
1932 ], 1933 ],
1933 - "time": "2017-01-11T14:05:47+00:00" 1934 + "time": "2017-01-11 14:05:47"
1934 }, 1935 },
1935 { 1936 {
1936 "name": "speixoto/yii2-amcharts", 1937 "name": "speixoto/yii2-amcharts",
@@ -1972,7 +1973,7 @@ @@ -1972,7 +1973,7 @@
1972 "amcharts", 1973 "amcharts",
1973 "yii" 1974 "yii"
1974 ], 1975 ],
1975 - "time": "2016-08-23T13:52:28+00:00" 1976 + "time": "2016-08-23 13:52:28"
1976 }, 1977 },
1977 { 1978 {
1978 "name": "swiftmailer/swiftmailer", 1979 "name": "swiftmailer/swiftmailer",
@@ -2026,7 +2027,7 @@ @@ -2026,7 +2027,7 @@
2026 "mail", 2027 "mail",
2027 "mailer" 2028 "mailer"
2028 ], 2029 ],
2029 - "time": "2017-05-01T15:54:03+00:00" 2030 + "time": "2017-05-01 15:54:03"
2030 }, 2031 },
2031 { 2032 {
2032 "name": "tinymce/tinymce", 2033 "name": "tinymce/tinymce",
@@ -2072,20 +2073,20 @@ @@ -2072,20 +2073,20 @@
2072 "tinymce", 2073 "tinymce",
2073 "wysiwyg" 2074 "wysiwyg"
2074 ], 2075 ],
2075 - "time": "2017-06-13T12:49:51+00:00" 2076 + "time": "2017-06-13 12:49:51"
2076 }, 2077 },
2077 { 2078 {
2078 "name": "yii2tech/filedb", 2079 "name": "yii2tech/filedb",
2079 - "version": "1.0.3", 2080 + "version": "1.0.4",
2080 "source": { 2081 "source": {
2081 "type": "git", 2082 "type": "git",
2082 "url": "https://github.com/yii2tech/filedb.git", 2083 "url": "https://github.com/yii2tech/filedb.git",
2083 - "reference": "29af3a707fa2070b73b268e847b264f29c7dff31" 2084 + "reference": "6a6391b035da2bb2049813f8bce9f49ed9b01426"
2084 }, 2085 },
2085 "dist": { 2086 "dist": {
2086 "type": "zip", 2087 "type": "zip",
2087 - "url": "https://api.github.com/repos/yii2tech/filedb/zipball/29af3a707fa2070b73b268e847b264f29c7dff31",  
2088 - "reference": "29af3a707fa2070b73b268e847b264f29c7dff31", 2088 + "url": "https://api.github.com/repos/yii2tech/filedb/zipball/6a6391b035da2bb2049813f8bce9f49ed9b01426",
  2089 + "reference": "6a6391b035da2bb2049813f8bce9f49ed9b01426",
2089 "shasum": "" 2090 "shasum": ""
2090 }, 2091 },
2091 "require": { 2092 "require": {
@@ -2120,7 +2121,7 @@ @@ -2120,7 +2121,7 @@
2120 "static", 2121 "static",
2121 "yii2" 2122 "yii2"
2122 ], 2123 ],
2123 - "time": "2017-02-06T10:58:30+00:00" 2124 + "time": "2017-07-07 12:50:56"
2124 }, 2125 },
2125 { 2126 {
2126 "name": "yiisoft/yii2", 2127 "name": "yiisoft/yii2",
@@ -2220,7 +2221,7 @@ @@ -2220,7 +2221,7 @@
2220 "framework", 2221 "framework",
2221 "yii2" 2222 "yii2"
2222 ], 2223 ],
2223 - "time": "2017-06-05T14:33:41+00:00" 2224 + "time": "2017-06-05 14:33:41"
2224 }, 2225 },
2225 { 2226 {
2226 "name": "yiisoft/yii2-bootstrap", 2227 "name": "yiisoft/yii2-bootstrap",
@@ -2270,7 +2271,7 @@ @@ -2270,7 +2271,7 @@
2270 "bootstrap", 2271 "bootstrap",
2271 "yii2" 2272 "yii2"
2272 ], 2273 ],
2273 - "time": "2016-03-17T03:29:28+00:00" 2274 + "time": "2016-03-17 03:29:28"
2274 }, 2275 },
2275 { 2276 {
2276 "name": "yiisoft/yii2-composer", 2277 "name": "yiisoft/yii2-composer",
@@ -2320,7 +2321,7 @@ @@ -2320,7 +2321,7 @@
2320 "extension installer", 2321 "extension installer",
2321 "yii2" 2322 "yii2"
2322 ], 2323 ],
2323 - "time": "2016-12-20T13:26:02+00:00" 2324 + "time": "2016-12-20 13:26:02"
2324 }, 2325 },
2325 { 2326 {
2326 "name": "yiisoft/yii2-imagine", 2327 "name": "yiisoft/yii2-imagine",
@@ -2368,7 +2369,7 @@ @@ -2368,7 +2369,7 @@
2368 "imagine", 2369 "imagine",
2369 "yii2" 2370 "yii2"
2370 ], 2371 ],
2371 - "time": "2016-11-03T19:28:39+00:00" 2372 + "time": "2016-11-03 19:28:39"
2372 }, 2373 },
2373 { 2374 {
2374 "name": "yiisoft/yii2-swiftmailer", 2375 "name": "yiisoft/yii2-swiftmailer",
@@ -2418,20 +2419,20 @@ @@ -2418,20 +2419,20 @@
2418 "swiftmailer", 2419 "swiftmailer",
2419 "yii2" 2420 "yii2"
2420 ], 2421 ],
2421 - "time": "2017-05-01T08:29:00+00:00" 2422 + "time": "2017-05-01 08:29:00"
2422 }, 2423 },
2423 { 2424 {
2424 "name": "yiister/yii2-gentelella", 2425 "name": "yiister/yii2-gentelella",
2425 - "version": "1.2.3", 2426 + "version": "1.2.5",
2426 "source": { 2427 "source": {
2427 "type": "git", 2428 "type": "git",
2428 "url": "https://github.com/yiister/yii2-gentelella.git", 2429 "url": "https://github.com/yiister/yii2-gentelella.git",
2429 - "reference": "ec02c7e89363ee2f2c074588f3f13d3751fea1b5" 2430 + "reference": "60e79128a3999c8d9ff826ee5ea26e74c7c64eed"
2430 }, 2431 },
2431 "dist": { 2432 "dist": {
2432 "type": "zip", 2433 "type": "zip",
2433 - "url": "https://api.github.com/repos/yiister/yii2-gentelella/zipball/ec02c7e89363ee2f2c074588f3f13d3751fea1b5",  
2434 - "reference": "ec02c7e89363ee2f2c074588f3f13d3751fea1b5", 2434 + "url": "https://api.github.com/repos/yiister/yii2-gentelella/zipball/60e79128a3999c8d9ff826ee5ea26e74c7c64eed",
  2435 + "reference": "60e79128a3999c8d9ff826ee5ea26e74c7c64eed",
2435 "shasum": "" 2436 "shasum": ""
2436 }, 2437 },
2437 "require": { 2438 "require": {
@@ -2476,7 +2477,7 @@ @@ -2476,7 +2477,7 @@
2476 "theme", 2477 "theme",
2477 "yii2" 2478 "yii2"
2478 ], 2479 ],
2479 - "time": "2017-07-04T05:05:27+00:00" 2480 + "time": "2017-07-12 03:46:01"
2480 } 2481 }
2481 ], 2482 ],
2482 "packages-dev": [ 2483 "packages-dev": [
@@ -2537,7 +2538,7 @@ @@ -2537,7 +2538,7 @@
2537 "gherkin", 2538 "gherkin",
2538 "parser" 2539 "parser"
2539 ], 2540 ],
2540 - "time": "2016-10-30T11:50:56+00:00" 2541 + "time": "2016-10-30 11:50:56"
2541 }, 2542 },
2542 { 2543 {
2543 "name": "bower-asset/typeahead.js", 2544 "name": "bower-asset/typeahead.js",
@@ -2568,16 +2569,16 @@ @@ -2568,16 +2569,16 @@
2568 }, 2569 },
2569 { 2570 {
2570 "name": "codeception/base", 2571 "name": "codeception/base",
2571 - "version": "2.3.3", 2572 + "version": "2.3.4",
2572 "source": { 2573 "source": {
2573 "type": "git", 2574 "type": "git",
2574 "url": "https://github.com/Codeception/base.git", 2575 "url": "https://github.com/Codeception/base.git",
2575 - "reference": "6724500be5f890b086440a7f40941565b313b3d1" 2576 + "reference": "c146cf4888f5789d9dbd35d6204e2aa7aa2e94e9"
2576 }, 2577 },
2577 "dist": { 2578 "dist": {
2578 "type": "zip", 2579 "type": "zip",
2579 - "url": "https://api.github.com/repos/Codeception/base/zipball/6724500be5f890b086440a7f40941565b313b3d1",  
2580 - "reference": "6724500be5f890b086440a7f40941565b313b3d1", 2580 + "url": "https://api.github.com/repos/Codeception/base/zipball/c146cf4888f5789d9dbd35d6204e2aa7aa2e94e9",
  2581 + "reference": "c146cf4888f5789d9dbd35d6204e2aa7aa2e94e9",
2581 "shasum": "" 2582 "shasum": ""
2582 }, 2583 },
2583 "require": { 2584 "require": {
@@ -2612,6 +2613,7 @@ @@ -2612,6 +2613,7 @@
2612 "php-amqplib/php-amqplib": "~2.4", 2613 "php-amqplib/php-amqplib": "~2.4",
2613 "predis/predis": "^1.0", 2614 "predis/predis": "^1.0",
2614 "squizlabs/php_codesniffer": "~2.0", 2615 "squizlabs/php_codesniffer": "~2.0",
  2616 + "symfony/process": ">=2.7 <4.0",
2615 "vlucas/phpdotenv": "^2.4.0" 2617 "vlucas/phpdotenv": "^2.4.0"
2616 }, 2618 },
2617 "suggest": { 2619 "suggest": {
@@ -2656,7 +2658,7 @@ @@ -2656,7 +2658,7 @@
2656 "functional testing", 2658 "functional testing",
2657 "unit testing" 2659 "unit testing"
2658 ], 2660 ],
2659 - "time": "2017-06-02T00:30:24+00:00" 2661 + "time": "2017-07-10 20:30:59"
2660 }, 2662 },
2661 { 2663 {
2662 "name": "codeception/verify", 2664 "name": "codeception/verify",
@@ -2692,7 +2694,7 @@ @@ -2692,7 +2694,7 @@
2692 } 2694 }
2693 ], 2695 ],
2694 "description": "BDD assertion library for PHPUnit", 2696 "description": "BDD assertion library for PHPUnit",
2695 - "time": "2017-01-09T10:58:51+00:00" 2697 + "time": "2017-01-09 10:58:51"
2696 }, 2698 },
2697 { 2699 {
2698 "name": "doctrine/instantiator", 2700 "name": "doctrine/instantiator",
@@ -2746,7 +2748,7 @@ @@ -2746,7 +2748,7 @@
2746 "constructor", 2748 "constructor",
2747 "instantiate" 2749 "instantiate"
2748 ], 2750 ],
2749 - "time": "2015-06-14T21:17:01+00:00" 2751 + "time": "2015-06-14 21:17:01"
2750 }, 2752 },
2751 { 2753 {
2752 "name": "fzaninotto/faker", 2754 "name": "fzaninotto/faker",
@@ -2794,7 +2796,7 @@ @@ -2794,7 +2796,7 @@
2794 "faker", 2796 "faker",
2795 "fixtures" 2797 "fixtures"
2796 ], 2798 ],
2797 - "time": "2016-04-29T12:21:54+00:00" 2799 + "time": "2016-04-29 12:21:54"
2798 }, 2800 },
2799 { 2801 {
2800 "name": "myclabs/deep-copy", 2802 "name": "myclabs/deep-copy",
@@ -2836,7 +2838,7 @@ @@ -2836,7 +2838,7 @@
2836 "object", 2838 "object",
2837 "object graph" 2839 "object graph"
2838 ], 2840 ],
2839 - "time": "2017-04-12T18:52:22+00:00" 2841 + "time": "2017-04-12 18:52:22"
2840 }, 2842 },
2841 { 2843 {
2842 "name": "phar-io/manifest", 2844 "name": "phar-io/manifest",
@@ -2891,7 +2893,7 @@ @@ -2891,7 +2893,7 @@
2891 } 2893 }
2892 ], 2894 ],
2893 "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 2895 "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
2894 - "time": "2017-03-05T18:14:27+00:00" 2896 + "time": "2017-03-05 18:14:27"
2895 }, 2897 },
2896 { 2898 {
2897 "name": "phar-io/version", 2899 "name": "phar-io/version",
@@ -2938,7 +2940,7 @@ @@ -2938,7 +2940,7 @@
2938 } 2940 }
2939 ], 2941 ],
2940 "description": "Library for handling version information and constraints", 2942 "description": "Library for handling version information and constraints",
2941 - "time": "2017-03-05T17:38:23+00:00" 2943 + "time": "2017-03-05 17:38:23"
2942 }, 2944 },
2943 { 2945 {
2944 "name": "phpdocumentor/reflection-common", 2946 "name": "phpdocumentor/reflection-common",
@@ -2992,26 +2994,26 @@ @@ -2992,26 +2994,26 @@
2992 "reflection", 2994 "reflection",
2993 "static analysis" 2995 "static analysis"
2994 ], 2996 ],
2995 - "time": "2015-12-27T11:43:31+00:00" 2997 + "time": "2015-12-27 11:43:31"
2996 }, 2998 },
2997 { 2999 {
2998 "name": "phpdocumentor/reflection-docblock", 3000 "name": "phpdocumentor/reflection-docblock",
2999 - "version": "3.1.1", 3001 + "version": "3.2.0",
3000 "source": { 3002 "source": {
3001 "type": "git", 3003 "type": "git",
3002 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 3004 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
3003 - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" 3005 + "reference": "46f7e8bb075036c92695b15a1ddb6971c751e585"
3004 }, 3006 },
3005 "dist": { 3007 "dist": {
3006 "type": "zip", 3008 "type": "zip",
3007 - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",  
3008 - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", 3009 + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/46f7e8bb075036c92695b15a1ddb6971c751e585",
  3010 + "reference": "46f7e8bb075036c92695b15a1ddb6971c751e585",
3009 "shasum": "" 3011 "shasum": ""
3010 }, 3012 },
3011 "require": { 3013 "require": {
3012 "php": ">=5.5", 3014 "php": ">=5.5",
3013 "phpdocumentor/reflection-common": "^1.0@dev", 3015 "phpdocumentor/reflection-common": "^1.0@dev",
3014 - "phpdocumentor/type-resolver": "^0.2.0", 3016 + "phpdocumentor/type-resolver": "^0.4.0",
3015 "webmozart/assert": "^1.0" 3017 "webmozart/assert": "^1.0"
3016 }, 3018 },
3017 "require-dev": { 3019 "require-dev": {
@@ -3037,24 +3039,24 @@ @@ -3037,24 +3039,24 @@
3037 } 3039 }
3038 ], 3040 ],
3039 "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 3041 "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
3040 - "time": "2016-09-30T07:12:33+00:00" 3042 + "time": "2017-07-15 11:38:20"
3041 }, 3043 },
3042 { 3044 {
3043 "name": "phpdocumentor/type-resolver", 3045 "name": "phpdocumentor/type-resolver",
3044 - "version": "0.2.1", 3046 + "version": "0.4.0",
3045 "source": { 3047 "source": {
3046 "type": "git", 3048 "type": "git",
3047 "url": "https://github.com/phpDocumentor/TypeResolver.git", 3049 "url": "https://github.com/phpDocumentor/TypeResolver.git",
3048 - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" 3050 + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
3049 }, 3051 },
3050 "dist": { 3052 "dist": {
3051 "type": "zip", 3053 "type": "zip",
3052 - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",  
3053 - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 3054 + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
  3055 + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
3054 "shasum": "" 3056 "shasum": ""
3055 }, 3057 },
3056 "require": { 3058 "require": {
3057 - "php": ">=5.5", 3059 + "php": "^5.5 || ^7.0",
3058 "phpdocumentor/reflection-common": "^1.0" 3060 "phpdocumentor/reflection-common": "^1.0"
3059 }, 3061 },
3060 "require-dev": { 3062 "require-dev": {
@@ -3084,7 +3086,7 @@ @@ -3084,7 +3086,7 @@
3084 "email": "me@mikevanriel.com" 3086 "email": "me@mikevanriel.com"
3085 } 3087 }
3086 ], 3088 ],
3087 - "time": "2016-11-25T06:54:22+00:00" 3089 + "time": "2017-07-14 14:27:02"
3088 }, 3090 },
3089 { 3091 {
3090 "name": "phpspec/php-diff", 3092 "name": "phpspec/php-diff",
@@ -3122,7 +3124,7 @@ @@ -3122,7 +3124,7 @@
3122 } 3124 }
3123 ], 3125 ],
3124 "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", 3126 "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).",
3125 - "time": "2016-04-07T12:29:16+00:00" 3127 + "time": "2016-04-07 12:29:16"
3126 }, 3128 },
3127 { 3129 {
3128 "name": "phpspec/prophecy", 3130 "name": "phpspec/prophecy",
@@ -3185,7 +3187,7 @@ @@ -3185,7 +3187,7 @@
3185 "spy", 3187 "spy",
3186 "stub" 3188 "stub"
3187 ], 3189 ],
3188 - "time": "2017-03-02T20:05:34+00:00" 3190 + "time": "2017-03-02 20:05:34"
3189 }, 3191 },
3190 { 3192 {
3191 "name": "phpunit/php-code-coverage", 3193 "name": "phpunit/php-code-coverage",
@@ -3249,7 +3251,7 @@ @@ -3249,7 +3251,7 @@
3249 "testing", 3251 "testing",
3250 "xunit" 3252 "xunit"
3251 ], 3253 ],
3252 - "time": "2017-04-21T08:03:57+00:00" 3254 + "time": "2017-04-21 08:03:57"
3253 }, 3255 },
3254 { 3256 {
3255 "name": "phpunit/php-file-iterator", 3257 "name": "phpunit/php-file-iterator",
@@ -3296,7 +3298,7 @@ @@ -3296,7 +3298,7 @@
3296 "filesystem", 3298 "filesystem",
3297 "iterator" 3299 "iterator"
3298 ], 3300 ],
3299 - "time": "2016-10-03T07:40:28+00:00" 3301 + "time": "2016-10-03 07:40:28"
3300 }, 3302 },
3301 { 3303 {
3302 "name": "phpunit/php-text-template", 3304 "name": "phpunit/php-text-template",
@@ -3337,7 +3339,7 @@ @@ -3337,7 +3339,7 @@
3337 "keywords": [ 3339 "keywords": [
3338 "template" 3340 "template"
3339 ], 3341 ],
3340 - "time": "2015-06-21T13:50:34+00:00" 3342 + "time": "2015-06-21 13:50:34"
3341 }, 3343 },
3342 { 3344 {
3343 "name": "phpunit/php-timer", 3345 "name": "phpunit/php-timer",
@@ -3386,7 +3388,7 @@ @@ -3386,7 +3388,7 @@
3386 "keywords": [ 3388 "keywords": [
3387 "timer" 3389 "timer"
3388 ], 3390 ],
3389 - "time": "2017-02-26T11:10:40+00:00" 3391 + "time": "2017-02-26 11:10:40"
3390 }, 3392 },
3391 { 3393 {
3392 "name": "phpunit/php-token-stream", 3394 "name": "phpunit/php-token-stream",
@@ -3435,7 +3437,7 @@ @@ -3435,7 +3437,7 @@
3435 "keywords": [ 3437 "keywords": [
3436 "tokenizer" 3438 "tokenizer"
3437 ], 3439 ],
3438 - "time": "2017-02-27T10:12:30+00:00" 3440 + "time": "2017-02-27 10:12:30"
3439 }, 3441 },
3440 { 3442 {
3441 "name": "phpunit/phpunit", 3443 "name": "phpunit/phpunit",
@@ -3519,7 +3521,7 @@ @@ -3519,7 +3521,7 @@
3519 "testing", 3521 "testing",
3520 "xunit" 3522 "xunit"
3521 ], 3523 ],
3522 - "time": "2017-07-03T15:54:24+00:00" 3524 + "time": "2017-07-03 15:54:24"
3523 }, 3525 },
3524 { 3526 {
3525 "name": "phpunit/phpunit-mock-objects", 3527 "name": "phpunit/phpunit-mock-objects",
@@ -3578,7 +3580,7 @@ @@ -3578,7 +3580,7 @@
3578 "mock", 3580 "mock",
3579 "xunit" 3581 "xunit"
3580 ], 3582 ],
3581 - "time": "2017-06-30T08:15:21+00:00" 3583 + "time": "2017-06-30 08:15:21"
3582 }, 3584 },
3583 { 3585 {
3584 "name": "sebastian/code-unit-reverse-lookup", 3586 "name": "sebastian/code-unit-reverse-lookup",
@@ -3623,7 +3625,7 @@ @@ -3623,7 +3625,7 @@
3623 ], 3625 ],
3624 "description": "Looks up which function or method a line of code belongs to", 3626 "description": "Looks up which function or method a line of code belongs to",
3625 "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 3627 "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
3626 - "time": "2017-03-04T06:30:41+00:00" 3628 + "time": "2017-03-04 06:30:41"
3627 }, 3629 },
3628 { 3630 {
3629 "name": "sebastian/comparator", 3631 "name": "sebastian/comparator",
@@ -3687,7 +3689,7 @@ @@ -3687,7 +3689,7 @@
3687 "compare", 3689 "compare",
3688 "equality" 3690 "equality"
3689 ], 3691 ],
3690 - "time": "2017-03-03T06:26:08+00:00" 3692 + "time": "2017-03-03 06:26:08"
3691 }, 3693 },
3692 { 3694 {
3693 "name": "sebastian/diff", 3695 "name": "sebastian/diff",
@@ -3739,7 +3741,7 @@ @@ -3739,7 +3741,7 @@
3739 "keywords": [ 3741 "keywords": [
3740 "diff" 3742 "diff"
3741 ], 3743 ],
3742 - "time": "2017-05-22T07:24:03+00:00" 3744 + "time": "2017-05-22 07:24:03"
3743 }, 3745 },
3744 { 3746 {
3745 "name": "sebastian/environment", 3747 "name": "sebastian/environment",
@@ -3789,7 +3791,7 @@ @@ -3789,7 +3791,7 @@
3789 "environment", 3791 "environment",
3790 "hhvm" 3792 "hhvm"
3791 ], 3793 ],
3792 - "time": "2017-07-01T08:51:00+00:00" 3794 + "time": "2017-07-01 08:51:00"
3793 }, 3795 },
3794 { 3796 {
3795 "name": "sebastian/exporter", 3797 "name": "sebastian/exporter",
@@ -3856,7 +3858,7 @@ @@ -3856,7 +3858,7 @@
3856 "export", 3858 "export",
3857 "exporter" 3859 "exporter"
3858 ], 3860 ],
3859 - "time": "2017-04-03T13:19:02+00:00" 3861 + "time": "2017-04-03 13:19:02"
3860 }, 3862 },
3861 { 3863 {
3862 "name": "sebastian/global-state", 3864 "name": "sebastian/global-state",
@@ -3907,7 +3909,7 @@ @@ -3907,7 +3909,7 @@
3907 "keywords": [ 3909 "keywords": [
3908 "global state" 3910 "global state"
3909 ], 3911 ],
3910 - "time": "2017-04-27T15:39:26+00:00" 3912 + "time": "2017-04-27 15:39:26"
3911 }, 3913 },
3912 { 3914 {
3913 "name": "sebastian/object-enumerator", 3915 "name": "sebastian/object-enumerator",
@@ -3954,7 +3956,7 @@ @@ -3954,7 +3956,7 @@
3954 ], 3956 ],
3955 "description": "Traverses array structures and object graphs to enumerate all referenced objects", 3957 "description": "Traverses array structures and object graphs to enumerate all referenced objects",
3956 "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 3958 "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
3957 - "time": "2017-03-12T15:17:29+00:00" 3959 + "time": "2017-03-12 15:17:29"
3958 }, 3960 },
3959 { 3961 {
3960 "name": "sebastian/object-reflector", 3962 "name": "sebastian/object-reflector",
@@ -3999,7 +4001,7 @@ @@ -3999,7 +4001,7 @@
3999 ], 4001 ],
4000 "description": "Allows reflection of object attributes, including inherited and non-public ones", 4002 "description": "Allows reflection of object attributes, including inherited and non-public ones",
4001 "homepage": "https://github.com/sebastianbergmann/object-reflector/", 4003 "homepage": "https://github.com/sebastianbergmann/object-reflector/",
4002 - "time": "2017-03-29T09:07:27+00:00" 4004 + "time": "2017-03-29 09:07:27"
4003 }, 4005 },
4004 { 4006 {
4005 "name": "sebastian/recursion-context", 4007 "name": "sebastian/recursion-context",
@@ -4052,7 +4054,7 @@ @@ -4052,7 +4054,7 @@
4052 ], 4054 ],
4053 "description": "Provides functionality to recursively process PHP variables", 4055 "description": "Provides functionality to recursively process PHP variables",
4054 "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 4056 "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
4055 - "time": "2017-03-03T06:23:57+00:00" 4057 + "time": "2017-03-03 06:23:57"
4056 }, 4058 },
4057 { 4059 {
4058 "name": "sebastian/resource-operations", 4060 "name": "sebastian/resource-operations",
@@ -4094,7 +4096,7 @@ @@ -4094,7 +4096,7 @@
4094 ], 4096 ],
4095 "description": "Provides a list of PHP built-in functions that operate on resources", 4097 "description": "Provides a list of PHP built-in functions that operate on resources",
4096 "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 4098 "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
4097 - "time": "2015-07-28T20:34:47+00:00" 4099 + "time": "2015-07-28 20:34:47"
4098 }, 4100 },
4099 { 4101 {
4100 "name": "sebastian/version", 4102 "name": "sebastian/version",
@@ -4137,7 +4139,7 @@ @@ -4137,7 +4139,7 @@
4137 ], 4139 ],
4138 "description": "Library that helps with managing the version number of Git-hosted PHP projects", 4140 "description": "Library that helps with managing the version number of Git-hosted PHP projects",
4139 "homepage": "https://github.com/sebastianbergmann/version", 4141 "homepage": "https://github.com/sebastianbergmann/version",
4140 - "time": "2016-10-03T07:35:21+00:00" 4142 + "time": "2016-10-03 07:35:21"
4141 }, 4143 },
4142 { 4144 {
4143 "name": "stecman/symfony-console-completion", 4145 "name": "stecman/symfony-console-completion",
@@ -4182,20 +4184,20 @@ @@ -4182,20 +4184,20 @@
4182 } 4184 }
4183 ], 4185 ],
4184 "description": "Automatic BASH completion for Symfony Console Component based applications.", 4186 "description": "Automatic BASH completion for Symfony Console Component based applications.",
4185 - "time": "2016-02-24T05:08:54+00:00" 4187 + "time": "2016-02-24 05:08:54"
4186 }, 4188 },
4187 { 4189 {
4188 "name": "symfony/browser-kit", 4190 "name": "symfony/browser-kit",
4189 - "version": "v3.3.4", 4191 + "version": "v3.3.5",
4190 "source": { 4192 "source": {
4191 "type": "git", 4193 "type": "git",
4192 "url": "https://github.com/symfony/browser-kit.git", 4194 "url": "https://github.com/symfony/browser-kit.git",
4193 - "reference": "3a4435e79a8401746e8525e98039199d0924b4e5" 4195 + "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0"
4194 }, 4196 },
4195 "dist": { 4197 "dist": {
4196 "type": "zip", 4198 "type": "zip",
4197 - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3a4435e79a8401746e8525e98039199d0924b4e5",  
4198 - "reference": "3a4435e79a8401746e8525e98039199d0924b4e5", 4199 + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0",
  4200 + "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0",
4199 "shasum": "" 4201 "shasum": ""
4200 }, 4202 },
4201 "require": { 4203 "require": {
@@ -4239,11 +4241,11 @@ @@ -4239,11 +4241,11 @@
4239 ], 4241 ],
4240 "description": "Symfony BrowserKit Component", 4242 "description": "Symfony BrowserKit Component",
4241 "homepage": "https://symfony.com", 4243 "homepage": "https://symfony.com",
4242 - "time": "2017-06-24T09:29:48+00:00" 4244 + "time": "2017-07-12 13:03:20"
4243 }, 4245 },
4244 { 4246 {
4245 "name": "symfony/console", 4247 "name": "symfony/console",
4246 - "version": "v3.3.4", 4248 + "version": "v3.3.5",
4247 "source": { 4249 "source": {
4248 "type": "git", 4250 "type": "git",
4249 "url": "https://github.com/symfony/console.git", 4251 "url": "https://github.com/symfony/console.git",
@@ -4308,11 +4310,11 @@ @@ -4308,11 +4310,11 @@
4308 ], 4310 ],
4309 "description": "Symfony Console Component", 4311 "description": "Symfony Console Component",
4310 "homepage": "https://symfony.com", 4312 "homepage": "https://symfony.com",
4311 - "time": "2017-07-03T13:19:36+00:00" 4313 + "time": "2017-07-03 13:19:36"
4312 }, 4314 },
4313 { 4315 {
4314 "name": "symfony/css-selector", 4316 "name": "symfony/css-selector",
4315 - "version": "v3.3.4", 4317 + "version": "v3.3.5",
4316 "source": { 4318 "source": {
4317 "type": "git", 4319 "type": "git",
4318 "url": "https://github.com/symfony/css-selector.git", 4320 "url": "https://github.com/symfony/css-selector.git",
@@ -4361,11 +4363,11 @@ @@ -4361,11 +4363,11 @@
4361 ], 4363 ],
4362 "description": "Symfony CssSelector Component", 4364 "description": "Symfony CssSelector Component",
4363 "homepage": "https://symfony.com", 4365 "homepage": "https://symfony.com",
4364 - "time": "2017-05-01T15:01:29+00:00" 4366 + "time": "2017-05-01 15:01:29"
4365 }, 4367 },
4366 { 4368 {
4367 "name": "symfony/debug", 4369 "name": "symfony/debug",
4368 - "version": "v3.3.4", 4370 + "version": "v3.3.5",
4369 "source": { 4371 "source": {
4370 "type": "git", 4372 "type": "git",
4371 "url": "https://github.com/symfony/debug.git", 4373 "url": "https://github.com/symfony/debug.git",
@@ -4417,11 +4419,11 @@ @@ -4417,11 +4419,11 @@
4417 ], 4419 ],
4418 "description": "Symfony Debug Component", 4420 "description": "Symfony Debug Component",
4419 "homepage": "https://symfony.com", 4421 "homepage": "https://symfony.com",
4420 - "time": "2017-07-05T13:02:37+00:00" 4422 + "time": "2017-07-05 13:02:37"
4421 }, 4423 },
4422 { 4424 {
4423 "name": "symfony/dom-crawler", 4425 "name": "symfony/dom-crawler",
4424 - "version": "v3.3.4", 4426 + "version": "v3.3.5",
4425 "source": { 4427 "source": {
4426 "type": "git", 4428 "type": "git",
4427 "url": "https://github.com/symfony/dom-crawler.git", 4429 "url": "https://github.com/symfony/dom-crawler.git",
@@ -4473,11 +4475,11 @@ @@ -4473,11 +4475,11 @@
4473 ], 4475 ],
4474 "description": "Symfony DomCrawler Component", 4476 "description": "Symfony DomCrawler Component",
4475 "homepage": "https://symfony.com", 4477 "homepage": "https://symfony.com",
4476 - "time": "2017-05-25T23:10:31+00:00" 4478 + "time": "2017-05-25 23:10:31"
4477 }, 4479 },
4478 { 4480 {
4479 "name": "symfony/event-dispatcher", 4481 "name": "symfony/event-dispatcher",
4480 - "version": "v3.3.4", 4482 + "version": "v3.3.5",
4481 "source": { 4483 "source": {
4482 "type": "git", 4484 "type": "git",
4483 "url": "https://github.com/symfony/event-dispatcher.git", 4485 "url": "https://github.com/symfony/event-dispatcher.git",
@@ -4536,11 +4538,11 @@ @@ -4536,11 +4538,11 @@
4536 ], 4538 ],
4537 "description": "Symfony EventDispatcher Component", 4539 "description": "Symfony EventDispatcher Component",
4538 "homepage": "https://symfony.com", 4540 "homepage": "https://symfony.com",
4539 - "time": "2017-06-09T14:53:08+00:00" 4541 + "time": "2017-06-09 14:53:08"
4540 }, 4542 },
4541 { 4543 {
4542 "name": "symfony/finder", 4544 "name": "symfony/finder",
4543 - "version": "v3.3.4", 4545 + "version": "v3.3.5",
4544 "source": { 4546 "source": {
4545 "type": "git", 4547 "type": "git",
4546 "url": "https://github.com/symfony/finder.git", 4548 "url": "https://github.com/symfony/finder.git",
@@ -4585,7 +4587,7 @@ @@ -4585,7 +4587,7 @@
4585 ], 4587 ],
4586 "description": "Symfony Finder Component", 4588 "description": "Symfony Finder Component",
4587 "homepage": "https://symfony.com", 4589 "homepage": "https://symfony.com",
4588 - "time": "2017-06-01T21:01:25+00:00" 4590 + "time": "2017-06-01 21:01:25"
4589 }, 4591 },
4590 { 4592 {
4591 "name": "symfony/polyfill-mbstring", 4593 "name": "symfony/polyfill-mbstring",
@@ -4644,11 +4646,11 @@ @@ -4644,11 +4646,11 @@
4644 "portable", 4646 "portable",
4645 "shim" 4647 "shim"
4646 ], 4648 ],
4647 - "time": "2017-06-09T14:24:12+00:00" 4649 + "time": "2017-06-09 14:24:12"
4648 }, 4650 },
4649 { 4651 {
4650 "name": "symfony/yaml", 4652 "name": "symfony/yaml",
4651 - "version": "v3.3.4", 4653 + "version": "v3.3.5",
4652 "source": { 4654 "source": {
4653 "type": "git", 4655 "type": "git",
4654 "url": "https://github.com/symfony/yaml.git", 4656 "url": "https://github.com/symfony/yaml.git",
@@ -4699,7 +4701,7 @@ @@ -4699,7 +4701,7 @@
4699 ], 4701 ],
4700 "description": "Symfony Yaml Component", 4702 "description": "Symfony Yaml Component",
4701 "homepage": "https://symfony.com", 4703 "homepage": "https://symfony.com",
4702 - "time": "2017-06-15T12:58:50+00:00" 4704 + "time": "2017-06-15 12:58:50"
4703 }, 4705 },
4704 { 4706 {
4705 "name": "theseer/tokenizer", 4707 "name": "theseer/tokenizer",
@@ -4739,7 +4741,7 @@ @@ -4739,7 +4741,7 @@
4739 } 4741 }
4740 ], 4742 ],
4741 "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4743 "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4742 - "time": "2017-04-07T12:08:54+00:00" 4744 + "time": "2017-04-07 12:08:54"
4743 }, 4745 },
4744 { 4746 {
4745 "name": "webmozart/assert", 4747 "name": "webmozart/assert",
@@ -4789,7 +4791,7 @@ @@ -4789,7 +4791,7 @@
4789 "check", 4791 "check",
4790 "validate" 4792 "validate"
4791 ], 4793 ],
4792 - "time": "2016-11-23T20:04:58+00:00" 4794 + "time": "2016-11-23 20:04:58"
4793 }, 4795 },
4794 { 4796 {
4795 "name": "yiisoft/yii2-debug", 4797 "name": "yiisoft/yii2-debug",
@@ -4836,7 +4838,7 @@ @@ -4836,7 +4838,7 @@
4836 "debugger", 4838 "debugger",
4837 "yii2" 4839 "yii2"
4838 ], 4840 ],
4839 - "time": "2017-02-21T10:30:50+00:00" 4841 + "time": "2017-02-21 10:30:50"
4840 }, 4842 },
4841 { 4843 {
4842 "name": "yiisoft/yii2-faker", 4844 "name": "yiisoft/yii2-faker",
@@ -4883,7 +4885,7 @@ @@ -4883,7 +4885,7 @@
4883 "faker", 4885 "faker",
4884 "yii2" 4886 "yii2"
4885 ], 4887 ],
4886 - "time": "2015-03-01T06:22:44+00:00" 4888 + "time": "2015-03-01 06:22:44"
4887 }, 4889 },
4888 { 4890 {
4889 "name": "yiisoft/yii2-gii", 4891 "name": "yiisoft/yii2-gii",
@@ -4936,7 +4938,7 @@ @@ -4936,7 +4938,7 @@
4936 "gii", 4938 "gii",
4937 "yii2" 4939 "yii2"
4938 ], 4940 ],
4939 - "time": "2016-03-18T14:09:46+00:00" 4941 + "time": "2016-03-18 14:09:46"
4940 } 4942 }
4941 ], 4943 ],
4942 "aliases": [], 4944 "aliases": [],
frontend/controllers/PageController.php
@@ -43,6 +43,7 @@ @@ -43,6 +43,7 @@
43 [ 43 [
44 'model' => $model, 44 'model' => $model,
45 'pages' => $pages, 45 'pages' => $pages,
  46 + 'images' => $model->getImages(),
46 ] 47 ]
47 ); 48 );
48 } 49 }
frontend/controllers/SiteController.php
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 use common\models\Order; 5 use common\models\Order;
6 use common\models\Settings; 6 use common\models\Settings;
7 use Yii; 7 use Yii;
  8 + use yii\swiftmailer\Mailer;
8 use yii\web\BadRequestHttpException; 9 use yii\web\BadRequestHttpException;
9 use yii\web\Controller; 10 use yii\web\Controller;
10 use yii\filters\VerbFilter; 11 use yii\filters\VerbFilter;
@@ -102,11 +103,34 @@ @@ -102,11 +103,34 @@
102 public function actionFeedback() 103 public function actionFeedback()
103 { 104 {
104 Yii::$app->response->format = Response::FORMAT_JSON; 105 Yii::$app->response->format = Response::FORMAT_JSON;
  106 +
  107 + /**
  108 + * @var Mailer $mailer
  109 + */
  110 + $mailer = \Yii::$app->get('smtpmailer');
  111 + $settings = Settings::getInstance();
  112 +
105 if (empty( Yii::$app->request->post() )) { 113 if (empty( Yii::$app->request->post() )) {
106 throw new BadRequestHttpException(); 114 throw new BadRequestHttpException();
107 } else { 115 } else {
108 $model = new Order(); 116 $model = new Order();
109 if ($model->load(Yii::$app->request->post()) && $model->save()) { 117 if ($model->load(Yii::$app->request->post()) && $model->save()) {
  118 +
  119 + try {
  120 + $mailer->compose(
  121 + 'feedback',
  122 + [
  123 + 'model' => $model,
  124 + ]
  125 + )
  126 + ->setFrom('artbox@domain.com')
  127 + ->setTo($settings->email)
  128 + ->setSubject(\Yii::t('app', 'Feedback'))
  129 + ->send();
  130 + } catch (\Error $error) {
  131 + // Do something on error
  132 + }
  133 +
110 return [ 134 return [
111 'success' => true, 135 'success' => true,
112 'message' => 'Success message', 136 'message' => 'Success message',
frontend/views/layouts/main.php
@@ -9,13 +9,15 @@ @@ -9,13 +9,15 @@
9 use artbox\core\helpers\ImageHelper; 9 use artbox\core\helpers\ImageHelper;
10 use artbox\core\models\Feedback; 10 use artbox\core\models\Feedback;
11 use artbox\core\models\Page; 11 use artbox\core\models\Page;
  12 + use artbox\core\models\PageCategory;
12 use artbox\core\models\User; 13 use artbox\core\models\User;
13 use common\models\Settings; 14 use common\models\Settings;
14 use frontend\assets\AppAsset; 15 use frontend\assets\AppAsset;
15 - use noam148\imagemanager\models\ImageManager; 16 + use artbox\core\components\imagemanager\models\ImageManager;
16 use yii\bootstrap\ActiveForm; 17 use yii\bootstrap\ActiveForm;
17 use yii\bootstrap\Nav; 18 use yii\bootstrap\Nav;
18 use yii\bootstrap\Html; 19 use yii\bootstrap\Html;
  20 + use yii\db\ActiveQuery;
19 use yii\helpers\Json; 21 use yii\helpers\Json;
20 use yii\helpers\Url; 22 use yii\helpers\Url;
21 use yii\web\View; 23 use yii\web\View;
@@ -30,12 +32,22 @@ @@ -30,12 +32,22 @@
30 $default_controller = Yii::$app->defaultRoute; 32 $default_controller = Yii::$app->defaultRoute;
31 $isHome = ( ( $controller->id === $default_controller ) && ( $controller->action->id === $controller->defaultAction ) ) ? true : false; 33 $isHome = ( ( $controller->id === $default_controller ) && ( $controller->action->id === $controller->defaultAction ) ) ? true : false;
32 /** 34 /**
33 - * @var Page[] $pages 35 + * @var PageCategory[] $pageCategories
34 */ 36 */
35 - $pages = Page::find()  
36 - ->where([ 'in_menu' => true ])  
37 - ->with('lang.alias')  
38 - ->all(); 37 + $pageCategories = PageCategory::find()
  38 + ->with(
  39 + [
  40 + 'lang',
  41 + 'pages' => function (ActiveQuery $query) {
  42 + $query->with('lang.alias')
  43 + ->where(['in_menu' => true])
  44 + ->orderBy([ 'sort' => SORT_ASC ]);
  45 + },
  46 + ]
  47 + )
  48 + ->where([ 'status' => true ])
  49 + ->orderBy([ 'sort' => SORT_ASC ])
  50 + ->all();
39 $logo = null; 51 $logo = null;
40 if ($settings->logo) { 52 if ($settings->logo) {
41 $logo_img = ImageManager::findOne($settings->logo); 53 $logo_img = ImageManager::findOne($settings->logo);
@@ -260,41 +272,38 @@ _________________________________________________________ --&gt; @@ -260,41 +272,38 @@ _________________________________________________________ --&gt;
260 272
261 <div class="navbar-collapse collapse" id="navigation"> 273 <div class="navbar-collapse collapse" id="navigation">
262 <?php 274 <?php
263 - $pagesLinks = [];  
264 - foreach ($pages as $page) {  
265 - $route = [  
266 - 'page/view',  
267 - 'id' => $page->id,  
268 - ];  
269 - if (!empty($page->lang->alias) && !empty($page->lang->alias->route)) {  
270 - $route = Json::decode($page->lang->alias->route); 275 + $items = [];
  276 + $items[] = [
  277 + 'label' => \Yii::t('app', 'Home'),
  278 + 'url' => [ 'site/index' ],
  279 + ];
  280 + foreach ($pageCategories as $category) {
  281 + if (empty($category->pages)) {
  282 + continue;
271 } 283 }
272 - $pagesLinks[] = [  
273 - 'label' => $page->lang->title,  
274 - 'url' => $route, 284 + $pages = [];
  285 + foreach ($category->pages as $page) {
  286 + $pages[] = [
  287 + 'label' => $page->lang->title,
  288 + 'url' => Url::to(['page/view','alias' => $page->lang->alias]),
  289 + ];
  290 + }
  291 + $items[] = [
  292 + 'label' => $category->lang->title,
  293 + 'items' => $pages,
275 ]; 294 ];
276 } 295 }
  296 + $items[] = [
  297 + 'label' => \Yii::t('app', 'Contatcs'),
  298 + 'url' => [ 'site/contact' ],
  299 + ];
  300 + $items[] = [
  301 + 'label' => \Yii::t('app', 'About'),
  302 + 'url' => [ 'site/about' ],
  303 + ];
277 echo Nav::widget( 304 echo Nav::widget(
278 [ 305 [
279 - 'items' => [  
280 - [  
281 - 'label' => \Yii::t('app', 'Главная'),  
282 - 'url' => [ 'site/index' ],  
283 - ],  
284 - [  
285 - 'label' => \Yii::t('app', 'Наши предложения'),  
286 - 'items' => $pagesLinks,  
287 - 'visible' => count($pagesLinks),  
288 - ],  
289 - [  
290 - 'label' => \Yii::t('app', 'Контакты'),  
291 - 'url' => [ 'site/contact' ],  
292 - ],  
293 - [  
294 - 'label' => \Yii::t('app', 'О нас'),  
295 - 'url' => [ '/page/view', 'id' => 5 ],  
296 - ],  
297 - ], 306 + 'items' => $items,
298 'options' => [ 307 'options' => [
299 'class' => 'nav navbar-nav navbar-right', 308 'class' => 'nav navbar-nav navbar-right',
300 ], 309 ],
frontend/views/page/view.php
1 <?php 1 <?php
2 use artbox\core\components\SeoComponent; 2 use artbox\core\components\SeoComponent;
  3 + use artbox\core\models\Image;
3 use artbox\core\models\Page; 4 use artbox\core\models\Page;
4 use yii\helpers\Html; 5 use yii\helpers\Html;
5 use yii\web\View; 6 use yii\web\View;
@@ -9,77 +10,94 @@ @@ -9,77 +10,94 @@
9 * @var Page $model 10 * @var Page $model
10 * @var Page[] $pages 11 * @var Page[] $pages
11 * @var SeoComponent $seo 12 * @var SeoComponent $seo
  13 + * @var Image[] $images
12 */ 14 */
13 $seo = \Yii::$app->get('seo'); 15 $seo = \Yii::$app->get('seo');
14 $this->params[ 'breadcrumbs' ][] = $seo->title; 16 $this->params[ 'breadcrumbs' ][] = $seo->title;
15 ?> 17 ?>
16 18
17 <div id="content"> 19 <div id="content">
18 - <div class="container">  
19 -  
20 - <div class="row">  
21 -  
22 - <!-- *** LEFT COLUMN ***  
23 - _________________________________________________________ -->  
24 -  
25 - <div class="col-md-9 clearfix">  
26 - <section>  
27 - <div id="text-page">  
28 -  
29 - <?= $model->lang->body ?>  
30 -  
31 - </div>  
32 - </section>  
33 -  
34 - </div>  
35 - <!-- /.col-md-9 -->  
36 -  
37 - <!-- *** LEFT COLUMN END *** -->  
38 -  
39 - <!-- *** RIGHT COLUMN ***  
40 - _________________________________________________________ -->  
41 -  
42 - <div class="col-sm-3">  
43 - <!-- *** PAGES MENU ***  
44 - _________________________________________________________ -->  
45 - <div class="panel panel-default sidebar-menu">  
46 -  
47 - <div class="panel-heading">  
48 - <h3 class="panel-title">Наши предложения</h3>  
49 - </div>  
50 -  
51 - <div class="panel-body">  
52 - <ul class="nav nav-pills nav-stacked">  
53 - <?php  
54 - foreach ($pages as $page) {  
55 - echo Html::tag(  
56 - 'li',  
57 - Html::a(  
58 - $page->lang->title,  
59 - [  
60 - 'page/view',  
61 - 'id' => $page->id,  
62 - ]  
63 - )  
64 - );  
65 - }  
66 - ?>  
67 - </ul>  
68 - 20 + <div class="container">
  21 +
  22 + <div class="row">
  23 +
  24 + <!-- *** LEFT COLUMN ***
  25 +_________________________________________________________ -->
  26 +
  27 + <div class="col-md-9 clearfix">
  28 +
  29 + <?php if (!empty($images)) { ?>
  30 + <section>
  31 + <div class="project owl-carousel">
  32 +
  33 + <?php foreach ($images as $image) { ?>
  34 + <div class="item">
  35 + <img class="img-responsive" src="<?= $image->getUrl() ?>" alt="">
69 </div> 36 </div>
70 - </div>  
71 -  
72 - <!-- *** PAGES MENU END *** -->  
73 - </div>  
74 - <!-- /.col-md-3 -->  
75 -  
76 - <!-- *** RIGHT COLUMN END *** -->  
77 - 37 + <?php } ?>
  38 +
  39 + </div>
  40 + <!-- /.project owl-slider -->
  41 + </section>
  42 + <?php } ?>
78 43
  44 + <section>
  45 + <div id="text-page">
  46 +
  47 + <?= $model->lang->body ?>
  48 +
  49 + </div>
  50 + </section>
  51 +
  52 + </div>
  53 + <!-- /.col-md-9 -->
  54 +
  55 + <!-- *** LEFT COLUMN END *** -->
  56 +
  57 + <!-- *** RIGHT COLUMN ***
  58 + _________________________________________________________ -->
  59 +
  60 + <div class="col-sm-3">
  61 + <!-- *** PAGES MENU ***
  62 +_________________________________________________________ -->
  63 + <div class="panel panel-default sidebar-menu">
  64 +
  65 + <div class="panel-heading">
  66 + <h3 class="panel-title">Наши предложения</h3>
  67 + </div>
  68 +
  69 + <div class="panel-body">
  70 + <ul class="nav nav-pills nav-stacked">
  71 + <?php
  72 + foreach ($pages as $page) {
  73 + echo Html::tag(
  74 + 'li',
  75 + Html::a(
  76 + $page->lang->title,
  77 + [
  78 + 'page/view',
  79 + 'id' => $page->id,
  80 + ]
  81 + )
  82 + );
  83 + }
  84 + ?>
  85 + </ul>
  86 +
  87 + </div>
79 </div> 88 </div>
80 - <!-- /.row --> 89 +
  90 + <!-- *** PAGES MENU END *** -->
  91 + </div>
  92 + <!-- /.col-md-3 -->
  93 +
  94 + <!-- *** RIGHT COLUMN END *** -->
  95 +
81 96
82 </div> 97 </div>
83 - <!-- /.container --> 98 + <!-- /.row -->
  99 +
  100 + </div>
  101 + <!-- /.container -->
84 </div> 102 </div>
85 <!-- /#content --> 103 <!-- /#content -->