<?php
/*
	* @files
	* Theme Template Funtions
*/

// use Drupal\Core\Template\Attribute;
// use Drupal\Core\Link;
// use Drupal\Core\Url;
use Drupal\Component\Utility\Html;
use Drupal\Component\Transliteration\TransliterationInterface;
use Drupal\taxonomy\Entity\Term;
use Drupal\Core\Template\Attribute;

function eql_preprocess_html(&$variables) {
  $node = \Drupal::routeMatch()->getParameter('node');
  if ($node){
    $variables['attributes']['class'][] = 'node-type-' . $node->bundle();
    $variables['attributes']['class'][] = 'node-id-' . $node->id();
  }
}


function eql_preprocess_node(&$variables){
  $node = &$variables['node'];
  $variables['attributes']['class'][] = 'node-type-' . $node->gettype();

  if($node->gettype() == "actualite") {
    $actu_type = $node->get('field_actu_type')->getString();
    $variables['attributes']['class'][] = 'actu-type-' . $actu_type;
  }
  if($node->gettype() == "offre_de_service") {
    $type_protagoniste = $node->get('field_type_de_protagoniste')->getString();
    $variables['attributes']['class'][] = 'type-de-protagoniste-' . $type_protagoniste;
  }
  
  // if ($node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
  //   // Récupère la valeur de field_type_de_ressource
  //   $type_de_ressource_entity = $node->get('field_type_de_ressource')->entity;
  //   if ($type_de_ressource_entity) {
  //     $type_de_ressource_name = $type_de_ressource_entity->getName();
  //     // Ajoute la classe CSS basée sur la valeur du type de ressource
  //     $variables['attributes']['class'][] = 'type-de-ressource-' . Html::cleanCssIdentifier($type_de_ressource_name);
  //   }
  // }
  if ($node->getType() === 'ressource' && $node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
    foreach ($node->get('field_type_de_ressource')->referencedEntities() as $term) {
      $label = $term->label(); // ex: "Presse"
      $class = 'type-' . Html::cleanCssIdentifier(strtolower($label));
      $variables['attributes']['class'][] = $class;
    }
  }
}

function eql_preprocess_field(&$variables) {
  $node = \Drupal::routeMatch()->getParameter('node');

  $field_name = &$variables['field_name'];
  if($node) {
    if ($field_name == 'field_type_de_protagoniste'){
    $type_protagoniste = $node->get('field_type_de_protagoniste')->getString();
    $variables['attributes']['class'][] = 'type-de-protagoniste-' . $type_protagoniste;
    }
  }
  $field_name = &$variables['field_name'];
  if($node) {
    if ($field_name == 'field-type-de-ressource'){
      $type_ressource = $node->get('field-type-de-ressource')->getString();
      $variables['attributes']['class'][] = 'type-de-ressource-' . $type_ressource;
      }
  }
}


////////////

function eql_preprocess_layout__threecol_25_50_25(&$variables) {
  $node = \Drupal::routeMatch()->getParameter('node');
  if($node->gettype() == "projet"){
    $variables['content']['top_bottom'] = [];     /////// déclare les nvx array 
    $variables['content']['top_right'] = [];
    $variables['content']['top_left'] = [];
    $variables['content']['top_bottom_left'] = [];
    foreach ($variables['content']['top'] as $key => $value) {
      if(isset($value['#base_plugin_id']) && $value['#base_plugin_id']== 'entity_field'){      ////// isset pour voir si existe && si oui fait ce que tu as à faire. $Value c'est l'attribut  
        if($value['#derivative_plugin_id']=="node:field_region" || $value['#derivative_plugin_id']=="node:field_adresse") {
          $variables['content']['top_bottom_left'][] = $variables['content']['top'][$key];
          unset($variables["content"]["top"][$key]); 
        }
        if($value['#derivative_plugin_id']=="node:field_type_de_moa" || $value['#derivative_plugin_id']=="node:field_type_de_projet" || $value['#derivative_plugin_id']=="node:field_etape_du_projet") {
          $variables['content']['top_bottom'][] = $variables['content']['top'][$key];
          unset($variables["content"]["top"][$key]); 
        } 
        if($value['#derivative_plugin_id']=="node:title" || $value['#derivative_plugin_id']=="node:field_equipe" || $value['#derivative_plugin_id']=="node:field_incube"){
          $variables['content']['top_right'][] = $variables['content']['top'][$key];
          unset($variables["content"]["top"][$key]);
        }
        if($value['#derivative_plugin_id']=="node:field_photo"){
          $variables['content']['top_left'][] = $variables['content']['top'][$key];
          unset($variables["content"]["top"][$key]);
        }
      }
    }
  }
}




