work_time-1.0.x-dev/src/Plugin/views/area/WorkTimeViewsLink.php
src/Plugin/views/area/WorkTimeViewsLink.php
<?php
namespace Drupal\work_time\Plugin\views\area;
use Drupal\Core\Url;
use Drupal\views\Plugin\views\area\AreaPluginBase;
/**
* Views area handler for a work time button.
*
* @ingroup views_area_handlers
*
* @ViewsArea("work_time_views_link")
*/
class WorkTimeViewsLink extends AreaPluginBase {
/**
* {@inheritdoc}
*/
public function render($empty = FALSE) {
$filter = \Drupal::request()->query->get('date');
$filter_time = $this->view->style_plugin->options["filter_time"];
if (in_array($filter_time, ['month', 'week'])) {
return [
'date' => [
'#type' => 'date',
'#title' => $this->t('Date'),
'#value' => $filter ?? '',
'#attributes' => [
'type' => $this->options['time'],
'class' => ['form-control', 'w-auto', 'work-time-filter'],
],
'#attached' => [
'library' => ['work_time/work-time-area'],
],
],
];
}
$view_name = $this->view->storage->id();
$display_id = $this->view->current_display;
$year = $filter ?? date('Y');
$container = [
'#type' => 'container',
'#attributes' => [
'class' => ['btn-group'],
],
];
foreach (range($year - 1, $year + 1) as $year) {
$url = Url::fromRoute("view.$view_name.$display_id", [
'date' => $year,
]);
$container[$year] = [
'#type' => 'link',
'#url' => $url,
'#title' => $year,
'#attributes' => [
'class' => ['btn', 'btn-outline-primary'],
],
];
}
return $container;
}
}
