You are here

public function FrxInclude::render in Forena Reports 8

Default Render action, which simply does normal forena rendering. You can use renderDomNode at any time to generate the default forena rendering methods.

Return value

string text from the renderer.

Overrides RendererBase::render

File

src/FrxPlugin/Renderer/FrxInclude.php, line 19
FrxInclude Include a reference to another report as an asset. @author davidmetzler

Class

FrxInclude
Include a reprot

Namespace

Drupal\forena\FrxPlugin\Renderer

Code

public function render() {

  // Get data from source
  $attributes = $this
    ->mergedAttributes();
  $output = '';

  // Determine data type
  $include = @$attributes['src'];
  $title = @$attributes['title'];

  // Quit if we have no data.
  if (!$include) {
    return '';
  }

  // Reformat URL
  @(list($url, $query_str) = @explode('?', $include));
  $url = $this->report
    ->replace($url, TRUE);
  $report_url = $url;
  $parts = @explode('/', $url);
  $file = @$parts[count($parts) - 1];
  $parts = explode('.', $file);

  // Determine file extention
  $ext = count($parts) > 1 ? $parts[count($parts) - 1] : '';
  $query = array();
  if ($query_str) {
    parse_str($query_str, $query);
    foreach ($query as $key => $value) {
      $query[$key] = $this->teng
        ->replace($value, TRUE);
    }
  }

  // Build URL
  $options = array(
    'query' => $query,
  );
  $url = AppService::instance()
    ->url($url, $options);

  //$url = url($url, $options);
  $mode = isset($attributes['mode']) ? $attributes['mode'] : '';
  switch ($mode) {
    case 'ajax':
      if (strpos($url, '/nojs/') === FALSE) {
        if (!isset($attributes['id'])) {
          $attributes['id'] = 'frx-include';
        }
        $id = @$attributes['id'];
        $url .= "/nojs/{$id}/replace";
        if (isset($attributes['class'])) {
          $attributes['class'] .= ' use-ajax forena-autoload';
        }
        else {
          $attributes['class'] = 'use-ajax forena-autoload';
        }
      }
      $output = $this
        ->render_reference($url, $ext, $attributes, $title);
      break;
    case 'reference':
      $output = $this
        ->render_reference($url, $ext, $attributes, $title);
      break;
    case 'inline':
    default:
      ReportManager::instance()
        ->reportInclude(str_replace('reports/', '', $report_url));
  }
  return $output;
}