From e6a0d95cba53187d529f4ad88f8476a4f7d6196c Mon Sep 17 00:00:00 2001 From: Anne-Cath Date: Mon, 18 Aug 2025 13:16:29 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B07835=20-=20Dashboard=20-=20modification?= =?UTF-8?q?=20on=20iTop=20UI=20with=20header=20static=20without=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/dashlet.class.inc.php | 12 ++++++++++-- application/forms.class.inc.php | 5 +++++ dictionaries/cs.dictionary.itop.ui.php | 2 ++ dictionaries/da.dictionary.itop.ui.php | 1 + dictionaries/de.dictionary.itop.ui.php | 1 + dictionaries/en.dictionary.itop.ui.php | 1 + dictionaries/en_gb.dictionary.itop.ui.php | 1 + dictionaries/es_cr.dictionary.itop.ui.php | 1 + dictionaries/fr.dictionary.itop.ui.php | 1 + dictionaries/hu.dictionary.itop.ui.php | 1 + dictionaries/it.dictionary.itop.ui.php | 1 + dictionaries/ja.dictionary.itop.ui.php | 1 + dictionaries/nl.dictionary.itop.ui.php | 1 + dictionaries/pl.dictionary.itop.ui.php | 1 + dictionaries/pt_br.dictionary.itop.ui.php | 1 + dictionaries/ru.dictionary.itop.ui.php | 1 + dictionaries/sk.dictionary.itop.ui.php | 1 + dictionaries/tr.dictionary.itop.ui.php | 1 + dictionaries/zh_cn.dictionary.itop.ui.php | 1 + 19 files changed, 33 insertions(+), 2 deletions(-) diff --git a/application/dashlet.class.inc.php b/application/dashlet.class.inc.php index e25766268..73ff08f38 100644 --- a/application/dashlet.class.inc.php +++ b/application/dashlet.class.inc.php @@ -1967,7 +1967,10 @@ class DashletHeaderStatic extends Dashlet $sIcon = $this->aProperties['icon']; $oIconSelect = $this->oModelReflection->GetIconSelectionField('icon'); - $sIconPath = utils::HtmlEntities($oIconSelect->MakeFileUrl($sIcon)); + $sIconPath = ''; + if (Utils::IsNotNullOrEmptyString($sIcon)) { + $sIconPath = utils::HtmlEntities($oIconSelect->MakeFileUrl($sIcon)); + } return DashletFactory::MakeForDashletHeaderStatic($this->oModelReflection->DictString($sTitle), $sIconPath); } @@ -1981,6 +1984,7 @@ class DashletHeaderStatic extends Dashlet $oForm->AddField($oField); $oField = $this->oModelReflection->GetIconSelectionField('icon', Dict::S('UI:DashletHeaderStatic:Prop-Icon'), $this->aProperties['icon']); + $oField->AddAllowedValue(['value' => '', 'label' => Dict::S('UI:DashletIcon:None'), 'icon' => '']); $oForm->AddField($oField); } @@ -2093,7 +2097,10 @@ class DashletHeaderDynamic extends Dashlet $sGroupBy = $this->aProperties['group_by']; $oIconSelect = $this->oModelReflection->GetIconSelectionField('icon'); - $sIconPath = $oIconSelect->MakeFileUrl($sIcon); + $sIconPath = ''; + if (Utils::IsNotNullOrEmptyString($sIcon)) { + $sIconPath = $oIconSelect->MakeFileUrl($sIcon); + } $aValues = $this->GetValues(); if (count($aValues) > 0) { @@ -2223,6 +2230,7 @@ class DashletHeaderDynamic extends Dashlet $oForm->AddField($oField); $oField = $this->oModelReflection->GetIconSelectionField('icon', Dict::S('UI:DashletHeaderDynamic:Prop-Icon'), $this->aProperties['icon']); + $oField->AddAllowedValue(['value' => '', 'label' => Dict::S('UI:DashletIcon:None'), 'icon' => '']); $oForm->AddField($oField); $oField = new DesignerTextField('subtitle', Dict::S('UI:DashletHeaderDynamic:Prop-Subtitle'), $this->aProperties['subtitle']); diff --git a/application/forms.class.inc.php b/application/forms.class.inc.php index 9877d9d84..3b111a172 100644 --- a/application/forms.class.inc.php +++ b/application/forms.class.inc.php @@ -1501,6 +1501,11 @@ class DesignerIconSelectionField extends DesignerFormField $this->aAllowedValues = $aAllowedValues; } + public function AddAllowedValue($aValue) + { + // Add a null value to the list of allowed values + $this->aAllowedValues = array_merge([$aValue], $this->aAllowedValues); + } public function EnableUpload($sIconUploadUrl) { $this->sUploadUrl = $sIconUploadUrl; diff --git a/dictionaries/cs.dictionary.itop.ui.php b/dictionaries/cs.dictionary.itop.ui.php index 80f3e4e23..58d755f03 100755 --- a/dictionaries/cs.dictionary.itop.ui.php +++ b/dictionaries/cs.dictionary.itop.ui.php @@ -1294,6 +1294,8 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( 'UI:DashletHeaderStatic:Prop-Title' => 'Titul', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kontakty', 'UI:DashletHeaderStatic:Prop-Icon' => 'Ikona', + 'UI:DashletIcon:None' => 'None~', + 'UI:DashletHeaderDynamic:Label' => 'Hlavička se statistikami', 'UI:DashletHeaderDynamic:Description' => 'Hlavička se statistikami', 'UI:DashletHeaderDynamic:Prop-Title' => 'Titul', diff --git a/dictionaries/da.dictionary.itop.ui.php b/dictionaries/da.dictionary.itop.ui.php index 9b7bdcc75..f35688fdd 100644 --- a/dictionaries/da.dictionary.itop.ui.php +++ b/dictionaries/da.dictionary.itop.ui.php @@ -1296,6 +1296,7 @@ Ved tilknytningen til en trigger, bliver hver handling tildelt et "rækkefølge" 'UI:DashletHeaderStatic:Prop-Title' => 'Titel', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kontakter', 'UI:DashletHeaderStatic:Prop-Icon' => 'Ikon', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Header med statistik', 'UI:DashletHeaderDynamic:Description' => 'Header med stats (grupperet efter...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Titel', diff --git a/dictionaries/de.dictionary.itop.ui.php b/dictionaries/de.dictionary.itop.ui.php index cd671c36e..42989805c 100644 --- a/dictionaries/de.dictionary.itop.ui.php +++ b/dictionaries/de.dictionary.itop.ui.php @@ -1296,6 +1296,7 @@ Wenn Aktionen mit Trigger verknüpft sind, bekommt jede Aktion eine Auftragsnumm 'UI:DashletHeaderStatic:Prop-Title' => 'Titel', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kontakte', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icon', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Header mit Statistiken', 'UI:DashletHeaderDynamic:Description' => 'Header mit Statistiken (gruppiert nach...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Titel', diff --git a/dictionaries/en.dictionary.itop.ui.php b/dictionaries/en.dictionary.itop.ui.php index 034bab9db..dc7d7430f 100644 --- a/dictionaries/en.dictionary.itop.ui.php +++ b/dictionaries/en.dictionary.itop.ui.php @@ -1367,6 +1367,7 @@ When associated with a trigger, each action is given an "order" number, specifyi 'UI:DashletHeaderStatic:Prop-Title' => 'Title', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contacts', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icon', + 'UI:DashletIcon:None' => 'None', 'UI:DashletHeaderDynamic:Label' => 'Header with statistics', 'UI:DashletHeaderDynamic:Description' => 'Header with stats (grouped by...)', diff --git a/dictionaries/en_gb.dictionary.itop.ui.php b/dictionaries/en_gb.dictionary.itop.ui.php index 4238e6087..4b947c3be 100644 --- a/dictionaries/en_gb.dictionary.itop.ui.php +++ b/dictionaries/en_gb.dictionary.itop.ui.php @@ -1365,6 +1365,7 @@ When associated with a trigger, each action is given an "order" number, specifyi 'UI:DashletHeaderStatic:Prop-Title' => 'Title', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contacts', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icon', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Header with statistics', 'UI:DashletHeaderDynamic:Description' => 'Header with stats (grouped by...)', diff --git a/dictionaries/es_cr.dictionary.itop.ui.php b/dictionaries/es_cr.dictionary.itop.ui.php index 743efc41e..f49ca0454 100644 --- a/dictionaries/es_cr.dictionary.itop.ui.php +++ b/dictionaries/es_cr.dictionary.itop.ui.php @@ -1296,6 +1296,7 @@ Cuando se asocien con un disparador, cada acción recibe un número de "orden", 'UI:DashletHeaderStatic:Prop-Title' => 'Título', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contactos', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icono', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Encabezado con Estadísticas', 'UI:DashletHeaderDynamic:Description' => 'Encabezado con estadísticas (agrupado por)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Título', diff --git a/dictionaries/fr.dictionary.itop.ui.php b/dictionaries/fr.dictionary.itop.ui.php index d23b504ff..1b4f9e4f0 100644 --- a/dictionaries/fr.dictionary.itop.ui.php +++ b/dictionaries/fr.dictionary.itop.ui.php @@ -1303,6 +1303,7 @@ Lors de l\'association à un déclencheur, on attribue à chaque action un numé 'UI:DashletHeaderStatic:Prop-Title' => 'Titre', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contacts', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icône', + 'UI:DashletIcon:None' => 'Aucune', 'UI:DashletHeaderDynamic:Label' => 'En-tête dynamique', 'UI:DashletHeaderDynamic:Description' => 'En-tête avec statistiques (regroupements)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Titre', diff --git a/dictionaries/hu.dictionary.itop.ui.php b/dictionaries/hu.dictionary.itop.ui.php index 5c2b5d799..254a37cf1 100755 --- a/dictionaries/hu.dictionary.itop.ui.php +++ b/dictionaries/hu.dictionary.itop.ui.php @@ -1301,6 +1301,7 @@ A művelet eseményindítóhoz rendelésekor kap egy sorszámot , amely meghatá 'UI:DashletHeaderStatic:Prop-Title' => 'Cím', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kapcsolattartók', 'UI:DashletHeaderStatic:Prop-Icon' => 'Ikon', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Fejléc statisztikákkal', 'UI:DashletHeaderDynamic:Description' => 'Fejléc statisztikákkal (csoportosítva...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Cím', diff --git a/dictionaries/it.dictionary.itop.ui.php b/dictionaries/it.dictionary.itop.ui.php index 931272431..18bcf9e86 100644 --- a/dictionaries/it.dictionary.itop.ui.php +++ b/dictionaries/it.dictionary.itop.ui.php @@ -1298,6 +1298,7 @@ Quando è associata a un trigger, a ogni azione è assegnato un numero "ordine", 'UI:DashletHeaderStatic:Prop-Title' => 'Titolo', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contatti', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icona', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Intestazione con statistiche', 'UI:DashletHeaderDynamic:Description' => 'Intestazione con statistiche (raggruppate per...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Titolo', diff --git a/dictionaries/ja.dictionary.itop.ui.php b/dictionaries/ja.dictionary.itop.ui.php index c97e6c4cd..8e9440e51 100644 --- a/dictionaries/ja.dictionary.itop.ui.php +++ b/dictionaries/ja.dictionary.itop.ui.php @@ -1302,6 +1302,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( 'UI:DashletHeaderStatic:Prop-Title' => '題名', 'UI:DashletHeaderStatic:Prop-Title:Default' => '連絡先', 'UI:DashletHeaderStatic:Prop-Icon' => 'アイコン', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => '統計付ヘッダー', 'UI:DashletHeaderDynamic:Description' => '状態付ヘッダー (..によるグループ化)', 'UI:DashletHeaderDynamic:Prop-Title' => '題名', diff --git a/dictionaries/nl.dictionary.itop.ui.php b/dictionaries/nl.dictionary.itop.ui.php index 703cd22ed..4f50e5f23 100644 --- a/dictionaries/nl.dictionary.itop.ui.php +++ b/dictionaries/nl.dictionary.itop.ui.php @@ -1297,6 +1297,7 @@ Bij die koppeling wordt aan elke actie een volgorde-nummer gegeven. Dit bepaalt 'UI:DashletHeaderStatic:Prop-Title' => 'Titel', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contacten', 'UI:DashletHeaderStatic:Prop-Icon' => 'Icoon', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Kolom met gegevens', 'UI:DashletHeaderDynamic:Description' => 'Kolom met statistieken (gegroepeerd aan de hand van...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Titel', diff --git a/dictionaries/pl.dictionary.itop.ui.php b/dictionaries/pl.dictionary.itop.ui.php index f81edf187..fd661296a 100644 --- a/dictionaries/pl.dictionary.itop.ui.php +++ b/dictionaries/pl.dictionary.itop.ui.php @@ -1307,6 +1307,7 @@ W przypadku powiązania z wyzwalaczem, każde działanie otrzymuje numer "porzą 'UI:DashletHeaderStatic:Prop-Title' => 'Tytuł', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kontakty', 'UI:DashletHeaderStatic:Prop-Icon' => 'Ikona', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Nagłówek ze statystykami', 'UI:DashletHeaderDynamic:Description' => 'Nagłówek ze statystykami (pogrupowane według ...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Tytuł', diff --git a/dictionaries/pt_br.dictionary.itop.ui.php b/dictionaries/pt_br.dictionary.itop.ui.php index 4083b7fb2..d886f3728 100644 --- a/dictionaries/pt_br.dictionary.itop.ui.php +++ b/dictionaries/pt_br.dictionary.itop.ui.php @@ -1295,6 +1295,7 @@ Quando associada a um gatilho, cada ação recebe um número de "ordem", especif 'UI:DashletHeaderStatic:Prop-Title' => 'Título', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Contatos', 'UI:DashletHeaderStatic:Prop-Icon' => 'Ícone', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Cabeçalho com estatísticas', 'UI:DashletHeaderDynamic:Description' => 'Cabeçalho com estatística (agrupado por...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Título', diff --git a/dictionaries/ru.dictionary.itop.ui.php b/dictionaries/ru.dictionary.itop.ui.php index b15cf579c..117c72e20 100644 --- a/dictionaries/ru.dictionary.itop.ui.php +++ b/dictionaries/ru.dictionary.itop.ui.php @@ -1296,6 +1296,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( 'UI:DashletHeaderStatic:Prop-Title' => 'Заголовок', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Контакты', 'UI:DashletHeaderStatic:Prop-Icon' => 'Иконка', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Заголовок со статистикой', 'UI:DashletHeaderDynamic:Description' => 'Заголовок со статистикой (группировать по ...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Заголовок', diff --git a/dictionaries/sk.dictionary.itop.ui.php b/dictionaries/sk.dictionary.itop.ui.php index 81b4d3534..d4b6105fc 100644 --- a/dictionaries/sk.dictionary.itop.ui.php +++ b/dictionaries/sk.dictionary.itop.ui.php @@ -1302,6 +1302,7 @@ Keď sú priradené spúštačom, každej akcii je dané číslo "príkazu", šp 'UI:DashletHeaderStatic:Prop-Title' => 'Nadpis', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kontakty', 'UI:DashletHeaderStatic:Prop-Icon' => 'Ikonka', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'Hlavička so štatistikami', 'UI:DashletHeaderDynamic:Description' => 'Hlavička s vlastnosťami (zoskupené podľa...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Nadpis', diff --git a/dictionaries/tr.dictionary.itop.ui.php b/dictionaries/tr.dictionary.itop.ui.php index a7f8bc8c5..7bf9be4b8 100644 --- a/dictionaries/tr.dictionary.itop.ui.php +++ b/dictionaries/tr.dictionary.itop.ui.php @@ -1303,6 +1303,7 @@ Tetikleme gerçekleştiriğinde işlemler tanımlanan sıra numarası ile gerçe 'UI:DashletHeaderStatic:Prop-Title' => 'Başlık', 'UI:DashletHeaderStatic:Prop-Title:Default' => 'Kişiler', 'UI:DashletHeaderStatic:Prop-Icon' => 'Simge', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => 'İstatistikli Başlık', 'UI:DashletHeaderDynamic:Description' => 'İstatistiklerle başlık (Gruplandırılmış ...)', 'UI:DashletHeaderDynamic:Prop-Title' => 'Başlık', diff --git a/dictionaries/zh_cn.dictionary.itop.ui.php b/dictionaries/zh_cn.dictionary.itop.ui.php index 2e94c29d6..871168b07 100644 --- a/dictionaries/zh_cn.dictionary.itop.ui.php +++ b/dictionaries/zh_cn.dictionary.itop.ui.php @@ -1298,6 +1298,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( 'UI:DashletHeaderStatic:Prop-Title' => '标题', 'UI:DashletHeaderStatic:Prop-Title:Default' => '联系人', 'UI:DashletHeaderStatic:Prop-Icon' => '图标', + 'UI:DashletIcon:None' => 'None~', 'UI:DashletHeaderDynamic:Label' => '统计标头', 'UI:DashletHeaderDynamic:Description' => '统计标头 (分组...)', 'UI:DashletHeaderDynamic:Prop-Title' => '标题',