abstract class SlickViewsBase in Slick Views 7.3
Same name and namespace in other branches
- 8.2 src/Plugin/views/style/SlickViewsBase.php \Drupal\slick_views\Plugin\views\style\SlickViewsBase
The base class common for Slick style plugins.
Hierarchy
- class \views_object
- class \views_plugin
- class \views_plugin_style
- class \Drupal\blazy\Dejavu\BlazyStylePluginBase uses BlazyStyleBaseTrait, BlazyStyleOptionsTrait, BlazyStylePluginTrait
- class \Drupal\slick_views\Plugin\views\style\SlickViewsBase
- class \Drupal\blazy\Dejavu\BlazyStylePluginBase uses BlazyStyleBaseTrait, BlazyStyleOptionsTrait, BlazyStylePluginTrait
- class \views_plugin_style
- class \views_plugin
Expanded class hierarchy of SlickViewsBase
File
- src/
Plugin/ views/ style/ SlickViewsBase.php, line 13
Namespace
Drupal\slick_views\Plugin\views\styleView source
abstract class SlickViewsBase extends BlazyStylePluginBase {
/**
* The slick service manager.
*
* @var \Drupal\slick\SlickManagerInterface
*/
protected $manager;
/**
* Returns the blazy manager.
*/
public function manager() {
if (!isset($this->manager)) {
$this->manager = new SlickManager();
}
return $this->manager;
}
/**
* Returns the slick admin.
*/
public function admin() {
if (!isset($this->admin)) {
$this->admin = new SlickAdmin($this
->manager());
}
return $this->admin;
}
/**
* {@inheritdoc}
*/
public function init(&$view, &$display, $options = NULL) {
parent::init($view, $display, $options);
// Even empty active to call render; where library is attached if required.
if ($view->use_ajax) {
$this->definition['even empty'] = TRUE;
}
}
/**
* {@inheritdoc}
*/
public function option_definition() {
$options = [];
foreach (SlickDefault::extendedSettings() as $key => $value) {
$options[$key] = [
'default' => $value,
];
}
drupal_alter('slick_views_options_info', $options);
return $options + parent::option_definition();
}
/**
* Returns the defined scopes for the current form.
*/
protected function getDefinedFormScopes() {
// Pass the common field options relevant to this style.
$fields = [
'captions',
'classes',
'images',
'layouts',
'links',
'overlays',
'thumbnails',
'thumb_captions',
'titles',
];
// Fetches the returned field definitions to be used to define form scopes.
$definition = $this
->getDefinedFieldOptions($fields);
foreach ([
'id',
'nav',
'thumb_positions',
'vanilla',
] as $key) {
$definition[$key] = TRUE;
}
$definition['forms'] = [
'fieldable' => TRUE,
'grid' => TRUE,
];
$definition['opening_class'] = 'form--views';
$definition['_views'] = TRUE;
return $definition;
}
/**
* Build the Slick settings form.
*/
public function buildSettingsForm(&$form, $definition) {
$this
->admin()
->buildSettingsForm($form, $definition);
$title = '<p class="form__header form__title">';
$title .= t('Check Vanilla for content/custom markups, not fields. <small>See it under <strong>Format > Show</strong> section. Otherwise slick markups apply which require some fields added below.</small>');
$title .= '</p>';
$form['opening']['#markup'] .= $title;
if (isset($form['image'])) {
$form['image']['#description'] .= ' ' . t('Use Blazy formatter to have it lazyloaded. Other supported Formatters: Colorbox, Intense, Responsive image, Video Embed Field, Youtube Field.');
}
if (isset($form['overlay'])) {
$form['overlay']['#description'] .= ' ' . t('Be sure to CHECK "<strong>Style settings > Use field template</strong>" _only if using Slick formatter for nested sliders, otherwise keep it UNCHECKED!');
}
// Bring in dots thumbnail effect normally used by Slick Image formatter.
$form['thumbnail_effect'] = [
'#type' => 'select',
'#title' => t('Dots thumbnail effect'),
'#options' => [
'hover' => t('Hoverable'),
'grid' => t('Static grid'),
],
'#empty_option' => t('- None -'),
'#description' => t('Dependent on a Skin, Dots and Thumbnail image options. No asnavfor/ Optionset thumbnail is needed. <ol><li><strong>Hoverable</strong>: Dots pager are kept, and thumbnail will be hidden and only visible on dot mouseover, default to min-width 120px.</li><li><strong>Static grid</strong>: Dots are hidden, and thumbnails are displayed as a static grid acting like dots pager.</li></ol>Alternative to asNavFor aka separate thumbnails as slider.'),
'#weight' => -100,
];
}
/**
* Overrides StylePluginBase::render().
*/
protected function buildSettings() {
$settings = parent::buildSettings();
// Prepare needed settings to work with.
$settings['item_id'] = 'slide';
$settings['caption'] = array_filter($settings['caption']);
$settings['namespace'] = 'slick';
$settings['nav'] = !$settings['vanilla'] && $settings['optionset_thumbnail'] && isset($this->view->result[1]);
$settings['overridables'] = empty($settings['override']) ? array_filter($settings['overridables']) : $settings['overridables'];
return $settings;
}
/**
* Returns slick contents.
*/
public function buildElements(array $settings, $rows) {
$build = [];
$view = $this->view;
$item_id = $settings['item_id'];
foreach ($rows as $index => $row) {
$view->row_index = $index;
$slide = [];
$thumb = $slide[$item_id] = [];
// Provides a potential unique thumbnail different from the main image.
if (!empty($settings['thumbnail'])) {
$thumbnail = $this
->getFieldRenderable($row, 0, $settings['thumbnail']);
if (isset($thumbnail['rendered']['#item'])) {
$item = $thumbnail['rendered']['#item'];
// @todo re-check at D7.
$uri = is_object($item) ? $item->uri : $item['uri'];
$settings['thumbnail_style'] = $thumbnail['rendered']['#image_style'];
$settings['thumbnail_uri'] = image_style_path($settings['thumbnail_style'], $uri);
}
}
$slide['settings'] = $settings;
// Use Vanilla slick if so configured, ignoring Slick markups.
if (!empty($settings['vanilla'])) {
$slide[$item_id] = $view->style_plugin->row_plugin
->render($row);
}
else {
// Otherwise, extra works. With a working Views cache, no big deal.
$this
->buildElement($slide, $row, $index);
// Build thumbnail navs if so configured.
if (!empty($settings['nav'])) {
$thumb[$item_id] = empty($settings['thumbnail']) ? [] : $this
->getFieldRendered($index, $settings['thumbnail']);
$thumb['caption'] = empty($settings['thumbnail_caption']) ? [] : $this
->getFieldRendered($index, $settings['thumbnail_caption']);
$build['thumb']['items'][$index] = $thumb;
}
}
if (!empty($settings['class'])) {
$class = $this
->getFieldString($row, $settings['class'], $index, TRUE);
// Ensures useless field name is overriden, even if empty.
$slide['settings']['class'] = empty($class) ? '' : $class;
}
if (empty($slide[$item_id]) && !empty($settings['image'])) {
$slide[$item_id] = $this
->getFieldRendered($index, $settings['image']);
}
$build['items'][$index] = $slide;
unset($slide, $thumb);
}
unset($view->row_index);
return $build;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BlazyStyleBaseTrait:: |
protected | property | The first Blazy formatter found to get data from for lightbox gallery, etc. | |
BlazyStyleBaseTrait:: |
protected | property | The dynamic html settings. | |
BlazyStyleBaseTrait:: |
public | function | Returns the renderable array of field containing rendered and raw data. | |
BlazyStyleBaseTrait:: |
public | function | Returns the first Blazy formatter found. | |
BlazyStyleBaseTrait:: |
protected | function | Sets dynamic html settings. | |
BlazyStyleOptionsTrait:: |
protected | property | The Views as options. | |
BlazyStyleOptionsTrait:: |
public | function | Returns available fields for select options. | |
BlazyStyleOptionsTrait:: |
public | function | Returns the string values for the expected Title, ET label, List, Term. | |
BlazyStylePluginBase:: |
protected | property |
The blazy manager service. Overrides BlazyStyleBaseTrait:: |
|
BlazyStylePluginBase:: |
public | function |
Returns the blazy manager. Overrides BlazyStyleBaseTrait:: |
|
BlazyStylePluginBase:: |
public | function | Returns an individual row/element content. | |
BlazyStylePluginTrait:: |
public | function | Returns the rendered caption fields. | |
BlazyStylePluginTrait:: |
public | function | Returns the rendered field, either string or array. | |
BlazyStylePluginTrait:: |
public | function | Get the image item to work with out of this formatter. | |
BlazyStylePluginTrait:: |
public | function | Returns the modified renderable image_formatter to support lazyload. | |
BlazyStylePluginTrait:: |
public | function | Returns the rendered layout fields. | |
BlazyStylePluginTrait:: |
public | function | Checks if we can work with this formatter, otherwise no go if flattened. | |
SlickViewsBase:: |
protected | property | The slick service manager. | |
SlickViewsBase:: |
public | function | Returns the slick admin. | |
SlickViewsBase:: |
public | function | Returns slick contents. | |
SlickViewsBase:: |
protected | function |
Overrides StylePluginBase::render(). Overrides BlazyStyleBaseTrait:: |
|
SlickViewsBase:: |
public | function | Build the Slick settings form. | |
SlickViewsBase:: |
protected | function | Returns the defined scopes for the current form. | |
SlickViewsBase:: |
public | function |
Initialize a style plugin. Overrides views_plugin_style:: |
|
SlickViewsBase:: |
public | function | Returns the blazy manager. | |
SlickViewsBase:: |
public | function |
Information about options for all kinds of purposes will be held here. Overrides views_plugin_style:: |
1 |
views_object:: |
public | property | Handler's definition. | |
views_object:: |
public | property | Except for displays, options for the object will be held here. | 1 |
views_object:: |
function | Collect this handler's option definition and alter them, ready for use. | ||
views_object:: |
public | function | Views handlers use a special construct function. | 4 |
views_object:: |
public | function | 1 | |
views_object:: |
public | function | ||
views_object:: |
public | function | Always exports the option, regardless of the default value. | |
views_object:: |
public | function | Set default options on this object. | 1 |
views_object:: |
public | function | Set default options. | |
views_object:: |
public | function | Let the handler know what its full definition is. | |
views_object:: |
public | function | Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. | |
views_object:: |
public | function | Unpack a single option definition. | |
views_object:: |
public | function | Unpacks each handler to store translatable texts. | |
views_object:: |
public | function | ||
views_plugin:: |
public | property | The current used views display. | |
views_plugin:: |
public | property | The plugin name of this plugin, for example table or full. | |
views_plugin:: |
public | property | The plugin type of this plugin, for example style or query. | |
views_plugin:: |
public | property |
The top object of a view. Overrides views_object:: |
1 |
views_plugin:: |
public | function | Provide a list of additional theme functions for the theme info page. | |
views_plugin:: |
public | function | Handle any special handling on the validate form. | 9 |
views_plugin:: |
public | function | Return the human readable name of the display. | |
views_plugin:: |
public | function | Returns the summary of the settings in the display. | 8 |
views_plugin:: |
public | function | Provide a full list of possible theme templates used by this style. | |
views_plugin_style:: |
public | property | The row plugin, if it's initialized and the style itself supports it. | |
views_plugin_style:: |
public | property | Store all available tokens row rows. | |
views_plugin_style:: |
public | function | Called by the view builder to see if this style handler wants to interfere with the sorts. If so it should build; if it returns any non-TRUE value, normal sorting will NOT be added to the query. | 1 |
views_plugin_style:: |
public | function | Called by the view builder to let the style build a second set of sorts that will come after any other sorts in the view. | 1 |
views_plugin_style:: |
public | function |
Destructor. Overrides views_object:: |
|
views_plugin_style:: |
public | function | Should the output of the style plugin be rendered even if it's empty. | 1 |
views_plugin_style:: |
public | function | Get a rendered field. | |
views_plugin_style:: |
public | function | Get the raw field value. | |
views_plugin_style:: |
public | function | Return the token replaced row class for the specified row. | |
views_plugin_style:: |
public | function |
Provide a form to edit options for this plugin. Overrides views_plugin:: |
9 |
views_plugin_style:: |
public | function |
Validate the options form. Overrides views_plugin:: |
|
views_plugin_style:: |
public | function | Allow the style to do stuff before each row is rendered. | |
views_plugin_style:: |
public | function |
Add anything to the query that we might need to. Overrides views_plugin:: |
2 |
views_plugin_style:: |
public | function | Render the display in this style. | 5 |
views_plugin_style:: |
public | function | Render all of the fields for a given style and store them on the object. | |
views_plugin_style:: |
public | function | Group records as needed for rendering. | |
views_plugin_style:: |
public | function | Render the grouping sets. | |
views_plugin_style:: |
public | function | Take a value and apply token replacement logic to it. | |
views_plugin_style:: |
public | function | Return TRUE if this style also uses fields. | |
views_plugin_style:: |
public | function | Return TRUE if this style also uses a row plugin. | |
views_plugin_style:: |
public | function | Return TRUE if this style also uses a row plugin. | |
views_plugin_style:: |
public | function | Return TRUE if this style uses tokens. | |
views_plugin_style:: |
public | function |
Validate that the plugin is correct and can be saved. Overrides views_plugin:: |