Réservation d’événements

Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées.

Installation

Le plugin s’installe comme n’importe quel plugin.

il nécessite:

Introduction

Une réservation comporte deux parties :

  • La partie principale qui contient les données générales, comme les coordonnées, la date et référence de la réservation - la réservation proprement dit.
  • à cette réservation est/sont attaché/s le/s détail/s de la réservation contenant les informations relatives à l’évènement réservé.

Une réservation peut donc contenir plusieurs détails de réservation, mais en nécessite au minimum un.

Configuration

Statut par défaut
Configurez d’abord votre plugin en commençant par le statut par défaut de chaque réservation (si rien n’est choisi, le statut par défaut sera dans liste d’attente)

Le(s) Statut(s) complet(s)
Si vous comptez utiliser la limitation de places pour les réservations, choisissez le/s statut/s qui entre/nt en compte pour déterminer si un événement est complet. Lors d’un changement de statut vers un des “statuts complets”, le plugin déterminera alors si il reste des places disponibles, sinon il mettra le statut à “en liste d’attente”.

Calculer automatiquement le statut accepté de la réservation
Si activé, lors d’un changement de statut vers accepté, le plugin vérifiera si tous les détails de réservation ont le statut accepté, sinon la réservation sera mis en “accepté partiellement”.

Notifications
Vous pouvez ensuite activer l’envoi automatique des notifications de réservations aux vendeurs/administrateurs du site.

Paramètres des notifications
Déclenchement
Définissez alors quel changement de statut déclenchera une notification et les autres paramètres de notifications

Client
Vous pouvez également activer l’envoi d’un mail de notification au client.

Vous avez la possibilité de “Permettre d’envoyer les notifications à plusieurs destinataires”. Si activé, un champ supplémentaire s’ajoutera aux formulaires de réservation permettant d’ajouter des adresses emails (séparés par comma)

Activer le mode Envoi Séparé pour le statut
Par défaut, le changement de statut d’un détail de réservation ne déclenche pas d’envoi de mail. Si vous voulez pouvoir envoyer des notification séparés pour chaque détail de réservation, activez le pour le statut souhaité.

Clôturer automatiquement une réservation
Vous pouvez programmer la clôture automatique d’un évènement.

Si activé, un champ Clôture automatique s’affichera dans vos formulaire d’édition d’articles et d’évènements.
Afin qu’un évènement soit clôturé automatiquement, il faut l’activer au niveau de l’évènement.
Si activé au niveau de l’article, tout nouveau évènement de cet article aura la Clôture automatique activé par défaut.

Chaque évènement pour lequel la Clôture automatique est activé sera déclaré comme clôturé quand la date fin est atteinte et les détail de réservation concernés ayant le statut accepté seront mis en statut clôturé.
Si vous voulez envoyer une notification lors de la clôture de l’évènement, ajoutez le statut clôturé sous Paramètres des notifications/Déclenchement.

Permettre au visiteur de s’enregistrer lors d’une réservation
Si activé, le visiteur peut choisir de s’enregistrer et de créer un compte auteur spip (statut visiteur) avec login et mot passe, ce qui lui permettra d’effectuer de nouvelles réservation dans devoir renseigner à nouveau ses coordonnées.

Cette option peut être rendu obligatoire.

Un visiteur enregistré sera logué automatiquement après la réservation

Créer les évènements ouverts à l’inscription

Saisissez d’abord un évènement.
Nativement le plugin agenda prévoit une case inscription en ligne et Limiter le nombre de places qui seront utilisé par ce plugin.

Pour que l’évènement soit pris en compte par ce plugin, il faut cocher inscription en ligne.

Si vous prévoyez de limiter le nombre d’inscriptions, remplissez le champ Limiter le nombre de places. Laissez vide si vous ne voulez pas imposer de limite.
Si vous avez indiqué un nombre limite, lors de chaque réservation sera alors calculé le nombre de détails de réservation pour cet évènement ayant le statut correspondant au/x Statut(s) complet(s) définit dans la Configuration. Si ce nombre dépasse celui prévu dans Limiter le nombre de places, le détail de réservation obtiendra le statut dans liste d’attente.

Gestion des champs extras

Le plugin intègre automatiquement les champs extras auteurs et réservation ajoutés via le plugin Champs extras

Gestion de prix

  • Créez un champ extra prix pour vos articles ou vos événements. (Il est alors conseillé d’installer le plugin API Prix afin de mieux gérer les formats de prix, surtout pour un site multilingue).
  • Installez le plugin Prix Objets puis activez dans la configuration les objets articles et évènements.

Le plugin vérifie d’abord si il existe un prix fournis par Prix Objets, sinon il cherchera un champs prix (ou prix_ht si API Prix est installé).

Un prix définit au niveau de l’article s’applique à tous ses évènements qui n’ont pas de prix définit.

Vous pouvez également utiliser le plugin Déclinaisons Prix afin de déterminer plusieurs prix par événement.

Formulaire public

Squelettes

