CalendarHeader.php in Calendar 8
File
src/Plugin/views/area/CalendarHeader.php
View source
<?php
namespace Drupal\calendar\Plugin\views\area;
use Drupal\calendar\CalendarHelper;
use Drupal\Core\Form\FormStateInterface;
use Drupal\views\Plugin\views\area\TokenizeAreaPluginBase;
class CalendarHeader extends TokenizeAreaPluginBase {
protected function defineOptions() {
$options = parent::defineOptions();
$options['tokenize']['default'] = TRUE;
$options['empty']['default'] = TRUE;
$options['content'] = [
'default' => '',
];
$options['pager_embed'] = [
'default' => FALSE,
];
return $options;
}
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
$form['content'] = [
'#title' => $this
->t('Heading'),
'#type' => 'textfield',
'#default_value' => $this->options['content'],
];
$form['pager_embed'] = [
'#title' => $this
->t('Use Pager'),
'#type' => 'checkbox',
'#default_value' => $this->options['pager_embed'],
];
}
public function render($empty = FALSE) {
if (!$empty || !empty($this->options['empty'])) {
$argument = CalendarHelper::getDateArgumentHandler($this->view);
$render = [];
$header_text = $this
->renderTextField($this->options['content']);
if (!$this->options['pager_embed']) {
$render = [
'#theme' => 'calendar_header',
'#title' => $header_text,
'#empty' => $empty,
'#granularity' => $argument
->getGranularity(),
];
}
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);
if (is_array($render)) {
$render['#exclude'] = FALSE;
$render['#items']['current'] = $header_text;
}
}
}
return $render;
}
return [];
}
public function renderTextField($value) {
if ($value) {
return $this
->sanitizeValue($this
->tokenizeValue($value), 'xss_admin');
}
return '';
}
}