tpl->addValue('SimpleMenu', ['tplSimpleMenu', 'simpleMenu']); class tplSimpleMenu { # Template function public static function simpleMenu($attr) { global $core; if (!(boolean) $core->blog->settings->system->simpleMenu_active) { return ''; } $class = isset($attr['class']) ? trim($attr['class']) : ''; $id = isset($attr['id']) ? trim($attr['id']) : ''; $description = isset($attr['description']) ? trim($attr['description']) : ''; if (!preg_match('#^(title|span|both|none)$#', $description)) { $description = ''; } return ''; } # Widget function public static function simpleMenuWidget($w) { global $core, $_ctx; $descr_type = [0 => 'span', 1 => 'title', 2 => 'both', 3 => 'none']; if (!(boolean) $core->blog->settings->system->simpleMenu_active) { return; } if ($w->offline) { return; } if (($w->homeonly == 1 && $core->url->type != 'default') || ($w->homeonly == 2 && $core->url->type == 'default')) { return; } $description = 'title'; if (isset($descr_type[$w->description])) { $description = $descr_type[$w->description]; } $menu = tplSimpleMenu::displayMenu('', '', $description); if ($menu == '') { return; } return $w->renderDiv($w->content_only, 'simple-menu ' . $w->class, '', ($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '') . $menu); } public static function displayMenu($class = '', $id = '', $description = '') { global $core; $ret = ''; if (!(boolean) $core->blog->settings->system->simpleMenu_active) { return $ret; } $menu = $core->blog->settings->system->simpleMenu; if (is_array($menu)) { // Current relative URL $url = $_SERVER['REQUEST_URI']; $abs_url = http::getHost() . $url; // Home recognition var $home_url = html::stripHostURL($core->blog->url); $home_directory = dirname($home_url); if ($home_directory != '/') { $home_directory = $home_directory . '/'; } // Menu items loop foreach ($menu as $i => $m) { # $href = lien de l'item de menu $href = $m['url']; $href = html::escapeHTML($href); # Cope with request only URL (ie ?query_part) $href_part = ''; if ($href != '' && substr($href, 0, 1) == '?') { $href_part = substr($href, 1); } $targetBlank = ((isset($m['targetBlank'])) && ($m['targetBlank'])) ? true : false; # Active item test $active = false; if (($url == $href) || ($abs_url == $href) || ($_SERVER['URL_REQUEST_PART'] == $href) || (($href_part != '') && ($_SERVER['URL_REQUEST_PART'] == $href_part)) || (($_SERVER['URL_REQUEST_PART'] == '') && (($href == $home_url) || ($href == $home_directory)))) { $active = true; } $title = $span = ''; if ($m['descr']) { if (($description == 'title' || $description == 'both') && $targetBlank) { $title = html::escapeHTML(__($m['descr'])) . ' (' . __('new window') . ')'; } elseif ($description == 'title' || $description == 'both') { $title = html::escapeHTML(__($m['descr'])); } if ($description == 'span' || $description == 'both') { $span = ' ' . html::escapeHTML(__($m['descr'])) . ''; } } if (empty($title) && $targetBlank) { $title = __('new window'); } if ($active && !$targetBlank) { $title = (empty($title) ? __('Active page') : $title . ' (' . __('active page') . ')'); } $label = html::escapeHTML(__($m['label'])); $item = new ArrayObject([ 'url' => $href, // URL 'label' => $label, // link label 'title' => $title, // link title (optional) 'span' => $span, // description (will be displayed after link) 'active' => $active, // status (true/false) 'class' => '' // additional
  • class (optional) ]); # --BEHAVIOR-- publicSimpleMenuItem $core->callBehavior('publicSimpleMenuItem', $i, $item); $ret .= '
  • ' . '' . '' . $item['label'] . '' . $item['span'] . '' . '
  • '; } // Final rendering if ($ret) { $ret = ''; } } return $ret; } }