<div class="ajax">
        #FORMULAIRE_RESERVATION{#ENV{id_evenement},#ENV{id_article}, #ENV{retour}, #ENV{options}}
</div>

Les variables ne sont pas nécessaire:

  • Les deux premiers servent à limiter l’étendu du formulaire. Il peut s’agir d’un seul id ou d’un tableau de plusieurs id. Si rien n’est mis, tous les événements sont prix en compte.
  • La troisième variable permet de renseigner une url de redirection.
  • La quatrième définit un tableau d’options. Seule l’option “id_evenement_source” est disponible actuellement. Elle permet de définir comment traiter les événements répétés:
    • Par défaut (pas d’option “id_evenement_source”) les événements sont groupés. Une réservation pour l’ensemble des événements répétés est proposé.
    • Pour une réservation pour chaque événement répété il faudrait mettre
      #ARRAY{id_evenement_source,''} 

Modèle

<reservation|>

Si ce modèle est placé dans un article, le formulaire affichera uniquement les évènements futurs de cet article.

Pour afficher seulement le formulaire d’un seul évènement.

<reservation|id_evenement=#ID_EVENEMENT>

Gestion des réservations

Rendez vous sur Activité>Réservations pour trouver une liste des réservations effectuées.

Le menu de la colonne de gauche vous permet de classer les réservations par événement ou par article.

Pour chaque événement ou article il est ainsi possible de visualiser et télécharger les différents réservation effectuées, classées par statut.

Vous retrouverez ces informations également dans la colonne gauche des pages rubriques, articles et événements dans l’espace privé

Extensions

Ce plugin peut être complémenté avec:

Discussion

