$menuTimeOut = $params->get('hrmenu_time_out', 400); $isMobile = '0'; $logoImage = $params->get('hrmenu_logo_image', ''); $logoLink = $params->get('hrmenu_logo_link', ''); $logoHeight = $params->get('hrmenu_logo_height', ''); $logoWidth = $params->get('hrmenu_logo_width', ''); /** get setting for login params **/ $menu_show_login_pad = $params->get('hrmenu_show_login_pad', 1); $menu_show_login_pad_width = $params->get('hrmenu_show_login_pad_width', 120); /** get fancy parameters */ $menuUseFancy = $params->get('hrmenu_use_fancy', 1); $fancyTransition = $params->get('hrmenu_fancy_transition', 'linear'); $fancyEase = $params->get('hrmenu_fancy_easy', 'easeOut'); $fancyDuration = $params->get('hrmenu_fancy_duration', 400); /** get items */ $hrMenuItems = modHrMenuHelper::getItems($params); // if no item in the menu then exit if (!count($hrMenuItems) or !$hrMenuItems) { return false; } $languageDirection = $document->getDirection(); // page title management if ($active) { $pageTitle = $document->getTitle(); $title = $pageTitle; if (preg_match("/||/", $active->title)) { $title = explode("||", $active->title); $title = str_replace($active->title, $title[0], $pageTitle); } if (preg_match("/\\[/", $active->title)) { if (!$title) {
public static function getItems($params) { $app = JFactory::getApplication(); $user = JFactory::getUser(); $menu = $app->getMenu(); /** if no active menu, use default */ $active = $menu->getActive() ? $menu->getActive() : $menu->getDefault(); $levels = $user->getAuthorisedViewLevels(); asort($levels); $key = 'menu_items' . $params . implode(',', $levels) . '.' . $active->id; $cache = JFactory::getCache('mod_hrmenu', ''); if (!($items = $cache->get($key))) { /** initialise variables */ //$list = array(); $modules = array(); //$db = JFactory::getDBO(); $document = JFactory::getDocument(); /** load libraries */ jimport('joomla.application.module.helper'); $path = isset($active) ? $active->tree : array(); $start = (int) $params->get('hrmenu_start_level', 1); $end = (int) $params->get('hrmenu_end_level', 6); $items = $menu->getItems('menutype', $params->get('hrmenu_type', 'mainmenu')); /** return if no items */ if (!$items) { return false; } $lastItem = 0; /** list all modules */ $modulesList = modHrMenuHelper::createModuleList(); foreach ($items as $i => $item) { $isDependant = $params->get('hrmenu_dependant_items', 0) ? $start > 1 && !in_array($item->tree[$start - 2], $path) : false; if ($start && $start > $item->level || $end && $item->level > $end || $isDependant) { unset($items[$i]); continue; } $item->deeper = false; $item->shallower = false; $item->level_diff = 0; if (isset($items[$lastItem])) { $items[$lastItem]->deeper = $item->level > $items[$lastItem]->level; $items[$lastItem]->shallower = $item->level < $items[$lastItem]->level; $items[$lastItem]->level_diff = $items[$lastItem]->level - $item->level; } /** Test if this is the last item */ $item->is_end = !isset($items[$i + 1]); $item->parent = (bool) $menu->getItems('parent_id', (int) $item->id, true); $item->active = false; $item->flink = $item->link; switch ($item->type) { case 'separator': continue; case 'url': if (strpos($item->link, 'index.php?') === 0 && strpos($item->link, 'Itemid') == faslse) { $item->flink = $item->link . '&Itemid=' . $item->id; } $item->flink = JFilterOutput::ampReplace(htmlspecialchars($item->flink)); break; case 'alias': $item->flink = 'index.php?Itemid=' . $item->params->get('aliasoptions'); break; default: $router = JSite::getRouter(); if ($router->getMode() == JROUTER_MODE_SEF) { $item->flink = 'index.php?Itemid=' . $item->id; } else { $item->flink .= '&Itemid=' . $item->id; } break; } if (strcasecmp(substr($item->flink, 0, 4), 'http') && strpos($item->flink, 'index.php?') !== false) { $item->flink = JRoute::_($item->flink, true, $item->params->get('secure')); } else { $item->flink = JRoute::_($item->flink); } $item->anchor_css = htmlspecialchars($item->params->get('menu-anchor_css', '')); $item->anchor_title = htmlspecialchars($item->params->get('menu-anchor_title', '')); $item->menu_image = $item->params->get('menu_image', '') ? htmlspecialchars($item->params->get('menu_image', '')) : ''; $item->ftitle = htmlspecialchars($item->title); $item->ftitle = JFilterOutput::ampReplace($item->ftitle); $parentItem = modHrMenuHelper::getParentItem($item->parent_id, $items); $item->class = ''; //$item->class = '_item' . $item->id; if (isset($active) && $active->id == $item->id) { $item->class .= ' current'; } /** add active class */ if (is_array($path) && ($item->type == 'alias' && in_array($item->params->get('aliasoptions'), $path) || in_array($item->id, $path))) { $item->class .= ' active'; $item->active = true; } // add the parent class if ($item->deeper) { $item->class .= ' deeper'; } if ($item->parent) { if ($params->get('hrmenu_layout', 'horizontal') != '_:flatlist') { $item->class .= ' parent'; } } // add last and first class $item->class .= $item->is_end ? ' last' : ''; $item->class .= !isset($items[$i - 1]) ? ' first' : ''; if (isset($items[$lastItem])) { $items[$lastItem]->class .= $items[$lastItem]->shallower ? ' last' : ''; $item->class .= $items[$lastItem]->deeper ? ' first' : ''; if (isset($items[$i + 1]) and $item->level - $items[$i + 1]->level > 1) { $parentItem->class .= ' last'; } } /** manage column */ $item->colwidth = $item->params->get('column_width', '160'); $item->createnewrow = $item->params->get('create_new_row', 0); $subWidthValues = NULL; preg_match('/\\[subwidth=([0-9]+)\\]/', $item->ftitle, $subWidthValues); $subWidth = isset($subWidthValues[1]) ? $subWidthValues[1] : ''; if ($subWidth) { $item->ftitle = preg_replace('/\\[subwidth=[0-9]+\\]/', '', $item->ftitle); } $item->submenucontainerwidth = $item->params->get('submenucontainerwidth', '') + $subWidth; $result = NULL; if ($item->params->get('createcolumn', 0)) { //TODO: clean if test work $item->column = true; if (isset($parentItem->submenuswidth)) { $parentItem->submenuswidth = strval($parentItem->submenuswidth) + strval($item->colwidth); } else { $parentItem->submenuswidth = strval($item->colwidth); } if (isset($items[$lastItem]) && $items[$lastItem]->deeper) { $items[$lastItem]->nextcolumnwidth = $item->colwidth; } } elseif (preg_match('/\\[col=([0-9]+)\\]/', $item->ftitle, $result)) { $item->ftitle = str_replace('[newrow]', '', $item->ftitle); $item->ftitle = preg_replace('/\\[col=[0-9]+)\\]/', '', $item->ftitle); $item->column = true; if (isset($parentItem->submenuswidth)) { $parentItem->submenuswidth = strval($parentItem->submenuswith) + strval($result[1]); } else { $parentItem->submenuswidth = strval($result[1]); } if (isset($items[$lastItem]) && $items[$lastItem]->deeper) { $items[$lastItem]->nextcolumnwidth = $result[1]; } $item->colwidth = $result[1]; } if (isset($parentItem->submenucontainerwidth) && $parentItem->submenucontainerwidth) { $parentItem->submenuswidth = $parentItem->submenucontainerwidth; } /** manage module */ $moduleId = $item->params->get('hrmenu_module', ''); $style = $item->params->get('force_module_title', 0) ? 'xhtml' : ''; if ($item->params->get('insert_module', 0)) { if (!isset($modules[$moduleId])) { $modules[$moduleId] = modHrMenuHelper::genModuleById($moduleId, $modulesList, $style); } $item->content = '<div class="hrmenu_mod">' . $modules[$moduleId] . '<div class="clr"></div></div>'; } elseif (preg_match('/\\[modid=([0-9]+)\\]/', $item->ftitle, $result)) { $item->ftitle = preg_match('/\\[modid=[0-9]+\\]/', '', $item->ftitle); $item->content = '<div class="hrmenu_mod"' . modHrMenuHelper::genModuleById($result[1], $modulesList, $style) . '<div class="clr"></div></div>'; } /** manage rel attribute */ $item->rel = ''; $rel = $item->params->get('hrmenu_relattr', ''); if ($rel) { $item->rel = ' rel="' . $rel . '"'; } elseif (preg_match('/\\[rel=[a-z]+\\]/i', '', $result)) { $item->ftitle = preg_replace('/\\[rel=[a-z]+\\]/i', '', $item->ftitle); $item->rel = ' rel="' . $result[1] . '"'; } /** manage link description */ $item->description = $item->params->get('hrmenu_des', ''); if ($item->description) { $item->desc = $item->description; } else { $result = explode("||", $item->ftitle); if (isset($result[1])) { $item->desc = $result[1]; } else { $item->desc = ''; } $item->ftitle = $result[0]; } /* add styles to the page for customization */ $menuID = $params->get('hrmenu_id', 'hrmenu'); $itemStyles = ""; $item->titleColor = $item->params->get('hrmenu_title_color', ''); if ($item->titleColor) { $itemStyles .= "div#" . $menuID . " ul.nav_hrmenu li.item" . $item->id . " > a div.hrmenu_title{ color:" . $item->titlecolor . " !important; } div#" . $menuID . " ul.nav_hrmenu li.item" . $item->id . " > span.separator div.hrmenu_title {color:" . $item->titlecolor . " !important; }"; } $item->desccolor = $item->params->get('hrmenu_desccolor', ''); if ($item->desccolor) { $itemStyles .= "div#" . $menuID . " ul.nav_hrmenu li.item" . $item->id . " > a span.hrmenu_desc{color:" . $item->desccolor . " !important; } div#" . $menuID . " ul.nav_hrmenu li.item" . $item->id . " > span.separator span.hrmenu_desc {color:" . $item->desccolor . " !important; }"; } if ($itemStyles) { $document->addStyleDeclaration($itemStyles); } // get plugin parameters that are used directly in the layout $item->leftmargin = $item->params->get('hrmenu_left_margin', ''); $item->topmargin = $item->params->get('hrmenu_top_margin', ''); $item->liclass = $item->params->get('hrmenu_li_class', ''); $item->colbgcolor = $item->params->get('hrmenu_col_bg_color', ''); $item->tagcoltitle = $item->params->get('hrmenu_tag_col_title', 'none'); $item->submenucontainerheight = $item->params->get('hrmenu_sub_menu_container_height', ''); $lastItem = $i; } if (isset($items[$lastItem])) { $items[$lastItem]->deeper = ($start ? $start : 1) > $items[$lastItem]->level; $items[$lastItem]->shallower = ($start ? $start : 1) < $items[$lastItem]->level; $items[$lastItem]->level_diff = $items[$lastItem]->level - ($start ? $start : 1); } $cache->store($items, $key); } return $items; }
$item->styles = ' style="'; $item->innerstyles = 'style="width:auto; '; if ($item->left_margin) { $item->styles .= 'margin-' . $direction . ':' . modHrMenuHelper::checkUnit($item->left_margin) . '"; '; } if ($item->top_margin) { $item->styles .= 'margin-top:' . modHrMenuHelper::checkUnit($item->top_margin) . '; '; } if (isset($item->submenus_width)) { $item->styles .= 'width:' . modHrMenuHelper::checkUnit($item->submenus_width) . '; '; } if ($item->column_background_color) { $item->styles .= 'background:' . $item->column_background_color . '; '; } if (isset($item->submenu_container_height) && $item->submenu_container_height) { $item->innerstyles .= 'height:' . modHrMenuHelper::checkUnit($item->submenu_container_height) . '; '; } $item->styles .= '"'; $item->innerstyles .= '"'; } else { $item->styles = ''; $item->innerstyles = ''; } echo '<div class="hrmenu_float" ' . $item->styles . ' >' . $close . '<div class="hrmenu_drop_top" ><div class="hrmenu_drop_top_2" ></div></div><div class="hrmenu_drop_main" ' . $item->innerstyles . '><div class="hrmenu_drop_main_2" ><div class="hrmenu_2 first" ' . $nextColumnStyles . '><ul class="hrmenu_2" >'; } elseif ($item->shallower) { // The next item is shallower. echo '</li>' . str_repeat('</ul><div class="clr" ></div></div><div class="clr" </div></div></div><div class="hrmenu_drop_bottom" ><div class="hrmenu_drop_bottom_2" ></div></div></div></li>', $item->level_diff); } elseif ($item->is_end) { // the item is the last. echo str_repeat('</li></ul><div class="clr" ></div></div><div class="clr" ></div></div></div><div class="hrmenu_drop_bottom" ><div class="hrmenu_drop_bottom_2" ></div></div></div>', $item->level_diff) . '</li>'; } else {