You are here

function organigrams_form_overview_organigrams_items in Organigrams 7

Generates a form overview of all organigrams items.

Parameters

array $form: The form being used to edit the node.

array $form_state: The form state array.

object $organigram: An organigrams entity.

Return value

mixed Renderable array containing a form.

1 string reference to 'organigrams_form_overview_organigrams_items'
organigrams_menu in ./organigrams.module
Implements hook_menu().

File

./organigrams_item.admin.inc, line 40
Defines the user forms and pages for managing organigrams items.

Code

function organigrams_form_overview_organigrams_items($form, &$form_state, $organigram) {
  $form['#organigram'] = $organigram;
  $form['#tree'] = TRUE;

  // Retrieve the organigram tree.
  $tree = organigrams_get_tree($organigram->oid);

  // Get tree count.
  $tree_item_count = count($tree);

  // Add items container.
  $form['items'] = array();

  // Iterate through the tree.
  foreach ($tree as $tree_item) {

    // Retrieve element by reference.
    $element =& $form['items'][$tree_item->iid];

    // Initialize element.
    $element = array(
      '#organigrams_item' => $tree_item,
    );
    $element['view'] = array(
      '#markup' => filter_xss_admin($tree_item->name),
    );
    $element['iid'] = array(
      '#type' => 'hidden',
      '#value' => $tree_item->iid,
    );
    $element['parent'] = array(
      '#type' => 'hidden',
      '#default_value' => $tree_item->parent,
    );
    $element['depth'] = array(
      '#type' => 'hidden',
      '#default_value' => $tree_item->depth,
    );
    $element['weight'] = array(
      '#type' => 'weight',
      '#delta' => $tree_item_count,
      '#title_display' => 'invisible',
      '#title' => t('Weight for added organigram item'),
      '#default_value' => $tree_item->weight,
    );

    // Only add the operations which the user has access to.
    if (organigrams_user_access('edit', $organigram)) {
      $element['edit'] = array(
        '#type' => 'link',
        '#title' => t('edit'),
        '#href' => "admin/structure/organigrams/{$organigram->machine_name}/item/{$tree_item->iid}",
      );
    }
    else {
      $element['edit'] = array();
    }

    // Only add the operations which the user has access to.
    if (organigrams_user_access('delete', $organigram)) {
      $element['delete'] = array(
        '#type' => 'link',
        '#title' => t('delete'),
        '#href' => "admin/structure/organigrams/{$organigram->machine_name}/item/{$tree_item->iid}/delete",
      );
    }
    else {
      $element['delete'] = array();
    }
  }
  $form['#empty_text'] = t('No organigram items available. <a href="@link">Add organigram item</a>.', array(
    '@link' => url("admin/structure/organigrams/{$organigram->machine_name}/add"),
  ));

  // Add the supported actions for this form.
  $form['actions'] = array(
    '#type' => 'actions',
    '#tree' => TRUE,
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}