[Legacy] Create Admin Panel Schema

This commit is contained in:
yunusyerli1 2023-02-23 14:30:02 +03:00 committed by Clemente Raposo
parent 6ee178318e
commit d80e47964d
7 changed files with 372 additions and 8 deletions

View file

@ -40,3 +40,4 @@ parameters:
logout: true
session-expired: true
site_url: true
admin-panel-definitions: true

View file

@ -156,6 +156,22 @@ class AppMetadata
*/
public $minimalModuleMetadata;
/**
* Admin Metadata
*
* @var array
*
* @ApiProperty(
* attributes={
* "openapi_context"={
* "type"="array",
* "description"="The admin metadata",
* },
* }
* )
*/
public $adminMetadata;
/**
* The module
*
@ -324,5 +340,21 @@ class AppMetadata
return $this;
}
/**
* @return array|null
*/
public function getAdminMetadata(): ?array
{
return $this->adminMetadata;
}
/**
* @param array|null $adminMetadata
*/
public function setAdminMetadata(?array $adminMetadata): void
{
$this->adminMetadata = $adminMetadata;
}
}

View file

@ -40,6 +40,7 @@ use App\SystemConfig\Service\SystemConfigProviderInterface;
use App\Themes\Service\ThemeImageService;
use App\UserPreferences\Entity\UserPreference;
use App\UserPreferences\Service\UserPreferencesProviderInterface;
use App\ViewDefinitions\Service\AdminPanelDefinitionProviderInterface;
use Exception;
use Symfony\Component\Security\Core\Security;
@ -103,6 +104,11 @@ class AppMetadataProvider implements AppMetadataProviderInterface
*/
protected $userHandler;
/**
* @var AdminPanelDefinitionProviderInterface
*/
protected $adminPanelDefinitions;
/**
* AppMetadataProvider constructor.
* @param ModuleNameMapperInterface $moduleNameMapper
@ -128,7 +134,8 @@ class AppMetadataProvider implements AppMetadataProviderInterface
ThemeImageService $themeImageService,
ModuleMetadataProviderInterface $moduleMetadata,
Security $security,
UserHandler $userHandler
UserHandler $userHandler,
AdminPanelDefinitionProviderInterface $adminPanelDefinitions
) {
$this->moduleNameMapper = $moduleNameMapper;
$this->systemConfigProvider = $systemConfigProvider;
@ -141,6 +148,7 @@ class AppMetadataProvider implements AppMetadataProviderInterface
$this->moduleMetadata = $moduleMetadata;
$this->security = $security;
$this->userHandler = $userHandler;
$this->adminPanelDefinitions = $adminPanelDefinitions;
}
/**
@ -203,6 +211,19 @@ class AppMetadataProvider implements AppMetadataProviderInterface
$metadata->setMinimalModuleMetadata($this->getMinimalModuleMetadata($moduleName));
}
/** @var \User $currentUser */
$currentUser = $this->userHandler->getCurrentUser() ?? null;
if (in_array('adminMetadata', $exposed, true) && !empty($currentUser) && $currentUser->isAdmin()) {
$adminMetadata = [
'adminPanel' => $this->adminPanelDefinitions->getAdminPanelDef()
];
$metadata->setAdminMetadata($adminMetadata);
} elseif (!$currentUser->isAdmin()) {
$adminMetadata = [];
$metadata->setAdminMetadata($adminMetadata);
}
return $metadata;
}
@ -488,6 +509,8 @@ class AppMetadataProvider implements AppMetadataProviderInterface
$metadata->setThemeImages($this->themeImageService->get($theme)->toArray());
}
$metadata->setAdminMetadata([]);
return $metadata;
}

View file

