From 778c16da86fb21b65e7b444c448638e462dcb074 Mon Sep 17 00:00:00 2001 From: Anne-Cath Date: Mon, 29 Sep 2025 14:33:52 +0200 Subject: [PATCH 1/8] =?UTF-8?q?N=C2=B08663=20-=20DoCheckToWrite=20fonction?= =?UTF-8?q?=20implode()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionaries/cs.dict.itop-portal-base.php | 1 + .../dictionaries/da.dict.itop-portal-base.php | 1 + .../dictionaries/de.dict.itop-portal-base.php | 1 + .../dictionaries/en.dict.itop-portal-base.php | 1 + .../dictionaries/en_gb.dict.itop-portal-base.php | 1 + .../dictionaries/es_cr.dict.itop-portal-base.php | 1 + .../dictionaries/fr.dict.itop-portal-base.php | 1 + .../dictionaries/hu.dict.itop-portal-base.php | 1 + .../dictionaries/it.dict.itop-portal-base.php | 1 + .../dictionaries/ja.dict.itop-portal-base.php | 1 + .../dictionaries/nl.dict.itop-portal-base.php | 1 + .../dictionaries/pl.dict.itop-portal-base.php | 1 + .../dictionaries/pt_br.dict.itop-portal-base.php | 1 + .../dictionaries/ru.dict.itop-portal-base.php | 1 + .../dictionaries/sk.dict.itop-portal-base.php | 1 + .../dictionaries/tr.dict.itop-portal-base.php | 1 + .../dictionaries/zh_cn.dict.itop-portal-base.php | 1 + .../portal/src/Helper/ObjectFormHandlerHelper.php | 13 ++++++++++++- 18 files changed, 29 insertions(+), 1 deletion(-) diff --git a/datamodels/2.x/itop-portal-base/dictionaries/cs.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/cs.dict.itop-portal-base.php index 861b5f77d..d695a5865 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/cs.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/cs.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('CS CZ', 'Czech', 'Čeština', array( 'Portal:Form:Close:Warning' => 'Opravdu chcete opustit tento formulář? Data vložená do formuláře budou ztracena ', 'Portal:Error:ObjectCannotBeCreated' => 'Chyba: objekt nelze vytvořit. Před opětovným odesláním tohoto formuláře zkontrolujte související objekty a přílohy.', 'Portal:Error:ObjectCannotBeUpdated' => 'Chyba: objekt nelze vytvořit. Před opětovným odesláním tohoto formuláře zkontrolujte související objekty a přílohy.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/da.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/da.dict.itop-portal-base.php index 8fea47b2e..4a4d36a6d 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/da.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/da.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('DA DA', 'Danish', 'Dansk', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/de.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/de.dict.itop-portal-base.php index 928d2b038..f4e34d8d8 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/de.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/de.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('DE DE', 'German', 'Deutsch', array( 'Portal:Form:Close:Warning' => 'Soll diese Eingabemaske verlassen werden? Eingegebene Daten werden nicht gespeichert.', 'Portal:Error:ObjectCannotBeCreated' => 'Error: Objekt kann nicht erzeugt werden. Prüfen Sie verknüpfte Objekte und Anhänge bevor Sie dieses Formular erneut abschicken.', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: Objekt kann nicht geupdated werden. Prüfen Sie verknüpfte Objekte und Anhänge bevor Sie dieses Formular erneut abschicken.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/en.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/en.dict.itop-portal-base.php index 3ec055d73..77c9033d6 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/en.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/en.dict.itop-portal-base.php @@ -70,6 +70,7 @@ Dict::Add('EN US', 'English', 'English', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/en_gb.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/en_gb.dict.itop-portal-base.php index 949ae0ec5..60473c6e2 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/en_gb.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/en_gb.dict.itop-portal-base.php @@ -57,6 +57,7 @@ Dict::Add('EN GB', 'British English', 'British English', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/es_cr.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/es_cr.dict.itop-portal-base.php index 15afae6bc..4796806c4 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/es_cr.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/es_cr.dict.itop-portal-base.php @@ -59,6 +59,7 @@ Dict::Add('ES CR', 'Spanish', 'Español, Castellano', array( 'Portal:Form:Close:Warning' => '¿Desea abandorar este formulario? Datos modificados se perderan', 'Portal:Error:ObjectCannotBeCreated' => 'Error: no se puede crear el objeto. Verifique los objetos asociados y archivos adjuntos antes de enviar nuevamente este formulario.', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: no se puede actualizar el objeto. Verifique los objetos asociados y archivos adjuntos antes de enviar nuevamente este formulario.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/fr.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/fr.dict.itop-portal-base.php index 1ddd9ce30..3c9639b66 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/fr.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/fr.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('FR FR', 'French', 'Français', array( 'Portal:Form:Close:Warning' => 'Voulez-vous quitter ce formulaire ? Les données saisies seront perdues', 'Portal:Error:ObjectCannotBeCreated' => 'Erreur: L\'objet n\'a pas été créé. Vérifiez les objets liés et les attachements avant de soumettre à nouveau le formulaire.', 'Portal:Error:ObjectCannotBeUpdated' => 'Erreur: L\'objet n\'a pas été modifié. Vérifiez les objets liés et les attachements avant de soumettre à nouveau le formulaire.', + 'Portal:Error:CheckToWriteFailed' => 'Erreur durant la validation du champ \'%1$s\' : %2$s', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/hu.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/hu.dict.itop-portal-base.php index 7fa11210f..c67914d2e 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/hu.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/hu.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('HU HU', 'Hungarian', 'Magyar', array( 'Portal:Form:Close:Warning' => 'Szeretné elhagyni ezt az űrlapot? A megadott adatok elveszhetnek', 'Portal:Error:ObjectCannotBeCreated' => 'Hiba: az objektum nem hozható létre. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.', 'Portal:Error:ObjectCannotBeUpdated' => 'Hiba: az objektum nem frissíthető. Ellenőrizze a kapcsolódó objektumokat és mellékleteket, mielőtt újra elküldi ezt az űrlapot.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/it.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/it.dict.itop-portal-base.php index 427c563a4..873e82818 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/it.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/it.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('IT IT', 'Italian', 'Italiano', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/ja.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/ja.dict.itop-portal-base.php index 05708bbd1..1e4d8039c 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/ja.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/ja.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('JA JP', 'Japanese', '日本語', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/nl.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/nl.dict.itop-portal-base.php index 911de3d43..9a64d7124 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/nl.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/nl.dict.itop-portal-base.php @@ -62,6 +62,7 @@ Dict::Add('NL NL', 'Dutch', 'Nederlands', array( 'Portal:Form:Close:Warning' => 'Ben je zeker dat je dit venster wil sluiten? Ingevoerde gegevens kunnen verloren gaan.', 'Portal:Error:ObjectCannotBeCreated' => 'Fout: object kan niet worden aangemaakt. Kijk verwante objecten en bijlagen na vooraleer dit formulier opnieuw te versturen.', 'Portal:Error:ObjectCannotBeUpdated' => 'Fout: object kan niet worden aangepast. Kijk verwante objecten en bijlagen na vooraleer dit formulier opnieuw te versturen.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/pl.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/pl.dict.itop-portal-base.php index b1264eeae..e40d2bf68 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/pl.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/pl.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('PL PL', 'Polish', 'Polski', array( 'Portal:Form:Close:Warning' => 'Chcesz opuścić ten formularz? Wprowadzone dane mogą zostać utracone', 'Portal:Error:ObjectCannotBeCreated' => 'Błąd: nie można utworzyć obiektu. Sprawdź powiązane obiekty i załączniki przed ponownym przesłaniem tego formularza.', 'Portal:Error:ObjectCannotBeUpdated' => 'Błąd: nie można zaktualizować obiektu. Sprawdź powiązane obiekty i załączniki przed ponownym przesłaniem tego formularza.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/pt_br.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/pt_br.dict.itop-portal-base.php index 1db990636..55f1d46be 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/pt_br.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/pt_br.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('PT BR', 'Brazilian', 'Brazilian', array( 'Portal:Form:Close:Warning' => 'Você deseja abandonar esta página? Os dados digitados podem ser perdidos', 'Portal:Error:ObjectCannotBeCreated' => 'Erro: objeto não pode ser criado. Verifique os objetos e anexos associados antes de enviar novamente este formulário', 'Portal:Error:ObjectCannotBeUpdated' => 'Erro: objeto não pode ser atualizado. Verifique os objetos e anexos associados antes de enviar novamente este formulário', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/ru.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/ru.dict.itop-portal-base.php index 11791178c..cebdc662f 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/ru.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/ru.dict.itop-portal-base.php @@ -62,6 +62,7 @@ Dict::Add('RU RU', 'Russian', 'Русский', array( 'Portal:Form:Close:Warning' => 'Вы действительно хотите закрыть эту форму? Введённые данные могут быть утеряны.', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/sk.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/sk.dict.itop-portal-base.php index 3f9a29717..08dcd1c36 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/sk.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/sk.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('SK SK', 'Slovak', 'Slovenčina', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/tr.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/tr.dict.itop-portal-base.php index 7f5a2d9ee..36f3d35ea 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/tr.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/tr.dict.itop-portal-base.php @@ -61,6 +61,7 @@ Dict::Add('TR TR', 'Turkish', 'Türkçe', array( 'Portal:Form:Close:Warning' => 'Do you want to leave this form? Data entered may be lost~~', 'Portal:Error:ObjectCannotBeCreated' => 'Error: object cannot be created. Check associated objects and attachments before submitting this form again.~~', 'Portal:Error:ObjectCannotBeUpdated' => 'Error: object cannot be updated. Check associated objects and attachments before submitting this form again.~~', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/dictionaries/zh_cn.dict.itop-portal-base.php b/datamodels/2.x/itop-portal-base/dictionaries/zh_cn.dict.itop-portal-base.php index 69c62fbc3..58c9f5964 100644 --- a/datamodels/2.x/itop-portal-base/dictionaries/zh_cn.dict.itop-portal-base.php +++ b/datamodels/2.x/itop-portal-base/dictionaries/zh_cn.dict.itop-portal-base.php @@ -70,6 +70,7 @@ Dict::Add('ZH CN', 'Chinese', '简体中文', array( 'Portal:Form:Close:Warning' => '确定要离开表单吗? 已输入数据会丢失', 'Portal:Error:ObjectCannotBeCreated' => '错误: 无法创建对象. 请在再次提交表单前检查相关对象和附件.', 'Portal:Error:ObjectCannotBeUpdated' => '错误: 无法更新对象. 请在再次提交表单前检查相关对象和附件.', + 'Portal:Error:CheckToWriteFailed' => 'Error during validation of field \'%1$s\': %2$s~~', )); // UserProfile brick diff --git a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php index 44f9b2ea2..15103692d 100644 --- a/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php +++ b/datamodels/2.x/itop-portal-base/portal/src/Helper/ObjectFormHandlerHelper.php @@ -337,7 +337,18 @@ class ObjectFormHandlerHelper ); } } else { - throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, implode('
', $aFormData['validation']['messages']['error']['_main'])); + $sErrorMessages = ''; + foreach ($aFormData['validation']['messages']['error'] as $sFieldId => $aMessages) { + if ($sFieldId == '_main') { + $sErrorMessages .= implode(' - ', $aFormData['validation']['messages']['error']['_main']); + } else { + $oObj = $oFormManager->GetObject(); + $sLabel = $oObj->GetLabel($sFieldId); + $sErrorMessages .= Dict::Format('Portal:Error:CheckToWriteFailed', $sLabel, (is_array($aMessages) ? implode(' - ', $aMessages) : $aMessages)); + } + } + + throw new HttpException(Response::HTTP_INTERNAL_SERVER_ERROR, $sErrorMessages); } break; From 0c3bc7f35bf62c249ba2731831999dc5e2660ae7 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Wed, 15 Oct 2025 15:48:25 +0200 Subject: [PATCH 2/8] =?UTF-8?q?N=C2=B08392=20-=20Fix=20poor=20contrast=20i?= =?UTF-8?q?n=20autocompletes=20when=20using=20darkmoon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../combodo-backoffice-darkmoon-theme/scss/scss-variables.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss index a46759782..18c142ca4 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss @@ -175,6 +175,7 @@ $ibo-input-select-wrapper--after--color: $ibo-color-secondary-300; $ibo-input-select--action-button--color: $ibo-input-select-wrapper--after--color; $ibo-input-select-selectize--item--active--text-color: $ibo-color-grey-100; $ibo-input-select-selectize--item--active--background-color: $ibo-color-grey-500; +$ibo-input-select--autocomplete-item-image--background-color: $ibo-color-grey-800; $ibo-vendors-selectize-input--color: $ibo-body-text-color; $ibo-vendors-selectize-input--background-color: $ibo-input--background-color; $ibo-vendors-selectize--input--border-color: $ibo-input--border-color; From 809d4cd665cf012af5e29cd82c7f2d774007661b Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Wed, 15 Oct 2025 16:04:06 +0200 Subject: [PATCH 3/8] =?UTF-8?q?N=C2=B04460=20-=20Add=20css=20rule=20to=20f?= =?UTF-8?q?ix=20poor=20contrast=20in=20tagset=20placeholder=20when=20using?= =?UTF-8?q?=20darkmoon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/backoffice/vendors/_selectize.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/css/backoffice/vendors/_selectize.scss b/css/backoffice/vendors/_selectize.scss index e66053f4c..67c5b834a 100644 --- a/css/backoffice/vendors/_selectize.scss +++ b/css/backoffice/vendors/_selectize.scss @@ -34,6 +34,10 @@ $ibo-vendors-selectize--dropdown--color: $ibo-vendors-selectize-input--color!de $ibo-vendors-selectize--header--padding-x: 8px !default; $ibo-vendors-selectize--header--padding-y: 5px !default; +.selectize-dropdown, .selectize-input, .selectize-input input { + color: $ibo-vendors-selectize-input--color; +} + .selectize-control.single .selectize-input { box-shadow: unset; background-color: $ibo-vendors-selectize-input--background-color; @@ -66,6 +70,7 @@ $ibo-vendors-selectize--header--padding-y: 5px !default; display: inline-flex; } + .selectize-control.single .selectize-input, .selectize-dropdown.single { border-color: $ibo-vendors-selectize--input--border-color; } From 4aa0c19183fa8552967363929e839f307b08806a Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Wed, 15 Oct 2025 16:27:29 +0200 Subject: [PATCH 4/8] =?UTF-8?q?N=C2=B04460=20-=20Add=20css=20rule=20to=20f?= =?UTF-8?q?ix=20poor=20contrast=20in=20tagset=20add=20action=20when=20usin?= =?UTF-8?q?g=20darkmoon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../combodo-backoffice-darkmoon-theme/scss/scss-variables.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss index 18c142ca4..4cf61d9f3 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss @@ -181,6 +181,7 @@ $ibo-vendors-selectize-input--background-color: $ibo-input--background-color; $ibo-vendors-selectize--input--border-color: $ibo-input--border-color; $ibo-vendors-selectize--element--active--background: $ibo-color-grey-400; $ibo-vendors-selectize--element--active--color: $ibo-body-text-color; +$ibo-vendors-selectize-control--plugin-add-button--add-option--color: $ibo-input-select--action-button--color; $ibo-popover-menu--item-separator--background-color: $ibo-color-grey-500; $ibo-popover-menu--item--text-color: $ibo-color-grey-200; From 1d526650127e90a779b70c3ac4faf567b025d0dd Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Wed, 15 Oct 2025 16:33:32 +0200 Subject: [PATCH 5/8] =?UTF-8?q?N=C2=B04460=20-=20Make=20input=20error=20me?= =?UTF-8?q?ssages=20a=20bit=20more=20red=20in=20darkmoon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../combodo-backoffice-darkmoon-theme/scss/scss-variables.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss index 4cf61d9f3..8ec433f54 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss @@ -89,7 +89,7 @@ $ibo-field--fullscreen-toggler--background-color--on-hover: $ibo-color-grey-500; $ibo-input-wrapper--is-error--background-color: $ibo-color-red-800; $ibo-input-wrapper--is-error--border-color: $ibo-color-red-700; -$ibo-field-validation: $ibo-color-red-200; +$ibo-field-validation: $ibo-color-red-300; $ibo-field--background-color--is-fullscreen: $ibo-color-grey-700; $ibo-field--label--background-color--is-fullscreen: $ibo-color-grey-800; From e661e0bdbb6d42035079bcc716aa22b663965055 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Thu, 16 Oct 2025 10:36:53 +0200 Subject: [PATCH 6/8] =?UTF-8?q?N=C2=B08524=20-=20Make=20grant=20matrix=20d?= =?UTF-8?q?isplay=20correctly=20in=20darkmoon=20and=20make=20it=20accessib?= =?UTF-8?q?le=20for=20color=20vision=20impaired?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userrightsprofile.class.inc.php | 6 ++-- .../userrightsprofile.db.class.inc.php | 4 +-- .../userrightsprojection.class.inc.php | 4 +-- core/userrights.class.inc.php | 4 +-- css/backoffice/application/_all.scss | 3 +- css/backoffice/application/_user-rights.scss | 33 +++++++++++++++++++ data/.compilation-symlinks | 0 .../scss/scss-variables.scss | 10 +++++- .../scss/scss-variables.scss | 15 ++++++++- .../scss/stylesheet.scss | 17 ++++++++++ .../scss/stylesheet.scss | 17 ++++++++++ .../scss/stylesheet.scss | 16 +++++++++ 12 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 css/backoffice/application/_user-rights.scss delete mode 100644 data/.compilation-symlinks diff --git a/addons/userrights/userrightsprofile.class.inc.php b/addons/userrights/userrightsprofile.class.inc.php index 9463da203..366630510 100644 --- a/addons/userrights/userrightsprofile.class.inc.php +++ b/addons/userrights/userrightsprofile.class.inc.php @@ -94,15 +94,15 @@ class URP_Profiles extends UserRightsBaseClassGUI $bGrant = $oUserRights->GetProfileActionGrant($this->GetKey(), $sClass, $sAction); if (is_null($bGrant)) { - return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; } elseif ($bGrant) { - return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; } else { - return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; } } diff --git a/addons/userrights/userrightsprofile.db.class.inc.php b/addons/userrights/userrightsprofile.db.class.inc.php index 7ae7214b0..cba755342 100644 --- a/addons/userrights/userrightsprofile.db.class.inc.php +++ b/addons/userrights/userrightsprofile.db.class.inc.php @@ -250,11 +250,11 @@ class URP_Profiles extends UserRightsBaseClassGUI $iGrant = $oUserRights->GetProfileActionGrant($this->GetKey(), $sClass, $sAction); if (!is_null($iGrant)) { - return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; } else { - return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; } } diff --git a/addons/userrights/userrightsprojection.class.inc.php b/addons/userrights/userrightsprojection.class.inc.php index 09d4ca3a5..3f41725ef 100644 --- a/addons/userrights/userrightsprojection.class.inc.php +++ b/addons/userrights/userrightsprojection.class.inc.php @@ -82,11 +82,11 @@ class URP_Profiles extends UserRightsBaseClass $oGrant = $oUserRights->GetClassActionGrant($this->GetKey(), $sClass, $sAction); if (is_object($oGrant) && ($oGrant->Get('permission') == 'yes')) { - return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; } else { - return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; } } diff --git a/core/userrights.class.inc.php b/core/userrights.class.inc.php index aeea4fa20..14ea0cb69 100644 --- a/core/userrights.class.inc.php +++ b/core/userrights.class.inc.php @@ -540,9 +540,9 @@ abstract class User extends cmdbAbstractObject function GetGrantAsHtml($sClass, $iAction) { if (UserRights::IsActionAllowed($sClass, $iAction, null, $this)) { - return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:Yes').''; } else { - return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; + return ''.Dict::S('UI:UserManagement:ActionAllowed:No').''; } } diff --git a/css/backoffice/application/_all.scss b/css/backoffice/application/_all.scss index 8ce2a44b6..398ed8615 100644 --- a/css/backoffice/application/_all.scss +++ b/css/backoffice/application/_all.scss @@ -7,4 +7,5 @@ @import "display-block/all"; @import "linked-set/all"; @import "tabular-fields/all"; -@import "welcome-popup/all"; \ No newline at end of file +@import "welcome-popup/all"; +@import "user-rights"; \ No newline at end of file diff --git a/css/backoffice/application/_user-rights.scss b/css/backoffice/application/_user-rights.scss new file mode 100644 index 000000000..3e2f311d2 --- /dev/null +++ b/css/backoffice/application/_user-rights.scss @@ -0,0 +1,33 @@ +/* + * @copyright Copyright (C) 2010-2025 Combodo SAS + * @license http://opensource.org/licenses/AGPL-3.0 + */ + +$ibo-user-rights--padding-x: $ibo-spacing-400 !default; +$ibo-user-rights--padding-y: $ibo-spacing-200 !default; +$ibo-user-rights--border-radius: $ibo-border-radius-400 !default; + +$ibo-user-rights--is-success--background-color: $ibo-color-success-100 !default; +$ibo-user-rights--is-success--color: $ibo-color-success-950 !default; +$ibo-user-rights--is-success--border-color: $ibo-color-success-500 !default; +$ibo-user-rights--is-success--border: 1px solid $ibo-user-rights--is-success--border-color !default; + +$ibo-user-rights--is-failure--background-color: $ibo-color-danger-100 !default; +$ibo-user-rights--is-failure--color: $ibo-color-danger-950 !default; +$ibo-user-rights--is-failure--border-color: $ibo-color-danger-500 !default; +$ibo-user-rights--is-failure--border: 1px solid $ibo-user-rights--is-failure--border-color !default; + +.ibo-user-rights { + padding: $ibo-user-rights--padding-y $ibo-user-rights--padding-x; + border-radius: $ibo-user-rights--border-radius; + &.ibo-is-success { + background-color: $ibo-user-rights--is-success--background-color; + color: $ibo-user-rights--is-success--color; + border: $ibo-user-rights--is-success--border; + } + &.ibo-is-failure { + background-color: $ibo-user-rights--is-failure--background-color; + color: $ibo-user-rights--is-failure--color; + border: $ibo-user-rights--is-failure--border; + } +} \ No newline at end of file diff --git a/data/.compilation-symlinks b/data/.compilation-symlinks deleted file mode 100644 index e69de29bb..000000000 diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss index 8ec433f54..30ea3d1c7 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss @@ -289,4 +289,12 @@ $ibo-welcome-popup--stack-item--background-color: $ibo-color-grey-600; $ibo-welcome-popup--stack-item--border-color: $ibo-color-grey-800; $ibo-welcome-popup--stack-item--is-active--border-color: $ibo-color-grey-900; -$ibo-vendors-ckeditor--ck-content--text-color: $ibo-color-grey-900; \ No newline at end of file +$ibo-vendors-ckeditor--ck-content--text-color: $ibo-color-grey-900; + +$ibo-user-rights--is-success--background-color: $ibo-color-success-950 !default; +$ibo-user-rights--is-success--color: $ibo-color-success-100 !default; +$ibo-user-rights--is-success--border-color: $ibo-color-success-950 !default; + +$ibo-user-rights--is-failure--background-color: $ibo-color-danger-950 !default; +$ibo-user-rights--is-failure--color: $ibo-color-danger-100 !default; +$ibo-user-rights--is-failure--border-color: $ibo-color-danger-950 !default; \ No newline at end of file diff --git a/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/scss-variables.scss index b4f660aa0..3501cb5da 100644 --- a/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/scss-variables.scss @@ -1,3 +1,8 @@ +$ibo-color-success-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-base-lightness-100) !default; +$ibo-color-danger-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-danger-100) !default; +$ibo-color-information-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-information-100) !default; +$ibo-color-warning-50: common-adjust-lightness($ibo-color-success-100, $ibo-color-warning-100) !default; + $ibo-navigation-menu--menu-group-title--text-color--is-active: $ibo-color-blue-grey-900; $ibo-navigation-menu--menu-group--background-color--is-active: $ibo-color-white-100; $ibo-navigation-menu--menu-node--background-color: $ibo-color-grey-100; @@ -64,4 +69,12 @@ $ibo-button-colors: ( 'regular': ( /* Semantics */ $ibo-panel-colors: ('primary': $ibo-color-primary-800,'secondary': $ibo-color-secondary-800,'neutral': $ibo-color-grey-800,'information': $ibo-color-information-800,'success': $ibo-color-success-800,'failure': $ibo-color-danger-800,'warning': $ibo-color-warning-800,'danger': $ibo-color-danger-800,'grey' : $ibo-color-grey-800,'blue-grey': $ibo-color-blue-grey-800,'blue': $ibo-color-blue-800,'cyan': $ibo-color-cyan-800,'green': $ibo-color-green-800,'orange' : $ibo-color-orange-800,'red': $ibo-color-red-800,'pink': $ibo-color-pink-800,); $ibo-welcome-popup--stack-item--border-color: $ibo-color-grey-950; -$ibo-welcome-popup--stack-item--is-active--border-color: $ibo-color-grey-900; \ No newline at end of file +$ibo-welcome-popup--stack-item--is-active--border-color: $ibo-color-grey-900; + +$ibo-user-rights--is-success--background-color: $ibo-color-success-50 !default; +$ibo-user-rights--is-success--color: $ibo-color-success-950 !default; +$ibo-user-rights--is-success--border-color: $ibo-color-success-950 !default; + +$ibo-user-rights--is-failure--background-color: $ibo-color-danger-100 !default; +$ibo-user-rights--is-failure--color: $ibo-color-danger-950 !default; +$ibo-user-rights--is-failure--border-color: $ibo-color-danger-950 !default; \ No newline at end of file diff --git a/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/stylesheet.scss b/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/stylesheet.scss index 366647266..cbba7c9f0 100644 --- a/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/stylesheet.scss +++ b/datamodels/2.x/combodo-backoffice-fullmoon-high-contrast-theme/scss/stylesheet.scss @@ -18,6 +18,10 @@ $ibo-toast--icon--font-size: 2rem !default; $ibo-toast--icon--top: calc(50% - #{$ibo-toast--icon--font-size} / 2) !default; $ibo-toast--icon--left: $ibo-spacing-400 !default; +$ibo-user-rights--icon--margin-right: $ibo-spacing-200 !default; +$ibo-user-rights--is-success--icon: '\f00c' !default; +$ibo-user-rights--is-failure--icon: '\f00d' !default; + @each $sName, $sIcon in $ibo-alert--icons { %ibo-alert-#{$sName}, .ibo-alert.ibo-is-#{$sName} { @@ -146,4 +150,17 @@ $ibo-toast--icon--left: $ibo-spacing-400 !default; .ibo-welcome-popup--stack-item.ibo-is-active { border-width: 2px; +} + +.ibo-user-rights { + &.ibo-is-success::before { + content: $ibo-user-rights--is-success--icon; + @extend %fa-solid-base; + margin-right: $ibo-user-rights--icon--margin-right; + } + &.ibo-is-failure::before { + content: $ibo-user-rights--is-failure--icon; + @extend %fa-solid-base; + margin-right: $ibo-user-rights--icon--margin-right; + } } \ No newline at end of file diff --git a/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/stylesheet.scss b/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/stylesheet.scss index 1cb7d1878..859cd5335 100644 --- a/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/stylesheet.scss +++ b/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/stylesheet.scss @@ -15,6 +15,10 @@ $ibo-toast--icon--font-size: 2rem !default; $ibo-toast--icon--top: calc(50% - #{$ibo-toast--icon--font-size} / 2) !default; $ibo-toast--icon--left: $ibo-spacing-400 !default; +$ibo-user-rights--icon--margin-right: $ibo-spacing-200 !default; +$ibo-user-rights--is-success--icon: '\f00c' !default; +$ibo-user-rights--is-failure--icon: '\f00d' !default; + @each $sName, $sIcon in $ibo-alert--icons { %ibo-alert-#{$sName}, .ibo-alert.ibo-is-#{$sName} { @@ -71,3 +75,16 @@ $ibo-toast--icon--left: $ibo-spacing-400 !default; } } +.ibo-user-rights { + &.ibo-is-success::before { + content: $ibo-user-rights--is-success--icon; + @extend %fa-solid-base; + margin-right: $ibo-user-rights--icon--margin-right; + } + &.ibo-is-failure::before { + content: $ibo-user-rights--is-failure--icon; + @extend %fa-solid-base; + margin-right: $ibo-user-rights--icon--margin-right; + } +} + diff --git a/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/stylesheet.scss b/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/stylesheet.scss index cada49df5..13ab47f96 100644 --- a/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/stylesheet.scss +++ b/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/stylesheet.scss @@ -15,6 +15,10 @@ $ibo-toast--icon--font-size: 2rem !default; $ibo-toast--icon--top: calc(50% - #{$ibo-toast--icon--font-size} / 2) !default; $ibo-toast--icon--left: $ibo-spacing-400 !default; +$ibo-user-rights--icon--margin-right: $ibo-spacing-200 !default; +$ibo-user-rights--is-success--icon: '\f00c' !default; +$ibo-user-rights--is-failure--icon: '\f00d' !default; + @each $sName, $sIcon in $ibo-alert--icons { %ibo-alert-#{$sName}, .ibo-alert.ibo-is-#{$sName} { @@ -71,3 +75,15 @@ $ibo-toast--icon--left: $ibo-spacing-400 !default; } } +.ibo-user-rights { + &.ibo-is-success::before { + content: $ibo-user-rights--is-success--icon; + @extend %fa-solid-base; + margin-right: $ibo-user-rights--icon--margin-right; + } + &.ibo-is-failure::before { + content: $ibo-user-rights--is-failure--icon; + @extend %fa-solid-base; + margin-right: $ibo-user-rights--icon--margin-right; + } +} \ No newline at end of file From 6226ac8746057cae19d1fa0507a1d3062587ea05 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Thu, 16 Oct 2025 11:04:06 +0200 Subject: [PATCH 7/8] =?UTF-8?q?N=C2=B05228=20-=20Make=20darkmoon=20and=20a?= =?UTF-8?q?ccessibility=20themes=20colors=20overloadable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scss/scss-variables.scss | 86 ++++++------- .../scss/scss-variables.scss | 120 +++++++++--------- .../scss/scss-variables.scss | 60 ++++----- 3 files changed, 133 insertions(+), 133 deletions(-) diff --git a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss index 30ea3d1c7..5609256d0 100644 --- a/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-darkmoon-theme/scss/scss-variables.scss @@ -1,50 +1,50 @@ -$ibo-color-grey-950: darken($nord0, 15%); -$ibo-color-grey-900: darken($nord0, 10%); -$ibo-color-grey-850: darken($nord0, 5%); -$ibo-color-grey-800: $nord0 ; -$ibo-color-grey-700: $nord1; -$ibo-color-grey-600: $nord2; -$ibo-color-grey-500: $nord3; -$ibo-color-grey-400: lighten($ibo-color-grey-500, 10%); -$ibo-color-grey-300: lighten($ibo-color-grey-400, 10%); -$ibo-color-grey-250: lighten($ibo-color-grey-300, 15%); -$ibo-color-grey-200: $nord4; -$ibo-color-grey-100: $nord5; -$ibo-color-grey-50: $nord6; +$ibo-color-grey-950: darken($nord0, 15%) !default; +$ibo-color-grey-900: darken($nord0, 10%) !default; +$ibo-color-grey-850: darken($nord0, 5%) !default; +$ibo-color-grey-800: $nord0 !default; +$ibo-color-grey-700: $nord1 !default; +$ibo-color-grey-600: $nord2 !default; +$ibo-color-grey-500: $nord3 !default; +$ibo-color-grey-400: lighten($ibo-color-grey-500, 10%) !default; +$ibo-color-grey-300: lighten($ibo-color-grey-400, 10%) !default; +$ibo-color-grey-250: lighten($ibo-color-grey-300, 15%) !default; +$ibo-color-grey-200: $nord4 !default; +$ibo-color-grey-100: $nord5 !default; +$ibo-color-grey-50: $nord6 !default; -$ibo-color-red-100: lighten($nord11, 40%); -$ibo-color-red-200: lighten($nord11, 35%); -$ibo-color-red-300: lighten($nord11, 22%); -$ibo-color-red-400: lighten($nord11, 15%); -$ibo-color-red-500: lighten($nord11, 7%); -$ibo-color-red-600: $nord11; -$ibo-color-red-700: darken($nord11, 7%); -$ibo-color-red-800: darken($nord11, 15%); -$ibo-color-red-900: darken($nord11, 22%); +$ibo-color-red-100: lighten($nord11, 40%) !default; +$ibo-color-red-200: lighten($nord11, 35%) !default; +$ibo-color-red-300: lighten($nord11, 22%) !default; +$ibo-color-red-400: lighten($nord11, 15%) !default; +$ibo-color-red-500: lighten($nord11, 7%) !default; +$ibo-color-red-600: $nord11 !default; +$ibo-color-red-700: darken($nord11, 7%) !default; +$ibo-color-red-800: darken($nord11, 15%) !default; +$ibo-color-red-900: darken($nord11, 22%) !default; -$ibo-color-primary-100: lighten($nord8, 15%); -$ibo-color-primary-200: darken($ibo-color-primary-100, 7%); -$ibo-color-primary-300: $nord8; -$ibo-color-primary-400: darken($ibo-color-primary-300, 7%); -$ibo-color-primary-500: $nord9; -$ibo-color-primary-600: darken($ibo-color-primary-500, 7%); -$ibo-color-primary-700: lighten($nord10, 7%); -$ibo-color-primary-800: $nord10; -$ibo-color-primary-900: darken($ibo-color-primary-800, 20%); -$ibo-color-primary-950: darken($ibo-color-primary-900, 10%); +$ibo-color-primary-100: lighten($nord8, 15%) !default; +$ibo-color-primary-200: darken($ibo-color-primary-100, 7%) !default; +$ibo-color-primary-300: $nord8 !default; +$ibo-color-primary-400: darken($ibo-color-primary-300, 7%) !default; +$ibo-color-primary-500: $nord9 !default; +$ibo-color-primary-600: darken($ibo-color-primary-500, 7%) !default; +$ibo-color-primary-700: lighten($nord10, 7%) !default; +$ibo-color-primary-800: $nord10 !default; +$ibo-color-primary-900: darken($ibo-color-primary-800, 20%) !default; +$ibo-color-primary-950: darken($ibo-color-primary-900, 10%) !default; /* - Secondary color of the brand */ -$ibo-color-secondary-100: $ibo-color-grey-100; -$ibo-color-secondary-200: $ibo-color-grey-200; -$ibo-color-secondary-300: $ibo-color-grey-300; -$ibo-color-secondary-400: $ibo-color-grey-400; -$ibo-color-secondary-500: $ibo-color-grey-500; -$ibo-color-secondary-600: $ibo-color-grey-600; -$ibo-color-secondary-700: $ibo-color-grey-700; -$ibo-color-secondary-800: $ibo-color-grey-800; -$ibo-color-secondary-850: $ibo-color-grey-850; -$ibo-color-secondary-900: $ibo-color-grey-900; -$ibo-color-secondary-950: $ibo-color-grey-950; +$ibo-color-secondary-100: $ibo-color-grey-100 !default; +$ibo-color-secondary-200: $ibo-color-grey-200 !default; +$ibo-color-secondary-300: $ibo-color-grey-300 !default; +$ibo-color-secondary-400: $ibo-color-grey-400 !default; +$ibo-color-secondary-500: $ibo-color-grey-500 !default; +$ibo-color-secondary-600: $ibo-color-grey-600 !default; +$ibo-color-secondary-700: $ibo-color-grey-700 !default; +$ibo-color-secondary-800: $ibo-color-grey-800 !default; +$ibo-color-secondary-850: $ibo-color-grey-850 !default; +$ibo-color-secondary-900: $ibo-color-grey-900 !default; +$ibo-color-secondary-950: $ibo-color-grey-950 !default; $text : $ibo-color-grey-100; $text-invert: $ibo-color-grey-800; diff --git a/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/scss-variables.scss index 11f9fbb06..96d658834 100644 --- a/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-fullmoon-protanopia-deuteranopia-theme/scss/scss-variables.scss @@ -1,71 +1,71 @@ -$ibo-color-primary-100: $ibo-color-blue-100; -$ibo-color-primary-200: $ibo-color-blue-200; -$ibo-color-primary-300: $ibo-color-blue-300; -$ibo-color-primary-400: $ibo-color-blue-400; -$ibo-color-primary-500: $ibo-color-blue-500; -$ibo-color-primary-600: $ibo-color-blue-600; -$ibo-color-primary-700: $ibo-color-blue-700; -$ibo-color-primary-800: $ibo-color-blue-800; -$ibo-color-primary-900: $ibo-color-blue-900; -$ibo-color-primary-950: $ibo-color-blue-950; +$ibo-color-primary-100: $ibo-color-blue-100 !default; +$ibo-color-primary-200: $ibo-color-blue-200 !default; +$ibo-color-primary-300: $ibo-color-blue-300 !default; +$ibo-color-primary-400: $ibo-color-blue-400 !default; +$ibo-color-primary-500: $ibo-color-blue-500 !default; +$ibo-color-primary-600: $ibo-color-blue-600 !default; +$ibo-color-primary-700: $ibo-color-blue-700 !default; +$ibo-color-primary-800: $ibo-color-blue-800 !default; +$ibo-color-primary-900: $ibo-color-blue-900 !default; +$ibo-color-primary-950: $ibo-color-blue-950 !default; -$ibo-color-danger-100: $ibo-color-orange-100; -$ibo-color-danger-200: $ibo-color-orange-200; -$ibo-color-danger-300: $ibo-color-orange-300; -$ibo-color-danger-400: $ibo-color-orange-400; -$ibo-color-danger-500: $ibo-color-orange-500; -$ibo-color-danger-600: $ibo-color-orange-600; -$ibo-color-danger-700: $ibo-color-orange-700; -$ibo-color-danger-800: $ibo-color-orange-800; -$ibo-color-danger-900: $ibo-color-orange-900; -$ibo-color-danger-950: $ibo-color-orange-950; +$ibo-color-danger-100: $ibo-color-orange-100 !default; +$ibo-color-danger-200: $ibo-color-orange-200 !default; +$ibo-color-danger-300: $ibo-color-orange-300 !default; +$ibo-color-danger-400: $ibo-color-orange-400 !default; +$ibo-color-danger-500: $ibo-color-orange-500 !default; +$ibo-color-danger-600: $ibo-color-orange-600 !default; +$ibo-color-danger-700: $ibo-color-orange-700 !default; +$ibo-color-danger-800: $ibo-color-orange-800 !default; +$ibo-color-danger-900: $ibo-color-orange-900 !default; +$ibo-color-danger-950: $ibo-color-orange-950 !default; -$ibo-color-yellow-100: #fefce8; -$ibo-color-yellow-200: #fef9c3; -$ibo-color-yellow-300: #fef08a; -$ibo-color-yellow-400: #fde047; -$ibo-color-yellow-500: #facc15; -$ibo-color-yellow-600: #eab308; -$ibo-color-yellow-700: #ca8a04; -$ibo-color-yellow-800: #a16207; -$ibo-color-yellow-900: #854d0e; -$ibo-color-yellow-950: #713f12; +$ibo-color-yellow-100: #fefce8 !default; +$ibo-color-yellow-200: #fef9c3 !default; +$ibo-color-yellow-300: #fef08a !default; +$ibo-color-yellow-400: #fde047 !default; +$ibo-color-yellow-500: #facc15 !default; +$ibo-color-yellow-600: #eab308 !default; +$ibo-color-yellow-700: #ca8a04 !default; +$ibo-color-yellow-800: #a16207 !default; +$ibo-color-yellow-900: #854d0e !default; +$ibo-color-yellow-950: #713f12 !default; -$ibo-color-warning-100: $ibo-color-yellow-100; -$ibo-color-warning-200: $ibo-color-yellow-200; -$ibo-color-warning-300: $ibo-color-yellow-300; -$ibo-color-warning-400: $ibo-color-yellow-400; -$ibo-color-warning-500: $ibo-color-yellow-500; -$ibo-color-warning-600: $ibo-color-yellow-600; -$ibo-color-warning-700: $ibo-color-yellow-700; -$ibo-color-warning-800: $ibo-color-yellow-800; -$ibo-color-warning-900: $ibo-color-yellow-900; -$ibo-color-warning-950: $ibo-color-yellow-950; +$ibo-color-warning-100: $ibo-color-yellow-100 !default; +$ibo-color-warning-200: $ibo-color-yellow-200 !default; +$ibo-color-warning-300: $ibo-color-yellow-300 !default; +$ibo-color-warning-400: $ibo-color-yellow-400 !default; +$ibo-color-warning-500: $ibo-color-yellow-500 !default; +$ibo-color-warning-600: $ibo-color-yellow-600 !default; +$ibo-color-warning-700: $ibo-color-yellow-700 !default; +$ibo-color-warning-800: $ibo-color-yellow-800 !default; +$ibo-color-warning-900: $ibo-color-yellow-900 !default; +$ibo-color-warning-950: $ibo-color-yellow-950 !default; -$ibo-color-success-100: $ibo-color-blue-100; -$ibo-color-success-200: $ibo-color-blue-200; -$ibo-color-success-300: $ibo-color-blue-300; -$ibo-color-success-400: $ibo-color-blue-400; -$ibo-color-success-500: $ibo-color-blue-500; -$ibo-color-success-600: $ibo-color-blue-600; -$ibo-color-success-700: $ibo-color-blue-700; -$ibo-color-success-800: $ibo-color-blue-800; -$ibo-color-success-900: $ibo-color-blue-900; -$ibo-color-success-950: $ibo-color-blue-950; +$ibo-color-success-100: $ibo-color-blue-100 !default; +$ibo-color-success-200: $ibo-color-blue-200 !default; +$ibo-color-success-300: $ibo-color-blue-300 !default; +$ibo-color-success-400: $ibo-color-blue-400 !default; +$ibo-color-success-500: $ibo-color-blue-500 !default; +$ibo-color-success-600: $ibo-color-blue-600 !default; +$ibo-color-success-700: $ibo-color-blue-700 !default; +$ibo-color-success-800: $ibo-color-blue-800 !default; +$ibo-color-success-900: $ibo-color-blue-900 !default; +$ibo-color-success-950: $ibo-color-blue-950 !default; -$ibo-color-information-100: #f1f5f9; -$ibo-color-information-200: #e2e8f0; -$ibo-color-information-300: #cbd5e1; -$ibo-color-information-400: #94a3b8; -$ibo-color-information-500: #64748b; -$ibo-color-information-600: #475569; -$ibo-color-information-700: #334155; -$ibo-color-information-800: #1e293b; -$ibo-color-information-900: #0f172a; -$ibo-color-information-950: #020617; +$ibo-color-information-100: #f1f5f9 !default; +$ibo-color-information-200: #e2e8f0 !default; +$ibo-color-information-300: #cbd5e1 !default; +$ibo-color-information-400: #94a3b8 !default; +$ibo-color-information-500: #64748b !default; +$ibo-color-information-600: #475569 !default; +$ibo-color-information-700: #334155 !default; +$ibo-color-information-800: #1e293b !default; +$ibo-color-information-900: #0f172a !default; +$ibo-color-information-950: #020617 !default; $ibo-lifecycle-new-state-primary-color: $ibo-color-information-600; diff --git a/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/scss-variables.scss b/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/scss-variables.scss index c759fe044..86af2fcf0 100644 --- a/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/scss-variables.scss +++ b/datamodels/2.x/combodo-backoffice-fullmoon-tritanopia-theme/scss/scss-variables.scss @@ -1,35 +1,35 @@ -$ibo-color-yellow-100: #fefce8; -$ibo-color-yellow-200: #fef9c3; -$ibo-color-yellow-300: #fef08a; -$ibo-color-yellow-400: #fde047; -$ibo-color-yellow-500: #facc15; -$ibo-color-yellow-600: #eab308; -$ibo-color-yellow-700: #ca8a04; -$ibo-color-yellow-800: #a16207; -$ibo-color-yellow-900: #854d0e; -$ibo-color-yellow-950: #713f12; +$ibo-color-yellow-100: #fefce8 !default; +$ibo-color-yellow-200: #fef9c3 !default; +$ibo-color-yellow-300: #fef08a !default; +$ibo-color-yellow-400: #fde047 !default; +$ibo-color-yellow-500: #facc15 !default; +$ibo-color-yellow-600: #eab308 !default; +$ibo-color-yellow-700: #ca8a04 !default; +$ibo-color-yellow-800: #a16207 !default; +$ibo-color-yellow-900: #854d0e !default; +$ibo-color-yellow-950: #713f12 !default; -$ibo-color-success-100: $ibo-color-blue-100; -$ibo-color-success-200: $ibo-color-blue-200; -$ibo-color-success-300: $ibo-color-blue-300; -$ibo-color-success-400: $ibo-color-blue-400; -$ibo-color-success-500: $ibo-color-blue-500; -$ibo-color-success-600: $ibo-color-blue-600; -$ibo-color-success-700: $ibo-color-blue-700; -$ibo-color-success-800: $ibo-color-blue-800; -$ibo-color-success-900: $ibo-color-blue-900; -$ibo-color-success-950: $ibo-color-blue-950; +$ibo-color-success-100: $ibo-color-blue-100 !default; +$ibo-color-success-200: $ibo-color-blue-200 !default; +$ibo-color-success-300: $ibo-color-blue-300 !default; +$ibo-color-success-400: $ibo-color-blue-400 !default; +$ibo-color-success-500: $ibo-color-blue-500 !default; +$ibo-color-success-600: $ibo-color-blue-600 !default; +$ibo-color-success-700: $ibo-color-blue-700 !default; +$ibo-color-success-800: $ibo-color-blue-800 !default; +$ibo-color-success-900: $ibo-color-blue-900 !default; +$ibo-color-success-950: $ibo-color-blue-950 !default; -$ibo-color-information-100: #f1f5f9; -$ibo-color-information-200: #e2e8f0; -$ibo-color-information-300: #cbd5e1; -$ibo-color-information-400: #94a3b8; -$ibo-color-information-500: #64748b; -$ibo-color-information-600: #475569; -$ibo-color-information-700: #334155; -$ibo-color-information-800: #1e293b; -$ibo-color-information-900: #0f172a; -$ibo-color-information-950: #020617; +$ibo-color-information-100: #f1f5f9 !default; +$ibo-color-information-200: #e2e8f0 !default; +$ibo-color-information-300: #cbd5e1 !default; +$ibo-color-information-400: #94a3b8 !default; +$ibo-color-information-500: #64748b !default; +$ibo-color-information-600: #475569 !default; +$ibo-color-information-700: #334155 !default; +$ibo-color-information-800: #1e293b !default; +$ibo-color-information-900: #0f172a !default; +$ibo-color-information-950: #020617 !default; $ibo-lifecycle-new-state-primary-color: $ibo-color-information-600; From 4f845c63cf51f947875d713e7c8ce73da2052063 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Mon, 27 Oct 2025 15:57:11 +0100 Subject: [PATCH 8/8] =?UTF-8?q?N=C2=B08715=20-=20Missing=20name=20for=20Se?= =?UTF-8?q?tUIBlock=20when=20initialized=20in=20twig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Component/Input/Set/SetUIBlockFactory.php | 12 +++++++++--- .../Backoffice/RenderAllUiBlocks.php | 18 ++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/sources/Application/UI/Base/Component/Input/Set/SetUIBlockFactory.php b/sources/Application/UI/Base/Component/Input/Set/SetUIBlockFactory.php index 8e815fbcf..736562884 100644 --- a/sources/Application/UI/Base/Component/Input/Set/SetUIBlockFactory.php +++ b/sources/Application/UI/Base/Component/Input/Set/SetUIBlockFactory.php @@ -53,13 +53,15 @@ class SetUIBlockFactory extends AbstractUIBlockFactory * @param string $sValueField Field used for option value * @param array $aSearchFields Fields used for searching * @param string|null $sGroupField Field used for grouping + * @param string $sName Field name * * @return \Combodo\iTop\Application\UI\Base\Component\Input\Set\Set */ - public static function MakeForSimple(string $sId, array $aOptions, string $sLabelFields, string $sValueField, array $aSearchFields, ?string $sGroupField = null, ?string $sTooltipField = null): Set + public static function MakeForSimple(string $sId, array $aOptions, string $sLabelFields, string $sValueField, array $aSearchFields, ?string $sGroupField = null, ?string $sTooltipField = null, string $sName = ''): Set { // Create set ui block $oSetUIBlock = new Set($sId); + $oSetUIBlock->SetName($sName); // Simple data provider $oDataProvider = new SimpleDataProvider($aOptions); @@ -91,13 +93,15 @@ class SetUIBlockFactory extends AbstractUIBlockFactory * @param string $sValueField Field used for value * @param array $aSearchFields Fields used for search * @param string|null $sGroupField Field used for grouping + * @param string $sName Field name * * @return \Combodo\iTop\Application\UI\Base\Component\Input\Set\Set */ - public static function MakeForAjax(string $sId, string $sAjaxRoute, array $aAjaxRouteParams, string $sLabelFields, string $sValueField, array $aSearchFields, ?string $sGroupField = null): Set + public static function MakeForAjax(string $sId, string $sAjaxRoute, array $aAjaxRouteParams, string $sLabelFields, string $sValueField, array $aSearchFields, ?string $sGroupField = null, string $sName = ''): Set { // Create set ui block $oSetUIBlock = new Set($sId); + $oSetUIBlock->SetName($sName); // Ajax data provider $oDataProvider = new AjaxDataProvider($sAjaxRoute, $aAjaxRouteParams); @@ -129,13 +133,15 @@ class SetUIBlockFactory extends AbstractUIBlockFactory * @param string|null $sWizardHelperJsVarName Wizard helper name * @param array $aFieldsToLoad Additional fields to load on objects * @param string|null $sGroupField Field used for grouping + * @param string $sName Field name * * @return \Combodo\iTop\Application\UI\Base\Component\Input\Set\Set */ - public static function MakeForOQL(string $sId, string $sObjectClass, string $sOql, string $sWizardHelperJsVarName = null, array $aFieldsToLoad = [], ?string $sGroupField = null): Set + public static function MakeForOQL(string $sId, string $sObjectClass, string $sOql, string $sWizardHelperJsVarName = null, array $aFieldsToLoad = [], ?string $sGroupField = null, string $sName = ''): Set { // Create set ui block $oSetUIBlock = new Set($sId); + $oSetUIBlock->SetName($sName); // Renderers $oSetUIBlock->SetOptionsTemplate('application/object/set/option_renderer.html.twig'); diff --git a/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php b/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php index 7ca3a7db0..91e3f7946 100644 --- a/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php +++ b/tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php @@ -548,39 +548,33 @@ $aOptions = [ ]; $oPage->add_style('.demo_set{color:red;}'); -$oSimpleSetBlock = SetUIBlockFactory::MakeForSimple('SetSimple', $aOptions, 'label', 'value', ['label']); -$oSimpleSetBlock->SetName('SimpleSetBlock'); +$oSimpleSetBlock = SetUIBlockFactory::MakeForSimple('SetSimple', $aOptions, 'label', 'value', ['label'], null, null, 'SimpleSetBlock'); $oPage->AddUiBlock($oSimpleSetBlock); $oPage->AddUiBlock(TitleUIBlockFactory::MakeNeutral('Add Option Button', 3)); -$oSimpleAddSetBlock = SetUIBlockFactory::MakeForSimple('SetWithAddOption', $aOptions, 'label', 'value', ['label']); -$oSimpleAddSetBlock->SetName('SetWithAddOption'); +$oSimpleAddSetBlock = SetUIBlockFactory::MakeForSimple('SetWithAddOption', $aOptions, 'label', 'value', ['label'], null, null, 'SetWithAddOption'); $oSimpleAddSetBlock->SetHasAddOptionButton(true); $oPage->AddUiBlock($oSimpleAddSetBlock); $oPage->AddUiBlock(TitleUIBlockFactory::MakeNeutral('Renderer', 3)); -$oSimpleSetBlockRenderer = SetUIBlockFactory::MakeForSimple('SetRenderer', $aOptions, 'label', 'value', ['label']); -$oSimpleSetBlockRenderer->SetName('SimpleSetBlockWithRenderer'); +$oSimpleSetBlockRenderer = SetUIBlockFactory::MakeForSimple('SetRenderer', $aOptions, 'label', 'value', ['label'], null, null, 'SimpleSetBlockWithRenderer'); $oSimpleSetBlockRenderer->SetOptionsTemplate('base/components/input/set/simple_option_renderer.html.twig'); $oSimpleSetBlockRenderer->SetItemsTemplate('base/components/input/set/simple_option_renderer.html.twig'); $oPage->AddUiBlock($oSimpleSetBlockRenderer); $oPage->AddUiBlock(TitleUIBlockFactory::MakeNeutral('Grouping', 3)); -$oSimpleSetBlockGroup = SetUIBlockFactory::MakeForSimple('SetGroup', $aOptions, 'label', 'value', ['label'], 'group'); -$oSimpleSetBlockGroup->SetName('SimpleSetBlockWithGroup'); +$oSimpleSetBlockGroup = SetUIBlockFactory::MakeForSimple('SetGroup', $aOptions, 'label', 'value', ['label'], 'group', null, 'SimpleSetBlockWithGroup'); $oPage->AddUiBlock($oSimpleSetBlockGroup); $oPage->AddUiBlock(TitleUIBlockFactory::MakeNeutral('OQL', 3)); -$oSimpleSetBlockOql = SetUIBlockFactory::MakeForOQL('SetOql', 'Person', 'SELECT Person'); -$oSimpleSetBlockOql->SetName('OqlSet'); +$oSimpleSetBlockOql = SetUIBlockFactory::MakeForOQL('SetOql', 'Person', 'SELECT Person', null, [], null, 'OqlSet'); $oPage->AddUiBlock($oSimpleSetBlockOql); -$oSimpleSetBlockOql2 = SetUIBlockFactory::MakeForOQL('SetOql2', 'Location', 'SELECT Location'); -$oSimpleSetBlockOql2->SetName('OqlSet2'); +$oSimpleSetBlockOql2 = SetUIBlockFactory::MakeForOQL('SetOql2', 'Location', 'SELECT Location', null, [], null, 'OqlSet2'); $oPage->AddUiBlock($oSimpleSetBlockOql2); $oPage->output();