From 8ec25db0f2ec7249fedf2cfbcb73c8fc179a43aa Mon Sep 17 00:00:00 2001 From: Ioannis Igoumenos Date: Fri, 23 Aug 2024 19:45:59 +0300 Subject: [PATCH] Allow picker email/identifier all or 1 type --- app/resources/locales/en_US/operation.po | 3 +++ app/src/View/Helper/FieldHelper.php | 22 ++++++++++++++++++- app/templates/CoSettings/fields.inc | 4 ++++ .../autocomplete/cm-autocomplete-people.js | 2 +- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/resources/locales/en_US/operation.po b/app/resources/locales/en_US/operation.po index 13e737791..ac1743b10 100644 --- a/app/resources/locales/en_US/operation.po +++ b/app/resources/locales/en_US/operation.po @@ -66,6 +66,9 @@ msgstr "Apply Database Schema" msgid "assign" msgstr "Assign" +msgid "all" +msgstr "All" + msgid "any" msgstr "Any" diff --git a/app/src/View/Helper/FieldHelper.php b/app/src/View/Helper/FieldHelper.php index e4095ca17..ca2fa9431 100644 --- a/app/src/View/Helper/FieldHelper.php +++ b/app/src/View/Helper/FieldHelper.php @@ -335,7 +335,27 @@ public function formField(string $fieldName, // if the field is required. This makes it clear when a value needs to be set. // Note this will be ignored for non-select controls. $fieldArgs['empty'] = !\in_array($fieldName, ['status', 'sync_status_on_delete'], true) - || (isset($fieldOptions['empty']) && $fieldOptions['empty']); + || (isset($fieldOptions['empty']) && !empty($fieldOptions['empty'])); + + // Check if the empty option comes with a value + if($fieldArgs['empty'] + && !empty($fieldOptions['empty']) + && \is_string($fieldOptions['empty'])) { + $fieldArgs['empty'] = $fieldOptions['empty']; + } + + if(!empty($fieldOptions['all'])) { + $optionName = lcfirst(StringUtilities::foreignKeyToClassName($fieldName)); + $optionValues = $this->getView()->get($optionName); + $optionValues = [ + '-1' => $fieldOptions['all'], + ...$optionValues + ]; + $this->getView()->set($optionName, $optionValues); + } + + // Is this a multiple select + $fieldArgs['multiple'] = !empty($fieldOptions['multiple']); // Manipulate the vv_object for the hasPrefix use case $this->handlePrefix($fieldPrefix, $fieldName); diff --git a/app/templates/CoSettings/fields.inc b/app/templates/CoSettings/fields.inc index b7ff8281e..67d209881 100644 --- a/app/templates/CoSettings/fields.inc +++ b/app/templates/CoSettings/fields.inc @@ -105,11 +105,15 @@ if($vv_action == 'edit') { 'person_picker_email_address_type_id' => [ 'fieldOptions' => [ 'label' => __d('field', 'mail'), + 'empty' => '(' . __d('operation', 'all') . ')', +// 'all' => '(' . __d('operation', 'all') . ')' ], ], 'person_picker_identifier_type_id' => [ 'fieldOptions' => [ 'label' => __d('field', 'identifier'), + 'empty' => '(' . __d('operation', 'all') . ')', +// 'all' => '(' . __d('operation', 'all') . ')', ], ], 'person_picker_display_types' => [ diff --git a/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js b/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js index aa0cad4a3..7208397ba 100644 --- a/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js +++ b/app/webroot/js/comanage/components/autocomplete/cm-autocomplete-people.js @@ -253,7 +253,7 @@ export default {
{{ slotProps.option.emailLabel }} -