From 3221e413274228560ad6c0b45f4ec72e53c60808 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 5 Apr 2020 17:06:27 -0400 Subject: [PATCH] Eliminate Multi-Select field types --- CRM/Core/BAO/CustomField.php | 22 +++++++++++++++------- CRM/Core/SelectValues.php | 3 --- CRM/Custom/Form/Field.php | 12 +++++------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index 834376389e..d9a871d809 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -242,6 +242,20 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { return $options; } + /** + * @inheritDoc + */ + public static function buildOptions($fieldName, $context = NULL, $props = []) { + $options = parent::buildOptions($fieldName, $context, $props); + // This provides legacy support for APIv3, allowing no-longer-existent html types + if ($fieldName == 'html_type' && isset($props['version']) && $props['version'] == 3) { + $options['Multi-Select'] = 'Multi-Select'; + $options['Multi-Select Country'] = 'Multi-Select Country'; + $options['Multi-Select State/Province'] = 'Multi-Select State/Province'; + } + return $options; + } + /** * Store and return an array of all active custom fields. * @@ -661,11 +675,8 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { // FIXME: Why are select state/country separate widget types? $isSelect = (in_array($widget, [ 'Select', - 'Multi-Select', 'Select State/Province', - 'Multi-Select State/Province', 'Select Country', - 'Multi-Select Country', 'CheckBox', 'Radio', ])); @@ -682,7 +693,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $selectAttributes = ['class' => 'crm-select2']; // Search field is always multi-select - if ($search || strpos($field->html_type, 'Multi') !== FALSE) { + if ($search || (self::isSerialized($field) && $widget === 'Select')) { $selectAttributes['class'] .= ' huge'; $selectAttributes['multiple'] = 'multiple'; $selectAttributes['placeholder'] = $placeholder; @@ -1055,9 +1066,6 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { case 'Select Country': case 'Select State/Province': case 'CheckBox': - case 'Multi-Select': - case 'Multi-Select State/Province': - case 'Multi-Select Country': if ($field['data_type'] == 'ContactReference' && $value) { if (is_numeric($value)) { $display = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $value, 'display_name'); diff --git a/CRM/Core/SelectValues.php b/CRM/Core/SelectValues.php index 13800cc69c..3455d14849 100644 --- a/CRM/Core/SelectValues.php +++ b/CRM/Core/SelectValues.php @@ -181,12 +181,9 @@ class CRM_Core_SelectValues { 'Select Date' => ts('Select Date'), 'File' => ts('File'), 'Select State/Province' => ts('Select State/Province'), - 'Multi-Select State/Province' => ts('Multi-Select State/Province'), 'Select Country' => ts('Select Country'), - 'Multi-Select Country' => ts('Multi-Select Country'), 'RichTextEditor' => ts('Rich Text Editor'), 'Autocomplete-Select' => ts('Autocomplete-Select'), - 'Multi-Select' => ts('Multi-Select'), 'Link' => ts('Link'), 'ContactReference' => ts('Autocomplete-Select'), ]; diff --git a/CRM/Custom/Form/Field.php b/CRM/Custom/Form/Field.php index 4f5625d81a..0258e06816 100644 --- a/CRM/Custom/Form/Field.php +++ b/CRM/Custom/Form/Field.php @@ -76,7 +76,6 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { 'Select' => 'Select', 'Radio' => 'Radio', 'CheckBox' => 'CheckBox', - 'Multi-Select' => 'Multi-Select', 'Autocomplete-Select' => 'Autocomplete-Select', ], ['Text' => 'Text', 'Select' => 'Select', 'Radio' => 'Radio'], @@ -85,8 +84,8 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { ['TextArea' => 'TextArea', 'RichTextEditor' => 'RichTextEditor'], ['Date' => 'Select Date'], ['Radio' => 'Radio'], - ['StateProvince' => 'Select State/Province', 'Multi-Select' => 'Multi-Select State/Province'], - ['Country' => 'Select Country', 'Multi-Select' => 'Multi-Select Country'], + ['StateProvince' => 'Select State/Province'], + ['Country' => 'Select Country'], ['File' => 'File'], ['Link' => 'Link'], ['ContactReference' => 'Autocomplete-Select'], @@ -141,7 +140,6 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { 'Select' => ts('Select'), 'Radio' => ts('Radio'), 'CheckBox' => ts('CheckBox'), - 'Multi-Select' => ts('Multi-Select'), 'Autocomplete-Select' => ts('Autocomplete-Select'), ], [ @@ -162,8 +160,8 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { ['TextArea' => ts('TextArea'), 'RichTextEditor' => ts('Rich Text Editor')], ['Date' => ts('Select Date')], ['Radio' => ts('Radio')], - ['StateProvince' => ts('Select State/Province'), 'Multi-Select' => ts('Multi-Select State/Province')], - ['Country' => ts('Select Country'), 'Multi-Select' => ts('Multi-Select Country')], + ['StateProvince' => ts('Select State/Province')], + ['Country' => ts('Select Country')], ['File' => ts('Select File')], ['Link' => ts('Link')], ['ContactReference' => ts('Autocomplete-Select')], @@ -727,7 +725,7 @@ SELECT count(*) if (isset($fields['data_type'][1])) { $dataField = $fields['data_type'][1]; } - $optionFields = ['Select', 'Multi-Select', 'CheckBox', 'Radio']; + $optionFields = ['Select', 'CheckBox', 'Radio']; if (isset($fields['option_type']) && $fields['option_type'] == 1) { //capture duplicate Custom option values -- 2.25.1