class Quicktabs in Quick Tabs 8.3
Same name in this branch
- 8.3 src/Plugin/TabRenderer/QuickTabs.php \Drupal\quicktabs\Plugin\TabRenderer\QuickTabs
- 8.3 src/Plugin/views/style/Quicktabs.php \Drupal\quicktabs\Plugin\views\style\Quicktabs
Style plugin to render views rows as tabs.
Plugin annotation
@ViewsStyle(
id = "quicktabs",
title = @Translation("Quick Tabs"),
help = @Translation("Render each views row as a tab."),
theme = "quicktabs_view_quicktabs",
display_types = { "normal" }
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\views\Plugin\views\PluginBase implements DependentPluginInterface, ContainerFactoryPluginInterface, TrustedCallbackInterface, ViewsPluginInterface
- class \Drupal\views\Plugin\views\style\StylePluginBase
- class \Drupal\quicktabs\Plugin\views\style\Quicktabs
- class \Drupal\views\Plugin\views\style\StylePluginBase
- class \Drupal\views\Plugin\views\PluginBase implements DependentPluginInterface, ContainerFactoryPluginInterface, TrustedCallbackInterface, ViewsPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of Quicktabs
File
- src/
Plugin/ views/ style/ Quicktabs.php, line 25
Namespace
Drupal\quicktabs\Plugin\views\styleView source
class Quicktabs extends StylePluginBase {
/**
* Does the style plugin allows to use style plugins.
*
* @var bool
*/
protected $usesRowPlugin = TRUE;
/**
* Does the style plugin support custom css class for the rows.
*
* @var bool
*/
protected $usesRowClass = TRUE;
/**
* Should field labels be enabled by default.
*
* @var bool
*/
protected $defaultFieldLabels = TRUE;
/**
* Mapping tabs to pages.
*
* @var bool
*/
protected $setMapping;
/**
* The render array for the tabs.
*
* @var bool
*/
protected $tabs = [];
/**
* Set default options.
*/
protected function defineOptions() {
$options = parent::defineOptions();
$options['path'] = [
'default' => 'quicktabs',
];
return $options;
}
/**
* Set the tabs.
*/
public function setTabs(array $tabs) {
$this->tabs = $tabs;
}
/**
* Get the tabs.
*/
public function getTabs() {
return $this->tabs;
}
/**
* Set the set mapping.
*/
public function setSetMapping(array $setMapping) {
$this->setMapping = $setMapping;
}
/**
* Get the set mapping.
*/
public function getSetMapping() {
return $this->setMapping;
}
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
foreach ($form['grouping'] as $index => &$field) {
if ($index == 0) {
$field['field']['#required'] = 1;
$field['rendered']['#default_value'] = TRUE;
$field['rendered']['#access'] = FALSE;
$field['rendered_strip']['#access'] = FALSE;
}
elseif ($index > 0) {
unset($form['grouping'][$index]);
}
$current_value = $field['field']['#description']
->getUntranslatedString();
$field['field']['#description'] = $this
->t('You must specify a field by which to group the records. This field will be used for the title of each tab.', [
'@current_value' => $current_value,
]);
}
}
/**
* {@inheritdoc}
*/
public function renderGroupingSets($sets, $level = 0) {
$output = [];
$theme_functions = $this->view
->buildThemeFunctions($this->groupingTheme);
$tab_titles = [];
$link_classes = [
'loaded',
];
$quicktab_id = str_replace('_', '-', $this->view
->id());
$set_count = 0;
foreach ($sets as $index => $set) {
$wrapper_attributes = [];
if ($set_count === 0) {
$wrapper_attributes['class'] = [
'active',
];
}
$tab_titles[] = [
'0' => Link::fromTextAndUrl(new TranslatableMarkup(Xss::filter($index, [
'img',
'em',
'strong',
'h2',
'h3',
'h4',
'h5',
'h6',
'small',
'span',
'i',
'br',
])), Url::fromRoute('<current>', [], [
'attributes' => [
'class' => $link_classes,
],
]))
->toRenderable(),
'#wrapper_attributes' => $wrapper_attributes,
];
$level = isset($set['level']) ? $set['level'] : 0;
$row = reset($set['rows']);
// Render as a grouping set.
if (is_array($row) && isset($row['group'])) {
$single_output = [
'#theme' => $theme_functions,
'#view' => $this->view,
'#grouping' => $this->options['grouping'][$level],
'#rows' => $set['rows'],
];
}
else {
if ($this
->usesRowPlugin()) {
foreach ($set['rows'] as $index => $row) {
$this->view->row_index = $index;
$set['rows'][$index] = $this->view->rowPlugin
->render($row);
}
}
$single_output = $this
->renderRowGroup($set['rows']);
}
$single_output['#grouping_level'] = $level;
$single_output['#title'] = $set['group'];
// Create a mapping of which rows belong in which set
// This can then be used in the theme function to wrap each tab page.
if (!empty($this->options['grouping'])) {
$set_mapping = [];
foreach ($sets as $set_index => $set) {
foreach ($set['rows'] as $row_index => $row) {
$set_mapping[$set_index][] = $row_index;
}
}
}
$output[] = $single_output;
$set_count++;
}
$this
->setSetMapping($set_mapping);
unset($this->view->row_index);
// Create the tabs for rendering.
$tabs = [
'#theme' => 'item_list',
'#items' => $tab_titles,
'#attributes' => [
'class' => [
'quicktabs-tabs',
],
],
];
$this
->setTabs($tabs);
// Add quicktabs wrapper to all the output.
$output['#theme_wrappers'] = [
'container' => [
'#attributes' => [
'class' => [
'quicktabs-wrapper',
],
'id' => 'quicktabs-' . $quicktab_id,
],
],
];
return $output;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
public | property | Plugins's definition | |
PluginBase:: |
public | property | The display object this plugin is for. | |
PluginBase:: |
public | property | Options for this plugin will be held here. | |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
protected | property | Stores the render API renderer. | 3 |
PluginBase:: |
public | property | The top object of a view. | 1 |
PluginBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides DependentPluginInterface:: |
14 |
PluginBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
62 |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
protected | function | Do the work to filter out stored options depending on the defined options. | |
PluginBase:: |
public | function |
Filter out stored options depending on the defined options. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public | function |
Returns an array of available token replacements. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function |
Returns the plugin provider. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
protected | function | Returns the render API renderer. | 1 |
PluginBase:: |
public | function |
Adds elements for available core tokens to a form. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public | function |
Returns a string with any core tokens replaced. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
constant | Include entity row languages when listing languages. | ||
PluginBase:: |
constant | Include negotiated languages when listing languages. | ||
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
protected | function | Makes an array of languages, optionally including special languages. | |
PluginBase:: |
public | function |
Return the human readable name of the display. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public static | function |
Moves form elements into fieldsets for presentation purposes. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public static | function |
Flattens the structure of form elements. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public static | function | Returns substitutions for Views queries for languages. | |
PluginBase:: |
protected | function | Fills up the options of the plugin with defaults. | |
PluginBase:: |
public | function |
Handle any special handling on the validate form. Overrides ViewsPluginInterface:: |
16 |
PluginBase:: |
public | function |
Returns the summary of the settings in the display. Overrides ViewsPluginInterface:: |
6 |
PluginBase:: |
public | function |
Provide a full list of possible theme templates used by this style. Overrides ViewsPluginInterface:: |
1 |
PluginBase:: |
public | function |
Unpack options over our existing defaults, drilling down into arrays
so that defaults don't get totally blown away. Overrides ViewsPluginInterface:: |
|
PluginBase:: |
public | function |
Returns the usesOptions property. Overrides ViewsPluginInterface:: |
8 |
PluginBase:: |
protected | function | Replaces Views' tokens in a given string. The resulting string will be sanitized with Xss::filterAdmin. | 1 |
PluginBase:: |
constant | Query string to indicate the site default language. | ||
PluginBase:: |
public | function |
Constructs a PluginBase object. Overrides PluginBase:: |
|
Quicktabs:: |
protected | property |
Should field labels be enabled by default. Overrides StylePluginBase:: |
|
Quicktabs:: |
protected | property | Mapping tabs to pages. | |
Quicktabs:: |
protected | property | The render array for the tabs. | |
Quicktabs:: |
protected | property |
Does the style plugin support custom css class for the rows. Overrides StylePluginBase:: |
|
Quicktabs:: |
protected | property |
Does the style plugin allows to use style plugins. Overrides StylePluginBase:: |
|
Quicktabs:: |
public | function |
Provide a form to edit options for this plugin. Overrides StylePluginBase:: |
|
Quicktabs:: |
protected | function |
Set default options. Overrides StylePluginBase:: |
|
Quicktabs:: |
public | function | Get the set mapping. | |
Quicktabs:: |
public | function | Get the tabs. | |
Quicktabs:: |
public | function |
Render the grouping sets. Overrides StylePluginBase:: |
|
Quicktabs:: |
public | function | Set the set mapping. | |
Quicktabs:: |
public | function | Set the tabs. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
StylePluginBase:: |
protected | property | The theme function used to render the grouping set. | |
StylePluginBase:: |
protected | property | Stores the rendered field values, keyed by the row index and field name. | |
StylePluginBase:: |
protected | property | Store all available tokens row rows. | |
StylePluginBase:: |
protected | property | Does the style plugin for itself support to add fields to its output. | 3 |
StylePluginBase:: |
protected | property | Does the style plugin support grouping of rows. | 3 |
StylePluginBase:: |
protected | property |
Denotes whether the plugin has an additional options form. Overrides PluginBase:: |
|
StylePluginBase:: |
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 |
StylePluginBase:: |
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 |
StylePluginBase:: |
public | function | Return TRUE if this style enables field labels by default. | 1 |
StylePluginBase:: |
public | function |
Clears a plugin. Overrides PluginBase:: |
|
StylePluginBase:: |
public | function | #pre_render callback for view row field rendering. | |
StylePluginBase:: |
public | function | Should the output of the style plugin be rendered even if it's a empty view. | 2 |
StylePluginBase:: |
public | function | Gets a rendered field. | |
StylePluginBase:: |
public | function | Get the raw field value. | |
StylePluginBase:: |
public | function | Return the token replaced row class for the specified row. | |
StylePluginBase:: |
public | function |
Overrides \Drupal\views\Plugin\views\PluginBase::init(). Overrides PluginBase:: |
|
StylePluginBase:: |
public | function | Allow the style to do stuff before each row is rendered. | |
StylePluginBase:: |
public | function |
Add anything to the query that we might need to. Overrides PluginBase:: |
1 |
StylePluginBase:: |
public | function | Render the display in this style. | 7 |
StylePluginBase:: |
protected | function | Renders all of the fields for a given style and store them on the object. | |
StylePluginBase:: |
public | function | Group records as needed for rendering. | |
StylePluginBase:: |
protected | function | Renders a group of rows of the grouped view. | |
StylePluginBase:: |
public | function | Take a value and apply token replacement logic to it. | |
StylePluginBase:: |
public static | function |
Lists the trusted callbacks provided by the implementing class. Overrides PluginBase:: |
|
StylePluginBase:: |
public | function | Return TRUE if this style also uses fields. | 3 |
StylePluginBase:: |
public | function | Returns the usesGrouping property. | 3 |
StylePluginBase:: |
public | function | Returns the usesRowClass property. | 3 |
StylePluginBase:: |
public | function | Returns the usesRowPlugin property. | 10 |
StylePluginBase:: |
public | function | Return TRUE if this style uses tokens. | |
StylePluginBase:: |
public | function |
Validate that the plugin is correct and can be saved. Overrides PluginBase:: |
|
StylePluginBase:: |
public | function |
Validate the options form. Overrides PluginBase:: |
|
StylePluginBase:: |
public | function | Provide a form in the views wizard if this style is selected. | |
StylePluginBase:: |
public | function | Alter the options of a display before they are added to the view. | 1 |
TrustedCallbackInterface:: |
constant | Untrusted callbacks throw exceptions. | ||
TrustedCallbackInterface:: |
constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. | ||
TrustedCallbackInterface:: |
constant | Untrusted callbacks trigger E_USER_WARNING errors. |