media_entity_file_redirect-8.x-1.0-beta1/media_entity_file_redirect.module
media_entity_file_redirect.module
<?php
/**
* @file
* Media Entity File Redirect module.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\media\Plugin\media\Source\File;
use Drupal\media\MediaTypeInterface;
/**
* Implements hook_form_FORM_ID_alter().
*
* Adds crop configuration fields to media form.
*/
function media_entity_file_redirect_form_media_type_edit_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\media\Entity\MediaType $entityType */
$entityType = $form_state->getFormObject()->getEntity();
$mediaSource = $entityType->getSource();
if ($mediaSource instanceof File) {
$form['#entity_builders'][] = '_media_entity_file_redirect_entity_builder';
$form['source_dependent']['media_entity_file_redirect'] = [
'#type' => 'checkbox',
'#title' => t('Expose access to file via path /document/[id]'),
'#description' => t('When enabled, requests to /document/[id] will redirect to the actual file URL associated with this media bundle.'),
'#default_value' => $entityType->getThirdPartySetting('media_entity_file_redirect', 'enabled'),
'#weight' => -1,
];
}
}
/**
* Entity builder for saving our third party settings.
*/
function _media_entity_file_redirect_entity_builder($entity_type, MediaTypeInterface $bundle, array &$form, FormStateInterface $form_state) {
$bundle->setThirdPartySetting('media_entity_file_redirect', 'enabled', $form_state->getValue('media_entity_file_redirect'));
}
