mirror of
https://github.com/Combodo/iTop.git
synced 2026-08-30 09:58:17 +02:00
Avoid uid colliding in DOM ids
This commit is contained in:
@@ -407,6 +407,7 @@ class ButtonUIBlockFactory extends AbstractUIBlockFactory
|
||||
$oButton->SetColor($sColor);
|
||||
$oButton->SetAriaAttributes($oPopupItem->GetAriaAttributes()->GetAttributes());
|
||||
$oButton->SetDataAttributes($oPopupItem->GetDataAttributes()->GetAttributes());
|
||||
$oButton->AddDataAttribute('uid', $oPopupItem->GetUID());
|
||||
|
||||
return $oButton;
|
||||
} elseif ($oPopupItem instanceof URLPopupMenuItem) {
|
||||
@@ -426,11 +427,13 @@ class ButtonUIBlockFactory extends AbstractUIBlockFactory
|
||||
$oButton->SetColor($sColor);
|
||||
$oButton->SetAriaAttributes($oPopupItem->GetAriaAttributes()->GetAttributes());
|
||||
$oButton->SetDataAttributes($oPopupItem->GetDataAttributes()->GetAttributes());
|
||||
$oButton->AddDataAttribute('uid', $oPopupItem->GetUID());
|
||||
|
||||
return $oButton;
|
||||
} elseif ($oPopupItem instanceof SeparatorPopupMenuItem) {
|
||||
$oSeparator = new ButtonSeparator(utils::GetSafeId($oPopupItem->GetUID(), true));
|
||||
$oSeparator = new ButtonSeparator();
|
||||
$oSeparator->SetCSSClasses($oPopupItem->GetCssClasses());
|
||||
$oSeparator->AddDataAttribute('uid', $oPopupItem->GetUID());
|
||||
return $oSeparator;
|
||||
}
|
||||
|
||||
@@ -466,6 +469,7 @@ class ButtonUIBlockFactory extends AbstractUIBlockFactory
|
||||
$oButton->AddMultipleJsFilesRelPaths($oPopupItem->GetLinkedScripts());
|
||||
$oButton->SetAriaAttributes($oPopupItem->GetAriaAttributes()->GetAttributes());
|
||||
$oButton->SetDataAttributes($oPopupItem->GetDataAttributes()->GetAttributes());
|
||||
$oButton->AddDataAttribute('uid', $oPopupItem->GetUID());
|
||||
|
||||
return $oButton;
|
||||
} elseif ($oPopupItem instanceof URLPopupMenuItem) {
|
||||
@@ -488,11 +492,13 @@ class ButtonUIBlockFactory extends AbstractUIBlockFactory
|
||||
}
|
||||
$oButton->SetAriaAttributes($oPopupItem->GetAriaAttributes()->GetAttributes());
|
||||
$oButton->SetDataAttributes($oPopupItem->GetDataAttributes()->GetAttributes());
|
||||
$oButton->AddDataAttribute('uid', $oPopupItem->GetUID());
|
||||
|
||||
return $oButton;
|
||||
} elseif ($oPopupItem instanceof SeparatorPopupMenuItem) {
|
||||
$oSeparator = new ButtonSeparator(utils::GetSafeId($oPopupItem->GetUID(), true));
|
||||
$oSeparator = new ButtonSeparator();
|
||||
$oSeparator->SetCSSClasses($oPopupItem->GetCssClasses());
|
||||
$oSeparator->AddDataAttribute('uid', $oPopupItem->GetUID());
|
||||
return $oSeparator;
|
||||
}
|
||||
|
||||
|
||||
@@ -48,13 +48,22 @@ abstract class ActivityPanelAction extends UIBlock
|
||||
|
||||
public function __construct(string $sLabel, string $sIconClass, ?string $sTooltip, string $sUid)
|
||||
{
|
||||
parent::__construct(utils::GetSafeId($sUid, true));
|
||||
// UID is necessary for parent ID generation, we set it first
|
||||
$this->sUid = $sUid;
|
||||
parent::__construct();
|
||||
$this->sLabel = $sLabel;
|
||||
$this->sIconClass = $sIconClass;
|
||||
$this->sTooltip = $sTooltip;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function GenerateId(): string
|
||||
{
|
||||
return parent::GenerateId().'--'.utils::GetSafeId($this->sUid);
|
||||
}
|
||||
|
||||
public function SetPopupItems(array $aPopupItems): static
|
||||
{
|
||||
$this->aPopupItems = $aPopupItems;
|
||||
|
||||
@@ -56,13 +56,22 @@ abstract class TopBarQuickAction extends UIBlock
|
||||
*/
|
||||
public function __construct(string $sLabel, string $sIconClass, ?string $sTooltip, string $sUid)
|
||||
{
|
||||
parent::__construct(utils::GetSafeId($sUid, true));
|
||||
// UID is necessary for parent ID generation, we set it first
|
||||
$this->sUid = $sUid;
|
||||
parent::__construct();
|
||||
$this->sLabel = $sLabel;
|
||||
$this->sIconClass = $sIconClass;
|
||||
$this->sTooltip = $sTooltip;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
protected function GenerateId(): string
|
||||
{
|
||||
return parent::GenerateId().'--'.utils::GetSafeId($this->sUid);
|
||||
}
|
||||
|
||||
public function GetAriaAttributes(): array
|
||||
{
|
||||
$aDefaultValues = [];
|
||||
|
||||
@@ -5,7 +5,11 @@
|
||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }}
|
||||
{% if oUIBlock.GetAdditionalCSSClassesAsString() %}{{ oUIBlock.GetAdditionalCSSClassesAsString() }}{% endif %}
|
||||
{% if oUIBlock.IsHidden() %}ibo-is-hidden{% endif %}"
|
||||
data-role="ibo-button-separator">
|
||||
data-role="ibo-button-separator"
|
||||
{% if oUIBlock.GetDataAttributes() %}
|
||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||
data-{{ sName }}="{{ sValue }}"
|
||||
{% endfor %}
|
||||
{% endif %}>
|
||||
</span>
|
||||
{% endapply %}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
id="{{ oUIBlock.GetId() }}"
|
||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} ibo-activity-panel--activity-action"
|
||||
data-role="ibo-activity-panel--activity-action"
|
||||
data-uid="{{ oUIBlock.GetUID() }}"
|
||||
{% if oUIBlock.GetDataAttributes() %}
|
||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||
data-{{ sName }}="{{ sValue }}"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<span id="{{ oUIBlock.GetId() }}"
|
||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} ibo-activity-panel--activity-action-separator"
|
||||
data-role="ibo-activity-panel--activity-action-separator">
|
||||
data-role="ibo-activity-panel--activity-action-separator"
|
||||
data-uid="{{ oUIBlock.GetUID() }}">
|
||||
</span>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
id="{{ oUIBlock.GetId() }}"
|
||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} ibo-activity-panel--activity-action"
|
||||
data-role="ibo-activity-panel--activity-action"
|
||||
data-uid="{{ oUIBlock.GetUID() }}"
|
||||
{% if oUIBlock.GetDataAttributes() %}
|
||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||
data-{{ sName }}="{{ sValue }}"
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
data-role="ibo-top-bar-quick-action">
|
||||
<div class="ibo-top-bar-quick-action--head" data-role="ibo-top-bar-quick-action--head">
|
||||
<a href="{{ oUIBlock.GetURL() }}" class="ibo-top-bar-quick-action--icon" data-role="ibo-top-bar-quick-action--icon"
|
||||
data-uid="{{ oUIBlock.GetUID() }}"
|
||||
{% if oUIBlock.GetDataAttributes() %}
|
||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||
data-{{ sName }}="{{ sValue }}"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<div id="{{ oUIBlock.GetId() }}"
|
||||
class="{{ oUIBlock.GetBlocksInheritanceCSSClassesAsString() }} {{ oUIBlock.GetAdditionalCSSClassesAsString() }} ibo-top-bar-quick-action-separator"
|
||||
data-role="ibo-top-bar-quick-action-separator"
|
||||
data-uid="{{ oUIBlock.GetUID() }}"
|
||||
{% if oUIBlock.GetDataAttributes() %}
|
||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||
data-{{ sName }}="{{ sValue }}"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<div class="ibo-top-bar-quick-action--head" data-role="ibo-top-bar-quick-action--head">
|
||||
<a href="{{ oUIBlock.GetURL() }}" class="ibo-top-bar-quick-action--icon" data-role="ibo-top-bar-quick-action--icon"
|
||||
target="{{ oUIBlock.GetTarget() }}"
|
||||
data-uid="{{ oUIBlock.GetUID() }}"
|
||||
{% if oUIBlock.GetDataAttributes() %}
|
||||
{% for sName, sValue in oUIBlock.GetDataAttributes() %}
|
||||
data-{{ sName }}="{{ sValue }}"
|
||||
|
||||
Reference in New Issue
Block a user