/** * @return Сгенерированный HTML * @param ormClass $class - экземпляр ORM-класса, для которого необходимо построить структуру * @param String $templ_name - имя шаблона оформления * @desc Генерирует структуру полей для класса данных */ function getHTML($class, $templ_name = 'orm_fields_tree') { if (file_exists(MODUL_DIR . '/mpanel/template/' . $templ_name . '.tpl')) { include MODUL_DIR . '/mpanel/template/' . $templ_name . '.tpl'; $nodes['groups'] = $class->getAllGroups(); $nodes['fields'] = $class->getAllFields(); $main_url = system::au() . '/' . system::url(0) . '/'; page::assign('main_url', $main_url); if (is_array($nodes) && isset($nodes['groups']) && isset($nodes['fields'])) { $groups = ''; while (list($key, $node) = each($nodes['groups'])) { // Парсим данные о вложенных полях $fields = ''; reset($nodes['fields']); while (list($key, $field) = each($nodes['fields'])) { if ($field['f_group_id'] == $node['fg_id']) { if (empty($field['f_name'])) { $field['f_name'] = '- - - - -'; } page::assign('item.id', $field['f_id']); page::assign('item.parent_id', $field['f_group_id']); page::fParse('item.url', $this->rightEdit); page::assign('item.name', $field['f_name']); page::assign('item.sname', $field['f_sname']); page::assign('item.type', lang::get('CONSTR_TYPE_LIST', $field['f_type'])); page::assign('star', $field['f_required'] ? '*' : ''); page::assign('sh', $field['f_view'] ? 'lshow' : 'lhide'); if (empty($field['f_type'])) { page::assign('item.right', $this->getRightForField($TEMPLATE, $field['f_id'], $field['f_type'], $field['f_sname'])); $fields .= page::parse($TEMPLATE['separator']); } else { if ($field['f_system'] || $field['f_is_clone']) { $fields .= page::parse($TEMPLATE['field_not_edit']); } else { page::assign('item.right', $this->getRightForField($TEMPLATE, $field['f_id'], $field['f_type'], $field['f_sname'])); $fields .= page::parse($TEMPLATE['field_edit']); } } } } page::assign('items', $fields); page::assign('item.id', $node['fg_id']); page::fParse('sub_items', $TEMPLATE['frame_items']); // Парсим данные о группе полей fg_view fg_sname page::assign('item.id', $node['fg_id']); page::assign('item.parent_id', 0); page::fParse('item.url', $this->rightEdit2); page::assign('item.name', $node['fg_name']); page::assign('item.sname', $node['fg_sname']); page::assign('sh', $node['fg_view'] ? ' lshow' : ' lhide'); $other = $node['fg_system'] || $node['fg_is_clone'] ? true : false; page::assign('item.right', $this->getRightForGroup($TEMPLATE, $node['fg_id'], $other)); $groups .= page::parse($TEMPLATE['groups']); } page::assign('frame_items', $groups); } else { page::assign('frame_items', ''); } ui::insertButton('button_new_group', lang::get('BTN_NEW_FGROUP'), 'javascript:changeGroup(' . $class->id() . ', \'add\');'); return page::parse($TEMPLATE['main']); } }