You are here

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;
}