From f5769826473208c14ce6271fec7a20a5862282aa Mon Sep 17 00:00:00 2001 From: Mihail Date: Fri, 9 Oct 2015 17:56:57 +0400 Subject: [PATCH] add modal form for create importer prefix and add handaling for delimiter --- backend/controllers/ImportersPrefixController.php | 8 +++++--- backend/controllers/ParserController.php | 7 ++++++- backend/models/ImportersPrefix.php | 21 ++++++++++----------- backend/views/check-price/index.php | 5 ++--- backend/views/importers-prefix/_form.php | 12 ++++++++---- backend/views/importers-prefix/create.php | 2 +- backend/views/importers-prefix/index.php | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- backend/views/importers-prefix/update.php | 4 +--- backend/web/js/parser.js | 4 ++-- vendor/yiisoft/multiparser/CsvParser.php | 1 + 10 files changed, 81 insertions(+), 37 deletions(-) diff --git a/backend/controllers/ImportersPrefixController.php b/backend/controllers/ImportersPrefixController.php index dec3025..b3ecbf1 100644 --- a/backend/controllers/ImportersPrefixController.php +++ b/backend/controllers/ImportersPrefixController.php @@ -54,9 +54,10 @@ class ImportersPrefixController extends BaseController $model = new ImportersPrefix(); if ($model->load(Yii::$app->request->post()) && $model->save()) { - return $this->redirect(['view', 'id' => $model->id]); + //return $this->redirect(['view', 'id' => $model->id]); + return $this->redirect('index'); } else { - return $this->render('create', [ + return $this->renderAjax('create', [ 'model' => $model, ]); } @@ -73,7 +74,8 @@ class ImportersPrefixController extends BaseController $model = $this->findModel($id); if ($model->load(Yii::$app->request->post()) && $model->save()) { - return $this->redirect(['view', 'id' => $model->id]); + // return $this->redirect(['view', 'id' => $model->id]); + return $this->redirect('index'); } else { return $this->render('update', [ 'model' => $model, diff --git a/backend/controllers/ParserController.php b/backend/controllers/ParserController.php index f838024..bf306f7 100644 --- a/backend/controllers/ParserController.php +++ b/backend/controllers/ParserController.php @@ -111,7 +111,12 @@ class ParserController extends BaseController // === ручная загрузка =========== //запускаем парсинг - $data = $model->readFile(); + // доп. опции для парсера + $options = []; + if( ! $model->action ) // обработка с кастомным разделителем + $options['$delimiter'] = $model->delimiter; + + $data = $model->readFile( $options ); // сохраняем в кеш отпарсенные даные Yii::$app->getCache()->set('parser_data', json_encode($data)); // сохраняем в кеш модель - в ней настройки для дальнейшей обработки данных diff --git a/backend/models/ImportersPrefix.php b/backend/models/ImportersPrefix.php index ae0ca79..7436416 100644 --- a/backend/models/ImportersPrefix.php +++ b/backend/models/ImportersPrefix.php @@ -3,6 +3,7 @@ namespace backend\models; use Yii; +use backend\models\Importers; /** * This is the model class for table "w_importers_prefix". @@ -15,13 +16,6 @@ use Yii; */ class ImportersPrefix extends \backend\components\base\BaseActiveRecord { - /** - * @inheritdoc - */ - public static function tableName() - { - return 'w_importers_prefix'; - } /** * @inheritdoc @@ -38,6 +32,11 @@ class ImportersPrefix extends \backend\components\base\BaseActiveRecord ]; } + + public function getImporterName () + { + return Importers::findOne($this->importer_id)->name; + } /** * @inheritdoc */ @@ -45,10 +44,10 @@ class ImportersPrefix extends \backend\components\base\BaseActiveRecord { return [ 'id' => Yii::t('app', 'ID'), - 'importer_id' => Yii::t('app', 'Importer ID'), - 'brand' => Yii::t('app', 'Brand'), - 'prefix' => Yii::t('app', 'Prefix'), - 'timestamp' => Yii::t('app', 'Timestamp'), + 'importer_id' => Yii::t('app', 'Поставщик'), + 'brand' => Yii::t('app', 'Бренд'), + 'prefix' => Yii::t('app', 'Префикс'), + 'timestamp' => Yii::t('app', 'Дата создания'), ]; } } diff --git a/backend/views/check-price/index.php b/backend/views/check-price/index.php index 8fe6322..26fdb19 100644 --- a/backend/views/check-price/index.php +++ b/backend/views/check-price/index.php @@ -16,8 +16,7 @@ $this->title = 'Проверка прайсов'; $this->params['breadcrumbs'][] = $this->title; // зарегистрируем скрипт для обработки загрузки модального окна ParserAsset::register($this); -// убрал Pjax потому что он при выполнении блокирует скрипт вызова модального окна -//Pjax::begin(); +Pjax::begin(['id' => 'gridViewContent']); ?>
@@ -73,7 +72,7 @@ ParserAsset::register($this); 'size' => 'modal-lg', ]); - echo "
"; + echo "
"; Modal::end(); // Pjax::end(); ?> diff --git a/backend/views/importers-prefix/_form.php b/backend/views/importers-prefix/_form.php index 28aed29..886afb6 100644 --- a/backend/views/importers-prefix/_form.php +++ b/backend/views/importers-prefix/_form.php @@ -2,6 +2,9 @@ use yii\helpers\Html; use yii\widgets\ActiveForm; +use backend\models\Importers; +use yii\helpers\ArrayHelper; + /* @var $this yii\web\View */ /* @var $model backend\models\ImportersPrefix */ @@ -10,18 +13,19 @@ use yii\widgets\ActiveForm;
- + - field($model, 'importer_id')->textInput(['maxlength' => true]) ?> + field($model, 'importer_id')->dropDownList(ArrayHelper::map( Importers::find()->all(), 'id','name' )); ?> field($model, 'brand')->textInput(['maxlength' => true]) ?> field($model, 'prefix')->textInput(['maxlength' => true]) ?> - field($model, 'timestamp')->textInput() ?>
- isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> + isNewRecord ? Yii::t('app', 'Добавить') : Yii::t('app', 'Редактировать'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary',]) ?>
diff --git a/backend/views/importers-prefix/create.php b/backend/views/importers-prefix/create.php index 5d0316e..27534d5 100644 --- a/backend/views/importers-prefix/create.php +++ b/backend/views/importers-prefix/create.php @@ -6,7 +6,7 @@ use yii\helpers\Html; /* @var $this yii\web\View */ /* @var $model backend\models\ImportersPrefix */ -$this->title = Yii::t('app', 'Create Importers Prefix'); +$this->title = Yii::t('app', 'Добавление'); $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Importers Prefixes'), 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> diff --git a/backend/views/importers-prefix/index.php b/backend/views/importers-prefix/index.php index 8ba3a31..238abcc 100644 --- a/backend/views/importers-prefix/index.php +++ b/backend/views/importers-prefix/index.php @@ -2,6 +2,10 @@ use yii\helpers\Html; use yii\grid\GridView; +use yii\widgets\Pjax; +use yii\bootstrap\Modal; +use backend\assets\ParserAsset; +use yii\helpers\Url; /* @var $this yii\web\View */ /* @var $searchModel backend\models\ImportersPrefixSearсh */ @@ -9,30 +13,62 @@ use yii\grid\GridView; $this->title = Yii::t('app', 'Список префиксов поставщиков'); $this->params['breadcrumbs'][] = $this->title; +ParserAsset::register($this); +$url = Url::to(['create']); + ?>

title) ?>

