carte ressources va directement sur mission photo

This commit is contained in:
2025-12-01 14:04:26 +01:00
parent ad9c0349c7
commit 4e8fe4fb2d
2 changed files with 97 additions and 17 deletions

View File

@@ -34,6 +34,34 @@ class GaleriePhotoMap extends BlockBase {
$vp_w = 600;
$vp_h = 600;
// Charger toutes les ressources de type "Mission photo" (type de ressource = 17)
$all_mission_photos = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties([
'type' => 'ressource', // adapte si ton type machine est différent
'status' => 1,
'field_type_de_ressource' => 17, // même ID que dans la query de la vue
]);
// Indexer les missions photo par ID de site
$mission_by_site = [];
foreach ($all_mission_photos as $mission) {
if (!$mission->hasField('field_site') || $mission->get('field_site')->isEmpty()) {
continue;
}
// Un même node peut être lié à plusieurs sites : on en prend un par site
foreach ($mission->get('field_site') as $ref) {
$site_id = $ref->target_id;
if (!isset($mission_by_site[$site_id])) {
$mission_by_site[$site_id] = $mission;
}
}
}
// Coordonnées géographiques des coins de la carte (France)
$latTop = 52.0; // Nord-Ouest (coin supérieur gauche)
$lonLeft = -6.0;
@@ -60,6 +88,24 @@ class GaleriePhotoMap extends BlockBase {
// $subtitle = $site->get('field_sous_titre')->getString();
$subtitle = $site->hasTranslation($language) ? $site->getTranslation($language)->get('field_sous_titre')->getString() : $site->get('field_sous_titre')->getString();
// URL directe de la mission photo liée à ce site (si trouvée)
$mission_photo_url = '';
if (isset($mission_by_site[$site->id()])) {
$mission_node = $mission_by_site[$site->id()];
// Respecter la langue courante si traduction existe
if ($mission_node->hasTranslation($language)) {
$mission_node = $mission_node->getTranslation($language);
}
$mission_photo_url = $mission_node->toUrl('canonical', [
'absolute' => TRUE,
'language' => \Drupal::languageManager()->getLanguage($langcode),
])->toString();
}
$link_options = ['absolute' => TRUE, 'attributes' => ['class' => 'ressource-link'], 'language' => \Drupal::languageManager()->getLanguage($langcode)]; // Passer 'absolute' à TRUE
// $site_url = $site->toUrl('canonical', $link_options)->toString(); // URL absolue pour le data-url
$site_link_object = Link::createFromRoute(t("Voir le site"), 'entity.node.canonical', ['node' => $site->id()], $link_options);
@@ -93,6 +139,7 @@ class GaleriePhotoMap extends BlockBase {
class="site-link"
data-content="$datacontent"
data-url="$url"
data-mission-photo-url="$mission_photo_url"
cx="0" cy="0" r="$r"
style="fill-opacity:1;fill-rule:nonzero;" />
<path