Commit 111bf275 authored by difox's avatar difox

Enable Drag&Drop

parent 27361ee6
...@@ -120,4 +120,13 @@ a.desc:after { ...@@ -120,4 +120,13 @@ a.desc:after {
.file-widget{ .file-widget{
margin-bottom: 20px; margin-bottom: 20px;
} }
.control-label {min-width: 100px;} .control-label {min-width: 100px;}
\ No newline at end of file .file-drop-zone {
height: auto;
}
.file-drop-zone-title {
padding: 35px 10px;
}
.file-preview-image {
height: 100px !important;
}
\ No newline at end of file
...@@ -62,20 +62,28 @@ class CoursesAdminController extends AdminController ...@@ -62,20 +62,28 @@ class CoursesAdminController extends AdminController
]; ];
if($model->load(Yii::$app->request->post()) && $model->validate()){ if($model->load(Yii::$app->request->post()) && $model->validate()){
//Try to get file info if ($model->filename) {
$model->upload_image = \yii\web\UploadedFile::getInstance($model, 'upload_image'); $model->image = $model->filename;
//If received, then I get the file name and asign it to $model->image in order to store it in db }
if(!empty($model->upload_image)){ else {
$image_name = $model->upload_image->name; //Try to get file info
$model->image = $image_name; $model->upload_image = \yii\web\UploadedFile::getInstance($model, 'upload_image');
//If received, then I get the file name and asign it to $model->image in order to store it in db
if(!empty($model->upload_image)){
$image_name = $model->upload_image->name;
$model->image = $image_name;
}
} }
$model->save(); $model->save();
//If all went OK, then I proceed to save the image in filesystem if (!$model->filename) {
if(!empty($model->upload_image)){ //If all went OK, then I proceed to save the image in filesystem
$model->upload_image->saveAs($model->getPath().$image_name); if(!empty($model->upload_image)){
$model->upload_image->saveAs($model->getPath().$image_name);
}
} }
return $this->redirect(['view', 'id' => $model->id]); return $this->redirect(['view', 'id' => $model->id]);
} }
else else
...@@ -170,7 +178,7 @@ class CoursesAdminController extends AdminController ...@@ -170,7 +178,7 @@ class CoursesAdminController extends AdminController
public function actionUpload() public function actionUpload()
{ {
$model = new Courses; $model = new Courses;
if (empty($_FILES['Courses'])) { if (empty($_FILES['Courses'])) {
echo json_encode(['error'=>'No files found for upload.']); echo json_encode(['error'=>'No files found for upload.']);
// or you can throw an exception // or you can throw an exception
return; // terminate return; // terminate
...@@ -184,10 +192,10 @@ class CoursesAdminController extends AdminController ...@@ -184,10 +192,10 @@ class CoursesAdminController extends AdminController
$paths= []; $paths= [];
// get file names // get file names
$filename = $images['name']["upload_image"]; //$filename = $images['name']["upload_image"];
// loop and process files // loop and process files
$ext = explode('.', basename($filename)); //$ext = explode('.', basename($filename));
$target = $model->getPath() . md5(uniqid()) . "." . array_pop($ext); $target = $model->getPath() . $images['name']["upload_image"];//md5(uniqid()) . "." . array_pop($ext);
if(move_uploaded_file($images['tmp_name']["upload_image"], $target)) { if(move_uploaded_file($images['tmp_name']["upload_image"], $target)) {
$success = true; $success = true;
$paths[] = $target; $paths[] = $target;
......
...@@ -8,29 +8,31 @@ use common\modules\school\models\Courses; ...@@ -8,29 +8,31 @@ use common\modules\school\models\Courses;
use common\modules\testings\models\Test; use common\modules\testings\models\Test;
if ($model->image) { if ($model->image) {
$image = "<div class='file-widget'>".FileInput::widget([ $initialImages[] = Html::img($model->getUrl($model->image));
'model' => $model,
'attribute' => 'upload_image',
'language' => 'en',
'options' => ['multiple' => false, 'accept' => 'image/*'],
'pluginOptions' => [/*'uploadUrl' => Url::to(['/school/courses-admin/upload']),*/'showUpload' => false,
'initialPreview'=>[
Html::img($model->getUrl($model->image))
],
'overwriteInitial'=>true]
])."</div>";
}
else {
$image = "<div class='file-widget'>".FileInput::widget([
'model' => $model,
'attribute' => 'upload_image',
'language' => 'en',
'options' => ['multiple' => false, 'accept' => 'image/*'],
'pluginOptions' => [/*'uploadUrl' => Url::to(['/school/courses-admin/upload']),*/'showUpload' => false,
'overwriteInitial'=>true]
])."</div>";
} }
$image = "<div class='file-widget'>".FileInput::widget([
'model' => $model,
'attribute' => 'upload_image',
'language' => 'en',
'options' => ['multiple' => false, 'accept' => 'image/*'],
'pluginOptions' => [
'uploadUrl' => Url::to(['/school/courses-admin/upload']),
'showUpload' => false,
'overwriteInitial'=>true,
'initialPreview'=>$initialImages,
],
'pluginEvents' => [
'fileuploaded'=>"function(event, data, previewId, index) {
$(\"[name='Courses[filename]']\").val(data.files[0].name);
}",
'fileclear'=>"function(event) {
$(\"[name='Courses[filename]']\").val();
}",
],
])."</div>";
$elements = [ $elements = [
'test_id' => ['type' => 'dropdownlist', 'items' => ArrayHelper::map(Test::find()->all(), 'id', 'name', 'session.name'), 'empty' => 'Не задан'], 'test_id' => ['type' => 'dropdownlist', 'items' => ArrayHelper::map(Test::find()->all(), 'id', 'name', 'session.name'), 'empty' => 'Не задан'],
'title' => ['type' => 'text'], 'title' => ['type' => 'text'],
...@@ -41,6 +43,7 @@ $elements = [ ...@@ -41,6 +43,7 @@ $elements = [
'items' => Courses::$type_list, 'items' => Courses::$type_list,
], ],
'spec_proposition' => ['type' => 'checkbox'], 'spec_proposition' => ['type' => 'checkbox'],
'filename' => ['type' => 'hidden'],
'image' => $image, 'image' => $image,
]; ];
......
...@@ -20,6 +20,8 @@ class Courses extends \common\components\ActiveRecordModel ...@@ -20,6 +20,8 @@ class Courses extends \common\components\ActiveRecordModel
public $upload_image; public $upload_image;
public $filename;
public static $type_list = [ public static $type_list = [
self::TYPE_IT => 'Для сотрудников it-отрасли', self::TYPE_IT => 'Для сотрудников it-отрасли',
self::TYPE_IM => 'Для интернет-маркетологов', self::TYPE_IM => 'Для интернет-маркетологов',
...@@ -60,7 +62,7 @@ class Courses extends \common\components\ActiveRecordModel ...@@ -60,7 +62,7 @@ class Courses extends \common\components\ActiveRecordModel
[['type', 'spec_proposition', 'test_id'], 'integer'], [['type', 'spec_proposition', 'test_id'], 'integer'],
[['title'], 'string', 'max' => 150], [['title'], 'string', 'max' => 150],
[['image'], 'string', 'max' => 100], [['image'], 'string', 'max' => 100],
[['description', 'description_for_course'], 'safe'], [['description', 'description_for_course', 'filename'], 'safe'],
[['upload_image'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg, jpeg, gif'], [['upload_image'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg, jpeg, gif'],
]; ];
} }
...@@ -88,6 +90,12 @@ class Courses extends \common\components\ActiveRecordModel ...@@ -88,6 +90,12 @@ class Courses extends \common\components\ActiveRecordModel
} }
} }
public function afterFind() {
$this->filename = $this->image;
parent::afterFind();
}
public function getLessons() public function getLessons()
{ {
return $this->hasMany(Lessons::className(), ['course_id' => 'id']); return $this->hasMany(Lessons::className(), ['course_id' => 'id']);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment