bootstrap_italia-8.x-0.x-dev/modules/bootstrap_italia_views_carousel/bootstrap_italia_views_carousel.module
modules/bootstrap_italia_views_carousel/bootstrap_italia_views_carousel.module
<?php
/**
* @file
* Carousel Views module help and theme functions.
*/
use Drupal\bootstrap_italia_views_carousel\Plugin\views\style\CarouselStyle;
use Drupal\bootstrap_italia_views_carousel\Plugin\views\style\SlideStyle;
use Drupal\bootstrap_italia\Helper\Suggestions;
/**
* Implements hook_theme().
*
* Ref: https://www.drupal.org/project/coding_standards/issues/3056368
*
* @phpstan-ignore missingType.parameter, missingType.parameter, missingType.parameter, missingType.parameter, missingType.iterableValue
*/
function bootstrap_italia_views_carousel_style_theme($existing, $type, $theme, $path): array {
return [
'views_bootstrap_italia_views_carousel' => [
'variables' => [
'view' => NULL,
'rows' => NULL,
'options' => NULL,
],
],
'views_bootstrap_italia_views_carousel_slide' => [
'variables' => [
'view' => NULL,
'rows' => NULL,
'options' => NULL,
],
],
];
}
/**
* Prepares variables for bootstrap carousel templates.
*
* Default template: views-bootstrap-italia-views-carousel.html.twig.
*
* @param array<string, mixed> $variables
* An associative array containing:
* - view: A ViewExecutable object.
* - rows: The raw row data.
*/
function template_preprocess_views_bootstrap_italia_views_carousel(array &$variables): void {
// Update options for twig.
$variables['options'] = $variables['view']->style_plugin->options;
}
/**
* Prepares variables for bootstrap carousel slide templates.
*
* Default template: views-bootstrap-italia-views-carousel-slide.html.twig.
*
* @param array<string, mixed> $variables
* An associative array containing:
* - view: A ViewExecutable object.
* - rows: The raw row data.
*/
function template_preprocess_views_bootstrap_italia_views_carousel_slide(array &$variables): void {
// Update options for twig.
$variables['options'] = $variables['view']->style_plugin->options;
}
/**
* Implements hook_theme_suggestions_block_alter().
*
* Ref: https://www.drupal.org/project/coding_standards/issues/3056368
*
* @phpstan-ignore missingType.iterableValue, missingType.iterableValue
*/
function bootstrap_italia_views_carousel_theme_suggestions_block_alter(array &$suggestions, array $variables): void {
if (isset($variables['elements']['content']['#view'])) {
$view = $variables['elements']['content']['#view'];
// @todo This condition is always false?
if ($view->style_plugin instanceof CarouselStyle) {
$suggestions[] = 'block__views_views_bi_carousel__' . Suggestions::sanitize($view->id());
$suggestions[] = 'block__views_views_bi_carousel';
}
}
}
/**
* Implements hook_theme_suggestions_views_view_alter().
*
* Ref: https://www.drupal.org/project/coding_standards/issues/3056368
*
* @phpstan-ignore missingType.iterableValue, missingType.iterableValue
*/
function bootstrap_italia_views_carousel_theme_suggestions_views_view_alter(array &$suggestions, array $variables): void {
if ($variables['view']->style_plugin instanceof CarouselStyle) {
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel__' . Suggestions::sanitize($variables['view']->storage->id());
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel';
}
if ($variables['view']->style_plugin instanceof SlideStyle) {
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel_slide__' . Suggestions::sanitize($variables['view']->storage->id());
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel_slide';
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter().
*
* Ref: https://www.drupal.org/project/coding_standards/issues/3056368
*
* @phpstan-ignore missingType.iterableValue, missingType.iterableValue
*/
function bootstrap_italia_views_carousel_theme_suggestions_views_bootstrap_italia_views_carousel_alter(array &$suggestions, array $variables): void {
if ($variables['view']->style_plugin instanceof CarouselStyle) {
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel__' . Suggestions::sanitize($variables['view']->storage->id());
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel';
}
}
/**
* Implements hook_theme_suggestions_HOOK_alter().
*
* Ref: https://www.drupal.org/project/coding_standards/issues/3056368
*
* @phpstan-ignore missingType.iterableValue, missingType.iterableValue
*/
function bootstrap_italia_views_carousel_theme_suggestions_views_bootstrap_italia_views_carousel_slide_alter(array &$suggestions, array $variables): void {
if ($variables['view']->style_plugin instanceof SlideStyle) {
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel_slide__' . Suggestions::sanitize($variables['view']->storage->id());
$suggestions[] = $variables['theme_hook_original'] . '_bi_carousel_slide';
}
}
