Get('token')); $aResult[] = new SeparatorPopupMenuItem(); $oAppContext = new ApplicationContext(); $sMenu = $bHasToken ? 'Menu:RegenerateTokens' : 'Menu:GenerateTokens'; $sObjClass = get_class($oObj); $sClass = $sObjClass; $sId = $oObj->GetKey(); $sAjaxUri = utils::GetAbsoluteUrlModulePage(static::MODULE_CODE, 'ajax.php'); // Add a new menu item that triggers a custom JS function defined in our own javascript file: js/sample.js $sJSFileUrl = utils::GetAbsoluteUrlModulesRoot().static::MODULE_CODE.'/assets/js/oauth_connect.js'; $sRedirectUri = OAuthClientProviderFactory::GetRedirectUri(); $aResult[] = new JSPopupMenuItem( $sMenu.' from '.$sObjClass, Dict::S($sMenu), "OAuthConnect('$sClass', $sId, '$sAjaxUri', '$sRedirectUri')", [$sJSFileUrl] ); if ($bHasToken) { $aScopes = $oObj->Get('scope')->GetValues(); if (in_array('IMAP', $aScopes)) { $aParams = $oAppContext->GetAsHash(); $sMenu = 'Menu:CreateMailbox'; $sObjClass = get_class($oObj); $aParams['class'] = $sObjClass; $aParams['id'] = $oObj->GetKey(); $aParams['operation'] = 'CreateMailbox'; $aResult[] = new URLPopupMenuItem( $sMenu.' from '.$sObjClass, Dict::S($sMenu), utils::GetAbsoluteUrlModulePage(static::MODULE_CODE, 'index.php', $aParams) ); } } } break; default: // Unknown type of menu, do nothing break; } return $aResult; } }