ArticleController.php 2.34 KB
<?php

namespace backend\modules\calendar\controllers;

use Yii;
use yii\helpers\ArrayHelper;
//
use thread\actions\{
    EditableAttributeSave, EditableAttributeSaveLang
};
use thread\actions\fileapi\UploadAction;
use thread\app\base\controllers\BackendController;
//
use backend\modules\calendar\models\{
    Article, ArticleLang, search\Article as filterArticleModel
};

/**
 * Class ArticleController
 *
 * @package backend\modules\calendar\controllers
 * @author FilamentV <vortex.filament@gmail.com>
 * @copyright (c), Thread
 */
class ArticleController extends BackendController
{
    public $model = Article::class;
    public $modelLang = ArticleLang::class;
    public $filterModel = filterArticleModel::class;
    public $title = 'Article';
    public $name = 'article';

    /**
     * @return array
     */
    public function actions()
    {
        return ArrayHelper::merge(
            parent::actions(),
            [
                'create' => [
                    'afterSaveCallback' => function ($m) {
                        return true;
                    }
                ],
                'update' => [
                    'afterSaveCallback' => function ($m) {
                        return true;
                    }
                ],
                'fileupload' => [
                    'class' => UploadAction::class,
                    'unique' => true,
                    'fileNameSave' => function ($m) {
                        $model_id = Yii::$app->getRequest()->get('model_id');
                        $model = Article::getById($model_id);
                        $m->model = $model;
                        return ($m->model === null) ? '' : $m->model->alias . '_' . uniqid();
                    }
                ],
                'attribute-save' => [
                    'class' => EditableAttributeSaveLang::class,
                    'modelClass' => $this->modelLang,
                    'attribute' => 'title',
                ],
                'attribute-save-group' => [
                    'class' => EditableAttributeSave::class,
                    'modelClass' => $this->model,
                    'attribute' => 'group_id',
                    'returnValue' => function ($model) {
                        return $model['group']['lang']['title'] ?? '---';
                    }
                ]
            ]
        );
    }
}