[plugin] plnCalendrier

GariGari Member
février 2016 modifié dans Plugins
Chère communauté pluxmlienne,

Un petit plugin proposant un calendrier côté "site", pour présenter l'agenda des événements qu'on souhaite proposer à ses lecteurs.
Je l'ai écrit pour des sites associatifs, pour leur permettre de présenter leurs différentes actions événementielles (telle date nous serons au forum des association, telle date nous ferons çi et ça, etc.).
Afin d'éviter toute ambiguité, je précise qu'il ne s'agit pas d'un "date picker".

plnCalendrier_site.png

Ce calendrier est pleinement intégré à pluXml et s'efforce (dans la mesure de mes propres compétences) de respecter l'esprit et la mécanique interne de pluXml.

Les grandes fonctionnalités du plugin :
- Une interface d'administration permettant de :
- définir ses propres "styles" d'affichage des événements, en fonction de la typologie des événements qu'on souhaite mettre en place,
- définir les "événements" eux-mêmes à travers plusieurs informations : date, libellé, texte long, style associé, numéro éventuel de l'article associé à l'événement
- Affichage d'un calendrier semestriel (janvier->juin ou juillet->décembre) sur une page et reprenant l'ensemble des événements, avec bouton d'accès dans la liste des pages statiques et légende optionnelle en bas
- Affichage éventuel, par exemple dans la sidebar, du mois courant et du mois prochain (nécessite l'insertion d'un hook dans le thème)

Un événement est représenté sur le calendrier semestriel par son "libellé". Si on place la souris dessus, le "texte long" apparait sous la forme d'une info-bulle.
Optionnellement, si un numéro d'article a été associé à cette date, on peut cliquer sur la date pour faire apparaitre l'article en question.

plnCalendrier_admin.png

