function webform_email_edit_form in Webform 6.3
Same name and namespace in other branches
- 7.4 includes/webform.emails.inc \webform_email_edit_form()
- 7.3 includes/webform.emails.inc \webform_email_edit_form()
Form for configuring an e-mail setting and template.
1 string reference to 'webform_email_edit_form'
- webform_menu in ./
webform.module - Implements hook_menu().
File
- includes/
webform.emails.inc, line 168 - Provides interface and database handling for e-mail settings of a webform.
Code
function webform_email_edit_form($form_state, $node, $email = array()) {
module_load_include('inc', 'webform', 'includes/webform.components');
$form['#tree'] = TRUE;
$form['node'] = array(
'#type' => 'value',
'#value' => $node,
);
$form['eid'] = array(
'#type' => 'value',
'#value' => isset($email['eid']) ? $email['eid'] : NULL,
);
// All these fields work essentially the same, with a radio button set,
// a textfield for custom values, and a select list for a component.
foreach (array(
'email',
'subject',
'from_address',
'from_name',
) as $field) {
switch ($field) {
case 'email':
$default_value = NULL;
$title = t('E-mail to address');
$description = t('Form submissions will be e-mailed to this address. Any email, select, or hidden form element may be selected as the recipient address. Multiple e-mail addresses may be separated by commas.');
break;
case 'subject':
$default_value = _webform_filter_values(webform_variable_get('webform_default_subject'), $node);
$title = t('E-mail subject');
$description = t('Any textfield, select, or hidden form element may be selected as the subject for e-mails.');
break;
case 'from_address':
$default_value = _webform_filter_values(webform_variable_get('webform_default_from_address'), $node);
$title = t('E-mail from address');
$description = t('Any email, select, or hidden form element may be selected as the sender\'s e-mail address.');
break;
case 'from_name':
$default_value = _webform_filter_values(webform_variable_get('webform_default_from_name'), $node);
$title = t('E-mail from name');
$description = t('Any textfield, select, or hidden form element may be selected as the sender\'s name for e-mails.');
break;
}
$form[$field . '_option'] = array(
'#title' => $title,
'#type' => 'radios',
'#default_value' => is_numeric($email[$field]) ? 'component' : (empty($default_value) || $email[$field] != 'default' && isset($email[$field]) ? 'custom' : 'default'),
'#description' => $description,
);
if (!empty($default_value)) {
$form[$field . '_option']['#options']['default'] = $default_value;
}
$form[$field . '_option']['#options']['custom'] = 'custom';
$form[$field . '_option']['#options']['component'] = 'component';
$form[$field . '_custom'] = array(
'#type' => 'textfield',
'#size' => 40,
'#default_value' => !is_numeric($email[$field]) && $email[$field] != 'default' ? $email[$field] : NULL,
'#maxlength' => $field == 'email' ? 500 : 255,
);
$options = webform_component_list($node, $field == 'from_address' || $field == 'email' ? 'email_address' : 'email_name', FALSE);
$form[$field . '_component'] = array(
'#type' => 'select',
'#default_value' => is_numeric($email[$field]) ? $email[$field] : NULL,
'#options' => empty($options) ? array(
'' => t('No available components'),
) : $options,
'#disabled' => empty($options) ? TRUE : FALSE,
'#weight' => 6,
);
}
// Do not show the "E-mail from name" if using the short e-mail format.
if (variable_get('webform_email_address_format', 'long') == 'short') {
$form['from_name_option']['#access'] = FALSE;
$form['from_name_custom']['#access'] = FALSE;
$form['from_name_component']['#access'] = FALSE;
}
// Add the template fieldset.
$form['template'] = array(
'#type' => 'fieldset',
'#title' => t('E-mail template'),
'#collapsible' => TRUE,
'#collapsed' => !empty($email['cid']) && empty($email['template']),
'#description' => t('An e-mail template can customize the display of e-mails.'),
'#weight' => 15,
'#tree' => FALSE,
'#attributes' => array(
'id' => 'webform-template-fieldset',
),
);
$form['template']['template_option'] = array(
'#type' => 'select',
'#options' => array(
'default' => t('Default template'),
'custom' => t('Custom template'),
),
'#default_value' => $email['template'] == 'default' ? 'default' : 'custom',
);
$default_template = theme(array(
'webform_mail_' . $node->nid,
'webform_mail',
'webform_mail_message',
), $node, NULL, $email);
$template = $email['template'] == 'default' ? $default_template : $email['template'];
$form['template']['template'] = array(
'#type' => 'textarea',
'#rows' => max(10, min(20, count(explode("\n", $template)))),
'#default_value' => $template,
'#wysiwyg' => webform_email_html_capable() ? NULL : FALSE,
);
$form['template']['html'] = array(
'#type' => 'checkbox',
'#title' => t('Send e-mail as HTML'),
'#default_value' => $email['html'],
'#access' => webform_email_html_capable() && !variable_get('webform_format_override', 0),
);
$form['template']['attachments'] = array(
'#type' => 'checkbox',
'#title' => t('Include files as attachments'),
'#default_value' => $email['attachments'],
'#access' => webform_email_html_capable(),
);
$form['template']['tokens'] = array(
'#value' => theme('webform_token_help', 'all'),
);
$form['template']['components'] = array(
'#type' => 'select',
'#title' => t('Included e-mail values'),
'#options' => webform_component_list($node, 'email', TRUE),
'#default_value' => array_diff(array_keys($node->webform['components']), $email['excluded_components']),
'#multiple' => TRUE,
'#size' => 10,
'#description' => t('The selected components will be included in the %email_values token. Individual values may still be printed if explicitly specified as a %email[key] in the template.'),
'#process' => array(
'webform_component_select',
),
);
// TODO: Allow easy re-use of existing templates.
$form['templates']['#tree'] = TRUE;
$form['templates']['default'] = array(
'#type' => 'textarea',
'#value' => $default_template,
'#resizable' => FALSE,
'#weight' => 19,
'#wysiwyg' => FALSE,
);
// Add the submit button.
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save e-mail settings'),
'#weight' => 20,
);
$form['#validate'] = array(
'webform_email_address_validate',
'webform_email_edit_form_validate',
);
return $form;
}