You are here

function navbar_navbar in Navbar 7

Implements hook_navbar().

File

./navbar.navbar.inc, line 11
Navbar hooks implemented by the Navbar module.

Code

function navbar_navbar() {
  global $user;
  $items = array();

  // Provides a simple link to escape the administration area.
  $items['home'] = array(
    '#type' => 'navbar_item',
    'tab' => array(
      '#type' => 'link',
      '#title' => t('Back to site'),
      '#href' => '<front>',
      '#options' => array(
        'attributes' => array(
          'title' => t('Return to site content'),
          'class' => array(
            'navbar-icon',
            'navbar-icon-escape-admin',
            'element-hidden',
          ),
          'data-navbar-escape-admin' => NULL,
        ),
      ),
    ),
    '#weight' => -20,
  );

  // Retrieve the administration menu from the database.
  $tree = navbar_get_menu_tree();

  // If no menu links exist because the user does not have access to any, then
  // don't render a menu tab.
  if (!empty($tree)) {

    // Add attributes to the links before rendering.
    navbar_menu_navigation_links($tree);
    $menu = array(
      '#heading' => t('Administration menu'),
      'navbar_administration' => array(
        '#type' => 'container',
        '#attributes' => array(
          'class' => array(
            'navbar-menu-administration',
          ),
        ),
        'administration_menu' => menu_tree_output($tree),
      ),
    );

    // This flow is commented out until we figure out how to return a JSONP
    // response in Drupal 7.
    //
    // To conserve bandwidth, we only include the top-level links in the HTML.
    // The subtrees are included in a JSONP script, cached by the browser. Here we
    // add that JSONP script. We add it as an external script, because it's a
    // Drupal path, not a file available via a stream wrapper.
    // @see navbar_subtrees_jsonp()
    // $menu['navbar_administration']['#attached']['js'][url('navbar/subtrees/' . _navbar_get_subtree_hash())] = array('type' => 'external');
    // The administration element has a link that is themed to correspond to
    // a navbar tray. The tray contains the full administrative menu of the site.
    $items['administration'] = array(
      '#type' => 'navbar_item',
      'tab' => array(
        '#type' => 'link',
        '#title' => t('Manage'),
        '#href' => 'admin',
        '#options' => array(
          'attributes' => array(
            'title' => t('Admin menu'),
            'class' => array(
              'navbar-icon',
              'navbar-icon-menu',
            ),
          ),
        ),
      ),
      'tray' => $menu,
      '#weight' => -15,
    );
  }

  // Add logout & user account links or login link.
  if (module_exists('user')) {
    if ($user->uid) {
      $links = array(
        'account' => array(
          'title' => t('View profile'),
          'href' => 'user',
          'html' => TRUE,
          'attributes' => array(
            'title' => t('User account'),
          ),
        ),
        'logout' => array(
          'title' => t('Log out'),
          'href' => 'user/logout',
        ),
      );
    }
    else {
      $links = array(
        'login' => array(
          'title' => t('Log in'),
          'href' => 'user',
        ),
      );
    }
    $items['user'] = array(
      '#type' => 'navbar_item',
      'tab' => array(
        '#type' => 'link',
        '#title' => format_username($user),
        '#href' => 'user',
        '#options' => array(
          'attributes' => array(
            'title' => t('My account'),
            'class' => array(
              'navbar-icon',
              'navbar-icon-user',
            ),
          ),
        ),
      ),
      'tray' => array(
        '#heading' => t('User account actions'),
        'user_links' => array(
          '#theme' => 'links__navbar_user',
          '#links' => $links,
          '#attributes' => array(
            'class' => array(
              'navbar-menu',
              'navbar-menu-user',
            ),
          ),
        ),
      ),
      '#weight' => 100,
    );
  }

  // Add a shortcuts tab.
  if (module_exists('shortcut')) {
    $links = shortcut_renderable_links();
    $shortcut_set = shortcut_current_displayed_set();
    $configure_link = NULL;
    if (shortcut_set_edit_access($shortcut_set)) {
      $configure_link = array(
        '#type' => 'link',
        '#title' => t('Edit shortcuts'),
        '#href' => 'admin/config/user-interface/shortcut/' . $shortcut_set->set_name,
        '#options' => array(
          'attributes' => array(
            'class' => array(
              'edit-shortcuts',
            ),
          ),
        ),
      );
    }
    if (!empty($links) || !empty($configure_link)) {
      $items['shortcuts'] = array(
        '#type' => 'navbar_item',
        'tab' => array(
          '#type' => 'link',
          '#title' => t('Shortcuts'),
          '#href' => 'admin/config/user-interface/shortcut',
          '#options' => array(
            'attributes' => array(
              'title' => t('Shortcuts'),
              'class' => array(
                'navbar-icon',
                'navbar-icon-shortcut',
              ),
            ),
          ),
        ),
        'tray' => array(
          '#heading' => t('User-defined shortcuts'),
          '#wrapper_attributes' => array(
            'class' => array(
              'navbar-tray-shortcuts',
              'navbar-menu-shortcuts',
            ),
          ),
          'shortcuts' => $links,
          'configure' => $configure_link,
        ),
        '#weight' => -10,
      );
    }
  }
  return $items;
}