class DraggableViewsSort in DraggableViews 2.0.x
Basic sort handler for Draggableviews Weight.
Plugin annotation
@ViewsSort("draggable_views_sort_default");
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\HandlerBase implements ViewsHandlerInterface
- class \Drupal\views\Plugin\views\sort\SortPluginBase implements CacheableDependencyInterface
- class \Drupal\draggableviews\Plugin\views\sort\DraggableViewsSort
- class \Drupal\views\Plugin\views\sort\SortPluginBase implements CacheableDependencyInterface
- class \Drupal\views\Plugin\views\HandlerBase implements ViewsHandlerInterface
- class \Drupal\views\Plugin\views\PluginBase implements DependentPluginInterface, ContainerFactoryPluginInterface, TrustedCallbackInterface, ViewsPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of DraggableViewsSort
1 file declares its use of DraggableViewsSort
- WithArgs.php in src/
Plugin/ views/ join/ WithArgs.php
File
- src/
Plugin/ views/ sort/ DraggableViewsSort.php, line 15
Namespace
Drupal\draggableviews\Plugin\views\sortView source
class DraggableViewsSort extends SortPluginBase {
/**
* The relationship alias.
*
* @var string
*/
public $alias;
/**
* {@inheritdoc}
*/
protected function defineOptions() {
$options = parent::defineOptions();
$options['draggable_views_reference'] = [
'default' => '',
];
$options['draggable_views_null_order'] = [
'default' => 'after',
];
$options['draggable_views_pass_arguments'] = [
'default' => 0,
];
return $options;
}
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
$view_options = $this
->getViewSortDataOptions();
$form['draggable_views_reference'] = [
'#type' => 'select',
'#title' => $this
->t('Draggable Views Data'),
'#options' => $view_options,
'#description' => $this
->t('Draggable Views Data to sort on.'),
'#default_value' => $this->options['draggable_views_reference'],
'#weight' => -1,
];
$form['draggable_views_null_order'] = [
'#type' => 'radios',
'#title' => $this
->t('NULL Value Order'),
'#options' => [
'before' => "Before",
'after' => "After",
],
'#description' => $this
->t('If an entity does not currently belong in the list, should it be added to the list at the begining or the end.'),
'#default_value' => $this->options['draggable_views_null_order'],
'#weight' => -1,
];
$form['draggable_views_pass_arguments'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Pass Contextual Filters'),
'#description' => $this
->t('Pass contextual filters from this display to the sort display.'),
'#default_value' => $this->options['draggable_views_pass_arguments'],
'#weight' => -1,
];
}
/**
* Called to add the sort to a query.
*/
public function query() {
// We should variablise these somehow??
$base = 'draggableviews_structure';
$base_field = "entity_id";
// Grab our view/plugin reference.
list($view_id, $view_display_id) = $this
->splitViewSortDataOptions($this->options['draggable_views_reference']);
$def = $this->definition;
$def['table'] = $base;
$def['field'] = $base_field;
$def['left_table'] = $this->query->view->storage
->get('base_table');
$def['left_field'] = $this->query->view->storage
->get('base_field');
$def['adjusted'] = TRUE;
$def['extra'][] = [
'field' => 'view_name',
'value' => $view_id,
];
$def['extra'][] = [
'field' => 'view_display',
'value' => $view_display_id,
];
if (!empty($this->definition['extra'])) {
$def['extra'] = $this->definition['extra'];
}
if (!empty($def['join_id'])) {
$id = $def['join_id'];
}
else {
$id = 'draggableviews_with_args';
}
$join = Views::pluginManager('join')
->createInstance($id, $def);
// Use a short alias for this:
$alias = $def['table'];
$this->alias = $this->query
->addRelationship($alias, $join, $this->query->view->storage
->get('base_table'), $this->relationship);
if ($this->options['draggable_views_null_order'] == "before") {
$formula = "!ISNULL({$this->alias}.{$this->realField})";
}
else {
$formula = "ISNULL({$this->alias}.{$this->realField})";
}
// We add both to handle ordering of NULL values.
$this->query
->addOrderBy(NULL, $formula, $this->options['order'], $this->alias . "_" . $this->realField);
$this->query
->addOrderBy($this->alias, $this->realField, $this->options['order']);
}
/**
* Grab available draggable views.
*/
protected function getViewSortDataOptions() {
$view_data = [];
$query = \Drupal::entityQuery('view');
$entity_ids = $query
->execute();
foreach ($entity_ids as $view_id) {
$v = View::load($view_id);
$default_display = NULL;
foreach ($v
->get('display') as $display_id => $display) {
if ($display_id == "default") {
$default_display = $display;
}
else {
// Use default if fields are not overwritten.
$fields = !empty($display['display_options']['fields']) ? $display['display_options']['fields'] : $default_display['display_options']['fields'];
// Need to check that "fields" is an array, view may be configured to
// render rows otherwise.
if (is_array($fields) && in_array("draggableviews", array_keys($fields))) {
if (!isset($view_data[$view_id])) {
$view_data[$view_id] = [
'id' => $view_id,
'label' => $v
->label(),
'displays' => [],
];
}
$view_data[$view_id]['displays'][$display_id] = [
'id' => $display_id,
'label' => $display['display_title'],
];
}
}
}
}
$view_select = [
'this' => "This View/Display",
];
foreach ($view_data as $view_id => $v_data) {
$view_key = $v_data['label'] . " (" . $view_id . ")";
$view_select[$view_key] = [];
foreach ($v_data['displays'] as $display) {
$display_key = $view_id . ":" . $display['id'];
$view_select[$view_key][$display_key] = $display['label'];
}
}
return $view_select;
}
/**
* Split data into view/display ids.
*/
protected function splitViewSortDataOptions($data) {
if (empty($data) || $data == "this") {
return [
$this->view
->id(),
$this->view->current_display,
];
}
$explode = explode(":", $data);
if (count($explode) != 2) {
return [
"",
"",
];
}
return $explode;
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
DraggableViewsSort:: |
public | property | The relationship alias. | |
DraggableViewsSort:: |
public | function |
Basic options for all sort criteria. Overrides SortPluginBase:: |
|
DraggableViewsSort:: |
protected | function |
Information about options for all kinds of purposes will be held here. Overrides SortPluginBase:: |
|
DraggableViewsSort:: |
protected | function | Grab available draggable views. | |
DraggableViewsSort:: |
public | function |
Called to add the sort to a query. Overrides SortPluginBase:: |
|
DraggableViewsSort:: |
protected | function | Split data into view/display ids. | |
HandlerBase:: |
public | property | With field you can override the realField if the real field is not set. | |
HandlerBase:: |
protected | property | The module handler. | 3 |
HandlerBase:: |
public | property | Where the $query object will reside. | 7 |
HandlerBase:: |
public | property | The actual field in the database table, maybe different on other kind of query plugins/special handlers. | |
HandlerBase:: |
public | property | The relationship used for this field. | |
HandlerBase:: |
public | property | The table this handler is attached to. | |
HandlerBase:: |
public | property | The alias of the table of this handler which is used in the query. | |
HandlerBase:: |
protected | property | The views data service. | |
HandlerBase:: |
public | function | Take input from exposed handlers and assign to this handler, if necessary. | 1 |
HandlerBase:: |
public | function |
Check whether given user has access to this handler. Overrides ViewsHandlerInterface:: |
4 |
HandlerBase:: |
public | function |
Return a string representing this handler's name in the UI. Overrides ViewsHandlerInterface:: |
4 |
HandlerBase:: |
public static | function |
Breaks x,y,z and x+y+z into an array. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function |
Determines if the handler is considered 'broken', meaning it's a
placeholder used when a handler can't be found. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function | Render our chunk of the exposed handler form when selecting. | 1 |
HandlerBase:: |
public | function | Provide a form for setting options. | 1 |
HandlerBase:: |
public | function | Provide a form for aggregation settings. | 1 |
HandlerBase:: |
public | function |
Calculates dependencies for the configured plugin. Overrides PluginBase:: |
10 |
HandlerBase:: |
protected | function | Transform a string by a certain method. | |
HandlerBase:: |
public | function | Provide defaults for the handler. | |
HandlerBase:: |
public | function | Displays the Expose form. | |
HandlerBase:: |
public | function |
Ensure the main table for this handler is in the query. This is used
a lot. Overrides ViewsHandlerInterface:: |
2 |
HandlerBase:: |
public | function | Get information about the exposed form for the form renderer. | 1 |
HandlerBase:: |
public | function | Creates cross-database SQL dates. | 2 |
HandlerBase:: |
public | function | Creates cross-database SQL date formatting. | 2 |
HandlerBase:: |
public | function |
Determines the entity type used by this handler. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function |
Shortcut to get a handler's raw field value. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function |
Get the join object that should be used for this handler. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
protected | function | Gets the module handler. | |
HandlerBase:: |
public static | function |
Fetches a handler to join one table to a primary table from the data cache. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
protected | function | Gets views data service. | |
HandlerBase:: |
public | function | If a handler has 'extra options' it will get a little settings widget and another form called extra_options. | 1 |
HandlerBase:: |
public | function |
Initialize the plugin. Overrides PluginBase:: |
6 |
HandlerBase:: |
public | function | Returns TRUE if the exposed filter works like a grouped filter. | 1 |
HandlerBase:: |
public | function | Determine if this item is 'exposed', meaning it provides form elements to let users modify the view. | |
HandlerBase:: |
public | function | Define if the exposed input has to be submitted multiple times. This is TRUE when exposed filters grouped are using checkboxes as widgets. | 1 |
HandlerBase:: |
protected | function | Provides a unique placeholders for handlers. | |
HandlerBase:: |
public | function |
Run after the view is executed, before the result is cached. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function |
Run before the view is built. Overrides ViewsHandlerInterface:: |
2 |
HandlerBase:: |
public | function |
Sanitize the value for output. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function | Sets the module handler. | |
HandlerBase:: |
public | function |
Called just prior to query(), this lets a handler set up any relationship
it needs. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function | ||
HandlerBase:: |
public | function |
Shortcut to display the exposed options form. Overrides ViewsHandlerInterface:: |
|
HandlerBase:: |
public | function | If set to remember exposed input in the session, store it there. | 1 |
HandlerBase:: |
public | function | Submit the exposed handler form. | |
HandlerBase:: |
public | function | Perform any necessary changes to the form exposes prior to storage. There is no need for this function to actually store the data. | |
HandlerBase:: |
public | function | Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. | |
HandlerBase:: |
public | function | Calculates options stored on the handler. | 1 |
HandlerBase:: |
public | function | Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. | 1 |
HandlerBase:: |
public | function | A submit handler that is used for storing temporary items when using multi-step changes, such as ajax requests. | |
HandlerBase:: |
public | function | Provides the handler some groupby. | 13 |
HandlerBase:: |
public | function |
Validate that the plugin is correct and can be saved. Overrides PluginBase:: |
2 |
HandlerBase:: |
public | function | Validate the exposed handler form. | 4 |
HandlerBase:: |
public | function | Validate the options form. | |
HandlerBase:: |
public | function |
Constructs a Handler object. Overrides PluginBase:: |
45 |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
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:: |
protected | property | Denotes whether the plugin has an additional options form. | 8 |
PluginBase:: |
public | property | The top object of a view. | 1 |
PluginBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
63 |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Clears a plugin. Overrides ViewsPluginInterface:: |
2 |
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:: |
2 |
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 |
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. | ||
SortPluginBase:: |
public | function |
Display whether or not the sort order is ascending or descending. Overrides HandlerBase:: |
|
SortPluginBase:: |
public | function |
Form for exposed handler options. Overrides HandlerBase:: |
|
SortPluginBase:: |
public | function |
Determine if a sort can be exposed. Overrides HandlerBase:: |
|
SortPluginBase:: |
public | function |
Provide default options for exposed sorts. Overrides HandlerBase:: |
|
SortPluginBase:: |
public | function |
The cache contexts associated with this object. Overrides CacheableDependencyInterface:: |
|
SortPluginBase:: |
public | function |
The maximum age for which this object may be cached. Overrides CacheableDependencyInterface:: |
|
SortPluginBase:: |
public | function |
The cache tags associated with this object. Overrides CacheableDependencyInterface:: |
|
SortPluginBase:: |
public | function |
Shortcut to display the expose/hide button. Overrides HandlerBase:: |
|
SortPluginBase:: |
protected | function | Shortcut to display the value form. | |
SortPluginBase:: |
protected | function | Provide a list of options for the default sort form. | |
SortPluginBase:: |
public | function | ||
SortPluginBase:: |
protected | function | ||
SortPluginBase:: |
public | function |
Simple submit handler. Overrides PluginBase:: |
|
SortPluginBase:: |
public static | function |
Lists the trusted callbacks provided by the implementing class. Overrides PluginBase:: |
|
SortPluginBase:: |
public | function |
Validate the options form. Overrides HandlerBase:: |
|
SortPluginBase:: |
public | function |
Simple validate handler. Overrides PluginBase:: |
|
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
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. | |
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. |