You are here

public function MerciLineItemInlineEntityFormController::entityForm in MERCI (Manage Equipment Reservations, Checkout and Inventory) 7.3

Overrides EntityInlineEntityFormController::entityForm().

Overrides EntityInlineEntityFormController::entityForm

File

merci_line_item_ief/includes/merci_line_item.inline_entity_form.inc, line 82
Defines the inline entity form controller for Commerce Line Items.

Class

MerciLineItemInlineEntityFormController
@file Defines the inline entity form controller for Commerce Line Items.

Code

public function entityForm($entity_form, &$form_state) {
  drupal_add_css(drupal_get_path('module', 'merci_line_item') . '/merci_line_item.css');
  $line_item = $entity_form['#entity'];
  $extra_fields = field_info_extra_fields('merci_line_item', $line_item->type, 'form');
  $entity_form['line_item_details'] = array(
    '#type' => 'fieldset',
    '#title' => t('Line item details'),
    '#attributes' => array(
      'class' => array(
        'ief-line_item-details',
        'ief-entity-fieldset',
      ),
    ),
  );
  $entity_form['quantity'] = array(
    '#type' => 'textfield',
    '#datatype' => 'integer',
    '#title' => t('Quantity'),
    '#description' => t('The quantity of line items.'),
    '#default_value' => (int) $line_item->quantity,
    '#size' => 4,
    '#maxlength' => max(4, strlen($line_item->quantity)),
    '#required' => TRUE,
    '#weight' => $extra_fields['quantity']['weight'],
    '#fieldset' => 'line_item_details',
  );
  field_attach_form('merci_line_item', $line_item, $entity_form, $form_state);
  $line_item_wrapper = entity_metadata_wrapper('merci_line_item', $line_item);
  unset($entity_form[MERCI_RESOURCE_REFERENCE]);
  unset($entity_form[MERCI_RESOURCE_DISPLAY]);
  $parents = $entity_form[MERCI_CHECKOUT_STATUS]['und']['#field_parents'];
  $head = array_shift($parents);
  $parents = implode('][', $parents);
  $field_path = $head . '[' . $parents . '][' . MERCI_CHECKOUT_STATUS . '][und]';
  $entity_form[MERCI_RETURN_DATE]['#states'] = array(
    'visible' => array(
      ':input[name="' . $field_path . '"]' => array(
        'value' => 'returned',
      ),
    ),
  );

  // Add all fields to the main fieldset.
  foreach (field_info_instances('merci_line_item', $line_item->type) as $a => $instance) {
    $entity_form[$instance['field_name']]['#fieldset'] = 'line_item_details';

    // TODO Move elsewhere.
    if ($instance['field_name'] == MERCI_RETURNED_ACCESSORIES or $instance['field_name'] == MERCI_CHECKED_OUT_ACCESSORIES) {
      try {
        $product_wrapper = entity_metadata_wrapper('merci_line_item', $line_item)->{MERCI_RESOURCE_DISPLAY};
        $terms = array();
        foreach ($product_wrapper->merci_resource_accessories
          ->value() as $index => $term) {
          $terms[$term->tid] = $term;
        }
        if (count($terms) == 1 and reset($terms)->name == 'None') {
          unset($entity_form[$instance['field_name']]);
        }
        else {
          $entity_form[$instance['field_name']]['und']['#options'] = array_intersect_key($entity_form[$instance['field_name']]['und']['#options'], $terms);
        }
      } catch (EntityMetadataWrapperException $exc) {
        $entity_form[$instance['field_name']]['und']['#options'] = array();
        $entity_form[$instance['field_name']]['und'] = array();
      }
    }
  }

  // Add a css class to widget form elements for all fields of type mytype.
  //
  return $entity_form;
}