<?php

namespace backend\bootstrap;

use backend\widgets\dashboard\helpers\UsersLastInfo;
use core\entities\Settings;
use zertex\elfinder\ElFinder;
use zertex\ckeditor\CKEditor;
use yii\base\BootstrapInterface;
use yii\helpers\ArrayHelper;

class SetUp implements BootstrapInterface
{
    public function bootstrap($app)
    {
        $container = \Yii::$container;

        // init presets
        $presetsPath = \Yii::getAlias('@core/components/ckeditor/presets');
        // basic
        $app->params['ckeditor']['basic']['toolbar'] = require $presetsPath . '/basic/toolbar.php';
        $app->params['ckeditor']['basic']['plugins'] = require $presetsPath . '/basic/plugins.php';
        // editor
        $app->params['ckeditor']['editor']['toolbar'] = require $presetsPath . '/editor/toolbar.php';
        $app->params['ckeditor']['editor']['plugins'] = require $presetsPath . '/editor/plugins.php';
        // debeloper
        $app->params['ckeditor']['developer']['toolbar'] = require $presetsPath . '/developer/toolbar.php';
        $app->params['ckeditor']['developer']['plugins'] = require $presetsPath . '/developer/plugins.php';

        // set preset example
        /*$form->field($model, 'content')->widget(CKEditor::class, [
            'editorOptions' => \zertex\elfinder\ElFinder::ckeditorOptions('elfinder',[
                'toolbar' => Yii::$app->params['ckeditor']['editor']['toolbar'],
                'extraPlugins' => Yii::$app->params['ckeditor']['editor']['plugins'],
            ])
        ])*/

        $container->set(CKEditor::class, [
            'editorOptions' => ElFinder::ckeditorOptions('elfinder', [
                'toolbar'      => $app->params['ckeditor']['editor']['toolbar'],
                'extraPlugins' => $app->params['ckeditor']['editor']['plugins'],
                'language'     => $app->language,
            ]),
        ]);

        // load settings
        $settings = Settings::find()->with('translations')->andWhere(['active' => 1])->all();
        $settings_array = $settings ? ArrayHelper::map($settings, 'key', function ($el) {
            return isset($el->translation->value) ? $el->translation->value : '';
        }, 'section') : [];
        $app->params['settings'] = $settings_array;

        // Connect backend modules

        // Add finish UrlRules
        $app->getUrlManager()->addRules([
            '<_c:[\w\-]+>'                       => '<_c>/index',
            '<_c:[\w\-]+>/<id:\d+>'              => '<_c>/view',
            '<_c:[\w\-]+>/<_a:[\w-]+>'           => '<_c>/<_a>',
            '<_c:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_c>/<_a>',
        ]);

        // Add dashboard widgets
        $app->params['dashboard_widgets'][] = [
                'name' => \Yii::t('user', 'Users'),
                'title' => \Yii::t('user', 'Users'),
                'method' => 'widgetLastUsers',
                'resizable' => 1,
                'size' => [
                    'width' => 4,
                    'height' => 12,
                ],
                'icon' => 'fa fa-user',
                'widget' => UsersLastInfo::class,
                'category' => 'info',
        ];
    }
}