@ -0,0 +1,156 @@
<?php
/**
* SuiteCRM is a customer relationship management program developed by SalesAgility Ltd.
* Copyright (C) 2023 SalesAgility Ltd.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SALESAGILITY, SALESAGILITY DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* In accordance with Section 7(b) of the GNU Affero General Public License
* version 3, these Appropriate Legal Notices must retain the display of the
* "Supercharged by SuiteCRM" logo. If the display of the logos is not reasonably
* feasible for technical reasons, the Appropriate Legal Notices must display
* the words "Supercharged by SuiteCRM".
*/
namespace App\ViewDefinitions\LegacyHandler;
use App\Engine\LegacyHandler\LegacyHandler;
use App\Engine\LegacyHandler\LegacyScopeState;
use App\Module\Service\ModuleNameMapperInterface;
use App\ViewDefinitions\Service\AdminPanelDefinitionProviderInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use App\Routes\Service\RouteConverterInterface;
/**
* Class AdminPanelDefinitionHandler
*/
class AdminPanelDefinitionHandler extends LegacyHandler implements AdminPanelDefinitionProviderInterface
{
use FieldDefinitionsInjectorTrait;
public const HANDLER_KEY = 'adminPanel-definitions';
/**
* @var ModuleNameMapperInterface
*/
protected $moduleNameMapper;
/**
* @var RouteConverterInterface
*/
private $routeConverter;
/**
* AdminPanelDefinitionsHandler constructor.
* @param string $projectDir
* @param string $legacyDir
* @param string $legacySessionName
* @param string $defaultSessionName
* @param LegacyScopeState $legacyScopeState
* @param ModuleNameMapperInterface $moduleNameMapper
* @param SessionInterface $session
* @param RouteConverterInterface $routeConverter
*/
public function __construct(
string $projectDir,
string $legacyDir,
string $legacySessionName,
string $defaultSessionName,
LegacyScopeState $legacyScopeState,
ModuleNameMapperInterface $moduleNameMapper,
SessionInterface $session,
RouteConverterInterface $routeConverter
) {
parent::__construct(
$projectDir,
$legacyDir,
$legacySessionName,
$defaultSessionName,
$legacyScopeState,
$session
);
$this->moduleNameMapper = $moduleNameMapper;
$this->routeConverter = $routeConverter;
}
/**
* @inheritDoc
*/
public function getHandlerKey(): string
{
return self::HANDLER_KEY;
}
/**
* @inheritDoc
*/
public function getAdminPanelDef(): array
{
$this->init();
/* @noinspection PhpIncludeInspection */
require 'modules/Administration/metadata/adminpaneldefs.php';
$admin_group_header = $admin_group_header ?? [];
$adminPanel = [];
foreach ($admin_group_header as $adminEntry) {
if (empty($adminEntry)) {
continue;
}
$mapEntry = [
'titleLabelKey' => $adminEntry[0] ?? '',
'descriptionLabelKey' => $adminEntry[4] ?? '',
'linkGroup' => [],
'icon' => $adminEntry[5] ?? ''
];
$adminEntryLinks = $adminEntry[3] ?? [];
foreach ($adminEntryLinks as $linkGroupKey => $linkGroup) {
$mappedLinkGroup = [];
if (empty($linkGroup)) {
continue;
}
foreach ($linkGroup as $linkKey => $link) {
$path = $this->routeConverter->convertUri($link[3]);
$path = str_replace('./#/', '/', $path);
$mappedLink = [
'category' => $link[0] ?? '',
'titleKey' => $link[1] ?? '',
'descriptionKey' => $link[2] ?? '',
'link' => $path ?? '',
'icon' => $link[4] ?? '',
];
$query = parse_url($path, PHP_URL_QUERY);
if ($query) {
parse_str($query, $params);
$mappedLink['params'] = $params;
$path = str_replace('?' . $query, '', $path);
$mappedLink['link'] = $path;
}
$mappedLinkGroup[$linkKey] = $mappedLink;
}
$mapEntry['linkGroup'][$linkGroupKey] = $mappedLinkGroup;
}
$adminPanel[] = $mapEntry;
}
$this->close();
return $adminPanel;
}
}

View file

@ -0,0 +1,39 @@
<?php
/**
* SuiteCRM is a customer relationship management program developed by SalesAgility Ltd.
* Copyright (C) 2023 SalesAgility Ltd.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by the
* Free Software Foundation with the addition of the following permission added
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
* IN WHICH THE COPYRIGHT IS OWNED BY SALESAGILITY, SALESAGILITY DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* In accordance with Section 7(b) of the GNU Affero General Public License
* version 3, these Appropriate Legal Notices must retain the display of the
* "Supercharged by SuiteCRM" logo. If the display of the logos is not reasonably
* feasible for technical reasons, the Appropriate Legal Notices must display
* the words "Supercharged by SuiteCRM".
*/
namespace App\ViewDefinitions\Service;
interface AdminPanelDefinitionProviderInterface
{
/**
* Get admin panel defs
* @return array
*/
public function getAdminPanelDef(): array;
}

