Commit 63f22d739f34a70d6204dd305adc1f1aa52b28fc

Authored by Yarik
2 parents 19296686 c8905ae2

Merge remote-tracking branch 'origin/master'

Showing 265 changed files with 605 additions and 358 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 265 files are displayed.

.bowerrc 100644 → 100755
.gitignore 100644 → 100755
.htaccess 100644 → 100755
CHANGELOG.md 100644 → 100755
Initializer.php 100644 → 100755
LICENSE.md 100644 → 100755
README.md 100644 → 100755
backend/assets/AnalyticsAsset.php 100644 → 100755
@@ -15,10 +15,12 @@ @@ -15,10 +15,12 @@
15 public $baseUrl = '@web'; 15 public $baseUrl = '@web';
16 public $css = []; 16 public $css = [];
17 public $js = [ 17 public $js = [
  18 + 'js/jquery.animateNumber.js',
18 'js/analytics.js', 19 'js/analytics.js',
19 ]; 20 ];
20 public $depends = [ 21 public $depends = [
21 - 'speixoto\amcharts\AmChartAsset', 22 + 'artbox\core\assets\ArtboxAmChartAsset',
  23 + 'backend\assets\AppAsset',
22 ]; 24 ];
23 } 25 }
24 26
25 \ No newline at end of file 27 \ No newline at end of file
backend/controllers/AjaxController.php 0 → 100755
  1 +<?php
  2 +
  3 + namespace backend\controllers;
  4 +
  5 + use backend\models\Analytics;
  6 + use common\models\Settings;
  7 + use yii\filters\VerbFilter;
  8 + use yii\web\Controller;
  9 + use yii\web\Response;
  10 +
  11 + class AjaxController extends Controller
  12 + {
  13 + public $enableCsrfValidation = false;
  14 +
  15 + public function behaviors()
  16 + {
  17 + return [
  18 + 'verbs' => [
  19 + 'class' => VerbFilter::className(),
  20 + 'actions' => [
  21 + 'analytics' => [ 'post' ],
  22 + ],
  23 + ],
  24 + ];
  25 + }
  26 +
  27 + public function actionAnalytics()
  28 + {
  29 + \Yii::$app->response->format = Response::FORMAT_JSON;
  30 +
  31 + $settings = Settings::getInstance();
  32 +
  33 + $analytics = new Analytics(
  34 + [
  35 + 'viewId' => $settings->analytics_key,
  36 + ]
  37 + );
  38 + $data = $analytics->generateData();
  39 +
  40 + $browsers = $data[ 'table' ][ 0 ];
  41 + arsort($browsers);
  42 +
  43 + $cityes = $data[ 'table' ][ 1 ];
  44 + arsort($cityes);
  45 +
  46 + $countries = $data[ 'table' ][ 2 ];
  47 + arsort($countries);
  48 +
  49 + return [
  50 + 'plot' => $data[ 'plot' ],
  51 + 'pie' => [
  52 + [
  53 + "category" => "New Visitor",
  54 + "column-1" => round(intval($data[ 'new' ]), 2),
  55 + ],
  56 + [
  57 + "category" => "Returning Visitor",
  58 + "column-1" => 100 - round(intval($data[ 'new' ]), 2),
  59 + ],
  60 + ],
  61 + 'browsers' => $this->renderPartial(
  62 + '_table',
  63 + [
  64 + 'data' => $browsers,
  65 + 'name' => 'Browser',
  66 + ]
  67 + ),
  68 + 'cityes' => $this->renderPartial(
  69 + '_table',
  70 + [
  71 + 'data' => $cityes,
  72 + 'name' => 'City',
  73 + ]
  74 + ),
  75 + 'countries' => $this->renderPartial(
  76 + '_table',
  77 + [
  78 + 'data' => $countries,
  79 + 'name' => 'Country',
  80 + ]
  81 + ),
  82 + 'sessions' => (int) $data[ 'sessions' ],
  83 + 'users' => (int) $data[ 'users' ],
  84 + 'views' => (int) $data[ 'views' ],
  85 + 'newusers' => round(intval($data[ 'new' ]), 2),
  86 + ];
  87 + }
  88 +
  89 + }
