View source
<?php
namespace Drupal\fullcalendar_view;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
class TaxonomyColor {
use StringTranslationTrait;
protected $entityTypeManager;
public function __construct(EntityTypeManagerInterface $entityTypeManager) {
$this->entityTypeManager = $entityTypeManager;
}
public function colorInputBoxs($vid, array $defaultValues, $open = FALSE) {
$elements = [
'#type' => 'details',
'#title' => $this
->t('Colors for Taxonomies'),
'#fieldset' => 'colors',
'#open' => $open,
'#prefix' => '<div id="color-taxonomies-div">',
'#suffix' => '</div>',
'#states' => [
'invisible' => [
[
':input[name="style_options[vocabularies]"]' => [
'value' => '',
],
],
],
],
];
$terms = $this
->getTermIds($vid);
if (isset($terms[$vid])) {
foreach ($terms[$vid] as $taxonomy) {
$initial_color = preg_match('/^#[a-fA-F0-9]{6}$/', $taxonomy->name->value) ? $taxonomy->name->value : '#3a87ad';
$color = isset($defaultValues[$taxonomy
->id()]) ? $defaultValues[$taxonomy
->id()] : $initial_color;
$elements[$taxonomy
->id()] = [
'#title' => $taxonomy->name->value,
'#default_value' => $color,
'#type' => 'color',
'#states' => [
'invisible' => [
[
':input[name="style_options[tax_field]"]' => [
'value' => '',
],
],
],
],
'#attributes' => [
'value' => $color,
'name' => 'style_options[color_taxonomies][' . $taxonomy
->id() . ']',
],
];
}
}
return $elements;
}
private function getTermIds($vid) {
if (empty($vid)) {
return [];
}
$terms =& drupal_static(__FUNCTION__);
if (!isset($terms[$vid])) {
$query = $this->entityTypeManager
->getStorage('taxonomy_term')
->getQuery();
$query
->condition('vid', $vid);
$tids = $query
->execute();
$terms[$vid] = $this->entityTypeManager
->getStorage('taxonomy_term')
->loadMultiple($tids);
}
return $terms;
}
}