3
0
Fork 0
mirror of https://github.com/farmOS/farmOS.git synced 2024-02-23 11:37:38 +01:00
farmOS/modules/core/flag/farm_flag.module

62 lines
1.5 KiB
PHP

<?php
/**
* @file
* The farmOS Flags module.
*/
/**
* Allowed values callback function for the flags field.
*
* @return array
* Returns an array of allowed values for use in form select options.
*/
function farm_flag_field_allowed_values() {
/** @var \Drupal\farm_flag\Entity\FarmFlagInterface[] $flags */
$flags = \Drupal::entityTypeManager()->getStorage('flag')->loadMultiple();
$allowed_values = [];
foreach ($flags as $id => $flag) {
$allowed_values[$id] = $flag->getLabel();
}
return $allowed_values;
}
/**
* Implements hook_theme().
*/
function farm_flag_theme() {
return [
'field__flag' => [
'base hook' => 'field',
],
];
}
/**
* Prepares variables for field--flag templates.
*
* Adds classes to each flag wrapper.
*
* Default template: field--flag.html.twig.
*
* @param array $variables
* An associative array containing:
* - element: An associative array containing render arrays for the list of
* flags.
*/
function template_preprocess_field__flag(array &$variables) {
// Preprocess list_string flag fields.
if ($variables['element']['#field_type'] == 'list_string') {
/** @var \Drupal\Core\Field\FieldItemListInterface $items */
$items = $variables['element']['#items'];
// Add classes to each flag.
foreach ($items as $key => $list_item) {
$classes = ['flag', 'flag--' . $list_item->getString()];
$variables['items'][$key]['attributes']->addClass($classes);
}
}
}