Skip to content
This repository was archived by the owner on Jan 5, 2018. It is now read-only.

Commit 6dba258

Browse files
committed
Issue #2661402 by tduong, Berdir, Primsi: Support tokens in upload_location
1 parent 62f7b78 commit 6dba258

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

dropzonejs.services.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
services:
22
dropzonejs.upload_save:
33
class: Drupal\dropzonejs\DropzoneJsUploadSave
4-
arguments: ['@entity.manager', '@file.mime_type.guesser', '@file_system', '@logger.factory', '@renderer', '@config.factory']
4+
arguments: ['@entity.manager', '@file.mime_type.guesser', '@file_system', '@logger.factory', '@renderer', '@config.factory', '@token']
55
dropzonejs.upload_handler:
66
class: Drupal\dropzonejs\UploadHandler
77
arguments: ['@request_stack', '@config.factory', '@transliteration']

modules/eb_widget/src/Plugin/EntityBrowser/Widget/DropzoneJsEbWidget.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public static function create(ContainerInterface $container, array $configuratio
8383
*/
8484
public function defaultConfiguration() {
8585
return [
86-
'upload_location' => 'public://',
86+
'upload_location' => 'public://[date:custom:Y]-[date:custom:m]',
8787
'dropzone_description' => t('Drop files here to upload them'),
8888
'max_filesize' => file_upload_max_size() / pow(Bytes::KILOBYTE, 2) . 'M',
8989
'extensions' => 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp',

src/DropzoneJsUploadSave.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77

88
namespace Drupal\dropzonejs;
99

10+
use Drupal\Component\Render\PlainTextOutput;
1011
use Drupal\Core\Config\ConfigFactoryInterface;
1112
use Drupal\Core\Entity\EntityManagerInterface;
1213
use Drupal\Core\Logger\LoggerChannelFactoryInterface;
1314
use Drupal\Core\Render\RendererInterface;
1415
use Drupal\Core\Session\AccountProxyInterface;
16+
use Drupal\Core\Utility\Token;
1517
use Drupal\file\FileInterface;
1618
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface;
1719
use Symfony\Component\Validator\Constraints\File;
@@ -68,6 +70,13 @@ class DropzoneJsUploadSave implements DropzoneJsUploadSaveInterface {
6870
*/
6971
protected $configFactory;
7072

73+
/**
74+
* The token service.
75+
*
76+
* @var \Drupal\Core\Utility\Token
77+
*/
78+
protected $token;
79+
7180
/**
7281
* Construct the DropzoneUploadSave object.
7382
*
@@ -83,14 +92,17 @@ class DropzoneJsUploadSave implements DropzoneJsUploadSaveInterface {
8392
* The renderer service.
8493
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
8594
* Config factory service.
95+
* @param \Drupal\Core\Utility\Token $token
96+
* The token service.
8697
*/
87-
public function __construct(EntityManagerInterface $entity_manager, MimeTypeGuesserInterface $mimetype_guesser, FileSystemInterface $file_system, LoggerChannelFactoryInterface $logger_factory, RendererInterface $renderer, ConfigFactoryInterface $config_factory) {
98+
public function __construct(EntityManagerInterface $entity_manager, MimeTypeGuesserInterface $mimetype_guesser, FileSystemInterface $file_system, LoggerChannelFactoryInterface $logger_factory, RendererInterface $renderer, ConfigFactoryInterface $config_factory, Token $token) {
8899
$this->entityManager = $entity_manager;
89100
$this->mimeTypeGuesser = $mimetype_guesser;
90101
$this->fileSystem = $file_system;
91102
$this->logger = $logger_factory->get('dropzonejs');
92103
$this->renderer = $renderer;
93104
$this->configFactory = $config_factory;
105+
$this->token = $token;
94106
}
95107

96108
/**
@@ -100,6 +112,10 @@ public function saveFile($uri, $destination, $extensions, AccountProxyInterface
100112
// Create the file entity.
101113
$file = $this->fileEntityFromUri($uri, $user);
102114

115+
// Replace tokens. As the tokens might contain HTML we convert it to plain
116+
// text.
117+
$destination = PlainTextOutput::renderFromHtml($this->token->replace($destination));
118+
103119
// Handle potentialy dangerous extensions.
104120
$renamed = $this->renameExecutableExtensions($file);
105121
// The .txt extension may not be in the allowed list of extensions. We have

0 commit comments

Comments
 (0)