You are here

function commerce_extra_quantity_form_alter in Commerce Extra 7

Implements hook_form_alter(). Adds additional theme wrappers for add to cart's quantity textfields.

File

modules/quantity/commerce_extra_quantity.module, line 52
Contains Commerce Quantity Plus-Minus module's functionality.

Code

function commerce_extra_quantity_form_alter(&$form, &$form_state, $form_id) {

  // Load quantity cardinality setting
  $quantity_cardinality = variable_get('commerce_extra_quantity_cardinality', 1);

  // Add to cart form from field api
  $str = 'commerce_cart_add_to_cart_form_';
  if (drupal_substr($form_id, 0, drupal_strlen($str)) == $str) {
    if (isset($form['quantity']) && $form['quantity']['#type'] == 'textfield') {
      $form['#attached']['js'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.js';
      $form['#attached']['css'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.css';
      $form['quantity']['#theme_wrappers'] = array(
        'quantity_plusminus_wrapper',
        'form_element',
      );
      $form['quantity']['#amount'] = $quantity_cardinality;
      $form['quantity']['#limit_down'] = 1;
      $form['#validate'][] = 'commerce_extra_quantity_validate_cardinality';
    }
  }

  // Quantity fields from views
  $str = 'views_form_commerce_cart_form_';
  if (drupal_substr($form_id, 0, drupal_strlen($str)) == $str) {
    if (isset($form['edit_quantity'])) {
      $form['#attached']['js'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.js';
      $form['#attached']['css'][] = drupal_get_path('module', 'commerce_extra_quantity') . '/commerce_extra_quantity.css';
      foreach ($form['edit_quantity'] as $key => $value) {
        if (is_numeric($key) && drupal_substr($key, 0, 1) != '#' && is_array($value)) {
          $form['edit_quantity'][$key]['#theme_wrappers'] = array(
            'quantity_plusminus_wrapper',
            'form_element',
          );
          $form['edit_quantity'][$key]['#limit_down'] = variable_get('commerce_extra_quantity_allow_zero_cart', FALSE) ? 0 : 1;
        }
      }
      $form['#validate'][] = 'commerce_extra_quantity_validate_cardinality';
    }
  }
}