// function eql_preprocess_views_view_unformatted(&$variables) {
//   // On utilise le service de translittération de Drupal
//   $transliterator = \Drupal::service('transliteration');

//   foreach ($variables['rows'] as &$row) {
//     if (isset($row['content']['#node'])) {
//       $node = $row['content']['#node'];

//       if ($node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
//         foreach ($node->get('field_type_de_ressource')->referencedEntities() as $term) {
//           $label = $term->label();

//           // Supprimer les accents
//           $label_ascii = $transliterator->transliterate($label);

//           // Nettoyer pour que ce soit une classe CSS valide
//           $class = 'type-' . Html::cleanCssIdentifier(strtolower($label_ascii));

//           $row['attributes']->addClass($class);
//         }
//       }
//     }
//   }
// }




function eql_preprocess_views_view_unformatted(array &$variables) {
  $view = $variables['view'];

  if ($view->id() !== 'base_de_donnees') {
    return;
  }

  $transliterator = \Drupal::service('transliteration');
  $current_path = \Drupal::service('path.current')->getPath();
  $request = \Drupal::request();
  $query_params = $request->query->all();

  // Active uniquement si on est sur la page /ressources sans filtres actifs
  $is_ressource_main = $current_path === '/ressources';
  $has_filters = !empty(array_filter($query_params, fn($v) => $v !== '' && $v !== 'All'));

  $filter_slides = $is_ressource_main && !$has_filters;

  // Liste des types à restreindre uniquement sur /ressources sans filtres
  $allowed_types = [
    'type-paroles-de-laureats',
    'type-publication-issue-du-programme-eqld',
    'type-presse',
    'type-projets-en-images',
  ];

  $slides = [];
  $unclassified_rows = [];

  foreach ($variables['rows'] as $row) {
    if (!isset($row['content']['#node'])) {
      $unclassified_rows[] = $row;
      continue;
    }

    $node = $row['content']['#node'];
    $matched = false;

    if ($node->hasField('field_type_de_ressource') && !$node->get('field_type_de_ressource')->isEmpty()) {
      foreach ($node->get('field_type_de_ressource')->referencedEntities() as $term) {
        $label = $term->label();
        $label_ascii = $transliterator->transliterate($label);
        $type_class = 'type-' . Html::cleanCssIdentifier(strtolower($label_ascii));

        // Init slide si non encore créé
        if (!isset($slides[$type_class])) {
          $slides[$type_class] = [
            'label' => $label,
            'rows' => [],
          ];
        }

        // Ajouter la row dans le slide
        $slides[$type_class]['rows'][] = $row;
        $matched = true;

        // Ajouter la classe CSS à la row
        $row['attributes']->addClass($type_class);

        // Ajouter aussi à l'article si possible
        if (!isset($row['content']['#attributes']) || !($row['content']['#attributes'] instanceof Attribute)) {
          $row['content']['#attributes'] = new Attribute();
        }
        $row['content']['#attributes']->addClass($type_class);
      }
    }

    if (!$matched) {
      $unclassified_rows[] = $row;
    }
  }

  // Appliquer le filtrage final si sur la page principale
  $variables['grouped_rows'] = $filter_slides
    ? array_filter($slides, fn($key) => in_array($key, $allowed_types), ARRAY_FILTER_USE_KEY)
    : $slides;

  $variables['unclassified_rows'] = $unclassified_rows;
  $variables['rows'] = []; // désactive affichage par défaut
}











