diff --git a/infusions/css_navigation_panel/css_navigation_panel.php b/infusions/css_navigation_panel/css_navigation_panel.php index 4311d8d371..b6a9fb5eca 100644 --- a/infusions/css_navigation_panel/css_navigation_panel.php +++ b/infusions/css_navigation_panel/css_navigation_panel.php @@ -15,89 +15,141 @@ | copyright header is strictly prohibited without | written permission from the original author(s). +--------------------------------------------------------*/ + +use PHPFusion\Rewrite\Router; + defined('IN_FUSION') || exit; openside(fusion_get_locale('global_001')); echo '
'; echo ''; +echo '
'; +closeside(); -$data = dbquery_tree_full(DB_SITE_LINKS, "link_id", "link_cat", "WHERE link_position <= 2".(multilang_table("SL") ? " AND link_language='".LANGUAGE."'" : "")." AND ".groupaccess('link_visibility')." AND link_status=1 ORDER BY link_cat, link_order"); - -if (!empty($data[0])) { - $i = 0; - foreach ($data[0] as $id => $link_data) { - if ($link_data['link_name'] != '---' && $link_data['link_name'] != '===') { - echo '
  • '; - create_link($link_data, $i, $id); - - if (isset($data[$id])) { - $sub_i = 0; - echo ''; - } - echo '
  • '; - } else { - echo '
  • '; - } + +function show_nab_sublinks($id = 0) { + $res = ''; + + if (empty($id)) { + $data = dbquery_tree_full(DB_SITE_LINKS, "link_id", "link_cat", "WHERE link_position <= 2".(multilang_table("SL") ? " AND link_language='".LANGUAGE."'" : "")." AND ".groupaccess('link_visibility')." AND link_status=1 ORDER BY link_cat, link_order"); + + $res = show_nav_links($id, $data); } + + return $res; } -echo ''; -echo ''; -closeside(); +function show_nav_links($id, $data) { + $res = ''; -function create_link($data, $i, $id) { $pageInfo = pathinfo($_SERVER['REQUEST_URI']); - $start_page = $pageInfo['dirname'] !== "/" ? ltrim($pageInfo['dirname'], '/').'/' : ''; + $start_page = $pageInfo['dirname'] !== "/" ? ltrim($pageInfo['dirname'], "/")."/" : ""; $site_path = ltrim(fusion_get_settings("site_path"), "/"); $start_page = str_replace([$site_path, '\/'], ['', ''], $start_page); $start_page .= $pageInfo['basename']; - if ($start_page == $data['link_url']) { - $link_is_active = TRUE; - } else if (fusion_get_settings('site_path').$start_page == $data['link_url']) { - $link_is_active = TRUE; - } else if (($start_page == fusion_get_settings("opening_page") && $i == 0 && $id === 0)) { - $link_is_active = TRUE; - } else { - $link_is_active = FALSE; + if (fusion_get_settings("site_seo") && defined('IN_PERMALINK') && !isset($_GET['aid'])) { + $filepath = Router::getRouterInstance()->getFilePath(); + $start_page = $filepath; } - if (preg_match("!^(ht|f)tp(s)?://!i", $data['link_url'])) { - $item_link = $data['link_url']; - } else { - $item_link = BASEDIR.$data['link_url']; - } + if (!empty($data[$id])) { + $i = 0; - $item_link = str_replace('%aidlink%', fusion_get_aidlink(), $item_link); - $link_target = $data['link_window'] == 1 ? ' target="_blank"' : ''; - $active = $link_is_active ? ' current-link active' : ''; + foreach ($data[$id] as $link_id => $link_data) { + $li_class = []; - echo ''; - echo $data['link_icon'] ? ' ' : ''; - echo $data['link_name']; - echo ''; -} + if (empty($link_data['link_url'])) { + $li_class[] = "no-link"; + } + + $link_is_active = FALSE; + $secondary_active = FALSE; + + if ($link_data['link_name'] != "---" && $link_data['link_name'] != "===") { + + $link_data['link_name'] = fusion_get_settings('link_bbcode') ? parseubb($link_data['link_name']) : $link_data['link_name']; + $link_data["link_name"] = html_entity_decode($link_data["link_name"], ENT_QUOTES); + + $link_target = ($link_data['link_window'] == "1" ? " target='_blank'" : ''); + if ($secondary_active) { + $link_is_active = TRUE; + } else if (strtr(FUSION_REQUEST, [fusion_get_settings('site_path') => '', '&' => '&']) == str_replace('../', '', $link_data['link_url'])) { + $link_is_active = TRUE; + } else if ($start_page == $link_data['link_url']) { + $link_is_active = TRUE; + } else if (fusion_get_settings('site_path').$start_page == $link_data['link_url']) { + $link_is_active = TRUE; + } else if (($start_page == fusion_get_settings("opening_page") && $i == 0 && $id === 0)) { + $link_is_active = TRUE; + } else if ($link_data['link_url'] === '#') { + $link_is_active = FALSE; + } + if ($link_is_active) { + $li_class[] = "current-link active"; + } + $itemlink = ''; + if (!empty($link_data['link_url'])) { + $itemlink = " href='".BASEDIR.$link_data['link_url']."' "; + // if link has site protocol + if (preg_match("!^(ht|f)tp(s)?://!i", $link_data['link_url']) + or (BASEDIR !== '' && stristr($link_data['link_url'], BASEDIR)) + ) { + $itemlink = " href='".$link_data['link_url']."' "; + } + } + + $itemlink = str_replace('%aidlink%', fusion_get_aidlink(), $itemlink); -add_to_jquery(" - $('.fusion_css_navigation_panel li:has(ul)').on('click', function(e) { - e.preventDefault(); - $(this).find('.sub-nav').slideToggle('fast'); - }); + $has_child = FALSE; + $l_1 = ""; + $l_2 = ""; - $('.fusion_css_navigation_panel').find('.sub-nav li').click(function(e) { - e.stopPropagation(); - }); + if (isset($data[$link_id])) { + $has_child = TRUE; + $link_class = " class='dropdown-toggle'"; + $l_1 = " id='ddlink".$link_data['link_id']."' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'"; + $l_1 .= (empty($id) && $has_child ? " data-submenu " : ""); + $l_2 = (empty($id) ? "" : ""); + $li_class[] = (!empty($id) ? "dropdown-submenu" : "dropdown"); + } else { + $link_class = (!empty($link_data['link_class']) ? " class='".$link_data['link_class']."'" : ''); + } + + $li_class = array_filter($li_class); + + $res .= ""; - $('.fusion_css_navigation_panel li:has(ul)').find('a:first').append(' ยป'); -"); + $res .= ($itemlink ? "" : ""); + $res .= (!empty($link_data['link_icon']) ? "" : ""); + $res .= $link_data['link_name']." ".$l_2; + $res .= ($itemlink ? "" : ''); + if ($has_child) { + $res .= "\n\n"; + } + $res .= "\n"; + } else { + $res .= "
  • \n"; + } + $i++; + } + } + + return $res; +}