You are here

function commerce_price_table_field_widget_form in Commerce Price Table 7

Implements hook_field_widget_form().

File

./commerce_price_table.module, line 64

Code

function commerce_price_table_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {

  // Use the default currency if the setting is not present.
  if (empty($instance['widget']['settings']['currency_code']) || $instance['widget']['settings']['currency_code'] == 'default') {
    $default_currency_code = NULL;
  }
  else {
    $default_currency_code = $instance['widget']['settings']['currency_code'];
  }

  // If a price has already been set for this instance prepare default values.
  if (isset($items[$delta]['amount'])) {
    $currency = commerce_currency_load($items[$delta]['currency_code']);

    // Round the default value.
    $default_amount = commerce_currency_amount_to_decimal($items[$delta]['amount'], $currency['code']);

    // Run it through number_format() to add the decimal places in if necessary.
    if (strpos($default_amount, '.') === FALSE || strpos($default_amount, '.') > strlen($default_amount) - $currency['decimals']) {
      $default_amount = number_format($default_amount, $currency['decimals'], '.', '');
    }
    $default_currency_code = $items[$delta]['currency_code'];
  }
  else {
    $default_amount = NULL;
  }

  // Load the default currency for this instance.
  $default_currency = commerce_currency_load($default_currency_code);
  $element['#attached']['css'][] = drupal_get_path('module', 'commerce_price_table') . '/theme/commerce_price_table.css';
  if ($instance['widget']['type'] == 'commerce_price_table_multiple') {
    $element['amount'] = array(
      '#type' => 'textfield',
      '#title' => t('Price'),
      '#default_value' => $default_amount,
      '#size' => 10,
      '#field_suffix' => $default_currency['code'],
    );
    $element['currency_code'] = array(
      '#type' => 'value',
      '#default_value' => $default_currency['code'],
    );
    $element['min_qty'] = array(
      '#type' => 'textfield',
      '#title' => t('Minimum quantity'),
      '#default_value' => isset($items[$delta]['min_qty']) ? $items[$delta]['min_qty'] : 0,
      '#size' => 10,
    );
    $element['max_qty'] = array(
      '#type' => 'textfield',
      '#title' => t('Maximum quantity'),
      '#description' => t('Use -1 for no upper limit.'),
      '#default_value' => isset($items[$delta]['max_qty']) ? $items[$delta]['max_qty'] : 0,
      '#size' => 10,
    );
  }
  $element['data'] = array(
    '#type' => 'value',
    '#default_value' => !empty($items[$delta]['data']) ? $items[$delta]['data'] : array(
      'components' => array(),
    ),
  );
  $element['#element_validate'][] = 'commerce_price_table_field_widget_validate';
  return $element;
}