diff --git a/file_entity.links.menu.yml b/file_entity.links.menu.yml index 1793645..64a294f 100644 --- a/file_entity.links.menu.yml +++ b/file_entity.links.menu.yml @@ -1,3 +1,9 @@ +entity.file.collection: + title: Files + route_name: entity.file.collection + parent: system.admin_content + description: 'Manage files for your site.' + file_entity.types: title: 'File types' description: 'Manage settings for the type of files used on your site.' diff --git a/file_entity.routing.yml b/file_entity.routing.yml index 6790afb..e19c3a0 100644 --- a/file_entity.routing.yml +++ b/file_entity.routing.yml @@ -57,6 +57,15 @@ entity.file.add_form: options: _admin_route: TRUE +entity.file.collection: + path: /admin/content/files + defaults: + _entity_list: 'file' + _title: 'Files' + requirements: + _permission: 'administer files' + + file_entity.file_add_upload: path: /file/add/upload defaults: diff --git a/src/Normalizer/FileEntityNormalizer.php b/src/Normalizer/FileEntityNormalizer.php index cdb1df0..31a0483 100644 --- a/src/Normalizer/FileEntityNormalizer.php +++ b/src/Normalizer/FileEntityNormalizer.php @@ -41,8 +41,14 @@ public function denormalize($data, $class, $format = NULL, array $context = arra // Avoid 'data' being treated as a field. $file_data = $data['data'][0]['value']; unset($data['data']); - // Decode and save to file. - $file_contents = base64_decode($file_data); + if ( filter_var($file_data, FILTER_VALIDATE_URL) ) { + // Get the remote file contents. + $file_contents = file_get_contents($file_data); + $file_data = base64_encode($file_contents); + } else { + // Decode and save to file. + $file_contents = base64_decode($file_data); + } $entity = parent::denormalize($data, $class, $format, $context); $dirname = drupal_dirname($entity->getFileUri()); file_prepare_directory($dirname, FILE_CREATE_DIRECTORY);