Commit 0cf90b500c4ee06d11c9a741095a15fef6c7d31b

Authored by Mihail
1 parent 22d79652

add modal form by ajax for check-price form

backend/assets/CheckPriceAsset.php 0 → 100644
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: Cibermag
  5 + * Date: 28.09.2015
  6 + * Time: 11:40
  7 + */
  8 +
  9 +namespace backend\assets;
  10 +
  11 +use yii\web\AssetBundle;
  12 +
  13 +class CheckPriceAsset extends AssetBundle {
  14 + public $basePath = '@webroot';
  15 + public $baseUrl = '@web';
  16 + public $css = [
  17 + 'css/site.css',
  18 + ];
  19 + public $js = [
  20 + 'js/check-price.js',
  21 + ];
  22 + public $depends = [
  23 + 'yii\web\YiiAsset',
  24 + 'yii\bootstrap\BootstrapAsset',
  25 + ];
  26 +}
0 \ No newline at end of file 27 \ No newline at end of file
backend/controllers/CheckPriceController.php
@@ -62,7 +62,7 @@ class CheckPriceController extends BaseController @@ -62,7 +62,7 @@ class CheckPriceController extends BaseController
62 public function actionIndex() 62 public function actionIndex()
63 { 63 {
64 if(Yii::$app->request->isAjax){ 64 if(Yii::$app->request->isAjax){
65 - CustomVarDamp::dumpAndDie(1); 65 + CustomVarDamp::dumpAndDie('Ajax!!!');
66 } 66 }
67 67
68 //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); 68 //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]);
@@ -81,18 +81,18 @@ class CheckPriceController extends BaseController @@ -81,18 +81,18 @@ class CheckPriceController extends BaseController
81 } 81 }
82 82
83 83
84 - public function actionView ($id) 84 + public function actionView ($id, $date_update)
85 { 85 {
86 - // @todo переписать запрос - нужно условие на равенство даты, а также вьюшка должна быть модальным окном вызываемой по аджаксу  
87 - $query = Details::find()->where(['IMPORT_ID' => $id])->orderBy(['timestamp' => SORT_DESC]); 86 +
  87 + $query = Details::find()->where(['IMPORT_ID' => $id, 'timestamp' => $date_update])->limit(20);
88 88
89 $provider = new ActiveDataProvider([ 89 $provider = new ActiveDataProvider([
90 'query' => $query, 90 'query' => $query,
91 - 'pagination' => [  
92 - 'pageSize' => 16,  
93 - ], 91 + 'pagination' => false,
  92 + 'sort' => false,
94 ]); 93 ]);
95 - return $this->render('view', 94 +
  95 + return $this->renderAjax('view',
96 ['dataProvider' => $provider]); 96 ['dataProvider' => $provider]);
97 } 97 }
98 98
backend/controllers/Check_priceController.php deleted
1 -<?php  
2 -namespace backend\controllers;  
3 -  
4 -use Yii;  
5 -use yii\bootstrap\Modal;  
6 -use yii\data\ActiveDataProvider;  
7 -use yii\filters\AccessControl;  
8 -use backend\components\base\BaseController;  
9 -use yii\filters\VerbFilter;  
10 -use backend\models\UploadFileParsingForm;  
11 -use yii\web\UploadedFile;  
12 -use yii\data\ArrayDataProvider;  
13 -use yii\multiparser\DynamicFormHelper;  
14 -use backend\components\parsers\CustomParserConfigurator;  
15 -use backend\models\Details;  
16 -use backend\models\ImporterFiles;  
17 -use backend\models\Importer;  
18 -use yii\base\ErrorException;  
19 -use yii\db\Query;  
20 -  
21 -use common\components\CustomVarDamp;  
22 -  
23 -/**  
24 - * Parser controller  
25 - */  
26 -class Check_priceController extends BaseController  
27 -{  
28 - public $layout = "/column";  
29 -  
30 - /**  
31 - * @inheritdoc  
32 - */  
33 - public function behaviors()  
34 - {  
35 - return [  
36 - 'access' => [  
37 - 'class' => AccessControl::className(),  
38 - 'rules' => [  
39 - [  
40 - 'actions' => ['index', 'view'],  
41 - 'allow' => true,  
42 - 'roles' => ['@'],  
43 - ],  
44 - ],  
45 - ],  
46 -// 'verbs' => [  
47 -// 'class' => VerbFilter::className(),  
48 -// 'actions' => [  
49 -// 'logout' => ['post'],  
50 -// ],  
51 -// ],  
52 - ];  
53 - }  
54 -  
55 - /**  
56 - * @inheritdoc  
57 - */  
58 - public function actions()  
59 - {  
60 - return [  
61 - 'error' => [  
62 - 'class' => 'yii\web\ErrorAction',  
63 - ],  
64 - ];  
65 - }  
66 -  
67 -  
68 - public function actionIndex()  
69 - {  
70 -  
71 - if(Yii::$app->request->isAjax){  
72 - CustomVarDamp::dumpAndDie(1);  
73 - }  
74 -  
75 - //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]);  
76 - $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]);  
77 -  
78 - $provider = new ActiveDataProvider([  
79 - 'query' => $query,  
80 - 'pagination' => [  
81 - 'pageSize' => 10,  
82 - ],  
83 - ]);  
84 - return $this->render('index',  
85 - [  
86 - 'dataProvider' => $provider,  
87 - ]);  
88 - }  
89 -  
90 -  
91 - public function actionView ($id)  
92 - {  
93 -  
94 -  
95 -  
96 -  
97 - $query = Details::find()->where(['IMPORT_ID' => $id])->orderBy(['timestamp' => SORT_DESC]);  
98 -  
99 - $provider = new ActiveDataProvider([  
100 - 'query' => $query,  
101 - 'pagination' => [  
102 - 'pageSize' => 16,  
103 - ],  
104 - ]);  
105 - return $this->render('view',  
106 - ['dataProvider' => $provider]);  
107 - }  
108 -}  
backend/views/check-price/index.php
@@ -4,6 +4,9 @@ use yii\grid\GridView; @@ -4,6 +4,9 @@ use yii\grid\GridView;
4 use yii\grid\SerialColumn; 4 use yii\grid\SerialColumn;
5 use yii\grid\ActionColumn; 5 use yii\grid\ActionColumn;
6 use yii\widgets\Pjax; 6 use yii\widgets\Pjax;
  7 +use yii\bootstrap\Modal;
  8 +use yii\helpers\Url;
  9 +use backend\assets\CheckPriceAsset;
