function webform_civicrm_configure_form_builder in Webform CiviCRM Integration 6.2
Same name and namespace in other branches
- 7.2 webform_civicrm_admin.inc \webform_civicrm_configure_form_builder()
Form to configure CiviCRM options for a Webform Called indirectly from hook_menu() for D7-D6 compatibility
1 call to webform_civicrm_configure_form_builder()
- webform_civicrm_configure_form in ./
webform_civicrm.module - Menu callback to pass the right number of params for this version of Drupal
File
- ./
webform_civicrm_admin.inc, line 16
Code
function webform_civicrm_configure_form_builder($form, &$form_state, $node) {
$form = array();
$form_state['storage']['nid'] = $node->nid;
// Display confirmtion message before deleting fields
if (!empty($form_state['storage']['msg'])) {
$form['#prefix'] = $form_state['storage']['msg'];
$form['cancel'] = $form['disable'] = $form['delete'] = array(
'#type' => 'submit',
);
$form['delete']['#value'] = t('Remove Fields and Save Settings');
$form['disable']['#value'] = t('Leave Fields and Save Settings');
$form['cancel']['#value'] = t('Cancel (go back)');
return $form;
}
webform_civicrm_add_js('webform_civicrm_admin.js');
drupal_add_css(drupal_get_path('module', 'webform_civicrm') . '/webform_civicrm_admin.css');
civicrm_initialize();
$config = CRM_Core_Config::singleton();
$fields = webform_civicrm_get_fields();
$sets = webform_civicrm_get_fields('sets');
// Initialize form on first view
if (empty($form_state['values'])) {
// For an existing civi-webform, load settings
if (isset($node->webform_civicrm)) {
$settings = $node->webform_civicrm;
}
else {
$settings = array(
'data' => array(
'contact' => array(
1 => array(
'contact' => array(
1 => array(
'contact_type' => 'individual',
'contact_sub_type' => array(),
),
),
'activity_target' => 1,
),
),
),
'confirm_subscription' => 1,
'create_fieldsets' => 1,
'new_contact_source' => check_plain($node->title),
'contact_matching' => 1,
);
}
}
else {
$settings = webform_civicrm_aval($form_state['storage'], 'vals', $form_state['values']);
webform_civicrm_process_form_settings($settings);
unset($form_state['storage']['vals']);
}
// Merge in existing fields
$existing = array_keys(webform_civicrm_enabled_fields($node));
$settings += array_fill_keys($existing, 'create_civicrm_webform_element');
$tokens = '<strong>' . t('Contact 1 Tokens:') . '</strong> [' . implode('], [', webform_civicrm_get_fields('tokens')) . '].';
list($contact_types, $sub_types) = webform_civicrm_get_contact_types();
$data = $settings['data'];
$contacts = count($data['contact']);
$js = 'var webform_civicrm_relationship_data = ' . json_encode(webform_civicrm_get_relationship_types()) . ';';
webform_civicrm_add_js($js, 'inline');
// Sort fields by set
foreach ($fields as $fid => $field) {
list($group) = explode('_', $fid, 2);
$sets[$group]['fields'][$fid] = $field;
}
$form['nid'] = array(
'#type' => 'checkbox',
'#title' => t('Enable CiviCRM Processing'),
'#default_value' => !empty($settings['nid']),
'#return_value' => $node->nid,
'#description' => '<a id="web-civi-help" class="module-link module-link-help" href="/admin/help/webform_civicrm" target="_blank">' . t('Webform CiviCRM Help') . '</a>
<ul><li>' . t('Contacts will be created or updated when users submit this webform.') . '</li></ul>',
);
$form['number_of_contacts'] = array(
'#type' => 'select',
'#title' => t('Number of Contacts'),
'#default_value' => $contacts,
'#options' => drupal_map_assoc(range(1, 30)),
);
$form['change_form_settings'] = array(
'#type' => 'button',
'#value' => t('Change Form Settings'),
'#prefix' => '<div id="no-js-button-wrapper" class="messages warning">',
'#suffix' => '<div>' . t('You have Javascript disabled. You will need to click this button after changing any option to see the result.') . '</div></div>',
);
$form['webform_civicrm'] = array(
'#type' => 'vertical_tabs',
);
// Contact settings
foreach ($data['contact'] as $n => $c) {
$form['contact_' . $n] = array(
'#type' => 'fieldset',
'#title' => t('Contact !num', array(
'!num' => $n,
)),
'#description' => $n > 1 ? NULL : t('Primary contact. Usually assumed to be the person filling out the form.'),
'#group' => 'webform_civicrm',
);
$form['contact_' . $n][$n . '_contact_type'] = array(
'#type' => 'select',
'#title' => t('Contact Type'),
'#default_value' => $c['contact'][1]['contact_type'],
'#options' => $contact_types,
);
webform_civicrm_ajax_form_item($form, 'contact_' . $n, $n . '_contact_type', 'contact_subtype_wrapper');
// Contact sub-type form item gets some special treatment
$fid = 'civicrm_' . $n . '_contact_1_contact_contact_sub_type';
$form['contact_' . $n]['contact_subtype_wrapper'][$fid] = webform_civicrm_configure_form_item($fid, $fields['contact_contact_sub_type'], $settings, $contact_types[$c['contact'][1]['contact_type']]);
$form['contact_' . $n]['contact_subtype_wrapper'][$fid]['#title'] .= ' ' . $contact_types[$c['contact'][1]['contact_type']];
webform_civicrm_ajax_form_item($form, 'contact_' . $n . ':contact_subtype_wrapper', $fid, 'contact_custom_wrapper');
if (empty($sub_types[$c['contact'][1]['contact_type']])) {
$form['contact_' . $n]['contact_subtype_wrapper']['civicrm_' . $n . '_contact_1_contact_contact_sub_type']['#prefix'] = '<div class="hidden">';
$form['contact_' . $n]['contact_subtype_wrapper']['civicrm_' . $n . '_contact_1_contact_contact_sub_type']['#suffix'] = '</div>';
array_shift($form['contact_' . $n]['contact_subtype_wrapper'][$fid]['#options']);
}
foreach ($sets as $sid => $set) {
$hide = FALSE;
if ($set['entity_type'] != 'contact') {
continue;
}
if ($sid == 'relationship') {
if (!($set['max_instances'] = $n - 1)) {
continue;
}
}
if (!empty($set['contact_type'])) {
if ($set['contact_type'] != $c['contact'][1]['contact_type']) {
$hide = TRUE;
}
}
if (!empty($set['sub_types'])) {
if (!array_intersect($c['contact'][1]['contact_sub_type'], $set['sub_types'])) {
$hide = TRUE;
}
$pos =& $form['contact_' . $n]['contact_subtype_wrapper']['contact_custom_wrapper'];
$path = 'contact_' . $n . ':contact_subtype_wrapper:contact_custom_wrapper';
}
elseif (!empty($set['contact_type']) || $sid == 'contact') {
$pos =& $form['contact_' . $n]['contact_subtype_wrapper'];
$path = 'contact_' . $n . ':contact_subtype_wrapper';
}
else {
$pos =& $form['contact_' . $n];
$path = 'contact_' . $n;
}
if (!empty($set['max_instances'])) {
if (!isset($c['number_of_' . $sid])) {
$c['number_of_' . $sid] = 0;
}
$set['label'] = $sid == 'relationship' ? t('Relationship') : $set['label'];
$selector = array(
'#type' => 'select',
'#default_value' => $c['number_of_' . $sid],
);
if ($set['max_instances'] > 1) {
$selector['#options'] = range(0, $set['max_instances']);
$selector['#title'] = t('Number of %type Fields', array(
'%type' => $set['label'],
));
}
else {
$selector['#options'] = array(
t('No'),
t('Yes'),
);
$selector['#title'] = t('Enable %type Fields', array(
'%type' => $set['label'],
));
}
if ($hide) {
$selector['#prefix'] = '<div class="hidden">';
$selector['#suffix'] = '</div>';
}
$pos['contact_' . $n . '_number_of_' . $sid] = $selector;
webform_civicrm_ajax_form_item($form, $path, 'contact_' . $n . '_number_of_' . $sid, $n . $sid . '_wrapper');
}
else {
$c['number_of_' . $sid] = 1;
}
for ($i = 1; $i <= $c['number_of_' . $sid] && !$hide; ++$i) {
$fsid = 'civicrm_' . $n . $sid . $i . '_fieldset';
$fieldset = array(
'#type' => 'fieldset',
'#title' => $set['label'],
'#attributes' => array(
'id' => $fsid,
'class' => webform_civicrm_fapi_class('web-civi-checkbox-set'),
),
'js_select' => webform_civicrm_js_select($fsid),
);
if (isset($set['max_instances']) && $set['max_instances'] > 1 || $sid == 'relationship') {
$fieldset['#title'] .= ' ' . $i;
if (in_array($sid, array(
'email',
'address',
'phone',
'website',
)) && $i == 1) {
$fieldset['#title'] .= ' ' . t('(primary)');
}
}
foreach ($set['fields'] as $fid => $field) {
if ($fid == 'contact_contact_sub_type' || $fid == 'address_master_id' && $contacts == 1 || isset($field['contact_type']) && $field['contact_type'] != $c['contact'][1]['contact_type']) {
continue;
}
$fid = 'civicrm_' . $n . '_contact_' . $i . '_' . $fid;
$fieldset[$fid] = webform_civicrm_configure_form_item($fid, $field, $settings);
}
if (isset($set['max_instances'])) {
$pos[$n . $sid . '_wrapper'][$n . $sid . $i . '_fieldset'] = $fieldset;
}
else {
$pos[$n . $sid . $i . '_fieldset'] = $fieldset;
}
}
}
}
// Configure messages
$form['prefix'] = array(
'#type' => 'fieldset',
'#title' => t('Introduction Text'),
'#description' => t('This text will appear at the top of the form. You may configure separate messages for known contacts (logged in users, or users following a hashed link from civimail) and unknown (anonymous) users.'),
'#group' => 'webform_civicrm',
);
$form['prefix']['prefix_known'] = array(
'#type' => 'textarea',
'#title' => t('Introduction text for known contacts'),
'#default_value' => webform_civicrm_aval($settings, 'prefix_known'),
'#description' => $tokens,
);
$form['prefix']['prefix_unknown'] = array(
'#type' => 'textarea',
'#title' => t('Introduction text for unknown contacts'),
'#default_value' => webform_civicrm_aval($settings, 'prefix_unknown'),
'#description' => t('No tokens available for unknown contacts.'),
);
$form['st_message'] = array(
'#type' => 'fieldset',
'#title' => t('"Not You?" Message'),
'#description' => t('Prompt for users who are logged in as, or following a hashed link for, someone else.'),
'#group' => 'webform_civicrm',
);
$form['st_message']['toggle_message'] = array(
'#type' => 'checkbox',
'#title' => t('Display message to known contacts?'),
'#default_value' => !empty($settings['message']),
);
$form['st_message']['message'] = array(
'#type' => 'textfield',
'#title' => t('Text (displayed as a status message)'),
'#default_value' => webform_civicrm_aval($settings, 'message', t("You are viewing this form as [display name]. Please {click here if that's not you}.")),
'#size' => 100,
'#maxlength' => 255,
'#description' => t('Enclose your "not you" link text in curly brackets {like this}.') . '<p>' . $tokens . '</p>',
);
// Case and activity settings
$form['act'] = array(
'#type' => 'fieldset',
'#title' => t('Create Activity'),
'#description' => t('Create an activity for contacts when this form is submitted?'),
'#group' => 'webform_civicrm',
);
if (in_array('CiviCase', $config->enableComponents, TRUE) && ($case_types = webform_civicrm_get_options('case_type'))) {
$form['act']['case_type_id'] = array(
'#type' => 'select',
'#title' => t('CiviCase Type'),
'#description' => t('Is this activity part of a case?'),
'#options' => array(
t('- no case -'),
) + $case_types,
);
webform_civicrm_ajax_form_item($form, 'act', 'case_type_id', 'case');
}
$param = NULL;
if (!empty($data['case'][1]['case'][1]['case_type_id'])) {
$case_type = $form['act']['case_type_id']['#default_value'] = $data['case'][1]['case'][1]['case_type_id'];
$param = '7';
$form['act']['case']['case_fieldset'] = array(
'#type' => 'fieldset',
'#title' => t('Case Settings'),
);
$form['act']['case']['case_fieldset']['case_status_id'] = array(
'#type' => 'select',
'#title' => t('Case Status'),
'#description' => t('If a "@type" case with this status already exists for this contact, the activity will be added to that case. Otherwise a new case will be opened with this status.', array(
'@type' => $case_types[$data['case'][1]['case'][1]['case_type_id']],
)),
'#options' => webform_civicrm_get_options('case_status'),
'#default_value' => webform_civicrm_aval($data, 'case:1:case:1:status_id'),
);
$form['act']['case']['case_fieldset']['case_medium_id'] = array(
'#type' => 'select',
'#title' => t('Medium'),
'#description' => t('Medium for activities added to cases from this webform.'),
'#options' => webform_civicrm_get_options('encounter_medium'),
'#default_value' => webform_civicrm_aval($data, 'case:1:case:1:medium_id'),
);
$form['act']['case']['case_fieldset']['case_subject'] = array(
'#type' => 'textfield',
'#title' => t('Case Subject'),
'#description' => t('Optional subject for "open case" activity for new cases.'),
'#default_value' => webform_civicrm_aval($data, 'case:1:case:1:subject', check_plain($node->title)),
);
$form['act']['case']['case_fieldset']['case_creator_id'] = array(
'#type' => 'textfield',
'#size' => 5,
'#required' => TRUE,
'#title' => t('Case Manager ID'),
'#description' => t('Contact ID of "case manager" for newly created cases.'),
'#default_value' => webform_civicrm_aval($data, 'case:1:case:1:creator_id', webform_civicrm_user_cid()),
);
foreach ($sets as $sid => $set) {
$sid .= '_fieldset';
if ($set['entity_type'] == 'case') {
if (!empty($set['sub_types']) && !in_array($case_type, $set['sub_types'])) {
continue;
}
$form['act']['case'][$sid] = array(
'#type' => 'fieldset',
'#title' => $set['label'],
'#attributes' => array(
'id' => $sid,
'class' => webform_civicrm_fapi_class('web-civi-checkbox-set'),
),
'js_select' => webform_civicrm_js_select($sid),
);
foreach ($set['fields'] as $fid => $field) {
$fid = 'civicrm_1_case_1_' . $fid;
$form['act']['case'][$sid][$fid] = webform_civicrm_configure_form_item($fid, $field, $settings);
}
}
}
}
$act_types = webform_civicrm_get_options('activity_type', $param);
$form['act']['case']['activity_type_id'] = array(
'#type' => 'select',
'#title' => t('Activity Type'),
'#options' => array(
t('- no activity -'),
) + $act_types,
);
webform_civicrm_ajax_form_item($form, 'act:case', 'activity_type_id', 'activity_fields');
if (isset($data['activity'][1]['activity'][1]['activity_type_id']) && isset($act_types[$data['activity'][1]['activity'][1]['activity_type_id']])) {
$form['act']['case']['activity_type_id']['#default_value'] = $settings['activity_type_id'] = $data['activity'][1]['activity'][1]['activity_type_id'];
$form['act']['case']['activity_fields']['activity_targets'] = array(
'#title' => t('Activity Participants'),
'#type' => 'checkboxes',
'#options' => array(),
'#default_value' => array(),
'#required' => TRUE,
);
$form['act']['case']['activity_fields']['activity_assignee_group'] = array(
'#title' => t('Choose Assignee From'),
'#type' => 'select',
'#options' => array(
t('- Webform Contacts -'),
) + webform_civicrm_get_options('group'),
'#default_value' => webform_civicrm_aval($data, 'activity:1:assignee_group'),
);
webform_civicrm_ajax_form_item($form, 'act:case:activity_fields', 'activity_assignee_group', 'assignee');
// Activity assignee
$fid = 'civicrm_1_activity_1_activity_assignee_contact_id';
$form['act']['case']['activity_fields']['assignee'][$fid] = webform_civicrm_configure_form_item($fid, $fields['activity_assignee_contact_id'], $settings);
if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'activity_assignee_notification')) {
$form['act']['case']['activity_fields']['assignee'][$fid]['#description'] = t('A copy of this activity will be emailed to the assignee.');
}
$form['act']['case']['activity_fields']['assignee']['#suffix'] .= '<div class="clear-block"></div>';
$form['act']['case']['activity_fields']['existing_activity_status'] = array(
'#type' => 'select',
'#title' => t('Update Existing Activity'),
'#description' => t('If a "@type" activity with this status already exists for contact 1, it will be updated. Otherwise a new one will be created.', array(
'@type' => $act_types[$settings['activity_type_id']],
)),
'#options' => webform_civicrm_get_options('activity_status'),
'#default_value' => webform_civicrm_aval($data, 'activity:1:existing_activity_status', array()),
'#multiple' => TRUE,
);
$form['act']['case']['activity_fields']['activity_subject'] = array(
'#type' => 'textfield',
'#title' => t('Default Activity Subject'),
'#maxlength' => 255,
'#required' => TRUE,
'#description' => t('You can override this default by allowing users to enter a subject (enable "Activity Subject" field below)'),
'#default_value' => webform_civicrm_aval($data, 'activity:1:activity:1:subject', check_plain($node->title)),
);
$form['act']['case']['activity_fields']['activity_details'] = array(
'#type' => 'checkboxes',
'#options' => array(
'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'),
),
'#default_value' => webform_civicrm_aval($data, 'activity:1:details', array(
'view_link',
), TRUE),
);
foreach ($data['contact'] as $n => $c) {
$form['act']['case']['activity_fields']['activity_targets']['#options'][$n] = t('Contact !num', array(
'!num' => $n,
));
if (!isset($data['activity']) || !empty($c['activity_target'])) {
$form['act']['case']['activity_fields']['activity_targets']['#default_value'][] = $n;
}
}
foreach ($sets as $sid => $set) {
$sid .= '_fieldset';
if ($set['entity_type'] == 'activity') {
if (!empty($set['sub_types']) && !in_array($settings['activity_type_id'], $set['sub_types'])) {
continue;
}
$form['act']['case']['activity_fields'][$sid] = array(
'#type' => 'fieldset',
'#title' => $set['label'],
'#attributes' => array(
'id' => $sid,
'class' => webform_civicrm_fapi_class('web-civi-checkbox-set'),
),
'js_select' => webform_civicrm_js_select($sid),
);
foreach ($set['fields'] as $fid => $field) {
if ($fid != 'activity_assignee_contact_id') {
$fid = 'civicrm_1_activity_1_' . $fid;
$form['act']['case']['activity_fields'][$sid][$fid] = webform_civicrm_configure_form_item($fid, $field, $settings);
}
}
}
}
}
// Event participant settings
if (in_array('CiviEvent', $config->enableComponents, TRUE)) {
$form['event'] = array(
'#type' => 'fieldset',
'#title' => t('Event Registration'),
'#group' => 'webform_civicrm',
);
$reg_type = webform_civicrm_aval($data, 'participant_reg_type');
$form['event']['participant_reg_type'] = array(
'#type' => 'select',
'#title' => t('Registration Method'),
'#default_value' => $reg_type,
'#options' => array(
t('- no event registration -'),
'all' => t('Register all contacts for the same event(s)'),
'separate' => t('Register each contact separately'),
),
);
$form['event']['event_type'] = array(
'#type' => 'select',
'#title' => t('Show Events of Type'),
'#options' => array(
'any' => t('- Any Type -'),
) + webform_civicrm_get_options('event_type'),
'#default_value' => webform_civicrm_aval($data, 'reg_options:event_type', 'any'),
'#prefix' => '<div id="event-reg-options-wrapper"><div class="web-civi-checkbox-set">',
'#parents' => array(
'reg_options',
'event_type',
),
'#tree' => TRUE,
);
$form['event']['show_past_events'] = array(
'#type' => 'checkbox',
'#title' => t('Show Past Events'),
'#default_value' => (bool) webform_civicrm_aval($data, 'reg_options:show_past_events'),
'#suffix' => '</div>',
'#parents' => array(
'reg_options',
'show_past_events',
),
'#tree' => TRUE,
);
$form['event']['reg_options'] = array(
'#prefix' => '<div class="clear-block"></div>',
'#suffix' => '</div>',
'#type' => 'fieldset',
'#title' => t('Registration Options'),
'#collapsible' => TRUE,
'#tree' => TRUE,
);
$form['event']['reg_options']['show_remaining'] = array(
'#type' => 'select',
'#title' => t('Show Remaining Space in Events'),
'#default_value' => webform_civicrm_aval($data, 'reg_options:show_remaining', 0),
'#description' => t('Display a message at the top of the form for each event with a registration limit or past end date.'),
'#options' => array(
t('Never'),
'always' => t('Always'),
'0_full' => t('When full - 0 spaces left'),
),
);
foreach (array(
5,
10,
20,
50,
100,
200,
500,
1000,
) as $num) {
$form['event']['reg_options']['show_remaining']['#options'][$num] = t('When under !num spaces left', array(
'!num' => $num,
));
}
$form['event']['reg_options']['validate'] = array(
'#type' => 'checkbox',
'#title' => t('Prevent Registration for Past/Full Events'),
'#default_value' => (bool) webform_civicrm_aval($data, 'reg_options:validate'),
'#description' => t('Will not allow the form to be submitted if user registers for an event that is ended or full.'),
);
$form['event']['reg_options']['block_form'] = array(
'#type' => 'checkbox',
'#title' => t('Block Form Access when Event(s) are Full/Ended'),
'#default_value' => (bool) webform_civicrm_aval($data, 'reg_options:block_form'),
'#description' => t('Hide webform if all the events for the form are full or ended.'),
);
webform_civicrm_ajax_form_item($form, 'event', 'participant_reg_type', 'participants');
webform_civicrm_ajax_form_item($form, 'event', 'event_type', 'participants');
webform_civicrm_ajax_form_item($form, 'event', 'show_past_events', 'participants');
for ($n = 1; $n <= $contacts; ++$n) {
$class = !$reg_type || $reg_type == 'all' && $n > 1 ? 'class="hidden"' : '';
$form['event']['participants'][$n] = array(
'#type' => 'fieldset',
'#title' => $reg_type == 'all' && $n == 1 ? t('Registration') : t('Contact !num', array(
'!num' => $n,
)),
'#prefix' => "<div id=\"participant-fieldset-{$n}\" {$class}>",
'#suffix' => '</div>',
);
if (!($num = webform_civicrm_aval($data, "participant:{$n}:number_of_participant")) || $n > 1 && $reg_type == 'all') {
$num = 0;
}
$form['event']['participants'][$n]['participant_' . $n . '_number_of_participant'] = array(
'#type' => 'select',
'#title' => $reg_type == 'all' ? t('Number of Events') : t('Number of Events for Contact !num', array(
'!num' => $n,
)),
'#default_value' => $num,
'#options' => range(0, $sets['participant']['max_instances']),
);
webform_civicrm_ajax_form_item($form, "event:participants:{$n}", 'participant_' . $n . '_number_of_participant', 'div');
$particpant_extensions = array(
1 => 'role_id',
2 => 'event_id',
3 => 'event_type',
);
for ($e = 1; $e <= $num; ++$e) {
$fs = "participant_{$n}_event_{$e}_fieldset";
$form['event']['participants'][$n]['div'][$fs] = array(
'#type' => 'fieldset',
'#title' => t('Event !num', array(
'!num' => $e,
)),
'#attributes' => array(
'id' => $fs,
),
);
foreach ($sets as $sid => $set) {
if ($set['entity_type'] == 'participant') {
$sid = 'civicrm_' . $n . '_participant_' . $e . '_' . $sid . '_fieldset';
$class = 'web-civi-checkbox-set';
if (!empty($set['sub_types'])) {
$role_id = webform_civicrm_aval($data, "participant:{$n}:particpant:{$e}:role_id", '');
$event_id = webform_civicrm_aval($data, "participant:{$n}:particpant:{$e}:event_id", '');
$event_type = webform_civicrm_aval($data, 'reg_options:event_type', '');
if ($event_id && $event_id !== 'create_civicrm_webform_element') {
list($event_id, $event_type) = explode('-', $event_id);
}
$ext = $particpant_extensions[$set['extension_of']];
if (!in_array(${$ext}, $set['sub_types'])) {
$class .= ' hidden';
}
$class .= ' extends-condition ' . str_replace('_', '', $ext) . '-' . implode('-', $set['sub_types']);
}
$form['event']['participants'][$n]['div'][$fs][$sid] = array(
'#type' => 'fieldset',
'#title' => $set['label'],
'#attributes' => array(
'id' => $sid,
'class' => webform_civicrm_fapi_class($class),
),
'js_select' => webform_civicrm_js_select($sid),
);
foreach ($set['fields'] as $fid => $field) {
$id = 'civicrm_' . $n . '_participant_' . $e . '_' . $fid;
$item = webform_civicrm_configure_form_item($id, $field, $settings);
if ($fid == 'participant_event_id' || $fid == 'participant_role_id') {
$item['#attributes']['onchange'] = "web_civi_participant_conditional('#{$fs}');";
$item['#attributes']['class'] = webform_civicrm_fapi_class($fid);
${$fid} = webform_civicrm_aval($item, '#default_value');
}
$form['event']['participants'][$n]['div'][$fs][$sid][$id] = $item;
}
}
}
}
}
}
// Configure additional options
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Additional Options'),
'#group' => 'webform_civicrm',
'#description' => '<p>' . t('To have this form auto-filled for anonymous users, send the following link from CiviMail:') . '<br />' . url('node/' . $node->nid, array(
'absolute' => TRUE,
)) . '?cid1={contact.contact_id}&{contact.checksum}</p>',
);
$form['options']['contact_matching'] = array(
'#type' => 'checkbox',
'#title' => t('Autofill Contact 1 with Current User'),
'#default_value' => $settings['contact_matching'],
'#description' => '<span id="civi-contact-match-on">' . t('Enable this option if users will fill out this form on behalf of themselves. Disable it to allow a logged-in user to enter someone else as contact 1. (This is the same behavior as when visiting the form with cid1=0 in the url)') . '</span> <span id="civi-contact-match-off">' . t('This option is disabled when contact 1 is not an individual.') . '</span>',
);
$form['options']['create_fieldsets'] = array(
'#type' => 'checkbox',
'#title' => t('Create Fieldsets'),
'#default_value' => (bool) $settings['create_fieldsets'],
'#description' => t('Create a fieldset around each contact. Allows the contact clone feature to work. (Optional - all CiviCRM fields will be processed regardless of how they are arranged).'),
);
$form['options']['confirm_subscription'] = array(
'#type' => 'checkbox',
'#title' => t('Confirm Subscriptions'),
'#default_value' => (bool) $settings['confirm_subscription'],
'#description' => t('Recommended. Send a confirmation email before adding contacts to publicly subscribable mailing list groups.') . '<br />' . t('Your public mailing lists:') . ' <em>',
);
if ($ml = webform_civicrm_get_options('mailing_lists')) {
if (count($ml) > 4) {
$ml = array_slice($ml, 0, 4);
$ml[] = t('etc.');
}
$form['options']['confirm_subscription']['#description'] .= implode(', ', $ml) . '</em>';
}
else {
$form['options']['confirm_subscription']['#description'] .= t('none') . '</em>';
}
$form['options']['block_unknown_users'] = array(
'#type' => 'checkbox',
'#title' => t('Block Unknown Users'),
'#default_value' => !empty($settings['block_unknown_users']),
'#description' => t('Only allow users to see this form if they are logged in or following a personalized link from CiviMail.'),
);
$form['options']['new_contact_source'] = array(
'#type' => 'textfield',
'#title' => t('New Contact Source'),
'#maxlength' => 255,
'#size' => 30,
'#default_value' => $settings['new_contact_source'],
'#description' => t('Optional "source" label for any new contact created by this webform.'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save Settings'),
);
if (module_exists('vertical_tabs')) {
$form['#pre_render'][] = 'vertical_tabs_form_pre_render';
}
return $form;
}