function esign_signature_form_base in E-Sign 7
Callback for the signature form base.
@todo: Elimnate extraneous JS code.
2 calls to esign_signature_form_base()
- esign_field_widget_form in ./
esign.module - Implements hook_field_widget_form().
- esign_form_process in ./
esign.module - Element processing from hook_element_info.
File
- ./
esign.module, line 271 - Defines all hooks and functions to manage the e-sign field.
Code
function esign_signature_form_base($langcode, $items, $delta, $element, $settings) {
$field_name = $element['#field_name'];
if (isset($element['#field_name'])) {
$field_name = $element['#field_name'] . '[' . $langcode . '][' . $delta . ']';
}
else {
$field_name = $element['#name'];
}
$title = t('Signature');
if (isset($element['#title']) && $element['#title']) {
$title = check_plain($element['#title']);
}
// Load the signature pad JS from CDN.
drupal_add_js('https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js');
drupal_add_js(drupal_get_path('module', 'esign') . '/js/esign.js');
$description = '';
if ($element['#description']) {
$description = t('<div class="description">!description</div>', array(
'!description' => str_replace("\r\n", "<br />", $element['#description']),
));
}
$markup = '<div class="esign_panel esign_panel_' . $delta . '" data-signature="' . urlencode(isset($items[$delta]['esignature']) ? $items[$delta]['esignature'] : '') . '">' . $description . '<canvas></canvas></div>';
$element['esignature_panel'] = array(
'#prefix' => '<div class="esign_container" data-settings=\'' . json_encode($settings) . '\'>',
'#type' => 'item',
'#title' => $title,
'#markup' => $markup,
);
$element['esignature'] = array(
'#type' => 'hidden',
'#attributes' => array(
'class' => array(
'signature-storage',
),
),
'#default_value' => isset($items[$delta]['esignature']) ? $items[$delta]['esignature'] : '',
);
if ($settings['hide_name'] == FALSE) {
$element['signer_name'] = array(
'#type' => 'textfield',
'#title' => t('Signer Name'),
'#default_value' => isset($items[$delta]['signer_name']) ? $items[$delta]['signer_name'] : '',
'#required' => $element['#required'],
'#size' => 60,
'#attributes' => array(
'maxlength' => 255,
),
);
}
if ($settings['hide_title'] == FALSE) {
$element['signer_title'] = array(
'#type' => 'textfield',
'#title' => t('Signer Title'),
'#default_value' => isset($items[$delta]['signer_title']) ? $items[$delta]['signer_title'] : '',
'#required' => $element['#required'],
'#size' => 60,
'#attributes' => array(
'maxlength' => 255,
),
);
}
$element['created'] = array(
'#type' => 'hidden',
'#default_value' => isset($items[$delta]['created']) ? $items[$delta]['created'] : strtotime('now'),
'#suffix' => '</div>',
'#attributes' => array(
'class' => array(
'signature-created',
),
),
);
if (isset($element['#value']) && is_array($element['#value'])) {
foreach ($element['#value'] as $field_name => $default_value) {
$element[$field_name]['#default_value'] = $default_value;
}
}
return $element;
}