CMXX - Improved menu handling
This commit is contained in:
@@ -146,6 +146,51 @@ function routes($urls) {
|
||||
//------------------------------------------
|
||||
// Menu Builder
|
||||
//------------------------------------------
|
||||
function filterMenuByProfile($menu, $profileString) {
|
||||
// Convert profile string to array
|
||||
$profileArray = explode(',', $profileString);
|
||||
|
||||
// Initialize result array
|
||||
$filteredMenu = [];
|
||||
|
||||
// Loop through main menu sections
|
||||
foreach ($menu as $sectionKey => $section) {
|
||||
$sectionIncluded = in_array($sectionKey, $profileArray);
|
||||
$submenuFound = false;
|
||||
$firstSubmenuItem = null;
|
||||
|
||||
// First check if any submenu items are in profile
|
||||
foreach ($section as $itemKey => $item) {
|
||||
if ($itemKey !== 'main_menu' && in_array($itemKey, $profileArray)) {
|
||||
$submenuFound = true;
|
||||
if ($firstSubmenuItem === null) {
|
||||
$firstSubmenuItem = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Include this section if either section key or any submenu is in profile
|
||||
if ($sectionIncluded || $submenuFound) {
|
||||
$filteredMenu[$sectionKey] = [];
|
||||
|
||||
// Add main_menu - if section not in profile but submenu found, use first submenu as main_menu
|
||||
if (!$sectionIncluded && $submenuFound && $firstSubmenuItem !== null) {
|
||||
$filteredMenu[$sectionKey]['main_menu'] = $firstSubmenuItem;
|
||||
} else {
|
||||
$filteredMenu[$sectionKey]['main_menu'] = $section['main_menu'];
|
||||
}
|
||||
|
||||
// Add allowed submenu items
|
||||
foreach ($section as $itemKey => $item) {
|
||||
if ($itemKey !== 'main_menu' && in_array($itemKey, $profileArray)) {
|
||||
$filteredMenu[$sectionKey][$itemKey] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $filteredMenu;
|
||||
}
|
||||
function menu($selected,$selected_child){
|
||||
|
||||
include dirname(__FILE__,2).'/settings/settings.php';
|
||||
@@ -153,43 +198,42 @@ function menu($selected,$selected_child){
|
||||
if(isset($_SESSION['country_code'])){
|
||||
$api_file_language = dirname(__FILE__,2).'/settings/translations/translations_'.strtoupper($_SESSION['country_code']).'.php';
|
||||
if (file_exists($api_file_language)){
|
||||
include $api_file_language; //Include the code
|
||||
include $api_file_language; //Include the code
|
||||
}
|
||||
else {
|
||||
include dirname(__FILE__,2).'/settings/translations/translations_US.php';
|
||||
include dirname(__FILE__,2).'/settings/translations/translations_US.php';
|
||||
}
|
||||
}
|
||||
else {
|
||||
include dirname(__FILE__,2).'/settings/translations/translations_US.php';
|
||||
}
|
||||
}
|
||||
else {
|
||||
include dirname(__FILE__,2).'/settings/translations/translations_US.php';
|
||||
}
|
||||
|
||||
$profile = explode(',',$_SESSION['profile']);
|
||||
|
||||
//Define Menu
|
||||
$menu = '';
|
||||
foreach ($main_menu as $menu_item){
|
||||
if (in_array($item = $menu_item, $profile,)){
|
||||
//Main URL
|
||||
$menu .= '<a href="index.php?page='.$urls[$item]['url'].'"' . ($selected == $urls[$item]['selected'] ? ' class="selected"' : '') . '><i class="'.$urls[$item]['icon'].'"></i>'.ucfirst((${$urls[$item]['name']}?? 'not specified')).'</a>';
|
||||
|
||||
//DEFINE SUBMENU
|
||||
$sub_menu = $item.'_sub' ?? '';
|
||||
$sub_menu = (isset($$sub_menu) && $$sub_menu !='')? $$sub_menu : 0;
|
||||
//CHECK IF SUBMENU EXIST
|
||||
if ($sub_menu !=0){
|
||||
$menu .= '<div class="sub" ' . ($selected == $urls[$item]['selected'] ? ' class="selected"' : '') . '>';
|
||||
foreach($sub_menu as $key){
|
||||
//CHECK IF USER IS ALLOWED
|
||||
if (in_array($key,$profile)){
|
||||
$menu .= '<a href="index.php?page='.$urls[$key]['url'].'"' . ($selected == $urls[$key]['selected'] && $selected_child == 'view' ? ' class="selected"' : '') . '><span>◼</span>'.ucfirst((${$urls[$key]['name']}?? 'not specified')).'</a>';
|
||||
}
|
||||
}
|
||||
$menu .= '</div>';
|
||||
}
|
||||
//filter the main_menu array based on profile
|
||||
$filteredMenu = filterMenuByProfile($main_menu, $_SESSION['profile']);
|
||||
|
||||
foreach ($filteredMenu as $menu_item){
|
||||
//Main Item
|
||||
$menu .= '<a href="index.php?page='.$menu_item['main_menu']['url'].'"' . ($selected == $menu_item['main_menu']['selected'] ? ' class="selected"' : '') . '><i class="'.$menu_item['main_menu']['icon'].'"></i>'.ucfirst((${$menu_item['main_menu']['name']} ?? 'not specified')).'</a>';
|
||||
|
||||
if (count($menu_item) > 1){
|
||||
//SUBMENU
|
||||
$menu .= '<div class="sub" ' . ($selected == $menu_item['main_menu']['selected'] ? ' class="selected"' : '') . '>';
|
||||
|
||||
foreach ($menu_item as $key => $item){
|
||||
//filter out main_menu
|
||||
if($key !='main_menu'){
|
||||
$menu .= '<a href="index.php?page='.$item['url'].'"' . ($selected == $item['selected'] ? ' class="selected"' : '') . '><span>◼</span>'.ucfirst((${$item['name']}?? 'not specified')).'</a>';
|
||||
}
|
||||
}
|
||||
$menu .= '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
return $menu;
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
// Template Header
|
||||
@@ -669,15 +713,15 @@ function getWhereclause($table_name,$permission,$partner){
|
||||
break;
|
||||
case '3':
|
||||
$condition = '__salesid___'.$partner->salesid.'___soldto___%';
|
||||
$whereclause = 'WHERE '.$table.' like :condition ';
|
||||
$whereclause = 'WHERE '.$table.' like "'.$condition.'"';
|
||||
break;
|
||||
case '2':
|
||||
$condition = '__salesid___'.$partner->salesid.'___soldto___'.substr($partner->soldto, 0, strpos($partner->soldto, "-")).$soldto_search;
|
||||
$whereclause = 'WHERE '.$table.' like :condition ';
|
||||
$whereclause = 'WHERE '.$table.' like "'.$condition.'"';
|
||||
break;
|
||||
default:
|
||||
$condition = '__salesid___'.$partner->salesid.'___soldto___'.substr($partner->soldto, 0, strpos($partner->soldto, "-")).$soldto_search.'___shipto___'.substr($partner->shipto, 0, strpos($partner->shipto, "-")).'%___location___'.substr($partner->location, 0, strpos($partner->location, "-")).'%';
|
||||
$whereclause = 'WHERE '.$table.' like :condition ';
|
||||
$whereclause = 'WHERE '.$table.' like "'.$condition.'"';
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -717,7 +761,7 @@ function getWhereclauselvl2($table_name,$permission,$partner){
|
||||
break;
|
||||
case '3':
|
||||
$condition = '__salesid___'.$partner->salesid.'___soldto___%';
|
||||
$whereclause = 'WHERE '.$table.' like :condition ';
|
||||
$whereclause = 'WHERE '.$table.' like "'.$condition.'" ';
|
||||
break;
|
||||
default:
|
||||
$condition = '__salesid___'.$partner->salesid.'___soldto___'.substr($partner->soldto, 0, strpos($partner->soldto, "-")).$soldto_search;
|
||||
|
||||
Reference in New Issue
Block a user