0 \ No newline at end of file 90 \ No newline at end of file
backend/controllers/SiteController.php
1 <?php 1 <?php
2 namespace backend\controllers; 2 namespace backend\controllers;
3 3
4 - use backend\models\Analytics;  
5 use common\models\Settings; 4 use common\models\Settings;
6 use Yii; 5 use Yii;
7 use yii\web\Controller; 6 use yii\web\Controller;
8 use yii\filters\VerbFilter; 7 use yii\filters\VerbFilter;
9 use yii\filters\AccessControl; 8 use yii\filters\AccessControl;
10 use common\models\LoginForm; 9 use common\models\LoginForm;
11 - 10 +
12 /** 11 /**
13 * Site controller 12 * Site controller
14 */ 13 */
@@ -34,7 +33,7 @@ @@ -34,7 +33,7 @@
34 'actions' => [ 33 'actions' => [
35 'logout', 34 'logout',
36 'index', 35 'index',
37 - 'analytic', 36 + 'analytics',
38 ], 37 ],
39 'allow' => true, 38 'allow' => true,
40 'roles' => [ '@' ], 39 'roles' => [ '@' ],
@@ -44,7 +43,8 @@ @@ -44,7 +43,8 @@
44 'verbs' => [ 43 'verbs' => [
45 'class' => VerbFilter::className(), 44 'class' => VerbFilter::className(),
46 'actions' => [ 45 'actions' => [
47 - 'logout' => [ 'post' ], 46 + 'logout' => [ 'post' ],
  47 + 'analytics' => [ 'post' ],
48 ], 48 ],
49 ], 49 ],
50 ]; 50 ];
@@ -72,33 +72,9 @@ @@ -72,33 +72,9 @@
72 $settings = Settings::getInstance(); 72 $settings = Settings::getInstance();
73 73
74 if (empty($settings->analytics_key)) { 74 if (empty($settings->analytics_key)) {
75 - return $this->render('index'); 75 + return $this->render('instruction');
76 } else { 76 } else {
77 - $analytics = new Analytics(  
78 - [  
79 - 'viewId' => $settings->analytics_key,  
80 - ]  
81 - );  
82 - $data = $analytics->generateData();  
83 -  
84 - $browsers = $data[ 'table' ][ 0 ];  
85 - arsort($browsers);  
86 -  
87 - $cityes = $data[ 'table' ][ 1 ];  
88 - arsort($cityes);  
89 -  
90 - $countries = $data[ 'table' ][ 2 ];  
91 - arsort($countries);  
92 -  
93 - return $this->render(  
94 - 'analytics',  
95 - [  
96 - 'data' => $data,  
97 - 'browsers' => $browsers,  
98 - 'cityes' => $cityes,  
99 - 'countries' => $countries,  
100 - ]  
101 - ); 77 + return $this->render('index');
102 } 78 }
103 } 79 }
104 80
@@ -137,9 +113,4 @@ @@ -137,9 +113,4 @@
137 113
138 return $this->goHome(); 114 return $this->goHome();
139 } 115 }
140 -  
141 - public function actionAnalytic()  
142 - {  
143 - return $this->render('analytic');  
144 - }  
145 } 116 }
backend/models/Analytics.php 100644 → 100755
backend/views/site/_table.php renamed to backend/views/ajax/_table.php 100644 → 100755
backend/views/settings/_codes_tab.php 100644 → 100755
backend/views/settings/_contact_tab.php 100644 → 100755
backend/views/settings/_main_tab.php 100644 → 100755
backend/views/settings/_social_tab.php 100644 → 100755
backend/views/site/analytics.php deleted
1 -<?php  
2 - /**  
3 - * @var View $this  
4 - * @var array $data  
5 - * @var array $browsers  
6 - * @var array $cityes  
7 - * @var array $countries  
8 - */  
9 -  
10 - use speixoto\amcharts\Widget;  
11 - use yii\bootstrap\Tabs;  
12 - use yii\web\View;  
13 - use yiister\gentelella\widgets\Panel;  
14 -  
15 -?>  
16 -  
17 -<div class="row">  
18 - <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">  
19 - <div class="tile-stats">  
20 - <div class="icon"><i class="fa fa-clock-o"></i>  
21 - </div>  
22 - <div class="count"><?= $data[ 'sessions' ] ?></div>  
23 -  
24 - <h3>Sessions</h3>  
25 - <p>Lorem ipsum psdea itgum rixt.</p>  
26 - </div>  
27 - </div>  
28 - <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">  
29 - <div class="tile-stats">  
30 - <div class="icon"><i class="fa fa-user"></i>  
31 - </div>  
32 - <div class="count"><?= $data[ 'users' ] ?></div>  
33 -  
34 - <h3>Users</h3>  
35 - <p>Lorem ipsum psdea itgum rixt.</p>  
36 - </div>  
37 - </div>  
38 - <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">  
39 - <div class="tile-stats">  
40 - <div class="icon"><i class="fa fa-eye"></i>  
41 - </div>  
42 - <div class="count"><?= $data[ 'views' ] ?></div>  
43 -  
44 - <h3>Page views</h3>  
45 - <p>Lorem ipsum psdea itgum rixt.</p>  
46 - </div>  
47 - </div>  
48 - <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">  
49 - <div class="tile-stats">  
50 - <div class="icon"><i class="fa fa-plus"></i>  
51 - </div>  
52 - <div class="count"><?= round(intval($data[ 'new' ]), 2) ?> %</div>  
53 -  
54 - <h3>New sessions</h3>  
55 - <p>Lorem ipsum psdea itgum rixt.</p>  
56 - </div>  
57 - </div>  
58 -</div>  
59 -  
60 -<div class="row">  
61 - <div class="col-md-12">  
62 - <?php $panel = Panel::begin(  
63 - [  
64 - 'header' => 'Analytics',  
65 - ]  
66 - ); ?>  
67 -  
68 - <?php  
69 - $chartConfiguration = [  
70 - 'type' => 'serial',  
71 - 'dataProvider' => $data[ 'plot' ],  
72 - 'categoryField' => 'day',  
73 - 'categoryAxis' => [  
74 - 'labelFrequency' => 5,  
75 - ],  
76 - 'graphs' => [  
77 - [  
78 - "balloon" => [  
79 - "drop" => true,  
80 - "adjustBorderColor" => false,  
81 - "color" => "#ffffff",  
82 - ],  
83 - "bullet" => "round",  
84 - "bulletBorderAlpha" => 1,  
85 - "bulletColor" => "#FFFFFF",  
86 - "bulletSize" => 5,  
87 - "hideBulletsCount" => 50,  
88 - "lineThickness" => 2,  
89 - "title" => "red line",  
90 - "useLineColorForBulletBorder" => true,  
91 - "valueField" => "users",  
92 - "balloonText" => "<span style='font-size:18px;'>Users: [[users]]</span>",  
93 - "lineColor" => '#9ABCC3',  
94 - ],  
95 - [  
96 - "balloon" => [  
97 - "drop" => true,  
98 - "adjustBorderColor" => false,  
99 - "color" => "#ffffff",  
100 - ],  
101 - "bullet" => "round",  
102 - "bulletBorderAlpha" => 1,  
103 - "bulletColor" => "#FFFFFF",  
104 - "bulletSize" => 5,  
105 - "hideBulletsCount" => 50,  
106 - "lineThickness" => 2,  
107 - "title" => "red line",  
108 - "useLineColorForBulletBorder" => true,  
109 - "valueField" => "sessions",  
110 - "balloonText" => "<span style='font-size:18px;'>Sessions: [[sessions]]</span>",  
111 - "lineColor" => '#A8E3D6',  
112 - ],  
113 - ],  
114 - 'chartCursor' => [  
115 - "pan" => true,  
116 - "valueLineEnabled" => true,  
117 - "valueLineBalloonEnabled" => true,  
118 - "cursorAlpha" => 1,  
119 - "cursorColor" => "#1ABB9C",  
120 - "limitToGraph" => "g1",  
121 - "valueLineAlpha" => 0.2,  
122 - "valueZoomable" => true,  
123 - ],  
124 - ];  
125 -  
126 - echo Widget::widget(  
127 - [  
128 - 'chartConfiguration' => $chartConfiguration,  
129 - 'width' => '100%',  
130 - ]  
131 - );  
132 - ?>  
133 -  
134 - <?php $panel::end(); ?>  
135 -  
136 - </div>  
137 -</div>  
138 -  
139 -<div class="row">  
140 - <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">  
141 - <?php $panel = Panel::begin(  
142 - [  
143 - 'header' => 'Analytics',  
144 - ]  
145 - ); ?>  
146 -  
147 - <?php  
148 - $chartConfiguration = [  
149 - "type" => "pie",  
150 - "titleField" => "category",  
151 - "valueField" => "column-1",  
152 - "dataProvider" => [  
153 - [  
154 - "category" => "New Visitor",  
155 - "column-1" => round(intval($data[ 'new' ]), 2),  
156 - ],  
157 - [  
158 - "category" => "Returning Visitor",  
159 - "column-1" => 100 - round(intval($data[ 'new' ]), 2),  
160 - ],  
161 - ],  
162 - "colors" => [  
163 - "#A8E3D6",  
164 - "#9ABCC3",  
165 - ],  
166 - ];  
167 -  
168 - echo Widget::widget(  
169 - [  
170 - 'chartConfiguration' => $chartConfiguration,  
171 - 'width' => '100%',  
172 - ]  
173 - );  
174 - ?>  
175 -  
176 - <?php $panel::end(); ?>  
177 - </div>  
178 -  
179 - <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">  
180 -  
181 - <?php $panel = Panel::begin(  
182 - [  
183 - 'header' => 'Analytics',  
184 - ]  
185 - ); ?>  
186 -  
187 - <?php  
188 - echo Tabs::widget(  
189 - [  
190 - 'options' => [  
191 - 'class' => 'bar_tabs',  
192 - ],  
193 - 'items' => [  
194 - [  
195 - 'label' => 'Browsers',  
196 - 'content' => $this->render(  
197 - '_table',  
198 - [  
199 - 'data' => $browsers,  
200 - 'name' => 'Browser',  
201 - ]  
202 - ),  
203 - 'active' => true,  
204 - ],  
205 - [  
206 - 'label' => 'Cities',  
207 - 'content' => $this->render(  
208 - '_table',  
209 - [  
210 - 'data' => $cityes,  
211 - 'name' => 'City',  
212 - ]  
213 - ),  
214 - ],  
215 - [  
216 - 'label' => 'Countries',  
217 - 'content' => $this->render(  
218 - '_table',  
219 - [  
220 - 'data' => $countries,  
221 - 'name' => 'Country',  
222 - ]  
223 - ),  
224 - ],  
225 - ],  
226 - ]  
227 - );  
228 -  
229 - ?>  
230 -  
231 - <?php $panel::end(); ?>  
232 -  
233 - </div>  
234 -  
235 -</div>  
236 -  
backend/views/site/index.php
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 */ 5 */
6 6
7 use backend\assets\AnalyticsAsset; 7 use backend\assets\AnalyticsAsset;
  8 + use yii\bootstrap\Tabs;
8 use yii\web\View; 9 use yii\web\View;
9 use yiister\gentelella\widgets\Panel; 10 use yiister\gentelella\widgets\Panel;
10 11
@@ -12,13 +13,117 @@ @@ -12,13 +13,117 @@
12 13
13 AnalyticsAsset::register($this); 14 AnalyticsAsset::register($this);
14 ?> 15 ?>
  16 +<div class="animated yt-loader"></div>
15 17
16 -<?php $panel = Panel::begin(  
17 - [  
18 - 'header' => 'Hello!',  
19 - ]  
20 -); ?> 18 +<div class="row">
  19 + <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
  20 + <div class="tile-stats">
  21 + <div class="icon"><i class="fa fa-clock-o"></i>
  22 + </div>
  23 +
  24 + <div class="count" id="sessions">0</div>
  25 +
  26 + <h3>Sessions</h3>
  27 + <p>Lorem ipsum psdea itgum rixt.</p>
  28 + </div>
  29 + </div>
  30 + <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
  31 + <div class="tile-stats">
  32 + <div class="icon"><i class="fa fa-user"></i>
  33 + </div>
  34 +
  35 + <div class="count" id="users">0</div>
  36 +
  37 + <h3>Users</h3>
  38 + <p>Lorem ipsum psdea itgum rixt.</p>
  39 + </div>
  40 + </div>
  41 + <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
  42 + <div class="tile-stats">
  43 + <div class="icon"><i class="fa fa-eye"></i>
  44 + </div>
  45 +
  46 + <div class="count" id="views">0</div>
  47 +
  48 + <h3>Page views</h3>
  49 + <p>Lorem ipsum psdea itgum rixt.</p>
  50 + </div>
  51 + </div>
  52 + <div class="animated flipInY col-lg-3 col-md-3 col-sm-6 col-xs-12">
  53 + <div class="tile-stats">
  54 + <div class="icon"><i class="fa fa-plus"></i>
  55 + </div>
  56 +
  57 + <div class="count" id="newusers">0</div>
  58 +
  59 + <h3>New sessions</h3>
  60 + <p>Lorem ipsum psdea itgum rixt.</p>
  61 + </div>
  62 + </div>
  63 +</div>
21 64
22 -<div id="chart"></div> 65 +<div class="row">
  66 + <div class="col-md-12">
  67 + <?php $panel = Panel::begin(
  68 + [
  69 + 'header' => 'Analytic',
  70 + ]
  71 + ) ?>
  72 +
  73 + <div id="chartdiv" style="width: 100%;height: 500px"></div>
  74 +
  75 + <?php $panel::end(); ?>
  76 + </div>
  77 +</div>
23 78
24 -<?php $panel::end(); ?> 79 +<div class="row">
  80 + <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
  81 + <?php $panel = Panel::begin(
  82 + [
  83 + 'header' => 'Pie chart',
  84 + ]
  85 + ) ?>
  86 +
  87 + <div id="piediv" style="width: 100%;height: 400px"></div>
  88 +
  89 + <?php $panel::end(); ?>
  90 + </div>
  91 +
  92 + <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
  93 +
  94 + <?php $panel = Panel::begin(
  95 + [
  96 + 'header' => 'Some stats',
  97 + ]
  98 + ); ?>
  99 +
  100 + <?php
  101 + echo Tabs::widget(
  102 + [
  103 + 'options' => [
  104 + 'class' => 'bar_tabs',
  105 + ],
  106 + 'items' => [
  107 + [
  108 + 'label' => 'Browsers',
  109 + 'content' => '<div id="browsers"></div>',
  110 + 'active' => true,
  111 + ],
  112 + [
  113 + 'label' => 'Cities',
  114 + 'content' => '<div id="cities"></div>',
  115 + ],
  116 + [
  117 + 'label' => 'Countries',
  118 + 'content' => '<div id="countries"></div>',
  119 + ],
  120 + ],
  121 + ]
  122 + );
  123 +
  124 + ?>
  125 +
  126 + <?php $panel::end(); ?>
  127 +
  128 + </div>
  129 +</div>
backend/views/site/instruction.php 0 → 100755
  1 +<?php
  2 + /**
  3 + * @var View $this
  4 + * @var array $data
  5 + * @var array $browsers
  6 + * @var array $cityes
  7 + * @var array $countries
  8 + */
  9 +
  10 + use yii\web\View;
  11 + use yiister\gentelella\widgets\Panel;
  12 +
  13 +?>
  14 +
  15 +<div class="row">
  16 + <?php $panel = Panel::begin(
  17 + [
  18 + 'header' => 'Instruction',
  19 + ]
  20 + ) ?>
  21 + <div class="jumbotron">
  22 + <h1>Hello, world!</h1>
  23 + <p>This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p>
  24 + </div>
  25 + <?php $panel::end(); ?>
  26 +</div>
  27 +
