From e661e0bdbb6d42035079bcc716aa22b663965055 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Thu, 16 Oct 2025 10:36:53 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B08524=20-=20Make=20grant=20matrix=20displ?= =?UTF-8?q?ay=20correctly=20in=20darkmoon=20and=20make=20it=20accessible?= =?UTF-8?q?=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