From e80b95ce11fe4dbfba7761e4c43e889d56ca8ad0 Mon Sep 17 00:00:00 2001 From: SVarlamov Date: Wed, 15 Jun 2016 00:07:47 +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=91=D1=8B?= =?UTF-8?q?=D1=81=D1=82=D1=80=D1=8B=D0=B9=20=D0=BF=D0=B5=D1=80=D0=B5=D1=85?= =?UTF-8?q?=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++ index.php | 4 ++ module.php | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 192 insertions(+) create mode 100644 README.md create mode 100644 index.php create mode 100644 module.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..e7d4e9d --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +## quickfinder + +# Модуль Быстрый переход v1.0 + +### Для AVE.CMS 3.0 (b35) v1.5 ! + +## Данный модуль является альтернативным способом организации меню навигации на сайте. + +* Он представлен в виде выпадающего списка разделов и подразделов вашего сайта. Для использования модуля, разместите системный тег [mod_quickfinder:XXX] в нужном месте вашего шаблона, где XXX - идентификаторы меню навигации указанные через запятую. + +## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку quickfinder со всем ее содержимым внутри! + +## Changelog: + +15.06.2016 - версия 1.0 \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..4ca25aa --- /dev/null +++ b/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/module.php b/module.php new file mode 100644 index 0000000..b5ff6f0 --- /dev/null +++ b/module.php @@ -0,0 +1,173 @@ +[mod_quickfinder:XXX] в нужном месте вашего шаблона, где XXX - идентификаторы меню навигации указанные через запятую.'; + $modul['ModuleAutor'] = 'Arcanum, UPD Repellent '; + $modul['ModuleCopyright'] = '© 2007-2016 AVE.CMS'; + $modul['ModuleIsFunction'] = 1; + $modul['ModuleAdminEdit'] = 0; + $modul['ModuleFunction'] = 'mod_quickfinder'; + $modul['ModuleTag'] = '[mod_quickfinder:XXX]'; + $modul['ModuleTagLink'] = null; + $modul['ModuleAveTag'] = '#\\\[mod_quickfinder:([\\\d,]*)]#'; + $modul['ModulePHPTag'] = ""; +} + +function mod_quickfinder($navi_ids = '') +{ + global $AVE_DB, $AVE_Core, $navigations; + + if (!empty($navi_ids)) + { + $sql = array(); + + $navi_ids = explode(',', $navi_ids); + + foreach ($navi_ids as $navi_id) + { + if (is_numeric($navi_id) && check_navi_permission($navi_id)) + { + $sql[] = "( + SELECT + navigation_item_id, + parent_id, + title, + document_id, + target, + level, + alias, + 0 AS active + FROM " . PREFIX . "_navigation_items + WHERE status = '1' + AND navigation_id = " . $navi_id . " + ORDER BY position ASC + )"; + } + } + + $sql = implode(' UNION ', $sql); + + if (empty($sql)) return; + } + else + { + $navigations = get_navigations(); + + if (empty($navigations)) return; + + $navi_in = array(); + foreach ($navigations as $navigation) + { + if (in_array(UGROUP, $navigation->user_group)) + { + array_push($navi_in, $navigation->navigation_id); + } + } + + if (sizeof($navi_in)) { + $sql = " + SELECT + navigation_item_id, + parent_id, + title, + document_id, + target, + level, + alias, + 0 AS active + FROM " . PREFIX . "_navigation_items + WHERE status = '1' + AND navigation_id IN(" . implode(',', $navi_in) . ") + ORDER BY navigation_id ASC, position ASC + "; + } + else + { + return; + } + } + $nav_items = array(); + $sql = $AVE_DB->Query($sql); + while ($row_nav_item = $sql->FetchAssocArray()) + { + if (empty($_REQUEST['module'])) + { + $curent_doc_id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? $_GET['id'] : 1; + if ($row_nav_item['alias'] == $AVE_Core->curentdoc->document_alias || + 'index.php?id=' . $row_nav_item['document_id'] == 'index.php?id=' . $curent_doc_id) + { + $row_nav_item['active'] = 1; + } + } + else + { + if ('index.php?id=' . $row_nav_item['document_id'] == 'index.php?module=' . $_REQUEST['module']) + { + $row_nav_item['active'] = 1; + } + } + + $nav_items[$row_nav_item['parent_id']][] = $row_nav_item; + } + + if (sizeof($nav_items)) + { + $quickfinder = ''; + } +} + +function printQuickfinder(&$nav_items, &$quickfinder = '', $parent = '0') +{ + foreach ($nav_items[$parent] as $row) + { + if (strpos('index.php?id=' . $row['document_id'], 'module=') === false && start_with('index.php?', 'index.php?id=' . $row['document_id'])) + { + 'index.php?id=' . $row['document_id'] .= '&doc=' . (empty($row['alias']) ? prepare_url($row['title']) : $row['alias']); + } + + if (start_with('www.', 'index.php?id=' . $row['document_id'])) + { + 'index.php?id=' . $row['document_id'] = str_replace('www.', 'http://www.', 'index.php?id=' . $row['document_id']); + } + + 'index.php?id=' . $row['document_id'] = rewrite_link('index.php?id=' . $row['document_id']); + + if (!start_with('javascript:', 'index.php?id=' . $row['document_id'])) + { + if ($row['target'] == '_blank') + { + $row['alias'] = "javascript:window.open('" . $row['alias'] . "', '', '')"; + } + else + { + $row['alias'] = "window.location.href = '" . $row['alias'] . "'"; + } + } + + $quickfinder .= ''; + + if (isset($nav_items[$row['navigation_item_id']])) + { + printQuickfinder($nav_items, $quickfinder, $row['navigation_item_id']); + } + } +} + +?> \ No newline at end of file