easydb-8.x-1.0-rc1/src/Plugin/EntityBrowser/Widget/Easydb.php
src/Plugin/EntityBrowser/Widget/Easydb.php
<?php namespace Drupal\easydb\Plugin\EntityBrowser\Widget; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\entity_browser\Plugin\EntityBrowser\Widget\Upload; use Drupal\media\Entity\Media; /** * Uses upload to create media entity images. * * @EntityBrowserWidget( * id = "easydb_copy", * label = @Translation("Copy from easydb"), * description = @Translation("Copies images from easydb and creates media entities for them.") * ) */ class Easydb extends Upload { /** * {@inheritdoc} */ public function defaultConfiguration() { return [ 'extensions' => 'jpg jpeg tif png gif', 'media_type' => 'easydb_image', ] + parent::defaultConfiguration(); } /** * {@inheritdoc} */ public function getForm(array &$original_form, FormStateInterface $form_state, array $additional_widget_parameters) { $form = parent::getForm($original_form, $form_state, $additional_widget_parameters); $form['upload']['#upload_validators']['file_validate_extensions'] = [$this->configuration['extensions']]; $form['upload']['#type'] = 'easydb_file'; return $form; } /** * {@inheritdoc} */ protected function prepareEntities(array $form, FormStateInterface $form_state) { if ($mids = $form_state->getValue(['easydb_mids'], FALSE)) { $media_entities = Media::loadMultiple($mids); return $media_entities; } else { return []; } } /** * {@inheritdoc} */ public function submit(array &$element, array &$form, FormStateInterface $form_state) { if (!empty($form_state->getTriggeringElement()['#eb_widget_main_submit'])) { $media_entities = $this->prepareEntities($form, $form_state); // We don't need any array_walk() with setPermanent() and save() (as in // Drupal\entity_browser\Plugin\EntityBrowser\Widget\Upload::submit()) // here because we already save the media entities permanently in // ImportFilesController. $this->selectEntities($media_entities, $form_state); $this->clearFormValues($element, $form_state); } } /** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form = parent::buildConfigurationForm($form, $form_state); $form['extensions'] = [ '#type' => 'textfield', '#title' => $this->t('Allowed extensions'), '#default_value' => $this->configuration['extensions'], '#required' => TRUE, ]; $bundle_options = []; $bundles = $this ->entityTypeManager ->getStorage('media_type') ->loadByProperties(['type' => 'image']); foreach ($bundles as $bundle) { $bundle_options[$bundle->id()] = $bundle->label(); } if (empty($bundle_options)) { $url = Url::fromRoute('entity.media_type.collection')->toString(); $form['media_type'] = [ '#markup' => $this->t('You don\'t have media bundle of the Image type. You should <a href="!link">create one</a>', ['!link' => $url]), ]; } else { $form['media_type'] = [ '#type' => 'select', '#title' => $this->t('Media bundle'), '#default_value' => $this->configuration['media_type'], '#options' => $bundle_options, ]; } return $form; } }