3 namespace Drupal\blazy_test\Form;
5 use Drupal\Core\StringTranslation\StringTranslationTrait;
6 use Drupal\Component\Utility\Html;
7 use Symfony\Component\DependencyInjection\ContainerInterface;
8 use Drupal\blazy\Form\BlazyAdminInterface;
9 use Drupal\blazy\BlazyManagerInterface;
12 * Provides resusable admin functions or form elements.
14 class BlazyAdminTest implements BlazyAdminTestInterface {
16 use StringTranslationTrait;
19 * The blazy admin service.
21 * @var \Drupal\blazy\Form\BlazyAdminInterface
23 protected $blazyAdmin;
26 * The blazy_test manager service.
28 * @var \Drupal\blazy_test\BlazyManagerInterface
33 * Static cache for the skin definition.
37 protected $skinDefinition;
40 * Static cache for the skin options.
44 protected $skinOptions;
47 * Constructs a GridStackAdmin object.
49 public function __construct(BlazyAdminInterface $blazy_admin, BlazyManagerInterface $manager) {
50 $this->blazyAdmin = $blazy_admin;
51 $this->manager = $manager;
57 public static function create(ContainerInterface $container) {
58 return new static($container->get('blazy.admin.extended'), $container->get('blazy.manager'));
62 * Returns the blazy admin.
64 public function blazyAdmin() {
65 return $this->blazyAdmin;
69 * Returns the blazy_test manager.
71 public function manager() {
72 return $this->manager;
76 * Returns defined skins as registered via hook_blazy_test_skins_info().
78 public function getSkins() {
79 if (!isset($this->skinDefinition)) {
80 $this->skinDefinition = $this->manager->buildSkins('blazy_test', '\Drupal\blazy_test\BlazyTestSkin');
83 return $this->skinDefinition;
87 * Returns all settings form elements.
89 public function buildSettingsForm(array &$form, $definition = []) {
91 'namespace' => 'blazy',
93 'skins' => $this->getSkinOptions(),
98 foreach (['background', 'caches', 'fieldable_form', 'id', 'vanilla'] as $key) {
99 $definition[$key] = TRUE;
102 $definition['layouts'] = isset($definition['layouts']) ? array_merge($this->getLayoutOptions(), $definition['layouts']) : $this->getLayoutOptions();
104 $this->openingForm($form, $definition);
105 $this->mainForm($form, $definition);
106 $this->closingForm($form, $definition);
110 * Returns the opening form elements.
112 public function openingForm(array &$form, $definition = []) {
113 $this->blazyAdmin->openingForm($form, $definition);
117 * Returns the main form elements.
119 public function mainForm(array &$form, $definition = []) {
120 if (!empty($definition['image_style_form'])) {
121 $this->blazyAdmin->imageStyleForm($form, $definition);
124 if (!empty($definition['media_switch_form'])) {
125 $this->blazyAdmin->mediaSwitchForm($form, $definition);
128 if (!empty($definition['grid_form'])) {
129 $this->blazyAdmin->gridForm($form, $definition);
132 if (!empty($definition['fieldable_form'])) {
133 $this->blazyAdmin->fieldableForm($form, $definition);
136 if (!empty($definition['breakpoints'])) {
137 $this->blazyAdmin->breakpointsForm($form, $definition);
142 * Returns the closing form elements.
144 public function closingForm(array &$form, $definition = []) {
145 $this->blazyAdmin->closingForm($form, $definition);
149 * Returns available blazy_test skins for select options.
151 public function getSkinOptions() {
152 if (!isset($this->skinOptions)) {
153 $this->skinOptions = [];
154 foreach ($this->getSkins() as $skin => $properties) {
155 $this->skinOptions[$skin] = Html::escape($properties['name']);
159 return $this->skinOptions;
163 * Returns default layout options for the core Image, or Views.
165 public function getLayoutOptions() {
167 'bottom' => $this->t('Caption bottom'),
168 'center' => $this->t('Caption center'),
169 'top' => $this->t('Caption top'),
174 * Return the field formatter settings summary.
176 * @deprecated: Removed for self::getSettingsSummary().
178 public function settingsSummary($plugin, $definition = []) {
179 return $this->blazyAdmin->settingsSummary($plugin, $definition);
183 * Return the field formatter settings summary.
185 * @todo: Remove second param $plugin for post-release for Blazy RC2+.
187 public function getSettingsSummary(array $definition = [], $plugin = NULL) {
188 // @todo: Remove condition for Blazy RC2+.
189 if (!method_exists($this->blazyAdmin, 'getSettingsSummary')) {
190 return $this->blazyAdmin->settingsSummary($plugin, $definition);
193 return $this->blazyAdmin->getSettingsSummary($definition);
197 * Returns available fields for select options.
199 public function getFieldOptions($target_bundles = [], $allowed_field_types = [], $entity_type_id = 'media', $target_type = '') {
200 return $this->blazyAdmin->getFieldOptions($target_bundles, $allowed_field_types, $entity_type_id, $target_type);
204 * Returns re-usable logic, styling and assets across fields and Views.
206 public function finalizeForm(array &$form, $definition = []) {
207 $this->blazyAdmin->finalizeForm($form, $definition);