You are here

function panels_bootstrap_render_item in Panels Bootstrap Layout Builder 7.3

Same name and namespace in other branches
  1. 7 plugins/layouts/bootstrap/bootstrap.inc \panels_bootstrap_render_item()

Render a column in the bootstrap layout.

3 calls to panels_bootstrap_render_item()
panels_ajax_bootstrap_edit_add in plugins/layouts/bootstrap/bootstrap.inc
AJAX responder to add a new row, column or region to a bootstrap layout.
panels_bootstrap_render_items in plugins/layouts/bootstrap/bootstrap.inc
Render a piece of a bootstrap layout.
theme_panels_bootstrap_admin in plugins/layouts/bootstrap/bootstrap.inc
Draw the bootstrap layout.

File

plugins/layouts/bootstrap/bootstrap.inc, line 377

Code

function panels_bootstrap_render_item($renderer, $item, $content, $id, $position, $max, $clear = FALSE) {
  $base = $renderer->item_class[$item['type']];
  $output = '';
  $item_classes = array();
  switch ($item['type']) {
    case 'container':
      if (!empty($item['container_class_add'])) {
        $item_classes[] = 'container';
      }
      if (!empty($item['container_full_class_add']) || !empty($item['container_fluid_class_add'])) {
        $item_classes[] = 'container-fluid';
      }
      if (!empty($item['class'])) {
        $item_classes[] = check_plain($item['class']);
      }
      if (!empty($base) && !empty($item['class_default_add'])) {
        $item_classes[] = $base;
      }
      break;
    case 'row':
      $item_classes[] = 'row';
      if (!empty($item['class'])) {
        $item_classes[] = check_plain($item['class']);
      }
      if (!empty($base) && !empty($item['class_default_add'])) {
        $item_classes[] = $base;
      }
      break;
    case 'column':
      if (!empty($item['class_default_add'])) {
        $item_classes[] = 'column';
      }
      if (!empty($item['class'])) {
        $item_classes[] = check_plain($item['class']);
      }
      if (!empty($base)) {
        $item_classes[] = $base;
      }
      if (isset($item['bootstrap_class'])) {
        $bootstrap_class = $item['bootstrap_class'];
      }
      else {
        $bootstrap_class = array(
          'xs' => 'col-xs-12',
          'sm' => 'col-sm-12',
          'md' => 'col-md-12',
          'lg' => 'col-lg-12',
        );
      }
      $item_classes += $bootstrap_class;
      break;
    case 'region':
      if (!empty($base) && !empty($item['class_default_add'])) {
        $item_classes[] = $base;
      }
      if (!empty($item['container_class_add'])) {
        $item_classes[] = 'container';
      }
      if (!empty($item['container_full_class_add']) || !empty($item['container_fluid_class_add'])) {
        $item_classes[] = 'container-fluid';
      }
      if (!empty($item['class'])) {
        $item_classes[] = check_plain($item['class']);
      }
      break;
    default:
      break;
  }
  if (!empty($item['wrapper'])) {
    $wrapper = $item['wrapper'];
  }
  else {
    $wrapper = 'div';
  }

  // Define element ID.
  if (!empty($item['element_id_default'])) {
    $element_id = 'panel-bootstrap-' . $item['type'] . '-' . $id;
  }
  else {
    $element_id = !empty($item['element_id']) ? $item['element_id'] : '';
  }

  // Make sure we have at least this class for admin ajax calls.
  $item_classes[] = $renderer->base[$item['type']] . '-' . $id;

  // Adds default classes if needed.
  if (!empty($item['class_default_add'])) {
    if ($position == 0) {
      $item_classes[] = $item['type'] . '-inside-first';
    }
    if ($position == $max) {
      $item_classes[] = $item['type'] . '-inside-last';
    }
    if ($clear) {
      $item_classes[] = 'clearfix';
    }
    $item_classes[] = 'inside';
  }
  $element_id = !empty($element_id) ? ' id="' . $element_id . '"' : '';
  $element_classes = !empty($item_classes) ? ' class="' . implode(' ', $item_classes) . '"' : '';
  $output .= "<{$wrapper} {$element_id} {$element_classes}>\n";
  if (!empty($renderer->admin)) {
    $output .= panels_bootstrap_render_item_links($renderer, $id, $item);
    if ($item['type'] == 'column') {
      $output .= '<div class="bootstrap-class-selector clearfix" >';
      $output .= panels_bootstrap_render_bootstrap_class_selector($renderer, $id);
      $output .= '</div>';
    }
  }
  $output .= $content;
  $output .= '  </' . $wrapper . '>' . "\n";
  return $output;
}