diff --git a/.gitignore b/.gitignore index 53001ac..fc56960 100755 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea /uploads /vendor -tests/_output/* \ No newline at end of file +tests/_output/* +composer.lock \ No newline at end of file diff --git a/backend/components/.gitignore b/backend/components/.gitignore old mode 100644 new mode 100755 index b47e7f9..b47e7f9 --- a/backend/components/.gitignore +++ b/backend/components/.gitignore diff --git a/backend/components/FieldEditor/FieldEditor.php b/backend/components/FieldEditor/FieldEditor.php old mode 100644 new mode 100755 index 82a0b41..82a0b41 --- a/backend/components/FieldEditor/FieldEditor.php +++ b/backend/components/FieldEditor/FieldEditor.php diff --git a/backend/components/FieldEditor/views/phone_field.php b/backend/components/FieldEditor/views/phone_field.php old mode 100644 new mode 100755 index 28078ff..28078ff --- a/backend/components/FieldEditor/views/phone_field.php +++ b/backend/components/FieldEditor/views/phone_field.php diff --git a/backend/components/FieldEditor/views/price_field.php b/backend/components/FieldEditor/views/price_field.php old mode 100644 new mode 100755 index 5f552fd..5f552fd --- a/backend/components/FieldEditor/views/price_field.php +++ b/backend/components/FieldEditor/views/price_field.php diff --git a/backend/components/FieldEditor/views/video_field.php b/backend/components/FieldEditor/views/video_field.php old mode 100644 new mode 100755 index 769b608..769b608 --- a/backend/components/FieldEditor/views/video_field.php +++ b/backend/components/FieldEditor/views/video_field.php diff --git a/backend/components/ImgResizer.php b/backend/components/ImgResizer.php new file mode 100755 index 0000000..9b8c372 --- /dev/null +++ b/backend/components/ImgResizer.php @@ -0,0 +1,214 @@ +request->post(); + + if ($request) { + + if(isset($request['old_img'])){ + $this->deleteImages($request['old_img']); + } + + + $model->file = UploadedFile::getInstance($model, 'file'); + + $md5_file = md5_file($model->file->tempName); + + $imgDir = Yii::getAlias('@storage/'.$md5_file.'/'); + + $imageOrigAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file->extension); + + if(!is_dir($imgDir)) { + mkdir($imgDir, 0755, true); + } + + $model->file->saveAs($imageOrigAlias); + + if($request['width'] && $request['height']){ + + $imageAlias = Yii::getAlias($imgDir.$request['width'].'x'.$request['height'].'.'.$model->file->extension); + + $imageLink = '/storage/'.$md5_file.'/'.$request['width'].'x'.$request['height'].'.'.$model->file->extension; + + $this->resizeImg($request['width'],$request['height'], $imageOrigAlias,$imageAlias); + + } else { + + $imageLink = '/storage/'.$md5_file.'/'.'original'.'.'.$model->file->extension; + + } + + + if($model->multi){ +// $view = $this->renderPartial('@app/components/views/_gallery_item', [ +// 'item' => ['image'=>$imageLink], +// ]); +// +// return json_encode(['link'=>$imageLink, 'view' =>$view]); + + + } else { + $p1[0] = ""; + return json_encode(['success','initialPreview' => $p1, 'append' => false, 'name' =>$imageLink,]); + } + + + } else { + return json_encode(['error']); + } + + + + + } + + + public function isBigger($width,$height,$w,$h) + { + if($width>$w){ + return true; + }else if($height >$h) { + return true; + } + return false; + } + + + public function getImgSize($width,$height,$e){ + if($e>1){ + if($height>$width){ + $this->width = $width; + $this->height = $height/$e; + } else { + $this->height = $height; + $this->width= $width/$e; + } + + } else { + if($width >$height ){ + $this->height = $height; + $this->width = $width*$e; + } else { + $this->width = $width; + $this->height = $height*$e; + } + + } + } + + + + + public function resizeImg($w, $h, $imageAlias,$imageAliasSave) + { + $img = Image::getImagine()->open(Yii::getAlias($imageAlias)); + + $size = $img->getSize(); + + $width = $size->getWidth(); + $height = $size->getHeight(); + + $e = $w/$h; + + if($this->isBigger($width,$height,$w,$h)){ + if($height > $width) { + + $x = 0; + $y = ($height - $width) / 2; + $e1 = $width/$height; + + $height = $height*($e1/$e); + + }else if($height == $width){ + $x = 0; + $y = ($height - $width) / 2; + + + $height = $height/$e; + }else { + $y = 0; + $x = ($width - $height) / 2; + $e1 = $width/$height; + + $width = $width*($e/$e1); + } + } else { + $img->save($imageAliasSave, array('flatten' => false)); + return true; + } + + + + + + Image::crop($imageAlias, $width, $height,[$x,$y]) + ->save(Yii::getAlias($imageAliasSave), ['quality' => + 100]); + + + $imagine = new Imagine(); + $imagine->open($imageAliasSave) + ->resize(new Box($w, $h)) + ->save($imageAliasSave, array('flatten' => false)); + + + + } + + + private function deleteImages($old_img){ + + if(!empty($old_img) && file_exists($_SERVER['DOCUMENT_ROOT'].$old_img)){ + + $rootDir = explode("/", $old_img); + + $row = $_SERVER['DOCUMENT_ROOT'].'/'.$rootDir[1].'/'.$rootDir[2].'/'; + + $allFiles = scandir($row); + + $allFiles = array_slice($allFiles, 2); + + foreach($allFiles as $oldFile){ + + unlink($row.$oldFile); + + } + + } + } + + public function actionDeleteImage(){ + $old_img = Yii::$app->request->post('old_img'); + + if ($old_img) { + $this->deleteImages($old_img); + } + } + + + +} \ No newline at end of file diff --git a/backend/controllers/NewsController.php b/backend/controllers/NewsController.php index 863a4de..f33dadf 100755 --- a/backend/controllers/NewsController.php +++ b/backend/controllers/NewsController.php @@ -2,12 +2,16 @@ namespace backend\controllers; +use backend\models\ImageSizerForm; +use backend\models\UploadForm; use Yii; use common\models\News; use common\models\NewsSearch; use yii\web\Controller; use yii\web\NotFoundHttpException; use yii\filters\VerbFilter; +use yii\web\UploadedFile; +use backend\components\ImgResizer; /** * NewsController implements the CRUD actions for News model. @@ -120,4 +124,11 @@ class NewsController extends Controller throw new NotFoundHttpException('The requested page does not exist.'); } } + + + public function actionFileUpload(){ + + echo ImgResizer::widget(); + + } } diff --git a/backend/models/ImageSizerForm.php b/backend/models/ImageSizerForm.php index 92f430a..278d1e2 100755 --- a/backend/models/ImageSizerForm.php +++ b/backend/models/ImageSizerForm.php @@ -20,6 +20,8 @@ class ImageSizerForm extends Model public $form; public $multi; public $old_img; + public $img; + public $price_list; /** * @return array the validation rules. @@ -30,7 +32,7 @@ class ImageSizerForm extends Model [['width', 'height'], 'integer'], [['field', 'multi','old_img'], 'string', 'max' => 255], [['model', 'form',], 'string'], - [['file'], 'file'], + [['file','img','price_list'], 'file'], ]; } } \ No newline at end of file diff --git a/backend/models/UploadForm.php b/backend/models/UploadForm.php new file mode 100755 index 0000000..87a0814 --- /dev/null +++ b/backend/models/UploadForm.php @@ -0,0 +1,27 @@ +field($model, 'country')->textInput() ?> - -field($model, 'rating')->textInput() ?> - -field($model, 'last_loginin')->textInput(['maxlength' => true]) ?> - -field($model, 'balance')->textInput() ?> - -field($model, 'office_id')->textInput() ?> - -field($model, 'car')->textInput() ?> - -field($model, 'mod')->textInput() ?> - -field($model, 'snumb')->textInput(['maxlength' => true]) ?> - -field($model, 'deliveries')->textInput() ?> - - - - -
isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
diff --git a/backend/views/news/_form.php b/backend/views/news/_form.php index cd193cf..0e6e20b 100755 --- a/backend/views/news/_form.php +++ b/backend/views/news/_form.php @@ -3,7 +3,8 @@ use yii\helpers\Html; use mihaildev\ckeditor\CKEditor; use yii\widgets\ActiveForm; - +use kartik\file\FileInput; +use \yii\helpers\Url; /* @var $this yii\web\View */ /* @var $model common\models\News */ /* @var $form yii\widgets\ActiveForm */ @@ -49,9 +50,48 @@ use yii\widgets\ActiveForm; field($model, 'mails_count')->textInput() ?> - field($model, 'img')->textInput(['maxlength' => true]) ?> - field($model, 'img')->widget(FileInput::classname(), [ - 'options' => ['accept' => 'image/*'], + + + field(new \backend\models\ImageSizerForm(), 'file')->widget(FileInput::classname(), [ + 'name' => 'file', + 'options' => [ + ['accept' => 'image/*'] + ], + 'pluginOptions' => [ + 'initialPreview'=>[ + Html::img($model->img, ['class'=>'file-preview-image']), + ], + 'uploadUrl' => Url::to(['/news/file-upload']), + 'overwriteInitial'=>true, + 'uploadExtraData'=> ['width' => 240, 'height' => 160] + + ], + 'pluginEvents' => [ + 'fileuploaded' => 'function(event, key) { document.getElementsByName("News[img]")[0].value = key.response.name }', + ] + + + ]);?> + + field(new \backend\models\ImageSizerForm(), 'price_list')->widget(FileInput::classname(), [ + 'name' => 'file', + 'options' => [ + ['accept' => 'image/*'] + ], + 'pluginOptions' => [ + 'initialPreview'=>[ + Html::img($model->price_list, ['class'=>'file-preview-image']), + ], + 'uploadUrl' => Url::to(['/news/file-upload']), + 'overwriteInitial'=>true, + 'uploadExtraData'=> ['width' => 240, 'height' => 160] + + ], + 'pluginEvents' => [ + 'fileuploaded' => 'function(event, key) { document.getElementsByName("News[img]")[0].value = key.response.name }', + ] + + ]); ?>
isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> diff --git a/codeception.yml b/codeception.yml old mode 100644 new mode 100755 index 5e0f37d..5e0f37d --- a/codeception.yml +++ b/codeception.yml diff --git a/common/models/DetailsCriteria.php b/common/models/DetailsCriteria.php old mode 100644 new mode 100755 index 3eed639..3eed639 --- a/common/models/DetailsCriteria.php +++ b/common/models/DetailsCriteria.php diff --git a/common/models/DetailsDescription.php b/common/models/DetailsDescription.php old mode 100644 new mode 100755 index bbd33cf..bbd33cf --- a/common/models/DetailsDescription.php +++ b/common/models/DetailsDescription.php diff --git a/common/models/News.php b/common/models/News.php index f7896d4..ff90e62 100755 --- a/common/models/News.php +++ b/common/models/News.php @@ -21,6 +21,7 @@ use Yii; * @property integer $mail_send * @property integer $mails_count * @property string $img + * @property string $price_list */ class News extends \yii\db\ActiveRecord { @@ -42,8 +43,9 @@ class News extends \yii\db\ActiveRecord return [ [['name', 'code', 'brief', 'content', 'title', 'kwords', 'descr', 'dt', 'is_active', 'img'], 'required'], [['brief', 'content'], 'string'], + [['img'], 'file'], [['sort_delete', 'is_active', 'mail_send', 'mails_count'], 'integer'], - [['name', 'code', 'title', 'kwords', 'descr', 'img'], 'string', 'max' => 254], + [['name', 'code', 'title', 'kwords', 'descr', 'img','price_list'], 'string', 'max' => 254], [['dt'], 'string', 'max' => 15], [['code'], 'unique'] ]; @@ -54,6 +56,25 @@ class News extends \yii\db\ActiveRecord } + function minImg($dir, $width, $height=null){ + if($width=='original'){ + $preg = '/\/(.[^\/]*)$/'; + preg_match('/\.(.[^.]*)$/', $dir, $type); + $row = preg_replace( $preg, '/original.'.$type[1], $dir); + } else { + $preg = '/\/(.[^\/]*)$/'; + preg_match('/\.(.[^.]*)$/', $dir, $type); + $row = preg_replace( $preg, '/'.$width.'X'.$height.'.'.$type[1], $dir); + } + return $row; +// if(file_exists($_SERVER['DOCUMENT_ROOT'].$row)){ +// return $row; +// } else { +// return "/storage/no-image.png"; +// } + + } + /** * @inheritdoc */ @@ -74,6 +95,7 @@ class News extends \yii\db\ActiveRecord 'mail_send' => 'Mail Send', 'mails_count' => 'Mails Count', 'img' => 'Img', + 'price_list' => 'price_list', ]; } } diff --git a/composer.json b/composer.json index c9c947b..b41348b 100755 --- a/composer.json +++ b/composer.json @@ -25,7 +25,8 @@ "kartik-v/yii2-datecontrol": "dev-master", "codeception/codeception": "*", "2amigos/yii2-ckeditor-widget": "~1.0", - "mihaildev/yii2-ckeditor": "*" + "mihaildev/yii2-ckeditor": "*", + "kartik-v/yii2-widget-fileinput": "@dev" }, "require-dev": { "yiisoft/yii2-codeception": "*", diff --git a/console/migrations/m151116_153942_add_field_to_news.php b/console/migrations/m151116_153942_add_field_to_news.php new file mode 100644 index 0000000..42140a7 --- /dev/null +++ b/console/migrations/m151116_153942_add_field_to_news.php @@ -0,0 +1,36 @@ +execute($view); + + } + + public function down() + { + echo "m151116_153942_add_field_to_news cannot be reverted.\n"; + + return false; + } + + /* + // Use safeUp/safeDown to run migration code within a transaction + public function safeUp() + { + } + + public function safeDown() + { + } + */ +} diff --git a/frontend/views/news/one_item.php b/frontend/views/news/one_item.php index 27e9f1e..aa7658d 100755 --- a/frontend/views/news/one_item.php +++ b/frontend/views/news/one_item.php @@ -4,7 +4,7 @@ use \yii\helpers\Html;
- img),['news/view', 'translit' =>$model->code ]) ?> + img),['news/view', 'translit' =>$model->code ]) ?> date?>
".$model->name."

