Example #1
0
 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;
 }
Example #2
0
 /**
  * @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);
     }
 }
Example #3
0
 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');
 }
Example #4
0
    /**
    * @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);
            }
        }
    }
Example #5
0
    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();
    }
Example #6
0
 /**
 * @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);
         }
     }
 }
Example #7
0
 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
     }
 }
Example #8
0
 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();
 }
Example #9
0
 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']);
 }
Example #10
0
    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();
    }
Example #11
0
    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'), '&nbsp;');
        return $form->getHTML();
    }
Example #12
0
 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');
         }
     }
 }
Example #13
0
 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();
             }
         }
     }
 }