View file

@ -4014,3 +4014,115 @@ $app_strings['LBL_SIGNATURE'] = 'Signature';
$app_strings['LBL_NEW_NOTIFICATION'] = "You have {{context.unread}} new notifications";
$app_strings['LBL_NOTIFICATION_ITEM_DATE'] = 'Due: {{fields.date_start.value}}';
$app_strings['LBL_NOTIFICATION_ITEM_DATE_ENTERED'] = 'Notified: {{fields.snooze.value}}';
$app_strings['LBL_USERS_TITLE'] = "Users & Authentication";
$app_strings['LBL_USERS_DESC'] = "Create, edit, activate and deactivate users in SuiteCRM.";
$app_strings['LBL_OAUTH2_CLIENTS_TITLE'] = 'OAuth2 Clients and Tokens';
$app_strings['LBL_OAUTH2_CLIENTS'] = 'Manage which clients have access to the OAuth2 Server and view session log and revoke active sessions';
$app_strings['LBL_OAUTH'] = 'OAuth key management';
$app_strings['LBL_OAUTH_TITLE'] = 'OAuth Keys';
$app_strings['LBL_MANAGE_PASSWORD_TITLE'] = 'Password Management';
$app_strings['LBL_MANAGE_PASSWORD'] = 'Manage password requirements and expiration';
$app_strings['LBL_CONFIG_SECURITYGROUPS_TITLE'] = 'Security Suite Settings';
$app_strings['LBL_CONFIG_SECURITYGROUPS'] = 'Configure Security Suite settings such as group inheritance, additive security, etc';
$app_strings['LBL_MANAGE_SECURITYGROUPS_TITLE'] = 'Security Suite Group Management';
$app_strings['LBL_MANAGE_SECURITYGROUPS'] = 'Security Suite Group Editor';
$app_strings['LBL_MANAGE_ROLES_TITLE'] = 'Role Management';
$app_strings['LBL_MANAGE_ROLES'] = 'Manage role membership and properties';
$app_strings['LBL_MANAGE_USERS_TITLE'] = 'User Management';
$app_strings['LBL_MANAGE_USERS'] = 'Manage user accounts and passwords';
$app_strings['LBL_ADMINISTRATION_HOME_TITLE'] = 'System';
$app_strings['LBL_ADMINISTRATION_HOME_DESC'] = 'Configure the system-wide settings according to the specifications of your organization. Users can override some of the default locale settings within their user settings page.';
$app_strings['LBL_CONFIGURE_SETTINGS_TITLE'] = 'System Settings';
$app_strings['LBL_CONFIGURE_SETTINGS'] = 'Configure system-wide settings';
$app_strings['LBL_CURRENCY'] = 'Set up currencies and conversion rates';
$app_strings['LBL_MANAGE_CURRENCIES'] = 'Currencies';
$app_strings['LBL_ELASTIC_SEARCH_SETTINGS'] = 'Elasticsearch';
$app_strings['LBL_ELASTIC_SEARCH_SETTINGS_DESC'] = 'Configure Elasticsearch preferences';
$app_strings['LBL_MANAGE_LANGUAGES'] = 'Languages';
$app_strings['LBL_LANGUAGES'] = 'Manage which languages are available for users';
$app_strings['LBL_MANAGE_LOCALE'] = 'Locale';
$app_strings['LBL_LOCALE'] = 'Set default localization settings for your system';
$app_strings['LBL_PDF_HEADER'] = 'PDF Settings';
$app_strings['LBL_CHANGE_PDF_SETTINGS'] = 'Change PDF Settings';
$app_strings['LBL_SUITE_SCHEDULER_TITLE'] = 'Scheduler';
$app_strings['LBL_SUITE_SCHEDULER'] = 'Set up scheduled events';
$app_strings['LBL_SEARCH_WRAPPER'] = 'Search Settings';
$app_strings['LBL_SEARCH_WRAPPER_DESC'] = 'Configure the global search preferences for the system';
$app_strings['LBL_THEME_SETTINGS'] = 'Themes';
$app_strings['LBL_THEME_SETTINGS_DESC'] = 'Choose themes for users to be able to select';
$app_strings['LBL_MODULE_ADMIN'] = 'Module Settings';
$app_strings['LBL_MODULE_ADMIN_HEADER_DESC'] = 'Configure Module specifics and settings';
$app_strings['LBL_AOP_SETTINGS'] = 'Case Module Settings';
$app_strings['LBL_CHANGE_SETTINGS_AOP'] = 'Change settings for Cases and the Cases Portal';
$app_strings['LBL_AOS_SETTINGS'] = 'Sales Module Settings';
$app_strings['LBL_CHANGE_SETTINGS'] = 'Change settings for Quotes, Contracts and Invoices';
$app_strings['LBL_BUSINESS_HOURS'] = 'Business hours';
$app_strings['LBL_AOP_BUSINESS_HOURS_DESC'] = "Restrict Workflow & Case automations to certain days and times";
$app_strings['LBL_CONFIGURE_GROUP_TABS_DESC'] = 'Create and edit module menu filters';
$app_strings['LBL_CONFIGURE_TABS_AND_SUBPANELS'] = 'Display Modules and Subpanels';
$app_strings['LBL_CONFIGURE_TABS_AND_SUBPANELS_DESC'] = 'Choose which modules are displayed in the navigation bar and which subpanels are displayed system-wide';
$app_strings['LBL_CONFIGURE_GROUP_TABS'] = 'Configure Module Menu Filters';
$app_strings['LBL_CONNECTOR_SETTINGS'] = 'Connectors';
$app_strings['LBL_CONNECTOR_SETTINGS_DESC'] = 'Manage connector settings';
$app_strings['LBL_SUITEFEED_SETTINGS'] = 'Activity Stream Settings';
$app_strings['LBL_SUITEFEED_SETTINGS_DESC'] = 'Enable the user feed and module feeds for the My Activity Stream dashlet';
$app_strings['LBL_HISTORY_CONTACTS_EMAILS'] = 'History Subpanel';
$app_strings['LBL_HISTORY_CONTACTS_EMAILS_DESC'] = "Enable/Disable contacts\' emails in history";
$app_strings['LBL_RELEASE'] = 'Manage releases and versions';
$app_strings['LBL_MANAGE_RELEASES'] = 'Releases';
$app_strings['LBL_EMAIL_TITLE'] = 'Email';
$app_strings['LBL_EMAIL_DESC'] = 'Manage outbound and inbound emails. The email settings must be configured in order to enable users to send out email and newsletter campaigns.';
$app_strings['LBL_CAMPAIGN_CONFIG_TITLE'] = 'Campaign Email Settings';
$app_strings['LBL_CAMPAIGN_CONFIG_DESC'] = 'Configure email settings for campaigns';
$app_strings['LBL_MASS_EMAIL_MANAGER_DESC'] = 'Manage the outbound email queue';
$app_strings['LBL_MASS_EMAIL_MANAGER_TITLE'] = 'Email Queue';
$app_strings['LBL_MANAGE_EXTERNAL_OAUTH_CONNECTIONS'] = 'External OAuth Connections';
$app_strings['LBL_MANAGE_EXTERNAL_OAUTH_CONNECTIONS_DESC'] = 'Setup external OAuth connections';
$app_strings['LBL_MANAGE_EXTERNAL_OAUTH_PROVIDERS'] = 'External OAuth Providers';
$app_strings['LBL_MANAGE_EXTERNAL_OAUTH_PROVIDERS_DESC'] = 'Setup external OAuth providers';
$app_strings['LBL_MANAGE_MAILBOX'] = 'Inbound Email';
$app_strings['LBL_MAILBOX_DESC'] = 'Set up group mail accounts for monitoring inbound email and manage personal inbound mail account information for users';
$app_strings['LBL_MANAGE_MAILBOX_OUTBOUND'] = 'Outbound Email';
$app_strings['LBL_MAILBOX_OUTBOUND_DESC'] = 'Configure outbound email settings';
$app_strings['LBL_MASS_EMAIL_CONFIG_TITLE'] = 'Email Settings';
$app_strings['LBL_MASS_EMAIL_CONFIG_DESC'] = 'Configure email settings';
$app_strings['LBL_MASS_EMAIL_MANAGER_DESC'] = 'Manage the outbound email queue';
$app_strings['LBL_ADMIN_TOOLS_TITLE'] = 'Admin Tools';
$app_strings['LBL_ADMIN_TOOLS_HEADER_DESC'] = 'Repair, backup and run diagnosis on your SuiteCRM instance';
$app_strings['LBL_BACKUPS_TITLE'] = 'Backups';
$app_strings['LBL_BACKUPS'] = 'Backup SuiteCRM files';
$app_strings['LBL_DIAGNOSTIC_TITLE'] = 'Diagnostic Tool';
$app_strings['LBL_DIAGNOSTIC_DESC'] = 'Capture system configuration for diagnostics and analysis';
$app_strings['LBL_IMPORT_WIZARD'] = 'Import Wizard';
$app_strings['LBL_IMPORT_WIZARD_DESC'] = 'Use the import wizard to easily import records into the system';
$app_strings['LBL_MODULE_LOADER_TITLE'] = 'Module Loader';
$app_strings['LBL_MODULE_LOADER'] = 'Add or remove SuiteCRM modules, themes, language packs and other extensions';
$app_strings['LBL_UPGRADE_TITLE'] = 'Repair';
$app_strings['LBL_UPGRADE'] = 'Check and repair SuiteCRM';
$app_strings['LBL_TOOLS_DESC'] = 'Create and edit modules and module layouts, manage standard and custom fields and configure tabs.';
$app_strings['LBL_STUDIO_TITLE'] = 'Developer Tools';
$app_strings['LBL_MODULEBUILDER'] = 'Module Builder';
$app_strings['LBL_MODULEBUILDER_DESC'] = 'Build new modules to expand the functionality of SuiteCRM';
$app_strings['LBL_RENAME_TABS'] = 'Rename Modules';
$app_strings['LBL_CHANGE_NAME_MODULES'] = 'Change the names of the modules appearing within the application';
$app_strings['LBL_DROPDOWN_EDITOR'] = 'Dropdown Editor';
$app_strings['DESC_DROPDOWN_EDITOR'] = 'Add, delete, or change the dropdown lists';
$app_strings['LBL_WORKFLOW_MANAGER'] = 'Workflow Manager';
$app_strings['LBL_WORKFLOW_MANAGER_DESC'] = 'Manage, Add, delete or change Workflow processes';
$app_strings['LBL_STUDIO_DESC'] = 'Customize module fields, layouts and relationships';
$app_strings['LBL_STUDIO'] = 'Studio';
$app_strings['LBL_GOOGLE_SUITE_ADMIN_HEADER'] = 'Google Suite';
$app_strings['LBL_GOOGLE_SUITE_ADMIN_DESC'] = 'Manage your Google Suite Integration.';
$app_strings['LBL_GOOGLE_CALENDAR_SETTINGS_TITLE'] = 'Google Calendar Settings';
$app_strings['LBL_GOOGLE_CALENDAR_SETTINGS_DESC'] = 'Configuration settings to adjust your Google Calendar';
$app_strings['LBL_JJWG_MAPS_ADMIN_CONFIG_TITLE'] = 'Google Maps Settings';
$app_strings['LBL_JJWG_MAPS_ADMIN_CONFIG_DESC'] = 'Configuration settings to adjust your Google Maps';
$app_strings['LBL_JJWG_MAPS_ADMIN_GEOCODED_COUNTS_TITLE'] = 'Geocoded Counts';
$app_strings['LBL_JJWG_MAPS_ADMIN_GEOCODED_COUNTS_DESC'] = 'Shows the number of module objects geocoded, grouped by geocoding response';
$app_strings['LBL_JJWG_MAPS_ADMIN_GEOCODE_ADDRESSES_TITLE'] = 'Geocode Addresses';
$app_strings['LBL_JJWG_MAPS_ADMIN_GEOCODE_ADDRESSES_DESC'] = 'Geocode your object addreses. This process may take a few minutes!';
$app_strings['LBL_JJWG_MAPS_ADMIN_GEOCODING_TEST_TITLE'] = 'Geocoding Test';
$app_strings['LBL_JJWG_MAPS_ADMIN_GEOCODING_TEST_DESC'] = 'Run a single geocoding test with detailed display results.';
$app_strings['LBL_JJWG_MAPS_ADMIN_ADDRESS_CACHE_TITLE'] = 'Address Cache';
$app_strings['LBL_JJWG_MAPS_ADMIN_ADDRESS_CACHE_DESC'] = 'Provides access to Address Cache information. This is only cache.';

