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;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc