class GridStackStylizer in GridStack 8.2
Same name in this branch
- 8.2 src/GridStackStylizer.php \Drupal\gridstack\GridStackStylizer
- 8.2 src/Annotation/GridStackStylizer.php \Drupal\gridstack\Annotation\GridStackStylizer
Implements GridStackStylizerInterface.
Hierarchy
- class \Drupal\Component\Plugin\PluginManagerBase implements PluginManagerInterface uses DiscoveryTrait
- class \Drupal\Core\Plugin\DefaultPluginManager implements CachedDiscoveryInterface, PluginManagerInterface, CacheableDependencyInterface uses DiscoveryCachedTrait, UseCacheBackendTrait
- class \Drupal\gridstack\GridStackPluginManagerBase implements MapperInterface, GridStackPluginManagerInterface uses StringTranslationTrait
- class \Drupal\gridstack\GridStackStylizer implements GridStackStylizerInterface
- class \Drupal\gridstack\GridStackPluginManagerBase implements MapperInterface, GridStackPluginManagerInterface uses StringTranslationTrait
- class \Drupal\Core\Plugin\DefaultPluginManager implements CachedDiscoveryInterface, PluginManagerInterface, CacheableDependencyInterface uses DiscoveryCachedTrait, UseCacheBackendTrait
Expanded class hierarchy of GridStackStylizer
1 string reference to 'GridStackStylizer'
1 service uses GridStackStylizer
File
- src/
GridStackStylizer.php, line 11
Namespace
Drupal\gridstackView source
class GridStackStylizer extends GridStackPluginManagerBase implements GridStackStylizerInterface {
/**
* {@inheritdoc}
*/
protected static $path = 'Plugin/gridstack/stylizer';
/**
* {@inheritdoc}
*/
protected static $interface = 'Drupal\\gridstack\\GridStackStylizerPluginInterface';
/**
* {@inheritdoc}
*/
protected static $annotation = 'Drupal\\gridstack\\Annotation\\GridStackStylizer';
/**
* {@inheritdoc}
*/
protected static $key = 'gridstack_stylizer';
/**
* The admin regions.
*
* @var array
*/
protected $regions = [];
/**
* The loaded stylizer plugin.
*
* @var array
*/
protected $loadStyle;
/**
* The style plugin.
*
* @var \Drupal\gridstack\Plugin\gridstack\stylizer\Style
*/
protected $style;
/**
* The builder plugin.
*
* @var \Drupal\gridstack\Plugin\gridstack\stylizer\Builder
*/
protected $builder;
/**
* The form plugin.
*
* @var \Drupal\gridstack\Plugin\gridstack\stylizer\Form
*/
protected $form;
/**
* {@inheritdoc}
*/
public function style(array $configuration = [], $reload = FALSE) {
if (!isset($this->style) || $reload) {
$this->style = $this
->loadStyle('style', $configuration, $reload);
}
return $this->style;
}
/**
* Sets the style plugin.
*/
private function setStyle(array $configuration = [], $reload = FALSE) {
$this->style = $this
->loadStyle('style', $configuration, $reload);
return $this;
}
/**
* Returns a particular style from settings.
*
* @todo rename to ::getConfiguredStyle to avoid confusion?
*/
public function getStyle($key, array $settings) {
return $this
->style()
->getStyle($key, $settings);
}
/**
* Returns a particular style from settings.
*/
public function getConfiguredStyle($key, array $settings) {
return $this
->style()
->getStyle($key, $settings);
}
/**
* {@inheritdoc}
*/
public function builder(array $configuration = [], $reload = FALSE) {
if (!isset($this->builder) || $reload) {
$this->builder = $this
->loadStyle('builder', $configuration, $reload);
}
return $this->builder;
}
/**
* Sets the builder plugin.
*/
private function setBuilder(array $configuration = [], $reload = FALSE) {
$this->builder = $this
->loadStyle('builder', $configuration, $reload);
return $this;
}
/**
* {@inheritdoc}
*/
public function form(array $configuration = [], $reload = FALSE) {
if (!isset($this->form) || $reload) {
$this->form = $this
->loadStyle('form', $configuration, $reload);
}
return $this->form;
}
/**
* Sets the form plugin.
*/
public function setForm(array $configuration = [], $reload = FALSE) {
$this->form = $this
->loadStyle('form', $configuration, $reload);
return $this;
}
/**
* {@inheritdoc}
*/
private function loadStyle($id = 'style', array $configuration = [], $reload = FALSE) {
if (!isset($this->loadStyle[$id]) || $reload) {
$this->loadStyle[$id] = $this
->load($id, $configuration);
}
return $this->loadStyle[$id];
}
/**
* Provides gridstack skins and libraries.
*/
public function attach(array &$load, array $attach = []) {
if (!empty($attach['_stylizer'])) {
$load['library'][] = 'gridstack/stylizer';
$this
->setAttachments($load, $attach);
}
}
/**
* Prepares the settings, selector and active styles.
*/
public function prepare(array &$element, array &$attributes, array &$settings, $optionset) {
// Provides configurable attributes and background media if so configured.
// Runs before ::containerAttributes to pass the media settings.
$this
->setStyle($settings);
if ($media = $this
->style()
->buildMedia($attributes, $settings)) {
$element['#preface']['media'] = $media;
}
// Provides admin utilities.
if (!empty($settings['_ipe'])) {
$this
->setBuilder($settings);
$this->regions = $this
->builder()
->regions($element);
if ($links = $this
->builder()
->getVariantEditor($settings, $optionset)) {
$pos = $this
->config('editor_pos') == 'bottom' ? '#bottom' : '#aside';
$element[$pos]['layout_editor'] = $links;
}
}
}
/**
* Modifies item content and attributes.
*/
public function modifyItem($delta, array &$settings, array &$content, array &$attributes, array &$content_attributes) {
$rid = isset($settings['rid']) ? $settings['rid'] : -1;
if (empty($settings['_ipe']) && !empty($settings['contentless'])) {
$content['box'] = [];
}
// Layout Builder only output for granted users.
if (!empty($settings['_ipe']) && isset($this->regions[$rid])) {
$this
->builder()
->adminAttributes($content['box'], $content_attributes, $settings, $this->regions);
}
// Provides background media to support contentless, if any.
if ($media = $this
->style()
->buildMedia($content_attributes, $settings)) {
$content['box']['preface'] = $media;
$content['box']['preface']['#weight'] = -100;
}
}
/**
* Builds aggregated styles based on the provided settings.
*
* This is not saved to public directory due to too small a portion.
* Not a big deal, as it is always unique to an edited page, not re-usable.
* Aside it is recommended by lighthouse relevant for the above-fold rules.
*/
public function rootStyles(array &$element, array $styles, array $settings) {
if ($rules = $this
->style()
->parseStyles($styles, TRUE)) {
$css = implode('', reset($rules));
$element['#attached']['html_head'][] = [
[
'#tag' => 'style',
'#value' => $css,
'#weight' => 1,
],
'gridstack-style-' . key($rules),
];
if (!empty($settings['_ipe'])) {
$element['#attributes'] = isset($element['#attributes']) ? $element['#attributes'] : [];
$this
->builder()
->rootAttributes($element['#attributes'], $styles);
}
}
}
/**
* Parses the formatted styles per region based on settings.
*/
public function styles(array &$attributes, array $settings) {
$styles = $this
->style()
->getStyles($settings);
if ($styles && ($data = $this
->style()
->getSelector($settings, '', $styles))) {
// Only inline it to DOM element if at LB edit pages.
if (!empty($settings['_ipe'])) {
$this
->builder()
->inlineAttributes($attributes, $data);
}
return $data;
}
return [];
}
/**
* Provides both CSS grid and js-driven attributes configurable via UI.
*/
public function attributes(array &$attributes, array $settings) {
$this
->style()
->attributes($attributes, $settings);
}
/**
* Returns the module feature CSS classes, not available at CSS frameworks.
*/
public function getInternalClasses() {
return $this
->style()
->getInternalClasses();
}
/**
* Returns classes that can be used for select options.
*/
public function getMergedClasses($flatten = FALSE, array $framework_classes = []) {
$cid = $flatten ? 'gridstack_classes_flattened' : 'gridstack_classes_grouped';
if ($cache = $this->cacheBackend
->get($cid)) {
return $cache->data;
}
$output = [];
if ($classes = $this
->mergeFrameworkAndInternalClasses($framework_classes)) {
$grouped = $ungrouped = [];
foreach ($classes as $group => $data) {
$grouped[$group] = $data;
$items = [];
foreach ($data as $datum) {
$items[] = $datum;
}
$ungrouped = NestedArray::mergeDeep($ungrouped, $items);
}
// Do not use array_unique() here, was processed per group instead.
$output = $flatten ? $ungrouped : $grouped;
$this->moduleHandler
->alter('gridstack_classes_preset', $output, $grouped, $ungrouped, $flatten);
ksort($output);
$count = count($output);
$tags = Cache::buildTags($cid, [
'count:' . $count,
]);
$this->cacheBackend
->set($cid, $output, Cache::PERMANENT, $tags);
}
return $output;
}
/**
* Merges preset classes with the custom defined ones.
*/
private function mergeFrameworkAndInternalClasses(array $classes = []) {
$classes = $classes ? NestedArray::mergeDeep($this
->getInternalClasses(), $classes) : $this
->getInternalClasses();
if ($fw_classes = $this
->config('fw_classes')) {
$fw_classes = array_map('trim', explode("\n", $fw_classes));
foreach ($fw_classes as $fw_class) {
if (strpos($fw_class, '|') !== FALSE) {
list($group, $group_class) = array_pad(array_map('trim', explode("|", $fw_class, 2)), 2, NULL);
$group_classes = array_map('trim', explode(" ", $group_class));
$new_group = [];
foreach ($group_classes as $group_class) {
$new_group[] = $group_class;
}
$new_group = isset($classes[$group]) ? NestedArray::mergeDeep($classes[$group], $new_group) : $new_group;
$classes[$group] = array_unique($new_group);
}
}
}
return $classes;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DefaultPluginManager:: |
protected | property | Additional namespaces the annotation discovery mechanism should scan for annotation definitions. | |
DefaultPluginManager:: |
protected | property | Name of the alter hook if one should be invoked. | |
DefaultPluginManager:: |
protected | property | The cache key. | |
DefaultPluginManager:: |
protected | property | An array of cache tags to use for the cached definitions. | |
DefaultPluginManager:: |
protected | property | A set of defaults to be referenced by $this->processDefinition() if additional processing of plugins is necessary or helpful for development purposes. | 9 |
DefaultPluginManager:: |
protected | property | The module handler to invoke the alter hook. | 1 |
DefaultPluginManager:: |
protected | property | An object that implements \Traversable which contains the root paths keyed by the corresponding namespace to look for plugin implementations. | |
DefaultPluginManager:: |
protected | property | The name of the annotation that contains the plugin definition. | |
DefaultPluginManager:: |
protected | property | The interface each plugin should implement. | 1 |
DefaultPluginManager:: |
protected | property | The subdirectory within a namespace to look for plugins, or FALSE if the plugins are in the top level of the namespace. | |
DefaultPluginManager:: |
protected | function | Invokes the hook to alter the definitions if the alter hook is set. | 1 |
DefaultPluginManager:: |
protected | function | Sets the alter hook name. | |
DefaultPluginManager:: |
public | function |
Clears static and persistent plugin definition caches. Overrides CachedDiscoveryInterface:: |
5 |
DefaultPluginManager:: |
protected | function | Extracts the provider from a plugin definition. | |
DefaultPluginManager:: |
protected | function | Finds plugin definitions. | 7 |
DefaultPluginManager:: |
private | function | Fix the definitions of context-aware plugins. | |
DefaultPluginManager:: |
public | function |
The cache contexts associated with this object. Overrides CacheableDependencyInterface:: |
|
DefaultPluginManager:: |
protected | function | Returns the cached plugin definitions of the decorated discovery class. | |
DefaultPluginManager:: |
public | function |
The maximum age for which this object may be cached. Overrides CacheableDependencyInterface:: |
|
DefaultPluginManager:: |
public | function |
The cache tags associated with this object. Overrides CacheableDependencyInterface:: |
|
DefaultPluginManager:: |
public | function |
Gets the definition of all plugins for this type. Overrides DiscoveryTrait:: |
2 |
DefaultPluginManager:: |
protected | function |
Gets the plugin discovery. Overrides PluginManagerBase:: |
12 |
DefaultPluginManager:: |
protected | function |
Gets the plugin factory. Overrides PluginManagerBase:: |
|
DefaultPluginManager:: |
public | function | Performs extra processing on plugin definitions. | 13 |
DefaultPluginManager:: |
protected | function | Determines if the provider of a definition exists. | 3 |
DefaultPluginManager:: |
public | function | Initialize the cache backend. | |
DefaultPluginManager:: |
protected | function | Sets a cache of plugin definitions for the decorated discovery class. | |
DefaultPluginManager:: |
public | function |
Disable the use of caches. Overrides CachedDiscoveryInterface:: |
1 |
DiscoveryCachedTrait:: |
protected | property | Cached definitions array. | 1 |
DiscoveryCachedTrait:: |
public | function |
Overrides DiscoveryTrait:: |
3 |
DiscoveryTrait:: |
protected | function | Gets a specific plugin definition. | |
DiscoveryTrait:: |
public | function | ||
GridStackPluginManagerBase:: |
protected | property | The plugin attachments. | |
GridStackPluginManagerBase:: |
protected | property | The config factory. | |
GridStackPluginManagerBase:: |
protected | property | The implementors of a method. | |
GridStackPluginManagerBase:: |
public | function | Returns gridstack config shortcut. | |
GridStackPluginManagerBase:: |
public | function | Returns cache backend service. | |
GridStackPluginManagerBase:: |
protected | function | Returns gridstack plugin data. | |
GridStackPluginManagerBase:: |
public | function | Returns available data for select options. | |
GridStackPluginManagerBase:: |
protected | function | Returns plugins names implementing a method. | |
GridStackPluginManagerBase:: |
public | function |
Returns an instance of a plugin given a plugin id. Overrides GridStackPluginManagerInterface:: |
|
GridStackPluginManagerBase:: |
public | function | Returns all available plugins. | |
GridStackPluginManagerBase:: |
protected | function | Collects attachments from plugins. | |
GridStackPluginManagerBase:: |
public | function |
Creates the discovery object. Overrides DefaultPluginManager:: |
|
GridStackStylizer:: |
protected static | property |
The plugin annotation. Overrides GridStackPluginManagerBase:: |
|
GridStackStylizer:: |
protected | property | The builder plugin. | |
GridStackStylizer:: |
protected | property | The form plugin. | |
GridStackStylizer:: |
protected static | property |
The plugin interface. Overrides GridStackPluginManagerBase:: |
|
GridStackStylizer:: |
protected static | property |
The plugin key. Overrides GridStackPluginManagerBase:: |
|
GridStackStylizer:: |
protected | property | The loaded stylizer plugin. | |
GridStackStylizer:: |
protected static | property |
The plugin path. Overrides GridStackPluginManagerBase:: |
|
GridStackStylizer:: |
protected | property | The admin regions. | |
GridStackStylizer:: |
protected | property | The style plugin. | |
GridStackStylizer:: |
public | function | Provides gridstack skins and libraries. | |
GridStackStylizer:: |
public | function | Provides both CSS grid and js-driven attributes configurable via UI. | |
GridStackStylizer:: |
public | function | ||
GridStackStylizer:: |
public | function | ||
GridStackStylizer:: |
public | function | Returns a particular style from settings. | |
GridStackStylizer:: |
public | function | Returns the module feature CSS classes, not available at CSS frameworks. | |
GridStackStylizer:: |
public | function |
Returns classes that can be used for select options. Overrides GridStackStylizerInterface:: |
|
GridStackStylizer:: |
public | function | Returns a particular style from settings. | |
GridStackStylizer:: |
private | function | ||
GridStackStylizer:: |
private | function | Merges preset classes with the custom defined ones. | |
GridStackStylizer:: |
public | function | Modifies item content and attributes. | |
GridStackStylizer:: |
public | function | Prepares the settings, selector and active styles. | |
GridStackStylizer:: |
public | function | Builds aggregated styles based on the provided settings. | |
GridStackStylizer:: |
private | function | Sets the builder plugin. | |
GridStackStylizer:: |
public | function | Sets the form plugin. | |
GridStackStylizer:: |
private | function | Sets the style plugin. | |
GridStackStylizer:: |
public | function | ||
GridStackStylizer:: |
public | function | Parses the formatted styles per region based on settings. | |
PluginManagerBase:: |
protected | property | The object that discovers plugins managed by this manager. | |
PluginManagerBase:: |
protected | property | The object that instantiates plugins managed by this manager. | |
PluginManagerBase:: |
protected | property | The object that returns the preconfigured plugin instance appropriate for a particular runtime condition. | |
PluginManagerBase:: |
public | function |
Creates a pre-configured instance of a plugin. Overrides FactoryInterface:: |
12 |
PluginManagerBase:: |
public | function |
Gets a preconfigured instance of a plugin. Overrides MapperInterface:: |
7 |
PluginManagerBase:: |
protected | function | Allows plugin managers to specify custom behavior if a plugin is not found. | 1 |
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. | |
UseCacheBackendTrait:: |
protected | property | Cache backend instance. | |
UseCacheBackendTrait:: |
protected | property | Flag whether caches should be used or skipped. | |
UseCacheBackendTrait:: |
protected | function | Fetches from the cache backend, respecting the use caches flag. | 1 |
UseCacheBackendTrait:: |
protected | function | Stores data in the persistent cache, respecting the use caches flag. |