mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
79 lines
2.2 KiB
PHP
79 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* @copyright Copyright (C) 2010-2022 Combodo SARL
|
|
* @license http://opensource.org/licenses/AGPL-3.0
|
|
*/
|
|
|
|
namespace Combodo\iTop\OAuthClient\Service;
|
|
|
|
use ApplicationContext;
|
|
use Combodo\iTop\Core\Authentication\Client\OAuth\OAuthClientProviderFactory;
|
|
use Dict;
|
|
use iPopupMenuExtension;
|
|
use JSPopupMenuItem;
|
|
use OAuthClient;
|
|
use SeparatorPopupMenuItem;
|
|
use URLPopupMenuItem;
|
|
use utils;
|
|
|
|
class PopupMenuExtension implements \iPopupMenuExtension
|
|
{
|
|
const MODULE_CODE = 'itop-oauth-client';
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public static function EnumItems($iMenuId, $param)
|
|
{
|
|
$aResult = [];
|
|
|
|
switch ($iMenuId) {
|
|
case iPopupMenuExtension::MENU_OBJDETAILS_ACTIONS:
|
|
$oObj = $param;
|
|
if ($oObj instanceof OAuthClient) {
|
|
$bHasToken = !empty($oObj->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;
|
|
}
|
|
} |