Les styles sont définis par l'administrateur et requièrent l'usage de CSS. Les styles peuvent également, optionnellement, être associés à une "légende", qui dans ce cas apparaitra sous le calendrier semestriel (permet d'indiquer au lecteur à quoi correspond chaque style).

Le plugin offre également un vaste choix de paramétrage, à travers la page de configuration :

plnCalendrier_config.png

La version v1.0 du plugin est en production sur deux sites associatifs depuis quelques jours et, pour l'instant, tout se passe bien.

Si vous avez des remarques, des questions, des suggestions d'amélioration, n'hésitez pas !

Lien de téléchargement :
Pour pluXml 5.3.1 : plnCalendrier v1.7.2
Pour pluXml 5.4.0 : plnCalendrier v2.0.1

Gari.

********************************
***** EDIT 02/05/2015 : Modification du titre suite à changement de nom
***** EDIT 04/05/2015 : Version v1.6
***** EDIT 21/06/2015 : Version v1.7
***** EDIT 09/07/2015 : Version v1.7.1
***** EDIT 27/02/2016 : Version v1.7.2 et Version v2.0.1
********************************
«13456

Réponses

  • Merci, je vais tester
  • GariGari Member
    janvier 2015 modifié
    Je réalise que j'ai oublié d'écrire la page d'aide du plugin. Ca viendra rapidement.

    En attendant, voici l'info qui manque : le hook à rajouter dans sidebar.php pour pouvoir avoir le mois en cours et le mois suivant :
    [== PHP ==]
    <?php eval($plxShow->callHook('plxCalendrierCurrentMonth')); ?>
    
  • Super tout ça. Je m'en vais le tester de ce pas ! Merci :D
  • l'activation du plugin fait planter ma page d'accueil qui ne veut plus s'ouvrir...
    dommage , ce plugin m'interresse.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    J'ai testé le plugin et fait un petit audit de code. Voilà mes remarques:

    config utilisée
    ===============
    PluXml 5.3.1
    Thème par défaut
    aucun plugin installé sauf plxCalendrier

    écran admin
    ===========
    1) Afficher le format de la date à saisir: aaaa-mm-jj
    Au début je saisissais jj/mm/aaaa et je ne comprenais pas pourquoi rien n'était enregistré. j'ai du aller voir dans le code ce qui ce passait. C'est comme ça que j'ai compris que le format de date que je saisissais n'était pas le bon.
    2) Ajouter des messages si
    - mauvais format de date
    - si l'id de l'article saisi n'existe pas (sinon aucune date cliquable coté visiteur sur le calendrier).

    fichier plxCalendrier.php
    =========================
    1) après un mkdir, appliquer un chmod pour bien positionner les droits en lecture/écriture (sinon pbs avec certains hébergeurs qui par défaut ne mettent que les droits en lecture)
    2) au lieu de PLX_ROOT.'plugins/', utiliser PLX_PLUGINS
    3) fonction plxCalendrierCurrentMonth: la ligne suivante ne serait-elle pas en trop car on est le 26/01 et j'ai le calendrier du mois de janvier et de février qui s'affiche (c'est paradoxal avec le nom du hook qui affiche que le mois en cours d'après son nom)
    $this->DisplayMonth($DateSuiv->format('Y-m'));
    

    en général
    ==========
    1) interface d'admin très agréable
    2) belle mise en forme du calendrier coté visiteur dans la sidebar et dans la page statique
    3) bonne programmation, code agréable à lire et commenté
    4) j'aime bien l'utilisation de SimpleXml et xpath
    5) calendrier: affichage du mois de janvier et février, au lieu que du mois en cours (?)
    6) des problèmes d'affichage en mode responsive design. le calendrier sort de la sidebar par moment quand on réduite la fenêtre du navigateur
    7) les évènements dans la sidebar et dans la page statique ne tiennent pas compte des couleurs sélectionnées (comme sur le screenshot du plugin) -> pas de couleur.

    todo (ou des suggestions)
    =========================
    - utiliser des fichiers de langues pour l'admin
    - écran admin: mettre des messages utilisateurs en cas d'erreur ou d'information en cas d'action bien réalisée
    - faire une vérification et afficher un message au moment de l'activation du plugin si SimpleXML n'est pas dispo sur l'hébergeur (même si l'indisponibilité est de + en + rare)
    - quelques coquilles dans les commentaires dans le code à corriger (ex: égalemet au lieu de également)
    - vérifier l'affichage du calendrier en mode responsive design
    - rédiger l'aide
    - ajouter une icone (fichier icon.png)
    - ajouter un sélectionneur de date pour rendre l'admin un peu plus "userfriendly"
    - rendre paramétrable le nombre de mois affiché dans la page statique. en fonction du thème, 6 mois ça peut faire des colonnes très serrées et pas très larges, surtout si le texte d'un événement pousse à l'affichage la largeur de la colonne du mois.

    En conclusion, c'est vraiment un très très bon plugin. Encore des réglages à faire, mais le principal est fait et fonctionne très bien

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • @zenpix: j'ai developpé le plugin sur un pluxml 5.3.1 avec le thème par défaut (mais il est en production sur un (vieux) thème mimbo). Aucun problème de page d'accueil. Si tu veux que j'investigue, il va falloir me donner quelques informations complémentaires...

    @Stéphane : waouh, ça c'est du retour ! Je vais digérer tout ça et concocter une v1.1.

    Quelques éléments de réponse en attendant :
    - Pour plxCalendrierCurrentMonth, effectivement j'affiche 2 mois. Dans la version 0.1 du plugin je n'affichais que le mois en cours, mais justement je m'étais rendu compte qu'on devenait "aveugle" en fin de mois (le 26 janvier, ne voir que les 5 prochains jours est un peu léger). j'ai donc décidé de lui adjoindre le mois suivant. Je n'ai pas changé les noms des fonctions...
    - SimpleXML et Xpath : j'ai tenté d'utiliser les techniques de requètes XML à base de "xml_parser_free", mais je les trouve compliquées à la fois à comprendre et à mettre en oeuvre. Je trouve Xpath carrément plus simple à appréhender et utiliser (et le code résultant est très lisible). J'aurais tendance à recommander Xpath dans tous les cas, bien que je découvre avec ton message que SimpleXML n'est pas forcément déployé partout. Pour information, je m'auto-héberge ce qui fait que je ne suis guère habitué aux problèmes d'hébergements chez les tiers du marché.
    - Responsive design : Je ne connais pas du tout, donc je vais essayer de me renseigner pour piger de quoi il s'agit (enfin, ayant zieuté PluCSS j'ai compris ce qu'on veut obtenir, mais je n'ai pour l'instant aucune idée de la technique de la dynamique sous-jacente).

    Je n'ai pas compris ton "7) les évènements dans la sidebar et dans la page statique ne tiennent pas compte des couleurs sélectionnées (comme sur le screenshot du plugin) -> pas de couleur.". Je ne vois pas du tout ce que représentent les "couleurs sélectionnées". J'ai réétudié les screenshots, je ne vois pas ce qui cloche.

    En tout cas, merci pour ton retour super complet et tes encouragements.
  • La nouvelle version de plxCalendrier est sortie :
    plxCalendrier v1.1

    Le changelog :

    v1.1
    - Ajout d'une taille définie aux carrés colorés de la légende
    - Affichage en ordre inversé des dates du calendrier dans l'interface d'admin
    - Ajout d'une page 'config.php' proposant de choisir le template "static" à utiliser
    - Modification technique des hooks pour simplifier grandement (plxShowConstruct et plxMotorPreChauffageBegin)
    - Ajout du mode de création "0750" pour les mkdir
    - Ajout d'un fichier "icon.png" pour offrir un visuel au plugin
    - Ajout de plusieurs "placeholder" dans la page d'admin pour guider les utilisateurs sur ce qui est demandé dans les champs
    - Intégration totale de l'internationalisation
    - Ajout de la langue anglaise
    - Ajout d'une page d'aide
    - Usage de PLX_PLUGINS au lieu de PLX_ROOT.'plugins/'
    - Ajout d'un message d'erreur si la date fournie est en erreur
    - Ajout d'un message d'erreur si le numéro d'article fourni ne correspond pas à un article existant
    - Modification de la méthode d'affichage du bouton "détruire" dans la page d'administration
    - Modification de la façon dont on gère le css spécifique (factorisation de parties standards)
    - Ajout de la possibilité de retirer le bouton "Calendrier" permettant d'accéder au calendrier semestriel
    - On accepte les formats AAAA-MM-JJ et JJ-MM-AAAA
  • Bonjour et merci pour ce greffon.

    J'utilise uniquement l'affichage du calendrier dans la sidebar pour signaler des événements sur un site bilingue (version 1.1 du greffon) .

    Je rencontre plusieurs problèmes.

    1 - Un message d'alerte récurrent dans l'administration site version FR ou EN (l'article XX n'est pas actif) alors qu'il est publié. N'empêche pas la publication de la date sur le calendrier.
    2 - Impossible d'effacer dans l'administration une ligne sélectionnée (Article ou style) avec la case à cocher, en utilisant l'icône rouge prévue à cet effet.
    3 - L'article associé ne peut être identifié que par son numéro d'article sans aucune possibilité de préciser la langue et donc la partie du site concernée (FR ou EN dans l'identifiant article) ce qui produit un mélange des langues même si un seul événement (FR ou EN) est attaché à la date.

    PluXml génère les mêmes numéros pour des articles différents dans la partie francophone et anglophone du site et perturbe le greffon qui mélange tout.

    Serait-il envisageable de rendre possible la saisie d'une url comme : fr/article36/titre_article , en/article36/titre_article ?

    Bonne journée à tous.
  • Bonjour,

    Voici la version v1.2 du plugin : plxCalendrier v1.2

    /!\ Important : bien penser à désactiver/réactiver le plugin après migration !

    Le changelog est le suivant :

    v1.2
    - Correction d'un bug qui apparait lorsqu'on met une date sans zéro (du genre 2/8/2015).
    - Correction du message d'erreur lorsque la date est incorrecte.
    - Gestion et ajout d'un message d'erreur lorsqu'on tente de créer un événement à une date déjà associée à un événement.
    - Modification technique des css pour intégration logique à pluXml (création de fichiers site.css et admin.css + gestion)
    - Amélioration de la prise en compte des liens vers articles : On cesse de considérer '1' comme différent de '0001'

    Quelques remarques :

    - Normalement tes problèmes de destruction de lignes devraient être corrigés.

    - Je ne suis pas du tout un expert de la gestion bilingue de pluXml ; d'ailleurs, je ne savais même pas qu'on pouvait avoir un site bilingue (je pensais que c'était l'un ou l'autre). Je vais donc tenter de piger comment ça marche pour proposer une gestion des articles telle que tu la proposes. Peux-tu me donner deux exemples d'URL complètes pointant vers le même article mais en français pour la première et en anglais pour la seconde ?

    - Si tu es fort en anglais et que tu as des propositions à me soumettre concernant le fichier de langue en.php, voire en-help.php, n'hésite pas :)
  • Bonjour,

    Pour votre information:

    J'utilise le greffon Multilingue 0.5 et voici l'url type du lien d'un article en français dans l'administration :
    www.monsite.org/fr/article34/actualites-test1 et dans la barre d'adresse du navigateur, toujours depuis l'administration:
    www.monsite.org/core/admin/article.php?a=0034

    Celle affichée dans la barre d'adresse du navigateur, interface publique : www.monsite.org/fr/actualites-test1.php
    parce que MyBetterUrls 1.4 procède à une ré-écriture à la volée des urls.

    L'article équivalant en anglais traitant du même sujet d'actualité serait: www.monsite.org/en/article34/news-test1
    Le titre de l'article est en anglais bien sûr mais le numéro d'article peut différer, certains articles n'existent pas dans l'autre langue.

    En fait le problème n'est pas là.

    Comme vous le dîtes vous-même, le calendrier n'est pas destiné à un usage multilingue inclusif (en l'occurrence:fr et en). La conception du greffon Multilingue ne permet pas quant à lui de rédiger des articles alternativement dans une langue ou bien dans une autre dans la même interface d'administration. L'utilisateur doit se connecter soit à la partie française, soit à la partie équivalente anglaise selon la langue de rédaction qu'il choisit au moment d'écrire.
    Vous avez conçu PlxCalendrier pour une utilisation monolingue exclusive (fr ou en) et ça, il le fait très bien.
  • Bonjour,

    Je n'avais pas compris qu'il s'agissait d'une fonctionnalité offerte par un plugin, donc hors du noyau pluXml. Je préfère éviter de me lancer dans une modification du plugin qui serait soumise à la présence d'un autre plugin.
    Cela dit, si quelqu'un a une idée précise de comment intégrer aisément la demande d'Amadeus dans le calendrier, je veux bien le faire :)

    Gari.
  • Bonjour,

    Je suis dans un phase de mise en place d'un blog sous pluxml pour un fonctionnement associatif; J'aurais aimer mettre en place le plugin " plxCalendrier" .
    Je l'ai installé mais lorsque je clique sur le bouton calendrier, voilà ce que me renvoi Apache:

    The requested URL /pluxml/plxCalendrier was not found on this server.

    Il y a t-il une configuration particulière à faire ?

    les conditions: Pluxml 5.3.1
    theme: default
    Linux Debian
    Serveur WEB APACHE2

    conditions des droits linux de pluxml:

    drwxr-xr-x 7 root root 4096 avril 3 16:43 .
    drwxr-xr-x 3 root root 4096 avril 3 16:35 ..
    -rwxr-xr-x 1 root root 60 avril 3 16:35 config.php
    drwxr-xr-x 5 root root 4096 avril 3 16:35 core
    drwxr-xr-x 9 www-data www-data 4096 avril 6 20:56 data
    -rwxr-xr-x 1 root root 1545 avril 3 16:35 feed.php
    -rwxr-xr-x 1 root root 3398 avril 3 16:35 index.php
    drwxrwxr-x 9 www-data www-data 4096 avril 10 20:30 plugins
    -rwxr-xr-x 1 root root 4173 avril 3 16:35 sitemap.php
    drwxr-xr-x 8 root root 4096 avril 4 15:23 themes
    drwxr-xr-x 2 root root 4096 avril 3 16:35 update
    -rwxr-xr-x 1 root root 5 avril 3 16:35 version

    Jeune utilisateur, je suis pas encore très familiarisé avec l'organisation de PLUXML.

    Merci d'avance pour tout aide.

    Librement
    Tontonfarfelu :)
  • cpalocpalo Member
    Bonjour,

    je viens d'installer le plugin .
    Petit problème: lorsque je tape un numéro d'article pour l'association à un évenement, il me dit que l'article n'est pas actif.

    Cordialement
  • GariGari Member
    avril 2015 modifié
    @tontonfarfelu : je suppose que ça vient d'une éventuelle réécriture d'URL ; c'est un sujet que je ne maîtrise pas du tout. Normalement, quand on clique sur le bouton "calendrier", ca demande à débrancher sur "plxCalendrier". Si quelqu'un a une idée de la cause du problème, je suis preneur !

    La création du bouton "Calendrier" se fait dans la fonction suivante, pour information :
    	public function plxShowStaticListEnd()
    	{
    
    		$string="
    		<?php
    		\$stat = str_replace('#static_id','static-calendrier',\$format);
    		\$stat = str_replace('#static_class','static-menu',\$stat);
    		\$stat = str_replace('#static_url',\$this->plxMotor->urlRewrite('?plxCalendrier'),\$stat);
    		\$stat = str_replace('#static_name','".$this->getlang("L_CALENDRIER")."',\$stat);
    		if(preg_match('/^plxCalendrier/',\$this->plxMotor->get))
    			\$isActive='active';
    		else
    			\$isActive='noactive';
    		\$stat = str_replace('#static_status',\$isActive,\$stat);
    		\$menus[][] = \$stat;
    		?>
    ";
    		echo $string;
    	}
    

    @cpalo : en fait, il faut mettre 4 chiffres obligatoirement, puisque c'est la façon exacte dont pluXml stocke les numéros d'article. Exemple : mettre "0042" et non "42". Je compte changer ça dans une future version.
  • cpalocpalo Member
    Bonjour,

    J'avais bien mis sur 4 chiffres mais j'avais écrit l'article avec une date ( donc future) correspondant à celle de l'évenement du calendrier.
    Par contre dans le panneau d'administration, à l'extremité de chacun des evenements il y a une case à cocher. Si on la coche et qu'on fait enregistrer cela supprime l'évenement. Cela serait donc d'ajouter un intitulé "supprimer"

    Cordialement
  • GariGari Member
    @cpalo :
    Pour la date effectivement, je suppose que pour une date future l'article n'est pas chargé, il n'est donc (logiquement) pas trouvé. D'un autre côté, le comportement me paraît normal : l'article n'est effectivement pas actif et un clic sur le lien dans le calendrier mènerait sur une jolie erreur type 404.
    humm normalement il y a une petite icône "supprimer" en guise de titre de colonne, mais il est possible qu'elle s'affiche mal, effectivement. Je mets ça dans mes cartons pour la prochaine version, merci !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut Gari

    Est-ce les sources du plugin sont sur un github par exemple pour soumettre des modifications avec des pull-request ?

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Je viens de voir un truc, fichier plxCalendrier.php
    	public function THemeEndHead()
    

    alors que ça devrait etre ThemeEndHead

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    si ça t'interresse j'ai fais la modif pour le datepicker dans le ficher admin.php

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • GariGari Member
    Salut Stéphane,

    - Non je n'ai pas les sources sur Internet (Git ou autre), je ne suis pas familiarisé avec ce genre de plateforme (je n'ai jamais utilisé de gestionnaire de sources).
    - Ok pour ThemeEndHead (c'est bizarre, ça marche quand même ?)
    - Oui ça m'intéresse le admin.php modifié, avec plaisir même ! Si tu peux me mettre un lien pour le télécharger, je l'intégrerai puis diffuserai la version 1.3 du plugin :)
  • GariGari Member
    Bonjour,

    La version 1.3 est sortie : plxCalendrier v1.3

    Le changelog :
    v1.3
    --------------------------------
    - Corrections mineures de code
    - Correction d'un bug sur la fonction de vérification d'article actif
    - Insertion d'un datepicker dans la partie "admin" (merci Stéphane)
    - Correction icône "supprimer" mal affichée dans la partie "admin"
    

    Un grand merci à Stéphane pour son (gros !) coup de pouce pour l'insertion du datepicker.
  • Bonjour,
    Tout nouveau, je découvre le cms pluxml et les plugins qui vont bien. Président d'une association, ton plugin est très intéressant :) . Je l'ai donc installé, il fonctionne sauf que je n'ai pas les couleurs 8.( .
    Adresse de mon site : ASL Les Prés d'Amélie
    J'ai besoin de ton aide, as-tu une idée ??

    Merci
    Jol
  • GariGari Member
    Salut Jol,
    Ravi que mon plugin te plaise.

    Effectivement le css spécifique qui contient les styles des événements n'est pas accessible, on obtient l'erreur suivante lorsqu'on tente d'y accéder :
    You don't have permission to access /asl/cache/plxCalendrier_specific.css on this server.
    
    (URL testée : http://www.jose.monespace.net/asl/cache/plxCalendrier_specific.css)

    Il semblerait donc que le répertoire de cache prévu pour accueillir le fichier css n'ait pas les bons droits d'accès. C'est un répertoire créé par mon plugin et qui a normalement les bons droits lorsque je le créé :
    mkdir($this->CacheDirectory,0750);
    

    Je suppose que c'est ton hébergeur qui pose problème (monespace.net) et qui refuse peut-être que ce genre de commande soit lancée. J'admets ne pas connaître grand chose en "politiques d'hébergeur"...
    As-tu accès à l'arborescence ? Peux-tu lancer des commandes Unix ? Par exemple, en te plaçant dans le répertoire de base "asl" :
    ls -l
    
    Ce qui me permettrait de voir les droits effectivement fournis aux répertoires (et donc les droits de lecture/écriture du répertoire "cache").

    Si un autre membre du forum a une meilleure maîtrise des problématiques liées aux hébergeurs (ou s'il voit que je me plante complètement sur mon diagnostic) qu'il se dénonce :D
  • Salut,
    je viens de vérifier les permissions. le répertoire cache=750 et le fichier css=644
  • GariGari Member
    Alors là, les bras m'en tombent.

    Le répertoire plugins est accessible, la preuve on n'a pas d'erreur (c'est une page blanche qui s'affiche, provenant du index.html situé dans le répertoire plugins) mais par contre le répertoire cache n'est pas accessible. Je ne vois guère qu'un paramétrage de apache ou en htaccess pour faire ce genre de blocage, mais bon c'est vraiment étrange...

    Est-ce que quelqu'un aurait une idée du pourquoi d'un tel comportement ?
  • permissions répertoire cache à 755 et maintenant ça fonctionne ???? :)
  • GariGari Member
    Hummm ça sous-entend que l'utilisateur qui tente d'accéder au répertoire cache n'est pas le même que celui qui l'a créé : tout ça me parait bien étrange, décidément... Mais bon, si ça marche à présent, tant mieux !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Les permissions peuvent être différentes en fonction des hébergeurs et leur politique de sécurité. Chez certains 750 peut marcher alors que chez d'autres il faudra mettre 755

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Je reviens vers toi car j'ai un autre souci. Dans l'administration du plugin > les styles utilisateurs, j'ai créé plusieurs lignes.
    Je n'arrive pas à supprimer la 1ère ligne du tableau. Les autres lignes, pas de problèmes pour les supprimer.
    A-tu une idée ? Puis-je la supprimer manuellement ?
    Merci
  • GariGari Member
    avril 2015 modifié
    @Jol : Je n'ai pas le code sous les yeux mais je vois d'où peut provenir l'erreur, je fais une correction du plugin et je relivre ça dès que possible (ce soir peut-être).

    @Stéphane : ok merci pour l'info, à partir de maintenant je ferai du 755...
Connectez-vous ou Inscrivez-vous pour répondre.