function media_expire_form_media_bundle_form_alter in Media Expire 8
Implements hook_form_BASE_ID_alter().
Adds expire configuration fields to media bundle form.
File
- ./
media_expire.module, line 17 - The Media Expires Drupal module.
Code
function media_expire_form_media_bundle_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\media_entity\MediaBundleInterface $bundle */
$bundle = $form['#entity'];
$options = [];
$allowed_field_types = [
'datetime',
];
foreach (\Drupal::entityManager()
->getFieldDefinitions('media', $bundle
->id()) as $field_name => $field) {
if (in_array($field
->getType(), $allowed_field_types) && !$field
->getFieldStorageDefinition()
->isBaseField()) {
$options[$field_name] = $field
->getLabel();
}
}
$form['#entity_builders'][] = 'media_expire_media_bundle_form_builder';
$form['media_expire'] = [
'#type' => 'fieldset',
'#title' => t('Expire configuration'),
];
if (empty($options)) {
$form['media_expire']['expire_field'] = [
'#type' => 'value',
'#value' => NULL,
];
$form['media_expire']['message'] = [
'#markup' => t('There are no date fields on this bundle at the moment. In order to configure expire add at least one such field and come back.'),
];
}
else {
$form['media_expire']['enable_expiring'] = [
'#type' => 'checkbox',
'#title' => t('Activate media expire'),
'#default_value' => $bundle
->getThirdPartySetting('media_expire', 'enable_expiring'),
];
$form['media_expire']['expire_field'] = [
'#type' => 'select',
'#title' => t('Expire field'),
'#default_value' => $bundle
->getThirdPartySetting('media_expire', 'expire_field'),
'#options' => $options,
'#description' => t('Select field that stores the expire date.'),
'#states' => [
'visible' => [
[
':input[name="enable_expiring"]' => [
'checked' => TRUE,
],
],
],
],
];
$defaultValue = $bundle
->getThirdPartySetting('media_expire', 'fallback_media');
if ($defaultValue) {
$defaultValue = \Drupal::service('entity.repository')
->loadEntityByUuid('media', $defaultValue);
}
$form['media_expire']['fallback_media'] = [
'#type' => 'entity_autocomplete',
'#title' => t('Fallback @label', [
'@label' => strtolower($bundle
->label()),
]),
'#default_value' => $defaultValue,
'#target_type' => 'media',
'#selection_settings' => [
'target_bundles' => [
$bundle
->id(),
],
],
'#description' => t('Select a fallback @label for unpublished entities.', [
'@label' => strtolower($bundle
->label()),
]),
'#states' => [
'visible' => [
[
':input[name="enable_expiring"]' => [
'checked' => TRUE,
],
],
],
],
];
}
}