You are here

function navbar_pre_render in Navbar 7

Builds the Navbar as a structured array ready for drupal_render().

Since building the navbar takes some time, it is done just prior to rendering to ensure that it is built only if it will be displayed.

Parameters

array $element: A renderable array.

Return value

A renderable array.

See also

navbar_page_build().

1 string reference to 'navbar_pre_render'
navbar_element_info in ./navbar.module
Implements hook_element_info().

File

./navbar.module, line 264
Administration navbar for quick access to top level administration items.

Code

function navbar_pre_render($element) {

  // Define the breakpoints to switch from vertical to horizontal
  // navbar presentation.
  $breakpoints = array(
    'narrow' => 'only screen and (min-width: 16.5em)',
    'standard' => 'only screen and (min-width: 38.125em)',
    'wide' => 'only screen and (min-width: 50em)',
  );

  // Allow for altering of the breakpoints.
  drupal_alter('navbar_breakpoints', $breakpoints);
  if (!empty($breakpoints)) {
    $element['#attached']['js'][] = array(
      'data' => array(
        'navbar' => array(
          'breakpoints' => $breakpoints,
        ),
      ),
      'type' => 'setting',
    );
  }

  // Get navbar items from all modules that implement hook_navbar().
  $items = module_invoke_all('navbar');

  // Allow for altering of hook_navbar().
  drupal_alter('navbar', $items);

  // Sort the children.
  uasort($items, 'element_sort');

  // Merge in the original navbar values.
  $element = array_merge($element, $items);

  // Render the children.
  $element['#children'] = drupal_render_children($element);
  return $element;
}