SetBreadCrumbEntry('ui-tool-notifications', Dict::S('Menu:NotificationsMenu'), Dict::S('Menu:NotificationsMenu+'), '', 'fas fa-bell', iTopWebPage::ENUM_BREADCRUMB_ENTRY_ICON_TYPE_CSS_CLASSES); $oPageContentLayout = PageContentFactory::MakeStandardEmpty(); $oP->SetContentLayout($oPageContentLayout); $sAlertTitle = Dict::S('UI:NotificationsMenu:Title'); $sAlertContent = Dict::S('UI:NotificationsMenu:HelpContent'); $oConfigurationHelp = new CollapsibleSection($sAlertTitle, [new Html($sAlertContent)]); $oConfigurationHelp ->SetOpenedByDefault(true) ->EnableSaveCollapsibleState('notifications__home'); $oPageContentLayout->AddMainBlock($oConfigurationHelp); $oP->AddTabContainer('Tabs_0'); $oP->SetCurrentTabContainer('Tabs_0'); $oP->SetCurrentTab('UI:NotificationsMenu:Triggers'); $oP->add('

'.Dict::S('UI:NotificationsMenu:AvailableTriggers').'

'); $oFilter = new DBObjectSearch('Trigger'); $aParams = array(); $oBlock = new DisplayBlock($oFilter, 'list', false, $aParams); $oBlock->Display($oP, 'block_0', $aParams); $aActionClasses = array(); foreach(MetaModel::EnumChildClasses('Action', ENUM_CHILD_CLASSES_EXCLUDETOP) as $sActionClass) { if (!MetaModel::IsAbstract($sActionClass)) { $aActionClasses[] = $sActionClass; } } $oP->SetCurrentTab('UI:NotificationsMenu:Actions'); if (count($aActionClasses) == 1) { // Preserve old style $oP->add('

'.Dict::S('UI:NotificationsMenu:AvailableActions').'

'); } $iBlock = 0; foreach($aActionClasses as $sActionClass) { if (count($aActionClasses) > 1) { // New style $oP->add('

'.MetaModel::GetName($sActionClass).'

'); } $oFilter = new DBObjectSearch($sActionClass); $oFilter->AddCondition('finalclass', $sActionClass); // derived classes will be further processed $aParams = array(); $oBlock = new DisplayBlock($oFilter, 'list', false, $aParams); $oBlock->Display($oP, 'block_action_'.$iBlock, $aParams); $iBlock++; } $oP->SetCurrentTab(''); $oP->SetCurrentTabContainer(''); $oP->output();