aDriv4 - MANAGER
Edit File: webform_classes.module
<?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]); } } }