diff --git a/custom.js b/custom.js new file mode 100644 index 0000000..d5a963e --- /dev/null +++ b/custom.js @@ -0,0 +1,56 @@ +jQuery( document ).ready(function($) { + $(".measure-wrapper .measure-title").click(function() { + $(this).next(".measure-content").slideToggle(500, "swing"); + }) + + + + + /** Filtrage des propositions **/ + + // Au clic sur un des titres des catégories : on crée le div de filtre correspondnt (avec le slug en attr "statut") et on trigger l'event filtre + $(".home-graph-item .status-title").click(function(){ + var stat = $(this).attr("status"); + + // on conditionne l'action au fait que le filtre ne soit pas déjà actif + if ( $("div.filters-container .filter-" + stat).length === 0) { + var htmlFilter = "

"+ $(this).text() + "

+
"; + $("div.filters-container").append(htmlFilter); + $("div.filters-container").trigger("filters-change"); + } + } + ); + + // Au clic sur une croix d'un filtre on supprime le div concerné et on trigger l'event filtre + $("body").on("click", "div.filters-container .filter-close", function (){ + $(this).closest('.measure-filter').remove(); + + $("div.filters-container").trigger("filters-change"); + console.log($("div.filters-container").length); + }); + + + + // Event filtre : on récupère les slugs des catégories présente dans la div des filtres, et on masque tous les autres. Si il n'y a aucun filtre on affiche tout. + $("div.filters-container").on("filters-change", function() { + // d'abord on remasque tout + $(".measure-wrapper").hide(); + $(".measure-wrapper + hr").hide(); + // si aucun filtre on affiche tout + if (!$.trim($("div.filters-container").html() )) { + $(".measure-wrapper").show(); + $(".measure-wrapper + hr").show(); + } + + //sinon on parcourt les filtres et on affiche les éléments correspondants + else { + + $("div.filters-container > .measure-filter").each(function () { + var stat = $(this).attr("status"); + $(".measure-wrapper.measure-"+ stat).show(); + $(".measure-wrapper.measure-"+ stat + " + hr").show(); + }) + } + }); + +}); \ No newline at end of file diff --git a/footer.php b/footer.php new file mode 100755 index 0000000..06b842a --- /dev/null +++ b/footer.php @@ -0,0 +1,61 @@ + + + + + + + diff --git a/functions.php b/functions.php index a488384..6bbd727 100644 --- a/functions.php +++ b/functions.php @@ -14,9 +14,145 @@ function enqueue_style_parent() { /** ** Ajout des scripts et styles tardifs **/ -/*add_action('wp_enqueue_scripts', 'enqueue_scripts_child', 20); +add_action('wp_enqueue_scripts', 'enqueue_scripts_child', 20); function enqueue_scripts_child() { - wp_register_script('customJS', get_stylesheet_directory_uri() . '/path/to/file.js', array('jquery'),'1.1', true); + wp_register_script('customJS', get_stylesheet_directory_uri() . '/custom.js', array('jquery'),'1.1', true); wp_enqueue_script('customJS'); - wp_enqueue_style( 'responsive-child', get_stylesheet_directory_uri() . '/path/to/file.css' ); -}*/ + //wp_enqueue_style( 'responsive-child', get_stylesheet_directory_uri() . '/path/to/file.css' ); +} + +/** + * changement du terme "articles" par "mesures" + */ +add_action( 'init', 'cp_change_post_object' ); + +function cp_change_post_object() { + $get_post_type = get_post_type_object('post'); + $labels = $get_post_type->labels; + $labels->name = 'Mesures'; + $labels->singular_name = 'Mesure'; + $labels->add_new = 'Ajouter une mesure'; + $labels->add_new_item = 'Ajouter une mesure'; + $labels->edit_item = 'Modifier la mesure'; + $labels->new_item = 'Nouvelle mesure'; + $labels->view_item = 'Voir la mesure'; + $labels->search_items = 'Chercher dans les mesures'; + $labels->not_found = 'Aucune mesure trouvée'; + $labels->not_found_in_trash = 'Aucune mesure dans la corbeille'; + $labels->all_items = 'Toutes les mesures'; + $labels->menu_name = 'Mesures'; + $labels->name_admin_bar = 'Mesure'; +} + + +/** + * Suppression de la metabox catégories + */ + +function ccc_remove_metaboxes() { + remove_meta_box( 'categorydiv', 'post', 'normal' ); +} + +add_action( 'admin_menu', 'ccc_remove_metaboxes' ); + + +/** + * Shortcode affichant la liste des mesures + */ + +function generate_home_posts_list() { + // On récupère la liste des mesures par date de MaJ décroissante + $measures = get_posts([ 'post_type' => 'post', + 'orderby' => 'modified', + 'order' => 'DESC', + 'numberposts' => -1 + ]); + + // Conteneur pour les filtres + $html = "
"; + + foreach ($measures as $measure) { + $status = get_the_category($measure->ID)[0]; + $color = get_field('couleur', 'category_'.$status->term_id); + $link = get_field('proposition-url', $measure->ID); + $date = get_the_modified_date("d/m/Y à H:i", $measure); + + $html .= "
"; + $html .= "

". $measure->post_title ."

"; + $html .= "
"; + $html .= "

". $measure->post_excerpt ." Lire la mesure

"; + $html .= "

". $status->description . "

"; + $html .= "
" . $measure->post_content . "
"; + $html .= "

Mise à jour le " . $date . "
"; + $html .= "

"; + $html .= "
"; + } + + return $html; +} + +add_shortcode('mesures', 'generate_home_posts_list'); + + + +/** + * Shortcode affichant le graphique de suivi des statuts + */ + +function generate_home_status_graph() { + + // Total des articles + $total = wp_count_posts('post')->publish; + + // Ensuite, pour chaque catégorie donnée, on va : + // récupérer le nombre de posts de cette cat + // récupérer la couleur associée + // calculer le pourcentage sur le total de mesures + // créer un bloc html avec l data correspondante + + $cats = ["validated", "partially-validated", "discussed", "danger", "rejected", "undiscussed"]; + $obj_total = 0; + + + $html = ""; + + foreach ($cats as $cat) { + + $cat = get_category_by_slug($cat); + $color = get_field('couleur', "category_" . $cat->term_id); + $percent = $cat->count * 100 / $total; + + $html .= "
"; + $html .= "

" . $cat->name . "

"; + $html .= "
"; + $html .= "
"; + $html .= "
"; + $html .= "
"; + $html .= "

" . $cat->count . "

"; + $html .= "
"; + + if (in_array($cat->slug, ['validated', 'partially-validated'])) { + $obj_total += $cat->count; + } + } + + $total_percent = $obj_total * 100 / $total; + $html .= "
"; + $html .= "

Objectif

"; + $html .= "
"; + $html .= "
"; + $html .= "
"; + $html .= "
"; + $html .= "

$obj_total / $total

"; + $html .= "
"; + + return $html; + +} + +add_shortcode('graph_mesures', 'generate_home_status_graph'); + + + + + diff --git a/header.php b/header.php new file mode 100755 index 0000000..98f0c7b --- /dev/null +++ b/header.php @@ -0,0 +1,222 @@ + + +> + + + + + + + + + + + + + + + + + + + + + + > + + + + + +