",['news/view', 'translit' =>$model->code ]) ?> ".$model->brief."

",['news/view', 'translit' =>$model->code ]) ?> diff --git a/frontend/views/news/view.php b/frontend/views/news/view.php index 2b70711..f5737f0 100755 --- a/frontend/views/news/view.php +++ b/frontend/views/news/view.php @@ -10,7 +10,7 @@ $this->params['breadcrumbs'][] = $this->title;

name ?>

- +
content ?>
diff --git a/frontend/web/css/news_all.css b/frontend/web/css/news_all.css index 3e479f1..e3d8a21 100755 --- a/frontend/web/css/news_all.css +++ b/frontend/web/css/news_all.css @@ -40,11 +40,3 @@ p, a, label, span{ } -.news{ - width: 480px; - display: inline-block; -} - -.news img{ - border:1px solid #dfdfdf; -} \ No newline at end of file diff --git a/frontend/web/css/style/news_all.css b/frontend/web/css/style/news_all.css index 9f4c93f..1e79046 100755 --- a/frontend/web/css/style/news_all.css +++ b/frontend/web/css/style/news_all.css @@ -226,4 +226,9 @@ p, a, label, span{ .small_menu_width { +} + +.news a img{ + width: 120px; + height: 80px; } \ No newline at end of file diff --git a/storage/parser_data/auto/5648.csv b/storage/parser_data/auto/5648.csv old mode 100644 new mode 100755 index a2641d5..a2641d5 --- a/storage/parser_data/auto/5648.csv +++ b/storage/parser_data/auto/5648.csv diff --git a/storage/parser_data/temp/5648.csv b/storage/parser_data/temp/5648.csv old mode 100644 new mode 100755 index a2641d5..a2641d5 --- a/storage/parser_data/temp/5648.csv +++ b/storage/parser_data/temp/5648.csv diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php old mode 100644 new mode 100755 index cba1c7e..cba1c7e --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php diff --git a/tests/_data/dump.sql b/tests/_data/dump.sql old mode 100644 new mode 100755 index 4bc742c..4bc742c --- a/tests/_data/dump.sql +++ b/tests/_data/dump.sql diff --git a/tests/_data/parser/crosses/test1.csv b/tests/_data/parser/crosses/test1.csv old mode 100644 new mode 100755 index a221c4d..a221c4d --- a/tests/_data/parser/crosses/test1.csv +++ b/tests/_data/parser/crosses/test1.csv diff --git a/tests/_data/parser/csv_parser/console.csv b/tests/_data/parser/csv_parser/console.csv old mode 100644 new mode 100755 index a2641d5..a2641d5 --- a/tests/_data/parser/csv_parser/console.csv +++ b/tests/_data/parser/csv_parser/console.csv diff --git a/tests/_data/parser/csv_parser/web.csv b/tests/_data/parser/csv_parser/web.csv old mode 100644 new mode 100755 index 622c07e..622c07e --- a/tests/_data/parser/csv_parser/web.csv +++ b/tests/_data/parser/csv_parser/web.csv diff --git a/tests/_data/parser/xml_parser/console.xml b/tests/_data/parser/xml_parser/console.xml old mode 100644 new mode 100755 index 3b6b788..3b6b788 --- a/tests/_data/parser/xml_parser/console.xml +++ b/tests/_data/parser/xml_parser/console.xml diff --git a/tests/_output/.gitignore b/tests/_output/.gitignore old mode 100644 new mode 100755 index c96a04f..c96a04f --- a/tests/_output/.gitignore +++ b/tests/_output/.gitignore diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php old mode 100644 new mode 100755 index bfa59cb..bfa59cb --- a/tests/_support/AcceptanceTester.php +++ b/tests/_support/AcceptanceTester.php diff --git a/tests/_support/FunctionalTester.php b/tests/_support/FunctionalTester.php old mode 100644 new mode 100755 index 8f9d5f2..8f9d5f2 --- a/tests/_support/FunctionalTester.php +++ b/tests/_support/FunctionalTester.php diff --git a/tests/_support/Helper/Acceptance.php b/tests/_support/Helper/Acceptance.php old mode 100644 new mode 100755 index dde2082..dde2082 --- a/tests/_support/Helper/Acceptance.php +++ b/tests/_support/Helper/Acceptance.php diff --git a/tests/_support/Helper/Functional.php b/tests/_support/Helper/Functional.php old mode 100644 new mode 100755 index 34fbe73..34fbe73 --- a/tests/_support/Helper/Functional.php +++ b/tests/_support/Helper/Functional.php diff --git a/tests/_support/Helper/Unit.php b/tests/_support/Helper/Unit.php old mode 100644 new mode 100755 index 4862e82..4862e82 --- a/tests/_support/Helper/Unit.php +++ b/tests/_support/Helper/Unit.php diff --git a/tests/_support/UnitTester.php b/tests/_support/UnitTester.php old mode 100644 new mode 100755 index 68c09cf..68c09cf --- a/tests/_support/UnitTester.php +++ b/tests/_support/UnitTester.php diff --git a/tests/_support/_generated/AcceptanceTesterActions.php b/tests/_support/_generated/AcceptanceTesterActions.php old mode 100644 new mode 100755 index 1cbee23..1cbee23 --- a/tests/_support/_generated/AcceptanceTesterActions.php +++ b/tests/_support/_generated/AcceptanceTesterActions.php diff --git a/tests/_support/_generated/FunctionalTesterActions.php b/tests/_support/_generated/FunctionalTesterActions.php old mode 100644 new mode 100755 index 8d28b3f..8d28b3f --- a/tests/_support/_generated/FunctionalTesterActions.php +++ b/tests/_support/_generated/FunctionalTesterActions.php diff --git a/tests/_support/_generated/UnitTesterActions.php b/tests/_support/_generated/UnitTesterActions.php old mode 100644 new mode 100755 index a23ad43..a23ad43 --- a/tests/_support/_generated/UnitTesterActions.php +++ b/tests/_support/_generated/UnitTesterActions.php diff --git a/tests/acceptance.suite.yml b/tests/acceptance.suite.yml old mode 100644 new mode 100755 index 2269e0c..2269e0c --- a/tests/acceptance.suite.yml +++ b/tests/acceptance.suite.yml diff --git a/tests/acceptance/_bootstrap.php b/tests/acceptance/_bootstrap.php old mode 100644 new mode 100755 index 8a88555..8a88555 --- a/tests/acceptance/_bootstrap.php +++ b/tests/acceptance/_bootstrap.php diff --git a/tests/config/main.php b/tests/config/main.php old mode 100644 new mode 100755 index cf438a1..cf438a1 --- a/tests/config/main.php +++ b/tests/config/main.php diff --git a/tests/functional.suite.yml b/tests/functional.suite.yml old mode 100644 new mode 100755 index 075765b..075765b --- a/tests/functional.suite.yml +++ b/tests/functional.suite.yml diff --git a/tests/functional/_bootstrap.php b/tests/functional/_bootstrap.php old mode 100644 new mode 100755 index 8a88555..8a88555 --- a/tests/functional/_bootstrap.php +++ b/tests/functional/_bootstrap.php diff --git a/tests/unit.suite.yml b/tests/unit.suite.yml old mode 100644 new mode 100755 index 02dc9b1..02dc9b1 --- a/tests/unit.suite.yml +++ b/tests/unit.suite.yml diff --git a/tests/unit/BaseConverterTest.php b/tests/unit/BaseConverterTest.php old mode 100644 new mode 100755 index 935e836..935e836 --- a/tests/unit/BaseConverterTest.php +++ b/tests/unit/BaseConverterTest.php diff --git a/tests/unit/CrossesParsingTest.php b/tests/unit/CrossesParsingTest.php old mode 100644 new mode 100755 index 8283f13..8283f13 --- a/tests/unit/CrossesParsingTest.php +++ b/tests/unit/CrossesParsingTest.php diff --git a/tests/unit/CsvParsingTest.php b/tests/unit/CsvParsingTest.php old mode 100644 new mode 100755 index 2907165..2907165 --- a/tests/unit/CsvParsingTest.php +++ b/tests/unit/CsvParsingTest.php diff --git a/tests/unit/XmlParsingTest.php b/tests/unit/XmlParsingTest.php old mode 100644 new mode 100755 index 352e7b9..352e7b9 --- a/tests/unit/XmlParsingTest.php +++ b/tests/unit/XmlParsingTest.php diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php old mode 100644 new mode 100755 index 8a88555..8a88555 --- a/tests/unit/_bootstrap.php +++ b/tests/unit/_bootstrap.php -- libgit2 0.21.4