webform_classes.module in Webform Classes 7.2
Same filename and directory in other branches
The webform_classes module.
File
webform_classes.moduleView 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
Name![]() |
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. |