Plugin séances

Dans la gestion d’événements, il arrive d’avoir à mettre en rapport un spectacle (film, concert ou autre), un lieu et une date. Il est alors possible d’envisager plusieurs modes de présentation : pour un spectacle donné, les dates et lieux de celui-ci, de même à partir d’une date donnée, ou d’un lieu déterminé.
Ce plugin s’adresse plutôt aux sites de programmation culturelle ou événementielle (festival ou autre) pour la tenue de leur agenda de spectacles, films,…

Pour ce plugin, un spectacle (film, concert, conférence,…) est défini par un article. Le plugin rajoute la possibilité de définir les endroits (lieux, salles, scènes,…) eux-mêmes rattachables en option à un article. Les séances sont définies par un article de rattachement, un endroit et une date (avec éventuellement une remarque supplémentaire). Seule la date de début est définie. Une rubrique est alors comparable à une section, une thématique, ou à l’ensemble de la programmation.

Installation

Comme tout plugin. Celui-ci installe deux nouvelles tables spip_seances et spip_seances_endroits. Il ajoute également un champ « seance » sur la table spip_rubrique.

Fonctionne à partir de spip-2.0.10 inclus.
Compatible Champs Extra 2.

Désinstallation - désactivation

On peut soit désactiver (dans ce cas décocher simplement l’activation du plugin), les tables sont alors conservées, soit désinstaller en cliquant sur le lien correspondant (les tables sont alors supprimées).

Utilisation

Définir un endroit (obligatoire).
Il est obligatoire de définir au moins un endroit.
Dans « Édition » > « Séances / endroits »
Un endroit est défini au minimum par son titre. On peut lui adjoindre un descriptif ou le rattacher à un article. Les noms des endroits peuvent être numérotés « x. » pour définir des priorités dans l’affichage (voir plus loin).

Définir les endroits
Liste des endroits des séances
Formulaire de saisie pour les endroits


Définir des séances
Il est nécessaire pour cela d’activer le mode « séances » pour la rubrique.
Ceci étant fait, pour chaque article de celle-ci on pourra alors définir des séances.

Activer les séances
(dans la colonne de gauche)
Désactiver les séances


Remarque : la désactivation du mode séances pour une rubrique supprime les séances enregistrées pour tous les articles de celle-ci. Cette action est immédiate, elle constitue donc un moyen de supprimer toutes les séances d’une rubrique.
Le mode séance n’est pas hérité par les rubriques filles. Il faudra donc l’activer pour chaque rubrique d’une branche éventuellement.

Pour chaque article de la rubrique il est alors possible de définir des séances.

Listes des séances définies
Formulaire de définition d’une séance


Les séances peuvent être dupliquées (pratique lorsque seul un élément est modifié, jour, lieu par exemple)
Il est possible de supprimer une séance ou toutes les séances d’un article.

Remise à zéro
En fin de saison il peut être utile de supprimer toutes les séances de tous les articles. Pour cela dans « configuration » choisir « Configuration plugin séances » et supprimer toutes les séances enregistrées. cela ne désactive pas le mode séance pour les rubriques où il est activé.

Réinitialiser les séances


Dans les squelettes

La boucle SEANCES
<BOUCLEn(SEANCES){critères...}>

les critères de la boucle SEANCES

  • id_seance sélectionne la séance dont l’identifiant est id_seance. Comme l’identifiant de chaque séance est unique, ce critère ne retourne qu’une ou zéro réponse.
  • id_article sélectionne toutes les séances associées à un article.
  • date_seance ou age_seance sélectionne toutes les séances d’une date donnée ou d’un age donné (positif ou négatif) age_seance = 0 pour aujourd’hui par exemple ou age_seance <= 0 pour l’avenir.
  • id_endroit sélectionne toutes les séances se déroulant dans un endroit donné (ou dans une sélection d’endroits avec le critère IN)

par extension
id_rubrique sélectionne toutes les séances de tous les articles contenus dans une rubrique. (utile si une rubrique représente un genre, une section d’un festival,…).

statut restreint l’affichage des séances à celles rattaché à un article publié.

<BOUCLEn(SEANCES){id_rubrique}{age_seance <= 0}{statut = publie}{par date_seance}>

les balises de la boucle SEANCES

  • #ID_SEANCE
  • #ID_ARTICLE : id de l’article de rattachement de la séance
  • #ID_ENDROIT : id de l’endroit rattaché à la séance
  • #DATE_SEANCE tous les filtres de date sont applicables à #DATE_SEANCE
  • #REMARQUE_SEANCE : remarque éventuelle sur la séance (« en présence du réalisateur », « Attention, exceptionnellement… ».

Exemple : affichage des dates d’un spectacle donné (donc des séances rattachées à un article donné). Dans une boucle englobante de type ARTICLES :