7 10
8 11
9 /* @var $this yii\web\View */ 12 /* @var $this yii\web\View */
@@ -12,47 +15,68 @@ use yii\widgets\Pjax; @@ -12,47 +15,68 @@ use yii\widgets\Pjax;
12 15
13 $this->title = 'Проверка прайсов'; 16 $this->title = 'Проверка прайсов';
14 $this->params['breadcrumbs'][] = $this->title; 17 $this->params['breadcrumbs'][] = $this->title;
  18 +// зарегистрируем скрипт для обработки загрузки модального окна
  19 +CheckPriceAsset::register($this);
15 ?> 20 ?>
16 <div class="catalog-index"> 21 <div class="catalog-index">
17 22
18 <h1><?= Html::encode($this->title) ?></h1> 23 <h1><?= Html::encode($this->title) ?></h1>
19 24
20 25
21 - <?= GridView::widget( ['dataProvider' => $dataProvider,  
22 - 'columns' => [['class' => SerialColumn::className()],  
23 - [  
24 - 'class' => ActionColumn::className(),  
25 - 'template'=>'{view}',  
26 - 'contentOptions' => function ($model, $key, $index, $column){  
27 - return ['data' => ['id' => $model->id, 'date' => $model->price_date_update]];  
28 - } 26 + <?= GridView::widget(['dataProvider' => $dataProvider,
  27 + 'columns' => [
  28 + ['class' => SerialColumn::className()],
  29 +
  30 + ['content' => function ($model) {
  31 + $url = Url::to(['view', 'id' => $model->id, 'date_update' => $model->price_date_update]);
  32 + return Html::a('<span class="glyphicon glyphicon-remove"> Просмотреть </span>', '#', [
  33 + 'title' => Yii::t('yii', 'Просмотреть прайс'),
  34 + 'class' => 'modalButton',
  35 + 'value' => $url,
  36 + ]);
  37 + },
29 ], 38 ],
  39 +
30 [ 40 [
31 - 'label' =>'Поставщик', 41 + 'label' => 'Поставщик',
32 'value' => function ($data) { 42 'value' => function ($data) {
33 - return '№ ' .$data->id . ' ' . $data->name; 43 + return '№ ' . $data->id . ' ' . $data->name;
34 }, 44 },
35 ], 45 ],
36 - ['label' =>'Дата обновления',  
37 - 'attribute' => 'price_date_update' ],  
38 - ['label' => 'Кол-во дней',  
39 - 'value' => function ($data) {  
40 - $date1 = new DateTime("now");  
41 - $date2 = new DateTime( $data->price_date_update );  
42 - $quo_days = $date2->diff($date1)->format('%R%a');  
43 - // уберем первый символ - там знак "+"  
44 - $quo_days = substr( $quo_days, 1, strlen($quo_days) );  
45 - $quo_days = (int) $quo_days;  
46 -  
47 - if($quo_days > 15)  
48 - $quo_days = '>15';  
49 -  
50 - return $quo_days;  
51 - }  
52 - ],  
53 - ]] );?>  
54 46
  47 + ['label' => 'Дата обновления',
  48 + 'attribute' => 'price_date_update'],
  49 +
  50 + ['label' => 'Кол-во дней',
  51 + 'value' => function ($data) {
  52 + $date1 = new DateTime("now");
  53 + $date2 = new DateTime($data->price_date_update);
  54 + $quo_days = $date2->diff($date1)->format('%R%a');
  55 + // уберем первый символ - там знак "+"
  56 + $quo_days = substr($quo_days, 1, strlen($quo_days));
  57 + $quo_days = (int)$quo_days;
  58 +
  59 + if ($quo_days > 15)
  60 + $quo_days = '>15';
  61 +
  62 + return $quo_days;
  63 + }
  64 + ],
  65 + ]
  66 + ]); ?>
  67 +
  68 + <?php
  69 + // сюда будем всавлять контент модального окна
  70 + Modal::begin([
  71 + // 'header'=>'<h4>Прайс</h4>',
  72 + 'id' => 'modal',
  73 + 'size' => 'modal-lg',
  74 + ]);
  75 +
  76 + echo "<div id='modalContent'></div>";
