diff --git a/backend/components/DatePicker.php b/backend/components/DatePicker.php new file mode 100644 index 0000000..5660444 --- /dev/null +++ b/backend/components/DatePicker.php @@ -0,0 +1,39 @@ +render('image_sizer', + [ + 'dateStyle'=>$this->dateStyle, + 'name' => $this->name, + 'model'=> $this->model, + 'form'=>$this->form + ]); + + } +} \ No newline at end of file diff --git a/backend/components/views/date_picker.php b/backend/components/views/date_picker.php new file mode 100644 index 0000000..49b3b8e --- /dev/null +++ b/backend/components/views/date_picker.php @@ -0,0 +1,37 @@ +registerCssFile('//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css'); +$this->registerJsFile('//code.jquery.com/ui/1.11.4/jquery-ui.js'); +?> + + field($model,$name)->hiddenInput(['id' => "{$name}_date_picker"]) ?> + diff --git a/backend/controllers/CurrencyController.php b/backend/controllers/CurrencyController.php new file mode 100644 index 0000000..1778a92 --- /dev/null +++ b/backend/controllers/CurrencyController.php @@ -0,0 +1,122 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all Currency models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new CurrencySearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single Currency model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new Currency model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new Currency(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing Currency model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing Currency model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the Currency model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return Currency the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = Currency::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/controllers/MarginsController.php b/backend/controllers/MarginsController.php new file mode 100644 index 0000000..8909ada --- /dev/null +++ b/backend/controllers/MarginsController.php @@ -0,0 +1,123 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all Margins models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new MarginsSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single Margins model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new Margins model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new Margins(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing Margins model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing Margins model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the Margins model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return Margins the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = Margins::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/controllers/MarginsGroupsController.php b/backend/controllers/MarginsGroupsController.php new file mode 100644 index 0000000..e4a9156 --- /dev/null +++ b/backend/controllers/MarginsGroupsController.php @@ -0,0 +1,123 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all MarginsGroups models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new MarginsGroupsSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single MarginsGroups model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new MarginsGroups model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new MarginsGroups(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing MarginsGroups model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing MarginsGroups model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the MarginsGroups model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return MarginsGroups the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = MarginsGroups::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/controllers/MarginsImportersController.php b/backend/controllers/MarginsImportersController.php new file mode 100644 index 0000000..de7ef01 --- /dev/null +++ b/backend/controllers/MarginsImportersController.php @@ -0,0 +1,124 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all MarginsImporters models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new MarginsImportersSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single MarginsImporters model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new MarginsImporters model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new MarginsImporters(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing MarginsImporters model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing MarginsImporters model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the MarginsImporters model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return MarginsImporters the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = MarginsImporters::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/controllers/MarginsImportersImportController.php b/backend/controllers/MarginsImportersImportController.php new file mode 100644 index 0000000..7c7270b --- /dev/null +++ b/backend/controllers/MarginsImportersImportController.php @@ -0,0 +1,124 @@ + [ + 'class' => VerbFilter::className(), + 'actions' => [ + 'delete' => ['post'], + ], + ], + ]; + } + + /** + * Lists all MarginsImportersImport models. + * @return mixed + */ + public function actionIndex() + { + $searchModel = new MarginsImportersImportSearch(); + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); + + return $this->render('index', [ + 'searchModel' => $searchModel, + 'dataProvider' => $dataProvider, + ]); + } + + /** + * Displays a single MarginsImportersImport model. + * @param integer $id + * @return mixed + */ + public function actionView($id) + { + return $this->render('view', [ + 'model' => $this->findModel($id), + ]); + } + + /** + * Creates a new MarginsImportersImport model. + * If creation is successful, the browser will be redirected to the 'view' page. + * @return mixed + */ + public function actionCreate() + { + $model = new MarginsImportersImport(); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('create', [ + 'model' => $model, + ]); + } + } + + /** + * Updates an existing MarginsImportersImport model. + * If update is successful, the browser will be redirected to the 'view' page. + * @param integer $id + * @return mixed + */ + public function actionUpdate($id) + { + $model = $this->findModel($id); + + if ($model->load(Yii::$app->request->post()) && $model->save()) { + return $this->redirect(['view', 'id' => $model->id]); + } else { + return $this->render('update', [ + 'model' => $model, + ]); + } + } + + /** + * Deletes an existing MarginsImportersImport model. + * If deletion is successful, the browser will be redirected to the 'index' page. + * @param integer $id + * @return mixed + */ + public function actionDelete($id) + { + $this->findModel($id)->delete(); + + return $this->redirect(['index']); + } + + /** + * Finds the MarginsImportersImport model based on its primary key value. + * If the model is not found, a 404 HTTP exception will be thrown. + * @param integer $id + * @return MarginsImportersImport the loaded model + * @throws NotFoundHttpException if the model cannot be found + */ + protected function findModel($id) + { + if (($model = MarginsImportersImport::findOne($id)) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } +} diff --git a/backend/models/Details_old.php b/backend/models/Details_old.php new file mode 100644 index 0000000..15b1f67 --- /dev/null +++ b/backend/models/Details_old.php @@ -0,0 +1,135 @@ +mode = $mode; + } + + public function rules() + { + return [ + [['BRAND','ARTICLE', 'PRICE', 'BOX'], 'required' ], + ]; + } + + public function formName() + { + return 'Details'; + } + + + public static function tableName() + { + return '{{%details}}'; + } + +// //@todo вероятно этой функции не место здесь +// public function prepareData ( $data, $configuration ) +// { +// if ( isset($configuration['importer_id']) && $configuration['importer_id']) { +// $data = \Yii::$app->multiparser->addColumn( $data, 'IMPORT_ID', $configuration['importer_id'] ); +// } +// // \common\components\CustomVarDamp::dumpAndDie($data); +// return $data; +// } + + /** + * @param $data - двумерный массив данных для записи в таблицу details + * @throws \yii\db\Exception + * вставляет записи с апдейтом при дубляже ключей + */ + public function save ($data) + { + $table_name = self::tableName(); + $keys_arr = array_keys( $data[0] ); + // найдем те поля которые не являются ключами. Их нужно будет при дубляже апдейтить + $fields_arr_to_update = array_diff( $keys_arr, $this::KEY_COLUMN ); + + $query_update = ' on duplicate key update '; + foreach ($fields_arr_to_update as $field) { + $query_update .= "{$field} = values({$field}),"; + } + // удалим последнюю запятую + $query_update = substr($query_update, 0, strlen($query_update) - 1); + + // запросы будем выполнять пакетами + // размер пакета установлен в константе + // разобъем массив на пакеты и будем их проходить + $data = array_chunk($data, $this::BATCH ); + foreach( $data as $current_batch_array ){ + + //воспользуемся пакетной вставкой от фреймворка, плюс сразу с экранированием и защитой от инъекций + $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; + // добавим фрагмент с апдейтом при дубляже + $query = "{$query_insert} {$query_update}"; + // \common\components\CustomVarDamp::dumpAndDie($query); + $res = Yii::$app->db->createCommand($query)->execute(); + + } + + } +} + +// + +//$q = " INSERT INTO {$table_name} ({$keys_string}) VALUES ("; + +//$q .= " on duplicate key update `FULL_ARTICLE` = values (`FULL_ARTICLE`), +// `PRICE` = values (`PRICE`), +// `DESCR` = values(`DESCR`), +// `BOX` = values(`BOX`), +// `ADD_BOX` = values(`ADD_BOX`), +// `GROUP` = values(`GROUP`);"; + +// INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) +// ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); + + + +//INSERT INTO `books` (`UserId`, `BookId`, `Count`) VALUES (13, 1001, 3) +//ON DUPLICATE KEY UPDATE `Count` = `Count` + VALUES(`Count`); + +//$values_string = ''; +//$keys_arr = array_keys( $data[0] ); +//$keys_string = implode( ',', $keys_arr); +//$table_name = self::tableName(); +//$current_batch = 0; +//for ($i = $current_batch; $i < $this::BATCH AND $i < count($data); $i++) { +// $values_string .= '(' . implode( ',', $data[$i]) . '),'; +//} +// for ($current_batch = $this::BATCH; $current_batchdb->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql; +//$query = "{$query_insert} on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; +//$res = Yii::$app->db->createCommand($query)->execute(); + + + +// Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql execute(); \ No newline at end of file diff --git a/backend/models/Importer.php b/backend/models/Importer.php new file mode 100644 index 0000000..8c06694 --- /dev/null +++ b/backend/models/Importer.php @@ -0,0 +1,96 @@ + 254], + [['PARSER_FIELD_SIGN'], 'string', 'max' => 1], + // [['price_date_update'], 'string', 'max' => 15], + [['code'], 'unique'], + [['name'], 'unique'] + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => Yii::t('app', 'ID'), + 'code' => Yii::t('app', 'Code'), + 'name' => Yii::t('app', 'Name'), + 'name_price' => Yii::t('app', 'Name Price'), + 'currency_id' => Yii::t('app', 'Currency ID'), + 'delivery' => Yii::t('app', 'Delivery'), + 'email' => Yii::t('app', 'Email'), + 'info' => Yii::t('app', 'Info'), + 'active' => Yii::t('app', 'Active'), + 'PARSER_IS_ACTIVE' => Yii::t('app', 'Parser Is Active'), + 'PARSER_COLUMN_COUNT' => Yii::t('app', 'Parser Column Count'), + 'PARSER_FIELD_BRAND' => Yii::t('app', 'Parser Field Brand'), + 'PARSER_FIELD_ARTICLE' => Yii::t('app', 'Parser Field Article'), + 'PARSER_FIELD_ARTICLE_PREFIX' => Yii::t('app', 'Parser Field Article Prefix'), + 'PARSER_FIELD_PRICE' => Yii::t('app', 'Parser Field Price'), + 'PARSER_FIELD_DESCR' => Yii::t('app', 'Parser Field Descr'), + 'PARSER_FIELD_BOX' => Yii::t('app', 'Parser Field Box'), + 'PARSER_FIELD_ADD_BOX' => Yii::t('app', 'Parser Field Add Box'), + 'PARSER_FIELD_GROUP_RG' => Yii::t('app', 'Parser Field Group Rg'), + 'PARSER_FIELD_SIGN' => Yii::t('app', 'Parser Field Sign'), + 'PARSER_FIELD_MULTIPLIER' => Yii::t('app', 'Parser Field Multiplier'), + 'price_date_update' => Yii::t('app', 'Price Date Update'), + ]; + } + + + +} diff --git a/backend/models/ImporterFiles.php b/backend/models/ImporterFiles.php new file mode 100644 index 0000000..ab664ab --- /dev/null +++ b/backend/models/ImporterFiles.php @@ -0,0 +1,57 @@ +hasOne(Importer::className(), ['id' => 'importer_id'])->one()->name; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => Yii::t('app', 'ID'), + 'importer_id' => Yii::t('app', 'Importer ID'), + 'upload_time' => Yii::t('app', 'Upload Time'), + 'time_start' => Yii::t('app', 'Time Start'), + 'time_end' => Yii::t('app', 'Time End'), + ]; + } +} diff --git a/backend/views/currency/_form.php b/backend/views/currency/_form.php new file mode 100644 index 0000000..c134e54 --- /dev/null +++ b/backend/views/currency/_form.php @@ -0,0 +1,29 @@ + + +
+ + + + field($model, 'name')->textInput(['maxlength' => true]) ?> + + field($model, 'rate')->textInput() ?> + + field($model, 'is_default')->textInput() ?> + + field($model, 'timestamp')->textInput() ?> + +
+ isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/currency/_search.php b/backend/views/currency/_search.php new file mode 100644 index 0000000..41ac8b3 --- /dev/null +++ b/backend/views/currency/_search.php @@ -0,0 +1,35 @@ + + + diff --git a/backend/views/currency/create.php b/backend/views/currency/create.php new file mode 100644 index 0000000..1f35158 --- /dev/null +++ b/backend/views/currency/create.php @@ -0,0 +1,21 @@ +title = 'Create Currency'; +$this->params['breadcrumbs'][] = ['label' => 'Currencies', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/currency/index.php b/backend/views/currency/index.php new file mode 100644 index 0000000..431315d --- /dev/null +++ b/backend/views/currency/index.php @@ -0,0 +1,38 @@ +title = 'Currencies'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

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

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + 'id', + 'name', + 'rate', + 'is_default', + 'timestamp', + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> + +
diff --git a/backend/views/currency/update.php b/backend/views/currency/update.php new file mode 100644 index 0000000..004ef97 --- /dev/null +++ b/backend/views/currency/update.php @@ -0,0 +1,21 @@ +title = 'Update Currency: ' . ' ' . $model->name; +$this->params['breadcrumbs'][] = ['label' => 'Currencies', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Update'; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/currency/view.php b/backend/views/currency/view.php new file mode 100644 index 0000000..76191be --- /dev/null +++ b/backend/views/currency/view.php @@ -0,0 +1,39 @@ +title = $model->name; +$this->params['breadcrumbs'][] = ['label' => 'Currencies', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'name', + 'rate', + 'is_default', + 'timestamp', + ], + ]) ?> + +
diff --git a/backend/views/layouts/column.php b/backend/views/layouts/column.php index 4ab7533..25cc31b 100644 --- a/backend/views/layouts/column.php +++ b/backend/views/layouts/column.php @@ -88,7 +88,7 @@ $this->beginContent('@app/views/layouts/main.php'); Reviewers 2 days -

Why not buy a new awesome theme?

+

Why not buy a new awesome theme?

@@ -297,13 +297,27 @@ $this->beginContent('@app/views/layouts/main.php'); ], ], ['label' => 'Ценообразование', 'url' => ['#'], 'items' => [ - ['label' => 'Курс', 'url' => ['accounts/index']], - ['label' => 'Типы цен', 'url' => ['importers/index']], - ['label' => 'Коэфициенты на поставщиков', 'url' => ['user/index']], - ['label' => 'Коэфициенты на импорт поставщиков', 'url' => ['user/index']], - ['label' => 'Коэфициенты на группы RG', 'url' => ['user/index']], + ['label' => 'Курс', 'url' => ['currency/index']], + ['label' => 'Типы цен', 'url' => ['margins/index']], + ['label' => 'Коэфициенты на поставщиков', 'url' => ['margins-importers/index']], + ['label' => 'Коэфициенты на импорт поставщиков', 'url' => ['margins-importers-import/index']], + ['label' => 'Коэфициенты на группы RG', 'url' => ['margins-groups/index']], ], ], +// Справочник +//Замены брендов +//Карточки товаров +//Товары поставщиков +//Кроссы +//Бренды +//Марки авто +//Статусы заказов +//Типы доставок +//Категории товаров +//Vin коды +//Запросы по номеру +//Офисы + ], 'submenuTemplate' => "\n\n", ]); diff --git a/backend/views/margins-groups/_form.php b/backend/views/margins-groups/_form.php new file mode 100644 index 0000000..3ac8cfc --- /dev/null +++ b/backend/views/margins-groups/_form.php @@ -0,0 +1,31 @@ + + +
+ + + + field($model, 'importer_id')->textInput() ?> + + field($model, 'margin_id')->textInput() ?> + + field($model, 'group')->textInput(['maxlength' => true]) ?> + + field($model, 'koef')->textInput() ?> + + field($model, 'timestamp')->textInput() ?> + +
+ isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/margins-groups/_search.php b/backend/views/margins-groups/_search.php new file mode 100644 index 0000000..3915ae8 --- /dev/null +++ b/backend/views/margins-groups/_search.php @@ -0,0 +1,37 @@ + + + diff --git a/backend/views/margins-groups/create.php b/backend/views/margins-groups/create.php new file mode 100644 index 0000000..05112d5 --- /dev/null +++ b/backend/views/margins-groups/create.php @@ -0,0 +1,21 @@ +title = 'Create Margins Groups'; +$this->params['breadcrumbs'][] = ['label' => 'Margins Groups', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins-groups/index.php b/backend/views/margins-groups/index.php new file mode 100644 index 0000000..f032914 --- /dev/null +++ b/backend/views/margins-groups/index.php @@ -0,0 +1,39 @@ +title = 'Margins Groups'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

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

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + 'id', + 'importer_id', + 'margin_id', + 'group', + 'koef', + // 'timestamp', + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> + +
diff --git a/backend/views/margins-groups/update.php b/backend/views/margins-groups/update.php new file mode 100644 index 0000000..da52b39 --- /dev/null +++ b/backend/views/margins-groups/update.php @@ -0,0 +1,21 @@ +title = 'Update Margins Groups: ' . ' ' . $model->id; +$this->params['breadcrumbs'][] = ['label' => 'Margins Groups', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Update'; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins-groups/view.php b/backend/views/margins-groups/view.php new file mode 100644 index 0000000..7da1589 --- /dev/null +++ b/backend/views/margins-groups/view.php @@ -0,0 +1,40 @@ +title = $model->id; +$this->params['breadcrumbs'][] = ['label' => 'Margins Groups', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'importer_id', + 'margin_id', + 'group', + 'koef', + 'timestamp', + ], + ]) ?> + +
diff --git a/backend/views/margins-importers-import/_form.php b/backend/views/margins-importers-import/_form.php new file mode 100644 index 0000000..2205356 --- /dev/null +++ b/backend/views/margins-importers-import/_form.php @@ -0,0 +1,29 @@ + + +
+ + + + field($model, 'importer_id')->textInput() ?> + + field($model, 'margin_id')->textInput() ?> + + field($model, 'koef')->textInput() ?> + + field($model, 'finish')->textInput() ?> + +
+ isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/margins-importers-import/_search.php b/backend/views/margins-importers-import/_search.php new file mode 100644 index 0000000..48544f6 --- /dev/null +++ b/backend/views/margins-importers-import/_search.php @@ -0,0 +1,35 @@ + + + diff --git a/backend/views/margins-importers-import/create.php b/backend/views/margins-importers-import/create.php new file mode 100644 index 0000000..e436a73 --- /dev/null +++ b/backend/views/margins-importers-import/create.php @@ -0,0 +1,21 @@ +title = 'Create Margins Importers Import'; +$this->params['breadcrumbs'][] = ['label' => 'Margins Importers Imports', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins-importers-import/index.php b/backend/views/margins-importers-import/index.php new file mode 100644 index 0000000..dca455a --- /dev/null +++ b/backend/views/margins-importers-import/index.php @@ -0,0 +1,38 @@ +title = 'Margins Importers Imports'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

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

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + 'id', + 'importer_id', + 'margin_id', + 'koef', + 'finish', + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> + +
diff --git a/backend/views/margins-importers-import/update.php b/backend/views/margins-importers-import/update.php new file mode 100644 index 0000000..bc85715 --- /dev/null +++ b/backend/views/margins-importers-import/update.php @@ -0,0 +1,21 @@ +title = 'Update Margins Importers Import: ' . ' ' . $model->id; +$this->params['breadcrumbs'][] = ['label' => 'Margins Importers Imports', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Update'; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins-importers-import/view.php b/backend/views/margins-importers-import/view.php new file mode 100644 index 0000000..6cf4f9b --- /dev/null +++ b/backend/views/margins-importers-import/view.php @@ -0,0 +1,39 @@ +title = $model->id; +$this->params['breadcrumbs'][] = ['label' => 'Margins Importers Imports', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'importer_id', + 'margin_id', + 'koef', + 'finish', + ], + ]) ?> + +
diff --git a/backend/views/margins-importers/_form.php b/backend/views/margins-importers/_form.php new file mode 100644 index 0000000..019b3bf --- /dev/null +++ b/backend/views/margins-importers/_form.php @@ -0,0 +1,27 @@ + + +
+ + + + field($model, 'importer_id')->textInput() ?> + + field($model, 'margin_id')->textInput() ?> + + field($model, 'koef')->textInput() ?> + +
+ isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/margins-importers/_search.php b/backend/views/margins-importers/_search.php new file mode 100644 index 0000000..afdcdfd --- /dev/null +++ b/backend/views/margins-importers/_search.php @@ -0,0 +1,33 @@ + + + diff --git a/backend/views/margins-importers/create.php b/backend/views/margins-importers/create.php new file mode 100644 index 0000000..9c75832 --- /dev/null +++ b/backend/views/margins-importers/create.php @@ -0,0 +1,21 @@ +title = 'Create Margins Importers'; +$this->params['breadcrumbs'][] = ['label' => 'Margins Importers', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins-importers/index.php b/backend/views/margins-importers/index.php new file mode 100644 index 0000000..8545d5b --- /dev/null +++ b/backend/views/margins-importers/index.php @@ -0,0 +1,37 @@ +title = 'Margins Importers'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

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

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + 'id', + 'importer_id', + 'margin_id', + 'koef', + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> + +
diff --git a/backend/views/margins-importers/update.php b/backend/views/margins-importers/update.php new file mode 100644 index 0000000..ed64d20 --- /dev/null +++ b/backend/views/margins-importers/update.php @@ -0,0 +1,21 @@ +title = 'Update Margins Importers: ' . ' ' . $model->id; +$this->params['breadcrumbs'][] = ['label' => 'Margins Importers', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Update'; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins-importers/view.php b/backend/views/margins-importers/view.php new file mode 100644 index 0000000..d53a4d3 --- /dev/null +++ b/backend/views/margins-importers/view.php @@ -0,0 +1,38 @@ +title = $model->id; +$this->params['breadcrumbs'][] = ['label' => 'Margins Importers', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'importer_id', + 'margin_id', + 'koef', + ], + ]) ?> + +
diff --git a/backend/views/margins/_form.php b/backend/views/margins/_form.php new file mode 100644 index 0000000..790617c --- /dev/null +++ b/backend/views/margins/_form.php @@ -0,0 +1,25 @@ + + +
+ + + + field($model, 'name')->textInput(['maxlength' => true]) ?> + + field($model, 'koef')->textInput() ?> + +
+ isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> +
+ + + +
diff --git a/backend/views/margins/_search.php b/backend/views/margins/_search.php new file mode 100644 index 0000000..a8010fc --- /dev/null +++ b/backend/views/margins/_search.php @@ -0,0 +1,31 @@ + + + diff --git a/backend/views/margins/create.php b/backend/views/margins/create.php new file mode 100644 index 0000000..17286cd --- /dev/null +++ b/backend/views/margins/create.php @@ -0,0 +1,21 @@ +title = 'Create Margins'; +$this->params['breadcrumbs'][] = ['label' => 'Margins', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins/index.php b/backend/views/margins/index.php new file mode 100644 index 0000000..4119b5e --- /dev/null +++ b/backend/views/margins/index.php @@ -0,0 +1,36 @@ +title = 'Margins'; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

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

+ 'btn btn-success']) ?> +

+ + $dataProvider, + 'filterModel' => $searchModel, + 'columns' => [ + ['class' => 'yii\grid\SerialColumn'], + + 'id', + 'name', + 'koef', + + ['class' => 'yii\grid\ActionColumn'], + ], + ]); ?> + +
diff --git a/backend/views/margins/update.php b/backend/views/margins/update.php new file mode 100644 index 0000000..9f15648 --- /dev/null +++ b/backend/views/margins/update.php @@ -0,0 +1,21 @@ +title = 'Update Margins: ' . ' ' . $model->name; +$this->params['breadcrumbs'][] = ['label' => 'Margins', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->id]]; +$this->params['breadcrumbs'][] = 'Update'; +?> +
+ +

title) ?>

+ + render('_form', [ + 'model' => $model, + ]) ?> + +
diff --git a/backend/views/margins/view.php b/backend/views/margins/view.php new file mode 100644 index 0000000..eb8b3cc --- /dev/null +++ b/backend/views/margins/view.php @@ -0,0 +1,37 @@ +title = $model->name; +$this->params['breadcrumbs'][] = ['label' => 'Margins', 'url' => ['index']]; +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ +

+ $model->id], ['class' => 'btn btn-primary']) ?> + $model->id], [ + 'class' => 'btn btn-danger', + 'data' => [ + 'confirm' => 'Are you sure you want to delete this item?', + 'method' => 'post', + ], + ]) ?> +