<B_dates><ul>
<BOUCLE_dates (SEANCES) {id_article}{par date_seance}>
[<li>(#DATE_SEANCE|affdate) - [(#DATE_SEANCE|heures)]h [(#DATE_SEANCE|minutes)]</li>]
</BOUCLE_dates>
</ul></B_dates>

La boucle SEANCES_ENDROITS
<BOUCLEn(SEANCES_ENDROITS){critères...}>

Les critères

  • id_endroit id de l’endroit
  • id_article id de l’article éventuellement rattaché à un endroit
  • nom_endroit nom de l’endroit

Les balises

  • #NOM_ENDROIT : nom de l’endroit
  • #ID_ENDROIT : son id
  • #ID_ARTICLE : id de l’article décrivant plus précisément l’endroit éventuellement
  • #DESCRIPTIF_ENDROIT : descriptif de l’endroit.

Filtres du plugin séances

|heure_seance [(#DATE_SEANCE|heure_seance)] est équivalent à [(#DATE_SEANCE|heures)]h[(#DATE_SEANCE|minutes)], avec un format d’affichage plus convivial (20h au lieu de 20h00).

|heure_fin_seance le nom de ce filtre n’est pas forcément le plus approprié, mais il détermine la date de fin d’une séance à partir de sa date de début et de sa durée. Cette dernière peut être stockée dans un champ de l’article correspondant au film, au concert ou autre. Cette donnée peut être passée sous la forme 1h30, 1.30, 1,30, 1:30 (pour 1 heure 30).
[(#DATE_SEANCE|heure_fin_seance{#SUR_TITRE})] si la durée est stockée dans le sur-titre de l’article.

Les dates et les âges

les critères age et age_relatif sont applicables aux séances avec age_seance et age_relatif_seance. Ainsi on pourra utiliser {age_seance < 0} pour obtenir les séances à venir.

À partir de spip 3.0.8, les requêtes sql ont été modifiées et simplifiées. Le critère {age = 0} retourne les séances ayant lieux dans les 24 heures avant et après la requête.
Pour avoir les séances du jour, il est possible d’utiliser une expression du type

en dehors d'une boucle 
[(#SET{aujourdhui,[(#DATE|affdate{'Y-m-d'})]})]

puis dans une boucle sur la table SEANCES avec ou sans jointure
<BOUCLE_a (SEANCES)....{date_seance like #GET{aujourdhui}%}....>

Les jointures.

Il est possible de faire des jointures principalement sur la table spip_articles.

Exemple afficher les 5 prochains spectacles par ordre de date avec leur titre et les endroits de celles-ci. La jointure sur la table seances_endroits se fera automatiquement dans ce cas.

<B_prochains><ul>
<BOUCLE_prochains (SEANCES articles){age_seance <= 0}{par date_seance}{0,5}{statut=publie}>
<li>[(#TITRE)] [(#DATE_SEANCE|affdate)] - [(#DATE_SEANCE|heure_seance)] - [(#NOM_ENDROIT)]</li>
</BOUCLE_prochains>
</ul></B_prochains>

Afficher les dates et lieux d’un spectacle donné

<B_lesseances><ul>
<BOUCLE_lesseances (SEANCES seances_endroits){id_article}{par date_seance}{statut=publie}>
	<li>[(#DATE_SEANCE|affdate)] - #NOM_ENDROIT - #REMARQUE_SEANCE*</li>
</BOUCLE_lesseances>
</ul></B_lesseances>

Afficher les séances des spectacles d’une rubrique donnée.

<BOUCLE_lesseances (SEANCES seances_endroits){id_rubrique}{par date_seance}{statut=publie}>
	<li>[(#TITRE)] - [(#DATE_SEANCE|affdate)] - #NOM_ENDROIT - #REMARQUE_SEANCE*</li>
</BOUCLE_lesseances>

Voir dans le dossier tests du plugins pour d’autres exemples de boucles.

Squelettes définis par le plugin

flux rss
rss_seances_article, rss_seances_rubrique, rss_seances fournissent respectivement les flux rss pour un article, une rubrique ou tout le site. (On pourra les modifier pour qu’ils affichent les séances à venir ou toutes les séances passées et à venir).

l’appel se fait classiquement par #URL_PAGE dans le contexte d’un article ou d’une rubrique pour les deux premiers.

// dans le contexte d'un article
[(#URL_PAGE{rss_seances_article,id_article=#ID_ARTICLE})]
// dans celui d'une rubrique
[(#URL_PAGE{rss_seances_rubrique,id_rubrique=#ID_RUBRIQUE})]
// pour tout les séances du site
[(#URL_PAGE{rss_seances})]

agenda ical
De même ical_seances_article, ical_seances_rubrique, ical_seances fournissent respectivement les agenda au format iCalendar auxquels on peut s’abonner via le client ou le service en ligne adéquat (ical, lithning, netvibes,…) pour un article, une rubrique ou tout le site.
En outre un squelette ics_seance (sans S) permet de télécharger un fichier au format .ics, que l’on peut importer ou ajouter à la volée dans son agenda favori.

Les méthodes d’appel sont semblables à celles des fluxx rss.

Dans les deux cas (flux rss et ical) si aucune séance n’est définie, les squelettes ne retournent rien et produisent donc une erreur 404.

À faire

Gestion plus fine des autorisations (avec cfg ?).
Compatibilité Champs Extra 2 À partir de la version 1.1

Plugin disponible sur la zone

Merci à Matthieu pour ses chats et programmer spip
Merci à Cédric pour la partie activation des séances sur une rubrique inspirée du plugin agenda.

Discussion

32 discussions

  • 5
    Etienne

    Bonjour,
    J’essaie de passer mon site en spip4. J’ai pu activer le plugin séances en modifiant le fichier paquet.xml avec compatibilite=« [3.0.0 ;4.0.*] »
    Je retrouve bien mes séances comme il faut et l’affichage de mon site public est correct.
    Mais je ne peux pas ajouter de nouvelle séance à un article. Au moment de l’enregistrement de la séance j’ai le message d’erreur : seance_edit : Accès interdit
    Je ne peux pas non plus créer de nouvel endroit : une fois cliqué sur « icône créer endroit », j’ai un cadre avec marqué « sans titre » mais rien d’autre qui permette d’ajouter quoi que ce soit ni d’enregistrer.
    Bref, est-il prévu une version pour spip4.0 ? J’ai lu quelque part que spip3.2 ne sera plus supporté dans quelques mois et j’essaie d’anticiper.
    Merci ! et Bon courage !

    Répondre à ce message

  • 3

    Bonjour,

    SPIP 3.2 + Séances 2.0.5
    L’onglet « Édition > Séances / Endroits » affiche la page de gestion des endroits, mais pas des séances.

    Serait-il possible de pouvoir accéder à la gestion des séances qui se trouve ici « ?exec=seances » ?
    Cependant, les séances ne sont pas « facilement » gérables car chaque séance est nommée « Sans titre » et aucun affichage des associations Article / Endroit n’est disponible.

    Merci,
    françois

    • Bonjour

      L’onglet « Édition > Séances / Endroits » affiche la page de gestion des endroits, mais pas des séances.

      la page se nomme ainsi pour éviter les confusions avec d’autres plugins éventuels qui géreraient aussi des « endroits », c’est tout. Les séances se gèrent (création, modification, suppression) sur chaque article puisque c’est la philosophie du plugin (un article représente un film, un spectacle ou autre…) .

      Serait-il possible de pouvoir accéder à la gestion des séances qui se trouve ici « ?exec=seances » ?

      Là c’est spip qui génère un squelette par défaut pour chaque objet défini. Mais toujours par philosophie du plugin, les séances n’ont pas de titre. Effectivement là il faudrait créer un squelette spécifique en mettant à la place du titre : titre de l’article de rattachement / date de la séance.

    • Ben voilà avec la version 2.2 on a une page qui liste toutes les séances en cours et qui permet de les trier, de les supprimer les modifier.
      Plugin compatible avec spip 3.2

    • Génial domiw : merci beaucoup, ça facilite la mise à jour des séances !

    Répondre à ce message

  • 6
    Etienne

    Bonjour,
    Je profite du confinement pour me pencher sur un vieux problème. Peut-être pourras tu me donner des pistes.
    J’ai une boucle en page d’accueil :

    <B_prochain>
    <div class="menu menu_articles" id="articles_recents">
    	</br><h2>La prochaine date ...</h2></br>
        <ul>
    		<BOUCLE_prochain(SEANCES articles) {age_seance < 0} {par date_seance} {0,1}>
    		  <BOUCLE_prochainS(SEANCES articles) {date_seance==^(#DATE_SEANCE|affdate{Y-m-d})}>		  
    		  <li class="hentry clearfix">
    		  	     		  	     
    		  	     <div class="cartouche">
    		  		   #DEBUT_SURLIGNE		  		
    		  		  [(#LOGO_ARTICLE||image_reduire{200,200})]
    		  		  
    		  		  <BOUCLE_lesseances (SEANCES seances_endroits){id_article}{age_seance < 0}{par date_seance}{statut=publie}>
    				 <h5 class="#EDIT{surtitre} surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)]</h5>
    				  [<h5 class="#EDIT{surtitre} surtitre">(#NOM_ENDROIT)</h5>]
    				</BOUCLE_lesseances>
    				
    				  <h10 class="titre"><a href="#URL_ARTICLE">#TITRE</a></h10>
    				  [<h5 class="#EDIT{soustitre} soustitre">(#SOUSTITRE)</h5>]
    				   #FIN_SURLIGNE
    			     </div>  
    							
    				  #DEBUT_SURLIGNE
    				  [<div class="#EDIT{descriptif} descriptif">(#DESCRIPTIF|image_reduire{400,400})</div>]
    				   <br class="nettoyeur" />
    				  [<div class="#EDIT{chapo} chapo">(#CHAPO|image_reduire{400,400})</div>]
    				  <br class="nettoyeur" />
    				  [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,400})</div>]
    				  <br class="nettoyeur" />
    				  [<p class="#EDIT{hyperlien} lien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
    				  #FIN_SURLIGNE
    
    				  <br /><hr size="5"><hr size="5">
    								 
    		  </li>
    		  </BOUCLE_prochainS>
    		</BOUCLE_prochain>

    Si dans l’appel de la séance je change age_seance < 0 en age_seance > 0 j’obtiens bien comme je le souhaite la séance la plus ancienne au lieu de la prochaine séance.
    Mais, si je n’ai pas de séance postérieure à la date du jour dans ma base de donnée, je me retrouve avec un gros bug d’affichage et tout mon css perturbé.
    En gros, si il existe une séance « à venir » quelque part, même si ça n’est pas elle qui est appelée, ou même qu’elle n’est qu’un résidu dans la base de donnée d’un article supprimé, mon affichage est correct.
    Mais dès lors que je n’ai plus aucune date « à venir », l’article souhaité est bien appelé, mais avec un affichage complètement perturbé.

    La même manip mais dans mon menu de navigation, où mes séances apparaissent aussi en résumé, laisse apparemment un affichage correct dans les deux cas.

    Te remerciant,

    • Bonjour
      Si je comprends bien tu cherches à afficher les prochaines séances (pour une même date la plus proche) sur ta page d’accueil. La première boucle retourne la date de la prochaine séance la plus proche et ensuite la seconde porte sur celles qui ont lieu ce même jour que celui retourné.
      Dans la boucle les_seances pourquoi le critère date_seance==^(#DATE_SEANCE|affdate{Y-m-d}) n’est-il pas repris ??

      Il faudrait que tu supprimes les #EDIT{surtitre} qui ne portent pas en fait sur l’édition du surtitre de l’article. (tu peux garder la classe css si tu le souhaites)

      <h5 class="surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)]</h5>
      [<h5 class="surtitre">(#NOM_ENDROIT)</h5>]

      Tu fermes bien tes balises ouvertes dans la partie <B_prochain> en toute fin de ta boucle dans un </B_prochain> ?

    • Etienne

      Salut et merci,

      reprendre le critère date_seance==^(#DATE_SEANCE|affdateY-m-d) dans la boucle les_seances crée une erreur de squelette.

      Supprimer les #EDITsurtitre ne change rien à mon bug d’affichage.

      En fait, si je simplifie beaucoup ma boucle ça ne change rien au problème :

      <B_prochain>
      <div class="menu menu_articles" id="articles_recents">
      	</br><h2>La prochaine date ...</h2></br>
          <ul>
      		<BOUCLE_prochain(SEANCES articles) {age_seance < 0} {par date_seance} {0,1}>
      		  <BOUCLE_prochainS(SEANCES articles) {date_seance==^(#DATE_SEANCE|affdate{Y-m-d})}>		  
      		  <li class="hentry clearfix">
      		  	     		  	     
      		  	     <div class="cartouche">
      		  		   #DEBUT_SURLIGNE		  		
      		  		  [(#LOGO_ARTICLE||image_reduire{200,200})]
      		  		  
      		  		  <h10 class="titre"><a href="#URL_ARTICLE">#TITRE</a></h10>
      				  [<h5 class="soustitre">(#SOUSTITRE)</h5>]
      				   #FIN_SURLIGNE
      			     </div>  
      
      		  </li>
      		  </BOUCLE_prochainS>
      		</BOUCLE_prochain>
          </ul>
      </div>
      </B_prochain>

      J’ai bien la prochaine séance qui s’affiche.

      Je change age_seance < 0 en age_seance > 0, j’ai bien la séance la plus ancienne qui s’affiche. A condition d’avoir quand même quelque part une séance dans le futur bien qu’elle ne soit pas appelée.

      Il suffit que j’aille changer la date de la seule séance du futur et que je la mette au passé, pour que mon bug de mise en page apparaisse. Testé 10h d’affillée hier soir dans toutes les configurations possibles.

      En fait j’ai toujours eu ce bug mais je me débrouillais pour avoir toujours une séance future quitte à mettre un article bidon.
      Là mon but final, une fois que ce bug sera réglé, c’est d’utiliser /b_prochain> pour pouvoir afficher l’article le plus ancien (qui dit « désolé on n’a pas de séance ») si la boucle ne renvoit pas de séance future.
      Bon sinon je pense que je devrais pouvoir contourner en utilisant plutôt un article (« désolé pas de séance ») avec une séance associée loin dans le futur, associé au mot-clé « antibug » et en appelant un critère  !titre_mot=antibug dans ma première boucle.

      Mais c’est de la bidouille.

    • Etienne

      Oui bon en fait !titre_mot= ne fonctionne pas (j’avais vu ça quelque part), mais je règle effectivement mon problème avec  !id_article=280 ou 280 est l’id de l’article daté (séance) loin dans le futur qui est appelé ensuite entre et /B_prochain>. Article qui dit « désolé on n’a pas de séance en vue ».

      Ceci dit je ne comprends toujours pas le pourquoi de cette nécessité d’avoir obligatoirement une séance future pour avoir une mise en page correcte.

    • Si ta mise en page est éclatée quand il n’y a pas de séance future c’est que fort probablement des balises du style div, ul ou autres ne sont pas fermées.
      Qu’est-ce que donne le code de ta page dans ce cas. Firefox signale ces erreurs.

    • Etienne

      RESOLU
      Bon, désolé du bruit. Finalement je me suis rendu compte qu’une fois que j’ai résolu la question dans le inclure/recent (colonne principale du sommaire), c’est dans le inclure/breve (colonne de gauche) que ça c’est mit à dysfonctionner alors que jusque là ça allait. Arghhh !!
      Alors que j’avais passé une partie de la nuit dernière à bidouiller ce inclure/breve pour y faire apparaître mon affichage correctement !
      Et finalement, il a fallu juste changer :

      <br /><h2 class="menu-titre">Prochainement ...</h2>
       <B_program>
       [ma boucle etc ...]
       </B_program>

      en :

      <B_program>
      <br /><h2 class="menu-titre">Prochainement ...</h2>
       [ma boucle etc ...]
       </B_program>

      A partir de là j’ai pu utiliser

      « du texte rien que du texte, sans boucle »
      /B_truc>
      pour afficher un texte si pas de séance prévue, autant dans le inclure/breve que dans le inclure/recent, sans bug d’affichage.
      La nuit dernière entière pour finir avec ce truc si simple !

      Mes excuses et encore merci.
      Tu peux peut-être supprimer cet échange inutile du forum

    • Etienne

      Argh je viens d’écrire un message qui a disparu d’un coup. Je recommence :
      RESOLU
      Une fois la question réglée dans ma colonne principale de page d’accueil, par la manip donnée plus haut (exclusion d’un article « antibug »), ça s’est remis à dysfonctionner par la colonne de gauche que j’avais mis quelques heures à régler la nuit dernière.
      Et finalement je me rends compte que dans le inclure/breve (colonne de gauche), si je remplace :

      <br /><h2 class="menu-titre">Prochainement ...</h2>
      <B_program>
      <div id="agenda">
      <ul class="level1">	
      <BOUCLE_program etc...
      </ul>
      </li><br />
      </BOUCLE_program>
      </ul></B_program>
      </div>

      par :

      <B_program>
      <br /><h2 class="menu-titre">Prochainement ...</h2>
      <div id="agenda">
      <ul class="level1">
      [ma boucle etc...]			    
      <BOUCLE_program etc...
      </ul>
      </li><br />
      </BOUCLE_program>
      </ul></div>
      </B_program>

      Ben là ça fonctionne, je n’ai plus de bug d’affichage nulle part sur ma page.
      Je peux me passer de mes histoires d’article « antibug » daté (séance) dans le futur et exclu d’une première boucle.
      Il me suffit de continuer mes codes comme ça :

       "du texte tout simple sans boucle"
      <//B_programm>

      (ou //B_prochain pour la colonne principale)
      Et tout va bien, si j’ai pas de séance dans le futur j’ai un petit texte à la place (j’arrange un peu le texte avec des styles, mais c’est pas indispensable).
      Y avoir passé une nuit blanche pour finir par un truc si simple !
      Vraiment désolé du bruit. Tu peux supprimer du forum si ça encombre.

    Répondre à ce message

  • Bonjour,

    Le fichier ics_seance.html génère un fichier _seance_1234.ics_ donc avec des tirets bas en début et fin, ce qui est problématique ;-)

    Il y a 2 apostrophes en trop dans filename, ligne 1 :

    [(#HTTP_HEADER{Content-Disposition: attachment;[ filename="<:seance:prefixe_ics_seance:>(#ID_SEANCE|concat{.ics})"]})]
    devrait être :
    [(#HTTP_HEADER{Content-Disposition: attachment;[ filename=<:seance:prefixe_ics_seance:>(#ID_SEANCE|concat{.ics})]})]

    françois

    Répondre à ce message

  • Bonjour,

    Un passage en 3.2 est-il prévu ?

    Merci,
    françois

    Répondre à ce message

  • 3

    Bonjour,

    Petit bug pour l’affichage des NOM_ENDROIT en mode liste sous SPIP 3.1.6 : quand on est sur un article, les séances s’affichent bien, mais les noms des endroits ne s’affichent plus à côté de la date.

    1- Déjà, il faut changer les bornes voir le post plus haut, pour être compatible 3.1

    2- Ensuite, il faut passer la jointure seances_endroits en minuscule dans le fichier ./inclure/liste_seances.html ligne 16 :

    <BOUCLE_seances (SEANCES seances_endroits){id_article}{par date_seance}{pagination}>

    françois

    • Salut,
      Passage en spip3.1 Ok mais effectivement un bug d’affichage des noms des endroits, qui d’une part n’est pas partout, d’autre part n’est pas résolu par ta manip.

      En page sommaire, j’affiche la séance au-dessus du titre avec :

      <h5 class="#EDIT{surtitre} surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)]</h5>
      				  [<h5 class="#EDIT{surtitre} surtitre">(#NOM_ENDROIT)</h5>]
      				  <h10 class="titre"><a href="#URL_ARTICLE">#TITRE</a></h10>

      La date et l’heure s’affichent mais pas le nom de l’endroit.

      Pourtant, dans le corps de l’article, j’affiche en bas d’article :

      <div class="#EDIT{chapo} chapo surlignable">Le [(#DATE_SEANCE|affdate)] [à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)] à #NOM_ENDROIT</div>
      				</BOUCLE_lesseances>

      Et là pas de problème le nom de l’endroit s’affiche bien.

      Si dans la première boucle j’essaie de remplacer [<h5 class="#EDIT{surtitre} surtitre">(#NOM_ENDROIT)</h5>] par [<h5 class="#EDIT{surtitre} surtitre">#NOM_ENDROIT</h5>] ça ne m’affiche que les crochets, si je tente de mettre en minuscule c’est pas mieux ...

      Bref,
      à l’aide !

    • Je précise que tenter de remplacer

      <h5 class="#EDIT{surtitre} surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)]</h5>
                                        [<h5 class="#EDIT{surtitre} surtitre">(#NOM_ENDROIT)</h5>]

      par
      <h5 class="#EDIT{surtitre} surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)] à #NOM_ENDROIT</h5>
      ne fonctionne pas mieux non plus.

    • Bon, j’ai avancé.
      C’était une histoire de (seances_endroits) qui devait apparaître quelque part pour que le nom de l’endroit puisse s’afficher. mais je ne pouvais pas tout simplement remplacer :
      <BOUCLE_prochain(SEANCES articles) {age_seance < 0} {par date_seance} {0,1}>
      par <BOUCLE_prochain(SEANCES seances_endroits) {age_seance < 0} {par date_seance} {0,1}>
      sous peine d’avoir un problème lorsque deux films sont projetés le même jour à des endroits différents (cas rare mais bon).

      Donc il a fallu ajouter une boucle et remplacer :

      <h5 class="#EDIT{surtitre} surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)]</h5>
      				  [<h5 class="#EDIT{surtitre} surtitre">(#NOM_ENDROIT)</h5>]

      par la boucle

      <BOUCLE_lesseances (SEANCES seances_endroits){id_article}{par date_seance}{statut=publie}>
      				 <h5 class="#EDIT{surtitre} surtitre">[(#DATE_SEANCE|nom_jour) ][(#DATE_SEANCE|affdate) ][à (#DATE_SEANCE|heures)h][(#DATE_SEANCE|minutes)]</h5>
      				  [<h5 class="#EDIT{surtitre} surtitre">(#NOM_ENDROIT)</h5>]
      				</BOUCLE_lesseances>

      Ca a l’air de fonctionner comme ça. Et en fait, ben je crois bien que j’avais déjà ce bug en 3.0 mais que j’avais pas fait gaffe ...

    Répondre à ce message

  • Bonjour je souhaiterai exporter les dates de seances sur la base de reférencement de google est ce qu’il y a un lieu avec ça ? https://developers.google.com/structured-data/ je me suis pas encore posé sur le code mais si vous avez des idées, je suis preneur, merci beaucoup

    Répondre à ce message

  • 3

    Bonjour !
    Super plug in
    Il me manque juste pour certaines séances une date de fin.
    J’ai regardé le code, j’ai vu des durées et ici j’ai lu des date_fin
    Y’a t il un moyen simple de faire affiche une date de fin et de modifier les boucles pour que la séance s’affiche pendant toute la durée de celle-ci même si elle dure 2 jours ?

    • Bonjour
      Dans la philosophie de ce plugin, les articles désignent des entités (films, spectacles, concert, …) dont les occurrences se répètent (film projeté le mardi à 16h et 20h30,…).
      C’est donc à l’entité de porter la durée qui à priori est la même pour chaque répétition.
      Voilà pourquoi il n’y a qu’une date, date_seance.
      La durée peut être définie grâce au plugin champs-extra ajouté sur les articles et codé en heure ou tout autre unité de son choix suivant le cas (minutes, jours), les jointures sur les articles dans les boucles se font sans soucis.
      le plugin séances est également compatible champ-extras, ont peut aussi ajouter un champ date_fin sur les séances. Mais alors pourquoi utiliser séances et pas le plugin agenda ?

    • Oui j’avais pensé et j’ai testé le plug agenda sur d’autres sites. Mais dans le projet actuel le plug Séances convient à 90%, les événements s’étalant sur plusieurs jours étant rarissimes (salle de spectacle).
      Le pb c’est que certains spectacles font partie de série (exemple : la semaine du bon goût...) et que je voulais pouvoir traiter cette événement comme une séance pour ne pas embrouiller les petites mains qui mettent à jour le site.

      Je vais essayer le plug champs-extra. Merci.

    • ça pourrait etre interessant de pouvoir regroupé plusieurs seances dans une grande seance surtout (exemple pour un festival de musique)

    Répondre à ce message

  • 2

    Salut, le plugin n’est plus compatible avec la 3,1, snouf

    • Juste une histoire de déclaration dans paquet.xml je pense avec l’attribut compatibilité. Tu peux tenter la modif compatibilite="[3.0.0;3.1.*]".
      Dès que j’ai le temps je teste et reporte.

    • merci ça a marché mais uniquement en ayant installé et modifié le plugin apres le site

    Répondre à ce message

  • 5

    Bonjour,

    Un grand merci pour cet outil !

    Je suis confronté à un petit souci : sur le site http://www.crcatb.fr, sur la page Films, Séances ou Salles, l’affichage des séances ne se met pas à jour à minuit (ben oui ;) ) car visiblement les caches ne sont pas mis à jour.

    Exemple : le squelette ci-dessous a un cache de 4 heures, mais à 5 heures du matin le 7 janvier, on a toujours les données de la veille (le 6 janvier), à savoir Astérix Aujourd’hui et le 7 janvier. En recalculant la page tout rentre dans l’ordre bien évidement.

    Voici la boucle (épurée d’une partie du code html) de la page Zpip ./content/rubrique-3.html :

    #CACHE{4*3600}
    
    [(#SET{aujourdhui,[(#DATE|affdate{'Y-m-d'})]})]
    
    		<BOUCLE_(RUBRIQUES){id_rubrique}> 
    
                	<BOUCLE_r(SEANCES){id_rubrique}{age_seance <= 0}{statut=publie}{par date_seance}>
                	#SET{artunique,#ID_ARTICLE|unique}
    
    					<BOUCLE_c(ARTICLES){id_rubrique}{id_article=#GET{artunique}}{!par date}>
    							<BOUCLE_today(SEANCES) {id_article}{date_seance LIKE #GET{aujourdhui}%}{par date_seance}{unique}>
    							<div>
    								<p><strong class="aujourdhui">Aujourd'hui</strong> [à&nbsp;(#DATE_SEANCE|heures)]h[(#DATE_SEANCE|minutes)]<br />
    								<BOUCLE_seaa(SEANCES_ENDROITS){id_endroit}>
    								<BOUCLE_ara(ARTICLES){id_article=#ID_ARTICLE}><i class="icon-location"></i><a href="#URL_ARTICLE" title="Information sur cette salle">#TITRE</a></BOUCLE_ara>
    								</BOUCLE_seaa>
    								</p>
    							</div>
    							</BOUCLE_today>
    							
    							<BOUCLE_dates(SEANCES) {id_article}{age_seance<0}{par date_seance}{unique}>
    							<div>
    								<p>[<strong>[(#DATE_SEANCE|nom_jour) ](#DATE_SEANCE|affdate_jourcourt)</strong> ][à&nbsp;(#DATE_SEANCE|heures)]h[(#DATE_SEANCE|minutes)]<br />
    								<BOUCLE_sea(SEANCES_ENDROITS){id_endroit}>
    								<BOUCLE_ar(ARTICLES){id_article=#ID_ARTICLE}><i class="icon-location"></i><a href="#URL_ARTICLE" title="Information sur cette salle">#TITRE</a></BOUCLE_ar>
    								</BOUCLE_sea>
    								</p>
    							</div>
    							</BOUCLE_dates>
    					</BOUCLE_c>
    				</BOUCLE_r>
            
            </BOUCLE_>

    Qu’en pensez-vous ?

    Merci,
    françois

    • Cette noisette est incluse je suppose dans le squelette principal de la page.
      Inclusion statique ou dynamique ?

    • Bonjour domiw,

      Inclusion dynamique via la structure Zpip dans body.html :

       <INCLURE{fond=content/#ENV{type-page},env} ></INCLURE>

      D’où mon étonnement : normalement, mon squelette/noisette doit posséder son propre cache de 4h...

      J’avais pensé mettre en place un système pour invalider le cache chaque jour à minuit et ainsi forcer un recalcul de toutes les pages, mais les pistes que l’on m’a donné sont complexe à mettre en œuvre à mon niveau :(

      Qu’en penses-tu ? Déjà rencontré ce phénomène ?

    • J’ai déjà constaté sur d’autres projets que le cache de Z résistait parfois.

      Une piste :
      avoir une méta ’recalcul_horaires’ par exemple qui comporte une date au format ’AAAA-MM-JJ’
      Dans mes_options.php (qui est chargé à chaque requête) vérifier que la date du jour (celle du jour de la visite de l’internaute) est supérieure à la date du jour stocké dans la méta, invalider les caches par la fonction suivre_invalideur(’1’) et bien sûr mettre à jour la méta.
      avec les fonctions ecrire_meta et lire_meta on a tout ce qu’il faut…

      Je ne sais pas ce que cela vaut mais ça peut être essayé, on t’avait donné ce genre de pistes ?

    • Sur IRC _fil_ m’a conseillé d’ajouter dans options.php :

      $GLOBALS['marqueur'] .= ( time() > (dateprécise) ? ':nouveau' : ':vieux' )

      ... mais je t’avoue que pour l’instant je ne sais concrètement pas l’implémenter ;))))))))))

    • Comme je n’ai pas trouvé de solution « propre » pour gérer la durée du cache, j’ai opté pour la manière bourrin dans mes_options.php :

          define('_DUREE_CACHE_DEFAUT', 3600);

      Ça c’est fait !

    Répondre à ce message

  • 9

    Salut,

    merci pour ce plugin qui fonctionne très bien.

    Juste une petite merdouille d’affichage dans le privé : sur la page d’édition d’une séance (/ecrire/ ?exec=seance_edit&id_seance=X&id_article=XX), lorsqu’on utilise des champs extras, les labels (descriptions des champs) chevauche les champs eux mêmes à cause du #formulaire_seance label margin-left : -80px ; qui se trouve dans seances_styles.css (L11).

    Cf doc joint...

    jean marie

    • Pour info, la modification de prive/seances_styles.css semble résoudre ce problème :

      Supprimer la ligne :

      #formulaire_seance li {
      	padding-left: 140x;}

      Modifier la ligne :

      #formulaire_seance li label:first-child {
      	margin-left: -130px;
      	width: 60px;}

      Cf doc joint...

      Voilà

    • Merci pour le retour

      En fait la suppression totale de toutes les infos de positionnement résout le problème.
      Y compris pour :

      #formulaire_seance label {
      	margin-left: -80px;
      	width: 60px;}

      Correction dans la prochaine révision du plugin

    • Merci pour la réactivité...

      Par ailleurs, j’ai mis en place une grille pour un cinéma : http://image.cousumain.info (en chantier)
      Je me disais que ça pourrait être intéressant de l’intégrer d’une façon ou d’une autre à ton plugin. Peut être sous la forme d’un modèle...

      Dis moi ce que tu en penses...

      jean marie

    • Désolé pour le temps de réaction cette fois...

      Beau boulot cette grille de présentation. Pour répondre à ta proposition, je pense que le mécanisme des plugins est un très gros point pour spip, que pour des questions de maintenance, d’utilisation, et de philosophie, je suis plutôt favorable aux plugins qui ne font qu’une chose et que c’est une perversion du concept ceux qui se veulent totalisant en proposant dans le même paquet des outils dont on n’a pas forcément besoin. Ton intéressante proposition de modèle peut tout à fait être développée dans le cadre d’un autre plugin. Le mécanisme des « necessite » dans la déclaration est là pour permettre ces mécanismes, et ainsi permettre à des éco-systèmes de voir le jour. J’ajouterais que proposer un modèle en plugin est assez simple à faire et ne nécessite que peu de choses autour du modèle (au besoin je veux bien donner un coup de main).
      Merci en tout cas de ta proposition et c’est aussi je l’avoue une certain satisfaction de voir que ce que j’ai proposé est aussi bien utilisé.

    • Salut

      j’essaie de faire une grille pour des seances cinema d’un festival, j’utilise le plugin seances et je me demandais s’il etait possible de publier le code qui a servi à faire celle-ci : http://www.imagecinema.org/

      J’arrive à faire des tableaux, mais je n’arrive pas à faire la correspondance entre les entete de colonne avec les dates et les horraires des seances...

      merci !

    • Salut,

      j’ai dans l’idée d’en faire un plugin mais je n’ai pas eu (pris ?) le temps de le faire (d’autant que je n’ai jamais fait de plugin !)...

      Bref, voici mon code :
      -  la grille sur la page d’accueil : http://spip.pastebin.fr/37039
      -  la noisette film_grille : http://spip.pastebin.fr/37040
      -  la noisette seances : http://spip.pastebin.fr/37041
      -  la page previsu_film (appelée par la noisette film_grille) : http://spip.pastebin.fr/37042

      La noisette seances est également utilisée dans la page article pour afficher les séances du film.
      J’utilise jquery.tooltipster pour les info-bulles : http://iamceege.github.io/tooltipster/
      Et il y a différents champs extras pour l’affichage des infos séances dans les infos-bulles.

      Voilà, j’ai passé pas mal de temps à mettre tout ça en place avec de l’aide (merci b_b ;) ), mais il y a surement des améliorations à apporter... J’ai aussi essayer de commenter au mieux pour que ça soit compréhensible, mais ce n’est jamais évident. N’hésite pas si tu as des questions...

      jean marie

    • Salut,

      j’ai posté une réponse dimanche, mais elle a du rester coincée dans NoSpam (il y avait des liens pastebin)...
      Si un admin pouvait le valider, ça serait super !

      jean marie

    • Voilà c’est fait. Merci pour ta contribution.

    • merci infiniment !

    Répondre à ce message

  • 10

    bonjour
    je galere avec une boucle

    je souhaite afficher
    la date J
    -  séance 1
    -  séance 2
    -  séance 3
    -  séance 4

    date j+1
    -  séance 1
    -  séance 5
    -  séance 2
    -  séance 3

    merci de votre aide

    • Bonjour

      Date J = aujourd’hui ?
      si c’est en spip2, le critère {age_seance = 0} fonctionne, sinon la méthode pour spip 3 est donnée au dessus, pour j+1 en spip2 (et en spip 3, pas testé) {age_seance=-1} (on est dans l’avenir). (donc faut deux boucles peut-être).

      Mais le mieux serait de proposer ton code pour proposer des corrections.

    • bonjour
      mon code c’est


      [(#DATE_SEANCE|affdatenom_jour)] (#DATE_SEANCE

      [(#INFO_TITRErubrique, #ID_SECTEUR)] [(#TITRE)] de (#DATE_SEANCE à #DATE_FIN2

      désolé j’ai pas fait le ménage
      oui jour J c’est aujourd’hui

    • <ul>
      <BOUCLE_date(SEANCES){par date_seance}>
      <li>[(#DATE_SEANCE|affdate{nom_jour})] [(#DATE_SEANCE|affdate)]</li>
      <li><BOUCLE_articlesommaire(SEANCES articles){date_seance}><li><div[ style="background:#(#LOGO_RUBRIQUE||couleur_extraire{0, 0});display:block;float:left;width:20px;height:20px;margin:2px"]></div>
      <h10>[(#INFO_TITRE{rubrique, #ID_SECTEUR})]</h10>  [(#TITRE)] de [(#DATE_SEANCE|heure_seance)] &agrave;  #DATE_FIN2</li>
      </BOUCLE_articlesommaire></li><br>
      </BOUCLE_date>
      <ul>
    • Il faut utiliser le critère {age_seance} comme indiqué dans ma première réponse.
      Dans le plugin tu as un dossier « tests-exemples » et dedans le fichier « seances-test.html » où tu trouveras des exemples de boucle utilisant ce critère (pour fournir les prochaines séances par titre ou les 5 prochaines).

    • dans la boucle date ou articlesommaire ?

    • ça me met ça !!!
      j’aimerai regroupé niveau date et pas repété, piou je galere

      lundi 4 août 2014
      Espace scientifique technique & découverte Web radio de 10h à 20h

      samedi 16 août 2014
      Espace sport & santé Gym d’entretien de 10h à 12h

      samedi 16 août 2014
      Espace scientifique technique & découverte Web radio de 12h15 à 17h

      samedi 16 août 2014
      Espace sport & santé Cyber cuisine de 15h45 à 18h
      Village du jeu Livre et jeux de 15h45 à 18h

      samedi 16 août 2014
      Espace sport & santé Cyber cuisine de 15h45 à 18h
      Village du jeu Livre et jeux de 15h45 à 18h

      samedi 16 août 2014
      Espace lecture & détente Atelier petite enfance de 15h50 à 20h

      lundi 18 août 2014
      Espace sport & santé Gym d’entretien de 1h à 12h

      lundi 18 août 2014
      Espace sport & santé Cyber cuisine de 1h45 à 18h

      lundi 18 août 2014
      Espace lecture & détente Atelier petite enfance de 3h50 à 20h

      lundi 18 août 2014
      Village du jeu Livre et jeux de 15h45 à 18h

      lundi 18 août 2014
      Espace lecture & détente Atelier petite enfance de 15h50 à 20h

      mardi 19 août 2014
      Espace sport & santé Cyber cuisine de 13h45 à 14h

    • Avec un filtre [(#DATE_SEANCE|unique)], ça devrait le faire. Tu n’auras plus la répétition des jours quand c’est le même.

    • bonjour merci beaucoup c’est presqe parfait

      maintenant car j’aime bien me compliquer la vie
      comment faire pour que le nom du jour ne se répete pas dans mon listing [(#DATE_SEANCE|nom_jour|unique)] [(#DATE_SEANCE|affdate_jourcourt|unique)] mais soit quand même visible pour la suite du mois ?
      peut etre fusionner les deux codes ?

      merci beaucoup

    • Peut-être mais attention avec |unique. Il faudra peut-être les différencier avec |unique{date1} et |unique{date2}.
      Voir tous les détails dans la doc sur le filtre unique

    • bonjour ça me met pareil

      jeudi 21 août
      Espace scientifique technique & découverte Web radio de 12h15 à 17h
      Espace scientifique technique & découverte Web radio de 16h15 à 17h
      vendredi 22 août
      Espace scientifique technique & découverte Web radio de 12h15 à 17h
      lundi 20 juillet 2015
      Espace sport & santé Gym d’entretien de 10h à 12h
      mardi 21 juillet 2015
      Espace sport & santé Gym d’entretien de 10h à 12h
      mercredi 22 juillet 2015
      Espace sport & santé Gym d’entretien de 10h à 12h
      besoin du jour 23 juillet 2015
      Espace sport & santé Gym d’entretien de 10h à 12h
      besoin du jour 4 août 2015
      Espace sport & santé Gym d’entretien de 10h à 12h
      besoin du jour 5 août 2015
      Espace scientifique technique & découverte Web radio de 10h à 20h

    Répondre à ce message

  • bonjour merci mr domiw bah j’ai creér un nouveau dossier squelletes et j’ai copier le dossier squellettes_dist dans le dossier nouveau (squellette) quand j’actualise le site il m’affiche bcp des erreurs ex :
    Warning : include_once(C :\wamp\www\spip/mes_fonctions.php) [function.include-once] : failed to open stream : No such file or directory in C :\wamp\www\spip\ecrire\inc\autoriser.php on line 45

    Warning : include_once(C :\wamp\www\spip/mes_fonctions.php) [function.include-once] : failed to open stream : No such file or directory in C :\wamp\www\spip\ecrire\public\parametrer.php on line 21

    Warning : include_once(C :\wamp\www\spip/squelettes-dist/formulaires/recherche.php) [function.include-once] : failed to open stream : No such file or directory in C :\wamp\www\spip\ecrire\inc\utils.php on line 943

    aidez moi svpp c urgentt !!

    Répondre à ce message

  • 1

    salut a tous le plugin est activé tres bien mais il s’affiche pas au site principale les séances et les dates ne sont pas afichés dans les articles au site principale svp comment faire pour les afficher et merci d’avances

    Répondre à ce message

  • Le Jaseur Boreal

    Bonjour,

    Est-ce que quelqu’un a utilisé ce Plugin « séances » en utilisant conjointement les points géolocalisés définis par GIS4 - http://contrib.spip.net/GIS-4 ?

    Un point géolocalisé de GIS4 étant attaché à un article pour signifier un lieu sur une carte avec sa description et les coordonnées..

    Or les séances sont définies par un article de rattachement, un endroit et une date.

    Merci de vos conseils.

    Répondre à ce message

  • 2

    Bonjour et bravo pour ce plugin,
    je recherche un compromis entre celui là et ORR

    Je fais de l’animation soirée et je loue également mon matériel, la mise en place de Séance me donne cela indiquant les dates où le matériel n’est pas dispo pour éviter de le choisir (la boucle disparait si le matériel n’est pas réservé, bien sur).

    ORR ne permet pas de faire une liaison avec les articles alors que Séances oui mais Séance ne permets pas d’indiquer une date de début et une date de fin. Ce que j’aimerais vraiment ...

    Est-il possible lorsqu’une séance est crée de la voir sur les autres articles afin de ne pas recréer autant de séances que d’article ?

    Je m’explique, je souhaiterais créer une séance (dans mon cas une résa) et pouvoir pour les autres articles de la rubrique l’avoir en choix.

    Enfin c’est déjà beaucoup et je n’ai fais que critiquer, mais je souhaite courage aux Spipiens qui n’ont pas les pieds dans le sable !

    Cordialement, Alain

    • Bonjour
      On touche là un débat sur l’utilisation des plugins. Pour ton besoin ORR est tout indiqué, séances étant construit pour un autre type d’utilisation. Pour lier une ressource à un article (ce qui n’est pas prévu par ORR) à priori j’utiliserais champs extra, en créant un champ id_article. Champs extra est justement construit pour cela, compléter spip ou un plugin.

      A priori pour les plugins pour spip3, si ils sont correctement déclarés au niveau des tables utilisées, champs extra est utilisable sans autre forme. Du coup tu aurais tes dates début et fin et ton lien avec les articles. C’est à tester (et si ça fonctionne à indiquer dans la doc de ORR).

    • Bonjour et merci pour cette réponse, elle s’ajoute à ma réflexion sur mes besoins réels.

      Cela me gêne de recréer un champ pour l’id_article !

      Pour les dates début et fin, c’est plus la disponibilité du matériel en interne (dates d’enlèvement et de retour), qui ne concerne pas les visiteurs (idée en cours d’abandon)

      J’ai actuellement un système de résa en php qui permet, après sélection des articles, d’estimer le coût de la location du matériel pour ensuite réserver en précisant une date et les coordonnées du demandeur. (dans une table créée pour ces besoins)

      Il faut que je travaille sur l’affichage de ces dates pour les matériels concernés (articles spip)

      Bonne continuation.

    Répondre à ce message

  • Cinéma LUX

    Bonjour,
    je rencontre un souci avec la gestion des dates. Apparemment cela vient de la gestion des dates de spip. Afficher une séance d’une journée devient impossible avec le critère age_séance=0. Les séances renvoyées sont celles de deux journées chevauchées.

    Cela pose également souci lorsque on travaille sur une semaine de cinéma du mercredi au mardi. Les mardis et mercredis sont « fusionnées ».

    Ce bug de gestion du temps avec les versions > spip 3 est assez problématique....

    Quelqu’un aurait t’il une idée ?

    merci d’avance !

    Répondre à ce message

  • 5
    Mestoph

    Super plugin, mais à quand une migration sur SPIP3... j’ai bien essayé, mais cela dépasse largement mes compétences de bidouilleur...

    Merci d’avance pour les pros de la prog’ qui arriveront à faire migrer ce plugin !

    • Cinéma LUX

      J’essaye d’adapter ce plugins à SPIP3 et je rencontre quelques soucis.
      -  J’ai crée le fichier paquet.xml via plugonet pour que le plugins soit visible par spip3, ça marche.
      -  quand j’active le plugins, souci... les tables sql spip_seances, spip_seances_endroits et la modif de tables spip_rubriques ne s’écrivent pas dans la base.
      -  en bidouillant la base et en créant les tables à la main, le bug se corrige en partie mais impossible de faire une quelconque action depuis l’espace privé... activation du plugins sur une rubrique impossible, création d’une séance impossible...

      Quelqu’un aurait-il avancé sur l’adaptation de ce plugins sur SPIP3 ? ....

    • Comme je l’avais dit plus bas (enfin avant) je comptais m’attaquer à la migration pour spip 3 ce printemps (mais l’hivers dure encore :-(( ).

      Pour la déclaration des tables la procédure a changé entre spip2 et spip3 (avec le paquet xml ce sont certaines choses qui ont été changées). Pour écrire ce plugin j’avais suivi le pas à pas de Marcimat sur son plugin chat. Comme il en a fait une mise à jour pour spip3, tu peux regarder de ce côté pour les exemples . Plugin chat pour spip3

    • Cinéma LUX

      Merci pour la réponse.
      J’ai essayé de faire comme tu me l’as proposé avec le plugins fabrique, malheureusement, avec le spip 3.0.8 le tutorial « chat » ne marche pas chez moi... il me sort des erreurs à foison...

      Je continue à creuser la question quand même, le plugins séances pourrait être d’une grande utilité pour notre futur site !

    • Finalement j’ai bossé hier soir :-)) même si le printemps n’est pas encore là.
      J’ai une version test à commiter, mais j’ai un pb d’identification sur la zone pour faire les manips.
      Cela m’a l’air fonctionnel même si il y a des choses à affiner dans la présentation et à tester. (le plugin s’installe, on active les séances sur les rubriques et on les crées).

      Soit tu patientes que j’ai résolu mes problèmes soit je t’envoies un zip en privé (dans ce cas tu peux me constacter en privé). Ce serait bien d’avoir des retour de tests.

    • Cinéma LUX

      Super ! il me tarde de tester cela !

    Répondre à ce message

  • 1
    MCyrille

    Bonjour tout le monde.
    Je découvre Spip depuis quelques temps, et j’avoue que j’ai un peu de mal à m’en servir comme je le voudrais.
    Et il se trouve que je n’arrive pas à faire fonctionner le plugin séances...
    Je crée bien la salle de cinéma, j’active les séances sur la rubrique. Ensuite je crée un article et je lui attribut des séances.
    Maintenant comment je peux faire pour que cela s’affiche ?
    Petite précision, j’ai juste installé le plugin, je n’ai pas fais d’autre modification.

    En tout cas merci beaucoup d’avance.

    Cordialement,

    MCyrille

    • Si il fonctionne donc bien, mais pour afficher les données du côté public il faut écrire quelques boucles et modifier par exemple le squelettes article (dans la logique spip on ne modifie pas les fichiers de squelettes-dist, on le duplique dans un dossier squelettes et on le modifie).

      Des exemples sont donnés dans le présent article ci-dessus (voir par exemple la partie sur les balises de la boucles séances).

      Après, cela dépend de tes besoins, pas forcément nécessité de modifier le squelette article.html, tu peux créer un modèle que tu déposes dans /squelettes/modeles/. Par exemple le modèle seances.html avec le code du premier exemple de boucle donné ci-dessus.
      Tu pourras ensuite appeler au coup par coup sur chaque article le modèle par la balise <seances|id_article=xxx> où xxx est l’id de l’article ou tu colles ce code (car les modèles de spip 2.1 ne récupèrent pas l’environnement à ce niveau, il faut leur passer explicitement) ou de l’article dont tu veux afficher les séances.

    Répondre à ce message

  • bonjour,

    j’ai commencé à adapter le plugin pour spip3, mais je n’arrive pas à faire apparaitre le bouton « activer les seances pour cette rubrique » sur les pages rubrique de l’interface privée.

    Quelqu’un-e aurait une piste ?

    merci

    Répondre à ce message

  • 4
    eyeless

    Bonjour

    Je tenais à remercier l’auteur de ce module qui m’a bien servi pour créer le site du ciné-club dont je fait parti.

    Ici l’adresse du site http://culture-et-cinema.com

    Merci encore

    • Bonjour,

      Comment faîtes-vous pour afficher l’agenda du mercredi au samedi seulement ?
      Horaires de la semaine en cours & Horaires des prochaines séances ?

      Merci.

    • Bonjour

      On doit pouvoir travailler avec les âges le critère age_seance devant fonctionner.

      // numéro du jour courant dans la semaine (0 pour le dimanche, 1 le lundi,…
      [(#SET{lejour,[(#VAL{w}|date{})]})]
      // age de debut pour la plage
      [(#SET{age_debut,[(#VAL{3}|moins{#GET{lejour})]})]
      // age de fin pour la plage
      [(#SET{age_fin,[(#VAL{7}|moins{#GET{lejour})]})]
      
      et pour les boucles on a alors
      
      <BOUCLE_a (SEANCES){age_seance <= #GET{age_debut}}{age_seance > #GET{age_fin}}{...}>

      On prend la fin au dimanche pour avoir le samedi en entier avec une inégalité stricte sur l’age de fin.
      Pour la semaine suivante il suffit de remplacer 3 par 10 et 7 par 14.

      Une autre solution est de définir une fonction qui donne les dates des jours de la semaine courante en fonction du numéro du jour.

      Dans mes_fonctions.php définir

      function jour_semaine($lejour = 0){
      	// jour = numero du jour de la semaine
      	// dimanche= 0, lundi = 1, mardi = 2, mercredi = 3,...
      	$jour = date('d');
      	$mois = date('m');
      	$an = date('Y');
      	// numero du jour en cours
      	$num_jour = date('w');
      	
      	$date = mktime(0, 0, 0, $mois, $jour-$num_jour+$lejour, $an);
      	return date('Y-m-d H:i:s',$date);
      }

      On peut alors l’utiliser avec

      [(#SET{date_debut,[(#VAL{3}|jour_semaine)]})]
      [(#SET{date_debut,[(#VAL{7}|jour_semaine)]})]
      et
      <BOUCLE_a (SEANCES) {date_seance >= #GET{date_debut}} {date_seance < #GET{date_fin}} {...}>

      On travaille alors directement avec les dates des séances. Avantage on peut même utiliser
      [(#VAL{3}|jour_semaine|affdate)] pour afficher la date du mercredi par exemple. De même on décale de 7 jours pour la plage suivante.

      Dis-nous si cela fonctionne.

    • Merci j’essaye ça.

    • Du coup comment créer un calendrier avec les séances ?

    Répondre à ce message

  • 2
    Etienne

    Bonjour,
    Très intéressant. Je vais refaire le site d’une association en spip3 et en profiter pour intégrer ce plugin, ce qui facilitera la tâche des rédacteurs par rapport à mon bricolage actuel. Une compatibilité du plugin avec spip3 est-elle envisagée à moyen terme ?
    Merci d’avance,
    Etienne

    • C’est envisagé… Il faut en avoir le temps.
      Le code est sur la zone si le cœur t’en dit…

    • Etienne

      Oups, Là c’est très loin de mes compétences. Et il n’y a aucune urgence de mon côté. Je te souhaite un bon courage.

    Répondre à ce message

  • Bonjour,

    Je pense que le commit sur le plugin iterateurs que j’ai fait ce matin vous intéressera, avec de belles perspectives cinéphiles.

    Soit permettre de récupérer automatiquement les flux cinémas : horaires des séances d’un cinéma donné, ou d’une zone géographique, ou d’un film à partir de l’api d’allocine... que l’on peut saluer au passage, pour une fois qu’un code cinema est ouvert et utilisable simplement !

    http://zone.spip.org/trac/spip-zone...

    Répondre à ce message

  • 1
    fouinette

    Bonjour,
    Par rapport au site du cinéma sur lequel je travaille, je suis très intéressée par le formulaire de recherche de séances en fonction de plusieurs critères visible sur le site du Festival International du Film (page Agenda/calendrier des séances).
    Mais étant nulle en programmation, je suis incapable de mettre cela en place moi-même. Est-ce qu’il existe un page expliquant la mise en place d’un tel formulaire ou pouvez-vous me dire vous-même comment vous avez fait ?
    Merci !

    • Voir dans le dossier « test-exemples » du plugin.
      Faire une copie des deux fichiers du dossier « formulaires » contenu dans celui-ci (recherche_seances.html et .php) vers un dossier « formulaires » de ton dossier « squelettes » si il existe sinon le créer.
      seances_recherche.html contient l’appel du formulaire et la boucle de traitement. Copier-coller dans le squelette d’une page de ton site que tu peux appeler comme tu veux et habiller de même.

      L’essentiel est là. Ensuite il est possible de personnaliser l’affichage ou le traitement des résultats suivant les besoins.

    Répondre à ce message

  • 2

    Bonjour,

    J’ai un petit problème avec le plugin séance. Bien que les tables aient été créée, que le plugin soit activé, lorsque je saisi un endroit, celui-ci n’est pas enregistré. Je n’ai aucun message d’erreur.
    Après saisie du lieu, je fais enregistrer. Le plugin me renvoie sur ma page admin de spip et lorsque je reviens dans les lieux, l’endroit saisie n’est pas enregistré et ne peut être par conséquent sélectionné.

    Je travail sous la version SPIP 2.1.8

    Je vous remercie
    Peter Din

    Répondre à ce message

  • Bonjour,
    Je suis aussi intéressé par ce genre de plugins, mais dans mon cas c’est plus pour des expositions.
    J’ai fait cela en utilisant les date et date de rédac pour exprimer le début et la fin de l’événement.
    Qui sont ensuite interprétées dans des boucles par des dates futurs, des dates futurs proches (un mois avant), des dates futurs très proches (une semaine avant), des dates vernissages (présent) et ensuite des dates pendant expo, et finalement une date après (archive).

    Je me demandais si c’était difficile d’adapter ce plugin pour mon approche ?
    Est-ce que je me lance ? Est-ce que quelqu’un d’autre est intéressé par cette version ?

    Bonne année
    G

    [MàJ] : Bon je m’excuse je viens de voir qu’il y avait Agenda 2.0

    Répondre à ce message

  • 1

    Bonjour,

    De passage sur ce site, je trouve votre système fort intéressant et utile ...

    Petites questions :
    -  est-il possible de limiter le nombre de places disponibles pour chaque séance ?
    -  est-il possible qu’une personne s’inscrive pour réserver une place et ainsi lui confirmer sa réservation par e-mail en y joignant un document (ou un lien clikable) par exemple l’affiche ou une autre pub ?

    Merci

    • Bonjour
      Le plugin ne gère pas d’aspects de réservations d’origine. Il est compatible Champs Extra 2. On peut donc tout à fait définir un nombre de places par salle ou séance. Reste à gérer les réservations par un système ou un autre.

    Répondre à ce message

  • 1

    Bonsoir,

    Ton plugin a rencontré l’enthousiasme des usagers à qui je l’ai montré.

    Par contre, comme le site que nous envisageons va traiter non d’un cinéma, mais de tous les cinémas d’une zone géographique (que nous espérons relativement vaste). Il serait utile d’avoir un ou des champs supplémentaires (zone géographique, par exemple).

    Tu signales dans ton texte que le plugin n’est pas compatible avec Champs extra 2. Dès lors, comment est-il possible d’envisager l’ajoût d’un champ dans l’un des deux tables ?

    • Merci pour l’enthousiasme :)

      Pour le reste il n’est pas évident que ce ne soit qu’une question de champs extra. cela dépend pas mal de la façon de structurer les données, de l’utilisation des objets de spip (hiérarchie rubriques > articles, mots-clés,…).
      Je te contacte en privé pour parler de tout cela, ici ce serait probablement trop long et hors sujet.

    Répondre à ce message

  • 4

    J’ai souhaité faire une boucle imbriquée pour grouper les séances d’un film par lieu de diffusion.

    Cela donne, dans une boucle article :

    <B_lieux>
    <ul >
    <BOUCLE_lieux (SEANCES seances_endroits){id_article}{par id_endroit}>
    	<li>>#NOM_ENDROIT
    	<B_lesseances>
    	<ul >
    	<BOUCLE_lesseances(SEANCES){id_endroit}>
    		<li>[(#DATE_SEANCE|affdate)] [- (#DATE_SEANCE|heures)]h[(#DATE_SEANCE|minutes)] [<br>(#REMARQUE_SEANCE)]</li>
    	</BOUCLE_lesseances>
    	</ul>
    	</B_lesseances>
    </BOUCLE_lieux>
    </ul>
    </B_lieux>

    Qui me restitue des lignes multiples : si un film à n séances prévue, la liste des séances de ce film apparaît n fois
    Ce doit-être une pécadille, mais je n’arrive pas à trouver quoi modifier pour avoir une liste unique.

    • 1. il faut un critère unique sur les endroits (pour qu’ils ne s’affichent qu’une fois)
      2. je suppose qu’un film = 1 article donc pour les séances (boucle lesseances) il faut aussi filtrer sur l’id_article, mais à cause du contexte il faut sauvegarder celle-ci par un #SET.

      ce qui donne

      <h3>Par lieux</h3>
      #SET{film,#ID_ARTICLE}	
      <B_lieux>
      <ul >
      <BOUCLE_lieux (SEANCES){id_article}>
      	<BOUCLE_lelieu (SEANCES_ENDROITS){id_endroit}{par id_endroit}{unique}>
              <li>>#NOM_ENDROIT
              <B_lesseances>
              <ul>
              <BOUCLE_lesseances(SEANCES){id_endroit}{id_article=#GET{film}}>
                      <li>[(#DATE_SEANCE|affdate)] [- (#DATE_SEANCE|heures)]h[(#DATE_SEANCE|minutes)] [<br>(#REMARQUE_SEANCE*)]</li>
              </BOUCLE_lesseances>
              </ul>
              </B_lesseances>
              </li>
          </BOUCLE_lelieu>
      </BOUCLE_lieux>
      </ul>
      </B_lieux>
    • Merci beaucoup de ta réponse, rapide et efficace !

      J’avoue que je ne comprends pas pourquoi il est nécessaire de passer par une variable et cela reste encore un peu mystérieux, mais l’écureuil se laisse apprivoiser petit à petit.

    • Le code ci-dessus prend place dans une boucle affichant les articles, par exemple
      <BOUCLE_lesfilms(ARTICLES){id_rubrique}...>
      ou <BOUCLE_lefilm(ARTICLES}{id_article}...>
      la boucle _lieux récupère id_article de la boucle qui l’englobe (du style d’une des deux ci-dessus). Donc pas d’ambiguïté pour celle-ci.

      La boucle _lesseances est englobée dans la boucle _lelieu, elle récupère donc id_article de cette dernière. Dans ce cas ce serait l’id de l’article rattaché au lieu (puisque c’est prévu de pouvoir rattacher un lieu à un article).

      Voilà pourquoi il faut fixer dans une variable id_article hérité de la boucle englobante ou de l’environnement, pour filtrer les séances uniquement rattachées au film en cours de traitement.

      Voir l’article la partie « Des critères d’environnement en cascade ».

    • C’est très clair. Merci.

    Répondre à ce message

  • 3

    Je suis très intéressé par ce plugin qui correspond à une fonctionnalité à laquelle nous réflechissions depuis quelques temps.

    Hélas, il est indiqué qu’il faut être en SPIP 2.1, alors que nous sommes bloqué en 2.0.12.
    Y’a t’il moyen d’espérer une compatibilité ? Je veux bien servir de testeur pour cela.

    Merci de me donner votre avis sur la question.

    • J’avais développé en 2.1 et testé en 2.0 . Ça ne passait pas avec cette version (2.0).
      Bonne nouvelle, je viens de le faire en 2.0.12 et ça fonctionne très bien. Il suffit de changer le « necessite » dans le fichier plugin.xml et de mettre 2.0.12 à la place de 2.1.
      <necessite id="SPIP" version="[2.0.12;]" />

      Après il faudrait redescendre pour voir à partir de quelle version il y a problème mais je ne pense pas que le jeu en vaille la chandelle.

    • Bonjour Domiw,

      Merci de ton indication. Effectivement cela semble marcher.
      Pour ce qui est de l’intérêt de s’assurer la compatibilité avec les version précédente, cela ne me paraît pas du tout anodin.

      En effet, certains plugins utillsés mais pas encore adaptés en version récente obligent sans certains cas de retarder la mises à jour.
      Ajoute à cela l’hésitation légitime de mettre à jour un site et de risquer de tout casser si celui-ci est en production et représente un enjeu critique (je passerai sous silence les adaptations ’en dur’ car c’est mal).

      Bref, les raison pour ne pas être sur la version la plus récente de SPIP sont nombreuses et ta réaction me semble illustrer le mal endémique de SPIP qui rend ce magnifique logiciel si délicat à utiliser pour des application pérennes.

      Donc, oui je t’encourage à vérifier la compatibilité descendant de ce plugin.

      Amicalement.

    • Je pense que la discussion serait longue sur certains points de ton argumentaire (investissement, temps, envies, compétences,...) par rapport au développement des plugins.

      Bref après tests la version limite est la 2.0.10. Ce sera modifié dans l’article et dans le fichier plugin.xml

    Répondre à ce message

  • 1
    fouinette

    Bonjour,
    Super ce plugin ! Je travaille sur le site du Cinéma LUX. J’avais justement un souci avec les séances puisque nous utilisons déjà le plugin Agenda pour les animations et que je ne savais pas comment créer 2 tables distinctes. Je met donc les séances sous formes de tableaux ce qui est assez fastidieux. Si vous zyeuter la page « Les Horaires » pouvez-vous me dire si avec votre plugin je pourrai obtenir une mise en page similaire ? Dans l’idéal, j’aimerai proposer au public une entrée « Horaires par films » et une entrée « Horaires par jours ».
    Est-ce qu’il existe un site exemple ?
    Merci beaucoup, bonne continuation

    • Pour voir un exemple d’utilisation c’est ici rubrique ciné-passion et sur la page d’accueil du même site.
      Pour le moment le site du festival de cinéma qui exploitera complétement ce plugin est encore en chantier.

      Pour les présentations mentionnées cela peut se faire. (Voir les boucles d’exemples dans le dossier « test » du plugin, même si ce n’est pas complétement finalisé).

    Répondre à ce message

  • 1

    Génial !

    Dans la to do list il y a :

    Compatibilité Champs Extra 2

    ça signifie qu’il n’est pas possible d’associer des séances et ajouter un champ (avec le plugin Champs Extra 2) au même article ?

    Merci
    ju

    • La remarque sur Champ extra2 porte bien sûr sur les tables seances et seances_endroits (ajout par exemple d’un champ nbre de places sur la table seances_endroits), pas sur les articles. L’ajout d’un champ représentant par exemple la durée du spectacle sur la table articles est tout à fait possible.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom