You are here

function om_maximenu_content_render in OM Maximenu 7

Same name and namespace in other branches
  1. 8 inc/om_maximenu.render.inc \om_maximenu_content_render()
  2. 6 inc/om_maximenu.render.inc \om_maximenu_content_render()

OM Maximenu content rendering engine

8 calls to om_maximenu_content_render()
om-maximenu-accordion-content.tpl.php in tpl/om-maximenu-accordion-content.tpl.php
om_maximenu_accordion_content.tpl.php Default theme implementation of om maximenu contents with accordion blocks
om-maximenu-modal-content.tpl.php in tpl/om-maximenu-modal-content.tpl.php
om_maximenu_modal_content.tpl.php Default theme implementation of om maximenu contents with modal blocks
om-maximenu-roundabout-content.tpl.php in tpl/om-maximenu-roundabout-content.tpl.php
om_maximenu_roundabout_content.tpl.php Default theme implementation of om maximenu contents with roundabout blocks
om-maximenu-submenu-content--bubble.tpl.php in tpl/om-maximenu-submenu-content--bubble.tpl.php
om_maximenu_submenu_content.tpl.php Default theme implementation of om maximenu contents with submenu blocks
om-maximenu-submenu-content--no-style.tpl.php in tpl/om-maximenu-submenu-content--no-style.tpl.php
om_maximenu_submenu_content.tpl.php Default theme implementation of om maximenu contents with submenu blocks

... See full list

File

inc/om_maximenu.render.inc, line 254
OM Maximenu Render

Code

function om_maximenu_content_render($content = array()) {
  global $_om_maximenu_block_classes;
  global $_om_maximenu_visible_blocks;
  $visible_blocks = $_om_maximenu_visible_blocks;

  //dsm($visible_blocks);
  $block_classes = !empty($_om_maximenu_block_classes) ? $_om_maximenu_block_classes : array();
  $count = 0;
  uasort($content, 'om_sort_by_weight');
  $total = count($content);
  $out = '';
  foreach ($content as $key => $prop) {
    $count++;
    $module = $prop['module'];
    $delta = $prop['delta'];
    $visibility = isset($prop['visibility']) && $prop['visibility'] == 1 ? in_array($module . '__' . $delta, $visible_blocks) ? 1 : 0 : 1;
    if ($visibility) {
      $title = stripslashes(trim($prop['title']));

      // allows markups
      $path = $prop['title_path'] == '<front>' ? '' : $prop['title_path'];
      $options = array();
      $options['query'] = isset($prop['title_path_query']) ? om_path_query($prop['title_path_query']) : '';
      $options['fragment'] = isset($prop['title_path_fragment']) ? $prop['title_path_fragment'] : '';
      $block_title = !empty($prop['title_path']) ? '<a href="' . url($path, $options) . '" title="' . $title . '">' . $title . '</a>' : $title;

      // previous
      $block = module_invoke($module, 'block_view', $delta);

      /*
      // new - there's still a bug here which doubles the markups .block container

      // http://drupal.org/node/1422706 - by catch
      // Attached patch takes the output, of the view hook, puts it through block rendering pipeline
      // (unfortunately there are only private functions for this), then pulls the individual block back out,
      // this allows those hooks to operate as normal.

      $blocks = array();
      $index = $module . '_' . $delta;
      $blocks[$index] = (object) array(
        'delta' => $delta,
        'module' => $module,
        'title' => '<none>',
        // There is no real region, put a false one in instead.
        'region' => 'om_maximenu',
      );
      $blocks = _block_render_blocks($blocks);
      $build = _block_get_renderable_array($blocks);
      if (isset($build[$index])) {
        $block = array('content' => $build[$index]);

        $om_classes = ($count == 1) ? ' first': '';
        if ($count == $total) $om_classes .= ' last';
        $om_classes .=  isset($block_classes[$module][$delta]) ? ' ' . $block_classes[$module][$delta]: '';

        $out .= theme('om_maximenu_content', array('block' => $block, 'module' => $module, 'delta' => $delta, 'om_classes' => $om_classes, 'title' => $title, 'block_title' => $block_title));
      }
      */
      $om_classes = $count == 1 ? ' first' : '';
      if ($count == $total) {
        $om_classes .= ' last';
      }
      $om_classes .= isset($block_classes[$module][$delta]) ? ' ' . $block_classes[$module][$delta] : '';
      $out .= theme('om_maximenu_content', array(
        'block' => $block,
        'module' => $module,
        'delta' => $delta,
        'om_classes' => $om_classes,
        'title' => $title,
        'block_title' => $block_title,
      ));
    }
  }
  return $out;
}