Complete navigation user action menu contract

This commit is contained in:
Dillon-Brown 2020-02-18 08:40:32 +00:00
parent 287ed2fb15
commit b83d27edcd
2 changed files with 39 additions and 56 deletions

View file

@ -24,6 +24,7 @@ class Navbar extends LegacyHandler
$tabArray = array_keys(array_change_key_case($tabArray[0], CASE_LOWER));
sort($tabArray);
return $tabArray;
}
@ -60,9 +61,9 @@ class Navbar extends LegacyHandler
$output[] = [
'name' => $groupedTabStructure[$mainTab]['labelValue'],
'labelKey' => $mainTab,
'modules' => array_values($submoduleArray)
'name' => $groupedTabStructure[$mainTab]['labelValue'],
'labelKey' => $mainTab,
'modules' => array_values($submoduleArray)
];
}
@ -81,63 +82,42 @@ class Navbar extends LegacyHandler
if ($this->runLegacyEntryPoint()) {
$userActionMenu = [];
$global_control_links = [];
$last = [];
$userActionMenu[] = [
'label' => 'Profile',
'name' => 'profile',
'labelKey' => 'LBL_PROFILE',
'url' => 'index.php?module=Users&action=EditView&record=1',
'submenu' => [],
'icon' => '',
];
require LEGACY_PATH . 'include/globalControlLinks.php';
$labelKeys = [
'employees' => 'LBL_EMPLOYEES',
'training' => 'LBL_TRAINING',
'about' => 'LNK_ABOUT',
'users' => 'LBL_LOGOUT',
];
foreach ($global_control_links as $key => $value) {
if ($key === 'users') {
$last[] = [
'label' => key($value['linkinfo']),
'url' => $value['linkinfo'][key($value['linkinfo'])],
'submenu' => [],
];
continue;
}
foreach ($value as $linkAttribute => $attributeValue) {
// get the main link info
if ($linkAttribute === 'linkinfo') {
$userActionMenu[] = [
'label' => key($attributeValue),
'name' => strtolower(key($attributeValue)),
'labelKey' => $labelKeys[$key],
'url' => current($attributeValue),
'submenu' => [],
'icon' => '',
];
$userActionMenuCount = count($userActionMenu);
$key = $userActionMenuCount - 1;
if (strpos($userActionMenu[$key]['url'], 'javascript:') === 0) {
$userActionMenu[$key]['event']['onClick'] = substr($userActionMenu[$key]['url'], 11);
$userActionMenu[$key]['url'] = 'javascript:void(0)';
}
}
// Get the sub links
if ($linkAttribute === 'submenu' && is_array($attributeValue)) {
$subMenuLinkKey = '';
foreach ($attributeValue as $submenuLinkKey => $submenuLinkInfo) {
$userActionMenu[$key]['submenu'][$submenuLinkKey] = [
'label' => key($submenuLinkInfo),
'url' => current($submenuLinkInfo),
];
}
if (strpos($userActionMenu[$key]['submenu'][$subMenuLinkKey]['url'], 'javascript:') === 0) {
$userActionMenu[$key]['submenu'][$subMenuLinkKey]['event']['onClick'] =
substr($userActionMenu[$key]['submenu'][$subMenuLinkKey]['url'], 11);
$userActionMenu[$key]['submenu'][$subMenuLinkKey]['url'] = 'javascript:void(0)';
}
}
}
}
return $userActionMenu[] = array_merge($userActionMenu, $last);
$item = $userActionMenu[3];
unset($userActionMenu[3]);
$userActionMenu[] = $item;
return array_values($userActionMenu);
}
throw new RuntimeException('Running legacy entry point failed');

View file

@ -19,34 +19,37 @@ final class NavbarTest extends Unit
public function testGetUserActionMenu(): void
{
// Ordered array
$expected = [
0 => [
'label' => 'Profile',
'name' => 'profile',
'labelKey' => 'LBL_PROFILE',
'url' => 'index.php?module=Users&action=EditView&record=1',
'submenu' => []
'icon' => '',
],
1 => [
'label' => 'Employees',
'name' => 'employees',
'labelKey' => 'LBL_EMPLOYEES',
'url' => 'index.php?module=Employees&action=index',
'submenu' => []
'icon' => '',
],
2 => [
'label' => 'Support Forum',
'url' => 'javascript:void(0)',
'submenu' => [],
'event' => [
'onClick' => "void(window.open('https://suitecrm.com/suitecrm/forum/suite-forum'))"
]
'name' => 'support forum',
'labelKey' => 'LBL_TRAINING',
'url' => 'javascript:void(window.open(\'https://suitecrm.com/suitecrm/forum/suite-forum\'))',
'icon' => '',
],
3 => [
'label' => 'About',
'name' => 'about',
'labelKey' => 'LNK_ABOUT',
'url' => 'index.php?module=Home&action=About',
'submenu' => []
'icon' => '',
],
4 => [
'label' => 'Logout',
'name' => 'logout',
'labelKey' => 'LBL_LOGOUT',
'url' => 'index.php?module=Users&action=Logout',
'submenu' => []
'icon' => '',
]
];