loggerFactory = $logger_factory; $this->formatter = $formatter; $this->manager = $manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $plugin_id, $plugin_definition, $configuration['field_definition'], $configuration['settings'], $configuration['label'], $configuration['view_mode'], $configuration['third_party_settings'], $container->get('logger.factory'), $container->get('slick.formatter'), $container->get('slick.manager') ); } /** * Returns the blazy manager. */ public function blazyManager() { return $this->formatter; } /** * {@inheritdoc} */ public static function defaultSettings() { $settings = SlickDefault::baseSettings(); $settings['view_mode'] = ''; return $settings; } /** * {@inheritdoc} */ public function viewElements(FieldItemListInterface $items, $langcode) { $entities = $this->getEntitiesToView($items, $langcode); // Early opt-out if the field is empty. if (empty($entities)) { return []; } // Collects specific settings to this formatter. $settings = $this->getSettings(); // Asks for Blazy to deal with iFrames, and mobile-optimized lazy loading. $settings['blazy'] = TRUE; $settings['plugin_id'] = $this->getPluginId(); $settings['vanilla'] = TRUE; $build = ['settings' => $settings]; $this->formatter->buildSettings($build, $items); // Build the elements. $this->buildElements($build, $entities, $langcode); return $this->manager()->build($build); } /** * {@inheritdoc} */ public function getScopedFormElements() { return ['no_layouts' => TRUE] + parent::getScopedFormElements(); } }