Chris@5
|
1 <?php
|
Chris@5
|
2
|
Chris@5
|
3 /**
|
Chris@5
|
4 * @file
|
Chris@5
|
5 * The theme system, which controls the output of views slideshow.
|
Chris@5
|
6 */
|
Chris@5
|
7
|
Chris@5
|
8 /**
|
Chris@5
|
9 * @defgroup vss_templates Templates
|
Chris@5
|
10 * @{
|
Chris@5
|
11 * Slideshow and component templates.
|
Chris@5
|
12 *
|
Chris@5
|
13 * @see vss_theme
|
Chris@5
|
14 * @}
|
Chris@5
|
15 */
|
Chris@5
|
16
|
Chris@5
|
17 /**
|
Chris@5
|
18 * @defgroup vss_theme Theme Functions
|
Chris@5
|
19 * @{
|
Chris@5
|
20 * Theme processing and display generation.
|
Chris@5
|
21 *
|
Chris@5
|
22 * Most of the logic behind the generation of the slideshow is here.
|
Chris@5
|
23 *
|
Chris@5
|
24 * @see vss_templates
|
Chris@5
|
25 */
|
Chris@5
|
26
|
Chris@5
|
27 use Drupal\Component\Utility\Html;
|
Chris@5
|
28
|
Chris@5
|
29 /**
|
Chris@5
|
30 * Views Slideshow: slideshow.
|
Chris@5
|
31 */
|
Chris@5
|
32 function _views_slideshow_preprocess_views_view_slideshow(&$vars) {
|
Chris@5
|
33 $options = $vars['view']->style_plugin->options;
|
Chris@5
|
34 $vars['skin'] = 'default';
|
Chris@5
|
35 $vars['slideshow'] = '';
|
Chris@5
|
36 $main_frame_module = $options['slideshow_type'];
|
Chris@5
|
37
|
Chris@5
|
38 if (empty($main_frame_module)) {
|
Chris@5
|
39 // Get all slideshow types.
|
Chris@5
|
40 $typeManager = \Drupal::service('plugin.manager.views_slideshow.slideshow_type');
|
Chris@5
|
41 $types = $typeManager->getDefinitions();
|
Chris@5
|
42
|
Chris@5
|
43 if ($types) {
|
Chris@5
|
44 foreach ($types as $id => $definition) {
|
Chris@5
|
45 $main_frame_module = $id;
|
Chris@5
|
46 break;
|
Chris@5
|
47 }
|
Chris@5
|
48 }
|
Chris@5
|
49 }
|
Chris@5
|
50
|
Chris@5
|
51 // Make sure the main slideshow settings are defined before building the
|
Chris@5
|
52 // slideshow.
|
Chris@5
|
53 if (empty($main_frame_module)) {
|
Chris@5
|
54 drupal_set_message(
|
Chris@5
|
55 t('No main frame module is enabled for views slideshow. This is often because another module which Views Slideshow needs is not enabled. For example, 4.x needs a module like "Views Slideshow: Cycle" enabled.'),
|
Chris@5
|
56 'error'
|
Chris@5
|
57 );
|
Chris@5
|
58 }
|
Chris@5
|
59 elseif (empty($options[$main_frame_module])) {
|
Chris@5
|
60 drupal_set_message(t('The options for @module does not exists.', ['@module' => $main_frame_module]), 'error');
|
Chris@5
|
61 }
|
Chris@5
|
62 elseif (!empty($vars['rows'])) {
|
Chris@5
|
63 $settings = $options[$main_frame_module];
|
Chris@5
|
64 $view = $vars['view'];
|
Chris@5
|
65 $rows = $vars['rows'];
|
Chris@5
|
66
|
Chris@5
|
67 // The #name element is not available on Views edit pages.
|
Chris@5
|
68 $view_element_name = (isset($view->element['#name'])) ? $view->element['#name'] : '';
|
Chris@5
|
69 $vss_id = $view_element_name . '-' . $view->current_display;
|
Chris@5
|
70
|
Chris@5
|
71 // Give each slideshow a unique id if there are more than one on the page.
|
Chris@5
|
72 static $instances = [];
|
Chris@5
|
73 if (isset($instances[$vss_id])) {
|
Chris@5
|
74 $instances[$vss_id]++;
|
Chris@5
|
75 $vss_id .= "_" . $instances[$vss_id];
|
Chris@5
|
76 }
|
Chris@5
|
77 else {
|
Chris@5
|
78 $instances[$vss_id] = 1;
|
Chris@5
|
79 }
|
Chris@5
|
80
|
Chris@5
|
81 // Building our default methods.
|
Chris@5
|
82 $methods = [
|
Chris@5
|
83 'goToSlide' => [],
|
Chris@5
|
84 'nextSlide' => [],
|
Chris@5
|
85 'pause' => [],
|
Chris@5
|
86 'play' => [],
|
Chris@5
|
87 'previousSlide' => [],
|
Chris@5
|
88 'transitionBegin' => [],
|
Chris@5
|
89 'transitionEnd' => [],
|
Chris@5
|
90 ];
|
Chris@5
|
91
|
Chris@5
|
92 // Pull all widget info and slideshow info and merge them together.
|
Chris@5
|
93 $widgetTypeManager = \Drupal::service('plugin.manager.views_slideshow.widget_type');
|
Chris@5
|
94 $widgetTypes = $widgetTypeManager->getDefinitions();
|
Chris@5
|
95
|
Chris@5
|
96 $slideshowTypeManager = \Drupal::service('plugin.manager.views_slideshow.slideshow_type');
|
Chris@5
|
97 $slideshowTypes = $slideshowTypeManager->getDefinitions();
|
Chris@5
|
98
|
Chris@5
|
99 $addons = array_merge($widgetTypes, $slideshowTypes);
|
Chris@5
|
100
|
Chris@5
|
101 // Loop through all the addons and call their methods if needed.
|
Chris@5
|
102 foreach ($addons as $addon_id => $addon_info) {
|
Chris@5
|
103 foreach ($addon_info['accepts'] as $imp_key => $imp_value) {
|
Chris@5
|
104 if (is_array($imp_value)) {
|
Chris@5
|
105 $methods[$imp_key][] = \Drupal::service('views_slideshow.format_addons_name')->format($addon_id);
|
Chris@5
|
106 }
|
Chris@5
|
107 else {
|
Chris@5
|
108 $methods[$imp_value][] = \Drupal::service('views_slideshow.format_addons_name')->format($addon_id);
|
Chris@5
|
109 }
|
Chris@5
|
110 }
|
Chris@5
|
111 }
|
Chris@5
|
112
|
Chris@5
|
113 $vars['#attached']['library'][] = 'views_slideshow/widget_info';
|
Chris@5
|
114 $vars['#attached']['drupalSettings']['viewsSlideshow'][$vss_id] = [
|
Chris@5
|
115 'methods' => $methods,
|
Chris@5
|
116 'paused' => 0,
|
Chris@5
|
117 ];
|
Chris@5
|
118
|
Chris@5
|
119 // Process Skins.
|
Chris@5
|
120 $skinManager = \Drupal::service('plugin.manager.views_slideshow.slideshow_skin');
|
Chris@5
|
121 $skin = $skinManager->createInstance($options['slideshow_skin']);
|
Chris@5
|
122
|
Chris@5
|
123 $vars['skin'] = $skin->getClass();
|
Chris@5
|
124
|
Chris@5
|
125 foreach ($skin->getLibraries() as $library) {
|
Chris@5
|
126 $vars['#attached']['library'][] = $library;
|
Chris@5
|
127 }
|
Chris@5
|
128
|
Chris@5
|
129 // Process Widgets.
|
Chris@5
|
130 // Build weights.
|
Chris@5
|
131 $weight = [];
|
Chris@5
|
132 for ($i = 1; $i <= count($widgetTypes); $i++) {
|
Chris@5
|
133 $weight['top'][$i] = [];
|
Chris@5
|
134 $weight['bottom'][$i] = [];
|
Chris@5
|
135 }
|
Chris@5
|
136
|
Chris@5
|
137 $slide_count = count($view->result);
|
Chris@5
|
138 if ($slide_count && $vars['view']->style_plugin->options['slideshow_type'] == 'views_slideshow_cycle') {
|
Chris@5
|
139 $items_per_slide = $vars['view']->style_plugin->options['views_slideshow_cycle']['items_per_slide'];
|
Chris@5
|
140 $slide_count = $slide_count / $items_per_slide;
|
Chris@5
|
141 }
|
Chris@5
|
142 foreach ($widgetTypes as $widgetTypeId => $widgetTypeName) {
|
Chris@5
|
143 foreach ($weight as $location => $order) {
|
Chris@5
|
144 if ($options['widgets'][$location][$widgetTypeId]['enable']) {
|
Chris@5
|
145 // If hide on single slide and only a single slide skip rendering.
|
Chris@5
|
146 if ($options['widgets'][$location][$widgetTypeId]['hide_on_single_slide'] && $slide_count <= 1) {
|
Chris@5
|
147 continue;
|
Chris@5
|
148 }
|
Chris@5
|
149 $widgetWeight = ($options['widgets'][$location][$widgetTypeId]['weight'] > count($widgetTypes)) ? count($widgetTypes) : $options['widgets'][$location][$widgetTypeId]['weight'];
|
Chris@5
|
150
|
Chris@5
|
151 $weight[$location][$widgetWeight][] = [
|
Chris@5
|
152 'widgetId' => $widgetTypeId,
|
Chris@5
|
153 'widgetSettings' => $options['widgets'][$location][$widgetTypeId],
|
Chris@5
|
154 ];
|
Chris@5
|
155 }
|
Chris@5
|
156 }
|
Chris@5
|
157 }
|
Chris@5
|
158
|
Chris@5
|
159 // Build our widgets.
|
Chris@5
|
160 foreach ($weight as $location => $order) {
|
Chris@5
|
161 $vars[$location . '_widget_rendered'] = [];
|
Chris@5
|
162 foreach ($order as $widgets) {
|
Chris@5
|
163 if (is_array($widgets)) {
|
Chris@5
|
164 foreach ($widgets as $widgetData) {
|
Chris@5
|
165 $vars[$location . '_widget_rendered'][] = [
|
Chris@5
|
166 '#theme' => $view->buildThemeFunctions($widgetData['widgetId'] . '_widget_render'),
|
Chris@5
|
167 '#vss_id' => $vss_id,
|
Chris@5
|
168 '#view' => $view,
|
Chris@5
|
169 '#settings' => $widgetData['widgetSettings'],
|
Chris@5
|
170 '#location' => $location,
|
Chris@5
|
171 '#rows' => $rows,
|
Chris@5
|
172 ];
|
Chris@5
|
173 }
|
Chris@5
|
174 }
|
Chris@5
|
175 }
|
Chris@5
|
176 }
|
Chris@5
|
177
|
Chris@5
|
178 // Process Slideshow.
|
Chris@5
|
179 $slides = [
|
Chris@5
|
180 '#theme' => $view->buildThemeFunctions($main_frame_module . '_main_frame'),
|
Chris@5
|
181 '#vss_id' => $vss_id,
|
Chris@5
|
182 '#view' => $view,
|
Chris@5
|
183 '#settings' => $settings,
|
Chris@5
|
184 '#rows' => $rows,
|
Chris@5
|
185 ];
|
Chris@5
|
186
|
Chris@5
|
187 $vars['slideshow'] = [
|
Chris@5
|
188 '#theme' => $view->buildThemeFunctions('views_slideshow_main_section'),
|
Chris@5
|
189 '#vss_id' => $vss_id,
|
Chris@5
|
190 '#slides' => $slides,
|
Chris@5
|
191 '#plugin' => $main_frame_module,
|
Chris@5
|
192 ];
|
Chris@5
|
193 }
|
Chris@5
|
194 }
|
Chris@5
|
195
|
Chris@5
|
196 /**
|
Chris@5
|
197 * Views Slideshow: pager.
|
Chris@5
|
198 */
|
Chris@5
|
199 function template_preprocess_views_slideshow_pager_widget_render(&$vars) {
|
Chris@5
|
200 // Add JavaScript settings for the pager type.
|
Chris@5
|
201 $vars['#attached']['library'][] = 'views_slideshow/widget_info';
|
Chris@5
|
202 $vars['#attached']['drupalSettings']['viewsSlideshowPager'][$vars['vss_id']] = [
|
Chris@5
|
203 $vars['location'] => [
|
Chris@5
|
204 'type' => \Drupal::service('views_slideshow.format_addons_name')->format($vars['settings']['type']),
|
Chris@5
|
205 ],
|
Chris@5
|
206 ];
|
Chris@5
|
207
|
Chris@5
|
208 // Create some attributes.
|
Chris@5
|
209 $attributes['class'][] = 'widget_pager widget_pager_' . $vars['location'];
|
Chris@5
|
210 $attributes['id'] = 'widget_pager_' . $vars['location'] . '_' . $vars['vss_id'];
|
Chris@5
|
211
|
Chris@5
|
212 $pager = [
|
Chris@5
|
213 '#theme' => $vars['view']->buildThemeFunctions($vars['settings']['type']),
|
Chris@5
|
214 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
215 '#view' => $vars['view'],
|
Chris@5
|
216 '#settings' => $vars['settings'],
|
Chris@5
|
217 '#location' => $vars['location'],
|
Chris@5
|
218 '#attributes' => $attributes,
|
Chris@5
|
219 ];
|
Chris@5
|
220
|
Chris@5
|
221 return \Drupal::service('renderer')->render($pager);
|
Chris@5
|
222 }
|
Chris@5
|
223
|
Chris@5
|
224 /**
|
Chris@5
|
225 * Theme pager fields.
|
Chris@5
|
226 */
|
Chris@5
|
227 function template_preprocess_views_slideshow_pager_fields(&$vars) {
|
Chris@5
|
228 // Add JavaScript settings for the field.
|
Chris@5
|
229 $vars['#attached']['library'][] = 'views_slideshow/widget_info';
|
Chris@5
|
230 $vars['#attached']['drupalSettings']['viewsSlideshowPagerFields'][$vars['vss_id']] = [
|
Chris@5
|
231 $vars['location'] => [
|
Chris@5
|
232 'activatePauseOnHover' => $vars['settings']['views_slideshow_pager_fields']['views_slideshow_pager_fields_hover'],
|
Chris@5
|
233 ],
|
Chris@5
|
234 ];
|
Chris@5
|
235
|
Chris@5
|
236 // Add hover intent library.
|
Chris@5
|
237 if ($vars['settings']['views_slideshow_pager_fields']['views_slideshow_pager_fields_hover']) {
|
Chris@5
|
238 $vars['#attached']['library'][] = 'views_slideshow/jquery_hoverIntent';
|
Chris@5
|
239 }
|
Chris@5
|
240
|
Chris@5
|
241 $vars['widget_id'] = $vars['attributes']['id'];
|
Chris@5
|
242 // Add our class to the wrapper.
|
Chris@5
|
243 $vars['attributes']['class'][] = 'views_slideshow_pager_field';
|
Chris@5
|
244
|
Chris@5
|
245 // Render all the fields unless there is only 1 slide and the user specified
|
Chris@5
|
246 // to hide them when there is only one slide.
|
Chris@5
|
247 $vars['rendered_field_items'] = [];
|
Chris@5
|
248 foreach ($vars['view']->result as $count => $node) {
|
Chris@5
|
249 $rendered_fields = [];
|
Chris@5
|
250 foreach ($vars['settings']['views_slideshow_pager_fields']['views_slideshow_pager_fields_fields'] as $field => $use) {
|
Chris@5
|
251 if ($use !== 0 && is_object($vars['view']->field[$field])) {
|
Chris@5
|
252 $rendered_fields[] = [
|
Chris@5
|
253 '#theme' => $vars['view']->buildThemeFunctions('views_slideshow_pager_field_field'),
|
Chris@5
|
254 '#view' => $vars['view'],
|
Chris@5
|
255 '#label' => $vars['view']->field[$field]->options['label'],
|
Chris@5
|
256 '#output' => $vars['view']->style_plugin->getField($count, $field),
|
Chris@5
|
257 '#css_identifier' => Html::cleanCssIdentifier($vars['view']->field[$field]->field),
|
Chris@5
|
258 ];
|
Chris@5
|
259 }
|
Chris@5
|
260 }
|
Chris@5
|
261
|
Chris@5
|
262 $vars['rendered_field_items'][] = [
|
Chris@5
|
263 '#theme' => $vars['view']->buildThemeFunctions('views_slideshow_pager_field_item'),
|
Chris@5
|
264 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
265 '#item' => $rendered_fields,
|
Chris@5
|
266 '#count' => $count,
|
Chris@5
|
267 '#location' => $vars['location'],
|
Chris@5
|
268 '#length' => count($vars['view']->result),
|
Chris@5
|
269 ];
|
Chris@5
|
270 }
|
Chris@5
|
271 }
|
Chris@5
|
272
|
Chris@5
|
273 /**
|
Chris@5
|
274 * Views Slideshow: pager item.
|
Chris@5
|
275 */
|
Chris@5
|
276 function template_preprocess_views_slideshow_pager_field_item(&$vars) {
|
Chris@5
|
277 $vars['attributes']['class'][] = 'views_slideshow_pager_field_item';
|
Chris@5
|
278 $vars['attributes']['class'][] = ($vars['count'] % 2) ? 'views-row-even' : 'views-row-odd';
|
Chris@5
|
279 if ($vars['count'] == 0) {
|
Chris@5
|
280 $vars['attributes']['class'][] = 'views-row-first';
|
Chris@5
|
281 }
|
Chris@5
|
282 elseif ($vars['count'] == $vars['length'] - 1) {
|
Chris@5
|
283 $vars['attributes']['class'][] = 'views-row-last';
|
Chris@5
|
284 }
|
Chris@5
|
285 }
|
Chris@5
|
286
|
Chris@5
|
287 /**
|
Chris@5
|
288 * Views Slideshow: Bullets pager.
|
Chris@5
|
289 */
|
Chris@5
|
290 function template_preprocess_views_slideshow_pager_bullets(&$vars) {
|
Chris@5
|
291 $vars['#attached']['library'][] = 'views_slideshow/widget_info';
|
Chris@5
|
292 $vars['#attached']['library'][] = 'views_slideshow/pager_bullets';
|
Chris@5
|
293 $vars['#attached']['drupalSettings']['viewsSlideshowPagerFields'][$vars['vss_id']] = [
|
Chris@5
|
294 $vars['location'] => [
|
Chris@5
|
295 'activatePauseOnHover' => $vars['settings']['views_slideshow_pager_bullets']['views_slideshow_pager_bullets_hover'],
|
Chris@5
|
296 ],
|
Chris@5
|
297 ];
|
Chris@5
|
298
|
Chris@5
|
299 $vars['bullet_items'] = [
|
Chris@5
|
300 '#theme' => 'item_list',
|
Chris@5
|
301 '#items' => [],
|
Chris@5
|
302 '#attributes' => $vars['attributes'],
|
Chris@5
|
303 ];
|
Chris@5
|
304 $vars['bullet_items']['#attributes']['class'][] = 'views-slideshow-pager-bullets';
|
Chris@5
|
305 $vars['bullet_items']['#attributes']['class'][] = 'views_slideshow_pager_field';
|
Chris@5
|
306
|
Chris@5
|
307 for ($i = 0; $i < count($vars['view']->result); $i++) {
|
Chris@5
|
308 $vars['bullet_items']['#items'][] = [
|
Chris@5
|
309 '#markup' => $i,
|
Chris@5
|
310 '#wrapper_attributes' => [
|
Chris@5
|
311 'id' => 'views_slideshow_pager_field_item_' . $vars['location'] . '_' . $vars['vss_id'] . '_' . $i,
|
Chris@5
|
312 ],
|
Chris@5
|
313 ];
|
Chris@5
|
314 }
|
Chris@5
|
315 }
|
Chris@5
|
316
|
Chris@5
|
317 /**
|
Chris@5
|
318 * Views Slideshow: Controls.
|
Chris@5
|
319 */
|
Chris@5
|
320 function template_preprocess_views_slideshow_controls_widget_render(&$vars) {
|
Chris@5
|
321 // Add JavaScript settings for the controls type.
|
Chris@5
|
322 $vars['#attached']['library'][] = 'views_slideshow/widget_info';
|
Chris@5
|
323 $vars['#attached']['drupalSettings']['viewsSlideshowControls'][$vars['vss_id']] = [
|
Chris@5
|
324 $vars['location'] => [
|
Chris@5
|
325 'type' => \Drupal::service('views_slideshow.format_addons_name')->format($vars['settings']['type']),
|
Chris@5
|
326 ],
|
Chris@5
|
327 ];
|
Chris@5
|
328
|
Chris@5
|
329 $output = [
|
Chris@5
|
330 '#theme' => $vars['view']->buildThemeFunctions($vars['settings']['type']),
|
Chris@5
|
331 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
332 '#view' => $vars['view'],
|
Chris@5
|
333 '#settings' => $vars['settings'],
|
Chris@5
|
334 '#location' => $vars['location'],
|
Chris@5
|
335 '#rows' => $vars['rows'],
|
Chris@5
|
336 ];
|
Chris@5
|
337
|
Chris@5
|
338 return \Drupal::service('renderer')->render($output);
|
Chris@5
|
339 }
|
Chris@5
|
340
|
Chris@5
|
341 /**
|
Chris@5
|
342 * The slideshow controls.
|
Chris@5
|
343 */
|
Chris@5
|
344 function template_preprocess_views_slideshow_controls_text(&$vars) {
|
Chris@5
|
345 $vars['#attached']['library'][] = 'views_slideshow/controls_text';
|
Chris@5
|
346
|
Chris@5
|
347 $vars['attributes']['class'][] = 'views_slideshow_controls_text';
|
Chris@5
|
348
|
Chris@5
|
349 $vars['rendered_control_previous'] = [
|
Chris@5
|
350 '#theme' => $vars['view']->buildThemeFunctions('views_slideshow_controls_text_previous'),
|
Chris@5
|
351 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
352 '#view' => $vars['view'],
|
Chris@5
|
353 '#settings' => $vars['settings'],
|
Chris@5
|
354 ];
|
Chris@5
|
355
|
Chris@5
|
356 $vars['rendered_control_pause'] = [
|
Chris@5
|
357 '#theme' => $vars['view']->buildThemeFunctions('views_slideshow_controls_text_pause'),
|
Chris@5
|
358 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
359 '#view' => $vars['view'],
|
Chris@5
|
360 '#settings' => $vars['settings'],
|
Chris@5
|
361 ];
|
Chris@5
|
362
|
Chris@5
|
363 $vars['rendered_control_next'] = [
|
Chris@5
|
364 '#theme' => $vars['view']->buildThemeFunctions('views_slideshow_controls_text_next'),
|
Chris@5
|
365 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
366 '#view' => $vars['view'],
|
Chris@5
|
367 '#settings' => $vars['settings'],
|
Chris@5
|
368 ];
|
Chris@5
|
369 }
|
Chris@5
|
370
|
Chris@5
|
371 /**
|
Chris@5
|
372 * Views Slideshow: "previous" control.
|
Chris@5
|
373 */
|
Chris@5
|
374 function template_preprocess_views_slideshow_controls_text_previous(&$vars) {
|
Chris@5
|
375 $vars['attributes']['class'][] = 'views_slideshow_controls_text_previous';
|
Chris@5
|
376 }
|
Chris@5
|
377
|
Chris@5
|
378 /**
|
Chris@5
|
379 * Views Slideshow: "pause" control.
|
Chris@5
|
380 */
|
Chris@5
|
381 function template_preprocess_views_slideshow_controls_text_pause(&$vars) {
|
Chris@5
|
382 $vars['attributes']['class'][] = 'views_slideshow_controls_text_pause views-slideshow-controls-text-status-play';
|
Chris@5
|
383 $vars['start_text'] = t('Pause');
|
Chris@5
|
384 }
|
Chris@5
|
385
|
Chris@5
|
386 /**
|
Chris@5
|
387 * Views Slideshow: "next" control.
|
Chris@5
|
388 */
|
Chris@5
|
389 function template_preprocess_views_slideshow_controls_text_next(&$vars) {
|
Chris@5
|
390 $vars['attributes']['class'][] = 'views_slideshow_controls_text_next';
|
Chris@5
|
391 }
|
Chris@5
|
392
|
Chris@5
|
393 /**
|
Chris@5
|
394 * Views Slideshow: Slide Counter.
|
Chris@5
|
395 */
|
Chris@5
|
396 function template_preprocess_views_slideshow_slide_counter_widget_render(&$vars) {
|
Chris@5
|
397 $slide = [
|
Chris@5
|
398 '#theme' => $vars['view']->buildThemeFunctions('views_slideshow_slide_counter'),
|
Chris@5
|
399 '#vss_id' => $vars['vss_id'],
|
Chris@5
|
400 '#view' => $vars['view'],
|
Chris@5
|
401 '#settings' => $vars['settings'],
|
Chris@5
|
402 '#location' => $vars['location'],
|
Chris@5
|
403 '#rows' => $vars['rows'],
|
Chris@5
|
404 ];
|
Chris@5
|
405
|
Chris@5
|
406 return \Drupal::service('renderer')->render($slide);
|
Chris@5
|
407 }
|
Chris@5
|
408
|
Chris@5
|
409 /**
|
Chris@5
|
410 * Views Slideshow: slide counter.
|
Chris@5
|
411 */
|
Chris@5
|
412 function template_preprocess_views_slideshow_slide_counter(&$vars) {
|
Chris@5
|
413 $vars['attributes']['class'][] = 'views_slideshow_slide_counter';
|
Chris@5
|
414 $vars['slide_count'] = count($vars['rows']);
|
Chris@5
|
415 }
|
Chris@5
|
416
|
Chris@5
|
417 /**
|
Chris@5
|
418 * @} End of "defgroup vss_theme".
|
Chris@5
|
419 */
|