You are here

public function CalendarHeader::render in Calendar 8.2

Same name and namespace in other branches
  1. 8 src/Plugin/views/area/CalendarHeader.php \Drupal\calendar\Plugin\views\area\CalendarHeader::render()

Render the area.

Parameters

bool $empty: (optional) Indicator if view result is empty or not. Defaults to FALSE.

Return value

array In any case we need a valid Drupal render array to return.

Overrides AreaPluginBase::render

File

src/Plugin/views/area/CalendarHeader.php, line 111

Class

CalendarHeader
Views area Calendar Header area.

Namespace

Drupal\calendar\Plugin\views\area

Code

public function render($empty = FALSE) {
  if (!$empty || !empty($this->options['empty'])) {
    $header_text = $date_argument = NULL;
    $render = [];
    $calendar_arguments = $this->calendarHelper
      ->getCalendarArguments($this->view);
    foreach ($calendar_arguments as $date_argument) {
      switch ($date_argument['id']) {
        case 'calendar_day':
          $date = new DrupalDateTime($date_argument['argument']);
          $argument_text = $date
            ->format('F d Y');
          $header_text = $this
            ->renderTextField($argument_text);
          break;
        case 'calendar_year_week':
          $date = $this->calendarHelper
            ->weekInfo($date_argument['argument']);
          $argument_text = $this
            ->t('Week') . ' ' . $date['weekno'] . ' ' . $this
            ->t('starting') . ' ' . $date['startweekdate']
            ->format('F d Y');
          $header_text = $this
            ->renderTextField($argument_text);
          break;
        case 'calendar_year_month':
          $date = new DrupalDateTime($date_argument['argument'] . '01');
          $argument_text = $date
            ->format('F') . ' ' . $date
            ->format('Y');
          $header_text = $this
            ->renderTextField($argument_text);
          break;
        case 'calendar_year':
          break;
      }
      if (!$this->options['pager_embed']) {
        $render = [
          '#theme' => 'calendar_header',
          '#title' => $header_text,
        ];
      }
      else {
        if ($this->view->display_handler
          ->renderPager()) {
          $exposed_input = isset($this->view->exposed_raw_input) ? $this->view->exposed_raw_input : NULL;
          $render = $this->view
            ->renderPager($exposed_input);
          $render['#exclude'] = FALSE;
          $render['#items']['current'] = $header_text;
        }
      }
    }
    return $render;
  }
  return [];
}