Navigation menu: Restore user menu entries API

This commit is contained in:
Molkobain
2021-06-28 10:31:31 +02:00
parent b1aebc6c7a
commit 9f75fae33f

View File

@@ -27,6 +27,7 @@ use JSPopupMenuItem;
use MetaModel;
use SeparatorPopupMenuItem;
use URLPopupMenuItem;
use iPopupMenuExtension;
use UserRights;
use utils;
@@ -66,6 +67,13 @@ class PopoverMenuFactory
$oMenu->AddSection('user_related')
->SetItems('user_related', static::PrepareUserRelatedItemsForUserMenu());
// API: iPopupMenuExtension::MENU_USER_ACTIONS
$aAPIItems = static::PrepareAPIItemsForUserMenu($oMenu);
if (count($aAPIItems) > 0) {
$oMenu->AddSection('popup_menu_extension-menu_user_actions')
->SetItems('popup_menu_extension-menu_user_actions', $aAPIItems);
}
// Misc links
$oMenu->AddSection('misc')
->SetItems('misc', static::PrepareMiscItemsForUserMenu());
@@ -164,12 +172,30 @@ class PopoverMenuFactory
);
}
// TODO: iPopupMenuExtension::MENU_USER_ACTIONS
// Legacy code: utils::GetPopupMenuItems($this, iPopupMenuExtension::MENU_USER_ACTIONS, null, $aActions);
return $aItems;
}
/**
* @param \Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenu $oMenu Here we must pass a block ($oMenu) as the helper will use it to dispatch the external resources (files) if some.
*
* @return \Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenuItem\PopoverMenuItem[] Return the items from the iPopupMenuExtension::MENU_USER_ACTIONS API
* @throws \ArchivedObjectException
* @throws \CoreException
* @throws \Exception
*/
protected static function PrepareAPIItemsForUserMenu(PopoverMenu &$oMenu)
{
$aOriginalItems = [];
utils::GetPopupMenuItemsBlock($oMenu, iPopupMenuExtension::MENU_USER_ACTIONS, null, $aOriginalItems);
$aTransformedItems = [];
foreach($aOriginalItems as $sItemID => $aItemData) {
$aTransformedItems[] = PopoverMenuItemFactory::MakeFromDisplayBlockAction($sItemID, $aItemData);
}
return $aTransformedItems;
}
/**
* Return the misc. items for the user menu (online doc., about box)
*