views_slideshow_rendered_entity_pager.module in Views Slideshow Rendered Entity Pager 7
Same filename and directory in other branches
Provide a specific pager displaying node in a specific view mode.
File
views_slideshow_rendered_entity_pager.moduleView source
<?php
/**
* @file
* Provide a specific pager displaying node in a specific view mode.
*/
/**
* Implements hook_views_slideshow_widget_pager_info().
*/
function views_slideshow_rendered_entity_pager_views_slideshow_widget_pager_info($view) {
$settings = array(
'views_slideshow_rendered_entity_pager' => array(
'name' => t('Rendered entity'),
),
);
return $settings;
}
/**
* Implements hook_views_slideshow_pager_form_options().
*/
function views_slideshow_rendered_entity_pager_views_slideshow_widget_pager_form_options(&$form, &$form_state, &$view, $defaults, $dependency) {
// Prepare the list of available view modes.
$entity_info = entity_get_info($view->view->base_table);
$options = array();
if (!empty($entity_info['view modes'])) {
foreach ($entity_info['view modes'] as $mode => $settings) {
$options[$mode] = $settings['label'];
}
}
if (empty($options)) {
$options = array(
'teaser' => t('Teaser'),
'full' => t('Full content'),
);
}
// Display a list only if user has selected "Rendered entity" as pager style.
$default_value = isset($defaults['views_slideshow_rendered_entity_pager_view_mode']) ? $defaults['views_slideshow_rendered_entity_pager_view_mode'] : '';
$form['views_slideshow_rendered_entity_pager_view_mode'] = array(
'#type' => 'select',
'#title' => t('Pager view mode'),
'#options' => $options,
'#default_value' => $default_value,
'#description' => t('Choose the view mode that will appear in the pager.'),
'#states' => array(
'visible' => array(
':input[name="' . $dependency . '[enable]"]' => array(
'checked' => TRUE,
),
':input[name="' . $dependency . '[type]"]' => array(
'value' => 'views_slideshow_rendered_entity_pager',
),
),
),
);
return $form;
}
/**
* Implements hook_theme().
*/
function views_slideshow_rendered_entity_pager_theme($existing, $type, $theme, $path) {
return array(
'views_slideshow_rendered_entity_pager' => array(
'variables' => array(
'vss_id' => NULL,
'view' => NULL,
'settings' => array(),
'location' => NULL,
'attributes' => array(),
),
'template' => 'theme/views-slideshow-pager-fields',
'path' => drupal_get_path('module', 'views_slideshow'),
),
);
}
/**
* Template preprocess function for Views Slideshow rendered entity pager.
*/
function template_preprocess_views_slideshow_rendered_entity_pager(&$vars) {
// Call the default fields pager preprocess function.
_views_slideshow_preprocess_views_slideshow_pager_fields($vars);
// Override the (empty) rendered field items with our rendered nodes.
$entity_info = entity_get_info('node');
if (!empty($vars['settings']['views_slideshow_rendered_entity_pager_view_mode']) && !empty($entity_info['view modes'][$vars['settings']['views_slideshow_rendered_entity_pager_view_mode']])) {
$vars['rendered_field_items'] = '';
// Prepare an array with entity ids.
$ids = array();
foreach ($vars['view']->result as $item) {
$ids[] = $item->{$vars['view']->base_field};
}
// Load all entities with the appropriate view mode.
$entities = entity_load($vars['view']->base_table, $ids);
$entities = entity_view($vars['view']->base_table, $entities, $vars['settings']['views_slideshow_rendered_entity_pager_view_mode']);
// Add each themed entity to the array used by views_slideshow.
// We use the views result instead of $entities to keep the expected order.
foreach ($vars['view']->result as $count => $entity) {
$vars['rendered_field_items'] .= theme('views_slideshow_pager_field_item', array(
'vss_id' => $vars['vss_id'],
'item' => render($entities[$vars['view']->base_table][$entity->{$vars['view']->base_field}]),
'count' => $count,
'location' => $vars['location'],
));
}
// Clone the pager fields JavaScript object and methods.
drupal_add_js('Drupal.viewsSlideshowRenderedEntityPager = Drupal.viewsSlideshowPagerFields || {};', 'inline');
}
}
Functions
Name![]() |
Description |
---|---|
template_preprocess_views_slideshow_rendered_entity_pager | Template preprocess function for Views Slideshow rendered entity pager. |
views_slideshow_rendered_entity_pager_theme | Implements hook_theme(). |
views_slideshow_rendered_entity_pager_views_slideshow_widget_pager_form_options | Implements hook_views_slideshow_pager_form_options(). |
views_slideshow_rendered_entity_pager_views_slideshow_widget_pager_info | Implements hook_views_slideshow_widget_pager_info(). |