You are here

system.inc in SignatureField 6

System module integration.

File

modules/system.inc
View source
<?php

/**
 * @file
 * System module integration.
 */

/**
 * Implements hook_theme()
 */
function signaturefield_theme() {
  $items = array();
  $items['signaturefield'] = array(
    'arguments' => array(
      'element' => NULL,
    ),
    'template' => 'templates/signaturefield',
  );
  $items['signaturefield_display'] = array(
    'arguments' => array(
      'element' => NULL,
    ),
  );
  drupal_alter('signaturefield_theme', $items);
  return $items;
}

/**
 * Implements hook_form_alter()
 */
function signaturefield_form_alter(&$form, &$form_state, $form_id) {
  drupal_alter('signaturefield_form_alter', &$form, &$form_state, $form_id);
}

/**
 * Implements hook_elements()
 */
function signaturefield_elements() {
  $type = array();
  $type['signaturefield'] = array(
    '#input' => TRUE,
    '#after_build' => array(
      'signaturefield_after_build',
    ),
    '#height' => 55,
    '#width' => 200,
    '#color' => '#000',
    '#lineTop' => 35,
  );
  return $type;
}
function form_type_signaturefield_value($element, $edit = FALSE) {
  if (!empty($edit)) {

    // If previous value exists delete original image
    if (!empty($element['#default_value'])) {
      $values = unserialize($element['#default_value']);
      @unlink($values['filepath']);
    }
    return signaturefield_json_to_image($element, $edit);
  }
  return $edit;
}

/**
 *
 */
function signaturefield_after_build($element, $form_state) {
  $libpath = libraries_get_path('signature-pad');
  $modpath = drupal_get_path('module', 'signaturefield');
  drupal_set_html_head("<!--[if gte IE 7]><script type='text/javascript' src='{$libpath}/assets/excanvas-r71.min.js'></script><![endif]-->\n  <!--[if IE 6]><script type='text/javascript' src='{$libpath}/assets/excanvas-r3.min.js'></script><![endif]-->");
  drupal_add_js("{$libpath}/assets/jquery.signaturepad.min.js");
  drupal_add_js("{$libpath}/assets/json2.min.js");
  drupal_add_js("{$modpath}/signaturefield.js");
  drupal_add_js(array(
    'signaturefield' => array(
      'settings' => array(
        'drawOnly' => TRUE,
        'validateFields' => FALSE,
        'penColour' => $element['#color'],
        'lineTop' => $element['#height'] * 0.85,
      ),
    ),
  ), 'setting');
  drupal_add_css("{$modpath}/signaturefield.css");
  return $element;
}
function signaturefield_preprocess_signaturefield(&$vars) {
  $values = unserialize($vars['element']['#default_value']);
  $vars['element']['#default_value'] = $values['json'];
  drupal_add_js(array(
    'signaturefield' => array(
      'sig' => $values['json'],
    ),
  ), 'setting');
}
function theme_signaturefield_display($element) {
  $values = unserialize(is_array($element) && !empty($element['#value']) ? $element['#value'] : $element);
  return theme('image', $values['filepath']);
}