backend/views/sitemap/index.php 100644 → 100755
backend/views/sitemap/update.php 100644 → 100755
backend/web/css/custom.css
@@ -4182,7 +4182,66 @@ ul.notifications { @@ -4182,7 +4182,66 @@ ul.notifications {
4182 .dataTables_length { float:none; } 4182 .dataTables_length { float:none; }
4183 } 4183 }
4184 4184
  4185 +.animated {
  4186 + -webkit-animation-duration: 5s;
  4187 + animation-duration: 5s;
  4188 + -webkit-animation-fill-mode: both;
  4189 + animation-fill-mode: both;
  4190 + -moz-user-select: none;
  4191 + -ms-user-select: none;
  4192 + -webkit-user-select: none;
  4193 +}
  4194 +
  4195 +.yt-loader {
  4196 + -webkit-animation-name: horizontalProgressBar;
  4197 + animation-name: horizontalProgressBar;
  4198 + -webkit-animation-timing-function: ease;
  4199 + animation-timing-function: ease;
  4200 + background: #1abb9c;
  4201 + height: 3px;
  4202 + left: 0;
  4203 + position: fixed;
  4204 + top: 0;
  4205 + width: 0%;
  4206 + z-index: 9999;
  4207 +}
  4208 +
  4209 +@keyframes horizontalProgressBar {
  4210 + 0% {
  4211 + width: 0%;
  4212 + }
  4213 + 25% {
  4214 + width: 22%;
  4215 + }
  4216 + 50% {
  4217 + width: 55%;
  4218 + }
  4219 + 75% {
  4220 + width: 83%;
  4221 + }
  4222 + 100% {
  4223 + width: 100%;
  4224 + }
  4225 +}
4185 4226
  4227 +@-webkit-keyframes horizontalProgressBar /* Safari and Chrome */
  4228 +{
  4229 + 0% {
  4230 + width: 0%;
  4231 + }
  4232 + 25% {
  4233 + width: 22%;
  4234 + }
  4235 + 50% {
  4236 + width: 55%;
  4237 + }
  4238 + 75% {
  4239 + width: 83%;
  4240 + }
  4241 + 100% {
  4242 + width: 100%;
  4243 + }
  4244 +}
4186 4245
4187 4246
4188 /* CSS3 Checkbox */ 4247 /* CSS3 Checkbox */
backend/web/js/analytics.js 100644 → 100755
1 -var chart = AmCharts.makeChart(  
2 - "chart", {  
3 - "type": "pie",  
4 - "dataProvider": [ 1 +$(
  2 + function() {
  3 + $.ajax(
5 { 4 {
6 - "country": "Lithuania",  
7 - "litres": 501.9  
8 - },  
9 - {  
10 - "country": "Czech Republic",  
11 - "litres": 301.9  
12 - },  
13 - {  
14 - "country": "Ireland",  
15 - "litres": 201.1  
16 - },  
17 - {  
18 - "country": "Germany",  
19 - "litres": 165.8  
20 - },  
21 - {  
22 - "country": "Australia",  
23 - "litres": 139.9  
24 - },  
25 - {  
26 - "country": "Austria",  
27 - "litres": 128.3  
28 - },  
29 - {  
30 - "country": "UK",  
31 - "litres": 99  
32 - },  
33 - {  
34 - "country": "Belgium",  
35 - "litres": 60  
36 - },  
37 - {  
38 - "country": "The Netherlands",  
39 - "litres": 50 5 + url: "/admin/ajax/analytics",
  6 + type: "POST",
  7 + success: function(data) {
  8 + // Replacing top data
  9 + $('#sessions')
  10 + .animateNumber({number: data.sessions}, 2000);
  11 + $('#users')
  12 + .animateNumber({number: data.users}, 2000);
  13 + $('#views')
  14 + .animateNumber({number: data.views}, 2000);
  15 + $('#newusers')
  16 + .animateNumber({number: data.newusers}, 2000);
  17 + // Building main chart
  18 + var chart = AmCharts.makeChart(
  19 + "chartdiv", {
  20 + "type": "serial",
  21 + 'dataProvider': data.plot,
  22 + 'categoryField': 'day',
  23 + 'categoryAxis': {
  24 + 'labelFrequency': 5
  25 + },
  26 + 'graphs': [
  27 + {
  28 + 'balloon': {
  29 + "drop": true,
  30 + "adjustBorderColor": false,
  31 + "color": "#ffffff"
  32 + },
  33 + "bullet": "round",
  34 + "bulletBorderAlpha": 1,
  35 + "bulletColor": "#FFFFFF",
  36 + "bulletSize": 5,
  37 + "hideBulletsCount": 50,
  38 + "lineThickness": 2,
  39 + "title": "red line",
  40 + "useLineColorForBulletBorder": true,
  41 + "valueField": "users",
  42 + "balloonText": "<span style='font-size:18px;'>Users: [[users]]</span>",
  43 + "lineColor": '#9ABCC3'
  44 + },
  45 + {
  46 + 'balloon': {
  47 + "drop": true,
  48 + "adjustBorderColor": false,
  49 + "color": "#ffffff"
  50 + },
  51 + "bullet": "round",
  52 + "bulletBorderAlpha": 1,
  53 + "bulletColor": "#FFFFFF",
  54 + "bulletSize": 5,
  55 + "hideBulletsCount": 50,
  56 + "lineThickness": 2,
  57 + "title": "red line",
  58 + "useLineColorForBulletBorder": true,
  59 + "valueField": "sessions",
  60 + "balloonText": "<span style='font-size:18px;'>Sessions: [[sessions]]</span>",
  61 + "lineColor": '#A8E3D6'
  62 + }
  63 + ],
  64 + 'chartCursor': {
  65 + "pan": true,
  66 + "valueLineEnabled": true,
  67 + "valueLineBalloonEnabled": true,
  68 + "cursorAlpha": 1,
  69 + "cursorColor": "#1ABB9C",
  70 + "limitToGraph": "g1",
  71 + "valueLineAlpha": 0.2,
  72 + "valueZoomable": true
  73 + }
  74 + }
  75 + );
  76 +
  77 + // Building pie chart
  78 + var pie = AmCharts.makeChart(
  79 + "piediv", {
  80 + "type": "pie",
  81 + 'dataProvider': data.pie,
  82 + "titleField": "category",
  83 + "valueField": "column-1",
  84 + 'colors': [
  85 + "#A8E3D6",
  86 + "#9ABCC3"
  87 + ]
  88 + }
  89 + );
  90 + // Replacing table stabs
  91 + $('#browsers')
  92 + .replaceWith(data.browsers);
  93 + $('#cities')
  94 + .replaceWith(data.cityes);
  95 + $('#countries')
  96 + .replaceWith(data.countries);
  97 + $('.yt-loader')
  98 + .remove();
  99 + }
40 } 100 }
41 - ],  
42 - "valueField": "litres",  
43 - "titleField": "country",  
44 - "balloon": {  
45 - "fixedPosition": true  
46 - },  
47 - "export": {  
48 - "enabled": true  
49 - } 101 + )
50 } 102 }
51 -);  
52 \ No newline at end of file 103 \ No newline at end of file
  104 +);
  105 +
