diff --git a/classes/engine/Router.class.php b/classes/engine/Router.class.php index 5afb7598..1a5d73b0 100644 --- a/classes/engine/Router.class.php +++ b/classes/engine/Router.class.php @@ -68,8 +68,7 @@ class Router extends Object { * */ protected function __construct() { - //Конфиг роутинга, содержит соответствия URL и классов экшенов - $this->aConfigRoute=include(DIR_SERVER_ROOT."/config/config.route.php"); + $this->LoadConfig(); if (get_magic_quotes_gpc()) { func_stripslashes($_REQUEST); @@ -107,6 +106,31 @@ class Router extends Object { $this->Viewer_Display($this->oAction->GetTemplate()); } + /** + * Выполняет загрузку конфигов роутинга + * + */ + protected function LoadConfig() { + //Конфиг роутинга, содержит соответствия URL и классов экшенов + $this->aConfigRoute=include(DIR_SERVER_ROOT."/config/config.route.php"); + /** + * Ищет конфиги модулей и объединяет их с текущим + */ + $sDirConfig=DIR_SERVER_ROOT.'/config/modules/'; + if ($hDirConfig = opendir($sDirConfig)) { + while (false !== ($sDirModule = readdir($hDirConfig))) { + if ($sDirModule !='.' and $sDirModule !='..' and is_dir($sDirConfig.$sDirModule)) { + $sFileConfig=$sDirConfig.$sDirModule.'/config.route.php'; + if (file_exists($sFileConfig)) { + $aConfigModule=include($sFileConfig); + $this->aConfigRoute=array_merge_recursive($this->aConfigRoute,$aConfigModule); + } + } + } + closedir($hDirConfig); + } + } + public function getStats() { return array('sql'=>$this->Database_GetStats(),'cache'=>$this->Cache_GetStats(),'engine'=>array('time_load_module'=>round($this->oEngine->iTimeLoadModule,3))); } diff --git a/classes/modules/sys_lang/Lang.class.php b/classes/modules/sys_lang/Lang.class.php index 9d6f0301..a5d627e8 100644 --- a/classes/modules/sys_lang/Lang.class.php +++ b/classes/modules/sys_lang/Lang.class.php @@ -41,17 +41,40 @@ class LsLang extends Module { */ if (SYS_CACHE_TYPE=='memory') { if (false === ($this->aLangMsg = $this->Cache_Get("lang_{$this->sCurrentLang}"))) { - $this->aLangMsg=include($this->sLangPath.'/'.$this->sCurrentLang.'.php'); + $this->LoadLangFiles(); $this->Cache_Set($this->aLangMsg, "lang_{$this->sCurrentLang}", array(), 60*60); } } else { - $this->aLangMsg=include($this->sLangPath.'/'.$this->sCurrentLang.'.php'); + $this->LoadLangFiles(); } /** * Загружаем в шаблон */ $this->Viewer_Assign('aLang',$this->aLangMsg); } + /** + * Загружает текстовки из языковых файлов + * + */ + protected function LoadLangFiles() { + $this->aLangMsg=include($this->sLangPath.'/'.$this->sCurrentLang.'.php'); + /** + * Ищет конфиги языковых файлов и объединяет их с текущим + */ + $sDirConfig=$this->sLangPath.'/modules/'; + if ($hDirConfig = opendir($sDirConfig)) { + while (false !== ($sDirModule = readdir($hDirConfig))) { + if ($sDirModule !='.' and $sDirModule !='..' and is_dir($sDirConfig.$sDirModule)) { + $sFileConfig=$sDirConfig.$sDirModule.'/'.$this->sCurrentLang.'.php'; + if (file_exists($sFileConfig)) { + $aLangModule=include($sFileConfig); + $this->aLangMsg=array_merge_recursive($this->aLangMsg,$aLangModule); + } + } + } + closedir($hDirConfig); + } + } /** * Установить текущий язык * diff --git a/config/config.php b/config/config.php index a062ecaa..8982938a 100644 --- a/config/config.php +++ b/config/config.php @@ -155,4 +155,5 @@ setlocale(LC_ALL, "ru_RU.UTF-8"); require_once(DIR_SERVER_ROOT."/config/config.table.php"); +require_once(DIR_SERVER_ROOT."/config/loader.php"); ?> \ No newline at end of file diff --git a/config/config.route.php b/config/config.route.php index f4089d47..f53134c1 100644 --- a/config/config.route.php +++ b/config/config.route.php @@ -30,7 +30,6 @@ define("ROUTE_PAGE_TOP",'top'); define("ROUTE_PAGE_INDEX",'index'); define("ROUTE_PAGE_NEW",'new'); define("ROUTE_PAGE_TOPIC",'topic'); -define("ROUTE_PAGE_PAGE",'page'); define("ROUTE_PAGE_LOGIN",'login'); define("ROUTE_PAGE_PEOPLE",'people'); define("ROUTE_PAGE_SETTINGS",'settings'); @@ -54,8 +53,7 @@ return array( ROUTE_PAGE_TOP => 'ActionTop', ROUTE_PAGE_INDEX => 'ActionIndex', ROUTE_PAGE_NEW => 'ActionNew', - ROUTE_PAGE_TOPIC => 'ActionTopic', - ROUTE_PAGE_PAGE => 'ActionPage', + ROUTE_PAGE_TOPIC => 'ActionTopic', ROUTE_PAGE_LOGIN => 'ActionLogin', ROUTE_PAGE_PEOPLE => 'ActionPeople', ROUTE_PAGE_SETTINGS => 'ActionSettings', @@ -67,6 +65,7 @@ return array( ROUTE_PAGE_QUESTION => 'ActionQuestion', ROUTE_PAGE_BLOGS => 'ActionBlogs', ROUTE_PAGE_SEARCH => 'ActionSearch', + 'tools' => 'ActionTools', ), 'config' => array( 'action_default' => ROUTE_PAGE_INDEX, diff --git a/config/loader.php b/config/loader.php new file mode 100644 index 00000000..a5899ad6 --- /dev/null +++ b/config/loader.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/config/modules/page/config.php b/config/modules/page/config.php new file mode 100644 index 00000000..5a829448 --- /dev/null +++ b/config/modules/page/config.php @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/config/modules/page/config.route.php b/config/modules/page/config.route.php new file mode 100644 index 00000000..4dba32e5 --- /dev/null +++ b/config/modules/page/config.route.php @@ -0,0 +1,31 @@ + array( + ROUTE_PAGE_PAGE => 'ActionPage', + ), +); + +?> \ No newline at end of file diff --git a/templates/language/modules/page/russian.php b/templates/language/modules/page/russian.php new file mode 100644 index 00000000..e46ed002 --- /dev/null +++ b/templates/language/modules/page/russian.php @@ -0,0 +1,64 @@ + 'О проекте_$$', + 'page_download' => 'Скачать_$$', + + 'page_admin' => 'Управление статическими страницами_$$', + 'page_create' => 'Создание новой страницы_$$', + 'page_edit' => 'Редактирование страницы_$$', + 'page_new' => 'добавить страницу_$$', + 'page_create_parent_page' => 'Вложить в_$$', + 'page_create_parent_page_error' => 'Неверно выбрана страница для вложения_$$', + 'page_create_title' => 'Название_$$', + 'page_create_title_error' => 'Название страницы должно быть от 2 до 200 символов_$$', + 'page_create_url' => 'URL_$$', + 'page_create_url_error' => 'URL должен быть от 1 до 50 символов и только на латинице + цифры и знаки "-", "_"_$$', + 'page_create_url_error_bad' => 'URL должен отличаться от:', + 'page_create_text' => 'Текст_$$', + 'page_create_text_error' => 'Текст страницы должен быть от 1 до 50000 символов_$$', + 'page_create_seo_keywords' => 'SEO keywords_$$', + 'page_create_seo_keywords_notice' => 'Ключевые слова для SEO-оптимизации_$$', + 'page_create_seo_description' => 'SEO description_$$', + 'page_create_seo_description_notice' => 'Описание для SEO-оптимизации_$$', + 'page_create_active' => 'показывать страницу_$$', + 'page_create_submit_save' => 'сохранить_$$', + 'page_create_submit_save_ok' => 'Новая страница добавлена_$$', + 'page_create_submit_cancel' => 'отмена_$$', + 'page_edit_notfound' => 'Страница для редактирования не найдена_$$', + 'page_edit_submit_save_ok' => 'Страница обновлена_$$', + 'page_admin_title' => 'Название_$$', + 'page_admin_url' => 'URL_$$', + 'page_admin_active' => 'Активна_$$', + 'page_admin_active_yes' => 'да_$$', + 'page_admin_active_no' => 'нет_$$', + 'page_admin_action' => 'Действие_$$', + 'page_admin_action_edit' => 'Редактировать_$$', + 'page_admin_action_delete' => 'Удалить_$$', + 'page_admin_action_delete_ok' => 'Страница удалена_$$', + 'page_admin_action_delete_error' => 'Возникла ошибка при удалении страницы_$$', + 'page_admin_action_delete_confirm' => 'Вы действительно хотите удалить эту страницу со всеми вложенными страницами?_$$', +); + +?> \ No newline at end of file diff --git a/templates/language/russian.php b/templates/language/russian.php index 7fb0b273..a9ced620 100644 --- a/templates/language/russian.php +++ b/templates/language/russian.php @@ -269,49 +269,6 @@ return array( 'people' => 'Люди_$$', - /** - * Статический страницы - */ - 'page_about' => 'О проекте_$$', - 'page_download' => 'Скачать_$$', - - 'page_admin' => 'Управление статическими страницами_$$', - 'page_create' => 'Создание новой страницы_$$', - 'page_edit' => 'Редактирование страницы_$$', - 'page_new' => 'добавить страницу_$$', - 'page_create_parent_page' => 'Вложить в_$$', - 'page_create_parent_page_error' => 'Неверно выбрана страница для вложения_$$', - 'page_create_title' => 'Название_$$', - 'page_create_title_error' => 'Название страницы должно быть от 2 до 200 символов_$$', - 'page_create_url' => 'URL_$$', - 'page_create_url_error' => 'URL должен быть от 1 до 50 символов и только на латинице + цифры и знаки "-", "_"_$$', - 'page_create_url_error_bad' => 'URL должен отличаться от:', - 'page_create_text' => 'Текст_$$', - 'page_create_text_error' => 'Текст страницы должен быть от 1 до 50000 символов_$$', - 'page_create_seo_keywords' => 'SEO keywords_$$', - 'page_create_seo_keywords_notice' => 'Ключевые слова для SEO-оптимизации_$$', - 'page_create_seo_description' => 'SEO description_$$', - 'page_create_seo_description_notice' => 'Описание для SEO-оптимизации_$$', - 'page_create_active' => 'показывать страницу_$$', - 'page_create_submit_save' => 'сохранить_$$', - 'page_create_submit_save_ok' => 'Новая страница добавлена_$$', - 'page_create_submit_cancel' => 'отмена_$$', - 'page_edit_notfound' => 'Страница для редактирования не найдена_$$', - 'page_edit_submit_save_ok' => 'Страница обновлена_$$', - 'page_admin_title' => 'Название_$$', - 'page_admin_url' => 'URL_$$', - 'page_admin_active' => 'Активна_$$', - 'page_admin_active_yes' => 'да_$$', - 'page_admin_active_no' => 'нет_$$', - 'page_admin_action' => 'Действие_$$', - 'page_admin_action_edit' => 'Редактировать_$$', - 'page_admin_action_delete' => 'Удалить_$$', - 'page_admin_action_delete_ok' => 'Страница удалена_$$', - 'page_admin_action_delete_error' => 'Возникла ошибка при удалении страницы_$$', - 'page_admin_action_delete_confirm' => 'Вы действительно хотите удалить эту страницу со всеми вложенными страницами?_$$', - - - /** * Пользователь */