Skip to content
Snippets Groups Projects

Refactored handling of default data

Files
5
@@ -101,12 +101,29 @@ class FormProcessorWebformHandler extends WebformHandlerBase {
'form_processor_background' => 0,
'form_processor_enable_validation' => 0,
'form_processor_enable_calculation' => 0,
'form_processor_enable_default' => 0,
'form_processor_redirect_field' => '',
'form_processor_original_redirect_field' => '',
'metadata_cache_timeout' => '',
];
}
/**
* {@inheritdoc}
*/
public function setConfiguration(array $configuration) {
// Backwards compatibility. If form_processor_require_default is present set the enable default to 1
// If the form_processor_require_default is 1 then set enable default to 2.
if (!isset($configuration['settings']['form_processor_enable_default']) && isset($configuration['settings']['form_processor_require_default'])) {
$configuration['settings']['form_processor_enable_default'] = 1;
if ($configuration['settings']['form_processor_require_default']) {
$configuration['settings']['form_processor_enable_default'] = 2;
}
unset($configuration['settings']['form_processor_require_default']);
}
return parent::setConfiguration($configuration);
}
/**
* {@inheritdoc}
*/
@@ -265,6 +282,18 @@ class FormProcessorWebformHandler extends WebformHandlerBase {
'#type' => 'fieldset',
'#title' => $this->t('Parameters for retrieving default values'),
];
$form['additional']['default_params']['enable_default'] = [
'#type' => 'select',
'#title' => $this->t('Enable default values'),
'#default_value' => $this->configuration['form_processor_enable_default'],
'#options' => [
0 => $this->t("No"),
1 => $this->t("Yes"),
2 => $this->t("Yes and show Page Not Found when no data is retrieved."),
3 => $this->t("Yes and show Access Denied when no data is retrieved."),
],
'#description' => $this->t("You can enable retrieval of default data. <br><br>You can also show a page not found or access denied when CiviCRM does not return any data. <br><br>This could be useful when you have a form where a user can edit existing data. When the data does not exists or the user does not have access to it you can the show either page not found or access denied."),
];
foreach ($parameters as $key => $field) {
$form['additional']['default_params']['param_' . $key] = [
'#type' => 'select',
@@ -276,12 +305,24 @@ class FormProcessorWebformHandler extends WebformHandlerBase {
'current_user' => $this->t('Current User'),
'value' => $this->t('Value (you can use tokens)'),
],
'#states' => [
'invisible' => [
[
[':input[name="settings[additional][default_params][enable_default]"]' => ['value' => '0']],
],
],
]
];
$form['additional']['default_params']['value_' . $key] = [
'#type' => 'textfield',
'#title' => $field,
'#default_value' => $this->configuration['form_processor_params_value'][$key],
'#states' => [
'invisible' => [
[
[':input[name="settings[additional][default_params][enable_default]"]' => ['value' => '0']],
],
],
'visible' => [
':input[name="settings[additional][params][param_' . $key . ']"]' => ['value' => 'value'],
],
@@ -291,21 +332,19 @@ class FormProcessorWebformHandler extends WebformHandlerBase {
],
];
}
$form['additional']['default_params']['require_default'] = [
'#type' => 'select',
'#title' => 'Require Default Values to be populated',
'#default_value' => $this->configuration['form_processor_require_default'],
'#options' => [
0 => "No",
1 => "Yes",
],
];
$form['additional']['default_params']['trigger_defaults'] = [
'#type' => 'checkboxes',
'#title' => 'Retrieve defaults again when this field is changed',
'#default_value' => $this->configuration['form_processor_trigger_defaults'],
'#options' => $builder->getFieldTitles(),
'#multiple' => true,
'#states' => [
'invisible' => [
[
[':input[name="settings[additional][default_params][enable_default]"]' => ['value' => '0']],
],
],
]
];
}
$form['additional']['params'] =
@@ -409,7 +448,7 @@ class FormProcessorWebformHandler extends WebformHandlerBase {
$this->configuration['form_processor_params_value'][substr($key, 6)] = $value;
}
}
$this->configuration['form_processor_require_default'] = $values['additional']['default_params']['require_default'];
$this->configuration['form_processor_enable_default'] = $values['additional']['default_params']['enable_default'];
$this->configuration['form_processor_trigger_defaults'] = $values['additional']['default_params']['trigger_defaults'];
$this->configuration['form_processor_enable_validation'] = $values['additional']['params']['enable_validation'];
$this->configuration['form_processor_enable_calculation'] = $values['additional']['params']['enable_calculation'];
@@ -621,24 +660,13 @@ class FormProcessorWebformHandler extends WebformHandlerBase {
}, $values);
}
/**
* Get the default values for the form processor.
*
* @return array
* The default values for the form processor.
*/
public function formProcessorDefaultsDefault(): array {
return $this->webformDefaultDataHandler->formProcessorDefaultsDefault();
}
/**
* Returns an array with default params.
*
* @param bool $checkRequireDefault
* @return array
*/
public function getFormProcessorDefaultParams(bool $checkRequireDefault = true): array {
return $this->webformDefaultDataHandler->getFormProcessorDefaultParams($checkRequireDefault);
public function getFormProcessorDefaultParams(): array {
return $this->webformDefaultDataHandler->getFormProcessorDefaultParams();
}
}
Loading