/** * Set default options */ protected function defineOptions() { $options = parent::defineOptions(); $settings = _owl_default_settings(); foreach ($settings as $k => $v) { $options[$k] = array('default' => $v); } return $options; }
/** * {@inheritdoc} */ public function viewElements(FieldItemListInterface $items, $langcode) { $elements = array(); $files = $this->getEntitiesToView($items, $langcode); // Early opt-out if the field is empty. if (empty($files)) { return $elements; } $url = NULL; $image_link_setting = $this->getSetting('image_link'); // Check if the formatter involves a link. if ($image_link_setting == 'content') { $entity = $items->getEntity(); if (!$entity->isNew()) { $url = $entity->urlInfo(); } } elseif ($image_link_setting == 'file') { $link_file = TRUE; } $image_style_setting = $this->getSetting('image_style'); // Collect cache tags to be added for each item in the field. $cache_tags = array(); if (!empty($image_style_setting)) { $image_style = $this->imageStyleStorage->load($image_style_setting); $cache_tags = $image_style->getCacheTags(); } foreach ($files as $delta => $file) { if (isset($link_file)) { $image_uri = $file->getFileUri(); $url = Url::fromUri(file_create_url($image_uri)); } $cache_tags = Cache::mergeTags($cache_tags, $file->getCacheTags()); // Extract field item attributes for the theme function, and unset them // from the $item so that the field template does not re-render them. $item = $file->_referringItem; $item_attributes = $item->_attributes; unset($item->_attributes); $elements[$delta] = array('#theme' => 'image_formatter', '#item' => $item, '#item_attributes' => $item_attributes, '#image_style' => $image_style_setting, '#url' => $url, '#cache' => array('tags' => $cache_tags)); } $settings = _owl_default_settings(); foreach ($settings as $k => $v) { $s = $this->getSetting($k); $settings[$k] = isset($s) ? $s : $settings[$k]; } return array('#theme' => 'owl', '#items' => $elements, '#settings' => $settings, '#attached' => array('library' => array('owl/owl'))); }