You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

147 lines
6.5 KiB

<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
/**
* @return array
*/
function module_menu_info()
{
return [
'name' => tra('Menu'),
'description' => tra('Displays a menu or a structure as a menu.'),
'params' => [
'id' => [
'name' => tra('Menu'),
'description' => tra('Identifier of a menu (from tiki-admin_menus.php)'),
'filter' => 'int',
'profile_reference' => 'menu',
],
'structureId' => [
'name' => tra('Structure'),
'description' => tra('Identifier of a structure of wiki pages (name or number from tiki-admin_structures.php)'),
'filter' => 'text',
'profile_reference' => 'structure',
],
'type' => [
'name' => tra('Type'),
'description' => tra('Direction for menu: horiz or vert (default vert)'),
'filter' => 'text',
],
// FIXME: There are 3 types of menus: Bootstrap, CSS or classic (JavaScript). There should be a single option to select between the 3, or 1 should be removed (CSS).
'css' => [
'name' => tra('CSS/Superfish'),
'description' => tra('Use CSS Superfish menu (if bootstrap = n). y|n (default y)'),
'filter' => 'alpha',
],
'bootstrap' => [
'name' => tra('Use Bootstrap menus'),
'description' => tra('') . ' ( y / n )',
'default' => 'y',
],
'megamenu' => [
'name' => tra('Use Smartmenu Megamenu'),
'description' => tra('This is a Smartmenu that has a flattened structure of level 1 (Smartmenu preference must be turned on).') . ' ( y / n )',
'default' => 'n',
],
'megamenu_static' => [
'name' => tra('Use Static Megamenu'),
'description' => tra('This is a full-width navbar-nav Megamenu') . ' ( y / n )',
'default' => 'y',
],
// TODO - needs image url field
// 'megamenu_images' => [
// 'name' => tra('Use Megamenu Images'),
// 'description' => tra('Adds an image to each Megamenu') . ' ( y / n )',
// 'default' => 'n',
// ],
'navbar_toggle' => [
'name' => tra('Show Navbar Toggle Button'),
'description' => tra('Used in Bootstrap navbar menus when viewport is too narrow for menu items') . ' ( y / n )',
'default' => 'y',
],
'navbar_brand' => [
'name' => tra('The URL of the navbar brand (logo)'),
'description' => tra('Used in Bootstrap navbar menus, if there is a brand logo to be attached to the menu'),
'default' => '',
],
'navbar_class' => [
'name' => tra('CSS class(es) for the menu nav element'),
'description' => tra('Default specified is for Bootstrap menus. Replace "navbar-light bg-light" with "navbar-dark bg-dark" for a dark navbar. For a vertical Smartmenu, use "navbar navbar-expand-lg."'),
'default' => 'navbar navbar-expand-lg navbar-light bg-light',
],
'menu_id' => [
'name' => tra('DOM #id'),
'description' => tra('Id of the menu in the DOM'),
],
'menu_class' => [
'name' => tra('CSS class'),
'description' => tra('Class of the menu container'),
'filter' => 'text',
],
'sectionLevel' => [
'name' => tra('Limit low visibles levels'),
'description' => tra('All the submenus beginning at this level will be displayed if the url matches one of the option of this level or above or below.'),
'filter' => 'int',
],
'toLevel' => [
'name' => tra('Limit top visible levels'),
'description' => tra('Do not display options higher than this level.'),
'filter' => 'int',
],
'link_on_section' => [
'name' => tra('Link on Section'),
'description' => tra('Create links on menu sections') . ' ' . tra('(y/n default y)'),
'filter' => 'alpha',
],
'translate' => [
'name' => tra('Translate'),
'description' => tra('Translate labels') . ' ' . tra('(y/n default y)'),
'filter' => 'alpha',
],
'menu_cookie' => [
'name' => tra('Menu Cookie'),
'description' => tra('Open the menu to show current option if possible') . ' ' . tra('(y/n default y)'),
'filter' => 'alpha',
],
'show_namespace' => [
'name' => tra('Show Namespace'),
'description' => tra('Show namespace prefix in page names') . ' ( y / n )', // Do not translate y/n
'default' => 'y'
],
'setSelected' => [
'name' => tra('Set Selected'),
'description' => tra('Process all menu items to show currently selected item and other dynamic states. Useful when disabled on very large menus where performance becomes an issue.') . ' ( y / n )',
'default' => 'y'
],
]
];
}
/**
* @param $mod_reference
* @param $module_params
*/
function module_menu($mod_reference, $module_params)
{
$smarty = TikiLib::lib('smarty');
$smarty->assign('module_error', '');
if (empty($module_params['id']) && empty($module_params['structureId'])) {
$smarty->assign('module_error', tr('One of these parameters has to be set:') . ' ' . tr('Menu') . ', ' . tr('Structure') . '.');
}
if (! empty($module_params['structureId'])) {
$structlib = TikiLib::lib('struct');
if (empty($module_params['title'])) {
$smarty->assign('tpl_module_title', $module_params['structureId']);
}
}
$smarty->assign('module_type', ! empty($module_params['css']) && $module_params['css'] === 'y' ? 'cssmenu' : 'menu');
$show_namespace = isset($module_params['show_namespace']) ? $module_params['show_namespace'] : 'y';
$smarty->assign('show_namespace', $show_namespace);
}