function getHTML($templ_name = 'table') { $templ_name = $templ_name . '_' . $this->style; if (file_exists(MODUL_DIR . '/mpanel/template/' . $templ_name . '.tpl')) { include MODUL_DIR . '/mpanel/template/' . $templ_name . '.tpl'; // Устанавливаем настройки по умолчанию $this->prefix = md5(system::url(0) . system::url(1) . (system::url(2) != '' ? system::url(2) : '')); if (!isset($_SESSION['table_' . $this->prefix])) { $_SESSION['table_' . $this->prefix]['max_count'] = 20; $_SESSION['table_' . $this->prefix]['page_num'] = 1; $_SESSION['table_' . $this->prefix]['table_search'] = ''; $_SESSION['table_' . $this->prefix]['page_num_temp'] = 1; } // Смотрим пришедшие данные из POST if (!isset($_POST['filter'])) { // Сортировка по столбцу if (isset($_POST['field']) && isset($_POST['parram'])) { $_SESSION['table_' . $this->prefix]['order_field'] = system::POST('field'); $_SESSION['table_' . $this->prefix]['order_parram'] = system::POST('parram'); } // Количество строк в таблице if (isset($_POST['max_count'])) { $_SESSION['table_' . $this->prefix]['max_count'] = $_POST['max_count']; $_SESSION['table_' . $this->prefix]['page_num'] = 1; } // Выбор нужной страницы if (isset($_POST['page_num'])) { $_SESSION['table_' . $this->prefix]['page_num'] = $_POST['page_num']; } // Поиск по таблице if (isset($_POST['table_search'])) { $_SESSION['table_' . $this->prefix]['page_num_temp'] = $_SESSION['table_' . $this->prefix]['page_num']; $_SESSION['table_' . $this->prefix]['page_num'] = 1; if ($_POST['table_search'] == '') { $_SESSION['table_' . $this->prefix]['page_num'] = $_SESSION['table_' . $this->prefix]['page_num_temp']; } $_SESSION['table_' . $this->prefix]['table_search'] = $_POST['table_search']; } // Очистка результатов поиска if (isset($_POST['clear_search'])) { $_SESSION['table_' . $this->prefix]['page_num'] = $_SESSION['table_' . $this->prefix]['page_num_temp']; $_SESSION['table_' . $this->prefix]['table_search'] = ''; if ($this->isSelection) { $this->filter->clear(); } //$_SESSION['table_'.$this->prefix]['max_count'] = 3; } // Нажали ссылку "обычный поиск" (скрыть / показать фильтры) if ($this->isSelection && isset($_POST['showfilter'])) { if ($_POST['showfilter'] == 0) { $_SESSION['table_' . $this->prefix]['filters'] = ''; } $_SESSION['table_' . $this->prefix]['showfilter'] = $_POST['showfilter']; system::stop(); } } // Сортировка по столбцу if ($this->isSelection && isset($_SESSION['table_' . $this->prefix]['order_field'])) { $this->select->orderBy($_SESSION['table_' . $this->prefix]['order_field'], $_SESSION['table_' . $this->prefix]['order_parram']); } $up_line = ''; // Устанавливаем список полей для выборки if ($this->isSelection && !$this->select->fieldsIsDefined()) { /* $class_name = $this->select->getObjectsClass(); if (!empty($class_name)) $select = (ormClasses::get($class_name)->issetField('active')) ? 'active' : ''; else */ $select = 'active'; while (list($key, $column) = each($this->columns)) { $zpt = !empty($select) ? ', ' : ''; if (strpos($column['field'], ' ')) { $vals = explode(' ', $column['field']); while (list($k, $val) = each($vals)) { $select .= $zpt . $val; } } else { $select .= $zpt . $column['field']; } } $this->select->fields($select); } // Вывод формы ПОИСКа и установка параметров if ($this->show_search) { if ($this->isSelection && !empty($_SESSION['table_' . $this->prefix]['table_search'])) { $query = $_SESSION['table_' . $this->prefix]['table_search']; $this->inSearch = true; $where = array(); reset($this->columns); while (list($key, $column) = each($this->columns)) { if ($column['field'] != 'children' && $column['field'] != 'parent') { if (strpos($column['field'], ' ')) { $vals = explode(' ', $column['field']); while (list($k, $val) = each($vals)) { $where[] = $this->select->val($val, 'LIKE', '%' . $query . '%'); } } else { $where[] = $this->select->val($column['field'], 'LIKE', '%' . $query . '%'); } } } $this->select->where($this->select->logOr($where)); } page::assign('table_search', $_SESSION['table_' . $this->prefix]['table_search']); $up_line .= page::parse($TEMPLATE['search']); } // + + + Все что касается вывода ФИЛЬТРОВ + + + + + + + + if ($this->isSelection && !$this->disable_filters) { //$_SESSION['table_'.$this->prefix]['page_num'] = 1; if (!isset($_SESSION['table_' . $this->prefix]['showfilter'])) { $_SESSION['table_' . $this->prefix]['showfilter'] = $this->filters; } // Определяем нужно или нет показывать список фильтров $show_filter = $this->filters; if ($_SESSION['table_' . $this->prefix]['showfilter']) { $show_filter = true; } page::assign('mores', $show_filter ? 'mores' : ''); $this->filter->setFilters(); page::assign('filters', $this->filter->getHTML()); // Кнопка "Показать / спрятать фильтры" if ($this->show_search && $this->filter->getCount() > 0) { if ($show_filter) { page::assign('moresearch', 1); page::assign('sh_text', lang::get('TABLE_SEARCH_MIN')); } else { page::assign('moresearch', 0); page::assign('sh_text', lang::get('TABLE_SEARCH_MAX')); } page::fParse('filters_link', $TEMPLATE['filters_link']); } else { page::assign('filters_link', ''); } page::fParse('filters', $TEMPLATE['filters']); if ($show_filter && $this->filter->getCount() > 0 && !$this->show_search) { page::assign('filters_link', ''); $up_line .= page::parse($TEMPLATE['without_search']); } } else { page::assign('filters', ''); } page::assign('up_line', $up_line); // Кнопка "версия для печати" if ($this->print) { $up_line .= page::parse($TEMPLATE['print_link']); } // Дополнительные параметры запросов $str_param = ''; while (list($key, $param) = each($this->moreParam)) { $str_param .= '/' . $param; } page::assign('parram', $str_param); // Вывод сообщения "Таблица пустая" $count = $this->isSelection ? $this->select->getCount() : count($this->data); if ($count <= 0) { if ($this->inSearch || $this->isSelection && $this->filter->isActive()) { $message = lang::get('TABLE_NOT_FOUND') . '<br /><span onClick="stopSearch()">' . lang::get('TABLE_NOT_FOUND2') . '</span>'; } else { $message = empty($this->empty_text) ? lang::get('TABLE_EMPTY') : $this->empty_text; } page::assign('message', $message); if (system::isAjax()) { echo page::parse($TEMPLATE['empty_frame']); system::stop(); } else { page::fParse('content', $TEMPLATE['empty_frame']); return page::parse($TEMPLATE['main']); } } // Постраничная навигация $this->navigation(5, $TEMPLATE); // Вывод прав $this->rights($TEMPLATE); // Определяем модуль для права по умолчанию $pos = strpos($this->def_right, '.'); if (!empty($pos)) { $module = substr($this->def_right, 0, $pos); $this->def_right = substr($this->def_right, $pos + 1, strlen($this->def_right)); } else { $module = system::url(0); } if (user::issetRight($this->def_right, $module)) { $this->def_right = system::au() . '/' . $module . '/' . $this->def_right . '/'; } else { $this->def_right = ''; } $this->count = $this->isSelection ? $this->select->getObjectCount() : count($this->data); if ($this->count == 0 && $_SESSION['table_' . $this->prefix]['page_num'] != 1) { $_SESSION['table_' . $this->prefix]['page_num'] -= 1; } page::assign('table_parent_id', 0); // Вывод строчек if ($this->isSelection) { $this->selItems($TEMPLATE); } else { $this->masItems($TEMPLATE); } // Вывод столбцов $this->columns($TEMPLATE); // Текст сообщения об удалении элементов if (empty($this->del_title) || empty($this->del_text)) { $this->del_title = lang::get('TABLE_DROP_TITLE'); $this->del_text = lang::get('TABLE_DROP_TEXT'); } if (empty($this->del_title_multi) || empty($this->del_text_multi)) { $this->del_title_multi = lang::get('TABLE_DROP_TITLE_MULTI'); $this->del_text_multi = lang::get('TABLE_DROP_TEXT_MULTI'); } page::assign('del_title', $this->del_title); page::assign('del_text', $this->del_text); page::assign('del_title_multi', $this->del_title_multi); page::assign('del_text_multi', $this->del_text_multi); page::assign('select_checkbox', lang::get('TABLE_SEL_CHECKBOX')); // Версия для печати (НУЖНО ДОДЕЛАТЬ) if (system::getCurrentNavVal() == 'print') { echo page::parse($TEMPLATE['frame']); system::stop(); } if (system::isAjax()) { echo page::parse($TEMPLATE['frame']); system::stop(); } else { page::fParse('content', $TEMPLATE['frame']); return page::parse($TEMPLATE['main']); } } }
/** * @return HTML * @param int $section_id - ID страницы сайта, подразделы которой будут выводиться в списке * @param string $templ_name - Шаблон оформления по которому будет строится список подразделов * @param int $max_count - Максимальное количество элементов в списке * @param string $order_by - Способ сортировки элементов списка. SQL-подобный синтаксис, например: "name DESC". * @param int $start_pos - Номер элемента по порядку с которого будет выводиться список. * @desc МАКРОС: Выводит содержимое конкретного раздела сайта, при необходимости формирует список подразделов. */ public function objView($section_id, $templ_name = 0, $max_count = 0, $order_by = 0, $start_pos = 0) { if ($page = ormPages::get($section_id)) { if (empty($templ_name)) { $templ_obj = templates::get($page->template2_id); $templ_name = $templ_obj instanceof template ? $templ_obj->getFile() : 'default'; } $templ_file = '/structure/objects/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('structure.objView', $templ_file); } $class = $page->getClass()->getSName(); $templ = 'frame_' . $class; if (!isset($TEMPLATE[$templ]) && isset($TEMPLATE['frame'])) { $templ = 'frame'; } $pre = system::getCurrentNavVal() == 'print' && isset($TEMPLATE['print_' . $templ]) ? 'print_' : ''; if (isset($TEMPLATE[$pre . $templ])) { $fields = page::getFields('obj', $TEMPLATE[$pre . $templ]); // Выводим список подразделов (если нужно) if (isset($fields['mono']) && in_array('list', $fields['mono'])) { $list = $this->objList($page, $TEMPLATE, $max_count, $order_by, $start_pos); if (!empty($list) && isset($TEMPLATE[$templ . '_list'])) { // Выводим список в обрамлении page::assign('list', $list); $list = page::parse($TEMPLATE[$templ . '_list']); } else { if (empty($list)) { // Выводим сообщение "Список пуст!" if (isset($TEMPLATE['list_empty_' . $class])) { $list = page::parse($TEMPLATE['list_empty_' . $class]); } } } page::assign('list', $list); } // Парсим поля страницы if (isset($fields['obj'])) { while (list($num, $name) = each($fields['obj'])) { page::assign('obj.' . $name, $page->__get($name)); } } page::assign('back_url', system::preUrl($page->url)); page::assign('obj.class', $class); page::assign('print_url', $page->url . '=print'); return page::parse($TEMPLATE[$pre . $templ]); } } }