Commit ab6d9045406e5d61ea9238cb1e39079c37457cd4
1 parent
06d508f3
add Vitaliy's widgets
Showing
8 changed files
with
53 additions
and
235 deletions
Show diff stats
common/config/bootstrap.php
| @@ -4,3 +4,4 @@ Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend'); | @@ -4,3 +4,4 @@ Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend'); | ||
| 4 | Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend'); | 4 | Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend'); |
| 5 | Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console'); | 5 | Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console'); |
| 6 | Yii::setAlias('saveImageDir', '@frontend/web/images/upload/'); | 6 | Yii::setAlias('saveImageDir', '@frontend/web/images/upload/'); |
| 7 | +Yii::setAlias('storage', dirname(dirname(__DIR__)) . '/storage'); |
common/config/main.php
| @@ -34,6 +34,10 @@ return [ | @@ -34,6 +34,10 @@ return [ | ||
| 34 | 'blog' => [ | 34 | 'blog' => [ |
| 35 | 'class' => 'common\modules\blog\Module', | 35 | 'class' => 'common\modules\blog\Module', |
| 36 | ], | 36 | ], |
| 37 | + 'file' => [ | ||
| 38 | + 'class' => 'common\modules\file\Module', | ||
| 39 | + ], | ||
| 40 | + | ||
| 37 | ], | 41 | ], |
| 38 | 'bootstrap' => [ | 42 | 'bootstrap' => [ |
| 39 | 'options' | 43 | 'options' |
common/modules/file/controller/DefaultController.php deleted
| 1 | -<?php | ||
| 2 | -/** | ||
| 3 | - * Created by PhpStorm. | ||
| 4 | - * User: Cibermag | ||
| 5 | - * Date: 31.08.2015 | ||
| 6 | - * Time: 9:58 | ||
| 7 | - */ | ||
| 8 | -namespace common\modules\file\controllers; | ||
| 9 | -use Yii; | ||
| 10 | -use yii\web\UploadedFile; | ||
| 11 | -use common\models\ImageSizerForm; | ||
| 12 | -use yii\web\Controller; | ||
| 13 | -use Imagine\Gd\Imagine; | ||
| 14 | -use Imagine\Image\Box; | ||
| 15 | -use yii\imagine\Image; | ||
| 16 | - | ||
| 17 | -class DefaultController extends Controller { | ||
| 18 | - | ||
| 19 | - public function isBigger($width,$height,$w,$h) | ||
| 20 | - { | ||
| 21 | - if($width>$w){ | ||
| 22 | - return true; | ||
| 23 | - }else if($height >$h) { | ||
| 24 | - return true; | ||
| 25 | - } | ||
| 26 | - return false; | ||
| 27 | - } | ||
| 28 | - | ||
| 29 | - public function actionIndex(){ | ||
| 30 | - die('hello'); | ||
| 31 | - } | ||
| 32 | - | ||
| 33 | - private function resizeImg($w, $h, $imageAlias,$imageAliasSave){ | ||
| 34 | - $img = Image::getImagine()->open(Yii::getAlias($imageAlias)); | ||
| 35 | - | ||
| 36 | - $size = $img->getSize(); | ||
| 37 | - | ||
| 38 | - $width = $size->getWidth(); | ||
| 39 | - $height = $size->getHeight(); | ||
| 40 | - | ||
| 41 | - $e_width = $w/$h; | ||
| 42 | - $e_height = $h/$w; | ||
| 43 | - | ||
| 44 | - $e1_width = $width/$height; | ||
| 45 | - $e1_height = $height/$width; | ||
| 46 | - | ||
| 47 | - | ||
| 48 | - if($this->isBigger($width,$height,$w,$h)){ | ||
| 49 | - if($e_width<$e1_width){ | ||
| 50 | - | ||
| 51 | - $new_width = $width*($e_width/$e1_width); | ||
| 52 | - | ||
| 53 | - $y = 0; | ||
| 54 | - $x = $width/ 2-($new_width/2); | ||
| 55 | - $width = $new_width; | ||
| 56 | - | ||
| 57 | - }else { | ||
| 58 | - | ||
| 59 | - $new_height = $height*($e_height/$e1_height); | ||
| 60 | - $x = 0; | ||
| 61 | - $y = $height/2-($new_height/2); | ||
| 62 | - $height = $new_height; | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - | ||
| 66 | - } else { | ||
| 67 | - $img->save($imageAliasSave, array('flatten' => false)); | ||
| 68 | - return true; | ||
| 69 | - } | ||
| 70 | - | ||
| 71 | - | ||
| 72 | - Image::crop($imageAlias, $width, $height,[$x,$y]) | ||
| 73 | - ->save(Yii::getAlias($imageAliasSave), ['quality' => | ||
| 74 | - 100]); | ||
| 75 | - | ||
| 76 | - | ||
| 77 | - $imagine = new Imagine(); | ||
| 78 | - $imagine->open($imageAliasSave) | ||
| 79 | - ->resize(new Box($w, $h)) | ||
| 80 | - ->save($imageAliasSave, array('flatten' => false)); | ||
| 81 | - | ||
| 82 | - | ||
| 83 | - | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - private function deleteImages($old_img){ | ||
| 87 | - | ||
| 88 | - if(!empty($old_img) && file_exists($_SERVER['DOCUMENT_ROOT'].$old_img)){ | ||
| 89 | - | ||
| 90 | -// $rootDir = explode("/", $old_img); | ||
| 91 | -// | ||
| 92 | -// $row = $_SERVER['DOCUMENT_ROOT'].'/'.$rootDir[1].'/'.$rootDir[2].'/'; | ||
| 93 | -// | ||
| 94 | -// $allFiles = scandir($row); | ||
| 95 | -// | ||
| 96 | -// $allFiles = array_slice($allFiles, 2); | ||
| 97 | -// | ||
| 98 | -// foreach($allFiles as $oldFile){ | ||
| 99 | -// | ||
| 100 | -// unlink($row.$oldFile); | ||
| 101 | -// | ||
| 102 | -// } | ||
| 103 | - | ||
| 104 | - } | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - public function actionDeleteImage(){ | ||
| 108 | - | ||
| 109 | - $request = Yii::$app->request->post(); | ||
| 110 | - | ||
| 111 | - if($request){ | ||
| 112 | - if ($request['old_img']) { | ||
| 113 | - $this->deleteImages($request['old_img']); | ||
| 114 | - } | ||
| 115 | - if(isset($request['action']) && $request['action']=='save'){ | ||
| 116 | - $object = str_replace('-', '\\',$request['model']); | ||
| 117 | - $model = new $object; | ||
| 118 | - $model = $model->findOne($request['id']); | ||
| 119 | - $model->$request['field'] = $request['new_url']; | ||
| 120 | -// print_r($model->validate()); | ||
| 121 | -// print_r($model->getErrors()); | ||
| 122 | -// die(var_dump($model->save())); | ||
| 123 | - $model->save(); | ||
| 124 | - } | ||
| 125 | - } | ||
| 126 | - | ||
| 127 | - } | ||
| 128 | - | ||
| 129 | - | ||
| 130 | - public function actionDownloadPhoto() | ||
| 131 | - { | ||
| 132 | - | ||
| 133 | - $model = new ImageSizerForm(); | ||
| 134 | - | ||
| 135 | - $request = Yii::$app->request->post(); | ||
| 136 | - if ($request) { | ||
| 137 | - | ||
| 138 | - $model->file = UploadedFile::getInstance($model, 'file'); | ||
| 139 | - | ||
| 140 | - $md5_file = md5_file($model->file->tempName); | ||
| 141 | - | ||
| 142 | - $imgDir = Yii::getAlias('@storage/'.$md5_file.'/'); | ||
| 143 | - | ||
| 144 | - $imageOrigAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file->extension); | ||
| 145 | - | ||
| 146 | - if(!is_dir($imgDir)) { | ||
| 147 | - mkdir($imgDir, 0755, true); | ||
| 148 | - } | ||
| 149 | - | ||
| 150 | - $model->file->saveAs($imageOrigAlias); | ||
| 151 | - | ||
| 152 | - if($request['width'] && $request['height']){ | ||
| 153 | - | ||
| 154 | - $imageAlias = Yii::getAlias($imgDir.$request['width'].'x'.$request['height'].'.'.$model->file->extension); | ||
| 155 | - | ||
| 156 | - $imageLink = '/storage/'.$md5_file.'/'.$request['width'].'x'.$request['height'].'.'.$model->file->extension; | ||
| 157 | - | ||
| 158 | - $this->resizeImg($request['width'], $request['height'], $imageOrigAlias,$imageAlias); | ||
| 159 | - | ||
| 160 | - } else { | ||
| 161 | - | ||
| 162 | - $imageLink = '/storage/'.$md5_file.'/'.'original'.'.'.$model->file->extension; | ||
| 163 | - | ||
| 164 | - } | ||
| 165 | - | ||
| 166 | - | ||
| 167 | - if($model->multi){ | ||
| 168 | - $view = $this->renderPartial('@app/components/views/_gallery_item', [ | ||
| 169 | - 'item' => ['image'=>$imageLink], | ||
| 170 | - ]); | ||
| 171 | - | ||
| 172 | - return json_encode(['link'=>$imageLink, 'view' =>$view]); | ||
| 173 | - | ||
| 174 | - | ||
| 175 | - } else { | ||
| 176 | - return json_encode(['link'=>$imageLink]); | ||
| 177 | - } | ||
| 178 | - | ||
| 179 | - | ||
| 180 | - } | ||
| 181 | - } | ||
| 182 | - | ||
| 183 | - | ||
| 184 | - public function getex($filename) { | ||
| 185 | - return end(explode(".", $filename)); | ||
| 186 | - } | ||
| 187 | - | ||
| 188 | - | ||
| 189 | - public function actionImagesUpload(){ | ||
| 190 | - if($_FILES['upload']) | ||
| 191 | - { | ||
| 192 | - if (($_FILES['upload'] == "none") OR (empty($_FILES['upload']['name'])) ) | ||
| 193 | - { | ||
| 194 | - $message = "Вы не выбрали файл"; | ||
| 195 | - } | ||
| 196 | - else if ($_FILES['upload']["size"] == 0 OR $_FILES['upload']["size"] > 2050000) | ||
| 197 | - { | ||
| 198 | - $message = "Размер файла не соответствует нормам"; | ||
| 199 | - } | ||
| 200 | - else if (($_FILES['upload']["type"] != "image/jpeg") AND ($_FILES['upload']["type"] != "image/jpeg") AND ($_FILES['upload']["type"] != "image/png") AND ($_FILES['upload']['type'] != 'image/gif')) | ||
| 201 | - { | ||
| 202 | - $message = "Допускается загрузка только картинок JPG и PNG."; | ||
| 203 | - } | ||
| 204 | - else if (!is_uploaded_file($_FILES['upload']["tmp_name"])) | ||
| 205 | - { | ||
| 206 | - $message = "Что-то пошло не так. Попытайтесь загрузить файл ещё раз."; | ||
| 207 | - } | ||
| 208 | - else{ | ||
| 209 | - $name =rand(1, 1000).md5($_FILES['upload']['name']).'.'.$this->getex($_FILES['upload']['name']); | ||
| 210 | - move_uploaded_file($_FILES['upload']['tmp_name'], "../../storage/images/".$name); | ||
| 211 | - $full_path = '/storage/images/'.$name; | ||
| 212 | - $message = "Файл ".$_FILES['upload']['name']." загружен"; | ||
| 213 | - $size=@getimagesize('images/'.$name); | ||
| 214 | - | ||
| 215 | - } | ||
| 216 | - $callback = $_REQUEST['CKEditorFuncNum']; | ||
| 217 | - echo '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction("'.$callback.'", "'.$full_path.'", "'.$message.'" );</script>'; | ||
| 218 | - } | ||
| 219 | - } | ||
| 220 | - | ||
| 221 | - | ||
| 222 | -} | ||
| 223 | \ No newline at end of file | 0 | \ No newline at end of file |
frontend/controllers/FileController.php renamed to common/modules/file/controllers/UploaderController.php
| @@ -5,7 +5,7 @@ | @@ -5,7 +5,7 @@ | ||
| 5 | * Date: 31.08.2015 | 5 | * Date: 31.08.2015 |
| 6 | * Time: 9:58 | 6 | * Time: 9:58 |
| 7 | */ | 7 | */ |
| 8 | -namespace frontend\controllers; | 8 | +namespace common\modules\file\controllers; |
| 9 | use Yii; | 9 | use Yii; |
| 10 | use yii\web\UploadedFile; | 10 | use yii\web\UploadedFile; |
| 11 | use common\models\ImageSizerForm; | 11 | use common\models\ImageSizerForm; |
| @@ -14,7 +14,7 @@ use Imagine\Gd\Imagine; | @@ -14,7 +14,7 @@ use Imagine\Gd\Imagine; | ||
| 14 | use Imagine\Image\Box; | 14 | use Imagine\Image\Box; |
| 15 | use yii\imagine\Image; | 15 | use yii\imagine\Image; |
| 16 | 16 | ||
| 17 | -class FileController extends Controller { | 17 | +class UploaderController extends Controller { |
| 18 | 18 | ||
| 19 | public function isBigger($width,$height,$w,$h) | 19 | public function isBigger($width,$height,$w,$h) |
| 20 | { | 20 | { |
| @@ -27,6 +27,14 @@ class FileController extends Controller { | @@ -27,6 +27,14 @@ class FileController extends Controller { | ||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | + private function getUserPath(){ | ||
| 31 | + if(isset(Yii::$app->user->id)){ | ||
| 32 | + return 'user_'.Yii::$app->user->id; | ||
| 33 | + }else { | ||
| 34 | + return 'guest'; | ||
| 35 | + } | ||
| 36 | + } | ||
| 37 | + | ||
| 30 | private function resizeImg($w, $h, $imageAlias,$imageAliasSave){ | 38 | private function resizeImg($w, $h, $imageAlias,$imageAliasSave){ |
| 31 | $img = Image::getImagine()->open(Yii::getAlias($imageAlias)); | 39 | $img = Image::getImagine()->open(Yii::getAlias($imageAlias)); |
| 32 | 40 | ||
| @@ -134,9 +142,9 @@ class FileController extends Controller { | @@ -134,9 +142,9 @@ class FileController extends Controller { | ||
| 134 | 142 | ||
| 135 | $model->file = UploadedFile::getInstance($model, 'file'); | 143 | $model->file = UploadedFile::getInstance($model, 'file'); |
| 136 | 144 | ||
| 137 | - $md5_file = md5_file($model->file->tempName); | 145 | + $md5_file = md5_file($model->file->tempName).rand(1, 1000); |
| 138 | 146 | ||
| 139 | - $imgDir = Yii::getAlias('@storage/'.$md5_file.'/'); | 147 | + $imgDir = Yii::getAlias('@storage/'.$this->getUserPath().'/'.$md5_file.'/'); |
| 140 | 148 | ||
| 141 | $imageOrigAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file->extension); | 149 | $imageOrigAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file->extension); |
| 142 | 150 | ||
| @@ -150,13 +158,13 @@ class FileController extends Controller { | @@ -150,13 +158,13 @@ class FileController extends Controller { | ||
| 150 | 158 | ||
| 151 | $imageAlias = Yii::getAlias($imgDir.$request['width'].'x'.$request['height'].'.'.$model->file->extension); | 159 | $imageAlias = Yii::getAlias($imgDir.$request['width'].'x'.$request['height'].'.'.$model->file->extension); |
| 152 | 160 | ||
| 153 | - $imageLink = '/storage/'.$md5_file.'/'.$request['width'].'x'.$request['height'].'.'.$model->file->extension; | 161 | + $imageLink = '/storage/'.$this->getUserPath().'/'.$md5_file.'/'.$request['width'].'x'.$request['height'].'.'.$model->file->extension; |
| 154 | 162 | ||
| 155 | $this->resizeImg($request['width'], $request['height'], $imageOrigAlias,$imageAlias); | 163 | $this->resizeImg($request['width'], $request['height'], $imageOrigAlias,$imageAlias); |
| 156 | 164 | ||
| 157 | } else { | 165 | } else { |
| 158 | 166 | ||
| 159 | - $imageLink = '/storage/'.$md5_file.'/'.'original'.'.'.$model->file->extension; | 167 | + $imageLink = '/storage/'.$this->getUserPath().'/'.$md5_file.'/'.'original'.'.'.$model->file->extension; |
| 160 | 168 | ||
| 161 | } | 169 | } |
| 162 | 170 | ||
| @@ -184,6 +192,7 @@ class FileController extends Controller { | @@ -184,6 +192,7 @@ class FileController extends Controller { | ||
| 184 | 192 | ||
| 185 | 193 | ||
| 186 | public function actionImagesUpload(){ | 194 | public function actionImagesUpload(){ |
| 195 | + | ||
| 187 | if($_FILES['upload']) | 196 | if($_FILES['upload']) |
| 188 | { | 197 | { |
| 189 | if (($_FILES['upload'] == "none") OR (empty($_FILES['upload']['name'])) ) | 198 | if (($_FILES['upload'] == "none") OR (empty($_FILES['upload']['name'])) ) |
| @@ -203,11 +212,21 @@ class FileController extends Controller { | @@ -203,11 +212,21 @@ class FileController extends Controller { | ||
| 203 | $message = "Что-то пошло не так. Попытайтесь загрузить файл ещё раз."; | 212 | $message = "Что-то пошло не так. Попытайтесь загрузить файл ещё раз."; |
| 204 | } | 213 | } |
| 205 | else{ | 214 | else{ |
| 206 | - $name =rand(1, 1000).md5($_FILES['upload']['name']).'.'.$this->getex($_FILES['upload']['name']); | ||
| 207 | - move_uploaded_file($_FILES['upload']['tmp_name'], "../../storage/images/".$name); | ||
| 208 | - $full_path = '/storage/images/'.$name; | 215 | + $name =$_FILES['upload']['name'].'.'.$this->getex($_FILES['upload']['name']); |
| 216 | + | ||
| 217 | + $path = "../../storage/".$this->getUserPath()."/images/"; | ||
| 218 | + if(!is_dir($path)) { | ||
| 219 | + mkdir($path, 0755, true); | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + | ||
| 223 | + | ||
| 224 | + move_uploaded_file($_FILES['upload']['tmp_name'], $path.$name); | ||
| 225 | + | ||
| 226 | + $full_path = '/storage/'.$this->getUserPath().'/images/'.$name; | ||
| 227 | + | ||
| 209 | $message = "Файл ".$_FILES['upload']['name']." загружен"; | 228 | $message = "Файл ".$_FILES['upload']['name']." загружен"; |
| 210 | - $size=@getimagesize('images/'.$name); | 229 | + |
| 211 | 230 | ||
| 212 | } | 231 | } |
| 213 | $callback = $_REQUEST['CKEditorFuncNum']; | 232 | $callback = $_REQUEST['CKEditorFuncNum']; |
common/widgets/views/image_sizer.php
| @@ -16,7 +16,7 @@ $id = $model::tableName().'_id'; | @@ -16,7 +16,7 @@ $id = $model::tableName().'_id'; | ||
| 16 | <i class="glyphicon glyphicon-plus"></i> | 16 | <i class="glyphicon glyphicon-plus"></i> |
| 17 | <span><?=$name?></span> | 17 | <span><?=$name?></span> |
| 18 | 18 | ||
| 19 | - <?= Html::activeFileInput( new \common\models\ImageSizerForm(),'file',['id'=>$field, 'data-url'=>"/file/download-photo" ]);?> | 19 | + <?= Html::activeFileInput( new \common\models\ImageSizerForm(),'file',['id'=>$field, 'data-url'=>Yii::$app->getUrlManager()->createUrl('file/uploader/download-photo')]);?> |
| 20 | </span> | 20 | </span> |
| 21 | 21 | ||
| 22 | <?= Html::activeHiddenInput( $model,$field,['id' => "{$field}_picture_link"]) ?> | 22 | <?= Html::activeHiddenInput( $model,$field,['id' => "{$field}_picture_link"]) ?> |
| @@ -83,7 +83,7 @@ $id = $model::tableName().'_id'; | @@ -83,7 +83,7 @@ $id = $model::tableName().'_id'; | ||
| 83 | <i class="glyphicon glyphicon-plus"></i> | 83 | <i class="glyphicon glyphicon-plus"></i> |
| 84 | <span><?=$name?></span> | 84 | <span><?=$name?></span> |
| 85 | 85 | ||
| 86 | - <?= Html::activeFileInput( new \common\models\ImageSizerForm(),'file',['id'=>$field, 'data-url'=>"/file/download-photo", 'multiple'=> 'multiple' ]);?> | 86 | + <?= Html::activeFileInput( new \common\models\ImageSizerForm(),'file',['id'=>$field, 'data-url'=>Yii::$app->getUrlManager()->createUrl('file/uploader/download-photo'), 'multiple'=> 'multiple' ]);?> |
| 87 | </span> | 87 | </span> |
| 88 | 88 | ||
| 89 | <?= Html::activeHiddenInput( $model,$field,['id' => "{$field}_picture_link"]) ?> | 89 | <?= Html::activeHiddenInput( $model,$field,['id' => "{$field}_picture_link"]) ?> |
console/migrations/m160203_133308_add_field_specialization.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\db\Migration; | ||
| 4 | + | ||
| 5 | +class m160203_133308_add_field_specialization extends Migration | ||
| 6 | +{ | ||
| 7 | + public function up() | ||
| 8 | + { | ||
| 9 | + $this->addColumn('specialization', 'image', $this->string(255)); | ||
| 10 | + } | ||
| 11 | + | ||
| 12 | + public function down() | ||
| 13 | + { | ||
| 14 | + $this->dropColumn('option', 'image'); | ||
| 15 | + } | ||
| 16 | +} |
frontend/views/accounts/_form.php
| @@ -46,7 +46,7 @@ use mihaildev\elfinder\ElFinder; | @@ -46,7 +46,7 @@ use mihaildev\elfinder\ElFinder; | ||
| 46 | 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[ | 46 | 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[ |
| 47 | 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать | 47 | 'preset' => 'full', //разработанны стандартные настройки basic, standard, full данную возможность не обязательно использовать |
| 48 | 'inline' => false, //по умолчанию false]), | 48 | 'inline' => false, //по умолчанию false]), |
| 49 | - 'filebrowserUploadUrl'=>Yii::$app->getUrlManager()->createUrl('file/images-upload') | 49 | + 'filebrowserUploadUrl'=>Yii::$app->getUrlManager()->createUrl('file/uploader/images-upload') |
| 50 | ] | 50 | ] |
| 51 | ) | 51 | ) |
| 52 | ]); ?> | 52 | ]); ?> |