View file

@ -95,7 +95,7 @@ $admin_option_defs['Administration']['securitygroup_config'] = [
'security-suite-group-management'
];
$admin_group_header[] = ['LBL_USERS_TITLE', '', false, $admin_option_defs, 'LBL_USERS_DESC'];
$admin_group_header[] = ['LBL_USERS_TITLE', '', false, $admin_option_defs, 'LBL_USERS_DESC', 'users_and_authentication'];
//system.
$admin_option_defs = [];
@ -164,7 +164,7 @@ $admin_option_defs['Administration']['theme_settings'] = [
'themes'
];
$admin_group_header[] = ['LBL_ADMINISTRATION_HOME_TITLE', '', false, $admin_option_defs, 'LBL_ADMINISTRATION_HOME_DESC'];
$admin_group_header[] = ['LBL_ADMINISTRATION_HOME_TITLE', '', false, $admin_option_defs, 'LBL_ADMINISTRATION_HOME_DESC', 'system_admin'];
//Module Settings
$admin_option_defs = [];
@ -232,7 +232,7 @@ $admin_option_defs['Administration']['aos'] = [
'aos-settings'
];
$admin_group_header['sagility'] = ['LBL_MODULE_ADMIN', '', false, $admin_option_defs, 'LBL_MODULE_ADMIN_HEADER_DESC'];
$admin_group_header['sagility'] = ['LBL_MODULE_ADMIN', '', false, $admin_option_defs, 'LBL_MODULE_ADMIN_HEADER_DESC', 'module_settings'];
//email manager.
@ -290,7 +290,7 @@ $admin_option_defs['Campaigns']['mass_Email'] = [
];
$admin_group_header[] = ['LBL_EMAIL_TITLE', '', false, $admin_option_defs, 'LBL_EMAIL_DESC'];
$admin_group_header[] = ['LBL_EMAIL_TITLE', '', false, $admin_option_defs, 'LBL_EMAIL_DESC', 'email_admin'];
//admin tools
$admin_option_defs = [];
@ -334,7 +334,7 @@ $admin_option_defs['Administration']['module_loader'] = [
'module-loader'
];
$admin_group_header[] = ['LBL_ADMIN_TOOLS_TITLE', '', false, $admin_option_defs, 'LBL_ADMIN_TOOLS_HEADER_DESC'];
$admin_group_header[] = ['LBL_ADMIN_TOOLS_TITLE', '', false, $admin_option_defs, 'LBL_ADMIN_TOOLS_HEADER_DESC', 'admin_tools'];
//studio.
$admin_option_defs = [];
@ -383,7 +383,7 @@ $admin_option_defs['any']['workflow_management'] = [
'workflow'
];
$admin_group_header[] = ['LBL_STUDIO_TITLE', '', false, $admin_option_defs, 'LBL_TOOLS_DESC'];
$admin_group_header[] = ['LBL_STUDIO_TITLE', '', false, $admin_option_defs, 'LBL_TOOLS_DESC', 'developer_tools'];
//Google Settings
$admin_option_defs = [];
@ -436,7 +436,8 @@ $admin_group_header[] = [
'',
false,
$admin_option_defs,
'LBL_GOOGLE_SUITE_ADMIN_DESC'
'LBL_GOOGLE_SUITE_ADMIN_DESC',
'google_suite'
];
if (file_exists('custom/modules/Administration/Ext/Administration/administration.ext.php')) {