You are here

function eck__entity__menu in Entity Construction Kit (ECK) 7.2

Same name and namespace in other branches
  1. 7.3 eck.entity.inc \eck__entity__menu()
  2. 7 eck.entity.inc \eck__entity__menu()

Entity related menu items.

1 call to eck__entity__menu()
eck__bundle__menu in ./eck.bundle.inc
This function creates the menu items relevant to bundle administration.

File

./eck.entity.inc, line 10
All the menus, pages, and functionality related to administering entities.

Code

function eck__entity__menu($entity_type, $bundle) {
  $path = eck__entity_type__path();
  $menu = array();

  // DELETE Bundles.
  $menu["{$path}/{$entity_type->name}/{$bundle->name}/delete"] = array(
    'title' => "Delete",
    'page callback' => "drupal_get_form",
    'page arguments' => array(
      'eck__bundle__delete_form',
      3,
      4,
    ),
    'access callback' => 'eck__multiple_access_check',
    'access arguments' => array(
      array(
        'eck administer bundles',
        'eck delete bundles',
        "eck administer {$entity_type->name} bundles",
        "eck delete {$entity_type->name} bundles",
      ),
    ),
    'file' => 'eck.bundle.inc',
    'type' => MENU_LOCAL_TASK,
  );

  // EDIT Bundles.
  $menu["{$path}/{$entity_type->name}/{$bundle->name}/edit"] = array(
    'title' => 'Edit',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'eck__bundle__edit_form',
      $entity_type->name,
      $bundle->name,
    ),
    'access callback' => 'eck__multiple_access_check',
    'access arguments' => array(
      array(
        'eck administer bundles',
        'eck edit bundles',
        "eck administer {$entity_type->name} bundles",
        "eck edit {$entity_type->name} bundles",
      ),
    ),
    'file' => 'eck.bundle.inc',
    'type' => MENU_LOCAL_TASK,
  );
  $admin_info = get_bundle_admin_info($entity_type->name, $bundle->name);

  // LIST Entities.
  $menu[$admin_info['path']] = array(
    'title' => "{$bundle->label}",
    'description' => "View all entites of type {$entity_type->label} with bundle {$bundle->label}",
    'page callback' => "eck__entity__list",
    'page arguments' => array(
      $entity_type->name,
      $bundle->name,
    ),
    'access callback' => 'eck__multiple_access_check',
    'access arguments' => array(
      array(
        'eck administer entities',
        "eck list entities",
        "eck administer {$entity_type->name} {$bundle->name} entities",
        "eck list {$entity_type->name} {$bundle->name} entities",
      ),
    ),
    'weight' => 0,
    'file' => 'eck.entity.inc',
  );
  $menu[$admin_info['path'] . "/list"] = array(
    'title' => "Entity List",
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => 100,
  );
  $crud_info = get_bundle_crud_info($entity_type->name, $bundle->name);
  foreach ($crud_info as $action => $info) {
    $action_label = ucfirst($action);
    $args = array();
    if (array_key_exists('entity_id', $info)) {
      $args[] = $info['entity_id'];
    }
    $args = array_merge(array(
      $entity_type->name,
      $bundle->name,
    ), $args);
    $access_args = array_merge(array(
      $action,
    ), $args);
    $menu[$info['path']] = array(
      'title' => "{$action_label} {$bundle->label}",
      'description' => "{$action_label} an entity of type {$entity_type->label} with bundle {$bundle->label}",
      'page callback' => "eck__entity__{$action}",
      'page arguments' => $args,
      'load arguments' => array(
        $entity_type->name,
      ),
      'access callback' => 'eck__entity_menu_access',
      'access arguments' => $access_args,
      'file' => 'eck.entity.inc',
    );
    if ($action == 'view') {
      $menu[$info['path'] . "/view"] = array(
        'title' => "View",
        'type' => MENU_DEFAULT_LOCAL_TASK,
        'weight' => 0,
      );
      $weight = 1;
      foreach ($crud_info as $a => $i) {
        if ($a != 'view' && $a != 'add' && $a != "list") {
          $al = ucfirst($a);
          $view_path = $info['path'] . "/{$a}";
          $access_args = array_merge(array(
            $a,
          ), $args);
          $menu[$view_path] = array(
            'title' => "{$al}",
            'description' => "{$action_label} an entity of type {$entity_type->label} with bundle {$bundle->label}",
            'page callback' => "eck__entity__{$a}",
            'page arguments' => $args,
            'access callback' => 'eck__entity_menu_access',
            'access arguments' => $access_args,
            'file' => 'eck.entity.inc',
            'type' => MENU_LOCAL_TASK,
            'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
            'weight' => $weight,
          );
          $weight++;
        }
      }
    }
  }
  return $menu;
}