Updating Media dependent modules to versions compatible with core Media.
[yaffs-website] / web / modules / contrib / media_entity_document / src / Plugin / EntityBrowser / Widget / Upload.php
index 70d572774678cdf0835864abc933d7ed428856b9..b377b6df26904732d8b0cf6d0ad501c90cef5dfe 100644 (file)
@@ -3,9 +3,8 @@
 namespace Drupal\media_entity_document\Plugin\EntityBrowser\Widget;
 
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Url;
 use Drupal\entity_browser\Plugin\EntityBrowser\Widget\Upload as FileUpload;
-use Drupal\media_entity\MediaInterface;
+use Drupal\Core\Url;
 
 /**
  * Uses upload to create media entity documents.
@@ -24,7 +23,7 @@ class Upload extends FileUpload {
   public function defaultConfiguration() {
     return [
       'extensions' => 'txt, pdf',
-      'media_bundle' => NULL,
+      'media bundle' => NULL,
     ] + parent::defaultConfiguration();
   }
 
@@ -33,7 +32,7 @@ class Upload extends FileUpload {
    */
   public function getForm(array &$original_form, FormStateInterface $form_state, array $aditional_widget_parameters) {
     /** @var \Drupal\media_entity\MediaBundleInterface $bundle */
-    if (!$this->configuration['media_bundle'] || !($bundle = $this->entityTypeManager->getStorage('media_bundle')->load($this->configuration['media_bundle']))) {
+    if (!$this->configuration['media bundle'] || !($bundle = $this->entityManager->getStorage('media_bundle')->load($this->configuration['media bundle']))) {
       return ['#markup' => $this->t('The media bundle is not configured correctly.')];
     }
 
@@ -42,7 +41,7 @@ class Upload extends FileUpload {
     }
 
     $form = parent::getForm($original_form, $form_state, $aditional_widget_parameters);
-    $form['upload']['#upload_validators']['file_validate_extensions'] = [$this->configuration['extensions']];
+    $form['upload']['upload_validators']['file_validate_extensions'] = [$this->configuration['extensions']];
 
     return $form;
   }
@@ -50,42 +49,33 @@ class Upload extends FileUpload {
   /**
    * {@inheritdoc}
    */
-  protected function prepareEntities(array $form, FormStateInterface $form_state) {
-    $files = parent::prepareEntities($form, $form_state);
+  public function submit(array &$element, array &$form, FormStateInterface $form_state) {
+    $documents = [];
 
     /** @var \Drupal\media_entity\MediaBundleInterface $bundle */
-    $bundle = $this->entityTypeManager
+    $bundle = $this->entityManager
       ->getStorage('media_bundle')
-      ->load($this->configuration['media_bundle']);
+      ->load($this->configuration['media bundle']);
+    $files = $this->extractFiles($form_state);
 
-    $documents = [];
     foreach ($files as $file) {
       /** @var \Drupal\media_entity\MediaInterface $document */
-      $document = $this->entityTypeManager->getStorage('media')->create([
+      $document = $this->entityManager->getStorage('media')->create([
         'bundle' => $bundle->id(),
         $bundle->getTypeConfiguration()['source_field'] => $file,
       ]);
 
+      $filename = $file->filename->value;
+      if ($filename) {
+        $document->set('name', $filename);
+      }
+
+      $document->save();
       $documents[] = $document;
     }
 
-    return $documents;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function submit(array &$element, array &$form, FormStateInterface $form_state) {
-    if (!empty($form_state->getTriggeringElement()['#eb_widget_main_submit'])) {
-      $documents = $this->prepareEntities($form, $form_state);
-      array_walk(
-        $documents,
-        function (MediaInterface $media) { $media->save(); }
-      );
-
-      $this->selectEntities($documents, $form_state);
-      $this->clearFormValues($element, $form_state);
-    }
+    $this->selectEntities($documents, $form_state);
+    $this->clearFormValues($element, $form_state);
   }
 
   /**
@@ -102,28 +92,36 @@ class Upload extends FileUpload {
       '#required' => TRUE,
     ];
 
-    $bundles = $this->entityTypeManager
+    $bundles = $this->entityManager
       ->getStorage('media_bundle')
       ->loadByProperties(['type' => 'document']);
 
-    /** @var \Drupal\media_entity\MediaBundleInterface $bundle */
     foreach ($bundles as $bundle) {
       $bundle_options[$bundle->id()] = $bundle->label();
     }
 
-    if (empty($bundle_options)) {
-      $url = Url::fromRoute('media.bundle_add')->toString();
-      $form['media_bundle'] = [
-        '#markup' => $this->t("You don't have media bundle of the Document type. You should <a href='!link'>create one</a>", ['!link' => $url]),
-      ];
-    }
-    else {
-      $form['media_bundle'] = [
-        '#type' => 'select',
-        '#title' => $this->t('Media bundle'),
-        '#default_value' => $this->configuration['media_bundle'],
-        '#options' => $bundle_options,
-      ];
+    switch (count($bundle_options)) {
+      case 0:
+        $url = Url::fromRoute('media.bundle_add')->toString();
+        $form['media bundle'] = [
+          '#markup' => $this->t("You don't have media bundle of the Document type. You should <a href='!link'>create one</a>", ['!link' => $url]),
+        ];
+        break;
+
+      case 1:
+        $form['media bundle'] = [
+          '#value' => key($bundle_options),
+          '#type' => 'value',
+        ];
+        break;
+
+      default:
+        $form['media bundle'] = [
+          '#type' => 'select',
+          '#title' => $this->t('Media bundle'),
+          '#default_value' => $this->configuration['media bundle'],
+          '#options' => $bundle_options,
+        ];
     }
 
     return $form;