private function AdminForm::buildActivityTab in Webform CiviCRM Integration 8.5
Activity settings
1 call to AdminForm::buildActivityTab()
- AdminForm::buildForm in src/
AdminForm.php - Build admin form for civicrm tab of a webform
File
- src/
AdminForm.php, line 483 - Webform CiviCRM module's admin form.
Class
- AdminForm
- @file Webform CiviCRM module's admin form.
Namespace
Drupal\webform_civicrmCode
private function buildActivityTab() {
$utils = \Drupal::service('webform_civicrm.utils');
$this->form['activityTab'] = [
'#type' => 'details',
'#title' => t('Activities'),
'#group' => 'webform_civicrm',
'#attributes' => [
'class' => [
'civi-icon-activity',
],
],
];
$num_acts = wf_crm_aval($this->data, "activity:number_of_activity", 0);
$this->form['activityTab']["activity_number_of_activity"] = [
'#type' => 'select',
'#title' => t('Number of Activities'),
'#default_value' => $num_acts,
'#options' => range(0, $this->sets['activity']['max_instances']),
'#prefix' => '<div class="number-of">',
'#suffix' => '</div>',
];
$this
->addAjaxItem("activityTab", "activity_number_of_activity", "activity");
for ($n = 1; $n <= $num_acts; ++$n) {
$num = "activity_activity_{$n}_fieldset";
$this->form['activityTab']['activity'][$num] = [
'#type' => 'fieldset',
'#attributes' => [
'class' => [
'activity-wrapper',
],
],
'#title' => t('Activity :num', [
':num' => $n,
]),
];
$this->form['activityTab']['activity'][$num]["activity_{$n}_settings_existing_activity_status"] = [
'#type' => 'select',
'#title' => t('Update Existing Activity'),
'#options' => [
'' => '- ' . t('None') . ' -',
] + $utils
->wf_crm_apivalues('activity', 'getoptions', [
'field' => 'status_id',
]),
'#default_value' => wf_crm_aval($this->data, "activity:{$n}:existing_activity_status", []),
'#multiple' => TRUE,
'#prefix' => '<div class="float-item">',
'#suffix' => '</div>',
];
$this
->help($this->form['activityTab']['activity'][$num]["activity_{$n}_settings_existing_activity_status"], 'existing_activity_status');
$this->form['activityTab']['activity'][$num]["activity_{$n}_settings_details"] = [
'#type' => 'checkboxes',
'#options' => [
'entire_result' => t('Include <em>entire</em> webform submission in activity details'),
'view_link' => t('Include link to <em>view</em> webform submission in activity details'),
'edit_link' => t('Include link to <em>edit</em> webform submission in activity details'),
'update_existing' => t('Update the details when an existing activity is updated'),
],
'#default_value' => wf_crm_aval($this->data, "activity:{$n}:details", [
'view_link',
], TRUE),
];
$this->form['activityTab']['activity'][$num]['wrap'] = [];
$wrap =& $this->form['activityTab']['activity'][$num]['wrap'];
if (isset($this->sets['case'])) {
$case_types = $utils
->wf_crm_apivalues('case', 'getoptions', [
'field' => 'case_type_id',
]);
if ($case_types) {
$wrap['case']["activity_{$n}_settings_case_type_id"] = [
'#type' => 'select',
'#title' => t('File On Case'),
'#options' => [
t('- None -'),
] + $case_types,
'#default_value' => $case_type = wf_crm_aval($this->data, "activity:{$n}:case_type_id"),
];
// Allow selection of webform cases
$num_case = wf_crm_aval($this->data, "case:number_of_case", 0);
if ($num_case) {
$webform_cases = [];
for ($i = 1; $i <= $num_case; ++$i) {
$webform_cases["#{$i}"] = t('Case :num', [
':num' => $i,
]);
}
$wrap['case']["activity_{$n}_settings_case_type_id"]['#options'] = [
t('- None -'),
'This Webform' => $webform_cases,
'Find by Case Type' => $case_types,
];
}
$this
->help($wrap['case']["activity_{$n}_settings_case_type_id"], 'file_on_case');
$this
->addAjaxItem("activityTab:activity:{$num}:wrap:case", "activity_{$n}_settings_case_type_id", '..:..:wrap');
if ($case_type && $case_type[0] !== '#') {
$wrap['case']['#type'] = 'fieldset';
$wrap['case']['#attributes'] = [
'class' => [
'web-civi-checkbox-set',
],
];
$wrap['case']['#title'] = t('File On Case');
$wrap['case']['#description'] = t('File on existing case matching the following criteria:');
$this
->help($wrap['case'], 'file_on_case');
$wrap['case']["activity_{$n}_settings_case_type_id"]['#title'] = t('Case Type');
$status_options = $utils
->wf_crm_apivalues('case', 'getoptions', [
'field' => 'status_id',
]);
$wrap['case']["activity_{$n}_settings_case_status_id"] = [
'#type' => 'select',
'#title' => t('Case Status'),
'#options' => $status_options,
'#multiple' => TRUE,
'#attributes' => [
'class' => [
'required',
],
],
'#default_value' => wf_crm_aval($this->data, "activity:{$n}:case_status_id", array_keys($status_options)),
];
$wrap['case']["activity_{$n}_settings_case_contact_id"] = [
'#type' => 'select',
'#title' => t('Case Client'),
'#attributes' => [
'data-type' => 'ContactReference',
],
'#options' => $this
->contactRefOptions(),
'#default_value' => wf_crm_aval($this->data, "activity:{$n}:case_contact_id"),
];
}
}
}
$wrap[$num . '_fields'] = [
'#type' => 'fieldset',
'#title' => t('Activity'),
'#attributes' => [
'id' => $num . '_fields',
'class' => [
'web-civi-checkbox-set',
],
],
'js_select' => $this
->addToggle($num . '_fields'),
];
foreach ($this->sets['activity']['fields'] as $fid => $field) {
if ($fid != 'activity_survey_id') {
$fid = "civicrm_{$n}_activity_1_{$fid}";
$wrap[$num . '_fields'][$fid] = $this
->addItem($fid, $field);
}
}
$type = $wrap[$num . '_fields']["civicrm_{$n}_activity_1_activity_activity_type_id"]['#default_value'];
$type = $type == 'create_civicrm_webform_element' ? 0 : $type;
$this
->addAjaxItem("activityTab:activity:{$num}:wrap:{$num}_fields", "civicrm_{$n}_activity_1_activity_activity_type_id", "..:custom");
// Add ajax survey type field
if (isset($this->fields['activity_survey_id'])) {
$this
->addAjaxItem("activityTab:activity:{$num}:wrap:{$num}_fields", "civicrm_{$n}_activity_1_activity_campaign_id", "..:custom");
if ($type && array_key_exists($type, $utils
->wf_crm_get_campaign_activity_types())) {
$this->sets['activity_survey'] = [
'entity_type' => 'activity',
'label' => $wrap[$num . '_fields']["civicrm_{$n}_activity_1_activity_activity_type_id"]['#options'][$type],
'fields' => [
'activity_survey_id' => $this->fields['activity_survey_id'],
],
];
}
}
// Add custom field sets appropriate to this activity type
foreach ($this->sets as $sid => $set) {
if ($set['entity_type'] == 'activity' && $sid != 'activity' && (!$type || empty($set['sub_types']) || in_array($type, $set['sub_types']))) {
$fs1 = "activity_activity_{$n}_fieldset_{$sid}";
$wrap['custom'][$fs1] = [
'#type' => 'fieldset',
'#title' => $set['label'],
'#attributes' => [
'id' => $fs1,
'class' => [
'web-civi-checkbox-set',
],
],
'js_select' => $this
->addToggle($fs1),
];
$this
->addDynamicCustomSetting($wrap['custom'][$fs1], $sid, 'activity', $n);
if (isset($set['fields'])) {
foreach ($set['fields'] as $fid => $field) {
$fid = "civicrm_{$n}_activity_1_{$fid}";
$wrap['custom'][$fs1][$fid] = $this
->addItem($fid, $field);
}
}
}
}
}
}