N°4378 Restore keyboard shortcuts behavior for object details

This commit is contained in:
Stephen Abello
2021-11-09 09:46:23 +01:00
parent 07f470024a
commit 4b888a3805
6 changed files with 48 additions and 8 deletions

View File

@@ -2331,7 +2331,7 @@ class MenuBlock extends DisplayBlock
}
$sTarget = isset($aAction['target']) ? $aAction['target'] : '';
$oActionButton = ButtonUIBlockFactory::MakeLinkNeutral($sUrl, $sLabel, $sIconClass, $sTarget, $sActionId);
$oActionButton = ButtonUIBlockFactory::MakeLinkNeutral($sUrl, $sLabel, $sIconClass, $sTarget, utils::Sanitize($sActionId, '', utils::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER));
$oActionButton->AddCSSClasses(['ibo-action-button', 'ibo-regular-action-button']);
if (empty($sLabel)) {
if (empty($aAction['tooltip'])) {

View File

@@ -22,6 +22,7 @@ namespace Combodo\iTop\Application\UI\Base\Component\PopoverMenu\PopoverMenuItem
use ApplicationPopupMenuItem;
use Combodo\iTop\Application\UI\Base\UIBlock;
use utils;
/**
* Class PopoverMenuItem
@@ -56,7 +57,7 @@ class PopoverMenuItem extends UIBlock
*/
protected function GenerateId()
{
return static::BLOCK_CODE.'-'.$this->oPopupMenuItem->GetUID();
return parent::GenerateId().'--'.utils::GetSafeId($this->oPopupMenuItem->GetUID());
}
/**
@@ -148,4 +149,16 @@ class PopoverMenuItem extends UIBlock
return $this;
}
/**
* @return string
* @uses oPopupMenuItem
* @uses \ApplicationPopupMenuItem::GetUID()
*/
public function GetUID()
{
return $this->oPopupMenuItem->GetUID();
}
}

View File

@@ -347,7 +347,7 @@ abstract class UIBlock implements iUIBlock
protected function GenerateId()
{
$sUniqId = uniqid(static::BLOCK_CODE.'-', true);
$sUniqId = str_replace('.', '-', $sUniqId);
$sUniqId = utils::Sanitize($sUniqId, '', utils::ENUM_SANITIZATION_FILTER_ELEMENT_IDENTIFIER);
return $sUniqId;
}

View File

@@ -1,7 +1,7 @@
{% extends 'base/components/popover-menu/item/layout.html.twig' %}
{% block iboPopoverMenuItem %}
<a class="ibo-popover-menu--item" data-role="ibo-popover-menu--item" href="{{ oUIBlock.GetUrl() }}" onclick="{{ oUIBlock.GetJsCode()|escape }}"
<a id="{{ oUIBlock.GetID() }}" class="ibo-popover-menu--item" data-role="ibo-popover-menu--item" data-uid="{{ oUIBlock.GetUID() }}" href="{{ oUIBlock.GetUrl() }}" onclick="{{ oUIBlock.GetJsCode()|escape }}"
{% if oUIBlock.GetDataAttributes() %}
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
data-{{ sName }}="{{ sValue }}"

View File

@@ -1,7 +1,7 @@
{% extends 'base/components/popover-menu/item/layout.html.twig' %}
{% block iboPopoverMenuItem %}
<a class="ibo-popover-menu--item" data-role="ibo-popover-menu--item" href="{{ oUIBlock.GetUrl() }}" target="{{ oUIBlock.GetTarget() }}"
<a id="{{ oUIBlock.GetID() }}" class="ibo-popover-menu--item" data-role="ibo-popover-menu--item" data-uid="{{ oUIBlock.GetUID() }}" href="{{ oUIBlock.GetUrl() }}" target="{{ oUIBlock.GetTarget() }}"
{% if oUIBlock.HasDataAttributes() %}
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
data-{{ sName }}="{{ sValue }}"

View File

@@ -13,15 +13,42 @@
{% block iboKeyboardShortcutsHandlers %}
$('#{{ oUIBlock.GetId() }}').on('edit_object', function(){
$(this).find('button[name="UI:Menu:Modify"]').click();
let oFavoriteButton = $(this).find('#UIMenuModify');
if(oFavoriteButton[0]){
oFavoriteButton[0].click();
}
else{
let oPopupItemButton = $('[data-role="ibo-popover-menu"]').find('[data-uid="UI:Menu:Modify"]');
if(oPopupItemButton[0]){
oPopupItemButton[0].click();
}
}
});
$('#{{ oUIBlock.GetId() }}').on('delete_object', function(){
$(this).find('button[name="UI:Menu:Delete"]').click();
let oFavoriteButton = $(this).find('#UIMenuDelete');
if(oFavoriteButton[0]){
oFavoriteButton[0].click();
}
else{
let oPopupItemButton = $('[data-role="ibo-popover-menu"]').find('[data-uid="UI:Menu:Delete"]');
if(oPopupItemButton[0]){
oPopupItemButton[0].click();
}
}
});
$('#{{ oUIBlock.GetId() }}').on('new_object', function(){
$(this).find('button[name="UI:Menu:New"]').click();
let oFavoriteButton = $(this).find('#UIMenuNew');
if(oFavoriteButton[0]){
oFavoriteButton[0].click();
}
else{
let oPopupItemButton = $('[data-role="ibo-popover-menu"]').find('[data-uid="UI:Menu:New"]');
if(oPopupItemButton[0]){
oPopupItemButton[0].click();
}
}
});
{% if oUIBlock.GetObjectMode() == constant('cmdbAbstractObject::ENUM_OBJECT_MODE_EDIT') or oUIBlock.GetObjectMode() == constant('cmdbAbstractObject::ENUM_OBJECT_MODE_CREATE') %}
$('#{{ oUIBlock.GetId() }}').on('save_object', function(){