You are here

function _semantic_panels_get_html in Semantic Panels 7.2

Same name and namespace in other branches
  1. 7 semantic_panels.module \_semantic_panels_get_html()

Render an element as HTML.

1 call to _semantic_panels_get_html()
template_preprocess_semantic_panels_pane in plugins/styles/semantic_panels.inc
Preprocess variables for semantic-panels-pane.tpl.php

File

./semantic_panels.module, line 98
Semantic Panels.

Code

function _semantic_panels_get_html($element_key, $element_data, $pane_semantic_settings) {
  $element_settings = $pane_semantic_settings[$element_key];
  $element_output = render($element_data['content']);
  $element_settings['type'] = _semantic_panels_get_type($element_settings['type'], $element_data['default_type']);
  if (isset($element_settings['link_enabled']) && $element_settings['link_enabled'] && $element_settings['link']['path']) {
    $token_replace_data = _semantic_panels_context_to_token_replace_data($element_data['context']);
    $token_content = token_replace($element_settings['link']['path'], $token_replace_data);

    // If token outputs a link (like the Link field) lets parse out the url.
    if (preg_match('/<a.*\\s+href="(?<url>[^"]*)"[>]*>/i', $token_content, $matches)) {
      $path = $matches['url'];
    }
    else {
      $path = $token_content;
    }

    // Remove tokens that have note been replaced with data.
    $path = preg_replace('/\\[[^[]+\\]/', '', $path);
    $options = array(
      'html' => TRUE,
      'attributes' => array(
        'class' => explode(' ', $element_settings['class']),
      ) + $element_settings['attributes_array'],
    );
    if ($path != '') {
      $element_output = l($element_output, $path, $options);
    }
  }
  if ($element_settings['type']) {
    $class = '';
    if ($pane_semantic_settings['add_default_classes']) {
      $class = $element_data['default_classes'];
    }
    if ($element_settings['class_enable'] && $element_settings['class']) {
      if ($class) {
        $class .= ' ';
      }
      $class .= $element_settings['class'];
    }
    $pre = '<' . $element_settings['type'];
    if ($class) {
      $pre .= ' class="' . $class . '"';
    }
    if (!empty($element_settings['attributes_array'])) {
      $pre .= ' ' . drupal_attributes($element_settings['attributes_array']);
    }
    $pre .= '>';
    $suf = '</' . $element_settings['type'] . '>';
    return $pre . $element_output . $suf;
  }
  return $element_output;
}