From 32dc1644472775b08d959efe9fb20702b81b450c Mon Sep 17 00:00:00 2001 From: Primsi Date: Fri, 19 Feb 2016 16:23:18 +0100 Subject: [PATCH] Issue #2671914: Implement EB configuration UI --- .../Widget/DropzoneJsEbWidget.php | 16 ++++++++ .../Widget/MediaEntityDropzoneJsEbWidget.php | 38 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php b/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php index aadd9ba..54db802 100644 --- a/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php +++ b/modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php @@ -211,4 +211,20 @@ protected function validateExtension($filename, $extensions) { return TRUE; } + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $configuration = $this->getConfiguration(); + $settings = $configuration['settings']; + $form += parent::buildConfigurationForm($form, $form_state); + + $form['dropzone_description'] = [ + '#type' => 'textfield', + '#title' => $this->t('Dropzone drag-n-drop zone text'), + '#default_value' => $settings['dropzone_description'], + ]; + + return $form; + } } diff --git a/modules/eb_widget/src/Plugin/EntityBrowser/Widget/MediaEntityDropzoneJsEbWidget.php b/modules/eb_widget/src/Plugin/EntityBrowser/Widget/MediaEntityDropzoneJsEbWidget.php index 3d893c9..ce60691 100644 --- a/modules/eb_widget/src/Plugin/EntityBrowser/Widget/MediaEntityDropzoneJsEbWidget.php +++ b/modules/eb_widget/src/Plugin/EntityBrowser/Widget/MediaEntityDropzoneJsEbWidget.php @@ -11,6 +11,7 @@ use Drupal\Core\Entity\EntityManagerInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Form\FormStateInterface; +use Drupal\Core\Link; use Drupal\Core\Session\AccountProxyInterface; use Drupal\dropzonejs\DropzoneJsUploadSaveInterface; use Drupal\dropzonejs\Events\DropzoneMediaEntityCreateEvent; @@ -137,4 +138,41 @@ public function submit(array &$element, array &$form, FormStateInterface $form_s $this->clearFormValues($element, $form_state); } } + + /** + * {@inheritdoc} + */ + public function buildConfigurationForm(array $form, FormStateInterface $form_state) { + $configuration = $this->getConfiguration(); + $settings = $configuration['settings']; + $form += parent::buildConfigurationForm($form, $form_state); + + $options = []; + $media_bundles = $this->entityManager->getBundleInfo('media'); + if (!empty($media_bundles)) { + foreach ($media_bundles as $id => $bundle) { + $options[$id] = $bundle['label']; + } + $disabled = FALSE; + $description = $this->t('Select the type of media entity that you want to create from the uploaded files.'); + } + else { + $disabled = TRUE; + $description = $this->t('You must @create_bundle before using this widget.', [ + '@create_bundle' => Link::createFromRoute($this->t('create a media bundle'), 'media.bundle_add')->toString() + ]); + } + + $form['media_entity_bundle'] = [ + '#type' => 'select', + '#title' => $this->t('Media bundle to create'), + '#default_value' => $settings['media_entity_bundle'], + '#description' => $description, + '#options' => $options, + '#disabled' => $disabled, + '#required' => TRUE, + ]; + + return $form; + } }