- 'btn btn-success']) ?> - render('_search', ['model' => $searchModel]); ?> - +

+ 'btn btn-success modalButton', 'value' => $url]) ?> +

+ render('_search', ['model' => $searchModel]); + Pjax::begin(['id' => 'gridViewContent']); + ?> $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], - - 'importer_id', - 'brand', - 'prefix', - 'timestamp', + [ + 'attribute' => 'importer_id', + 'label' => 'ПОСТАВЩИК', + 'value' => function ($data) { + return $data->importerName;} + ], + [ + 'attribute' => 'brand', + 'label' => 'БРЕНД', + ], + [ + 'attribute' => 'prefix', + 'label' => 'ПРЕФИКСЫ (ЧЕРЕЗ ,)', + ], + [ + 'attribute' => 'timestamp', + 'label' => 'ДАТА ДОБАВЛЕНИЯ', + ], ['class' => 'yii\grid\ActionColumn', 'template' => '{update},{delete}'], ], - ]); ?> + ]); + + + + // сюда будем всавлять контент модального окна + Modal::begin([ + 'id' => 'modal', + 'size' => 'modal-lg', + ]); + + echo "
"; + Modal::end(); + Pjax::end(); + ?>
diff --git a/backend/views/importers-prefix/update.php b/backend/views/importers-prefix/update.php index c392902..c8e42d9 100644 --- a/backend/views/importers-prefix/update.php +++ b/backend/views/importers-prefix/update.php @@ -5,9 +5,7 @@ use yii\helpers\Html; /* @var $this yii\web\View */ /* @var $model backend\models\ImportersPrefix */ -$this->title = Yii::t('app', 'Update {modelClass}: ', [ - 'modelClass' => 'Importers Prefix', -]) . ' ' . $model->id; +$this->title = Yii::t('app', "Редактирование префикса поставщика") . ' ' . $model->importerName; $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Importers Prefixes'), 'url' => ['index']]; $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; $this->params['breadcrumbs'][] = Yii::t('app', 'Update'); diff --git a/backend/web/js/parser.js b/backend/web/js/parser.js index 216371e..1e70e7c 100644 --- a/backend/web/js/parser.js +++ b/backend/web/js/parser.js @@ -5,9 +5,9 @@ $(function(){ $('.modalButton').click(function (){ // находим контейнер с модальным контентом и подгружаем в него по оджаксу результат $('#modal').modal('show') - .find('#modalContent') + .find('.modalContent') .load($(this).attr('value')); // в 'value' - у нас указан путь с гет параметрами к конроллеру - + $.pjax.reload({container:'#gridViewContent'}); }); diff --git a/vendor/yiisoft/multiparser/CsvParser.php b/vendor/yiisoft/multiparser/CsvParser.php index ec175b9..fded7fe 100644 --- a/vendor/yiisoft/multiparser/CsvParser.php +++ b/vendor/yiisoft/multiparser/CsvParser.php @@ -59,6 +59,7 @@ class CsvParser implements ParserInterface */ public function setup() { + $this->file->setCsvControl($this->delimiter); $this->file->setFlags(\SplFileObject::READ_CSV); $this->file->setFlags(\SplFileObject::SKIP_EMPTY); -- libgit2 0.21.4