82 discussions

  • 13

    Bonjour,
    je souhaite passer par le plugins “panier”. Et côté panier et commande, ca roule. Seulement, j’aimerais pouvoir décompter les inscrits ou re-ajouter les désinscrits au compteur des participants. Existe-t-il un tuto à ce sujet ? Une boucle ou un commencement de code ?

    Merci !!

    • A priori, en utilisant commande et panier, je ne vois plus trop quel serait le rôle de ce plugin. Vue que commande gère l’enregistrement des réserves. Sans plus d’explications, je ne saurais pas te répondre.

    • Bonjour, comment procéder pour gérer un stock ? J’aurai bien lié le plugin reservation à mon panier mais si cela est possible via le plugin commande, pourriez vous me guider ? Auriez vous un lien à me fournir. Merci 🙏

    • Bonjour Bob,

      le problème reste le mème, sans plus d’explications je ne peux pas trop aider.

      Rainer

    • Voici le binz. Je me sers des événements comme étant des produits mis en vente ou parfois non (événement gratuit), cela dans le cadre d’une association de formation pour des personnes en voie de réinsertion. J’ai donc un produit = 1 évenement spip, mais je souhaite que une même personne puisse réserver un ou plusieurs événement(s), pour lui et/ou une autre personne (tuteur par exemple). Le plugin réservation d’événement allait bien jusqu’à ce que je tombe sur des complications. Du coup je me suis détourner de ce plugin pour créer un panier. Tout cela fonctionne. Le manque, ce que je n’arrive pas à gérer ce sont le nombre de place (stock). J’aimerais pouvoir le gérer. Mais je ne sais pas comment m’y prendre !
      AUTRE POINT ; une seconde problématique est que je souhaite que dans mes notifications soit intégré un lien visio lorsque l’événement se fait à distance. et pareil, je rame :(

    • Salut Bob,

      Tu devra adapter tes squelettes

      Tu as d’un coté le nombre de commandes approuvé pour un événement et de l’autre côte le nombre de places disponibles pour cet évènement (champ places dans la table spip_evenements).

      À mon avis il suffirait alors d’adapter ton squelette où tu inclus le panier avec une boucle commandes commandes_details qui te calcule le nombre de commandes avec la Balise #TOTAL_BOUCLE par exemple, puis n’afficher le bouton panier seulement si le nombre de commandes validés est inférieur aux places disponibles de l’évènement.

      Mais cela concerne plutôt le forum dédié au plugin commandes, no?

      J’espère que ça te fait avancer das ta quête

      Rainer

    • Bonjour,
      D’après ce que je comprends, tu n’utilises plus réservation d’évènement mais le couple produit/panier/commande.
      Il y a le plugin stock qui fonctionne dans ce cas : https://contrib.spip.net/Stocks

      Pour le lien dans la notification peut-être qu’en ajoutant un champ extra au produit / évènement tu peux inclure sa valeur dans la notification envoyée. Il faudrait trouver le fichier modèle de notification pour le modifier, selon le type de notification que tu utilises.

    • Merci à vous deux pour ces éclaircissements. J’ai bien avancé grace à vous. Je peche sur les notifications. Je fonctionne avec notifications avancées mais je n’arrive pas à ajouter mon champs extra “lien_video”... Si des exemples existent, pourriez vous m’en faire part ?
      Grand merci.

    • Bonjour, je cherche à créer une boucle qui me permettra, à partir du plugin commande de panier, à gérer les places du plugin réservation d’événement. Existe-t-il de l’aide à ce sujet ? En l’état, j’en suis à arrivé à cette boucle, qui permet de gérer un panier proprement, mais sans toucher au “stock”, le nombre de places restantes pour un événement. Voici cette boucle :

      <BOUCLE_test_produit_enstock(CONDITION){si #PLACES|>{0}}><hr><BOUCLE_prix_article(PRIX_OBJETS){id_objet=#ID_EVENEMENT}{objet=evenement}>
      <a href="[(#URL_ACTION_AUTEUR{remplir_panier, prix_objets-#ID_PRIX_OBJET-1, #SELF})]"><button type="submit" class="btn">Ajouter au panier</button></a>  </BOUCLE_prix_article></B_prix_article><a href="[(#URL_ACTION_AUTEUR{remplir_panier, evenement-#ID_EVENEMENT-1, #SELF})]"><button type="submit" class="btn">Ajouter au panier</button></a><//B_prix_article>
      </BOUCLE_test_produit_enstock><button class="btn-disable"><:stocks:stock_epuise:></button><//B_test_produit_enstock>
    • Salut Bob,

      Pas testé et pas optimisé un truc du style ?

      #SET{id_prix, #ARRAY}
      <BOUCLE_prix_delarticle(PRIX_OBJETS){id_objet=#ID_EVENEMENT}{objet=evenement}>
          #SET{id_prix,#GET{id_prix}|push{#ID_OBJET}}
      </BOUCLE_prix_delarticle>
       
      #SET{reserve,0}
       
      <BOUCLE_commandes_ev(COMMANDES_DETAILS){objet = prix_objet} {id_objet IN #GET{id_prix}>
      </BOUCLE_commandes_ev>
      #SET{reserve, #GET{reserve}|plus{#TOTAL_BOUCLE}}
      </B_commandes_ev>
      <BOUCLE_commandes_ev(COMMANDES_DETAILS){objet = evenement} {id_objet = #ID_EVENEMENT}>
      </BOUCLE_commandes_ev>
         #SET{reserve, #GET{reserve}|plus{#TOTAL_BOUCLE}}
      </B_commandes>
      #SET{places_dispos, #PLACES|moins{#GET{reserve}}
      <BOUCLE_test_produit_enstock(CONDITION){si #GET{places_dipos}|>{0}}><hr>
          <BOUCLE_prix_article(PRIX_OBJETS){id_objet=#ID_EVENEMENT}{objet=evenement}>
              <a href="[(#URL_ACTION_AUTEUR{remplir_panier, prix_objets-#ID_PRIX_OBJET-1, #SELF})]">
                 <button type="submit" class="btn">Ajouter au panier</button>
              </a>  
          </BOUCLE_prix_article>
          <a href="[(#URL_ACTION_AUTEUR{remplir_panier, evenement-#ID_EVENEMENT-1, #SELF})]">
              <button type="submit" class="btn">Ajouter au panier</button>
          </a>
      <//B_prix_article>
      </BOUCLE_test_produit_enstock>
      <button class="btn-disable"><:stocks:stock_epuise:></button>
      <//B_test_produit_enstock>
    • Merci beaucoup.
      Le code suivant me permet de vérifier que le compteur fonctionne:

      <B_personnes_inscrites><BOUCLE_personnes_inscrites(COMMANDES_DETAILS){id_evenement}>
       <strong>[(#PLACES|moins{#TOTAL_BOUCLE})]</strong> place(s) restante(s).</BOUCLE_personnes_inscrites></B_personnes_inscrites>

      En revanche, la liste des inscrits dans l’espace d’administration ne fonctionne pas ;(

    • Quelle liste d’inscrits ?

    • La liste des inscrits à un événement.

      Je n’ai pas pu me servir du plugin reservation d’evenement seul car j’avais besoin qu’un internaute puisse reserver pour 1 ou plusieurs personnes, 1 ou plusieurs evenements, independamment l’un de l’autre. Mais je suis désormais confronté à deux autres problèmes :
      1/ celui de la gestion du nombre de places, gestion proposée justement par le plugin reservation d’evenement
      2/ permettre aux administrateurs de consulter la liste des inscrits à un événement.

    • Bonjour,

      j’ai testé cette boucle, j’ai le bon nombre de commande qui apparait sur ma page, mais c’est toujours le même auteur qui apparait. Je suis bloqué ;(. Pourriez vous m’orienter ?

      <BOUCLE_vevent(EVENEMENTS){age<=0}{par date_debut}{statut=publie}>
      <li><a href="#URL_EVENEMENT" target="_blank">#TITRE [(#DATE_DEBUT|jour) ][(#DATE_DEBUT|nom_mois) ][(#DATE_DEBUT|annee) ][(#DATE_DEBUT|heures):][(#DATE_DEBUT|minutes)]</a></li>
       
      <BOUCLE_commande2 (COMMANDES){statut=paye}> <BOUCLE_commande_detail2(COMMANDES_DETAILS auteurs){id_evenement}>boucle commande detail #TITRE nom: <a href="#URL_AUTEUR">#ID_AUTEUR #NOM_FAMILLE #PRENOM #EMAIL</a>  <a href="/ecrire/?exec=commande&id_commande=#ID_COMMANDE">commande: #ID_COMMANDE</a><br>
      </BOUCLE_commande_detail2></BOUCLE_commande2>
       
      </BOUCLE_vevent>

    Reply to this message

  • 5
    Alexandre

    Bonjour,

    Tout d’abord je tiens à vous remercier pour cet excellent plugin.
    Suite à la dernière mise à jour je rencontre un problème avec la validation des champs extra sur l’objet reservation, lors de la validation d’une reservation le message d’erreur suivant est affiché :
    Fatal error: Call to undefined function cextras_verifier_saisie() in /xxxxxxxx/plugins/auto/reservation_evenement/v2.1.4/formulaires/reservation.php on line 330

    Auriez vous un correctif ?
    Merci d’avance !

    • Alexandre

      Version de SPIP : 3.2.11
      Version de Champs Extra : 3.14.1
      Version de Réservation événement : 2.1.4
      Version de Réservation multiple : 1.5.14

    • Pour autant cela ne marchera pas, car la fonction a été supprimée de champs extra. Normalement c’est une fonction interne qui n’a pas à être utilisée en dehors. Je la retablis au cas où, mais elle ne devrait pas être appelée.

      Rainer, contacte moi pour qu’on voit comment s’en passer.

    • La version 3.14.2 de cextras devraient permettre de refaire fonctionner. Mais comme dit, il faudrait sans doute que Rainer modifie son code pour utiliser l’API de saisies.

    • Alexandre

      Très bien, je vais donc attendre la disponibilité de la version 3.14.2.
      Merci pour votre réactivité !

    • Dans la dernière version

      cextras_verifier_saisie()

      a été remplacé par

      saisies_verifier()

    Reply to this message

  • 2

    Bonjour,
    et grand merci
    Cela fonctionne très bien sauf pour les champs extra obligatoire
    Je suis sous spip 3.1, champ extras3.13.2, Réservation Événements 2.1.1
    J’ajoute le champ “Tél” comme obligatoire
    Il apparait bien dans le formulaire comme “obligatoire”
    Mais l’enregistrement ce réalise même s’il est vide

    Erreur de ma part ?
    Par avance merci
    Bruno

    • Bonjour Bruno,

      effectivement la validation des champs extras reservation fonctionnait pas. C’est corrigé dans la version 2.1.2

      Rainer

    • Bonjour,
      Merci, après mise à jour cela marche

      Bonne journée
      Bruno

    Reply to this message

  • 3

    Rebonjour,
    Il n’y a pas de vérification sur l’adresse email à la soumission du formulaire ou j’ai loupé quelque chose dans le paramétrage?

    Merci.

    • Tu parles du formulaire de configuration ? Non il n’y en a pas. On fait confiance à ceux qui gèrent le site :)

    • Non, non. Je parle du formulaire d’inscription #FORMULAIRE_RESERVATION .

    • Il y plusieurs vérification au niveau de l’email, qui est un champ obligatoire.

      Donc on vérifie
      * s’il es bien renseigné
      * s’il conforme au norme RFC 822 on le passant par la fonction

      email_valide() 

      du plugin API de vérification
      * et finalement on vérifie s’il est pas déjà utilisé par un auteur spip.

    Reply to this message

  • 2

    Bonjour et merci pour ce plugin.

    J’utilise la version 2.0.0.

    J’ai voulu essayer l’option “un ou des email” de l’option “Choisir un ou plusieurs administrateurs” du bloc “Paramètres des notifications” de la page de configuration du plugin.
    Je n’ai reçu aucun courriel de cette façon.

    Par contre, avec l’option “un ou des administrateurs”, ça fonctionne, y compris en sélectionnant un admin dont l’adresse électronique correspond à celle que je testais avec l’autre option.

    Oilà. C’est pas bien grâve en ce qui me concerne puisque c’était pour faire mes tests que j’avais besoin de cette première option. Mais je veux bien essayer de debogguer si d’autres personnes sont confrontées au même souci que moi.

    • Bonjour ludogre,

      Oups, apparemment cela n’avait jamais fonctionné. Merci de l’avoir signalé. C’est corrigé dans la version 2.0.1.

      Bonne journée
      Rainer

    • Impeccable. Je viens de tester et ça fonctionne bien en v2.0.1. En effet.

      Merci.

    Reply to this message

  • 1

    Bonjour Rainier,
    Merci pour ce rappel sur la méthode de débogage avec #ENV.
    Oui, il s’agissait bien de Nom et Email qui étaient en cause. En appliquant vos conseils, c’est OK. Donc votre code modifié :

    [(#REM) 15/06/2020 : include modifié et simplifié pour ne PAS saisir d'autres inscriptions]
    
    #SET{id_auteur,#SESSION{id_auteur}}
    <div class="identifiants">
            [(#GET{id_auteur}|>{0}|non)
                    <div class="login">
                            #SET{url,#URL_PAGE{login}|parametre_url{url,#SELF}}
                            [(#SET{titre_login,<:lien_connecter:>})]
                            <strong class="explication"><:reservation:explication_login{url=#GET{url},titre_login=#GET{titre_login}}:></strong>
                    </div>
            ]
    
            <BOUCLE_connecte(CONDITION){si #GET{id_auteur}|>{0}}>
                    <div class="donnes_personnels">
                            <div class="nom">
                                    <span class="label"><:reservation:label_nom:></span> <span>#NOM</span>
                            </div>
                            <div class="nom">
                                    <span class="label"><:reservation:label_email:></span> <span>#EMAIL</span>
                            </div>
                            <BOUCLE_extras(DATA){source tableau, #ENV{champs_extras_auteurs}}>
                                    #SET{nom,#OPTIONS|table_valeur{nom}}
                                    <div class="#GET{nom}">
                                            <span class="label">[(#OPTIONS|table_valeur{label})]</span> <span>#ENV{#GET{nom}}</span>
                                    </div>
                            </BOUCLE_extras>
                    </div>
            </BOUCLE_connecte>
            [(#SAISIE{hidden,#ENV{name_nom,nom},label=<:reservation:label_nom:>,obligatoire=oui})]
             [(#SAISIE{hidden,#ENV{name_email,email},label=<:reservation:label_email:>,obligatoire=oui})]
    
            <!--extra_connection1-->
    [(#GET{id_auteur}|>{0}|non|et{#ENV{enregistrement_inscrit}|=={on}|oui})
            <div class="editer-groupe">
                    [(#ENV{enregistrement_inscrit_obligatoire}|!={on}|?{
                            [(#SAISIE{checkbox,enregistrer,
                                    class=enregistrer,
                                    label=<:reservation:label_enregistrer:>,
                                    datas=#ARRAY{1,<:reservation:ok:>}
                            })]
                            ,
                            #SET{obligatoire,oui}
                    })]
                    <div class="editer-groupe block_mp">
                            [(#SAISIE{input,#ENV{name_new_login,new_login},
                                    label=<:item_login:>,
                                    obligatoire=#GET{obligatoire}
                            })]
                            [(#SAISIE{input,#ENV{name_new_pass,new_pass},
                                    type="password",
                                    label=<:reservation:label_mot_passe:>,
                                    obligatoire=#GET{obligatoire},
                                    class=password,explication=<:info_plus_cinq_car:>
                            })]
                            [(#SAISIE{input,#ENV{name_new_pass2,new_pass2},
                                    type="password",
                                    label=<:reservation:label_mot_passe2:>,
                                    obligatoire=#GET{obligatoire},
                                    class=password
                            })]
                    </div>
            </div>
    ]
    </div>
    
    <!--extra_connection2-->
    <BOUCLE_condition(CONDITION){si #ENV{enregistrement_inscrit_obligatoire}|!={on}|oui}>
            <script type="text/javascript">
                    /*<![CDATA[*/
                    if (!$('input[name="enregistrer[]"]').is(':checked')) {
                            $('.block_mp').hide();
                    }
    
                    $('input[name="enregistrer[]"]').click(function() {
                            $('.block_mp').slideToggle('slow', function() {
                            });
                    });
                    /*]]>*/
            </script>
    </BOUCLE_condition>
    
    <BOUCLE_condition2(CONDITION){si #GET{id_auteur}|>{0}|oui}>
            <script type="text/javascript">
                    /*<![CDATA[*/
                            if (!$('input[name="modifier_donnees_auteur[]"]').is(':checked')) {
                                    $('.donnees_auteur').hide();
                            }
                            else {
                                    $('.donnes_personnels').hide();
                            }
    
                            $('input[name="modifier_donnees_auteur[]"]').click(function() {
                                    $('.donnees_auteur').slideToggle('slow', function() {});
                                    $('.donnes_personnels').slideToggle('slow', function() {});
                            });
                    /*]]>*/
            </script>
    </BOUCLE_condition2>

    Ensuite, j’ai cherché un moyen de limiter l’affichage des éènements avec une solution type “massacre à la tronçonneuse” : en ajoutant un critère en dur 0,3 dans
    formulaires/inc-reservation_evenements.html

    <BOUCLE_art_or (DATA){source tableau,#ENV{evenements}} {id_evenement_source ?} {par date_debut} {0,3}>

    J’ai essayé sans succès de trouver un critère pour obtenir les événements des prochains 30 jours.
    J’aurai préféré passer ces options via un paramètre du modèle <reservation|>

    Enfin, un truc bizarre : il est possible d’effectuer plusieurs fois la réservation d’un événement (version non modifiée du plugin) pour une même personne ....(à mon avis, c’est une anomalie, cela devrait être la réservation d’un événement par personne et non pas la réservation de n éléments d’un stock effectuée par une personne)

    Cordialement
    Philippe

    • Pour le critères, regarde la doc de agenda

      Critères de date
      Tous les critères habituels age, age_relatif, mois_relatif, jour_relatif sont declinables sur les dates de début et de fin : age_debut, age_relatif_debut, mois_relatif_debut, jour_relatif_debut, et de même age_fin, age_relatif_fin, mois_relatif_fin, jour_relatif_fin
      Dans ce cas, il est à noter que les comparaison sont faites par rapport à des date_debut et des date_fin.
      Ainsi si vous utilisez mois_relatif_debut<0 comme critère de votre boucle EVENEMENTS, seront retenus les évènements dont le mois de la date de début est supérieur ou égal au mois de date_debut du contexte (soit #ENVdate_debut #DATE_DEBUT de la boucle englobante)

      Enfin, un truc bizarre : il est possible d’effectuer plusieurs fois la réservation d’un événement (version non modifiée du plugin) pour une même personne ....(à mon avis, c’est une anomalie, cela devrait être la réservation d’un événement par personne et non pas la réservation de n éléments d’un stock effectuée par une personne)

      Non c’est pas un bug, la mème personne peut réserver pour d’autres. Il y d’ailleurs le plugin Réservations multiples qui permet de le faire d’un coup.

    Reply to this message

  • 3

    Questions au sujet des restrictions sur les réservations.

    Débutant sur SPIP, j’essaie de mettre en place un site associatif
    -  Pour test, j’ai rédigé des articles et créé des rubriques
    -  avec le plugin Accès restreint, l’une des rubriques “Adhérents” n’est accessible qu’avec un login/password. Ce dernier n’est validé que par les administrateurs (inscription à l’association)
    -  Des articles de la rubrique Adhérents décrivent des activités types (sorties, formations etc...) qui peuvent être réservées. Chaque auteur d’un article (en fait responsable de l’activité) va donc créer un ou plusieurs événements éventuellement avec répétitions.
    -  Pour test, j’ai créé un évènement avec répétition associé à un article de description en cochant “inscription en ligne” pour que le formulaire puisse apparaitre sur la page publique.
    -  je place le modèle <reservation|> dans l’article et le formulaire de réservation apparait bien pour chaque événement futur (comme annoncé dans la doc !)
    A ce niveau, 2 questions :
    -  comment ne faire apparaitre que le prochain événement dans l’ensemble des événements créés par l’auteur ? (ou de manière plus générique, les N prochains évènements ?)
    -  puisque les réservations se font sur des articles protégés par le plugin Accès Restreint, du coup, je ne dois par faire apparaitre Modifier les identifiants personnels : après l’affichage de l’identification en bas du formulaire. Comment procéder / que dois-je modifier ?

    Enfin, l’auteur de l’article devra gérer ses réservations dans sa zone privée via l’onglet Activité/Réservations.
    Je n’ai pas bien compris comment l’auteur pouvait simplement valider (ou refuser) un ensemble d’inscriptions à la fois. Plus précisément, comment faire un tri : les réservations d’un événement lié à un article pour voir leurs statuts et faire les validations ....

    Voilà, c’est un peu long, mais j’essaie d’être clair avec les exemples et savoir ce qui ressort du bon paramétrage du plugin Réservation ou de la modification par surcharge. Dans la mise en place, j’aurai plusieurs responsables (auteurs) qui devront créer leurs événements et gérer les réservations.

    Merci d’avance pour vos éclaircissements et votre aide.
    Philippe

    • Bonjour Philippe,

      Filtration des événement.

      Le plus simple c’est de créer un tableau des événements à prendre en compte par le formulaire et de l’injecter dans la balise du formulaire

      #SET{id_evenement,#ARRAY}
       
      <BOUCLE_evenements(EVENEMENTS) {criteresDeFiltrages}>
        #SET{id_evenement,#GET{id_evenement}|push{#ID_EVENEMENT}}
      </BOUCLE_evenements>
       
       #FORMULAIRE_RESERVATION{#ENV{id_evenement}}

      Pour le critères d’affichage d’événements regarde la doc d’agenda

      Modification squelettes formulaire

      L’affichage se fait via squelettes. Tu pourras donc enlever simplement dans le squelettes formulaires/inc-reservation_connection.html

      		<div class="editer-groupe">
      		[(#SAISIE{checkbox,modifier_donnees_auteur,
      			label=<:reservation:label_modifier_identifiants_personnels:>,
      			datas=#ARRAY{1,<:reservation:ok:>}
      			})]
      		</div>

      et à la ligne 34

      	<div class="editer-groupe donnees_auteur">
      		[(#SAISIE{input,#ENV{name_nom,nom},label=<:reservation:label_nom:>,obligatoire=oui})]
       
      		[(#SAISIE{input,#ENV{name_email,email},label=<:reservation:label_email:>,obligatoire=oui})]
       
      		[(#REM)Géneration des champs extras auteurs]
       
      		#GENERER_SAISIES{#ENV{champs_extras_auteurs}}
      	</div>

      Gestion des réservation

      • Il n’y a pas de gestion spécifique par auteur prévue. Ce qui est probablement le plus simple à faire, c’est de créer une page dans l’espace publique mais accessible seulement par l’auteur, ou il trouve tous ces réservation (BOUCLE réservation avec id_auteur) avec les actions de changement de statut. Tu pourras t’inspirer des squelettes du plugin notammentprive/objets/liste/inc-reservations_reservations.html etprive/objets/liste/inc-reservations_row.html.
      • Il n’y a pas non plus de gestion de réesrvation en batch. Il te faudrait développer ça. C’est intéressant, mais je n’auras pas le temps actuellement. Si tu t’y connais en php, le mieux serait de développer une extension au plugin réservation événement et de le mettre à disposition.

      Rainer

    • Bonjour Rainer,
      Je viens d’appliquer les indications sous le titre “Modification squelettes formulaire”.
      L’affichage est OK, bien entendu, l’option d’inscription supplémentaires a disparu.
      Mais en testant une inscription, j’ai un message sibyllin “Votre saisie contient des erreurs !” dont je n’arrive pas à trouver l’origine en cherchant dans “formulaire/reservation.php” ....

      Pour la gestion des réservation, effectivement, l’idée est bonne de faire un affichage des validations dans une page publique (la même ...) quand le webmestre ou l’auteur est connecté ... Je vais voir par la suite.
      Cordialement
      Philippe

    • Salut Philippe,

      C’est de champs manquant, probablement nom et email, pour être sûr met

      #ENV

      dans ton squelette et cherche pour erreur.

      Si c’est effectivement nom et email rajoute ce code :

      		[(#SAISIE{hidden,#ENV{name_nom,nom},label=<:reservation:label_nom:>,obligatoire=oui})]
       
      		[(#SAISIE{hidden,#ENV{name_email,email},label=<:reservation:label_email:>,obligatoire=oui})

    Reply to this message

  • 11

    Bonjour,
    Ce plugin semble correspondre parfaitement à mon besoin, mais est-ce vraiment compatible SPIP 3.x ?
    Après installation et activation, puis configuration, la création d’un événement abouti à un message :
    “Vous n’avez pas le droit d’associer cet événement à cet article”
    Le message ne me permet pas de comprendre la raison de l’erreur....
    Une idée ?
    Bien cordialement
    Philippe

    • Bonjour,

      S’il ne pas compatible spip 3* c’est qu’il n’est pas compatible spip. :)

      La création d’un événement est géré par agenda. Réservation événement n’y intervient pas. Visiblem,ent c’est un problème de droit. Quel statut d’auteur?

      Désactive tous les plug puis active agenda -> teste. Puis active réservation événements -> teste et dis moi ce que tu obtiens.
      Rainer

    • Bonjour,
      Merci pour cette réponse rapide.
      J’ai le statut d’Administrateur
      J’ai désactivé tous les plugins sauf Agenda 4.2.1 et Mini Calendrier 2.4.1.
      J’ai toujours le même message en tentant de créer un événement.

      Je viens d’installer SPIP 3.x pour test, j’ai créé quelques rubriques et articles, mis en place le plugin “Accès Restreint” (Ok après un peu de recherche sur les syntaxes pour Spip 3)

      J’essaie de mettre en place un serveur associatif avec gestion des accès restreints et des réservations, en remplacement d’un serveur existant sous Joomla qui ne me plait pas trop (!)
      Cordialement
      Philippe

    • Bonjour,

      J’ai ce message lorsque je tente d’associer un évènement à un article qui est en dehors d’une zone définie dans la config :
      Sur la page ecrire/?exec=configurer_reservation_evenement
      il y a “Définir une/des zones pour l’application de ce plugin / Permet de restreindre l’application de ce plugin au/x zone/s définie/s”
      Lorsqu’il n’y a aucune zone de définie il est possible de créer un évènement partout.

      Donc c’est peut-être un peu trompeur car la restriction se définit pour le plugin reservation_evenement mais au final il semble qu’elle s’applique aussi aux évènements (même sans réservation)

    • Merci pour cette remarque, mais je n’ai pas défini de zone pour l’instant .... Cela aurait pu être une bonne raison.
      Cordialement
      Philippe

    • tu dis

      J’ai désactivé tous les plugins sauf Agenda 4.2.1 et Mini Calendrier 2.4.1.
      J’ai toujours le même message en tentant de créer un événement.

      Ça veut dire que tu as ce message quand réservation événéments n’est pas activé?

      Est-ce que c’est bien dans l’espàce privé que tu essaie d’ajouter un événement?

    • Quant à

      “J’ai ce message lorsque je tente d’associer un évènement à un article qui est en dehors d’une zone définie dans la config :
      Sur la page ecrire/?exec=configurer_reservation_evenement
      il y a “Définir une/des zones pour l’application de ce plugin / Permet de restreindre l’application de ce plugin au/x zone/s définie/s”
      Lorsqu’il n’y a aucune zone de définie il est possible de créer un évènement partout.”

      je ne reproduis pas @DD peux tu me dire plus sur ta configuration?

    • Bon je crois que j’ai trouvé : il faut cocher la case “Activer le mode agenda” sur la page d’édition d’une rubrique pour pouvoir ajouter des événements aux articles de cette rubrique.
      Dans la base de données on voit que pour le champ “agenda” de la table “rubriques” la valeur peut être 0 ou 1.
      Ce que j’en déduis (toute correction ou autre déduction est la bienvenue) :
      Si une des rubriques du site à la valeur 1 alors l’agenda est désactivé pour toutes les autres
      Si toutes les rubriques ont la valeur “0” alors l’agenda est activé pour toutes
      Mais si il y a déjà des événements attachés à un article d’une rubrique (avant qu’une restriction d’agenda soit ajoutée par après pour cette rubrique), alors on peut continuer d’ajouter des événements à l’article même si la valeur du champ “agenda” est à “0” pour la rubrique.

      En tout cas ce n’est pas lié à ce plugin de réservation.

    • Oui, j’ai bien fait le test avec Agenda et Mini calendrier SANS Réservation évenements
      Cordialement
      Philippe

    • Oui, bien vu : il fallait bien cocher la case « Activer le mode agenda » sur la page d’édition d’une rubrique !
      La confusion vient de 2 points :
      -  Après installation de SPIP, j’ai commencé par rédiger des articles et créer des rubriques pour tester sans avoir aucun plugin installé. Je pense donc que cette case à cocher n’était pas présente à ce moment.
      -  Ensuite, en installant le plugin Réservation évènement, il est fait état de restreindre le plugin à des zones. Bien entendu, pour commencer, je n’ai pas activé cette possibilité, d’où le manque de méfiance sur la case à cocher .... Ce plugin charge Agenda mais la version est indiquée comme “test” (au lieu de “stable”), ce qui est la porte ouverte aux suspicions ...
      -  Enfin, en tant que débutant, je pensais plus à mes nombreuses erreurs possibles ....

      Bref, dans la doc de Réservation événement, un petite ligne supplémentaire au sujet de cette case serait la bienvenue .....

      Je vais continuer à essayer de comprendre les relations entre “article”, “agenda”, “évenement” et “réservations” .....

      Merci pour vos aides !

      Cordialement
      Philippe

    • «Activer le mode agenda» est und foncionnalité du plugin Agenda et n’a rien à voir avec la foncionalite du présent plugin de limiter son champ d’action (“Définir une/des zones pour l’application de ce plugin”).

      Comme les utilisateurs de réservation d’événements n’ont pas vraiment manifesté de problèmes lié à la fonction «Activer le mode agenda» du plugin Agenda, je préfère de ne pas mélanger les docs et de laisser à Agenda d’expliquer cette particularité de son fontionnement.

    • Dans la doc de réservation, la première ligne est :
      Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées.
      Si la case n’est pas cochée « Activer le mode agenda », ce que l’utilisateur a du mal à deviner (n’apparait pas clairement dans la doc Agenda), on arrive simplement à des messages d’erreurs incompréhensibles de prime abord dans la mise en application du plugin Réservation quand on en suit la documentation
      Donc, une simple ligne de mise en garde m’apparait indispensable, ce n’est pas vraiment un mélange de documentation (quoi que : votre reprenez bien une documentation sur la création d’évènement, ce qui est appréciable). Je ne suis pas le premier à avoir posé la question au sujet du message d’erreur ... J’ai passé 2 semaines à essayer d’entrer dans le code pour remonter à l’erreur, ce qui peut décourager le débutant. Mais j’ai été agréablement surpris par votre aide rapide ! Votre doc est déjà assez détaillée en recouvrant celle d’Agenda, une ligne supplémentaire ne sera pas de trop pour éviter un blocage rien qu’au premier test ....

      Cordialement
      Philippe

    Reply to this message

  • 3

    Bonjour,
    dans la liste des résa par article, peut-on les classer en ordre inverse ?
    Merci

    Reply to this message

  • 1

    Hello :-)
    php 5.6.38
    J’essaie de me servir du plug pour la première fois :-)
    Ce soir, sur un spip 3.2.3 tout neuf j’installe le plug via SVP et donc les necessite dans les version les plus récente.
    Je colle dans le squelette de la distà la ligne https://zone.spip.net/trac/spip-zone/browser/spip-zone/_core_/branches/spip-3.2/plugins/dist/sommaire.html#L32 le code qui est dit dans l’article:

    <div class="ajax">
            #FORMULAIRE_RESERVATION{#ENV{id_evenement},#ENV{id_article}, #ENV{retour}, #ENV{options}}
    </div>

    Après, je vide le cache et je vais dans la partie publique du site !
    Et là, pouf, le site rame et ne fonctionne plus :-(
    Il y a un truc que je n’ai pas du comprendre, mais quoi ???
    Franck

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom