You are here

function _ajax_form_entity_build_entity_forms in Ajax form entity 7.x

Same name and namespace in other branches
  1. 7 ajax_form_entity.module \_ajax_form_entity_build_entity_forms()

Helper function to build forms arguments depending on the entity.

Return value

array() with form arguments

2 calls to _ajax_form_entity_build_entity_forms()
ajax_form_entity_callback in ./ajax_form_entity.module
AJAX submit handler for entity message add form. Returns ajax commands to update the relevant message comments.
ajax_form_entity_entity_edit_callback in ./ajax_form_entity.callback.inc
Ajax callback for edition (ajax edit link).

File

./ajax_form_entity.module, line 260
Ajaxify entity forms.

Code

function _ajax_form_entity_build_entity_forms($entity_type, $form = array(), $form_state = array(), $entity = NULL) {
  $new_form_state = array();

  // TODO : make it more general : everything is the same except the form ID for drupal_get_form.
  switch ($entity_type) {

    // Node form.
    case 'node':

      // Case of creation and case of edition.
      if (!$entity) {
        global $user;
        $entity = (object) array(
          'uid' => $user->uid,
          'name' => isset($user->name) ? $user->name : '',
          'type' => $form['type']['#value'],
          'language' => LANGUAGE_NONE,
        );
        $new_form_state['input'] = array();
        $new_form_state['build_info']['args'][] = $entity;
        return drupal_build_form($form['#form_id'], $new_form_state);
      }
      else {
        $entity_id = key($entity);
        return drupal_get_form($entity[$entity_id]->type . '_node_form', $entity[$entity_id]);
      }
      break;

    // User form.
    case 'user':
      if (!$entity) {
        $entity = (object) array();
        $new_form_state['input'] = array();
        $new_form_state['build_info']['args'][] = $entity;
        return drupal_build_form($form['#form_id'], $new_form_state);
      }
      else {
        $entity_id = key($entity);
        return drupal_get_form('user_profile_form', $entity[$entity_id]);
      }
      break;

    // User form.
    case 'taxonomy':
      if (!$entity) {
        $entity = (object) array();
        $new_form_state['input'] = array();
        $new_form_state['build_info']['args'][] = $entity;
        return drupal_build_form($form['#form_id'], $new_form_state);
      }
      else {
        $entity_id = key($entity);
        return drupal_get_form('taxonomy_form_term', $entity[$entity_id]);
      }
      break;

    // Comment form.
    case 'comment':
      if (!$entity) {
        $entity = (object) array(
          'nid' => $form['#node']->nid,
        );
        $new_form_state['input'] = array();
        $new_form_state['build_info']['args'][] = $entity;
        return drupal_build_form($form['#form_id'], $new_form_state);
      }
      else {
        $entity_id = key($entity);
        return drupal_get_form($entity[$entity_id]->node_type . '_form', $entity[$entity_id]);
      }
      break;

    // Entityforms module.
    case 'entityform':

      // Case of creation and case of edition.
      if (!$entity) {
        $entity = entityform_create($values = array());
        $entity->type = $form_state['build_info']['args'][0]->type;
        $new_form_state['input'] = array();
        $new_form_state['build_info']['args'][] = $entity;
        return drupal_build_form($form['#form_id'], $new_form_state);
      }
      else {
        $entity_id = key($entity);
        return drupal_get_form('entityform_edit_form', $entity[$entity_id]);
      }
      break;
    case 'field_collection_item':

      // Create new default field collection entity.
      if (!$entity) {
        $entity = new FieldCollectionItemEntity();
        $host_entity_type = isset($form_state['values']['host_entity_type']) ? $form_state['values']['host_entity_type'] : $form_state['build_info']['args']['host_entity_type'];
        $host_entity_id = isset($form_state['values']['host_entity_id']) ? $form_state['values']['host_entity_id'] : $form_state['build_info']['args']['host_entity_id'];
        $ids[] = $host_entity_id;
        $host_entity = entity_load($host_entity_type, $ids);
        $entity = entity_create('field_collection_item', array(
          'field_name' => $form_state['build_info']['args'][0]->field_name,
        ));
        $entity
          ->setHostEntity($host_entity_type, $host_entity[$host_entity_id], LANGUAGE_NONE, FALSE);
        $new_form_state['input'] = array();
        $new_form_state['build_info']['args'][] = $entity;
        $new_form_state['build_info']['args']['host_entity_id'] = $host_entity_id;
        $new_form_state['build_info']['args']['host_entity_type'] = $host_entity_type;
        return drupal_build_form($form['#form_id'], $new_form_state);
      }
      else {
        $entity_id = key($entity);
        return drupal_get_form('field_collection_item_form', $entity[$entity_id]);
      }
      break;
    default:
      break;
  }
  return $new_form_state;
}