class FileLink in Express 8
Pre-processes variables for the "file_link" theme hook.
Plugin annotation
@BootstrapPreprocess("file_link",
replace = "template_preprocess_file_link"
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\bootstrap\Plugin\PluginBase
- class \Drupal\bootstrap\Plugin\Preprocess\PreprocessBase implements PreprocessInterface
- class \Drupal\bootstrap\Plugin\Preprocess\FileLink
- class \Drupal\bootstrap\Plugin\Preprocess\PreprocessBase implements PreprocessInterface
- class \Drupal\bootstrap\Plugin\PluginBase
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of FileLink
File
- themes/
contrib/ bootstrap/ src/ Plugin/ Preprocess/ FileLink.php, line 26 - Contains \Drupal\bootstrap\Plugin\Preprocess\FileLink.
Namespace
Drupal\bootstrap\Plugin\PreprocessView source
class FileLink extends PreprocessBase {
/**
* {@inheritdoc}
*/
public function preprocessVariables(Variables $variables) {
$options = [];
$file = $variables['file'] instanceof File ? $variables['file'] : File::load($variables['file']->fid);
$url = file_create_url($file
->getFileUri());
$file_size = $file
->getSize();
$mime_type = $file
->getMimeType();
// Set options as per anchor format described at
// http://microformats.org/wiki/file-format-examples
$options['attributes']['type'] = "{$mime_type}; length={$file_size}";
// Use the description as the link text if available.
if (empty($variables['description'])) {
$link_text = $file
->getFilename();
}
else {
$link_text = $variables['description'];
$options['attributes']['title'] = $file
->getFilename();
}
// Retrieve the generic mime type from core (mislabeled as "icon_class").
$generic_mime_type = file_icon_class($mime_type);
// Map the generic mime types to an icon and state.
$mime_map = [
'application-x-executable' => [
'label' => t('binary file'),
'icon' => 'console',
],
'audio' => [
'label' => t('audio file'),
'icon' => 'headphones',
],
'image' => [
'label' => t('image'),
'icon' => 'picture',
],
'package-x-generic' => [
'label' => t('archive'),
'icon' => 'compressed',
],
'text' => [
'label' => t('document'),
'icon' => 'file',
],
'video' => [
'label' => t('video'),
'icon' => 'film',
],
];
// Retrieve the mime map array.
$mime = isset($mime_map[$generic_mime_type]) ? $mime_map[$generic_mime_type] : [
'label' => t('file'),
'icon' => 'file',
'state' => 'primary',
];
// Classes to add to the file field for icons.
$variables
->addClass([
'file',
// Add a specific class for each and every mime type.
'file--mime-' . strtr($mime_type, [
'/' => '-',
'.' => '-',
]),
// Add a more general class for groups of well known mime types.
'file--' . $generic_mime_type,
]);
// Set the icon for the mime type.
$icon = Bootstrap::glyphicon($mime['icon']);
$variables->icon = Element::create($icon)
->addClass('text-primary')
->getArray();
$options['attributes']['title'] = t('Open @mime in new window', [
'@mime' => $mime['label'],
]);
$options['attributes']['target'] = '_blank';
if ($this->theme
->getSetting('tooltip_enabled')) {
$options['attributes']['data-toggle'] = 'tooltip';
$options['attributes']['data-placement'] = 'bottom';
}
$variables['link'] = Link::fromTextAndUrl($link_text, Url::fromUri($url, $options));
// Add the file size as a variable.
$variables->file_size = format_size($file_size);
// Preprocess attributes.
$this
->preprocessAttributes();
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FileLink:: |
public | function |
Preprocess the variables array. Overrides PreprocessBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
protected | property | The currently set theme object. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
1 |
PreprocessBase:: |
protected | property | The theme hook invoked. | |
PreprocessBase:: |
protected | property | The theme hook info array from the theme registry. | |
PreprocessBase:: |
protected | property | The Variables object. | |
PreprocessBase:: |
public | function |
Preprocess theme hook variables. Overrides PreprocessInterface:: |
|
PreprocessBase:: |
protected | function | Ensures all attributes have been converted to an Attribute object. | |
PreprocessBase:: |
protected | function | Converts any set description variable into a traversable array. | |
PreprocessBase:: |
protected | function | Preprocess the variables array if an element is present. | 8 |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |