diff --git a/README.md b/README.md index 5120a56..43e61d0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ -# rubnav +### rubnav -Модуль Навигация по документам рубрики Только для AVE.CMS ALT \ No newline at end of file +## Модуль Навигация по документам рубрики v1.26.2 + + +### Навигация по документам в пределах рубрики (следущая-предыдущая) + + * Инструкция:
[mod_rubnav:next] - следущая
[mod_rubnav:prev] - предыдущая + + +### Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку rubnav со всем ее содержимым внутри! + +### Changelog: + +03.09.2019 - версия 1.26.2 - адаптация для версии ave.cms 3.26 + +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/info.php b/info.php new file mode 100644 index 0000000..c2acdf0 --- /dev/null +++ b/info.php @@ -0,0 +1,20 @@ + 'rubnav', + 'ModuleVersion' => '1.26.2', + 'ModuleAutor' => 'AVE.cms Team', + 'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms', + 'ModuleStatus' => 1, + 'ModuleIsFunction' => 1, + 'ModuleTemplate' => 0, + 'ModuleAdminEdit' => 1, + 'ModuleFunction' => 'mod_rubnav', + 'ModuleTag' => '[mod_rubnav:XXX]', + 'ModuleTagLink' => null, + 'ModuleAveTag' => '#\\\[mod_rubnav:([a-zA-Z0-9]+)]#', + 'ModulePHPTag' => "" + ); +?> \ No newline at end of file diff --git a/lang/ru.txt b/lang/ru.txt new file mode 100644 index 0000000..c299cf2 --- /dev/null +++ b/lang/ru.txt @@ -0,0 +1,26 @@ +[name] +MODULE_NAME = "Навигация по рубрике" +MODULE_DESCRIPTION = "Навигация по документам в пределах рубрики (следущая-предыдущая)
Инструкция:
[mod_rubnav:next] - следущая
[mod_rubnav:prev] - предыдущая" + +[module] +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..dc8d469 --- /dev/null +++ b/module.php @@ -0,0 +1,126 @@ +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, 'module'); + $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..2fa22f9 --- /dev/null +++ b/sql.php @@ -0,0 +1,44 @@ +[tag:linkname]', '[tag:linkname]');"; + +// Обновление модуля +$module_sql_update[] = " + UPDATE + `%%PRFX%%_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