+ + $model, + 'attributes' => [ + 'id', + 'name', + 'koef', + ], + ]) ?> + +
diff --git a/common/models/Currency.php b/common/models/Currency.php new file mode 100644 index 0000000..5352e89 --- /dev/null +++ b/common/models/Currency.php @@ -0,0 +1,55 @@ + 50], + [['name'], 'unique'], + [['is_default'], 'unique'] + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'name' => 'Name', + 'rate' => 'Rate', + 'is_default' => 'Is Default', + 'timestamp' => 'Timestamp', + ]; + } +} diff --git a/common/models/CurrencySearch.php b/common/models/CurrencySearch.php new file mode 100644 index 0000000..45347a5 --- /dev/null +++ b/common/models/CurrencySearch.php @@ -0,0 +1,70 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + $query->andFilterWhere([ + 'id' => $this->id, + 'rate' => $this->rate, + 'is_default' => $this->is_default, + 'timestamp' => $this->timestamp, + ]); + + $query->andFilterWhere(['like', 'name', $this->name]); + + return $dataProvider; + } +} diff --git a/common/models/Margins.php b/common/models/Margins.php new file mode 100644 index 0000000..9b64694 --- /dev/null +++ b/common/models/Margins.php @@ -0,0 +1,48 @@ + 100], + [['name'], 'unique'] + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'name' => 'Name', + 'koef' => 'Koef', + ]; + } +} diff --git a/common/models/MarginsGroups.php b/common/models/MarginsGroups.php new file mode 100644 index 0000000..f6bcc9d --- /dev/null +++ b/common/models/MarginsGroups.php @@ -0,0 +1,56 @@ + 200], + [['importer_id', 'margin_id', 'group'], 'unique', 'targetAttribute' => ['importer_id', 'margin_id', 'group'], 'message' => 'The combination of Importer ID, Margin ID and Group has already been taken.'] + ]; + } + + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'id' => 'ID', + 'importer_id' => 'Importer ID', + 'margin_id' => 'Margin ID', + 'group' => 'Group', + 'koef' => 'Koef', + 'timestamp' => 'Timestamp', + ]; + } +} diff --git a/common/models/MarginsGroupsSearch.php b/common/models/MarginsGroupsSearch.php new file mode 100644 index 0000000..f8b521d --- /dev/null +++ b/common/models/MarginsGroupsSearch.php @@ -0,0 +1,71 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + $query->andFilterWhere([ + 'id' => $this->id, + 'importer_id' => $this->importer_id, + 'margin_id' => $this->margin_id, + 'koef' => $this->koef, + 'timestamp' => $this->timestamp, + ]); + + $query->andFilterWhere(['like', 'group', $this->group]); + + return $dataProvider; + } +} diff --git a/common/models/MarginsSearch.php b/common/models/MarginsSearch.php new file mode 100644 index 0000000..6b272a7 --- /dev/null +++ b/common/models/MarginsSearch.php @@ -0,0 +1,68 @@ + $query, + ]); + + $this->load($params); + + if (!$this->validate()) { + // uncomment the following line if you do not want to return any records when validation fails + // $query->where('0=1'); + return $dataProvider; + } + + $query->andFilterWhere([ + 'id' => $this->id, + 'koef' => $this->koef, + ]); + + $query->andFilterWhere(['like', 'name', $this->name]); + + return $dataProvider; + } +} diff --git a/composer.json b/composer.json index 35aa241..051ae8b 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,8 @@ "yiisoft/yii2": ">=2.0.6", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-swiftmailer": "*", - "yiisoft/yii2-imagine": "*" + "yiisoft/yii2-imagine": "*", + "2amigos/yii2-date-picker-widget": "~1.0" }, "require-dev": { "yiisoft/yii2-codeception": "*", diff --git a/composer.lock b/composer.lock index 108b305..13829cc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,9 +4,70 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "54588d810c5a77b1e177db18875540d1", + "hash": "b50ff742692adc607b39491ed7ed3dd6", "packages": [ { + "name": "2amigos/yii2-date-picker-widget", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/2amigos/yii2-date-picker-widget.git", + "reference": "89cd0d7f00785b608b4a9670016f2795f2e3984d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/2amigos/yii2-date-picker-widget/zipball/89cd0d7f00785b608b4a9670016f2795f2e3984d", + "reference": "89cd0d7f00785b608b4a9670016f2795f2e3984d", + "shasum": "" + }, + "require": { + "bower-asset/bootstrap-datepicker": "1.4.0", + "yiisoft/yii2": "~2.0.0", + "yiisoft/yii2-bootstrap": "~2.0.3" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "yii2-extension", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "asset-installer-paths": { + "bower-asset-library": "vendor/bower" + } + }, + "autoload": { + "psr-4": { + "dosamigos\\datepicker\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "2amigOS! Consulting Group", + "email": "hola@2amigos.us", + "homepage": "http://2amigos.us", + "role": "Developer" + } + ], + "description": "Bootstrap DatePicker widget for Yii2.", + "homepage": "http://yiiwheels.com/extension/bootstrap-datepicker", + "keywords": [ + "2amigos", + "datepicker", + "extension", + "widget", + "yii", + "yii 2", + "yii2" + ], + "time": "2015-04-02 11:48:05" + }, + { "name": "bower-asset/bootstrap", "version": "v3.3.5", "source": { @@ -56,6 +117,37 @@ ] }, { + "name": "bower-asset/bootstrap-datepicker", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/eternicode/bootstrap-datepicker.git", + "reference": "e7ca6bb94dc483817f2ff10fc2b723b2b935e016" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/eternicode/bootstrap-datepicker/zipball/e7ca6bb94dc483817f2ff10fc2b723b2b935e016", + "reference": "e7ca6bb94dc483817f2ff10fc2b723b2b935e016", + "shasum": "" + }, + "require": { + "bower-asset/bootstrap": ">=2.0.4,<4.0", + "bower-asset/jquery": ">=1.7.1" + }, + "type": "bower-asset-library", + "extra": { + "bower-asset-main": [ + "dist/css/bootstrap-datepicker.css", + "dist/css/bootstrap-datepicker3.css", + "js/bootstrap-datepicker.js" + ], + "bower-asset-ignore": [] + }, + "license": [ + "Apache-2.0" + ] + }, + { "name": "bower-asset/jquery", "version": "2.1.4", "source": { diff --git a/framework/css/GridField_print.css b/framework/css/GridField_print.css new file mode 100644 index 0000000..5f28eac --- /dev/null +++ b/framework/css/GridField_print.css @@ -0,0 +1,7 @@ +h3 { font-family: Arial, sans-serif; } + +table { border-collapse: collapse; font-family: Arial, sans-serif; color: #333; font-size: 12pt; } +table th { border-bottom: 2px solid #333; padding: 5px 10px; font-weight: bold; text-align: left; } +table th:first-child { padding-left: 0px; } +table td { border-top: 1px solid #aaa; border-bottom: 1px solid #aaa; text-align: left; padding: 5px 10px; } +table td:first-child { padding-left: 0px; } diff --git a/frontend/assets/InternalAsset.php b/frontend/assets/InternalAsset.php index 6b141a9..7fe9bb0 100644 --- a/frontend/assets/InternalAsset.php +++ b/frontend/assets/InternalAsset.php @@ -23,6 +23,7 @@ class InternalAsset extends AssetBundle 'css/style/selectize.css', 'css/perfect-scrollbar/css/perfect-scrollbar.css', 'js/TrackBar/trackbar.css', + ]; public $js = [ 'js/modal/watch.js', @@ -33,6 +34,7 @@ class InternalAsset extends AssetBundle 'js/select.js', 'js/validation/dist/jquery.validate.js', 'js/TrackBar/trackbar.js', + ]; public $depends = [ 'yii\web\YiiAsset', diff --git a/frontend/views/site/cabinet.php b/frontend/views/site/cabinet.php index 6ad9fb5..5dd8473 100644 --- a/frontend/views/site/cabinet.php +++ b/frontend/views/site/cabinet.php @@ -3,6 +3,8 @@ $this->registerCssFile('/css/about_company.css'); $this->registerCssFile('/css/style/notepad.css'); $this->registerCssFile('/css/style/my_profile.css'); +$this->registerCssFile('//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css'); +$this->registerJsFile('//code.jquery.com/ui/1.11.4/jquery-ui.js'); $this->params['breadcrumbs'][] = $this->title; ?> @@ -330,3 +332,59 @@ $this->params['breadcrumbs'][] = $this->title; + + + + \ No newline at end of file diff --git a/storage/1d1ddd6734c119028f12799e154b3086/200x200.png b/storage/1d1ddd6734c119028f12799e154b3086/200x200.png new file mode 100644 index 0000000..eb1383e Binary files /dev/null and b/storage/1d1ddd6734c119028f12799e154b3086/200x200.png differ diff --git a/storage/1d1ddd6734c119028f12799e154b3086/original.png b/storage/1d1ddd6734c119028f12799e154b3086/original.png new file mode 100644 index 0000000..0fc4a17 Binary files /dev/null and b/storage/1d1ddd6734c119028f12799e154b3086/original.png differ diff --git a/storage/3182b2b494b1d15298baf57954c80fb0/200x200.jpg b/storage/3182b2b494b1d15298baf57954c80fb0/200x200.jpg new file mode 100644 index 0000000..7750035 Binary files /dev/null and b/storage/3182b2b494b1d15298baf57954c80fb0/200x200.jpg differ diff --git a/storage/4929fc8db8a21618cafbaf3cf97e0558/200x200.jpg b/storage/4929fc8db8a21618cafbaf3cf97e0558/200x200.jpg new file mode 100644 index 0000000..f99874f Binary files /dev/null and b/storage/4929fc8db8a21618cafbaf3cf97e0558/200x200.jpg differ diff --git a/storage/4929fc8db8a21618cafbaf3cf97e0558/x.jpg b/storage/4929fc8db8a21618cafbaf3cf97e0558/x.jpg new file mode 100644 index 0000000..bdb3a52 Binary files /dev/null and b/storage/4929fc8db8a21618cafbaf3cf97e0558/x.jpg differ diff --git a/storage/75426b23fbcf471ae0f5059f9ab3d824/200x200.png b/storage/75426b23fbcf471ae0f5059f9ab3d824/200x200.png new file mode 100644 index 0000000..f649048 Binary files /dev/null and b/storage/75426b23fbcf471ae0f5059f9ab3d824/200x200.png differ diff --git a/storage/75426b23fbcf471ae0f5059f9ab3d824/original.png b/storage/75426b23fbcf471ae0f5059f9ab3d824/original.png new file mode 100644 index 0000000..89ac54d Binary files /dev/null and b/storage/75426b23fbcf471ae0f5059f9ab3d824/original.png differ diff --git a/storage/a62948dc31d3269c447bd64fc853ae3a/200x200.jpg b/storage/a62948dc31d3269c447bd64fc853ae3a/200x200.jpg new file mode 100644 index 0000000..a40b1dc Binary files /dev/null and b/storage/a62948dc31d3269c447bd64fc853ae3a/200x200.jpg differ diff --git a/storage/a62948dc31d3269c447bd64fc853ae3a/original.jpg b/storage/a62948dc31d3269c447bd64fc853ae3a/original.jpg new file mode 100644 index 0000000..bc5bf60 Binary files /dev/null and b/storage/a62948dc31d3269c447bd64fc853ae3a/original.jpg differ diff --git a/storage/a62948dc31d3269c447bd64fc853ae3a/x.jpg b/storage/a62948dc31d3269c447bd64fc853ae3a/x.jpg new file mode 100644 index 0000000..bc5bf60 Binary files /dev/null and b/storage/a62948dc31d3269c447bd64fc853ae3a/x.jpg differ diff --git a/storage/a99080da55681122aa044b141e5d8d96/200x200.png b/storage/a99080da55681122aa044b141e5d8d96/200x200.png new file mode 100644 index 0000000..1577fb8 Binary files /dev/null and b/storage/a99080da55681122aa044b141e5d8d96/200x200.png differ diff --git a/storage/a99080da55681122aa044b141e5d8d96/original.png b/storage/a99080da55681122aa044b141e5d8d96/original.png new file mode 100644 index 0000000..22a6af9 Binary files /dev/null and b/storage/a99080da55681122aa044b141e5d8d96/original.png differ diff --git a/storage/af5cc0955fcf2bd15a56efa582ece550/200x200.jpg b/storage/af5cc0955fcf2bd15a56efa582ece550/200x200.jpg new file mode 100644 index 0000000..06b165d Binary files /dev/null and b/storage/af5cc0955fcf2bd15a56efa582ece550/200x200.jpg differ diff --git a/storage/af5cc0955fcf2bd15a56efa582ece550/original.jpg b/storage/af5cc0955fcf2bd15a56efa582ece550/original.jpg new file mode 100644 index 0000000..e2ff0f0 Binary files /dev/null and b/storage/af5cc0955fcf2bd15a56efa582ece550/original.jpg differ diff --git a/storage/b6456643a4e6e41ae8aee94327848b12/200x200.png b/storage/b6456643a4e6e41ae8aee94327848b12/200x200.png new file mode 100644 index 0000000..cc28827 Binary files /dev/null and b/storage/b6456643a4e6e41ae8aee94327848b12/200x200.png differ diff --git a/storage/b6456643a4e6e41ae8aee94327848b12/original.png b/storage/b6456643a4e6e41ae8aee94327848b12/original.png new file mode 100644 index 0000000..72189ee Binary files /dev/null and b/storage/b6456643a4e6e41ae8aee94327848b12/original.png differ diff --git a/storage/bb909ae41e1a3b09c88ea402f74e2caa/200x200.png b/storage/bb909ae41e1a3b09c88ea402f74e2caa/200x200.png new file mode 100644 index 0000000..28e06eb Binary files /dev/null and b/storage/bb909ae41e1a3b09c88ea402f74e2caa/200x200.png differ diff --git a/storage/bb909ae41e1a3b09c88ea402f74e2caa/original.png b/storage/bb909ae41e1a3b09c88ea402f74e2caa/original.png new file mode 100644 index 0000000..e4aed5c Binary files /dev/null and b/storage/bb909ae41e1a3b09c88ea402f74e2caa/original.png differ diff --git a/storage/c24c6caa693896710ec7a0934a911214/200x200.png b/storage/c24c6caa693896710ec7a0934a911214/200x200.png new file mode 100644 index 0000000..e55d368 Binary files /dev/null and b/storage/c24c6caa693896710ec7a0934a911214/200x200.png differ diff --git a/storage/c24c6caa693896710ec7a0934a911214/x.png b/storage/c24c6caa693896710ec7a0934a911214/x.png new file mode 100644 index 0000000..6056379 Binary files /dev/null and b/storage/c24c6caa693896710ec7a0934a911214/x.png differ diff --git a/storage/d732764150f3c6f779d0aed7a35b551e/200x200.jpg b/storage/d732764150f3c6f779d0aed7a35b551e/200x200.jpg new file mode 100644 index 0000000..1537589 Binary files /dev/null and b/storage/d732764150f3c6f779d0aed7a35b551e/200x200.jpg differ diff --git a/storage/d732764150f3c6f779d0aed7a35b551e/original.jpg b/storage/d732764150f3c6f779d0aed7a35b551e/original.jpg new file mode 100644 index 0000000..6b91ec5 Binary files /dev/null and b/storage/d732764150f3c6f779d0aed7a35b551e/original.jpg differ diff --git a/storage/dbd5c1a08753ca919151c7ac628e7df3/200x200.png b/storage/dbd5c1a08753ca919151c7ac628e7df3/200x200.png new file mode 100644 index 0000000..7029285 Binary files /dev/null and b/storage/dbd5c1a08753ca919151c7ac628e7df3/200x200.png differ diff --git a/storage/dbd5c1a08753ca919151c7ac628e7df3/x.png b/storage/dbd5c1a08753ca919151c7ac628e7df3/x.png new file mode 100644 index 0000000..7029285 Binary files /dev/null and b/storage/dbd5c1a08753ca919151c7ac628e7df3/x.png differ diff --git a/storage/ef776ce280114fb3a5aeb80da2692813/200x200.png b/storage/ef776ce280114fb3a5aeb80da2692813/200x200.png new file mode 100644 index 0000000..bf5dc82 Binary files /dev/null and b/storage/ef776ce280114fb3a5aeb80da2692813/200x200.png differ diff --git a/storage/ef776ce280114fb3a5aeb80da2692813/original.png b/storage/ef776ce280114fb3a5aeb80da2692813/original.png new file mode 100644 index 0000000..8c0be1e Binary files /dev/null and b/storage/ef776ce280114fb3a5aeb80da2692813/original.png differ -- libgit2 0.21.4