Файл: system/controllers/content/actions/item_props_fields.php
Строк: 29
<?php
class actionContentItemPropsFields extends cmsAction {
    public function run() {
        if (!$this->request->isAjax()) {
            return cmsCore::error404();
        }
        $ctype_name  = $this->request->get('ctype_name', '');
        $category_id = $this->request->get('category_id', 0);
        $item_id     = $this->request->get('item_id', 0);
        $add_cats    = $this->request->get('add_cats', []);
        if ($add_cats){
            foreach($add_cats as $index=>$cat_id){
                if (!is_numeric($cat_id) || !$cat_id){
                    unset($add_cats[$index]);
                }
            }
        }
        if (!$ctype_name || (!$category_id && !$add_cats)) {
            return cmsCore::error404();
        }
        $ctype = $this->model->getContentTypeByName($ctype_name);
        if (!$ctype) {
            return cmsCore::error404();
        }
        $add_cats[] = $category_id;
        $values = $item_id ? ['props' => $this->model->getPropsValues($ctype['name'], $item_id)] : [];
        $form = new cmsForm();
        // Добавляется после набора props
        $form->addFieldset('', 'props', array(
            'is_empty' => true,
            'is_hidden' => true
        ));
        $form = $this->addFormPropsFields($form, $ctype, $add_cats);
        // Набор props уже есть в форме, удаляем его тут
        $form->removeFieldset('props');
        ob_start();
        $this->cms_template->renderForm($form, $values, [
            'form_tpl_file' => 'form_fields'
        ]);
        return $this->cms_template->renderJSON(array(
            'success' => true,
            'html'    => ob_get_clean()
        ));
    }
}