blazy-8.x-2.x-dev/src/Form/TraitAdminBase.php
src/Form/TraitAdminBase.php
<?php namespace Drupal\blazy\Form; use Drupal\blazy\Theme\Admin; use Drupal\blazy\Utility\Path; /** * A blazy admin Trait to declutter, and focus more on form elements. */ trait TraitAdminBase { use TraitScopes; use TraitDescriptions; use TraitAdminOptions; /** * The typed config manager service. * * @var \Drupal\Core\Config\TypedConfigManagerInterface */ protected $typedConfig; /** * {@inheritdoc} */ public function getEntityDisplayRepository() { return $this->entityDisplayRepository; } /** * {@inheritdoc} */ public function getTypedConfig() { return $this->typedConfig; } /** * {@inheritdoc} */ public function blazyManager() { return $this->blazyManager; } /** * {@inheritdoc} */ public function isAdminCss(): bool { $admin_css = $this->blazyManager->config('admin_css', 'blazy.settings') ?: FALSE; // Disable the admin css in the off canvas menu, to avoid conflicts with // the active frontend theme. $uris = $this->getUri(); if ($admin_css && $uri = $uris['uri']) { $wrapper_format = $uris['wrapper_format'] ?? ''; if ($wrapper_format === "drupal_dialog.off_canvas" || strpos($uri, '/views/nojs') !== FALSE || strpos($uri, '/layout_builder/') !== FALSE) { $admin_css = FALSE; } } return $admin_css; } /** * {@inheritdoc} */ public function isAdminLb(): bool { $uris = $this->getUri(); return strpos($uris['uri'], '/layout_builder/') !== FALSE; } /** * Provides tabs menu. */ public function tabify(array &$form, $form_id, $region): void { Admin::tabify($form, $form_id, $region); } /** * {@inheritdoc} */ public function themeDescription(array &$form, array $parents = []): void { Admin::themeDescription($form, $parents); } /** * {@inheritdoc} */ public function toOptions(array $data): array { return $this->blazyManager->toOptions($data); } /** * Returns the current request object. */ protected function getCurrentRequest() { if ($request = Path::requestStack()) { return $request->getCurrentRequest(); } return NULL; } /** * {@inheritdoc} */ public function buildSettingsForm(array &$form, array $definition): void { } /** * {@inheritdoc} */ public function fieldableForm(array &$form, array $definition): void { } /** * {@inheritdoc} */ public function imageStyleForm(array &$form, array $definition): void { } /** * {@inheritdoc} */ public function getSettingsSummary(array $definition): array { return []; } /** * Returns form opening classes. */ protected function getOpeningClasses($scopes): array { $namespace = $scopes->get('namespace', 'blazy'); $classes = []; $items = ['blazy', 'slick', $namespace, 'half']; if ($scopes->is('_views')) { $items[] = 'views'; } if ($scopes->is('vanilla')) { $items[] = 'vanilla'; } if ($scopes->is('grid_required')) { $items[] = 'grid-required'; } if ($plugin_id = $scopes->get('plugin_id')) { $items[] = 'plugin-' . str_replace('_', '-', $plugin_id); } if ($field_type = $scopes->get('field.type')) { $items[] = str_replace('_', '-', $field_type); } foreach ($items as $class) { $classes[] = 'form--' . $class; } $classes[] = 'b-tooltip'; $classes[] = 'b-tooltip--lg'; return $classes; } /** * Returns the admin URI. */ protected function getUri(): array { $uri = $wrapper_format = ''; if ($current = $this->getCurrentRequest()) { $uri = $current->getRequestUri(); $wrapper_format = $current->query->get('_wrapper_format'); } return ['uri' => $uri, 'wrapper_format' => $wrapper_format]; } /** * Initialize the grid. */ protected function initGrid($total, $classes): array { $options = [ 'count' => $total, 'classes' => $classes, ]; $grids = $this->blazyManager->initGrid($options); $attrs = $grids['attributes']; $classes = implode(' ', $attrs['class']); return [ 'classes' => $classes, 'settings' => $grids['settings'], ]; } /** * Returns the supported multi-breakpoint grids. */ protected function isMultiBreakpoint(array $definition): bool { $settings = $definition['settings'] ?? []; if ($style = $settings['style'] ?? '') { return in_array($style, ['flexbox', 'nativegrid']); } return FALSE; } }