fix: modify function name and update the code with the prod code #1
@ -1,26 +1,31 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Cartographie Leaflet
|
||||
*
|
||||
* @package Cartographie
|
||||
* @author Digitanie
|
||||
* @copyright 2024 Digitanie
|
||||
* @license GPL-2.0-or-later
|
||||
|
|
||||
*
|
||||
* @wordpress-plugin
|
||||
* Plugin Name: Cartographie
|
||||
* Plugin URI: https://digitanie.org
|
||||
|
fabien.amarger
commented
Ce n'est pas l'URI du plugin mais de Digitanie que tu as mis là. On n'a pas de site dédié au plugin, du coup pas vraiment d'intérêt de rajouter cette ligne. Ce n'est pas l'URI du plugin mais de Digitanie que tu as mis là. On n'a pas de site dédié au plugin, du coup pas vraiment d'intérêt de rajouter cette ligne.
|
||||
* Description: Plugin pour la cartographie.
|
||||
* Version: 1.0.0
|
||||
* Author: Digitanie
|
||||
* Author URI: https://digitanie.org
|
||||
* Text Domain: cartographie
|
||||
* License: GPL v2 or later
|
||||
|
fabien.amarger
commented
idem commentaire précédent sur la licence idem commentaire précédent sur la licence
|
||||
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
*/
|
||||
|
||||
add_shortcode('cartographie', 'display_hello_world_page');
|
||||
add_shortcode('cartographie', 'cartographie');
|
||||
|
||||
function display_hello_world_page() {
|
||||
function cartographie() {
|
||||
ob_start();
|
||||
?>
|
||||
<div id="container-filter">
|
||||
|
||||
<div id="container-filter-avancement">
|
||||
<div class="container-title-filter">
|
||||
<h5 id="avancement-button">Status</h5>
|
||||
@ -82,29 +87,29 @@ function display_hello_world_page() {
|
||||
<p>Plateforme logistique</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id=""><p id="modal-title"></p></div>
|
||||
</div>
|
||||
<div id='map' class='map-container'>
|
||||
<div id="full-screen">
|
||||
<img src="https://cdn-icons-png.flaticon.com/128/3413/3413667.png">
|
||||
<img src="/wp-content/plugins/cartographie/media/full-screen.png">
|
||||
</div>
|
||||
<?php
|
||||
return ob_get_clean();
|
||||
}
|
||||
|
||||
add_action('wp_enqueue_scripts', 'hello_world_enqueue_assets');
|
||||
function hello_world_enqueue_assets() {
|
||||
add_action('wp_enqueue_scripts', 'preload');
|
||||
|
||||
function preload() {
|
||||
if (has_shortcode(get_post()->post_content, 'cartographie')) {
|
||||
wp_enqueue_style(
|
||||
'leaflet-css',
|
||||
'https://unpkg.com/leaflet@1.9.3/dist/leaflet.css',
|
||||
plugin_dir_url(__FILE__) . 'css/leaflet.css',
|
||||
|
fabien.amarger
commented
leaflet est déjà présent dans le projet ? il ne faut pas l'installer d'une manière ou d'une autre ? leaflet est déjà présent dans le projet ? il ne faut pas l'installer d'une manière ou d'une autre ?
|
||||
array(),
|
||||
'1.9.3'
|
||||
);
|
||||
|
||||
wp_enqueue_script(
|
||||
'leaflet-js',
|
||||
'https://unpkg.com/leaflet@1.9.3/dist/leaflet.js',
|
||||
plugin_dir_url(__FILE__) . 'js/leaflet.js',
|
||||
array(),
|
||||
'1.9.3',
|
||||
true
|
||||
@ -112,28 +117,35 @@ function hello_world_enqueue_assets() {
|
||||
|
||||
wp_enqueue_style(
|
||||
'leaflet-markercluster-css',
|
||||
'https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.Default.css'
|
||||
plugin_dir_url(__FILE__) . 'css/MarkerCluster.Default.css',
|
||||
array(),
|
||||
'1.5.3'
|
||||
);
|
||||
|
||||
wp_enqueue_script(
|
||||
'leaflet-markercluster-js',
|
||||
'https://unpkg.com/leaflet.markercluster@1.5.3/dist/leaflet.markercluster.js',
|
||||
plugin_dir_url(__FILE__) . 'js/leaflet.markercluster.js',
|
||||
array('leaflet-js', 'jquery'),
|
||||
null,
|
||||
'1.5.3',
|
||||
true
|
||||
);
|
||||
|
||||
wp_enqueue_script(
|
||||
'hello-world-script',
|
||||
'cartographie-script',
|
||||
plugin_dir_url(__FILE__) . 'js/main.js',
|
||||
array('leaflet-js', 'leaflet-markercluster-js'),
|
||||
'1.0',
|
||||
true
|
||||
);
|
||||
|
||||
wp_localize_script( 'cartographie-script', 'wpApiSettings', array(
|
||||
'root' => esc_url_raw( rest_url() ),
|
||||
'nonce' => wp_create_nonce( 'wp_rest' )
|
||||
) );
|
||||
|
||||
wp_enqueue_style(
|
||||
'hello-world-style',
|
||||
plugin_dir_url(__FILE__) . 'css/style.css',
|
||||
'cartographie-style',
|
||||
plugin_dir_url(__FILE__) . 'css/cartographie.css',
|
||||
array(),
|
||||
'1.0'
|
||||
);
|
||||
@ -141,16 +153,17 @@ function hello_world_enqueue_assets() {
|
||||
}
|
||||
|
||||
add_action('rest_api_init', function() {
|
||||
|
||||
register_rest_route('custom/v1', '/markers', array(
|
||||
'methods' => 'GET',
|
||||
'callback' => 'get_cartographie_markers',
|
||||
'methods' => "GET",
|
||||
'permission_callback' => '__return_true',
|
||||
|
fabien.amarger
commented
C'est nécessaire ça du coup ? J'avais l'impression que ça ne changeait rien quand j'avais testé. C'est nécessaire ça du coup ? J'avais l'impression que ça ne changeait rien quand j'avais testé.
|
||||
'callback' => 'get_cartographie_markers'
|
||||
));
|
||||
});
|
||||
|
||||
function get_cartographie_markers() {
|
||||
global $wpdb;
|
||||
$table_name = $wpdb->prefix . 'posts';
|
||||
|
||||
$results = $wpdb->get_results("
|
||||
SELECT wp_posts.ID, wp_posts.post_title, wp_term_taxonomy.taxonomy,
|
||||
GROUP_CONCAT(wp_terms.term_id ORDER BY wp_terms.term_id) AS term_ids,
|
||||
@ -176,6 +189,7 @@ $image_results = $wpdb->get_results("
|
||||
");
|
||||
|
||||
$image_data = [];
|
||||
|
||||
foreach ($image_results as $image_row) {
|
||||
$image_data[$image_row->ID] = [
|
||||
'image_id' => $image_row->image_id,
|
||||
@ -190,14 +204,12 @@ foreach ($results as $row) {
|
||||
];
|
||||
}
|
||||
|
||||
// Ajouter les termes (taxonomies)
|
||||
if ($row->taxonomy == "categorielabel") {
|
||||
$structured_data[$row->ID][$row->taxonomy] = explode(",", $row->term_names);
|
||||
} else {
|
||||
$structured_data[$row->ID][$row->taxonomy] = $row->term_names;
|
||||
}
|
||||
|
||||
// Ajouter l'image mise en avant si elle existe
|
||||
if (isset($image_data[$row->ID])) {
|
||||
$structured_data[$row->ID]['image'] = $image_data[$row->ID];
|
||||
}
|
||||
@ -205,5 +217,282 @@ foreach ($results as $row) {
|
||||
|
||||
return $structured_data;
|
||||
|
||||
}
|
||||
|
||||
function wpm_custom_post_type() {
|
||||
|
||||
$labels = array(
|
||||
'name' => _x( 'Cartographie', 'Post Type General Name'),
|
||||
'singular_name' => _x( 'Cartographie', 'Post Type Singular Name'),
|
||||
'menu_name' => __( 'Cartographie'),
|
||||
'all_items' => __( 'Tous les marqueurs'),
|
||||
'view_item' => __( 'Voir les marqueurs'),
|
||||
'add_new_item' => __( 'Ajouter un nouveau marqueur'),
|
||||
'add_new' => __( 'Ajouter'),
|
||||
'edit_item' => __( 'Editer le marqueur'),
|
||||
'update_item' => __( 'Modifier le marqueur'),
|
||||
'search_items' => __( 'Rechercher un marqueur'),
|
||||
'not_found' => __( 'Non trouvée'),
|
||||
'not_found_in_trash' => __( 'Non trouvée dans la corbeille'),
|
||||
);
|
||||
|
||||
$args = array(
|
||||
'label' => __( 'Cartographie'),
|
||||
'description' => __( 'Tous sur les markers de la cartographie'),
|
||||
'labels' => $labels,
|
||||
'menu_icon' => 'dashicons-video-alt2',
|
||||
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),
|
||||
'show_in_rest' => true,
|
||||
'rest_base' => 'markers',
|
||||
'rest_controller_class' => 'WP_REST_Posts_Controller',
|
||||
'hierarchical' => false,
|
||||
'public' => true,
|
||||
'has_archive' => true,
|
||||
'rewrite' => array( 'slug' => 'cartographie'),
|
||||
);
|
||||
register_post_type( 'markercartographie', $args );
|
||||
|
||||
}
|
||||
|
||||
add_action( 'init', 'wpm_custom_post_type', 0 );
|
||||
add_action( 'init', 'wpm_add_taxonomies', 0 );
|
||||
|
||||
function wpm_add_taxonomies() {
|
||||
|
||||
$labels_annee = array(
|
||||
'name' => _x( 'Année', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Année', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Chercher une année'),
|
||||
'all_items' => __( 'Toutes les années'),
|
||||
'edit_item' => __( "Editer l'année"),
|
||||
'update_item' => __( "Mettre à jour l'année"),
|
||||
'add_new_item' => __( 'Ajouter une nouvelle année'),
|
||||
'new_item_name' => __( 'Valeur de la nouvelle année'),
|
||||
'separate_items_with_commas' => __( 'Séparer les réalisateurs avec une virgule'),
|
||||
'menu_name' => __( 'Année'),
|
||||
);
|
||||
|
||||
$labels_latitude = array(
|
||||
'name' => _x( 'Latitude', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Latitude', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Chercher une latitude'),
|
||||
'all_items' => __( 'Toutes les latitudes'),
|
||||
'edit_item' => __( 'Editer la latitude'),
|
||||
'update_item' => __( 'Mettre à jour la latitude'),
|
||||
'add_new_item' => __( 'Ajouter une nouvelle latitude'),
|
||||
'new_item_name' => __( 'Valeur de la nouvelle latitude'),
|
||||
'separate_items_with_commas' => __( 'Séparer les réalisateurs avec une virgule'),
|
||||
'menu_name' => __( 'Latitude'),
|
||||
);
|
||||
|
||||
$labels_longitude = array(
|
||||
'name' => _x( 'Longitude', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Longitude', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Chercher une longitude'),
|
||||
'all_items' => __( 'Toutes les longitude'),
|
||||
'edit_item' => __( 'Editer la longitude'),
|
||||
'update_item' => __( 'Mettre à jour la longitude'),
|
||||
'add_new_item' => __( 'Ajouter une nouvelle longitude'),
|
||||
'new_item_name' => __( 'Valeur de la nouvelle longitude'),
|
||||
'separate_items_with_commas' => __( 'Séparer les réalisateurs avec une virgule'),
|
||||
'menu_name' => __( 'Longitude'),
|
||||
);
|
||||
|
||||
$labels_codepstl = array(
|
||||
'name' => _x( 'Code postal', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Code postal', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Chercher une longitude'),
|
||||
'all_items' => __( 'Tous les codes postaux'),
|
||||
'edit_item' => __( 'Editer le code postal'),
|
||||
'update_item' => __( 'Mettre à jour le code postal'),
|
||||
'add_new_item' => __( 'Ajouter un nouveau code postal'),
|
||||
'new_item_name' => __( 'Valeur du nouveau code postal'),
|
||||
'separate_items_with_commas' => __( 'Séparer les réalisateurs avec une virgule'),
|
||||
'menu_name' => __( 'Code postal'),
|
||||
);
|
||||
|
||||
$labels_ville = array(
|
||||
'name' => _x( 'Ville', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Ville', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Chercher une ville'),
|
||||
'all_items' => __( 'Toutes les villes'),
|
||||
'edit_item' => __( 'Editer la ville'),
|
||||
'update_item' => __( 'Mettre à jour la ville'),
|
||||
'add_new_item' => __( 'Ajouter une nouvelle ville'),
|
||||
'new_item_name' => __( 'Valeur de la nouvelle ville'),
|
||||
'separate_items_with_commas' => __( 'Séparer les réalisateurs avec une virgule'),
|
||||
'menu_name' => __( 'Ville'),
|
||||
);
|
||||
|
||||
$labels_cat_serie = array(
|
||||
'name' => _x( "Domaine d'activité", 'taxonomy general name'),
|
||||
'singular_name' => _x( "Domaine d'activité", 'taxonomy singular name'),
|
||||
'search_items' => __( "Rechercher un domaine d'activité"),
|
||||
'all_items' => __( "Tous les domaines d'activités"),
|
||||
'edit_item' => __( "Editer un domaine d'activité"),
|
||||
'update_item' => __( "Mettre à jour un domaine d'activité"),
|
||||
'add_new_item' => __( "Ajouter un nouveau domaine d'activité"),
|
||||
'new_item_name' => __( "Nom du nouveau domaine d'activité"),
|
||||
'add_or_remove_items' => __( "Ajouter ou supprimer un domaine d'activité"),
|
||||
'choose_from_most_used' => __( "Choisir parmi les domaines d'activité les plus utilisées"),
|
||||
'not_found' => __( "Pas de domaine d'activité trouvées"),
|
||||
'menu_name' => __( "Domaine d'activité"),
|
||||
);
|
||||
|
||||
$labels_label_serie = array(
|
||||
'name' => _x( 'Label', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Label', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Rechercher un label'),
|
||||
'popular_items' => __( 'Labels populaires'),
|
||||
'all_items' => __( 'Tous les labels'),
|
||||
'edit_item' => __( 'Editer un label'),
|
||||
'update_item' => __( 'Mettre à jour un label'),
|
||||
'add_new_item' => __( 'Ajouter un nouveau label'),
|
||||
'new_item_name' => __( 'Nom du nouveau label'),
|
||||
'add_or_remove_items' => __( 'Ajouter ou supprimer un label'),
|
||||
'choose_from_most_used' => __( 'Choisir parmi les labels les plus utilisées'),
|
||||
'not_found' => __( 'Pas de label trouvées'),
|
||||
'menu_name' => __( 'Label'),
|
||||
);
|
||||
|
||||
$labels_avancement_serie = array(
|
||||
'name' => _x( 'Avancement du projet', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Avancement du projet', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Rechercher un avancement de projet'),
|
||||
'popular_items' => __( 'Avancement de projet populaires'),
|
||||
'all_items' => __( 'Tous les avancement de projet'),
|
||||
'edit_item' => __( 'Editer un avancement de projet'),
|
||||
'update_item' => __( 'Mettre à jour un avancement de projet'),
|
||||
'add_new_item' => __( 'Ajouter un nouvel avancement de projet'),
|
||||
'new_item_name' => __( 'Nom du nouveau avancement de projet'),
|
||||
'add_or_remove_items' => __( 'Ajouter ou supprimer un avancement de projet'),
|
||||
'choose_from_most_used' => __( 'Choisir parmi les avancement de projet les plus utilisées'),
|
||||
'not_found' => __( "Pas d'avancemenet de projet trouvées"),
|
||||
'menu_name' => __( 'Avancement du projet'),
|
||||
);
|
||||
|
||||
$labels_associe = array(
|
||||
'name' => _x( 'Associé BBE', 'taxonomy general name'),
|
||||
'singular_name' => _x( 'Associé BBE', 'taxonomy singular name'),
|
||||
'search_items' => __( 'Chercher une association'),
|
||||
'all_items' => __( 'Toutes les associations'),
|
||||
'edit_item' => __( "Editer l'association"),
|
||||
'update_item' => __( 'Mettre à jour l année'),
|
||||
'add_new_item' => __( 'Ajouter une nouvelle association'),
|
||||
'new_item_name' => __( 'Valeur de la nouvelle association'),
|
||||
'separate_items_with_commas' => __( 'Séparer les réalisateurs avec une virgule'),
|
||||
'menu_name' => __( 'Associé-e BBE'),
|
||||
);
|
||||
|
||||
$args_cat_serie = array(
|
||||
'hierarchical' => true,
|
||||
'labels' => $labels_cat_serie,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'categories-series' ),
|
||||
);
|
||||
|
||||
$args_label_serie = array(
|
||||
'hierarchical' => true,
|
||||
'labels' => $labels_label_serie,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'categories-label' ),
|
||||
);
|
||||
|
||||
$args_avancement_serie = array(
|
||||
'hierarchical' => true,
|
||||
'labels' => $labels_avancement_serie,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'categories-avancement' ),
|
||||
);
|
||||
|
||||
$args_associe = array(
|
||||
'hierarchical' => false,
|
||||
'labels' => $labels_associe,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'associe' ),
|
||||
);
|
||||
|
||||
$args_ville = array(
|
||||
'hierarchical' => false,
|
||||
'labels' => $labels_ville,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'ville' ),
|
||||
);
|
||||
|
||||
$args_codepstl = array(
|
||||
'hierarchical' => false,
|
||||
'labels' => $labels_codepstl,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'codepstl' ),
|
||||
);
|
||||
|
||||
$args_latitude = array(
|
||||
'hierarchical' => false,
|
||||
'labels' => $labels_latitude,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'latitude' ),
|
||||
);
|
||||
|
||||
$args_annee = array(
|
||||
'hierarchical' => false,
|
||||
'labels' => $labels_annee,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'annees' ),
|
||||
);
|
||||
|
||||
$args_longitude = array(
|
||||
'hierarchical' => false,
|
||||
'labels' => $labels_longitude,
|
||||
'show_ui' => true,
|
||||
'show_in_rest' => true,
|
||||
'show_admin_column' => true,
|
||||
'query_var' => true,
|
||||
'public' => true,
|
||||
'rewrite' => array( 'slug' => 'longitude' ),
|
||||
);
|
||||
|
||||
register_taxonomy( 'associe', 'markercartographie', $args_associe );
|
||||
register_taxonomy( 'categoriesseries', 'markercartographie', $args_cat_serie );
|
||||
register_taxonomy( 'avancementduprojet', 'markercartographie', $args_avancement_serie );
|
||||
register_taxonomy( 'categoriesseries', 'markercartographie', $args_cat_serie );
|
||||
register_taxonomy( 'categorielabel', 'markercartographie', $args_label_serie );
|
||||
register_taxonomy( 'categorielabel', 'markercartographie', $args_label_serie );
|
||||
register_taxonomy( 'ville', 'markercartographie', $args_ville );
|
||||
register_taxonomy( 'annees', 'markercartographie', $args_annee );
|
||||
register_taxonomy( 'codepstl', 'markercartographie', $args_codepstl );
|
||||
register_taxonomy( 'longitude', 'markercartographie', $args_longitude );
|
||||
register_taxonomy( 'latitude', 'markercartographie', $args_latitude );
|
||||
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
jQuery(document).ready(function($) {
|
||||
|
||||
var map = L.map('map', {
|
||||
center: [48.577742, 0.060471],
|
||||
zoom: 8,
|
||||
@ -30,6 +31,7 @@ jQuery(document).ready(function($) {
|
||||
const values = Object.values(data);
|
||||
|
||||
for (const item of values) {
|
||||
|
||||
let itemNom = item.name;
|
||||
var itemDomaine = item.categoriesseries ?? null;
|
||||
let itemCodePostal = item.codepstl ?? null;
|
||||
@ -50,7 +52,6 @@ jQuery(document).ready(function($) {
|
||||
const iconSize = [50, 50];
|
||||
const iconAnchor = [16, 32];
|
||||
const popupAnchor = [0, -32];
|
||||
|
||||
const domaineIcons = {
|
||||
"Lieux de plantation": "lieux_de_plantation.svg",
|
||||
"Producteur de bois": "producteur_de_bois.svg",
|
||||
@ -68,7 +69,6 @@ jQuery(document).ready(function($) {
|
||||
popupAnchor
|
||||
})
|
||||
: new L.Icon.Default();
|
||||
|
||||
let imageUrls = [];
|
||||
|
||||
if (Array.isArray(itemLabel)) {
|
||||
@ -110,11 +110,11 @@ jQuery(document).ready(function($) {
|
||||
});
|
||||
|
||||
// Ajout du comportement dynamique lors de l'ouverture de la popup
|
||||
|
||||
marker.on('popupopen', function (e) {
|
||||
const popup = e.popup;
|
||||
const mapBounds = map.getBounds();
|
||||
const popupPosition = popup.getLatLng();
|
||||
|
||||
// Ajuste les marges dynamiques
|
||||
const autoPanPadding = {
|
||||
top: 100, // 100px depuis le haut
|
||||
@ -122,7 +122,6 @@ jQuery(document).ready(function($) {
|
||||
left: 200, // 50px à gauche
|
||||
right: 200 // 50px à droite
|
||||
};
|
||||
|
||||
// Vérifie si le popup est hors de la vue et recadre la carte
|
||||
if (!mapBounds.contains(popupPosition)) {
|
||||
map.panTo(popupPosition, {
|
||||
@ -132,6 +131,27 @@ jQuery(document).ready(function($) {
|
||||
}
|
||||
});
|
||||
|
||||
marker.bindPopup(popupContent, {
|
||||
autoPan: false, // Désactive le recadrage automatique pour éviter un conflit
|
||||
keepInView: true, // Assure que la popup reste visible
|
||||
offset: L.point(0, -20) // Décale légèrement la popup au-dessus du marqueur
|
||||
});
|
||||
|
||||
// Écoute l'événement `popupopen`
|
||||
marker.on('popupopen', function (e) {
|
||||
const map = e.target._map; // Récupère la carte
|
||||
const popupLatLng = e.popup.getLatLng(); // Position du popup (marqueur)
|
||||
const popupOffset = e.popup.options.offset; // Décalage défini dans les options
|
||||
// Calcul du décalage supplémentaire (margin-left de 50px)
|
||||
const additionalOffset = -170; // Décalage en pixels (pour le margin-left)
|
||||
// Convertir le décalage en coordonnées de la carte
|
||||
const projectedPoint = map.project(popupLatLng).subtract(popupOffset).subtract([additionalOffset, 0]);
|
||||
const newCenter = map.unproject(projectedPoint);
|
||||
// Centre la carte sur la position ajustée
|
||||
map.setView(newCenter, map.getZoom(), {
|
||||
animate: true // Animation fluide
|
||||
});
|
||||
});
|
||||
// Gestion de l'icône active lors de l'ouverture et de la fermeture de la popup
|
||||
marker.on('popupopen', function () {
|
||||
marker.setIcon(activeMarkerIcon);
|
||||
@ -140,11 +160,10 @@ jQuery(document).ready(function($) {
|
||||
marker.on('popupclose', function () {
|
||||
marker.setIcon(defaultIcon);
|
||||
});
|
||||
|
||||
// Ajout du marqueur au cluster
|
||||
allMarkers.push(marker);
|
||||
markersCluster.addLayer(marker);
|
||||
|
||||
markersCluster.addLayer(marker);
|
||||
|
||||
let activeIconUrl = '';
|
||||
if (itemDomaine === "Lieux de plantation") {
|
||||
@ -165,7 +184,6 @@ jQuery(document).ready(function($) {
|
||||
iconAnchor: [16, 32],
|
||||
popupAnchor: [0, -32]
|
||||
});
|
||||
|
||||
allMarkers.push(marker);
|
||||
markersCluster.addLayer(marker);
|
||||
}
|
||||
@ -179,27 +197,28 @@ jQuery(document).ready(function($) {
|
||||
function mapFullScreen() {
|
||||
if (!theMap.classList.contains("map-full-screen")) {
|
||||
theMap.classList.add("map-full-screen");
|
||||
document.querySelector("#full-screen > img").src = "https://cdn-icons-png.flaticon.com/128/1828/1828778.png";
|
||||
document.querySelector("#full-screen > img").src = "/wp-content/plugins/cartographie/media/close.png";
|
||||
document.querySelector("#full-screen > img").style.padding = "15px";
|
||||
|
||||
// Redimensionner la carte Leaflet après être passé en plein écran
|
||||
map.invalidateSize(); // Demande à Leaflet de recalculer la taille de la carte
|
||||
} else if (theMap.classList.contains("map-full-screen")) {
|
||||
theMap.classList.remove("map-full-screen");
|
||||
document.querySelector("#full-screen > img").src = "https://cdn-icons-png.flaticon.com/128/3413/3413667.png";
|
||||
document.querySelector("#full-screen > img").src = "/wp-content/plugins/cartographie/media/full-screen.png";
|
||||
document.querySelector("#full-screen > img").style.padding = "10px";
|
||||
|
||||
// Redimensionner la carte Leaflet après avoir quitté le plein écran
|
||||
map.invalidateSize();
|
||||
}
|
||||
}
|
||||
|
||||
btnFullScreen.addEventListener("click", mapFullScreen);
|
||||
|
||||
let api_root = window.location.origin + '?rest_route=/';
|
||||
$.ajax({
|
||||
url: '/wp-json/custom/v1/markers',
|
||||
method: 'GET',
|
||||
dataType: 'json',
|
||||
url: api_root + "custom/v1/markers",
|
||||
method: "GET",
|
||||
timeout: 0,
|
||||
headers: {
|
||||
"Authorization": "Basic ZGlnaXRhbmllOmlOdVkgZkJyVyBRelRDIDVGaTcgVTVzOCBEU2ZZ"
|
||||
},
|
||||
success: function(data) {
|
||||
initialMarkerData = data;
|
||||
addMarkers(data);
|
||||
@ -209,6 +228,7 @@ jQuery(document).ready(function($) {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function filterMarkers() {
|
||||
var statusFilters = {
|
||||
'En cours': $('#en-cours').hasClass('filter-active'),
|
||||
@ -217,7 +237,6 @@ jQuery(document).ready(function($) {
|
||||
};
|
||||
|
||||
var associeFilterActive = $('#toggle-associe').hasClass('filter-active');
|
||||
|
||||
var labelFilters = {
|
||||
'aucun': $('#label-aucun').hasClass('filter-active'),
|
||||
'haie': $('#label-haie').hasClass('filter-active'),
|
||||
@ -234,44 +253,55 @@ jQuery(document).ready(function($) {
|
||||
|
||||
var filteredMarkers = allMarkers.filter(function(marker) {
|
||||
let popupContent = marker.getPopup().getContent();
|
||||
|
||||
let matchesStatusFilter = Object.keys(statusFilters).some(function(key) {
|
||||
return statusFilters[key] ? popupContent.includes(key) : false;
|
||||
}) || !Object.values(statusFilters).includes(true);
|
||||
|
||||
let matchesAssocieFilter = associeFilterActive ? popupContent.includes('Associé-e BBE') : true;
|
||||
|
||||
let matchesLabelFilter = labelFilters['haie'] && labelFilters['vegetal']
|
||||
|
||||
? (popupContent.includes('Label haie') || popupContent.includes('végétal local'))
|
||||
|
||||
: (labelFilters['haie'] ? popupContent.includes('Label haie')
|
||||
|
||||
: (labelFilters['vegetal'] ? popupContent.includes('végétal local')
|
||||
|
||||
: labelFilters['aucun'] ? popupContent.includes('Aucun') : true));
|
||||
|
||||
|
||||
|
||||
let matchesDomaineFilter = Object.keys(domaineFilters).some(function(key) {
|
||||
|
||||
return domaineFilters[key] ? popupContent.includes(key) : false;
|
||||
|
||||
}) || !Object.values(domaineFilters).includes(true);
|
||||
|
||||
|
||||
|
||||
return matchesStatusFilter && matchesAssocieFilter && matchesLabelFilter && matchesDomaineFilter;
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
markersCluster.clearLayers();
|
||||
|
||||
markersCluster.addLayers(filteredMarkers);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function handleFilterClick(filterId, otherFilterIds) {
|
||||
$(filterId).on('click', function() {
|
||||
$(this).toggleClass('filter-active');
|
||||
|
||||
if ($(this).hasClass('wait-button')) {
|
||||
$(this).toggleClass('button-active');
|
||||
}
|
||||
|
||||
if ($(this).hasClass('filter-active') && otherFilterIds && Array.isArray(otherFilterIds)) {
|
||||
otherFilterIds.forEach(function(otherFilterId) {
|
||||
$(otherFilterId).removeClass('filter-active button-active');
|
||||
});
|
||||
}
|
||||
|
||||
filterMarkers();
|
||||
});
|
||||
}
|
||||
@ -280,7 +310,6 @@ jQuery(document).ready(function($) {
|
||||
$(toggleId).on('click', function() {
|
||||
const parentElement = document.querySelector(toggleId);
|
||||
const childElement = document.querySelector(`${toggleId} > div`);
|
||||
|
||||
if ($(this).toggleClass('filter-active').hasClass('filter-active')) {
|
||||
parentElement.classList.remove("toggle-to-anim-parent-reverse");
|
||||
childElement.classList.remove("toggle-to-anim-enfant-reverse");
|
||||
@ -292,7 +321,6 @@ jQuery(document).ready(function($) {
|
||||
parentElement.classList.add("toggle-to-anim-parent-reverse");
|
||||
childElement.classList.add("toggle-to-anim-enfant-reverse");
|
||||
}
|
||||
|
||||
filterMarkers();
|
||||
});
|
||||
}
|
||||
@ -301,10 +329,8 @@ jQuery(document).ready(function($) {
|
||||
handleFilterClick('#prevu', ['#en-cours', '#projets-finis']);
|
||||
handleFilterClick('#projets-finis', ['#en-cours', '#prevu']);
|
||||
handleToggleClick('#toggle-associe');
|
||||
|
||||
handleFilterClick('#label-haie', ['#label-aucun']);
|
||||
handleFilterClick('#label-vegetal', ['#label-aucun']);
|
||||
|
||||
handleFilterClick('#lieux-de-plantation', false);
|
||||
handleFilterClick('#chaufferies-bois-clients', false);
|
||||
handleFilterClick('#exploitations-productrices-de-bois-pour-BBE', false);
|
||||
@ -312,11 +338,11 @@ jQuery(document).ready(function($) {
|
||||
handleFilterClick('#plateformes-logistiques', false);
|
||||
|
||||
map.scrollWheelZoom.disable();
|
||||
|
||||
map.on('click', () => {
|
||||
map.scrollWheelZoom.enable();
|
||||
});
|
||||
map.on('mouseout', () => {
|
||||
map.scrollWheelZoom.disable();
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user
Il y a une raison pour avoir mis la GPL2 spécifiquement ? Le client a demandé du dev libre ?
C'est en tout cas une bonne question de savoir la licence par défaut de nos développements. Je n'ai pas la réponse à ça. J'aurais tendance à pas mettre de licence dans un premier temps.