mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-12 23:14:18 +01:00
N°7194 - Add link to datamodel class schema on object details (#613)
This commit is contained in:
@@ -125,9 +125,7 @@ class ApplicationMenu
|
||||
*/
|
||||
public static function CheckMenuIdEnabled($sMenuId)
|
||||
{
|
||||
self::LoadAdditionalMenus();
|
||||
$oMenuNode = self::GetMenuNode(self::GetMenuIndexById($sMenuId));
|
||||
if (is_null($oMenuNode) || !$oMenuNode->IsEnabled())
|
||||
if (self::IsMenuIdEnabled($sMenuId) === false)
|
||||
{
|
||||
require_once(APPROOT.'/setup/setuppage.class.inc.php');
|
||||
$oP = new ErrorPage(Dict::S('UI:PageTitle:FatalError'));
|
||||
@@ -138,6 +136,19 @@ class ApplicationMenu
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $sMenuId
|
||||
*
|
||||
* @return bool true if the menu exists and current user is allowed to see the menu
|
||||
* @since 3.2.0
|
||||
*/
|
||||
public static function IsMenuIdEnabled($sMenuId):bool
|
||||
{
|
||||
self::LoadAdditionalMenus();
|
||||
$oMenuNode = self::GetMenuNode(self::GetMenuIndexById($sMenuId));
|
||||
return is_null($oMenuNode) === false && $oMenuNode->IsEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Main function to add a menu entry into the application, can be called during the definition
|
||||
* of the data model objects
|
||||
|
||||
@@ -83,6 +83,7 @@ $ibo-object-details--header-right--padding-right--is-sticking: $ibo-spacing-300
|
||||
|
||||
.ibo-object-details--status + .ibo-object-details--object-class {
|
||||
margin-left: 0.5rem;
|
||||
display: inline-flex; /* To avoid having spaces around the class name due to the indentation */
|
||||
|
||||
&::before {
|
||||
content: "(";
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Create a new object (with same class as displayed object)~~',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Save displayed object~~',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('DA DA', 'Danish', 'Dansk', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Create a new object (with same class as displayed object)~~',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Save displayed object~~',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('DE DE', 'German', 'Deutsch', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Erzeuge eine neues Objekt (der gleichen Klasse, wie das angezeigte Objekt)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Speichere das angezeigte Objekt',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Erstellung eines Objekts',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -10,4 +10,5 @@ Dict::Add('EN US', 'English', 'English', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Create a new object (with same class as displayed object)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Save displayed object',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Crear un nuevo objeto (con la misma clase que el objeto mostrado)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Guardar objeto mostrado',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('FR FR', 'French', 'Français', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Créer un nouvel objet (avec la même classe que l\'objet affiché)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Enregistrer l\'objet affiché',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation d\'un objet',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Schéma du modèle de données de la classe',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Új objektum létrehozása (a megjelenített objektummal azonos osztályú)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Megjelenített objektum mentése',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,5 +9,5 @@ Dict::Add('IT IT', 'Italian', 'Italiano', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Crea un nuovo oggetto (con la stessa classe dell\'oggetto visualizzato)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Salva oggetto visualizzato',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creazione di un oggetto',
|
||||
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('JA JP', 'Japanese', '日本語', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Create a new object (with same class as displayed object)~~',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Save displayed object~~',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Maak een nieuw object (van dezelfde klasse als het getoonde object)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Bewaar huidig object',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Objecten schema van deze klasse',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('PL PL', 'Polish', 'Polski', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Utwórz nowy obiekt (z tą samą klasą co wyświetlany obiekt)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Zapisz wyświetlany obiekt',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Criar um novo objeto (com a mesma classe do objeto atual)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Salvar objeto atual',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('RU RU', 'Russian', 'Русский', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Создать новый объект (того же класса, что и просматриваемый объект)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Сохранить просматриваемый объект',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Create a new object (with same class as displayed object)~~',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Save displayed object~~',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => 'Create a new object (with same class as displayed object)~~',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => 'Save displayed object~~',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => 'Creation of an object~~',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -9,4 +9,5 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', [
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:NewObject' => '创建新对象 (与当前对象相同)',
|
||||
'UI:Layout:ObjectDetails:KeyboardShortcut:SaveObject' => '保存当前对象',
|
||||
'UI:Layout:ObjectDetails:New:Modal:Title' => '创建对象',
|
||||
'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' => 'Class data model schema~~',
|
||||
]);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
namespace Combodo\iTop\Application\TwigBase\Twig;
|
||||
|
||||
|
||||
use ApplicationMenu;
|
||||
use AttributeDate;
|
||||
use AttributeDateTime;
|
||||
use AttributeText;
|
||||
@@ -182,6 +183,13 @@ class Extension
|
||||
return utils::GetAbsoluteUrlModulesRoot();
|
||||
});
|
||||
|
||||
// Function to check if current user can access to the given menu
|
||||
// Usage in twig: {% if is_backoffice_menu_enabled('DataModelMenu') %}
|
||||
/** @since 3.2.0 */
|
||||
$aFunctions[] = new TwigFunction('is_backoffice_menu_enabled', function ($sMenuId) {
|
||||
return ApplicationMenu::IsMenuIdEnabled($sMenuId);
|
||||
});
|
||||
|
||||
// Function to render a UI block (HTML, inline CSS, inline JS) and its sub blocks directly in the TWIG
|
||||
// Usage in twig: {{ render_block(oBlock) }}
|
||||
/** @since 3.0.0 */
|
||||
|
||||
@@ -17,6 +17,12 @@
|
||||
<span class="ibo-object-details--status-label" data-role="ibo-object-details--status-label">{{ oUIBlock.GetStatusLabel() }}</span>
|
||||
</span>
|
||||
{% endif %}
|
||||
<span class="ibo-object-details--object-class" data-role="ibo-object-details--object-class">{{ oUIBlock.GetClassLabel() }}</span>
|
||||
<span class="ibo-object-details--object-class" data-role="ibo-object-details--object-class">
|
||||
{% if is_backoffice_menu_enabled('DataModelMenu') %}
|
||||
<a href="{{ get_absolute_url_app_root() }}pages/schema.php?operation=details_class&class={{ oUIBlock.GetClassName() }}" target="_blank" data-tooltip-content="{{ 'UI:Layout:ObjectDetails:DatamodelSchemaLink:Tooltip' | dict_s }} <i class='fas fa-external-link-alt'></i>" data-tooltip-html-enabled="true">{{ oUIBlock.GetClassLabel() }}</a>
|
||||
{% else %}
|
||||
{{ oUIBlock.GetClassLabel() }}
|
||||
{% endif %}
|
||||
</span>
|
||||
{{ parent() }}
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user