media_directories.module in Media Directories 3.x
File
media_directories.module
View source
<?php
use Drupal\Core\Field\BaseFieldDefinition;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
const MEDIA_DIRECTORY_ROOT = -1;
function media_directories_help($route_name) {
switch ($route_name) {
case 'help.page.media_directories':
$settings_url = Url::fromRoute('media_directories.config_form');
return '<p>' . t('Create taxonomy to hold directory structure and select it in the <a href="@url">settings</a>.', [
'@url' => $settings_url,
]) . '</p>';
}
}
function media_directories_field_widget_options_select_form_alter(&$element, FormStateInterface $form_state, $context) {
$items = $context['items'];
if ($items
->getName() === 'directory') {
$element['#options']['_none'] = t('Root directory');
}
}
function media_directories_entity_base_field_info(EntityTypeInterface $entity_type) {
if ($entity_type
->id() === 'media') {
$fields = [];
$fields['directory'] = BaseFieldDefinition::create('entity_reference')
->setLabel(t('Directory'))
->setDescription(t('The ID of the taxonomy term.'))
->setSetting('handler', 'media_directory:default')
->setSetting('target_type', 'taxonomy_term')
->setDisplayConfigurable('form', TRUE)
->setDisplayOptions('form', [
'type' => 'options_select',
'weight' => 2,
]);
$config = \Drupal::config('media_directories.settings');
$vocabulary = $config
->get('directory_taxonomy');
if ($vocabulary) {
$fields['directory']
->setSetting('handler_settings', [
'target_bundles' => [
$vocabulary => $vocabulary,
],
]);
}
return $fields;
}
}
Functions
Constants
Name |
Description |
MEDIA_DIRECTORY_ROOT |
Root directory value.
It is hard to use 0, because it might be considered as empty value
in various places (e.g views filter). |