backend/web/js/custom.js
@@ -5045,7 +5045,7 @@ if (typeof NProgress != &#39;undefined&#39;) { @@ -5045,7 +5045,7 @@ if (typeof NProgress != &#39;undefined&#39;) {
5045 init_daterangepicker_reservation(); 5045 init_daterangepicker_reservation();
5046 init_SmartWizard(); 5046 init_SmartWizard();
5047 init_EasyPieChart(); 5047 init_EasyPieChart();
5048 - init_charts(); 5048 + // init_charts();
5049 init_echarts(); 5049 init_echarts();
5050 init_morris_charts(); 5050 init_morris_charts();
5051 init_skycons(); 5051 init_skycons();
backend/web/js/jquery.animateNumber.js 0 → 100755
  1 +/** @preserve jQuery animateNumber plugin v0.0.14
  2 + * (c) 2013, Alexandr Borisov.
  3 + * https://github.com/aishek/jquery-animateNumber
  4 + */
  5 +
  6 +// ['...'] notation using to avoid names minification by Google Closure Compiler
  7 +(function($) {
  8 + var reverse = function(value) {
  9 + return value.split('')
  10 + .reverse()
  11 + .join('');
  12 + };
  13 +
  14 + var defaults = {
  15 + numberStep: function(now, tween) {
  16 + var floored_number = Math.floor(now), target = $(tween.elem);
  17 +
  18 + target.text(floored_number);
  19 + }
  20 + };
  21 +
  22 + var handle = function(tween) {
  23 + var elem = tween.elem;
  24 + if (elem.nodeType && elem.parentNode) {
  25 + var handler = elem._animateNumberSetter;
  26 + if (!handler) {
  27 + handler = defaults.numberStep;
  28 + }
  29 + handler(tween.now, tween);
  30 + }
  31 + };
  32 +
  33 + if (!$.Tween || !$.Tween.propHooks) {
  34 + $.fx.step.number = handle;
  35 + } else {
  36 + $.Tween.propHooks.number = {
  37 + set: handle
  38 + };
  39 + }
  40 +
  41 + var extract_number_parts = function(separated_number, group_length) {
  42 + var numbers = separated_number.split('')
  43 + .reverse(), number_parts = [], current_number_part, current_index, q;
  44 +
  45 + for (var i = 0, l = Math.ceil(separated_number.length / group_length); i < l; i++) {
  46 + current_number_part = '';
  47 + for (q = 0; q < group_length; q++) {
  48 + current_index = i * group_length + q;
  49 + if (current_index === separated_number.length) {
  50 + break;
  51 + }
  52 +
  53 + current_number_part = current_number_part + numbers[ current_index ];
  54 + }
  55 + number_parts.push(current_number_part);
  56 + }
  57 +
  58 + return number_parts;
  59 + };
  60 +
  61 + var remove_precending_zeros = function(number_parts) {
  62 + var last_index = number_parts.length - 1, last = reverse(number_parts[ last_index ]);
  63 +
  64 + number_parts[ last_index ] = reverse(
  65 + parseInt(last, 10)
  66 + .toString()
  67 + );
  68 + return number_parts;
  69 + };
  70 +
  71 + $.animateNumber = {
  72 + numberStepFactories: {
  73 + /**
  74 + * Creates numberStep handler, which appends string to floored animated number on each step.
  75 + *
  76 + * @example
  77 + * // will animate to 100 with "1 %", "2 %", "3 %", ...
  78 + * $('#someid').animateNumber({
  79 + * number: 100,
  80 + * numberStep: $.animateNumber.numberStepFactories.append(' %')
  81 + * });
  82 + *
  83 + * @params {String} suffix string to append to animated number
  84 + * @returns {Function} numberStep-compatible function for use in animateNumber's parameters
  85 + */
  86 + append: function(suffix) {
  87 + return function(now, tween) {
  88 + var floored_number = Math.floor(now), target = $(tween.elem);
  89 +
  90 + target.prop('number', now)
  91 + .text(floored_number + suffix);
  92 + };
  93 + },
  94 +
  95 + /**
  96 + * Creates numberStep handler, which format floored numbers by separating them to groups.
  97 + *
  98 + * @example
  99 + * // will animate with 1 ... 217,980 ... 95,217,980 ... 7,095,217,980
  100 + * $('#world-population').animateNumber({
  101 + * number: 7095217980,
  102 + * numberStep: $.animateNumber.numberStepFactories.separator(',')
  103 + * });
  104 + * @example
  105 + * // will animate with 1% ... 217,980% ... 95,217,980% ... 7,095,217,980%
  106 + * $('#salesIncrease').animateNumber({
  107 + * number: 7095217980,
  108 + * numberStep: $.animateNumber.numberStepFactories.separator(',', 3, '%')
  109 + * });
  110 + *
  111 + * @params {String} [separator=' '] string to separate number groups
  112 + * @params {String} [group_length=3] number group length
  113 + * @params {String} [suffix=''] suffix to append to number
  114 + * @returns {Function} numberStep-compatible function for use in animateNumber's parameters
  115 + */
  116 + separator: function(separator, group_length, suffix) {
  117 + separator = separator || ' ';
  118 + group_length = group_length || 3;
  119 + suffix = suffix || '';
  120 +
  121 + return function(now, tween) {
  122 + var negative = now < 0, floored_number = Math.floor((negative ? -1 : 1) * now), separated_number = floored_number.toString(), target = $(tween.elem);
  123 +
  124 + if (separated_number.length > group_length) {
  125 + var number_parts = extract_number_parts(separated_number, group_length);
  126 +
  127 + separated_number = remove_precending_zeros(number_parts)
  128 + .join(separator);
  129 + separated_number = reverse(separated_number);
  130 + }
  131 +
  132 + target.prop('number', now)
  133 + .text((negative ? '-' : '') + separated_number + suffix);
  134 + };
  135 + }
  136 + }
  137 + };
  138 +
  139 + $.fn.animateNumber = function() {
  140 + var options = arguments[ 0 ], settings = $.extend({}, defaults, options),
  141 +
  142 + target = $(this), args = [ settings ];
  143 +
  144 + for (var i = 1, l = arguments.length; i < l; i++) {
  145 + args.push(arguments[ i ]);
  146 + }
  147 +
  148 + // needs of custom step function usage
  149 + if (options.numberStep) {
  150 + // assigns custom step functions
  151 + var items = this.each(
  152 + function() {
  153 + this._animateNumberSetter = options.numberStep;
  154 + }
  155 + );
  156 +
  157 + // cleanup of custom step functions after animation
  158 + var generic_complete = settings.complete;
  159 + settings.complete = function() {
  160 + items.each(
  161 + function() {
  162 + delete this._animateNumberSetter;
  163 + }
  164 + );
  165 +
  166 + if (generic_complete) {
  167 + generic_complete.apply(this, arguments);
  168 + }
  169 + };
  170 + }
  171 +
  172 + return target.animate.apply(target, args);
  173 + };
  174 +
  175 +}(jQuery));
codeception.yml 100644 → 100755
common/codeception.yml 100644 → 100755
common/components/Sitemap.php 100644 → 100755
common/config/.gitignore 100644 → 100755
common/config/Artbox-85b8559147bc.json 100644 → 100755
common/config/SitemapDynamic.php 100644 → 100755
common/config/SitemapStatic.php 100644 → 100755
common/config/bootstrap.php 100644 → 100755
common/config/main.php 100644 → 100755
common/config/params.php 100644 → 100755
common/config/settings.php
1 <?php 1 <?php
2 -  
3 - return [  
4 - 1 => [  
5 - 'phone' => '',  
6 - 'phone2' => '',  
7 - 'skype' => '',  
8 - 'email' => '',  
9 - 'house' => '',  
10 - 'street' => '',  
11 - 'office' => '',  
12 - 'city' => '',  
13 - 'country' => '',  
14 - 'lat' => '',  
15 - 'lon' => '',  
16 - 'facebook' => '',  
17 - 'vk' => '',  
18 - 'ok' => '',  
19 - 'google' => '',  
20 - 'twitter' => '',  
21 - 'name' => '',  
22 - 'logo' => null,  
23 - 'about' => '',  
24 - 'analytics_key' => '',  
25 - 'robots' => '',  
26 - 'ga_code' => '',  
27 - 'ya_code' => '',  
28 - 'tag_manager' => '',  
29 - 'id' => 1,  
30 - ],  
31 - ];  
32 \ No newline at end of file 2 \ No newline at end of file
  3 +
  4 +return [
  5 + 1 => [
  6 + 'phone' => '+38 (044) 593-73-76',
  7 + 'phone2' => '+38 (098) 468-07-64',
  8 + 'skype' => 'artwebstudio',
  9 + 'email' => 'artweb.ua@gmail.com',
  10 + 'house' => '1-М',
  11 + 'street' => 'пр. М. Бажана',
  12 + 'office' => '25',
  13 + 'city' => 'Киев',
  14 + 'country' => 'Украина',
  15 + 'lat' => '50.403696',
  16 + 'lon' => '30.641481',
  17 + 'facebook' => 'https://www.facebook.com/ArtWeb.ua/',
  18 + 'vk' => 'https://vk.com/artwebua',
  19 + 'ok' => 'https://ok.ru/artwebua',
  20 + 'google' => 'https://plus.google.com/+ArtwebUaAgency',
  21 + 'twitter' => 'https://twitter.com/ArtWeb_ua',
  22 + 'name' => 'Artweb',
  23 + 'logo' => '11',
  24 + 'about' => 'Строим бизнес в онлайне',
  25 + 'analytics_key' => '119240817',
  26 + 'robots' => 'User-agent: Google
  27 +Disallow:
  28 +',
  29 + 'ga_code' => '796967',
  30 + 'ya_code' => '08908908',
  31 + 'tag_manager' => '',
  32 + 'id' => 1,
  33 + ],
  34 +];
33 \ No newline at end of file 35 \ No newline at end of file
common/config/test.php 100644 → 100755
common/fixtures/User.php 100644 → 100755
common/mail/layouts/html.php 100644 → 100755
common/mail/layouts/text.php 100644 → 100755
common/mail/passwordResetToken-html.php 100644 → 100755
common/mail/passwordResetToken-text.php 100644 → 100755
common/models/LoginForm.php 100644 → 100755
common/models/SitemapDynamic.php 100644 → 100755
common/models/SitemapStatic.php 100644 → 100755
common/tests/_bootstrap.php 100644 → 100755
common/tests/_data/user.php 100644 → 100755
common/tests/_output/.gitignore 100644 → 100755
common/tests/_support/.gitignore 100644 → 100755
common/tests/_support/UnitTester.php 100644 → 100755
common/tests/unit.suite.yml 100644 → 100755
common/tests/unit/models/LoginFormTest.php 100644 → 100755
composer.json 100644 → 100755
console/config/.gitignore 100644 → 100755
console/config/bootstrap.php 100644 → 100755
console/config/main.php 100644 → 100755
console/config/params.php 100644 → 100755
console/controllers/.gitkeep 100644 → 100755
console/controllers/CheckController.php 100644 → 100755
console/controllers/CreateController.php 100644 → 100755
console/models/.gitkeep 100644 → 100755
console/runtime/.gitignore 100644 → 100755
environments/dbmysql.php 100644 → 100755
environments/dbpostgresql.php 100644 → 100755
environments/dev/backend/config/main-local.php 100644 → 100755
environments/dev/backend/config/params-local.php 100644 → 100755
environments/dev/backend/config/test-local.php 100644 → 100755
environments/dev/backend/web/index-test.php 100644 → 100755
environments/dev/backend/web/index.php 100644 → 100755
environments/dev/common/config/main-local.php 100644 → 100755
environments/dev/common/config/params-local.php 100644 → 100755
environments/dev/common/config/test-local.php 100644 → 100755
environments/dev/console/config/main-local.php 100644 → 100755
environments/dev/console/config/params-local.php 100644 → 100755
environments/dev/frontend/config/main-local.php 100644 → 100755
environments/dev/frontend/config/params-local.php 100644 → 100755
environments/dev/frontend/config/test-local.php 100644 → 100755
environments/dev/frontend/web/index-test.php 100644 → 100755
environments/dev/frontend/web/index.php 100644 → 100755
environments/dev/yii 100644 → 100755
environments/dev/yii_test 100644 → 100755
environments/dev/yii_test.bat 100644 → 100755
environments/index.php 100644 → 100755
environments/prod/backend/config/main-local.php 100644 → 100755
environments/prod/backend/config/params-local.php 100644 → 100755
environments/prod/backend/web/index.php 100644 → 100755
environments/prod/common/config/main-local.php 100644 → 100755
environments/prod/common/config/params-local.php 100644 → 100755
environments/prod/console/config/main-local.php 100644 → 100755
environments/prod/console/config/params-local.php 100644 → 100755
environments/prod/frontend/config/main-local.php 100644 → 100755
environments/prod/frontend/config/params-local.php 100644 → 100755
environments/prod/frontend/web/index.php 100644 → 100755
environments/prod/yii 100644 → 100755
frontend/assets/AppAsset.php 100644 → 100755
frontend/assets/MapAsset.php 100644 → 100755
frontend/codeception.yml 100644 → 100755
frontend/config/.gitignore 100644 → 100755
frontend/config/bootstrap.php 100644 → 100755
frontend/config/main.php 100644 → 100755