diff --git a/backend/views/layouts/header.php b/backend/views/layouts/header.php
index 9149654..8b3e9db 100644
--- a/backend/views/layouts/header.php
+++ b/backend/views/layouts/header.php
@@ -23,6 +23,19 @@ $username = Yii::$app->user->identity->firstname.' '.Yii::$app->user->identity->
diff --git a/backend/web/css/site.css b/backend/web/css/site.css
index 698be70..18332a2 100644
--- a/backend/web/css/site.css
+++ b/backend/web/css/site.css
@@ -89,3 +89,38 @@ a.desc:after {
padding: 10px 20px;
margin: 0 0 15px 0;
}
+.header-search {
+ width: 200px;
+}
+.skin-blue .sidebar-form {
+ margin: 5px !important;
+}
+.checkboxer .list-group-item {
+ padding: 0;
+}
+.checkboxer .list-group-item:hover {
+ background: #ddd;
+}
+.checkboxer .list-group-item.active, .checkboxer .list-group-item.active:hover {
+ background: #00a65a;
+}
+.checkboxer .list-group-item.active label, .checkboxer .list-group-item.active:hover label {
+ color: white;
+}
+.checkboxer .list-group-item.level0 {
+ padding-left: 15px;
+}
+.checkboxer .list-group-item.level1 {
+ padding-left: 45px;
+}
+.checkboxer .list-group-item.level2 {
+ padding-left: 75px;
+}
+.checkboxer .checkboxer_label {
+ padding: 10px 0;
+ display: block;
+}
+.checkboxer .checkboxer_label input[type=radio] {
+ position: absolute;
+ clip: rect(0,0,0,0);
+}
\ No newline at end of file
diff --git a/backend/web/js/option.js b/backend/web/js/option.js
index 5a9b0ec..8086cd7 100644
--- a/backend/web/js/option.js
+++ b/backend/web/js/option.js
@@ -89,4 +89,9 @@ $(function() {
}
return false;
});
+ $(document).on('change', '.checkboxer .checkboxer_label input[type=radio]', function() {
+ console.log($(this).val());
+ $(this).parents('.checkboxer').find('.checkboxer_container').removeClass('active');
+ $(this).parents('.checkboxer_container').addClass('active');
+ });
});
\ No newline at end of file
diff --git a/common/models/Tools.php b/common/models/Tools.php
index 2a1bac2..77cc03e 100644
--- a/common/models/Tools.php
+++ b/common/models/Tools.php
@@ -98,4 +98,19 @@ class Tools
return $url;
}
+
+ static function parseUrlParams($params)
+ {
+ $params = preg_split('/,\s*/', $params, -1, PREG_SPLIT_NO_EMPTY);
+ $result = [];
+ if($params) {
+ foreach($params as $param) {
+ $param = preg_split('/\s*=\s*/', $param);
+ if(!empty($param[0]) && !empty($param[1])) {
+ $result[$param[0]] = $param[1];
+ }
+ }
+ }
+ return $result;
+ }
}
\ No newline at end of file
diff --git a/common/modules/blog/controllers/AjaxController.php b/common/modules/blog/controllers/AjaxController.php
index 327cade..c906621 100644
--- a/common/modules/blog/controllers/AjaxController.php
+++ b/common/modules/blog/controllers/AjaxController.php
@@ -7,6 +7,7 @@ use common\modules\blog\models\ArticleCategoryLang;
use common\modules\blog\models\ArticleCategoryMedia;
use common\modules\blog\models\ArticleLang;
use common\modules\blog\models\ArticleMedia;
+use yii\base\InvalidParamException;
use yii\web\Controller;
use yii\web\ForbiddenHttpException;
use yii\web\NotFoundHttpException;
@@ -46,6 +47,32 @@ class AjaxController extends Controller
return $this->renderAjax('_article_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id]);
}
+ public function actionArticleMediaForm($lang_id, $widget_id, $type)
+ {
+ $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one();
+ if(!$model) {
+ throw new NotFoundHttpException('Language not found');
+ }
+ if(!in_array($type, ['full', 'preview'])) {
+ throw new InvalidParamException('Type must only be full/preview');
+ }
+ $article_lang = new ArticleMedia();
+ return $this->renderAjax('_article_media_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id, 'type' => $type]);
+ }
+
+ public function actionArticleCategoryMediaForm($lang_id, $widget_id, $type)
+ {
+ $model = Language::find()->where(['>=', 'language_id', 1])->andWhere(['active' => 1, 'language_id' => $lang_id])->one();
+ if(!$model) {
+ throw new NotFoundHttpException('Language not found');
+ }
+ if(!in_array($type, ['full', 'preview'])) {
+ throw new InvalidParamException('Type must only be full/preview');
+ }
+ $article_lang = new ArticleCategoryMedia();
+ return $this->renderAjax('_article_media_form', ['model' => $model, 'article_lang' => $article_lang, 'widget_id' => $widget_id, 'type' => $type]);
+ }
+
public function actionRemoveImage()
{
$post = \Yii::$app->request->post();
@@ -63,6 +90,23 @@ class AjaxController extends Controller
}
}
+ public function actionRemoveCategoryImage()
+ {
+ $post = \Yii::$app->request->post();
+ if(!empty($post['category_media_id'])) {
+ $category_media = ArticleCategoryMedia::findOne($post['category_media_id']);
+ if($post['remove_media']) {
+ $media = $category_media->media->delete();
+ }
+ if(!empty($category_media)) {
+ $category_media->delete();
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
public function actionRemoveImageCategory()
{
$post = \Yii::$app->request->post();
diff --git a/common/modules/blog/controllers/ArticleController.php b/common/modules/blog/controllers/ArticleController.php
index 445070e..38ee671 100644
--- a/common/modules/blog/controllers/ArticleController.php
+++ b/common/modules/blog/controllers/ArticleController.php
@@ -28,28 +28,31 @@ class ArticleController extends Controller
{
$article_langs = array();
$article = new Article();
+ $default_lang = Language::getDefaultLang();
$images = array();
- $images['full'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_FULL]);
- $images['preview'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_PREVIEW]);
- $images['additional'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
+ $images[$default_lang->language_id]['full'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_FULL]);
+ $images[$default_lang->language_id]['preview'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_PREVIEW]);
+ $images[0]['additional'] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
$article->loadDefaultValues();
$langs = Language::getActiveLanguages();
- $default_lang = Language::getDefaultLang();
$isValid = false;
if(!empty(\Yii::$app->request->post())) {
$isValid = true;
$article->load(\Yii::$app->request->post());
$article->author = \Yii::$app->user->getId();
$isValid = $article->validate();
- foreach($images as $index => $value) {
- $images[$index]->type = $index;
- if($index == 'additional') {
- $images[$index]->imageFile = UploadedFile::getInstances($images[$index], "[{$index}]imageFile");
- } else {
- $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile");
+ foreach(\Yii::$app->request->post()['ArticleMedia'] as $lang => $value) {
+ foreach($value as $type => $fields) {
+ $images[$lang][$type] = new ArticleMedia(['scenario' => $type]);
+ $images[$lang][$type]->type = $type;
+ $images[$lang][$type]->lang_id = $lang;
+ $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile");
+ $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid;
}
- $isValid = $images[$index]->validate(['imageFile']) && $isValid;
}
+ $images[0]['additional']->lang_id = 0;
+ $images[0]['additional']->type = 'additional';
+ $images[0]['additional']->imageFile = UploadedFile::getInstances($images[0]['additional'], "[0][additional]imageFile");
if(empty(\Yii::$app->request->post()['ArticleLang'])) {
$article_langs[$default_lang->language_id] = new ArticleLang();
$isValid = ArticleLang::validateMultiple($article_langs) && $isValid;
@@ -74,9 +77,21 @@ class ArticleController extends Controller
}
}
$first = 1;
- foreach($images as $index => $image) {
- $images[$index]->upload($article->id);
+ foreach($images as $lang => $value) {
+ foreach($value as $type => $fields) {
+ $images[$lang][$type]->upload($article->id);
+ if($first && $type != 'additional') {
+ $media_clone = clone $images[$lang][$type];
+ $media_clone->setIsNewRecord(true);
+ unset($media_clone->id);
+ $media_clone->lang_id = 0;
+ $media_clone->upload($article->id);
+ unset($media_clone);
+ $first = 0;
+ }
+ }
}
+ $first = 1;
foreach($article_langs as $article_lang) {
if($first) {
$article_lang_clone = clone $article_lang;
@@ -102,22 +117,22 @@ class ArticleController extends Controller
public function actionUpdate($id)
{
$article = Article::findOne($id);
- $images = $article->getArticleMedia()->indexBy('type')->all();
- if(!array_key_exists('full', $images)) {
- $images['full'] = new ArticleMedia();
- }
- if(!array_key_exists('preview', $images)) {
- $images['preview'] = new ArticleMedia();
- }
- foreach($images as $index => $image) {
- $images[$index]->scenario = $index;
+ $imagestack = $article->getArticleMedia()->all();
+ $images = [];
+ $images[0]['additional'][0] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
+ $images[0]['additional'][0]->type = 'additional';
+ $images[0]['additional'][0]->lang_id = 0;
+ foreach($imagestack as $image) {
+ if(in_array($image->type, ['full', 'preview'])) {
+ $images[$image->lang_id][$image->type] = $image;
+ $images[$image->lang_id][$image->type]->scenario = $image->type;
+ } else {
+ $images[$image->lang_id][$image->type][$image->id] = $image;
+ $images[$image->lang_id][$image->type][$image->id]->scenario = $image->type;
+ }
}
- $images['additional'] = array(
- 0 => new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL])
- );
- $images['additional'] = array_merge($images['additional'], $article->getArticleMedia()->andWhere(['type' => 'additional'])->indexBy('id')->all());
- foreach($images['additional'] as $index => $image) {
- $images['additional'][$index]->scenario = 'additional';
+ foreach($images as $lang => $value) {
+ $images[$lang]['additional'][0] = new ArticleMedia(['scenario' => ArticleMedia::SCENARIO_ADDITIONAL]);
}
$article_langs = $article->getArticleLangs()->where(['>=', 'lang_id', '1'])->indexBy('lang_id')->all();
$langs = Language::getActiveLanguages();
@@ -136,15 +151,18 @@ class ArticleController extends Controller
}
}
$isValid = $article->validate();
- foreach($images as $index => $value) {
- if($index == 'additional') {
- $images[$index][0]->type = $index;
- $images[$index][0]->imageFile = UploadedFile::getInstances($images[$index][0], "[{$index}]imageFile");
- $isValid = $images[$index][0]->validate(['imageFile']) && $isValid;
- } else {
- $images[$index]->type = $index;
- $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile");
- $isValid = $images[$index]->validate(['imageFile']) && $isValid;
+ $images[0]['additional'][0]->type = 'additional';
+ $images[0]['additional'][0]->lang_id = 0;
+ $images[0]['additional'][0]->imageFile = UploadedFile::getInstances($images[0]['additional'][0], "[0][additional]imageFile");
+ $isValid = $images[0]['additional'][0]->validate(['imageFile']) && $isValid;
+ foreach(\Yii::$app->request->post()['ArticleMedia'] as $lang => $value) {
+ foreach($value as $type => $fields) {
+ if(!in_array($type, ['full', 'preview'])) continue;
+ $images[$lang][$type] = new ArticleMedia(['scenario' => $type]);
+ $images[$lang][$type]->lang_id = $lang;
+ $images[$lang][$type]->type = $type;
+ $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile");
+ $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid;
}
}
if(empty(\Yii::$app->request->post()['ArticleLang'])) {
@@ -162,12 +180,14 @@ class ArticleController extends Controller
}
if($isValid) {
$article->save(false);
- foreach($images as $index => $image) {
- if($index == 'additional') {
- $images[$index][0]->upload($article->id);
- } else {
- if(!empty($images[$index]->imageFile)) {
- $images[$index]->replace($article->id, true);
+ foreach($images as $lang => $value) {
+ foreach($value as $type => $fields) {
+ if($type == 'additional') {
+ $images[$lang][$type][0]->upload($article->id);
+ } else {
+ if(!empty($images[$lang][$type]->imageFile)) {
+ $images[$lang][$type]->replace($article->id);
+ }
}
}
}
diff --git a/common/modules/blog/controllers/CategoryController.php b/common/modules/blog/controllers/CategoryController.php
index d4edd82..eeff9b2 100644
--- a/common/modules/blog/controllers/CategoryController.php
+++ b/common/modules/blog/controllers/CategoryController.php
@@ -42,27 +42,30 @@ class CategoryController extends Controller
{
$category_langs = array();
$category = new ArticleCategory();
+ $default_lang = Language::getDefaultLang();
$images = array();
- $images['full'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_FULL]);
- $images['preview'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_PREVIEW]);
- $images['additional'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]);
+ $images[$default_lang->language_id]['full'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_FULL]);
+ $images[$default_lang->language_id]['preview'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_PREVIEW]);
+ $images[0]['additional'] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]);
$category->loadDefaultValues();
$langs = Language::getActiveLanguages();
- $default_lang = Language::getDefaultLang();
$isValid = false;
- foreach($images as $index => $value) {
- $images[$index]->type = $index;
- if($index == 'additional') {
- $images[$index]->imageFile = UploadedFile::getInstances($images[$index], "[{$index}]imageFile");
- } else {
- $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile");
- }
- $isValid = $images[$index]->validate(['imageFile']) && $isValid;
- }
if(!empty(\Yii::$app->request->post())) {
$isValid = true;
$category->load(\Yii::$app->request->post());
$isValid = $category->validate();
+ foreach(\Yii::$app->request->post()['ArticleCategoryMedia'] as $lang => $value) {
+ foreach($value as $type => $fields) {
+ $images[$lang][$type] = new ArticleCategoryMedia(['scenario' => $type]);
+ $images[$lang][$type]->type = $type;
+ $images[$lang][$type]->lang_id = $lang;
+ $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile");
+ $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid;
+ }
+ }
+ $images[0]['additional']->lang_id = 0;
+ $images[0]['additional']->type = 'additional';
+ $images[0]['additional']->imageFile = UploadedFile::getInstances($images[0]['additional'], "[0][additional]imageFile");
if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) {
$category_langs[$default_lang->language_id] = new ArticleCategoryLang();
$isValid = ArticleCategoryLang::validateMultiple($category_langs) && $isValid;
@@ -79,9 +82,21 @@ class CategoryController extends Controller
if($isValid) {
$category->save(false);
$first = 1;
- foreach($images as $index => $image) {
- $images[$index]->upload($category->id);
+ foreach($images as $lang => $value) {
+ foreach($value as $type => $fields) {
+ $images[$lang][$type]->upload($category->id);
+ if($first && $type != 'additional') {
+ $media_clone = clone $images[$lang][$type];
+ $media_clone->setIsNewRecord(true);
+ unset($media_clone->id);
+ $media_clone->lang_id = 0;
+ $media_clone->upload($category->id);
+ unset($media_clone);
+ $first = 0;
+ }
+ }
}
+ $first = 1;
foreach($category_langs as $category_lang) {
if($first) {
$category_lang_clone = clone $category_lang;
@@ -107,22 +122,22 @@ class CategoryController extends Controller
public function actionUpdate($id)
{
$category = ArticleCategory::findOne($id);
- $images = $category->getArticleCategoryMedia()->indexBy('type')->all();
- if(!array_key_exists('full', $images)) {
- $images['full'] = new ArticleCategoryMedia();
- }
- if(!array_key_exists('preview', $images)) {
- $images['preview'] = new ArticleCategoryMedia();
- }
- foreach($images as $index => $image) {
- $images[$index]->scenario = $index;
+ $imagestack = $category->getArticleCategoryMedia()->all();
+ $images = [];
+ $images[0]['additional'][0] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]);
+ $images[0]['additional'][0]->type = 'additional';
+ $images[0]['additional'][0]->lang_id = 0;
+ foreach($imagestack as $image) {
+ if(in_array($image->type, ['full', 'preview'])) {
+ $images[$image->lang_id][$image->type] = $image;
+ $images[$image->lang_id][$image->type]->scenario = $image->type;
+ } else {
+ $images[$image->lang_id][$image->type][$image->id] = $image;
+ $images[$image->lang_id][$image->type][$image->id]->scenario = $image->type;
+ }
}
- $images['additional'] = array(
- 0 => new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL])
- );
- $images['additional'] = array_merge($images['additional'], $category->getArticleCategoryMedia()->andWhere(['type' => 'additional'])->indexBy('id')->all());
- foreach($images['additional'] as $index => $image) {
- $images['additional'][$index]->scenario = 'additional';
+ foreach($images as $lang => $value) {
+ $images[$lang]['additional'][0] = new ArticleCategoryMedia(['scenario' => ArticleCategoryMedia::SCENARIO_ADDITIONAL]);
}
$category_langs = $category->getArticleCategoryLangs()->where(['>=', 'lang_id', '1'])->indexBy('lang_id')->all();
$langs = Language::getActiveLanguages();
@@ -132,15 +147,18 @@ class CategoryController extends Controller
$isValid = true;
$category->load(\Yii::$app->request->post());
$isValid = $category->validate();
- foreach($images as $index => $value) {
- if($index == 'additional') {
- $images[$index][0]->type = $index;
- $images[$index][0]->imageFile = UploadedFile::getInstances($images[$index][0], "[{$index}]imageFile");
- $isValid = $images[$index][0]->validate(['imageFile']) && $isValid;
- } else {
- $images[$index]->type = $index;
- $images[$index]->imageFile = UploadedFile::getInstance($images[$index], "[{$index}]imageFile");
- $isValid = $images[$index]->validate(['imageFile']) && $isValid;
+ $images[0]['additional'][0]->type = 'additional';
+ $images[0]['additional'][0]->lang_id = 0;
+ $images[0]['additional'][0]->imageFile = UploadedFile::getInstances($images[0]['additional'][0], "[0][additional]imageFile");
+ $isValid = $images[0]['additional'][0]->validate(['imageFile']) && $isValid;
+ foreach(\Yii::$app->request->post()['ArticleCategoryMedia'] as $lang => $value) {
+ foreach($value as $type => $fields) {
+ if(!in_array($type, ['full', 'preview'])) continue;
+ $images[$lang][$type] = new ArticleCategoryMedia(['scenario' => $type]);
+ $images[$lang][$type]->lang_id = $lang;
+ $images[$lang][$type]->type = $type;
+ $images[$lang][$type]->imageFile = UploadedFile::getInstance($images[$lang][$type], "[{$lang}][{$type}]imageFile");
+ $isValid = $images[$lang][$type]->validate(['imageFile']) && $isValid;
}
}
if(empty(\Yii::$app->request->post()['ArticleCategoryLang'])) {
@@ -158,12 +176,14 @@ class CategoryController extends Controller
}
if($isValid) {
$category->save(false);
- foreach($images as $index => $image) {
- if($index == 'additional') {
- $images[$index][0]->upload($category->id);
- } else {
- if(!empty($images[$index]->imageFile)) {
- $images[$index]->replace($category->id, true);
+ foreach($images as $lang => $value) {
+ foreach($value as $type => $fields) {
+ if($type == 'additional') {
+ $images[$lang][$type][0]->upload($category->id);
+ } else {
+ if(!empty($images[$lang][$type]->imageFile)) {
+ $images[$lang][$type]->replace($category->id);
+ }
}
}
}
diff --git a/common/modules/blog/models/ArticleMedia.php b/common/modules/blog/models/ArticleMedia.php
index 386f107..23cebd7 100644
--- a/common/modules/blog/models/ArticleMedia.php
+++ b/common/modules/blog/models/ArticleMedia.php
@@ -37,9 +37,9 @@ class ArticleMedia extends \yii\db\ActiveRecord
public function scenarios()
{
$scenarios = parent::scenarios();
- $scenarios[self::SCENARIO_FULL] = ['id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile'];
- $scenarios[self::SCENARIO_PREVIEW] = ['id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile'];
- $scenarios[self::SCENARIO_ADDITIONAL] = ['id', 'article_id', 'media_id', 'type', 'imageFile'];
+ $scenarios[self::SCENARIO_FULL] = ['id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile', 'lang_id'];
+ $scenarios[self::SCENARIO_PREVIEW] = ['id', 'article_id', 'media_id', 'type', 'media_alt', 'media_title', 'media_caption', 'imageFile', 'lang_id'];
+ $scenarios[self::SCENARIO_ADDITIONAL] = ['id', 'article_id', 'media_id', 'type', 'imageFile', 'lang_id'];
return $scenarios;
}
@@ -50,7 +50,7 @@ class ArticleMedia extends \yii\db\ActiveRecord
{
return [
[['article_id', 'media_id'], 'required'],
- [['article_id', 'media_id'], 'integer'],
+ [['article_id', 'media_id', 'lang_id'], 'integer'],
[['media_alt', 'media_title', 'media_caption'], 'string'],
[['type'], 'string', 'max' => 10],
[['imageFile'], 'file', 'extensions' => 'png, gif, jpg, jpeg', 'skipOnEmpty' => true, 'on' => self::SCENARIO_FULL],
@@ -119,8 +119,8 @@ class ArticleMedia extends \yii\db\ActiveRecord
public function replace($article_id, $removeMedia = false)
{
$this->article_id = $article_id;
- if($removeMedia) {
- $article_media = ArticleMedia::find()->select('media_id')->where(['article_id' => $this->article_id, 'type' => $this->type])->column();
+ if($removeMedia && !$this->getIsNewRecord()) {
+ $article_media = ArticleMedia::find()->select('media_id')->where(['article_id' => $this->article_id, 'type' => $this->type, 'lang_id' => $this->lang_id])->column();
$media = array();
foreach($article_media as $media_id) {
$media[] = Media::findOne(['id' => $media_id]);
@@ -147,7 +147,7 @@ class ArticleMedia extends \yii\db\ActiveRecord
}
return $ok;
} elseif(!empty($this->imageFile)) {
- ArticleMedia::deleteAll(['article_id' => $this->article_id, 'type' => $this->type]);
+ ArticleMedia::deleteAll(['article_id' => $this->article_id, 'type' => $this->type, 'lang_id' => $this->lang_id]);
$media = new Media();
$media->imageFile = $this->imageFile;
$media->upload();
diff --git a/common/modules/blog/views/ajax/_article_media_form.php b/common/modules/blog/views/ajax/_article_media_form.php
new file mode 100644
index 0000000..973659d
--- /dev/null
+++ b/common/modules/blog/views/ajax/_article_media_form.php
@@ -0,0 +1,17 @@
+
+
+
+ = (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id][$type]lang_id"]))->label(false)->hiddenInput(['value' => $model->language_id]) ?>
+
+ = (new ActiveField(['model' => $article_lang, 'attribute' => "[$model->language_id][$type]imageFile"]))->fileInput(['class' => 'image_inputs_field']) ?>
+
+
+end();
+?>
diff --git a/common/modules/blog/views/article/_form.php b/common/modules/blog/views/article/_form.php
index 8e2d776..5cd3980 100644
--- a/common/modules/blog/views/article/_form.php
+++ b/common/modules/blog/views/article/_form.php
@@ -1,5 +1,6 @@
field($article, 'active')->checkbox() ?>
- $image) {
+
+ Url::to(['/blog/ajax/article-media-form?type=full']),
+ 'form' => $form,
+ 'data_langs' => $article->getIsNewRecord()?$images:ArticleMedia::find()->where(['article_id' => $article->id, 'type' => 'full'])->indexBy('lang_id')->all()
+ ]);
+ $first = 1;
+ foreach($images as $lang => $value) {
+ if(!array_key_exists('full', $value)) continue;
+ ?>
+
+ field($images[$lang]['full'], "[{$lang}][full]lang_id")->label(false)->hiddenInput(['value' => $lang]);
+ echo $form->field($images[$lang]['full'], "[{$lang}][full]imageFile")->fileInput(['class' => 'image_inputs_field']);
+ if(!empty($images[$lang]['full']->id)) {
+ echo "

media->hash}/original.{$images[$lang]['full']->media->extension}' width='100' class='image_inputs_prev'>";
+ }
+ ?>
+
+ end();
?>
-
- field(is_array($image)?$images[$index][0]:$images[$index], "[{$index}]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']);
- if(is_array($image) && count($image) > 1) {
- foreach($image as $oneindex => $oneimage) {
- if($oneindex) {
- ?>
-
-
+
+ Url::to(['/blog/ajax/article-media-form?type=preview']),
+ 'form' => $form,
+ 'data_langs' => $article->getIsNewRecord()?$images:ArticleMedia::find()->where(['article_id' => $article->id, 'type' => 'preview'])->indexBy('lang_id')->all()
+ ]);
+ $first = 1;
+ foreach($images as $lang => $value) {
+ if(!array_key_exists('preview', $value)) continue;
+ ?>
+
+ field($images[$lang]['preview'], "[{$lang}][preview]lang_id")->label(false)->hiddenInput(['value' => $lang]);
+ echo $form->field($images[$lang]['preview'], "[{$lang}][preview]imageFile")->fileInput(['class' => 'image_inputs_field']);
+ if(!empty($images[$lang]['preview']->id)) {
+ echo "

media->hash}/original.{$images[$lang]['preview']->media->extension}' width='100' class='image_inputs_prev'>";
}
- } else {
- echo $form->field($images[$index], "[{$index}]imageFile")->fileInput(['class' => 'image_inputs_field']);
- if(!empty($image->id)) {
- echo "

";
+ ?>
+
+ end();
+ ?>
+
+
+ field(is_array($images[0]['additional'])?$images[0]['additional'][0]:$images[0]['additional'], "[0][additional]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']);
+ if(is_array($images[0]['additional']) && count($images[0]['additional']) > 1) {
+ foreach($images[0]['additional'] as $onefield => $oneimage) {
+ if($onefield) {
+ ?>
+
+
-
-
+ }
+ ?>
+
diff --git a/common/modules/blog/views/category/_form.php b/common/modules/blog/views/category/_form.php
index 1248c8b..3885801 100644
--- a/common/modules/blog/views/category/_form.php
+++ b/common/modules/blog/views/category/_form.php
@@ -1,4 +1,5 @@
field($category, 'active')->checkbox() ?>
- $image) {
+
+ Url::to(['/blog/ajax/article-category-media-form?type=full']),
+ 'form' => $form,
+ 'data_langs' => $category->getIsNewRecord()?$images:ArticleCategoryMedia::find()->where(['category_id' => $category->id, 'type' => 'full'])->indexBy('lang_id')->all()
+ ]);
+ $first = 1;
+ foreach($images as $lang => $value) {
+ if(!array_key_exists('full', $value)) continue;
+ ?>
+
+ field($images[$lang]['full'], "[{$lang}][full]lang_id")->label(false)->hiddenInput(['value' => $lang]);
+ echo $form->field($images[$lang]['full'], "[{$lang}][full]imageFile")->fileInput(['class' => 'image_inputs_field']);
+ if(!empty($images[$lang]['full']->id)) {
+ echo "

media->hash}/original.{$images[$lang]['full']->media->extension}' width='100' class='image_inputs_prev'>";
+ }
+ ?>
+
+ end();
?>
-
- field(is_array($image)?$images[$index][0]:$images[$index], "[{$index}]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']);
- if(is_array($image) && count($image) > 1) {
- foreach($image as $oneindex => $oneimage) {
- if($oneindex) {
- ?>
-
-
+
+ Url::to(['/blog/ajax/article-category-media-form?type=preview']),
+ 'form' => $form,
+ 'data_langs' => $category->getIsNewRecord()?$images:ArticleCategoryMedia::find()->where(['category_id' => $category->id, 'type' => 'preview'])->indexBy('lang_id')->all()
+ ]);
+ $first = 1;
+ foreach($images as $lang => $value) {
+ if(!array_key_exists('preview', $value)) continue;
+ ?>
+
+ field($images[$lang]['preview'], "[{$lang}][preview]lang_id")->label(false)->hiddenInput(['value' => $lang]);
+ echo $form->field($images[$lang]['preview'], "[{$lang}][preview]imageFile")->fileInput(['class' => 'image_inputs_field']);
+ if(!empty($images[$lang]['preview']->id)) {
+ echo "

media->hash}/original.{$images[$lang]['preview']->media->extension}' width='100' class='image_inputs_prev'>";
}
- } else {
- echo $form->field($images[$index], "[{$index}]imageFile")->fileInput(['class' => 'image_inputs_field']);
- if(!empty($image->id)) {
- echo "

";
+ ?>
+
+ end();
+ ?>
+
+
+ field(is_array($images[0]['additional'])?$images[0]['additional'][0]:$images[0]['additional'], "[0][additional]imageFile[]")->fileInput(['multiple' => 'multiple', 'class' => 'image_inputs_field']);
+ if(is_array($images[0]['additional']) && count($images[0]['additional']) > 1) {
+ foreach($images[0]['additional'] as $onefield => $oneimage) {
+ if($onefield) {
+ ?>
+
+
-
-
+ }
+ ?>
+
diff --git a/common/modules/blog/views/default/index.php b/common/modules/blog/views/default/index.php
index b3d9bbc..17d1a81 100644
--- a/common/modules/blog/views/default/index.php
+++ b/common/modules/blog/views/default/index.php
@@ -1 +1,7 @@
value);
\ No newline at end of file
diff --git a/common/widgets/views/multilang-begin.php b/common/widgets/views/multilang-begin.php
index dd098f4..277af58 100644
--- a/common/widgets/views/multilang-begin.php
+++ b/common/widgets/views/multilang-begin.php
@@ -18,6 +18,7 @@ use yii\helpers\Url;
$data_lang) {
+ if(!$index) continue;
?>
[
'class' => AccessControl::className(),
- 'only' => ['logout', 'signup'],
+ 'only' => ['logout', 'signup', 'index'],
'rules' => [
[
'actions' => ['signup'],
@@ -48,6 +48,11 @@ class SiteController extends Controller
'allow' => true,
'roles' => ['@'],
],
+ [
+ 'actions' => ['index'],
+ 'allow' => true,
+ 'roles' => ['@'],
+ ]
],
],
'verbs' => [
--
libgit2 0.21.4