1 layout.theme.inc layout_preprocess_layout(&$variables)

Prepares variables for layout templates.

This uses [module_name]_preprocess_layout() instead of template_preprocess_layout() so that it can run last. Layout module is given a weight of 60 in hook_install(), so it should run last compared to other modules.

File

core/modules/layout/layout.theme.inc, line 284
Theme functions for the Layout module.

Code

function layout_preprocess_layout(&$variables) {
  $settings = $variables['layout']->settings;

  // Check if any Title Component blocks have been placed. These will override
  // the variables here.
  $block_exists = _layout_page_component_blocks_exist($variables);

  $variables += array(
    'action_links' => NULL,
    'tabs' => NULL,
    'messages' => NULL,
    'title' => NULL,
  );

  if (!$variables['admin']) {
    if (!isset($variables['title']) && !$block_exists['title']) {
      if ($settings['title_display'] === LAYOUT_TITLE_NONE) {
        $variables['title'] = NULL;
      }
      else {
        $variables['title'] = backdrop_get_title();
      }
    }

    // Generate messages last in order to capture as many as possible for the
    // current page.
    if (!isset($variables['messages']) && !$block_exists['messages']) {
      $variables['messages'] = theme('status_messages');
    }
  }
  else {
    $variables['title'] = isset($variables['content']['title']) ? $variables['content']['title'] : '';
  }

  if (!$variables['admin']) {
    if (!$block_exists['action_links']) {
      $variables['action_links'] = menu_local_actions();
    }
    if (!$block_exists['tabs']) {
      $variables['tabs'] = menu_local_tabs();
    }
  }

  // Build HTML for displaying flexible templates.
  if (isset($variables['layout_info']['template']) && ($variables['layout_info']['template'] == 'layout--flexible')) {
    if (is_a($variables['renderer'], 'LayoutRendererFlexible')) {
      $variables['flexible_editor'] = TRUE;
      $flexible_layout = layout_flexible_tempstore_load($variables['layout_info']['name']);
    }
    else {
      $variables['flexible_editor'] = FALSE;
      $flexible_layout = layout_flexible_template_load($variables['layout_info']['name']);
    }
    $variables['region_buttons'] = array();
    if (isset($variables['renderer']->region_buttons)) {
      $variables['region_buttons'] = $variables['renderer']->region_buttons;
    }

    $variables['column_data'] = layout_flexible_row_styles();

    $variables['rows'] = $flexible_layout->rows;
    $variables['row_data'] = array();

    $variables['row_widths'] = array(
      'container' => t('Fixed maximum width'),
      'container_fluid' => t('Fluid width'),
      'no_container' => t('Full width'),
    );
    foreach ($variables['rows'] as $name => $row) {
      $container = ($row['container'] == 'container') ? 'container container-fluid' : (($row['container'] == 'container_fluid') ? 'container-fluid' : 'no-container');
      $row['row_class'] = $container . ' flexible-row--' . $name . ' ' . $row['contains'] . ' ' . $row['classes'];
      $row['row_id'] = $variables['flexible_editor'] ? 'id = "flexible-row--' . $name . '"' : '';
      $row['element'] = !empty($row['element']) ? $row['element'] : 'div';
      $row['row_label'] = t('@element row', array('@element' => "<$row[element]>"));
      if ($row['contains'] == 'region_12') {
        $region_classes = '';
        if (!empty($row['region_names']['region_0'])) {
          $region_name = $row['region_names']['region_0']['label'];
          $class_name = isset($row['region_names']['region_0']['name']) ? $row['region_names']['region_0']['name'] : backdrop_html_class($row['region_names']['region_0']['label']);
          $region_classes .= 'l-region--' . $class_name;
          $custom_classes = !empty($row['region_names']['region_0']['classes']) ? ' ' . _layout_clean_custom_css($row['region_names']['region_0']['classes']) : '';
          $region_classes .= !empty($row['region_names']['region_0']['region_class_enable']) ? $custom_classes : '';
        }
        else {
          $region_name = $name;
          $region_classes .= 'l-region--' . backdrop_html_class($name);
        }
        $row['regions'][0]['region_md'] = '12';
        $row['regions'][0]['region_name'] = $region_name;
        $row['regions'][0]['region_classes'] = $region_classes;
        $row['regions'][0]['content_key'] = $variables['flexible_editor'] ? $name : $name . '--0';
      }
      else {
        $col_info = $variables['column_data'][$row['contains']];
        $split = explode(':', $col_info['bootstrap']);
        $i = 0;
        foreach ($split as $col) {
          $region_classes = '';
          if (!empty($row['region_names']['region_' . $i])) {
            $region_name = $row['region_names']['region_' . $i]['label'];
            $class_name = isset($row['region_names']['region_' . $i]['name']) ? $row['region_names']['region_' . $i]['name'] : backdrop_html_class($row['region_names']['region_' . $i]['label']);
            $region_classes .= 'l-region--' . $class_name;
            $custom_classes = !empty($row['region_names']['region_' . $i]['classes']) ? ' ' . _layout_clean_custom_css($row['region_names']['region_' . $i]['classes']) : '';
            $region_classes .= !empty($row['region_names']['region_' . $i]['region_class_enable']) ? $custom_classes : '';
          }
          else {
            $region_name = $name . ' ' . $i;
            $region_classes .= 'l-region--' . backdrop_html_class($name . ' ' . $i);
          }
          $row['regions'][] = array(
            'region_md' => $col,
            'region_name' => $region_name,
            'region_classes' => $region_classes,
            'content_key' => $variables['flexible_editor'] ? $name : $name . '--' . $i,
          );
          $i++;
        }
      }
      $variables['row_data'][$name] = $row;
    }

  }
}