From ad1628c68577cf17037b6e7d4f86ec8ba4ae8343 Mon Sep 17 00:00:00 2001 From: SVarlamov Date: Sat, 11 Jun 2016 12:54:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=9C=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20=D0=9D=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=B3=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D0=BC=20?= =?UTF-8?q?=D1=80=D1=83=D0=B1=D1=80=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 ++++ class.rubnav.php | 124 ++++++++++++++++++++++++++ lang/ru.txt | 21 +++++ module.php | 143 ++++++++++++++++++++++++++++++ sql.php | 44 ++++++++++ templates/admin_config.tpl | 173 +++++++++++++++++++++++++++++++++++++ 6 files changed, 520 insertions(+) create mode 100644 README.md create mode 100644 class.rubnav.php create mode 100644 lang/ru.txt create mode 100644 module.php create mode 100644 sql.php create mode 100644 templates/admin_config.tpl diff --git a/README.md b/README.md new file mode 100644 index 0000000..f342bf2 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +## rubnav + +# Модуль Навигация по документам рубрики v1.1.2 + + +## Навигация по документам в пределах рубрики (следущая-предыдущая) + + * Инструкция:
[mod_rubnav:next] - следущая
[mod_rubnav:prev] - предыдущая + + +## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку rubnav со всем ее содержимым внутри! + +## Changelog: + +05.05.2014 - версия 1.1.2 \ No newline at end of file diff --git a/class.rubnav.php b/class.rubnav.php new file mode 100644 index 0000000..79984db --- /dev/null +++ b/class.rubnav.php @@ -0,0 +1,124 @@ +_tpl_dir = $tpl_dir; + $this->_lang_file = $lang_file; + } + + /** + * Управление модулем Навигация по рубрике + * + */ + function _rubnavSettingsGet($field = '') + { + global $AVE_DB; + + static $settings = null; + + if ($settings === null) + { + $settings = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_rubnav + WHERE Id = 1 + ")->FetchAssocArray(); + } + if ($field == '') return $settings; + return (isset($settings[$field]) ? $settings[$field] : null); + } + + function _rubnavRubricsGet() + { + global $AVE_DB, $AVE_Template; + + $rubrics = array(); + $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics"); + while ($result = $sql->FetchRow()) + { + array_push($rubrics, $result); + } + $AVE_Template->assign('rubrics', $rubrics); + } + + function rubnavSettingsEdit() + { + global $AVE_DB, $AVE_Template; + + if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save') + { + $sql = $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_rubnav + SET + rubnav_tmpl_next = '" . $_REQUEST['rubnav_tmpl_next'] . "', + rubnav_tmpl_prev = '" . $_REQUEST['rubnav_tmpl_prev'] . "' + WHERE + id = 1 + "); + + if ($sql->_result === false) { + $message = $AVE_Template->get_config_vars('RUBNAV_MODULE_SAVED_ERR'); + $header = $AVE_Template->get_config_vars('RUBNAV_MODULE_ERROR'); + $theme = 'error'; + }else{ + $message = $AVE_Template->get_config_vars('RUBNAV_MODULE_SAVED'); + $header = $AVE_Template->get_config_vars('RUBNAV_MODULE_SUCCESS'); + $theme = 'accept'; + } + + if (isset($_REQUEST['ajax']) && $_REQUEST['ajax'] = '1') { + echo json_encode(array('message' => $message, 'header' => $header, 'theme' => $theme)); + } else { + $AVE_Template->assign('message', $message); + header('Location:index.php?do=modules&action=modedit&mod=rubnav&moduleaction=1&cp=' . SESSION); + } + exit; + + } + + $row = $this->_rubnavSettingsGet(); + + $AVE_Template->assign($row); + + $AVE_Template->config_load($this->_lang_file, 'showconfig'); + $AVE_Template->assign('content', $AVE_Template->fetch($this->_tpl_dir . 'admin_config.tpl')); + } +} +?> \ No newline at end of file diff --git a/lang/ru.txt b/lang/ru.txt new file mode 100644 index 0000000..06b0245 --- /dev/null +++ b/lang/ru.txt @@ -0,0 +1,21 @@ +RUBNAV_MODULE = "Навигация по рубрике" +RUBNAV_MODULE_INFO = "В данном разделе Вы можете выполнить настройку модуля в соответствии с требуемыми параметрами" +RUBNAV_MODULE_SETUP = "Управление модулем" + +RUBNAV_MODULE_YES = "Да" +RUBNAV_MODULE_NO = "Нет" +RUBNAV_MODULE_OR = "или" + +RUBNAV_MODULE_SAVE = "Сохранить" +RUBNAV_MODULE_SAVE_NEXT = "Применить (CTRL + S)" + +RubNavLink = "Тег, определяющий адрес для перехода" +RubNavLinkName = "Тег, определяющий название ссылки, которое будет отображено" + +RubNavTeplNext = "Шаблон для ссылки на следущую страницу" +RubNavTeplPrev = "Шаблон для ссылки на предыдущую страницу" + +RUBNAV_MODULE_SAVED = "Успешно сохранено" +RUBNAV_MODULE_SAVED_ERR = "Не удалось сохранить.
Попробуйте еще раз." +RUBNAV_MODULE_ERROR = "Ошибка" +RUBNAV_MODULE_SUCCESS = "Выполнено" \ No newline at end of file diff --git a/module.php b/module.php new file mode 100644 index 0000000..5c03d25 --- /dev/null +++ b/module.php @@ -0,0 +1,143 @@ +Инструкция:
[mod_rubnav:next] - следущая
[mod_rubnav:prev] - предыдущая'; + $modul['ModuleAutor'] = 'AVE.CMS Team'; + $modul['ModuleCopyright'] = '© 2007-2014 AVE.cms'; + $modul['ModuleIsFunction'] = 1; + $modul['ModuleAdminEdit'] = 1; + $modul['ModuleFunction'] = 'mod_rubnav'; + $modul['ModuleTag'] = '[mod_rubnav:XXX]'; + $modul['ModuleTagLink'] = null; + $modul['ModuleAveTag'] = '#\\\[mod_rubnav:([a-zA-Z0-9]+)]#'; + $modul['ModulePHPTag'] = ""; +} + +/** + * Обработка тэга модуля + * + */ +function mod_rubnav($data) +{ + global $AVE_DB, $AVE_Core; + + $row_templ = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_rubnav + WHERE Id = 1 + ")->FetchRow(); + + if ($data == "next") + { + $next_link = ''; + $row = $AVE_DB->Query(" + SELECT + Id, + document_alias, + document_title + FROM " . PREFIX . "_documents + WHERE + Id != '1' + AND Id != '" . PAGE_NOT_FOUND_ID . "' + AND Id != '" . $AVE_Core->curentdoc->Id . "' + AND rubric_id = '" . $AVE_Core->curentdoc->rubric_id . "' + AND document_published >= '" . $AVE_Core->curentdoc->document_published . "' + AND (document_expire = 0 || document_expire > UNIX_TIMESTAMP()) + AND (document_published = 0 || document_published < UNIX_TIMESTAMP()) + AND document_deleted = '0' + AND document_status = '1' + ORDER BY document_published ASC + LIMIT 0,1 + ") + ->fetchRow(); + if ($row) + { + + $search = array('[tag:link]','[tag:linkname]'); + $replace = array( + rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)), + stripslashes(htmlspecialchars_decode($row->document_title)) + ); + + $next_link = str_replace($search, $replace, $row_templ->rubnav_tmpl_next); + } + echo $next_link; + } + else if ($data == "prev") + { + //Функция перехода на предыдущую страницу в данной рубрике + $prev_link = ''; + $row = $AVE_DB->Query(" + SELECT + Id, + document_alias, + document_title + FROM " . PREFIX . "_documents + WHERE + Id != '1' + AND Id != '" . PAGE_NOT_FOUND_ID . "' + AND Id != '" . $AVE_Core->curentdoc->Id . "' + AND rubric_id = '" . $AVE_Core->curentdoc->rubric_id . "' + AND document_published <= '" . $AVE_Core->curentdoc->document_published . "' + AND (document_expire = 0 || document_expire > UNIX_TIMESTAMP()) + AND (document_published = 0 || document_published < UNIX_TIMESTAMP()) + AND document_deleted = '0' + AND document_status = '1' + ORDER BY document_published DESC + LIMIT 0,1 + ") + ->fetchRow(); + if ($row) + { + $search = array('[tag:link]','[tag:linkname]'); + $replace = array( + rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)), + stripslashes(htmlspecialchars_decode($row->document_title)) + ); + + $prev_link = str_replace($search, $replace, $row_templ->rubnav_tmpl_prev); + } + echo $prev_link; + } +} + +/** + * Администрирование + */ +if (defined('ACP') && !empty($_REQUEST['moduleaction'])) +{ + global $rubric_list; + + $tpl_dir = BASE_DIR . '/modules/rubnav/templates/'; + $lang_file = BASE_DIR . '/modules/rubnav/lang/' . $_SESSION['admin_language'] . '.txt'; + + if (! @require(BASE_DIR . '/modules/rubnav/class.rubnav.php')) module_error(); + + $rubric_list = new RubNav($tpl_dir, $lang_file); + + $AVE_Template->config_load($lang_file); + $config_vars = $AVE_Template->get_config_vars(); + $AVE_Template->assign('config_vars', $config_vars); + + switch($_REQUEST['moduleaction']) + { + case '1': + $rubric_list->rubnavSettingsEdit(); + break; + } +} +?> \ No newline at end of file diff --git a/sql.php b/sql.php new file mode 100644 index 0000000..4a58e8b --- /dev/null +++ b/sql.php @@ -0,0 +1,44 @@ +[tag:linkname]', '[tag:linkname]');"; + +// Обновление модуля +$module_sql_update[] = " + UPDATE + `CPPREFIX_module` + SET + ModuleAveTag = '" . $modul['ModuleAveTag'] . "', + ModulePHPTag = '" . $modul['ModulePHPTag'] . "', + ModuleVersion = '" . $modul['ModuleVersion'] . "' + WHERE + ModuleSysName = '" . $modul['ModuleSysName'] . "' + LIMIT 1; +"; +?> \ No newline at end of file diff --git a/templates/admin_config.tpl b/templates/admin_config.tpl new file mode 100644 index 0000000..b374690 --- /dev/null +++ b/templates/admin_config.tpl @@ -0,0 +1,173 @@ + + + + + + + + + +{literal} + +{/literal} + +
{#RUBNAV_MODULE#}
+ +
+
+ {#RUBNAV_MODULE_INFO#} +
+
+ + + + +
+
{#RUBNAV_MODULE_SETUP#}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{#RubNavTeplNext#}
[tag:link] + +
[tag:linkname]
HTML tags + |  + OL |  + UL |  + LI |  + P |  + B |  + I |  + H1 |  + H2 |  + H3 |  + H4 |  + H5 |  + DIV |  + A |  + IMG |  + SPAN |  + PRE |  + BR |  + TAB | +
{#RubNavTeplPrev#}
[tag:link] + +
[tag:linkname]
HTML tags + |  + OL |  + UL |  + LI |  + P |  + B |  + I |  + H1 |  + H2 |  + H3 |  + H4 |  + H5 |  + DIV |  + A |  + IMG |  + SPAN |  + PRE |  + BR |  + TAB | +
+
+
+ + {#RUBNAV_MODULE_OR#} + +
+
+
+
+ + + +{include file="$codemirror_connect"} +{include file="$codemirror_editor" conn_id="" textarea_id='rubnav_tmpl_next' ctrls='$("#save_rubnav").ajaxSubmit(sett_options);' height=100} +{include file="$codemirror_editor" conn_id="2" textarea_id='rubnav_tmpl_prev' ctrls='$("#save_rubnav").ajaxSubmit(sett_options);' height=100} \ No newline at end of file