<?php

class actionGroupsDatasets extends cmsAction {

    use icms\traits\controllers\actions\listgrid {
        run as private traitRun;
    }

    public function __construct($controller, $params = []) {

        parent::__construct($controller, $params);

        $this->table_name = 'content_datasets';
        $this->grid_name  = 'ctype_datasets';
        $this->grid_args  = [$this->cms_template->href_to('datasets', ['edit', '{id}'])];
        $this->title      = LANG_CP_CTYPE_DATASETS;

        $this->tool_buttons = [
            [
                'class' => 'add',
                'title' => LANG_CP_DATASET_ADD,
                'href'  => $this->cms_template->href_to('datasets', 'add')
            ],
            [
                'class'  => 'help',
                'title'  => LANG_HELP,
                'target' => '_blank',
                'href'   => LANG_HELP_URL_CTYPES_DATASETS
            ],
        ];

        $this->list_callback = function ($model) {

            $model->filterEqual('target_controller', 'groups');

            return $model;
        };

    }

    public function run($do = false, $id = 0) {

        $admin = cmsCore::getController('admin', $this->request);

        // для добавления/редактирования вызываем экшены админки
        if ($do) {

            $this->cms_template->setContext($admin);

            $html = $admin->runExternalActionIfExists('ctypes_datasets_'.$do, ($do === 'add' ? [$this->name] : [$id]), true);

            $this->cms_template->restoreContext();

            return $html;
        }

        // Меняем контекст контроллера для экшена
        $this->controller = $admin;

        return $this->traitRun();
    }

}