55 77
  78 + Modal::end();
  79 + ?>
56 80
57 81
58 </div> 82 </div>
59 \ No newline at end of file 83 \ No newline at end of file
backend/views/check_price/index.php deleted
1 -<?php  
2 -use yii\helpers\Html;  
3 -use yii\grid\GridView;  
4 -use yii\grid\SerialColumn;  
5 -use yii\grid\ActionColumn;  
6 -use yii\widgets\Pjax;  
7 -  
8 -  
9 -/* @var $this yii\web\View */  
10 -/* @var $searchModel backend\models\CatalogSearch */  
11 -/* @var $dataProvider yii\data\ActiveDataProvider */  
12 -  
13 -$this->title = 'Проверка прайсов';  
14 -$this->params['breadcrumbs'][] = $this->title;  
15 -?>  
16 -<div class="catalog-index">  
17 -  
18 - <h1><?= Html::encode($this->title) ?></h1>  
19 -  
20 -  
21 - <?= GridView::widget( ['dataProvider' => $dataProvider,  
22 - 'columns' => [['class' => SerialColumn::className()],  
23 - [  
24 - 'class' => ActionColumn::className(),  
25 - 'template'=>'{view}',  
26 - 'contentOptions' => function ($model, $key, $index, $column){  
27 - return ['data' => ['id' => $model->id, 'date' => $model->price_date_update]];  
28 - }  
29 - ],  
30 - [  
31 - 'label' =>'Поставщик',  
32 - 'value' => function ($data) {  
33 - return '№ ' .$data->id . ' ' . $data->name;  
34 - },  
35 - ],  
36 - ['label' =>'Дата обновления',  
37 - 'attribute' => 'price_date_update' ],  
38 - ['label' => 'Кол-во дней',  
39 - 'value' => function ($data) {  
40 - $date1 = new DateTime("now");  
41 - $date2 = new DateTime( $data->price_date_update );  
42 - $quo_days = $date2->diff($date1)->format('%R%a');  
43 - // уберем первый символ - там знак "+"  
44 - $quo_days = substr( $quo_days, 1, strlen($quo_days) );  
45 - $quo_days = (int) $quo_days;  
46 -  
47 - if($quo_days > 15)  
48 - $quo_days = '>15';  
49 -  
50 - return $quo_days;  
51 - }  
52 - ],  
53 - ]] );?>  
54 -  
55 -  
56 -  
57 -  
58 -</div>  
59 \ No newline at end of file 0 \ No newline at end of file
backend/views/check_price/view.php deleted
1 -<?php  
2 -use yii\helpers\Html;  
3 -use yii\grid\GridView;  
4 -use yii\grid\SerialColumn;  
5 -use yii\bootstrap\Modal;  
6 -  
7 -  
8 -/* @var $this yii\web\View */  
9 -/* @var $searchModel backend\models\CatalogSearch */  
10 -/* @var $dataProvider yii\data\ActiveDataProvider */  
11 -  
12 -$this->title = 'Проверка прайсов';  
13 -$this->params['breadcrumbs'][] = $this->title;  
14 -  
15 -?>  
16 -<div class="catalog-index">  
17 -  
18 - <h1><?= Html::encode($this->title) ?></h1>  
19 -  
20 - <?= GridView::widget( ['dataProvider' => $dataProvider,  
21 -  
22 - ] );  
23 -  
24 -  
25 - ?>  
26 -  
27 -  
28 -  
29 -</div>  
30 -<?php  
31 -  
32 -?>  
33 \ No newline at end of file 0 \ No newline at end of file
backend/views/parser/server-files.php
@@ -38,7 +38,7 @@ Pjax::begin(); @@ -38,7 +38,7 @@ Pjax::begin();
38 'title' => Yii::t('yii', 'Удалить файл'), 38 'title' => Yii::t('yii', 'Удалить файл'),
39 'data-confirm' => 'Вы уверены что хотите удалить этот файл?', 39 'data-confirm' => 'Вы уверены что хотите удалить этот файл?',
40 'data-method' => 'post', 40 'data-method' => 'post',
41 - 'data-pjax' => '1', 41 + 'data-pjax' => '0',
42 ]); 42 ]);
43 }, 43 },
44 ], 44 ],
backend/web/js/check-price.js 0 → 100644
  1 +$(function(){
  2 +
  3 + // get the click of the create button
  4 + $('.modalButton').click(function (){
  5 + $('#modal').modal('show')
  6 + .find('#modalContent')
  7 + .load($(this).attr('value'));
  8 + });
  9 +});