Commit d4ed2479 authored by Christian Fritsch's avatar Christian Fritsch Committed by Christian Fritsch
Browse files

Issue #3051658 by a.dmitriiev, chr.fritsch, Rajab Natshah, saschaeggi,...

Issue #3051658 by a.dmitriiev, chr.fritsch, Rajab Natshah, saschaeggi, Mohammed J. Razem, volkerk: Make dropzonejs widget available to the new Media Library in core
parent b2e3b63a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -26,3 +26,10 @@ integration:
    - core/drupalSettings
    - core/underscore
    - dropzonejs/dropzonejs

media_library:
  version: VERSION
  js:
    js/dropzone.media_library.js: {}
  dependencies:
    - dropzonejs/integration
+22 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
 */

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\dropzonejs\Form\DropzoneJsUploadForm;

/**
 * Implements hook_help().
@@ -113,3 +114,24 @@ function dropzonejs_library_info_alter(&$libraries, $extension) {
    }
  }
}

/**
 * Implements hook_media_source_info_alter().
 */
function dropzonejs_media_source_info_alter(array &$sources) {
  if (isset($sources['image'])) {
    $sources['image']['forms']['media_library_add'] = DropzoneJsUploadForm::class;
  }

  if (isset($sources['video_file'])) {
    $sources['video_file']['forms']['media_library_add'] = DropzoneJsUploadForm::class;
  }

  if (isset($sources['audio_file'])) {
    $sources['audio_file']['forms']['media_library_add'] = DropzoneJsUploadForm::class;
  }

  if (isset($sources['file'])) {
    $sources['file']['forms']['media_library_add'] = DropzoneJsUploadForm::class;
  }
}
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
    attach: function (context) {
      Dropzone.autoDiscover = false;

      $('.dropzone-enable').each(function() {
      $('.dropzone-enable', context).each(function () {
        var selector = $(this);
        selector.addClass('dropzone');

+48 −0
Original line number Diff line number Diff line
/**
 * @file
 * dropzonejs_eb_widget.common.js
 *
 * Bundles various dropzone eb widget behaviours.
 */

(function ($, Drupal, drupalSettings) {
  'use strict';

  Drupal.behaviors.dropzonejsPostIntegrationMediaLibrary = {
    attach: function (context) {
      if (typeof drupalSettings.dropzonejs.instances !== 'undefined') {
        _.each(drupalSettings.dropzonejs.instances, function (item) {
          if (typeof item.instance !== 'undefined') {

            var $form = $(item.instance.element).parents('form');

            item.instance.on('queuecomplete', function () {
              var dzInstance = item.instance;
              var filesInQueue = dzInstance.getQueuedFiles();
              var acceptedFiles;
              var i;

              if (filesInQueue.length === 0) {
                acceptedFiles = dzInstance.getAcceptedFiles();

                // Ensure that there are some files that should be submitted.
                if (acceptedFiles.length > 0 && dzInstance.getUploadingFiles().length === 0) {
                  // First submit accepted files and clear them from list of
                  // dropped files afterwards.
                  $form.find('[id="auto_select_handler"]')
                    .trigger('auto_select_media_library_widget');

                  // Remove accepted files -> because they are submitted.
                  for (i = 0; i < acceptedFiles.length; i++) {
                    dzInstance.removeFile(acceptedFiles[i]);
                  }
                }
              }
            });
          }
        });
      }
    }
  };

}(jQuery, Drupal, drupalSettings));
+21 −16
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ class DropzoneJsUploadSave implements DropzoneJsUploadSaveInterface {
      return FALSE;
    }

    if (!empty($destination)) {
      // Prepare destination.
      if (!$this->prepareDestination($file, $destination)) {
        $this->messenger->addError($this->t('The file could not be uploaded because the destination %destination is invalid.', ['%destination' => $destination]));
@@ -181,12 +182,16 @@ class DropzoneJsUploadSave implements DropzoneJsUploadSaveInterface {
      if (!$move_result) {
        $this->messenger->addError($this->t('File upload error. Could not move uploaded file.'));

      $this->logger->notice('Upload error. Could not move uploaded file %file to destination %destination.', ['%file' => $file->getFilename(), '%destination' => $file->getFileUri()]);
        $this->logger->notice('Upload error. Could not move uploaded file %file to destination %destination.', [
          '%file' => $file->getFilename(),
          '%destination' => $file->getFileUri(),
        ]);
        return FALSE;
      }

      // Set the permissions on the new file.
      $this->fileSystem->chmod($file->getFileUri());
    }

    return $file;
  }
Loading