private function AdminForm::buildCaseTab in Webform CiviCRM Integration 8.5
Case settings FIXME: This is exactly the same code as buildGrantTab. More utilities and less boilerplate needed.
1 call to AdminForm::buildCaseTab()
- AdminForm::buildForm in src/
AdminForm.php - Build admin form for civicrm tab of a webform
File
- src/
AdminForm.php, line 656 - Webform CiviCRM module's admin form.
Class
- AdminForm
- @file Webform CiviCRM module's admin form.
Namespace
Drupal\webform_civicrmCode
private function buildCaseTab() {
$utils = \Drupal::service('webform_civicrm.utils');
$types = $utils
->wf_crm_apivalues('case', 'getoptions', [
'field' => 'case_type_id',
]);
if (!$types) {
return;
}
$this->form['caseTab'] = [
'#type' => 'details',
'#title' => t('Cases'),
'#group' => 'webform_civicrm',
'#attributes' => [
'class' => [
'civi-icon-case',
],
],
];
$this->form['caseTab']["case_number_of_case"] = [
'#type' => 'select',
'#title' => t('Number of Cases'),
'#default_value' => $num = wf_crm_aval($this->data, "case:number_of_case", 0),
'#options' => range(0, $this->sets['case']['max_instances']),
'#prefix' => '<div class="number-of">',
'#suffix' => '</div>',
];
$this
->addAjaxItem("caseTab", "case_number_of_case", "case");
for ($n = 1; $n <= $num; ++$n) {
$fs = "case_case_{$n}_fieldset";
$this->form['caseTab']['case'][$fs] = [
'#type' => 'fieldset',
'#title' => t('Case :num', [
':num' => $n,
]),
'wrap' => [
'#weight' => 9,
],
];
$this->form['caseTab']['case'][$fs]["case_{$n}_settings_existing_case_status"] = [
'#type' => 'select',
'#title' => t('Update Existing Case'),
'#options' => [
'' => '- ' . t('None') . ' -',
] + $utils
->wf_crm_apivalues('case', 'getoptions', [
'field' => 'status_id',
]),
'#default_value' => wf_crm_aval($this->data, "case:{$n}:existing_case_status", []),
'#multiple' => TRUE,
];
$this
->help($this->form['caseTab']['case'][$fs]["case_{$n}_settings_existing_case_status"], 'existing_case_status');
$this->form['caseTab']['case'][$fs]["case_{$n}_settings_duplicate_case"] = [
'#type' => 'checkbox',
'#title' => t('Create new case based on existing case'),
'#default_value' => wf_crm_aval($this->data, "case:{$n}:duplicate_case", 0),
];
$this
->help($this->form['caseTab']['case'][$fs]["case_{$n}_settings_duplicate_case"], 'duplicate_case_status');
$case_type = wf_crm_aval($this->data, "case:{$n}:case:1:case_type_id");
foreach ($this
->filterCaseSets($case_type) as $sid => $set) {
$fs1 = "case_case_{$n}_fieldset_{$sid}";
if ($sid == 'case') {
$pos =& $this->form['caseTab']['case'][$fs];
}
else {
$pos =& $this->form['caseTab']['case'][$fs]['wrap'];
}
$pos[$fs1] = [
'#type' => 'fieldset',
'#title' => $set['label'],
'#attributes' => [
'id' => $fs1,
'class' => [
'web-civi-checkbox-set',
],
],
'js_select' => $this
->addToggle($fs1),
];
$this
->addDynamicCustomSetting($pos[$fs1], $sid, 'case', $n);
if (isset($set['fields'])) {
foreach ($set['fields'] as $fid => $field) {
$fid = "civicrm_{$n}_case_1_{$fid}";
if (!$case_type || empty($field['case_types']) || in_array($case_type, $field['case_types'])) {
$pos[$fs1][$fid] = $this
->addItem($fid, $field);
}
}
}
}
$this
->addAjaxItem("caseTab:case:{$fs}:case_case_{$n}_fieldset_case", "civicrm_{$n}_case_1_case_case_type_id", "..:wrap");
}
}