Skip to content
Snippets Groups Projects
Commit f35e7796 authored by Rico Van de Vin's avatar Rico Van de Vin Committed by Henri MEDOT
Browse files

Resolve #3394510 "Media library integration"

parent 5ac5d02b
Branches
Tags
2 merge requests!19Issue #3418177 by s_leu, tim bozeman, ricovandevin, tostinni, ratanasdiabolo,...,!4Resolve #3394510 "Media library integration"
......@@ -3,6 +3,7 @@
namespace Drupal\file_resup_media_library\Form;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Field\FieldStorageDefinitionInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\file_resup\Form\FileFormAlterBase;
......@@ -17,6 +18,14 @@ class MediaLibraryAddFormUploadAlter extends FileFormAlterBase {
$uri_scheme = $field_definition->getFieldStorageDefinition()->getSetting('uri_scheme');
$date = date('Y-m');
$element['#upload_location'] = "$uri_scheme://$date";
// Update the max files to match the number of remaining slots in the media
// field. We mimic what Media Library does in its file upload form.
$state = $form_state->get('media_library_state');
if ($state) {
$slots = $state->getAvailableSlots();
$element['#file_resup_max_files'] = $slots != FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ? $slots : -1;
}
}
public static function managedFileProcess($element, FormStateInterface $form_state, $form) {
......
......@@ -142,20 +142,23 @@ abstract class FileFormAlterBase {
public static function fileValue(&$element, array &$input, FormStateInterface $form_state) {
if (!empty($input['resup'])) {
$resup_file_ids = explode(',', $input['resup']);
$resup_file_id = reset($resup_file_ids);
if ($file = self::saveUpload($element, $resup_file_id, $form_state)) {
$input['fids'][] = $file->fid->value;
// When anonymous, file_managed_file_value() does not allow previously
// uploaded temporary files to be reused, so we also need to pass fid
// through element's default value.
if ($file->isPermanent() && !\Drupal::currentUser()->isAnonymous()) {
if ($element['#extended']) {
$element['#default_value']['fid'] = $file->fid->value;
// 'display' must be passed as well, as an integer.
$element['#default_value']['display'] = $input['display'];
}
else {
$element['#default_value'] = $file->fid->value;
foreach ($resup_file_ids as $resup_file_id) {
if ($file = self::saveUpload($element, $resup_file_id, $form_state)) {
$input['fids'][] = $file->fid->value;
// When anonymous, file_managed_file_value() does not allow previously
// uploaded temporary files to be reused, so we also need to pass fid
// through element's default value.
if ($file->isPermanent() && !\Drupal::currentUser()->isAnonymous()) {
if ($element['#extended']) {
$element['#default_value'][] = [
'fid' => $file->fid->value,
// 'display' must be passed as well, as an integer.
'display' => $input['display'],
];
}
else {
$element['#default_value'][] = $file->fid->value;
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment