You are here

webform_classes.module in Webform Classes 7.2

Same filename and directory in other branches
  1. 6 webform_classes.module
  2. 7 webform_classes.module

The webform_classes module.

File

webform_classes.module
View source
<?php

/**
 * @file
 * The webform_classes module.
 */

/**
 * Standard hook_node_load.
 */
function webform_classes_node_load($nodes, $types) {
  foreach ($nodes as $key => $node) {
    if (isset($node->type) && $node->type == 'webform') {
      $results = db_query("SELECT cid, class FROM {webform_component} WHERE nid= :nid", array(
        ':nid' => (int) $node->nid,
      ))
        ->fetchAll();
      $classlist = array();
      foreach ($results as $item) {
        $classlist[$item->cid] = $item->class;
      }
      $node->webform_classes = $classlist;
    }
  }
}

/**
 * Standard use of hook_form_alter.
 *
 * @see webform_classes_add_classes()
 */
function webform_classes_form_alter(&$form, &$form_state, $form_id) {
  if (substr($form['#id'], 0, 20) == 'webform-client-form-') {
    $classes_nid = substr($form['#id'], 20);
    $webform_classes = $form['#node']->webform_classes;

    // Webform localization support.
    if (module_exists('webform_localization') && $form['#node']->tnid) {

      // Get localization config for the source node, if it exists.
      if ($localization_config = webform_localization_get_config($form['#node']->tnid)) {

        // Use the source node's webform classes if single webform is enabled.
        if ($localization_config['single_webform']) {
          $source_node = node_load($localization_config['single_webform']);
          $classes_nid = $source_node->nid;
          $webform_classes = $source_node->webform_classes;
        }
      }
    }
    webform_classes_add_classes($form, $classes_nid, $webform_classes);
  }
}

/**
 * Standard use of hook_form_alter_webform_component_edit_form_alter.
 */
function webform_classes_form_webform_component_edit_form_alter(&$form, $component) {
  $nid = $form['nid']['#value'];
  $cid = $form['cid']['#value'];
  if ($cid == NULL) {
    $cid = 0;
  }

  // Fetch the class(es) of requested component.
  $class = db_query("SELECT class FROM {webform_component} WHERE nid = :nid AND cid = :cid", array(
    ':nid' => (int) $nid,
    ':cid' => (int) $cid,
  ))
    ->fetchField();
  $form['classes'] = array(
    '#type' => 'fieldset',
    '#title' => t('Classes'),
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#weight' => 5,
    'classes' => array(
      '#type' => 'textfield',
      '#title' => t('Class'),
      '#default_value' => $class,
      '#description' => t('Specific class or classes (seperated by space) for this element of the form.'),
      '#size' => 26,
      '#maxlength' => 255,
      '#weight' => 1,
    ),
  );
}

/**
 * Called standard component update hook.
 */
function webform_classes_webform_component_update($component) {

  // Set the default value for class
  $default_class = isset($component['class']) ? $component['class'] : '';

  // Get the node id.
  $nid = $component['nid'];

  // Get the component id.
  $cid = $component['cid'];
  $class = isset($component['classes']['classes']) ? $component['classes']['classes'] : $default_class;
  $result = db_update('webform_component')
    ->fields(array(
    'class' => $class,
  ))
    ->condition('nid', (int) $nid, '=')
    ->condition('cid', (int) $cid, '=')
    ->execute();
}

/**
 * Respond to a Webform component being inserted into the database.
 *
 * @see webform_classes_webform_component_update()
 */
function webform_classes_webform_component_insert($component) {
  webform_classes_webform_component_update($component);
}

/**
 * This is what alters the rendering.
 *
 * @see webform_classes_add_a_class()
 */
function webform_classes_add_classes(&$form_element, $nid, $classes) {
  webform_classes_add_a_class($form_element, $nid, $classes);
  $components = element_children($form_element);
  foreach ($components as $key => $component_id) {
    $child_element =& $form_element[$component_id];
    webform_classes_add_classes($child_element, $nid, $classes);
  }
}

/**
 * Called by webform_classes_add_classes within the foreach loop.
 */
function webform_classes_add_a_class(&$form_element, $nid, $classes) {

  // Initialize the value of component id.
  $cid = 0;
  if (isset($form_element['#webform_component']['cid'])) {
    $cid = $form_element['#webform_component']['cid'];
  }
  if (isset($form_element['#attributes']['class'])) {
    $current_class = $form_element['#attributes']['class'];
  }
  else {
    $current_class = NULL;
  }
  if ($cid != 0) {
    if ($current_class != NULL) {
      $form_element['#attributes']['class'] = array_merge($form_element['#attributes']['class'], array(
        $classes[$cid],
      ));
    }
    else {
      $form_element['#attributes']['class'] = array(
        $classes[$cid],
      );
    }
  }
}

Functions

Namesort descending Description
webform_classes_add_a_class Called by webform_classes_add_classes within the foreach loop.
webform_classes_add_classes This is what alters the rendering.
webform_classes_form_alter Standard use of hook_form_alter.
webform_classes_form_webform_component_edit_form_alter Standard use of hook_form_alter_webform_component_edit_form_alter.
webform_classes_node_load Standard hook_node_load.
webform_classes_webform_component_insert Respond to a Webform component being inserted into the database.
webform_classes_webform_component_update Called standard component update hook.