function changeText($id, $obj) { if (!empty($id)) { reg::setKey($id, $obj['text'], $obj['description']); } else { if (!empty($obj['text'])) { reg::addToList(ormPages::getPrefix() . '/minitext', $obj['text'], $obj['description']); } } return true; }
/** * @return HTML * @param string $templ_name - шаблон оформления по которому будет строится меню * @param int $max_level - Максимальное количество уровней вложенности * @param int $section_id - ID раздела сайта, с которого будет строится меню * @param int $max_count - Максимальное количество элементов в меню. Если указано 0 - без ограничений * @desc МАКРОС: Выполняет построение меню сайта в виде дерева */ public function menu($templ_name = 'default', $max_level = 0, $section_id = 0, $max_count = 0) { $templ_file = '/structure/menu/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('structure.menu', $templ_file); } else { ormPages::reset(); $info = ormPages::getSectionByPath($section_id); if ($info['section'] instanceof ormPage) { $section_id = $info['section']->id; } $no_view = reg::getList(ormPages::getPrefix() . '/no_view'); return $this->getMenuListFor($section_id, 1, $max_level, $max_count, $TEMPLATE, $templ_file, $no_view); } }
public function proc() { if (system::isAjax() && system::issetUrl(2)) { if (system::url(2) == 'start') { searchIndex::clear(); reg::setKey(ormPages::getPrefix('search') . '/index_date', date('d.m.Y')); $sel = new ormSelect(); $sel->fields('name'); $sel->findInPages(); $sel->where('active', '=', 1); $sel->where('in_search', '=', 1); echo $sel->getCount(); } else { if (system::url(2) == 'info') { $data = reg::getKey(ormPages::getPrefix('search') . '/index_date'); if (empty($data)) { $data = '-'; } system::json(array('pages' => searchIndex::getCountPages(), 'words' => searchIndex::getCountWords(), 'data' => $data)); } else { $sel = new ormSelect(); $sel->findInPages(); $sel->where('active', '=', 1); $sel->where('in_search', '=', 1); $sel->limit(system::url(2), 1); searchIndex::indexPage($sel->getObject()); echo 'ok'; } } system::stop(); } if (system::POST('parram') == 'clear') { searchIndex::clear(); } system::redirect('/search/index'); }
/** * @return array( 'count' => 0, // Общее количество страниц 'pages' => array() // Результат поиска. Список ID страниц с учетом параметра $limit ); * @param array $tags - список ID тегов * @param int $limit - Максимальное количество страниц в результатах поиска * @param int $start_pos - Порядковый номер страницы, с которой начнется вывод результатов * @param array $classes_filter - Список ORM-классов, по которым ведется поиск * @desc Формирует список страниц имеющих указанные теги. */ static function find($tags, $limit = 10, $start_pos = 0, $classes_filter = array()) { if (!empty($tags)) { $q_tags = ''; foreach ($tags as $id) { $or = empty($q_tags) ? '' : ' AND '; $q_tags .= $or . 't_id = "' . $id . '"'; } // Генерируем sql-запрос if (!empty($q_tags)) { // Устанавливаем видимость объектов с учестом прав доступа пользователя $state = system::$isAdmin && reg::getKey(ormPages::getPrefix() . '/no_view_no_edit') ? '= 2' : '> 0'; $groups = ''; $m = user::getGroups(); while (list($key, $val) = each($m)) { $groups .= ' or r_group_id = "' . $key . '"'; } // Формируем фильтр по классам $cf = ''; if (!empty($classes_filter) && is_array($classes_filter)) { while (list($num, $class) = each($classes_filter)) { if ($c = ormClasses::get($class)) { $or = empty($cf) ? '' : ' OR '; $cf .= $or . 'o_class_id = "' . $c->id() . '"'; } } if (!empty($cf)) { $cf = 'and (' . $cf . ')'; } } // Получаем количество объектов $sql = 'SELECT count(tr_obj_id) FROM (SELECT tr_obj_id FROM <<tags>>, <<tags_rels>>, <<rights>>, <<objects>>, <<pages>> WHERE t_id = tr_tag_id and tr_obj_id = r_obj_id and r_state ' . $state . ' and ( r_group_id is NULL or r_group_id = "' . user::get('id') . '" ' . $groups . ' ) and (' . $q_tags . ') and tr_obj_id = o_id and o_id = p_obj_id and active = 1 ' . $cf . ' GROUP BY tr_obj_id) t;'; $count = db::q($sql, value); // Получаем список объектов if ($count > 0) { $sql = 'SELECT tr_obj_id page_id FROM <<tags>>, <<tags_rels>>, <<rights>>, <<objects>>, <<pages>> WHERE t_id = tr_tag_id and tr_obj_id = r_obj_id and r_state ' . $state . ' and ( r_group_id is NULL or r_group_id = "' . user::get('id') . '" ' . $groups . ' ) and (' . $q_tags . ') and tr_obj_id = o_id and o_id = p_obj_id and active = 1 ' . $cf . ' GROUP BY tr_obj_id'; if (empty($start_pos)) { $sql .= ' LIMIT ' . $limit . ';'; } else { $sql .= ' LIMIT ' . $start_pos . ', ' . $limit . ';'; } $mas = db::q($sql, records); } else { $mas = array(); } return array('count' => $count, 'pages' => $mas); } } }
public function defAction() { $_SESSION['STRUCTURE_LIST_FLAG'] = 1; // Если страниц нет, предлагаем добавить новую if (ormPages::getCountOfSection(0) == 0) { ui::MessageBox(lang::get('STRUCTURE_PAGE_NOT_FOUND'), lang::get('STRUCTURE_PAGE_NOT_FOUND2')); system::redirect('/structure/page_add'); } $obj_id = system::issetUrl(2) ? system::url(2) : 0; function getPageNotice($page) { $notice = ''; if ($page->is_home_page) { $notice = lang::get('STRUCTURE_TREE_TEXT12'); } if ($page->other_link != '') { $notice = lang::get('STRUCTURE_TREE_TEXT32'); } if (!$page->view_in_menu) { if (!empty($notice)) { $notice .= ', '; } $notice .= lang::get('STRUCTURE_TREE_TEXT22'); } if (!empty($notice)) { return '(' . $notice . ')'; } else { return ''; } } // Вывод дерева объектов $tree = new ormTree(328, 57); $tree->setClass('ormPage'); $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'), 'list/0'); $tree->setNotice('getPageNotice'); $tree->setRightEdit('list'); $tree->setRightActive('page_proc_act'); $tree->setRightRemove('page_proc_moveto'); $tree->setRightAjaxLoad('list'); $tree->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TEXT')); $tree->addRight('page_upd', lang::right('page_upd'), 'compose_image'); $tree->addRight('page_add', lang::right('page_add'), 'add_image'); //, 'class_list', $class_list ui::setLeftPanel($tree->getHTML()); // Заголовок страницы ui::setHeader(lang::right('tree')); if (!empty($obj_id) && ($obj = ormPages::get($obj_id))) { ui::setNaviBar(lang::right('list')); ui::setHeader($obj->name); ui::setBackButton('/structure/list/' . $obj->getParentId()); } else { $obj_id = 0; } // Формируем список классов для быстрого добавления $class_name = ormPages::getPopularClass($obj_id); $class = ormClasses::get($class_name); $types = ormClasses::get('section')->getAllInheritors(); $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit'); $elem_list = $cat_list = ''; while (list($id, $name) = each($types)) { if (!in_array($id, $no_edit)) { $bc = ormClasses::get($id); $pach = '/css_mpanel/tree/images/'; $ico = 'classes/' . $bc->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } if ($bc->isInheritor('category') || $bc->getSName() == 'section') { $cat_list .= ' <li><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $obj_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } else { $elem_list .= ' <li ><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $obj_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } } } $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>'; ui::newButton(lang::get('PANEL_BTN_ADD_PART') . $class->getPadej(0), "/structure/page_add/" . $obj_id, 'class_list', $class_list); // Формируем выборку страниц для таблицы $sel = new ormSelect(); $sel->findInPages(); $sel->where('parents', '=', $obj_id); // Определяем способ сортировки списка $order_by = !empty($obj_id) ? $obj->order_by : ''; if (!empty($order_by)) { $pos = strpos($order_by, ' '); if ($pos) { $parram = substr($order_by, $pos + 1); $order_by = substr($order_by, 0, $pos); } else { $parram = ''; } $sel->orderBy($order_by, $parram); } else { $sel->orderBy(position, asc); } // Вывод таблицы $table = new uiTable($sel); $table->formatValues(true); $table->showSearch(true); $table->hideEmptyColumns(true); $table->addColumn('name', lang::get('STRUCTURE_TABLE_FIELD_1'), 500, true); $table->addColumn('image', lang::get('STRUCTURE_TABLE_FIELD_2'), 400, false, false); $table->addColumn('price', lang::get('STRUCTURE_TABLE_FIELD_3'), 400); $table->addColumn('publ_date', lang::get('STRUCTURE_TABLE_FIELD_4'), 400); $table->defaultRight('page_upd'); $table->addRight('page_upd', 'edit', single); $table->addRight('list', 'list', single); $table->addRight('page_history', 'history', single); $table->addRight('page_proc_act', 'active', multi); $table->addRight('page_del', 'drop', multi); $table->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TITLE')); $table->setMultiDelMessage(lang::get('STRUCTURE_DEL_TITLE_MULTI'), lang::get('STRUCTURE_DEL_TEXT_MULTI')); return $table->getHTML(); }
/** * @return null * @param ormPage $page - страница для индексации * @desc Проводит индексацию страницы, предварительно удалив старые данные индексации и проверив возможность такой индексации. */ static function autoIndex($page) { if (reg::getKey(ormPages::getPrefix('search') . '/auto_index')) { if ($page instanceof ormPage) { // Если есть, удаляем старый индекс страницы self::delIndexForPage($page->id); self::indexPage($page); } } }
static function init($openPages = array()) { if (empty(self::$pages)) { $act = system::$isAdmin ? '' : ' and active = 1'; if (true) { $where = self::getSqlForRights(); $table = ', <<rights>>'; $select = ', MAX(r_state) r_state'; } else { $where = $table = $select = ''; } // Добавляем фильтр по классам (получаем данные только для классов образующих структуру сайта) $in_menu = reg::getList(ormPages::getPrefix() . '/no_view'); $cfilter = ''; while (list($num, $val) = each($in_menu)) { $or = empty($cfilter) ? '' : ' or '; $cfilter .= $or . ' o_class_id = "' . $val . '" '; } if (!empty($cfilter)) { $cfilter = ' and (' . $cfilter . ')'; } if (system::$isAdmin) { $select = 'o_id, o_name, o_class_id, o_create_date, o_change_date, pseudo_url, other_link, view_in_menu, active, is_home_page, template_id, template2_id, lang_id, domain_id' . $select; } else { $select = ' * ' . $select; } // Получаем список страниц $sql = 'SELECT ' . $select . ' FROM <<objects>>, <<pages>>' . $table . ' WHERE lang_id = "' . languages::curId() . '" and domain_id = "' . domains::curId() . '" and o_to_trash = 0 and p_obj_id = o_id' . $cfilter . $act . $where . ''; if (system::$isAdmin) { if (!empty($openPages)) { $open_pages = ''; while (list($page_id, $val) = each($openPages)) { $open_pages .= ' or r_parent_id = "' . $page_id . '" '; } $open_pages = ' and (r_parent_id is NULL ' . $open_pages . ')'; } else { $open_pages = ' and r_parent_id is NULL'; } $sql = '(' . $sql . ') UNION ( SELECT ' . $select . ' FROM <<objects>>, <<pages>>, <<rels>>' . $table . ' WHERE lang_id = "' . languages::curId() . '" and domain_id = "' . domains::curId() . '" and r_children_id = o_id ' . $open_pages . ' and r_field_id is NULL and o_to_trash = 0 and p_obj_id = o_id' . $act . $where . ' )'; } $tmp = db::q($sql, records); while (list($key, $value) = each($tmp)) { self::$pages[$value['o_id']] = $value; if (self::$pages[$value['o_id']]['is_home_page']) { self::$homepage_id = $value['o_id']; } } // Получаем связи между страницами $sql = 'SELECT r_parent_id, r_children_id, r_position FROM <<objects>>, <<pages>>, <<rels>>' . $table . ' WHERE lang_id = "' . languages::curId() . '" and domain_id = "' . domains::curId() . '" and o_to_trash = 0 and p_obj_id = o_id and r_children_id = o_id and r_field_id is NULL' . $cfilter . $act . $where . ' ORDER BY r_position ASC'; if (system::$isAdmin) { $sql = '(' . $sql . ') UNION ( SELECT child.r_parent_id, child.r_children_id, child.r_position FROM <<objects>>, <<pages>>, <<rels>> child' . $table . ' WHERE lang_id = "' . languages::curId() . '" and domain_id = "' . domains::curId() . '" and o_to_trash = 0 and p_obj_id = o_id and r_children_id = o_id ' . $open_pages . ' and r_field_id is NULL' . $act . $where . ' ORDER BY child.r_position ASC ) ORDER BY r_position ASC '; } $tmp = db::q(str_replace('GROUP BY o_id', '', $sql), records); while (list($key, $value) = each($tmp)) { if (empty($value['r_parent_id'])) { $value['r_parent_id'] = 0; } self::$pages_rel[$value['r_children_id']] = $value['r_parent_id']; self::$pages_rel2[$value['r_parent_id']][] = $value['r_children_id']; } //print_r(self::$pages_rel2); //getPageOfSection } }
static function start() { header('Content-Type: text/html; charset=utf-8'); self::parseUrl(); // Опредяем текущий язык и домен (в случае необходимости обрезаем URL) languages::curLang(); // Устанавливаем в доступ языковые переменные if (file_exists(MODUL_DIR . '/core/sitelang-' . languages::curPrefix() . '.php')) { include MODUL_DIR . '/core/sitelang-' . languages::curPrefix() . '.php'; lang::setLang($LANG); } // Подключаем класс для работы с текущим пользователем user::init(); // активация шаблонной системы self::$defTemplate = '/structure/default.tpl'; page::init('%', '%'); page::globalVar('h1', ''); page::globalVar('title', ''); page::globalVar('site_name', domains::curDomain()->getSiteName()); page::globalVar('base_email', domains::curDomain()->getEmail()); page::globalVar('user_id', user::get('id')); page::globalVar('pre_lang', languages::pre()); page::globalVar('time', time()); page::globalVar('current_url', self::getCurrentUrl()); page::globalVar('current_url_pn', self::getCurrentUrlPN()); page::assign('current_url', self::getCurrentUrl()); page::assign('current_url_pn', self::getCurrentUrlPN()); // Заглушка для IE6 if (reg::getKey('/core/noIE6') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) { $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie')); if ($val[1] == '6.0;') { page::parseIt('/ieDie.tpl', false, true); system::stop(); } } // Заглушка для IE7 if (reg::getKey('/core/noIE7') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) { $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie')); if ($val[1] == '7.0;') { page::parseIt('/ieDie.tpl', false, true); system::stop(); } } // Заглушка для IE8 if (reg::getKey('/core/noIE8') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) { $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie')); if ($val[1] == '8.0;') { page::parseIt('/ieDie.tpl', false, true); system::stop(); } } // Оффлайн сообщение if (!domains::curDomain()->online() && !user::isAdmin() && !(self::issetUrl(0) && self::url(0) == 'mpanel')) { page::globalVar('content', domains::curDomain()->getOfflineMsg()); page::parseIt('/offline.tpl', false, true); system::stop(); } // Генерация файлов robots.txt и sitemap.xml ormPages::getContentFileRobots(); ormPages::getContentFileSiteMap(); // Проверяем, есть ли текущая страница в кэше page::checkCache(); // Вызов макроса через Ajax page::callAjaxMacros(); // Парсим мето-информацию "по умолчанию" page::globalVar('keywords', reg::getKey(ormPages::getPrefix() . '/keywords')); page::globalVar('description', reg::getKey(ormPages::getPrefix() . '/description')); // Загрузка необходимого функционала в зависимости от адреса $content = ''; // Пытаемся загрузить МОДУЛЬ if (self::issetUrl(0)) { $content = self::loadController('controller'); } // Пытаемся загрузить СТРАНИЦУ if (!self::issetUrl(0) || $content === false) { $content = self::loadController('controller', 1, 'structure'); } // Отображение сообщения "Страница не найдена" if (empty($content)) { $content = ormPages::get404(); } // Парсим контент на страницу page::fParse('content', $content); // Версия для печати $print_file = '/structure/_' . self::getCurrentNavVal() . '.tpl'; if (self::getCurrentNavVal() != '' && file_exists(TEMPL_DIR . $print_file)) { self::$defTemplate = $print_file; } if (!self::$isAdmin) { $title = str_replace('%text%', page::getGlobalVar('title'), reg::getKey(ormPages::getPrefix() . '/title_prefix')); page::globalVar('title', $title); if (file_exists(MODUL_DIR . '/core/template/minitext.tpl')) { include MODUL_DIR . '/core/template/minitext.tpl'; } // Мини-тексты, если есть $list = reg::getList(ormPages::getPrefix() . '/minitext'); while (list($id, $val) = each($list)) { //инлайн редактирование if (user::isAdmin() && user::issetRight('minitext_edit', 'structure')) { $val = str_replace('%val%', $val, str_replace('%id%', $id, $TEMPLATE['frame'])); } page::globalVar('text_' . $id, $val); } } // Выводим содержимое на экран page::parseIt(self::$defTemplate); // Завершение работы self::stop(); }
public function tagAction() { $templ_file = '/search/gettag.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('search.getTag', $templ_file); } if (system::issetUrl(2) && ($tag = tags::infoTag(system::url(2)))) { $msg = lang::get('SEARCH_H1_TAGS') . ' "' . $tag['name'] . '"'; page::globalVar('h1', $msg); page::globalVar('title', $msg); // Получаем список классов $classes_filter = array(); if (!empty($_POST['classes'])) { $tmp = explode(",", $_POST['classes']); $classes_filter = array(); foreach ($tmp as $v) { $v = trim($v); if (!empty($v)) { $classes_filter[] = $v; } } } $max_count = reg::getKey(ormPages::getPrefix('search') . '/max_count'); $start = (system::getCurrentNavNum() - 1) * $max_count; $result = tags::find(array($tag['id']), $max_count, $start, $classes_filter); $list = ''; while (list($num, $val) = each($result['pages'])) { if ($page = ormPages::get($val['page_id'])) { page::assign('obj.id', $page->id); page::assign('obj.num', $num + $start + 1); page::assign('obj.name', $page->name); page::assign('obj.url', $page->_url); //page::assign('obj.content', $page->content); $cn = $page->getClass()->getSName(); $block_name = isset($TEMPLATE['list_' . $cn]) ? 'list_' . $cn : 'list'; $list .= page::parse($TEMPLATE[$block_name]); } } page::assign('count_page', ceil($result['count'] / $max_count)); } else { $list = ''; $msg = lang::get('SEARCH_H1_TAGS2'); page::globalVar('h1', $msg); page::globalVar('title', $msg); } if (!empty($list)) { page::assign('list', $list); page::fParse('list', $TEMPLATE['frame_list']); } else { page::fParse('list', $TEMPLATE['not_found']); } return page::parse($TEMPLATE['frame']); }
public function defAction() { if (!reg::getKey(ormPages::getPrefix() . '/view_as_tree')) { system::redirect('/structure/list'); } $_SESSION['STRUCTURE_LIST_FLAG'] = 0; // Если страниц нет, предлагаем добавить новую if (ormPages::getCountOfSection(0) == 0) { ui::MessageBox(lang::get('STRUCTURE_PAGE_NOT_FOUND'), lang::get('STRUCTURE_PAGE_NOT_FOUND2')); system::redirect('/structure/page_add'); } $types = ormClasses::get('section')->getAllInheritors(); $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit'); $elem_list = $cat_list = ''; while (list($id, $name) = each($types)) { if (!in_array($id, $no_edit)) { $obj = ormClasses::get($id); $pach = '/css_mpanel/tree/images/'; $ico = 'classes/' . $obj->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } if ($obj->isInheritor('category') || $obj->getSName() == 'section') { $cat_list .= ' <li><img src="' . $pach . $ico . '"> <a name="' . system::au() . '/structure/page_add/%obj_id%/' . $obj->getSName() . '" href="">' . $obj->getName() . '</a></li>'; } else { $elem_list .= ' <li ><img src="' . $pach . $ico . '"> <a name="' . system::au() . '/structure/page_add/%obj_id%/' . $obj->getSName() . '" href="">' . $obj->getName() . '</a></li>'; } } } $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>'; function getPageNotice($page) { $notice = ''; if ($page->is_home_page) { $notice = lang::get('STRUCTURE_TREE_TEXT1'); } if ($page->other_link != '') { $notice = lang::get('STRUCTURE_TREE_TEXT3'); } if (!$page->view_in_menu) { if (!empty($notice)) { $notice .= ', '; } $notice .= lang::get('STRUCTURE_TREE_TEXT2'); } if (!empty($notice)) { return '(' . $notice . ')'; } else { return ''; } } $tree = new ormTree(975, 265); $tree->setClass('ormPage'); $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'), 'settings'); $tree->setRightEdit('page_upd'); $tree->setRightActive('page_proc_act'); $tree->setRightRemove('page_proc_moveto'); $tree->setRightAjaxLoad('tree'); $tree->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TEXT')); $tree->addRight('getUrl()', lang::get('STRUCTURE_PAGE_URL'), 'view_image'); $tree->addEmptyRight(); $tree->addEmptyRight(); $tree->addRight('page_add', lang::right('page_add'), 'add_image', 0, 1, 'class_list', $class_list); $tree->addEmptyRight(); $tree->addRight('list', lang::right('list'), 'list_block_image'); $tree->addEmptyRight(); $tree->addRight('page_upd', lang::right('page_upd'), 'compose_image'); $tree->addRight('page_copy', lang::right('page_copy'), 'copy_image', 0, 0); $tree->addRight('page_history', lang::right('page_history'), 'history_image', 0, 0); $tree->addRight('page_del', lang::right('page_del'), 'drop_image', 1, 0); $tree->setNotice('getPageNotice'); return $tree->getHTML(); }
public function upd() { // Проверяем наличие шаблонов $templs = templates::getByDestination(0, true); if (empty($templs)) { ui::MessageBox(lang::get('STRUCTURE_TEMPL_NOT_FOUND'), lang::get('STRUCTURE_TEMPL_NOT_FOUND2')); system::redirect('/structure/settings#tabs-page_tpl'); } // Указываем для какого объекта строить форму if (system::action() == "upd") { // Изменение страницы if (system::url(2) == 0) { system::redirect('/structure/settings'); } $obj = ormPages::get(system::url(2)); if ($obj instanceof ormPage) { $parent_id = $obj->getParentId(); ui::setHeader($obj->name); ui::setNaviBar(lang::get('TEXT_EDIT') . $obj->getClass()->getPadej(1)); } $class_list = ''; $right = 'page_proc_upd'; } else { if (system::action() == "add") { // Добавление страницы $class_name = system::issetUrl(3) ? system::url(3) : ormPages::getPopularClass(system::url(2)); if (!($class = ormClasses::get($class_name))) { system::redirect('/structure/tree'); } if (in_array($class->id(), reg::getList(ormPages::getPrefix() . '/no_edit'))) { system::redirect('/structure/tree'); } if (system::issetUrl(2) && system::url(2) != 0) { $parent = ormPages::get(system::url(2)); ui::setNaviBar($parent->name, '/structure/list/' . $parent->id); } ui::setHeader(lang::get('TEXT_ADD') . $class->getPadej(1)); // Если это добавление нового объекта $obj = new ormPage(); $obj->setParent(system::url(2)); $obj->setClass($class_name); $obj->view_in_menu = 1; $obj->view_submenu = 1; $obj->active = 1; $obj->in_search = 1; $obj->in_index = 1; $obj->publ_date = date('d.m.Y H:i:s'); // Наследуем параметры от родителя // Шаблоны $parent_id = $obj->issetParents() ? $obj->getParentId() : 0; $templ = templates::getPopularForSection($parent_id); $def_templ_1 = $obj->getClass()->getDefTemplate(0); $def_templ_2 = $obj->getClass()->getDefTemplate(1); $obj->template_id = $def_templ_1 != 0 ? $def_templ_1 : $templ[0]; $obj->template2_id = $def_templ_2 != 0 ? $def_templ_2 : $templ[1]; $parent_id = system::url(2); // Количество элементов на странице $this->getPopularValue($obj, 'number_of_items', 10); // Способ сортировки $this->getPopularValue($obj, 'order_by', ''); // Формируем список классов для быстрого изменения класса объекта $types = ormClasses::get('section')->getAllInheritors(); $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit'); $elem_list = $cat_list = ''; while (list($id, $name) = each($types)) { if (!in_array($id, $no_edit)) { $bc = ormClasses::get($id); $pach = '/css_mpanel/tree/images/'; $ico = 'classes/' . $bc->getSName() . '.png'; if (!file_exists(ROOT_DIR . $pach . $ico)) { $ico = 'file1.gif'; } if ($bc->isInheritor('category') || $bc->getSName() == 'section') { $cat_list .= ' <li><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $parent_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } else { $elem_list .= ' <li ><img src="' . $pach . $ico . '"> <a href="' . system::au() . '/structure/page_add/' . $parent_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>'; } } } $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>'; $right = 'page_proc_add'; } } page::assign('right', $right); // Если произошли ошибки, перенаправляем на главную страницу модуля if (!$obj instanceof ormPage || $obj->issetErrors()) { system::redirect('/structure/tree'); } // Устанавливаем кнопки для формы if (isset($_SESSION['STRUCTURE_LIST_FLAG']) && $_SESSION['STRUCTURE_LIST_FLAG']) { ui::setCancelButton('/structure/list/' . $parent_id); } else { ui::setCancelButton('/structure/tree'); } if ($obj->isEditable()) { ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); } // Создаем форму и выводим ее на страницу $form = new ormEditForm($obj, $right); $form->setORMList($class_list); $form->addPadding('param', 9, 1); // Выбор шаблона оформления страниц $form->addField('param', 10, '', lang::get('STRUCTURE_TEMPLATE'), $this->getTemplateBox('template_id', $templs, $obj->template_id)); // Выбор шаблона оформления объектов $form->addField('param', 11, '', lang::get('STRUCTURE_TEMPLATE2'), $this->getTemplateBox('template2_id', templates::getByDestination(1, true), $obj->template2_id, 1)); // Выводим ID и URL страницы $this->getPageInfo($obj, $form); $form->newTabs(lang::get('STRUCTURE_TABS_RIGHT'), rights::getListForObject($obj, system::action())); //$form->newTabs(lang::get('STRUCTURE_TABS_RESTORE'), ' '); return $form->getHTML(); }
public function proc() { // ****************** Основные настройки *************************** reg::setKey(ormPages::getPrefix() . '/title_prefix', system::POST('title_prefix')); reg::setKey(ormPages::getPrefix() . '/keywords', system::POST('keywords')); reg::setKey(ormPages::getPrefix() . '/description', system::POST('description')); reg::setKey('/structure/' . domains::curId() . '/cur_date', system::POST('cur_date', isBool)); reg::setKey(ormPages::getPrefix() . '/no_view_no_edit', system::POST('no_view_no_edit', isBool)); reg::setKey(ormPages::getPrefix() . '/view_as_tree', system::POST('view_as_tree', isBool)); reg::setKey(ormPages::getPrefix('search') . '/auto_index', system::POST('auto_index', isBool)); // Сохраняем информацию о части файла Robots.txt if (isset($_POST['robots'])) { $file = ROOT_DIR . '/robots_part_' . domains::curDomain()->getName() . '.txt'; if (empty($_POST['robots']) && file_exists($file)) { unlink($file); } else { if (!empty($_POST['robots'])) { $f = fopen($file, "w"); fwrite($f, $_POST['robots']); fclose($f); } } } // Управление отображением reg::delKey(ormPages::getPrefix() . '/no_view'); if (isset($_POST['no_view_classes'])) { while (list($num, $val) = each($_POST['no_view_classes'])) { if (!empty($val)) { reg::setKey(ormPages::getPrefix() . '/no_view/' . $num, $val); } } } reg::delKey(ormPages::getPrefix() . '/no_edit'); if (isset($_POST['no_edit_classes'])) { while (list($num, $val) = each($_POST['no_edit_classes'])) { if (!empty($val)) { reg::setKey(ormPages::getPrefix() . '/no_edit/' . $num, $val); } } } // ****************** Сохранение шаблонов *************************** function changeTempl($id, $obj, $form_name) { $type = $form_name == 'page_tpl' ? 0 : 1; $templ = new template($id); $templ->setName($obj['t_name']); $templ->setFile($obj['t_file']); $templ->setDestination($type); $templ->setLangId(languages::curId()); $templ->setDomainId(domains::curId()); $templ->save(); return true; } function delTempl($id) { $templ = new template($id); $templ->delete(); } $form = new uiMultiForm('page_tpl'); $form->process('changeTempl', 'delTempl'); $form = new uiMultiForm('obj_tpl'); $form->process('changeTempl', 'delTempl'); ormPages::clearCache(); if ($_POST['parram'] == 'apply') { system::redirect('/structure/settings'); } else { if ($_SESSION['STRUCTURE_LIST_FLAG']) { system::redirect('/structure/list'); } else { system::redirect('/structure/tree'); } } }
static function checkObjectLinks() { if (system::url(0) == 'getObjectLinksTree') { if (file_exists(MODUL_DIR . '/mpanel/template/objectLinks.tpl')) { include MODUL_DIR . '/mpanel/template/objectLinks.tpl'; } $tree = new ormTree(457, 0); $tree->miniStyle(); $tree->setClass('ormPage'); $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix')); $tree->setRightAjaxLoad('tree'); page::assign('tree', $tree->getHTML()); page::assign('parram', system::url(1)); echo page::parse($TEMPLATE['tree_frame']); system::stop(); } else { if (system::url(0) == 'getObjectLinks') { if (file_exists(MODUL_DIR . '/mpanel/template/objectLinks.tpl')) { include MODUL_DIR . '/mpanel/template/objectLinks.tpl'; if (!($obj = ormPages::get(system::url(1)))) { $obj = ormObjects::get(system::url(1)); } if ($obj instanceof ormObject && !$obj->issetErrors()) { page::assign('id', $obj->id); page::assign('name', $obj->name); page::assign('url', $obj->url); page::assign('field_name', system::url(2)); page::assign('field_id', system::url(3)); if ($obj->getClass()->isPage()) { echo page::parse($TEMPLATE['new_object_link']); } else { echo page::parse($TEMPLATE['object_link']); } } } system::stop(); } else { if (system::url(0) == 'findObjectLinks' && isset($_POST['query'])) { // Формируем список подсказок $sel = new ormSelect(); $sel->findInPages(); $sel->fields('name'); $sel->where('name', 'LIKE', '%' . $_POST['query'] . '%'); $list = $list2 = ''; while ($obj = $sel->getObject()) { $zapi = $sel->getObjectNum() != 0 ? ', ' : ''; $list .= $zapi . "'" . $obj->name . "'"; $list2 .= $zapi . " ['" . $obj->id . "', '" . system::url(1) . "' ]"; } echo "{ query:'" . $_POST['query'] . "', suggestions:[" . $list . "], data:[" . $list2 . "] }"; system::stop(); } } } }