Commit c0b9ca11 authored by Primsi's avatar Primsi Committed by Primsi
Browse files

Issue #2671914 by Primsi, marcoscano, slashrsm, phenaproxima: Implement EB configuration UI

parent fb8166df
......@@ -211,4 +211,72 @@ class DropzoneJsEbWidget extends WidgetBase {
return TRUE;
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$configuration = $this->configuration;
$form['upload_location'] = [
'#type' => 'textfield',
'#title' => $this->t('Upload location'),
'#default_value' => $configuration['upload_location'],
];
$form['dropzone_description'] = [
'#type' => 'textfield',
'#title' => $this->t('Dropzone drag-n-drop zone text'),
'#default_value' => $configuration['dropzone_description'],
];
preg_match('%\d+%', $configuration['max_filesize'], $matches);
$max_filesize = !empty($matches) ? array_shift($matches) : '1';
$form['max_filesize'] = [
'#type' => 'number',
'#title' => $this->t('Maximum size of files'),
'#min' => '0',
'#field_suffix' => $this->t('MB'),
'#default_value' => $max_filesize,
];
$form['extensions'] = [
'#type' => 'textfield',
'#title' => $this->t('Allowed file extensions'),
'#desciption' => $this->t('A space separated list of file extensions'),
'#default_value' => $configuration['extensions'],
];
return $form;
}
/**
* {@inheritdoc}
*/
public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
$values = $form_state->getValues()['table'][$this->uuid()]['form'];
if (!empty($values['extensions'])) {
$extensions = explode(' ', $values['extensions']);
$fail = FALSE;
foreach ($extensions as $extension) {
if (preg_match('%^\w*$%', $extension) !== 1) {
$fail = TRUE;
}
}
if ($fail) {
$form_state->setErrorByName('extensions', $this->t('Invalid extension list format.'));
}
}
}
/**
* {@inheritdoc}
*/
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
parent::submitConfigurationForm($form, $form_state);
$this->configuration['max_filesize'] = $this->configuration['max_filesize'] . 'M';
}
}
......@@ -12,6 +12,7 @@ use Drupal\Core\Entity\EntityManagerInterface;
use Drupal\Core\Entity\EntityStorageInterface;
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;
......@@ -117,9 +118,19 @@ class MediaEntityDropzoneJsEbWidget extends DropzoneJsEbWidget {
}
$bundles = $this->entityManager->getStorage('media_bundle')->loadMultiple();
foreach ($bundles as $bundle) {
$form['media_entity_bundle']['#options'][$bundle->id()] = $bundle->label();
if (!empty($bundles)) {
foreach ($bundles as $bundle) {
$form['media_entity_bundle']['#options'][$bundle->id()] = $bundle->label();
}
}
else {
$form['media_entity_bundle']['#disabled'] = TRUE;
$form['media_entity_bundle']['#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()
]);
}
return $form;
}
......@@ -184,5 +195,4 @@ class MediaEntityDropzoneJsEbWidget extends DropzoneJsEbWidget {
$this->clearFormValues($element, $form_state);
}
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment