X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fblazy%2Ftests%2Fmodules%2Fblazy_test%2Fsrc%2FPlugin%2Fviews%2Fstyle%2FBlazyViewsTest.php;fp=web%2Fmodules%2Fcontrib%2Fblazy%2Ftests%2Fmodules%2Fblazy_test%2Fsrc%2FPlugin%2Fviews%2Fstyle%2FBlazyViewsTest.php;h=13bc41ac082af46f59870e6cc354622b09d0932d;hb=eba34333e3c89f208d2f72fa91351ad019a71583;hp=0000000000000000000000000000000000000000;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website 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 index 000000000..13bc41ac0 --- /dev/null +++ b/web/modules/contrib/blazy/tests/modules/blazy_test/src/Plugin/views/style/BlazyViewsTest.php @@ -0,0 +1,136 @@ + $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; + } + +}