Yaffs site version 1.1
[yaffs-website] / web / modules / contrib / blazy / tests / modules / blazy_test / src / Plugin / views / style / BlazyViewsTest.php
diff --git a/web/modules/contrib/blazy/tests/modules/blazy_test/src/Plugin/views/style/BlazyViewsTest.php b/web/modules/contrib/blazy/tests/modules/blazy_test/src/Plugin/views/style/BlazyViewsTest.php
new file mode 100644 (file)
index 0000000..13bc41a
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+namespace Drupal\blazy_test\Plugin\views\style;
+
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\blazy\Dejavu\BlazyDefault;
+use Drupal\blazy\Dejavu\BlazyStylePluginBase;
+use Drupal\blazy\BlazyGrid;
+
+/**
+ * Blazy Views Test style plugin.
+ *
+ * @ingroup views_style_plugins
+ *
+ * @ViewsStyle(
+ *   id = "blazy_test",
+ *   title = @Translation("Blazy Views Test"),
+ *   help = @Translation("Display the results in a Blazy Views Test."),
+ *   theme = "blazy_test",
+ *   register_theme = FALSE,
+ *   display_types = {"normal"}
+ * )
+ */
+class BlazyViewsTest extends BlazyStylePluginBase {
+
+  /**
+   * Returns the blazy admin.
+   */
+  public function admin() {
+    return \Drupal::service('blazy_test.admin');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function defineOptions() {
+    $options = [];
+    $defaults = BlazyDefault::extendedSettings() + BlazyDefault::gridSettings();
+    foreach ($defaults as $key => $value) {
+      $options[$key] = ['default' => $value];
+    }
+    return $options + parent::defineOptions();
+  }
+
+  /**
+   * Overrides parent::buildOptionsForm().
+   */
+  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
+    $fields = [
+      'captions',
+      'layouts',
+      'images',
+      'links',
+      'titles',
+      'classes',
+      'overlays',
+      'thumbnails',
+      'layouts',
+    ];
+
+    $definition = $this->getDefinedFieldOptions($fields);
+
+    $definition += [
+      'namespace' => 'blazy',
+      'settings'  => $this->options,
+      'style'     => TRUE,
+    ];
+
+    // Build the form.
+    $this->admin()->buildSettingsForm($form, $definition);
+
+    // Blazy doesn't need complex grid with multiple groups.
+    unset($form['layout'], $form['preserve_keys'], $form['grid_header'], $form['visible_items']);
+  }
+
+  /**
+   * Overrides StylePluginBase::render().
+   */
+  public function render() {
+    $view     = $this->view;
+    $settings = $this->options + BlazyDefault::entitySettings();
+
+    $settings['item_id']   = 'box';
+    $settings['caption']   = array_filter($settings['caption']);
+    $settings['namespace'] = 'blazy';
+    $settings['ratio']     = '';
+    $settings['_views']    = TRUE;
+
+    $elements = [];
+    foreach ($this->renderGrouping($view->result, $settings['grouping']) as $rows) {
+      $items = $this->buildElements($settings, $rows);
+
+      // Supports Blazy formatter multi-breakpoint images if available.
+      $item = isset($items[0]) ? $items[0] : NULL;
+      $this->blazyManager()->isBlazy($settings, $item);
+
+      $elements = BlazyGrid::build($items, $settings);
+    }
+
+    return $elements;
+  }
+
+  /**
+   * Returns blazy_test contents.
+   */
+  public function buildElements(array $settings, $rows) {
+    $build   = [];
+    $view    = $this->view;
+    $item_id = $settings['item_id'];
+
+    foreach ($rows as $index => $row) {
+      $view->row_index = $index;
+
+      $box              = [];
+      $box[$item_id]    = [];
+      $box['#settings'] = $settings;
+
+      // Use Vanilla if so configured.
+      if (!empty($settings['vanilla'])) {
+        $box[$item_id] = $view->rowPlugin->render($row);
+      }
+      else {
+        // Build individual row/ element contents.
+        $this->buildElement($box, $row, $index);
+      }
+
+      // Build blazy items.
+      $build[] = $box;
+      unset($box);
+    }
+
+    unset($view->row_index);
+    return $build;
+  }
+
+}