private function wf_crm_admin_form::addItem in Webform CiviCRM Integration 7.4
Same name and namespace in other branches
- 7.5 includes/wf_crm_admin_form.inc \wf_crm_admin_form::addItem()
Build a field item for the admin form
Parameters
string $fid: civicrm field id
array $field: Webform field info
Return value
array FAPI form item array for the admin form
7 calls to wf_crm_admin_form::addItem()
- wf_crm_admin_form::buildActivityTab in includes/
wf_crm_admin_form.inc - Activity settings
- wf_crm_admin_form::buildCaseTab in includes/
wf_crm_admin_form.inc - Case settings FIXME: This is exactly the same code as buildGrantTab. More utilities and less boilerplate needed.
- wf_crm_admin_form::buildContactTab in includes/
wf_crm_admin_form.inc - Build fields for a contact
- wf_crm_admin_form::buildContributionTab in includes/
wf_crm_admin_form.inc - Contribution settings
- wf_crm_admin_form::buildGrantTab in includes/
wf_crm_admin_form.inc - Grant settings FIXME: This is nearly the same code as buildCaseTab. More utilities and less boilerplate needed.
File
- includes/
wf_crm_admin_form.inc, line 1288 - Webform CiviCRM module's admin form.
Class
- wf_crm_admin_form
- @file Webform CiviCRM module's admin form.
Code
private function addItem($fid, $field) {
list(, $c, $ent, $n, $table, $name) = explode('_', $fid, 6);
$item = array(
// We don't need numbers on the admin form since they are already grouped in fieldsets
'#title' => str_replace('#', '', $field['name']),
'#attributes' => wf_crm_aval($field, 'attributes'),
);
// Create dropdown list
if (!empty($field['expose_list'])) {
$field['form_key'] = $fid;
// Retrieve option list
$options = array();
// Placeholder empty option - used by javascript when displaying multiselect as single
if (!empty($field['extra']['multiple']) && empty($field['extra']['required'])) {
$options += array(
'' => '- ' . t('None') . ' -',
);
}
// This prevents the multi-select js from adding an illegal empty option
if (!empty($field['extra']['required'])) {
$item['#attributes']['class'][] = 'required';
}
if ($field['type'] != 'hidden') {
$options += array(
'create_civicrm_webform_element' => t('- User Select -'),
);
}
$options += wf_crm_field_options($field, 'config_form', $this->data);
$item += array(
'#type' => 'select',
'#options' => $options,
'#multiple' => !empty($field['extra']['multiple']),
'#default_value' => !empty($field['empty_option']) ? 0 : NULL,
);
if (isset($field['empty_option'])) {
$item['#empty_option'] = '- ' . $field['empty_option'] . ' -';
$item['#empty_value'] = 0;
}
if (isset($field['data_type'])) {
$item['#attributes']['data-type'] = $field['data_type'];
}
// Five ways to get default value...
// 1: From current form state
if (isset($this->settings[$fid]) && $field['type'] != 'hidden') {
$item['#default_value'] = $this->settings[$fid];
}
elseif (isset($this->data[$ent][$c][$table][$n][$name])) {
$item['#default_value'] = $this->data[$ent][$c][$table][$n][$name];
}
elseif (isset($field['value_callback'])) {
$method = 'get_default_' . $table . '_' . $name;
$item['#default_value'] = self::$method($fid, $options);
}
elseif (isset($field['value'])) {
$item['#default_value'] = $field['value'];
}
elseif (empty($field['extra']['multiple']) && !isset($field['empty_option'])) {
$options = array_keys($options);
$item['#default_value'] = $options[1];
}
elseif (!empty($this->data[$ent][$c][$table][$n]) && empty($this->data[$ent][$c][$table][$n][$name]) && $item['#default_value'] == 0) {
$item['#default_value'] = NULL;
}
if (!empty($field['extra']['multiple'])) {
$item['#default_value'] = (array) $item['#default_value'];
if (isset($this->settings[$fid]) && !is_array($this->settings[$fid]) && isset($this->data[$ent][$c][$table][$n][$name])) {
$item['#default_value'] += (array) $this->data[$ent][$c][$table][$n][$name];
}
}
}
else {
$item += array(
'#type' => 'checkbox',
'#return_value' => 'create_civicrm_webform_element',
'#default_value' => !empty($this->settings[$fid]),
);
}
// Add help
$topic = $table . '_' . $name;
if (method_exists('wf_crm_admin_help', $topic)) {
$this
->help($item, $topic);
}
elseif (!empty($field['has_help'])) {
$this
->help($item, $name);
}
elseif (wf_crm_aval($field, 'data_type') == 'ContactReference') {
$this
->help($item, 'contact_reference');
}
elseif (!empty($field['expose_list']) && !empty($field['extra']['multiple'])) {
$this
->help($item, 'multiselect_options', t('Multiple Select Options'));
}
return $item;
}