+--------------------------------------------------------------------+
| CiviCRM version 5 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2018 |
+ | Copyright CiviCRM LLC (c) 2004-2019 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2018
+ * @copyright CiviCRM LLC (c) 2004-2019
*/
/**
foreach ($settingMetaData as $setting => $props) {
$quickFormType = $this->getQuickFormType($props);
if (isset($quickFormType)) {
- $options = NULL;
+ $options = CRM_Utils_Array::value('options', $props);
if (isset($props['pseudoconstant'])) {
$options = civicrm_api3('Setting', 'getoptions', [
'field' => $setting,
$this->includesReadOnlyFields = TRUE;
}
- if (isset($props['help_link'])) {
- // Set both the value in this loop & the outer value as we assign both to the template while we deprecate the $descriptions assignment.
- $settingMetaData[$setting]['description'] = $props['description'] .= ' ' . CRM_Utils_System::docURL2($props['help_link']['page'], NULL, NULL, NULL, NULL, $props['help_link']['resource']);
-
- }
$add = 'add' . $quickFormType;
if ($add == 'addElement') {
$this->$add(
$this->addElement('select', $setting, ts($props['title']), $options, CRM_Utils_Array::value('html_attributes', $props));
}
elseif ($add == 'addCheckBox') {
- $this->addCheckBox($setting, ts($props['title']), $options, NULL, CRM_Utils_Array::value('html_attributes', $props), NULL, NULL, [' ']);
+ $this->addCheckBox($setting, '', $options, NULL, CRM_Utils_Array::value('html_attributes', $props), NULL, NULL, [' ']);
}
elseif ($add == 'addCheckBoxes') {
$options = array_flip($options);
elseif ($add === 'addEntityRef') {
$this->$add($setting, ts($props['title']), $props['entity_reference_options']);
}
+ elseif ($add === 'addYesNo' && ($props['type'] === 'Boolean')) {
+ $this->addRadio($setting, ts($props['title']), array(1 => 'Yes', 0 => 'No'), NULL, ' ');
+ }
else {
$this->$add($setting, ts($props['title']), $options);
}
// Migrate to using an array as easier in smart...
- $descriptions[$setting] = ts($props['description']);
- $this->assign("{$setting}_description", ts($props['description']));
+ $description = CRM_Utils_Array::value('description', $props);
+ $descriptions[$setting] = $description;
+ $this->assign("{$setting}_description", $description);
if ($setting == 'max_attachments') {
//temp hack @todo fix to get from metadata
$this->addRule('max_attachments', ts('Value should be a positive number'), 'positiveInteger');
protected function getQuickFormType($spec) {
if (isset($spec['quick_form_type']) &&
!($spec['quick_form_type'] === 'Element' && !empty($spec['html_type']))) {
+ // This is kinda transitional
return $spec['quick_form_type'];
}
+
+ // The spec for settings has been updated for consistency - we provide deprecation notices for sites that have
+ // not made this change.
+ $htmlType = $spec['html_type'];
+ if ($htmlType !== strtolower($htmlType)) {
+ CRM_Core_Error::deprecatedFunctionWarning(ts('Settings fields html_type should be lower case - see https://docs.civicrm.org/dev/en/latest/framework/setting/ - this needs to be fixed for ' . $spec['name']));
+ $htmlType = strtolower($spec['html_type']);
+ }
$mapping = [
'checkboxes' => 'CheckBoxes',
'checkbox' => 'CheckBox',
'radio' => 'Radio',
'select' => 'Select',
'textarea' => 'Element',
+ 'text' => 'Element',
'entity_reference' => 'EntityRef',
+ 'advmultiselect' => 'Element',
];
- return $mapping[$spec['html_type']];
+ return $mapping[$htmlType];
}
/**
* Get the defaults for all fields defined in the metadata.