diff --git a/core/simplecrypt.class.inc.php b/core/simplecrypt.class.inc.php index 170ddbe20..2875cff2e 100644 --- a/core/simplecrypt.class.inc.php +++ b/core/simplecrypt.class.inc.php @@ -118,6 +118,7 @@ class SimpleCrypt */ function Encrypt($key, $sString) { + return $this->oEngine->Encrypt($key,$sString); } @@ -130,13 +131,11 @@ class SimpleCrypt */ function Decrypt($key, $string) { - if (is_null($string) || strlen($string) == 0) { - IssueLog::Warning("Cannot decrypt empty/null value"); - - return $string; - } - - return $this->oEngine->Decrypt($key, $string); + if (is_null($string) || strlen($string) == 0) { + IssueLog::Warning("Cannot decrypt empty/null value"); + return $string; + } + return $this->oEngine->Decrypt($key,$string); } /** @@ -240,6 +239,10 @@ class SimpleCryptSimpleEngine implements CryptEngine public function Decrypt($key, $encrypted_data) { + if (is_null($encrypted_data) || strlen($encrypted_data) == 0) { + IssueLog::Warning("Cannot decrypt empty/null value"); + return $encrypted_data; + } $result = ''; for($i=1; $i<=strlen($encrypted_data); $i++) { @@ -336,6 +339,10 @@ class SimpleCryptSodiumEngine implements CryptEngine public function Decrypt($key, $encrypted_data) { + if (is_null($encrypted_data) || strlen($encrypted_data) == 0) { + IssueLog::Warning("Cannot decrypt empty/null value"); + return $encrypted_data; + } $key = hex2bin($key); $encrypted_data = base64_decode($encrypted_data); $nonce = mb_substr($encrypted_data, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit'); @@ -368,6 +375,10 @@ class SimpleCryptOpenSSLEngine implements CryptEngine public function Decrypt($key, $encrypted_data) { + if (is_null($encrypted_data) || strlen($encrypted_data) == 0) { + IssueLog::Warning("Cannot decrypt empty/null value"); + return $encrypted_data; + } $key = hex2bin($key); $iv = mb_substr($encrypted_data, 0, openssl_cipher_iv_length("AES-256-CBC"), '8bit'); $encrypted_data = mb_substr($encrypted_data, openssl_cipher_iv_length("AES-256-CBC"), null, '8bit'); @@ -417,6 +428,10 @@ class SimpleCryptOpenSSLMcryptCompatibilityEngine implements CryptEngine public function Decrypt($key, $encrypted_data) { + if (is_null($encrypted_data) || strlen($encrypted_data) == 0) { + IssueLog::Warning("Cannot decrypt empty/null value"); + return $encrypted_data; + } $key = SimpleCryptOpenSSLMcryptCompatibilityEngine::MakeOpenSSLBlowfishKey($key); $iv = mb_substr($encrypted_data, 0, openssl_cipher_iv_length("BF-CBC"), '8bit'); $encrypted_data = mb_substr($encrypted_data, openssl_cipher_iv_length("BF-CBC"), null, '8bit'); diff --git a/css/backoffice/components/_field.scss b/css/backoffice/components/_field.scss index e1fa43b58..6bc1d458f 100644 --- a/css/backoffice/components/_field.scss +++ b/css/backoffice/components/_field.scss @@ -81,9 +81,10 @@ $ibo-field--enable-bulk--checkbox--margin-left: $ibo-spacing-300 !default; } } - /*N°6543 - We need the rule to keep text inside the column when width is defined */ + /* N°6543 - We need the rule to keep text inside the column when width is defined */ &[data-attribute-type="AttributeHTML"], - &[data-attribute-type="AttributeText"] { + &[data-attribute-type="AttributeText"], + &[data-attribute-type="AttributeLongText"] { &[data-attribute-flag-read-only="true"] { display: grid; diff --git a/css/backoffice/components/datatable/_datatable.scss b/css/backoffice/components/datatable/_datatable.scss index b0893415a..d55f83d50 100644 --- a/css/backoffice/components/datatable/_datatable.scss +++ b/css/backoffice/components/datatable/_datatable.scss @@ -127,7 +127,8 @@ $ibo-datatable--selected-result-count--padding-left: 0.1em !default; } /* N°6543 - We need the rule to keep text inside the column when width is defined */ > [data-attribute-type="AttributeHTML"], - > [data-attribute-type="AttributeText"] { + > [data-attribute-type="AttributeText"], + > [data-attribute-type="AttributeLongText"] { max-width: 100%; overflow: auto; } diff --git a/css/backoffice/components/input/_input-select.scss b/css/backoffice/components/input/_input-select.scss index fed2f93eb..7bece46e1 100644 --- a/css/backoffice/components/input/_input-select.scss +++ b/css/backoffice/components/input/_input-select.scss @@ -202,6 +202,11 @@ $ibo-input-select--autocomplete-item-image--border: 1px solid $ibo-color-grey-60 overflow-y: auto; } +// N°7982 Default selectize stylesheet override +.selectize-dropdown-content{ + max-height: $ibo-input-select-selectize--dropdown--max-height; +} + .selectize-dropdown.ui-menu .ui-state-active { margin: unset; background-color: $ibo-input-select-selectize--item--active--background-color; diff --git a/css/backoffice/layout/activity-panel/_activity-panel.scss b/css/backoffice/layout/activity-panel/_activity-panel.scss index 8f65f44ff..7d412d1d6 100644 --- a/css/backoffice/layout/activity-panel/_activity-panel.scss +++ b/css/backoffice/layout/activity-panel/_activity-panel.scss @@ -15,9 +15,10 @@ $ibo-activity-panel--padding-y: $ibo-spacing-0 !default; /* - Header */ $ibo-activity-panel--header--background-color: $ibo-color-grey-100 !default; -$ibo-activity-panel--togglers--color: $ibo-color-grey-600 !default; -$ibo-activity-panel--togglers--on-hover--color: $ibo-color-grey-800 !default; -$ibo-activity-panel--togglers--elements-spacing: 0.75rem !default; +$ibo-activity-panel--actions--color: $ibo-color-grey-600 !default; +$ibo-activity-panel--actions--on-hover--color: $ibo-color-grey-800 !default; +$ibo-activity-panel--actions--elements-spacing: 0.75rem !default; +$ibo-activity-panel--actions-padding-right: $ibo-activity-panel--padding-x !default; /* - Tabs togglers*/ $ibo-activity-panel--tabs-togglers--padding-x: $ibo-activity-panel--padding-x * 3 !default; /* We need to increase this so the size toggler which will be set in abs. pos. can overlap it nicely */ @@ -152,35 +153,45 @@ $ibo-activity-panel--open-icon--margin-left: 0.75rem !default; background-color: $ibo-activity-panel--header--background-color; /* Remove hyperlinks default color */ - > .ibo-activity-panel--tabs-togglers a{ + .ibo-activity-panel--togglers a{ color: $ibo-activity-panel--tab-toolbar--text-color; } } -/* Size/display togglers */ +/* All toggles container */ .ibo-activity-panel--togglers { - position: absolute; - right: $ibo-activity-panel--padding-x; - top: 0; - bottom: 0; - @extend %ibo-fully-centered-content; - color: $ibo-activity-panel--togglers--color; + display: flex; + align-items: center; +} + +/* Size/display togglers */ +.ibo-activity-panel--actions { + display: flex; + align-items: center; + flex-grow: 0; + position: sticky; + padding-right: $ibo-activity-panel--actions-padding-right; + + background-color: $ibo-activity-panel--header--background-color; + color: $ibo-activity-panel--actions--color; &:hover { - color: $ibo-activity-panel--togglers--on-hover--color; + color: $ibo-activity-panel--actions--on-hover--color; } > *:not(:first-child) { - margin-left: $ibo-activity-panel--togglers--elements-spacing; + margin-left: $ibo-activity-panel--actions--elements-spacing; } } /* Tabs togglers */ .ibo-activity-panel--tabs-togglers{ - position: relative; /* For size toggler */ + display: flex; + align-items: center; + justify-content: safe center; + flex-grow: 1; padding-left: $ibo-activity-panel--tabs-togglers--padding-x; - padding-right: $ibo-activity-panel--tabs-togglers--padding-x; - @extend %ibo-fully-centered-content; + overflow-x: auto; } .ibo-activity-panel--tab-toggler{ &.ibo-is-active{ diff --git a/js/layouts/activity-panel/activity-panel.js b/js/layouts/activity-panel/activity-panel.js index 71d14c580..78609b244 100644 --- a/js/layouts/activity-panel/activity-panel.js +++ b/js/layouts/activity-panel/activity-panel.js @@ -619,11 +619,17 @@ $(function() _InitializeCurrentTab : function(){ const sTabId = $.bbq.getState(this.element.attr('id'), true); if(sTabId !== undefined){ + let oTabTogglerElem = null; if(sTabId.startsWith("caselog-")){ - this._GetTabTogglerFromCaseLogAttCode(sTabId.replace("caselog-", "")).find(this.js_selectors.tab_title).trigger('click') + oTabTogglerElem = this._GetTabTogglerFromCaseLogAttCode(sTabId.replace("caselog-", "")).find(this.js_selectors.tab_title).trigger('click') } else if(sTabId === "activity"){ - this.element.find(this.js_selectors.tab_toggler + '[data-tab-type="activity"]').find(this.js_selectors.tab_title).trigger('click') + oTabTogglerElem = this.element.find(this.js_selectors.tab_toggler + '[data-tab-type="activity"]').find(this.js_selectors.tab_title).trigger('click') + } + + // Scroll to the tab toggler if found + if(oTabTogglerElem !== null){ + oTabTogglerElem[0].scrollIntoView(); } } }, diff --git a/templates/base/layouts/activity-panel/layout.html.twig b/templates/base/layouts/activity-panel/layout.html.twig index bd547f846..e8f12b14a 100644 --- a/templates/base/layouts/activity-panel/layout.html.twig +++ b/templates/base/layouts/activity-panel/layout.html.twig @@ -5,7 +5,8 @@ data-object-id="{{ oUIBlock.GetObjectId() }}" data-object-mode="{{ oUIBlock.GetObjectMode() }}">