You are here

public static function CalendarHelper::getURLForGranularity in Calendar 8

Get the Url object that will link to the view for the given granularity and arguments.

@todo Allow a View to link to other Views by itself for a certain granularity.

Parameters

\Drupal\views\ViewExecutable $view: The view executable service.

$granularity:

$arguments:

Return value

\Drupal\Core\Url|null

5 calls to CalendarHelper::getURLForGranularity()
Calendar::calendarBuildMiniWeek in src/Plugin/views/style/Calendar.php
Build one mini week row.
Calendar::calendarBuildMonth in src/Plugin/views/style/Calendar.php
Build one month.
template_preprocess_calendar_datebox in ./calendar.theme.inc
Create the calendar date box.
template_preprocess_calendar_mini in ./calendar.theme.inc
Display a mini month view.
template_preprocess_calendar_month_multiple_entity in ./calendar.theme.inc
Format an calendar month node for display.

File

src/CalendarHelper.php, line 897

Class

CalendarHelper
Defines Gregorian Calendar date values.

Namespace

Drupal\calendar

Code

public static function getURLForGranularity(ViewExecutable $view, $granularity, $arguments) {
  $granularity_links = $view
    ->getStyle()->options['granularity_links'];
  if ($granularity_links[$granularity]) {

    /** @var \Drupal\Core\Routing\RouteProvider $router */
    $router = \Drupal::getContainer()
      ->get('router.route_provider');
    $route_name = $granularity_links[$granularity];

    // Check if route exists. $router->getRoutesByName will throw error if no match.
    $routes = $router
      ->getRoutesByNames([
      $route_name,
    ]);
    if ($routes) {
      return Url::fromRoute($route_name, static::getViewRouteParameters($arguments, $view));
    }
  }
  if ($display_id = static::getDisplayForGranularity($view, $granularity)) {

    // @todo Handle arguments in different positions
    // @todo Handle query string parameters.
    return static::getViewsURL($view, $display_id, $arguments);
  }
  return NULL;
}