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.

Recherche de repreneur

Je ne suis plus suffisamment impliqué dans spip pour assurer un maintien correcte de ce plugins, Donc si quelqu’un veuille reprendre la main, c’est avec plaisir.

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

88 discussions

  • 2

    Bonjour Rainer,

    Je viens de réaliser une màj de mes plugins et après quelques manip j’obtiens cette erreur :

    Parse error : syntax error, unexpected ’[’ in /users/user1308921/sites/ffessm-codep21.fr/plugins/auto/reservation_evenement/v1.25.4/reservation_evenement_pipelines.php on line 50

    Tu pourrais m’aider ou bien j’ai un autre problème ?
    Merci d’avance.
    Amitiés Jean.

    • Salut Jean,

      Ton site tourne avec une vieille version de php (<5.4) ?> https://github.com/abelass/reservation_evenement.

      Bonne journée
      Rainer

    • Merci beaucoup Rainer,
      Effectivement mon site chez Oxyd était resté en PHP Version 5.3.3-7+squeeze29.
      C’est une option d’hébergement chez Oxyd que je n’avais pas correctement renseignée.
      Après être passé en 5.6 pour le moment ( on verra 7.0 plus tard ;-) ), la màj se déroule correctement.

      Encore merci de cette piste.
      Amitiés Jean.

    Répondre à ce message

  • 6

    Bonsoir,

    J’obtiens cette erreur : Votre saisie contient des erreurs !
    quelque soit la façon de m’inscrire, avec ou sans compte existant.
    Le plugin a été mis à jour à l’instant sur un spip 3.1.4
    http://www.art-logic.info/soiree-multimedia-decouvrez-avec-le-collectif

    Merci de vos retours

    • Julie B.

      Bonjour,
      Il faut peut-etre vider a nouveau le cache ?
      Julie

    • Le formulaire ne contient pas de champ pour sélectionner l’événement

      <fieldset>
      <legend> Votre participation </legend>
      <ul class="evenements"> </ul>
      </fieldset>
    • Comment as-tu inclus le formulaire ?

    • Bonjour,

      De la sorte : #FORMULAIRE_RESERVATION#ENVid_evenement,#ENVid_article, #ENVretour, #ARRAYid_evenement_source,’’

    • Bonjour,

       #FORMULAIRE_RESERVATION{#ENV{id_evenement},#ENV{id_article}, #ENV{retour}, #ARRAY{id_evenement_source,''}}

    • Est-ce que tu as surchargé des squelettes de ce pluie ? Si oui compare les avec les originaux.

    Répondre à ce message

  • 7

    Bonjour, j’ai avancé donc avec les 2 plugins reservation_evenement et inscription3 natifs, et Zcore installé
    1- utilisateur inscrit ou non inscrit => le formulaire d’inscription s’ouvre toujours vierge. En effet

    --> plugins/auto/reservation_evenement/v1.24.1/inscription.html {{appelle}} plugins/auto/inscription3/v3.6.7/content/inscription.html {{au lieu de}} plugins/auto/reservation_evenement/v1.24.1/formulaires/reservation.html

    et dans ce cas le visiteur inscrit n’est pas pris en compte.

    donc j’ai remplacé auto/reservation_evenement/v1.24.1/inscription.html

    <BOUCLE_cond(CONDITION){si #PLUGIN{Zcore}}><INCLURE{fond=structure,env,type=inscription,type-page=inscription}/></BOUCLE_cond><INCLURE{fond=page_inscription,env}/><//B_cond>

    par squelettes/inscription.html

    [(#REM)
      Copie du 2017-04-12 20:01:01 par Anne Chopin
      Fichier original plugins/auto/reservation_evenement/v1.24.1/inscription.html
    ]
    <INCLURE{fond=structure,env,type=inscription,type-page=inscriptionresa,env}/>

    avec auto/reservation_evenement/v1.24.1/content/inscriptionresa.html

    <article class="inscription">
    	<header class="cartouche">
    		<h1>
    			<:reservation:inscription:>
    		</h1>
    	</header>
    	<div class="main">
    		<div class="ajax">
    			#FORMULAIRE_RESERVATION{
    				#ENV{id_evenement},
    				#ENV{id_article},
    				#ENV{retour},
    				#ENV{options}}
    		</div>
    	</div>
    </article>

    identique à l’original auto/reservation_evenement/v1.24.1/content/inscription.html afin de retrouver le formulaire d’inscription du plugin.
    ainsi je retrouve le fonctionnement normal pour l’inscription de réservation ,
    -  si l’utilisateur est connecté le formulaire prérempli l’identifiant et le mail et ajoute la saisie pour les champs extra prévus dans la configuration du plugin inscription3,
    -  si l’utilisateur n’est pas connecté, le formulaire permet donc de saisir les champs identifiant, mail ainsi que les champs extra du plugin inscription3.

    2- cependant dans le cas d’un nouvel utilisateur, la réservation d’événement crée bien
    l’entrée de réservation et indique bien le nouveau client, via le formulaire auto/reservation_evenement/v1.24.1/formulaire/reservation.html
    mais cette inscription ne créé pas le client comme nouvel auteur ( à modérer par l’admin puisque je ne propose pas ni infos de login, ni mot de passe) comme l’aurait fait inscription3.

    comment puis-je retrouver le comportement d’inscription3 , cad ajout d’un auteur (à modérer par l’admin) ?

    • bonjour,
      je précise cependant que, en l’état, la fonction « enregistrer sur le site » fonctionne.
      il faut préciser un identifiant de login et le mot de passe (et sa vérification),
      à la fin de la réservation le client se retrouve connecté.

      Ce n’est pas le fonctionnement que j’ai configuré dans inscription3, j’attends, tout au plus après que le client ayant précisé un identifiant de login, mais sans mot de passe, que l’inscription soit transmise à l’admin pour modération, le client recevra par mail un client de validation, et surtout le client de réservation reste non connecté après sa réservation.

      je « bricole » autour de inc-reservation_connection mais sans succès

      merci de conseils

    • Bonjour,
      dans l’état actuel il est normal que réservations événements ne prenne pas en compte toutes les configurations de inscription 3.

      Si le présent plugins se base comme inscription 3 sur le plugin champs extras pour l’ajout de champs extras, je crains de que la plupart des autres configurations de inscription 3 ne trouvent pas applications.

      Le mieux serait probablement de faire un mini plugin qui fasse le lien entre inscription 3 et reservation_evenements en intervenant via l’api de spip - les pipelines (notamment pre_edition [http://programmer.spip.net/pre_edition-756] ou post_edition [http://programmer.spip.net/post_edition-757] pour le changement de statut lors d’un enregistrement d’un auteur - formulaire_charger, formulaire_traiter et formulaire_verifier pour que le formulaire reservation prennne en compte d’éventuels configurations de inscription 3).

      Comme j’ai dis auparavant je ne connais pas bien le fonctionnement de inscription trois, je ne peux donc pas garantir que le pipelines susmentionnés soient utiles/suffisants pour intégrer pleinement les fonctionnalités de inscription 3.

      Je ne peux actuellement pas me lancer pleinement dans ce chantier, mais je veux bien t’épauler si tu veux te lancer dans l’aventure.

      Rainer

    • Julie B.

      Bonjour lebardix

      >1 utilisateur inscrit ou non inscrit => le formulaire d’inscription s’ouvre toujours vierge.

      Oui, ceci me semble normal, mais je comprends peut-etre mal ton pb.

      Le formulaire d’inscription n’est-il pas seulement pour l’ inscription ?
      Une fois inscrit, il n’est plus utile. Il faut utiliser #FORMULAIRE_EDITER_AUTEUR
      pour modifier eventuellement les donnees.
      Le message de DD ci-dessous en donne un bon exemple

      Mais attention, la derniere version d’inscription 3 a un bug (me semble t-il).
      J’ai ecrit un message en ce sens sur le forum du plugin, mais sans retour.

      J’ai simplement remplace la fonction pipeline inscription3_editer_contenu_objet($flux)
      par celle de la version 3.5.12 du plugin.
      (sinon preg_replace plante mon formulaire edit auteur )

      Bonne journee

      Julie

    • bonsoir Julie,
      Le fait de valider le plugin inscriptions3, la réservation d’événements au lieu d’utiliser son formulaire appelle le formulaire d’inscription.

      Alors que le formulaire natif de réservation événements tient compte de l’état connecter ou non, si le plugin inscription3 est installé, le comportement devient anormal.

      J’ai besoin que l’inscription événement se comporte comme prévu, cad créé (ou non suivant la config) un auteur (au statut visiteur) en présence du plugin inscription3,
      l’avantage d’inscription3 étant de gérer des champs extras, de pouvoir modérer la création d’un auteur, et de contrôler le contenu de s champs extras.

      Les visiteurs de mon site, en s’inscrivant à un événement (un stage pour être plus précis), s’enregistre comme auteur(visiteur à confirmer) et obtiendraient après modération de l’admin un compte auquel ils pourront se connecter ultérieurement.

      A charge de l’admin de vérifier si un visiteur s’est enregistré sous plusieurs noms et de corriger les réservations d’événements.

      J’ai donc un peu avancé en modifiant le traitement du formulaire RESERVATION (plugins/auto/reservation_evenement/v1.24.1/formulaires/reservation.php) en supprimant la saisie de mot de passe, email et autre (suivant patch ci-dessous).

      --- reservation (copie).php	2017-04-14 22:45:14.000000000 +0200
      +++ reservation.php	2017-04-17 22:44:29.000000000 +0200
      @@ -213,9 +213,9 @@
       		include_spip('inc/auth');
       		$obligatoires = array(
       			'nom',
      -			'email',
      +			'email'/*,
       			'new_pass',
      -			'new_login'
      +			'new_login'*/
       		);
       		foreach ($obligatoires as $champ) {
       			if (!_request($champ))
      @@ -227,25 +227,26 @@
       			$erreurs['message_erreur'] .= $err;
       		}
       
      -		// Vérifier les mp
      -		if ($p = _request('new_pass')) {
      -			if ($p != _request('new_pass2')) {
      -				$erreurs['new_pass'] = _T('info_passes_identiques');
      -				$erreurs['message_erreur'] .= _T('info_passes_identiques');
      -			}
      -			elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
      -				$erreurs['new_pass'] = $err;
      -			}
      -		}
      -	}
      -	elseif (!$id_auteur) {
      -		include_spip('inc/config');
      -		$email_reutilisable = lire_config('reservation_evenement/email_reutilisable', '');
      -		$obligatoires = array(
      -			'nom',
      -			'email'
      -		);
      +//		// Vérifier les mp
      +//		if ($p = _request('new_pass')) {
      +//			if ($p != _request('new_pass2')) {
      +//				$erreurs['new_pass'] = _T('info_passes_identiques');
      +//				$erreurs['message_erreur'] .= _T('info_passes_identiques');
      +//			}
      +//			elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
      +//				$erreurs['new_pass'] = $err;
      +//			}
      +//		}
       	}
      +	
      +//	elseif (!$id_auteur) {
      +//		include_spip('inc/config');
      +//		$email_reutilisable = lire_config('reservation_evenement/email_reutilisable', '');
      +//		$obligatoires = array(
      +//			'nom',
      +//			'email'
      +//		);
      +//	}
       
       	if (test_plugin_actif('declinaisons'))
       		array_push($obligatoires, 'id_objet_prix');
      @@ -257,17 +258,17 @@
       			$erreurs[$champ] = _T("info_obligatoire");
       	}
       
      -	if ($email) {
      -		include_spip('inc/filtres');
      -		// un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
      -		if (!email_valide($email)) {
      -			$erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
      -		}
      -		elseif (!$id_auteur and !$email_reutilisable) {
      -			if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
      -				$erreurs['email'] = _T('reservation:erreur_email_utilise');
      -		}
      -	}
      +//	if ($email) {
      +//		include_spip('inc/filtres');
      +//		// un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
      +//		if (!email_valide($email)) {
      +//			$erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
      +//		}
      +//		elseif (!$id_auteur and !$email_reutilisable) {
      +//			if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
      +//				$erreurs['email'] = _T('reservation:erreur_email_utilise');
      +//		}
      +//	}
       
       	// les champs extras auteur
       	include_spip('cextras_pipelines');

      Ainsi les champs extras sont gérés (hormis encore quelques problemes) et un compte auteur est créé, mais le visiteur se retrouve automatiquement connecter ( et son compte validé ... sans mot de passe ) alors que je souhaiterais qu’il soit seulement « à confirmer »

      Marc

    • bonsoir Rainer,
      Merci pour ta proposition, sans avoir suivi tes conseils, j’ai continué une voie pour parvenir à mon fonctionnement attendu.
      Comme indiqué à Julie, j’ai modifié la fonction de formulaires_reservation_verifier_dist de façon à enregistrer l’auteur (sans mot de passe puisque je souhaite qu’il soit modéré), de plus j’ai modifié dans inc/reservation_enregistrer.php pour lui attribuer le statut aconfirmer et ne pas exécuter la connexion.

      --- reservation_enregistrer (copie).php	2017-04-17 23:34:28.000000000 +0200
      +++ reservation_enregistrer.php	2017-04-17 23:35:58.000000000 +0200
      @@ -34,11 +34,11 @@
       			$res = formulaires_editer_objet_traiter('auteur', 'new', '', '', $retour, $config_fonc, $row, $hidden);
       			$id_auteur = $res['id_auteur'];
       			sql_updateq('spip_auteurs', array(
      -				'statut' => '6forum'
      +				'statut' => '8aconfirmer'
       			), 'id_auteur=' . $id_auteur);
       			$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $id_auteur);
      -			auth_loger($auteur);
      -			set_request('id_auteur', $id_auteur);
      +//			auth_loger($auteur);
      +//			set_request('id_auteur', $id_auteur);
       		}
       	}
       	elseif (intval($id_auteur) and _request('modifier_donnees_auteur')) {

      et donc j’obtiens un fonctionnement presque correct pour mes événements, il me reste à gérer les champs d’extras non obligatoires ou spéciaux...

      donc à suivre ...

    • Bonjour Rainer
      Pour terminer ce fil, j’ai réglé les problèmes de date du plug inscription3.
      tout simplement j’ai retiré de la config i3 le champ date de naissance (et date d’enregistrement), ensuite j’ai installé les plugs « Champs Extras » et « Champs Extras Interface » [3.5.2] avec lequel j’ai configuré un champ date pour la table AUTEURS, ainsi que le plug « Date d’inscription » [0.2.1].
      Ainsi la saisie et vérification des champs extras, depuis le module « réservation événements », fonctionnent normalement.
      Pour terminer, je complète les mails de notification à l’aide de contenu d’articles spéciaux. dans contenu_reservation_mail.html

      ....
      </B_contact>
      
      <BOUCLE_test_statut(CONDITION) {si #ENV{statut}|!={cloture}|oui}>
      	<BOUCLE_politesse(ARTICLES){tout_voir}{type_mot='notifications'}{titre_mot=#GET{statut}}>
      	[(#ENV{qui}|=={client}|oui)
      	<p>Madame, Monsieur</p>
      	<p>votre référence client : #GET{nom_client}</p>
      	<p>#TEXTE</p>]
      	</BOUCLE_politesse>
      
      [(#ENV{qui}|=={client}|non)
      ....

      Je peux te faire parvenir mes squelettes modifiés à l’occasion.
      Merci

    • Salut lebardix,

      tant mieux que tu as trouvé une solution. Oui, envoie moi tes squelettes

      Bonne journée
      Rainer

    Répondre à ce message

  • 5

    bonjour,
    j’utilise le plugin Inscription3 pour la gestion des visiteurs

    De plus, j’ai installé le plugin réservation d’événements

    Si inscription3 est actif
    Dans le cas de la réservation à un événement soit
    ============ le visiteur est inconnu et non inscrit ===============
    * le formulaire d’inscription s’ouvre VIERGE ....
    l’utilisateur rempli les champs correctement et valide
    le formulaire signale
    « Votre compte a été correctement créé, Il est en attente de
    validation d’un administrateur »
    +++++ TOUT VA PRESQUE BIEN +++++
    il reçoit un message de validation et un mot de passe (alors qu’il
    en avait peut être donné un... mais passons)
    donc depuis le message il se connecte et paf il est affiché qu’il ne
    peut pas accèder à je ne sais quoi sur le site, mais cependant il
    est connecté..... la réservation existe

    ============= le visiteur est inscrit et connecté ==================
    * le formulaire d’inscription s’ouvre VIERGE ....aucun champ de son
    identification (login ou autre) ne sont mis à jour et donc il peut
    vouloir :

    ** soit remplir le formulaire avec son identifiant (avec les bonnes
    informations mot de passe et tout et tout) à la validation il lui
    est opposé ce message au dessus du champ pseudo « Cette valeur est
    déjà utilisé par un autre utilisateur »
    +++++ ET DONC IMPOSSIBLE DE S’INSCRIRE ++++++

    ** soit remplir le formulaire avec un identifiant qui n’est pas le
    sien (adresse, nom, etc qui sont définis dans le formulaire) et alors
    à la validation le message d’erreur « Impossible de prendre en compte
    votre message. Merci de le soumettre à nouveau ! »
    +++++ ET DONC IMPOSSIBLE DE S’INSCRIRE ++++++


    Si le plugin inscription3 est désactivé, la réservation d’événements
    fonctionne
    la réservation se fait au nom de l’utilisateur connecté,
    le message de validation est bien envoyé, sinon l’inscription se fait
    au nom de l’identifiant et mail indiqués dans le formulaire de base.


    y a-t-il une solution pour faire fonctionner la réservation avec
    inscription3, ou serait-il possible d’utiliser un formulaire basé sur
    formidable ?

    Merci

    • Bonjour,

      malheureusement je ne l’ai jamais testé avec inscription3. Je ne l’ai plus utilisé depuis longtemps et je méconnais son fonctionnement actuel. Je ne sais pas quand j’aurai le temps d’analyser ça.

      Rainer

    • Bonjour,

      J’utilise inscription 3 et ce plugin sur un site en SPIP 3 et cela fonctionne.
      Je teste d’abord si l’utilisateur est inscrit avant le remplissage du formulaire d’inscription.
      Mon code (sûrement pas parfait mais ça fonctionne) :

      <div class="fiche">
      [(#SESSION{id_auteur}|non) [(#LOGIN_PUBLIC)]
      <div class="spip_accordeon">
      <h3>Vous inscrire sur ce site</h3>
      <div class="ajax">#FORMULAIRE_INSCRIPTION</div>
      </div> ] [(#SESSION{id_auteur}|oui) [Bonjour <span class="#EDIT{inscrit_prenom}">(#SESSION{inscrit_prenom})</span>] [
      <span class="#EDIT{inscrit_nom}">&nbsp;(#SESSION{inscrit_nom})</span>] [ ((#SESSION{login}))] [
      <div class="#EDIT{inscrit_club}">Club : (#SESSION{inscrit_club})</div>] [
      <div>Email : (#SESSION{email})</div>] [
      <div class="#EDIT{inscrit_tel}">Tel : (#SESSION{inscrit_tel})</div>] [(#SESSION{id_auteur}|=={#ID_AUTEUR}|oui)#FORMULAIRE_EDITER_AUTEUR{#ENV{id_auteur}}]
      <a href="#URL_LOGOUT" rel="nofollow" class="hyperlien">
      <:icone_deconnecter:>
      </a>
      ]
      </div>

      Et lorsque le visiteur est identifié alors il peut remplir sa réservation :

      <BOUCLE_auteur(AUTEURS){id_auteur=#SESSION{id_auteur}}{tout}>
      [(#PLACES|>{0}|oui)
      <div class="evenbox">
      <div class="ajax">
      #FORMULAIRE_RESERVATION{#LISTE{#ID_EVENEMENT}} </div>
      </div>]
      </BOUCLE_auteur>

      Tu peux le voir en action ici : https://huit.re/resa

      dd

    • Bjr, merci pour la piste, j’utilise zcore,
      ton site correspond à mon objectif mais déjà :
      Je n’ai pas accès à la page auteur /spip.php ?page=auteur&var_mode=inclure j’ai les erreurs suivantes qui apparaissent

      1 - plugins/auto/zcore/v2.6.1/structure.html aucun squelette head/auteur n’est disponible
      2 - plugins/auto/zcore/v2.6.1/structure.html aucun squelette head_js/auteur n’est disponible

      pour le test j’ai totalement vidé mon dossier squelettes, où sont ces fichiers sur tout site ?
      Merci

    • rebonjour,

      Si le fichier par défaut de zcore plugins/auto/zcore/v2.6.0/head/dist.html n’est pas présent tu as un problème avec tes fichiers ou bien alors il n’y a pas d’auteur qui a au moins 1 article publié sur ton site.

    • re
      j’ai bien un fichier plugins/auto/zcore/v2.6.1/head/dist.html, et des articles par 2 auteurs,
      lorsque je demande la page monsite/spip.php ?page=auteur
      il m’indique manquer les fichiers
      head/auteur et head_js/auteur
      Peux-tu me lister tes plugins ?

    Répondre à ce message

  • Pierrot

    Bonjour,

    Un bug potentiel.

    Je regardai mes logs spip sur un site avec les plugins agenda et réservation et je vois une erreur très fréquente :

    2017-03-16 17:20:45 46.255.162.88 (pid 3169) :Pub:ERREUR: Erreur 1054 de mysql: Unknown column 'spip_reservations_details.statut' in 'where clause'
    in /home/XXXXXXXX/public_html/plugins/auto/reservation_evenement/v1.23.13/genie/reservation_evenement_cloture.php L28 [sql_select(),genie_reservation_evenement_cloture_dist(),queue_start_job(),queue_schedule(),inc_genie_dist(),cron(),action_cron(),traiter_appels_actions(),include()]
    SELECT id_reservations_detail,<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+WVlZWVlZWVk8L2NvZGU+"></span>.sada_reservations_details.id_evenement,date_fin
    FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+WVlZWVlZWVk8L2NvZGU+"></span>.sada_reservations_details,<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+WVlZWVlZWVk8L2NvZGU+"></span>.sada_evenements
    WHERE spip_reservations_details.statut="accepte" AND 
    			spip_reservations_details.id_evenement=spip_evenements.id_evenement AND
    			spip_evenements.date_fin &lt;="2017-03-16 17:20:45" AND
    			spip_evenements.action_cloture =1
    2017-03-16 17:20:45 46.255.162.88 (pid 3169) :Pub:ERREUR: Erreur mysql 1054

    J’ai occulté les noms de dossiers et de base.

    Ce qu’on voit c’est que le SELECT récupère la bonne base et les bonnes tables avec le bon préfixe « sada_ » mais qu’ensuite la clause WHERE oublie ce préfixe pour utiliser « spip_ » ... donc avec pour résultat un Unknown column 'spip_reservations_details.statut' in 'where clause'

    Bug, pas bug ?

    Pierre.

    Répondre à ce message

  • 4
    Julie B.

    Bonjour Rainer,

    Quelques petits problemes sur les prix :

    Evenements avec prix (prix uniquement mis sur l’article, taxe definie par defaut dans prix_objets).
    Un exemple :
    prix HT : 18 avec 10% de taxe
    La page inscription affiche bien un prix de 19,8

    Mais,apres paiement, la transaction affiche 18HT 18TTC 18,1 REGLE
    et donc ici, seul le prix HT est correct.

    Merci d’y jeter un coup d’oeil.

    Julie

    • Salut Julie,

      Merci pour le signalement, c’est corrigé sur github et bientôt sur la zone

      Rainer

    • Julie B.

      Merci Rainer !
      Julie

    • Julie B.

      Bonjour Rainer,

      Il y a une coquille je pense dans le donnees_reservations_details.php ligne 137 : 1 virgule en trop ?
      Correction faite, mes premiers tests montrent bien un prix ht, ttc et regle desormais coherent.

      Bonne journee

      Julie

    • Salut Julie,

      c’est corrigé

      Rainer

    Répondre à ce message

  • 3
    Pierrot

    Bonjour,

    J’ai envoyé un msg hier mais comme il n’est toujours pas apparu, je recommence.

    Je pense avoir détecté un souci. Mes logs sont pleins de message du type :

    2017-03-17 14:08:03 46.255.162.88 (pid 3169) :Pub:ERREUR: Erreur 1054 de mysql: Unknown column 'spip_reservations_details.statut' in 'where clause'
    in /home/XXXXXXXX/public_html/plugins/auto/reservation_evenement/v1.23.13/genie/reservation_evenement_cloture.php L28 [sql_select(),genie_reservation_evenement_cloture_dist(),queue_start_job(),queue_schedule(),inc_genie_dist(),cron(),action_cron(),traiter_appels_actions(),include()]
    SELECT id_reservations_detail,<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+WVlZWVlZWVk8L2NvZGU+"></span>.sada_reservations_details.id_evenement,date_fin
    FROM <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+WVlZWVlZWVk8L2NvZGU+"></span>.sada_reservations_details,<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+cG91c2FzcGlwPC9jb2RlPg=="></span>.sada_evenements
    WHERE spip_reservations_details.statut="accepte" AND 
    			spip_reservations_details.id_evenement=spip_evenements.id_evenement AND
    			spip_evenements.date_fin &lt;="2017-03-17 14:08:03" AND
    			spip_evenements.action_cloture =1
    2017-03-17 14:08:03 46.255.162.88 (pid 3169) :Pub:ERREUR: Erreur mysql 1054

    La requete commence bien avec un SELECT et un FROM qui tiennent compte du fait que mon installation spip comporte un prefixe « sada_ » pour les tables ... Par contre la clause WHERE revient à un préfixe « spip_ » ce qui génère toutes les erreurs dans le log. Bug ?

    Pierre.

    • Pardon, ce message m’avait échappé. Je regarderai ça demain.

    • Salut Pierre,

      Merci pour le signalement. Cette requête ne posait pas de problème sous spip 3 mais spip 3.1 s’embrouille. Ça devrait être bon maintenant.

      Rainer

    • Pierrot

      Bonjour,
      Je viens de tester, ça a l’air bon, plus d’erreurs dans le log. Merci !!
      Pierre

    Répondre à ce message

  • 3

    Bonjour Rainer, enfin, re-bonjour,

    Mon plugin de groupement de réservation est en service sur mon site (www.ffessm-agn2017.fr).
    J’ai encore quelques correctifs et améliorations à apporter mais çà fonctionne.
    Je reviens vers toi pour un autre point : maintenant que les réservations sont lancées, il va falloir les stopper un jour.
    L’option de clôture automatique est très bien, mais elle agit seulement à date d’événement.
    Pour mon cas, je dois stopper 3 semaines avant la date d’événement pour contacter les fournisseurs.
    Comment pourrai-je automatiser cette règle, qui est propre à chaque événement ?

    Merci de tes pistes de recherche.
    Amitiés jean.

    • Salut Jean,

      à mon avis tu devrais créer un champ extras date_fin_inscription dans la table spip_evenements puis dans formulaires/inc-reservation_evenements.html à la ligne 4 mettre

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

      pour empêcher l’inscription , puis évidemment adapter les autres squelettes en questions.

      Rainer

    • Bonjour Rainer,

      Merci beaucoup pour cette piste.
      Je vais regarder pour l’intégrer.
      Amitiés Jean.

    • Bonjour Rainer,

      J’ai appliqué ton idée (c’est vrai tardivement) et c’est Ok.
      Pour plus de clarté, j’ai ajouté dans la partie alternative de la boucle un message pour bien signaler qu’aucune inscription n’est ouverte.

      Bon, reste le formulaire de connexion mais pour l’oblitérer, il faut aller beaucoup plus loin (peut-être initialiser une variable d’environnement au niveau supérieur, la positionner si aucune inscription et verrouiller la connexion avec).

      Encore merci pour tes travaux et tes conseils.
      Amicalement Jean.

    Répondre à ce message

  • 6
    Pierrot

    Bonjour,

    Je pense avoir détecté un petit bug.

    Dans inc-reservation_evenements.html ligne 33 on a :

    <strong>([(#DATE_DEBUT|affdate_debut_fin{#GET{date_fin},#HORAIRE})])</strong>

    Cette ligne donne les dates-heures d’un événement que l’on souhaite réserver. Le souci est que dans le cas d’événements répétitifs, sur le premier événement (et uniquement sur le premier) cela donne l’amplitude de la première date à la dernière date (toutes les répétitions). Sur les événements suivants, curieusement c’est bon, ça ne donne la date-heure que de l’événement à réserver.

    J’ai remplacé par :

    <strong>([(#DATE_DEBUT|Agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE})])</strong>

    Ceci en m’inspirant d’un autre affichage que je faisais en dehors du formulaire de résa et c’est bon ! Après plusieurs test je constate que c’est #GET{date_fin} qui fait souci, si je remplace en haut par #DATE_FIN, c’est bon aussi.

    Voilà !

    Pierre.

    • Salut Pierre,

      Ce n’est pas vraiment un bug, mais peut être pas assez clair en cas d’événements répétés, car on ne voit pas les détails des répétitions, seulement le début et la fin de l’événement.

      Il faudrait peut être ajouter le nombre de répétitions et dans faire apparaitre en mouseover ou click (modal) le détails des répétitions.

      Qu’est-ce que tu en penses ?

      Rainer

    • Pierrot

      Bonjour,

      En fait j’ai hésité sur le mot bug mais finalement je pense que c’est un bug ou alors effectivement une fonctionnalité que je ne comprends pas du tout (et c’est possible).

      Ce qui me fait penser que c’est un bug :

      -  la plupart du temps les événements répétés sont juste (exemple) la même formation que l’on dispense 5 fois, donc clairement quelqu’un qui veut s’inscrire souhaite aller une fois à une des 5 séances. Si dans le formulaire on lui dit qu’il s’inscrit du 8 mars 8h00 au 25 avril 16h00 il ne comprend pas, donc il faut que le formulaire affiche clairement la date pour laquelle il s’inscrit, à savoir, le 8, le 15, le 22 ou ... de 8h00 à 16h00 le jour choisi.

      -  ensuite dans mon cas j’avais disons 3 ou 4 événements répétition d’un premier, le premier chronologiquement affichait du 8 mars au 25 avril de 8h00 à 16h00 (donc je pense pas compréhensible pour l’internaute qui voulait venir juste le 8 mars de 8h00 à 16h00) et ensuite tous les formulaires de réservation des événements suivants affichaient ensuite bien la date du jour de l’événement seulement (et donc pas du tout la plage de date du premier événement à la dernière répétition comme dans le cas du tout premier) ce qui était bien pour moi le bon comportement.

      On a eu du mal à trouver car souvent les événements racines (ceux qui ont été répétés) étaient souvent déjà passés et ne s’affichaient plus, il a fallu que l’on crée un nouvel événement racine dans le futur avec X répétitions pour s’apercevoir des différences d’affichage entre l’événement racine et les répétés.

      C’est dur d’expliquer ce genre de souci, si tu le souhaites je peux remettre le code originel, te passer en MP l’url pour que tu vois, une fois que tu as vu je te remets ma modif ...

    • Ce que je ne comprends pas

      et ensuite tous les formulaires de réservation des événements suivants affichaient ensuite bien la date du jour de l’événement seulement (et donc pas du tout la plage de date du premier événement à la dernière répétition comme dans le cas du tout premier)

      il s’agit également d’événement répétés ?

      Pour l’affichage des événement répétés, tu as raison, c’est peu claire. Qu’est-ce que tu penses de ma suggestion.

      Il faudrait peut être ajouter le nombre de répétitions et faire apparaitre en mouseover ou click (modal) le détails des répétitions.

      Ou veux-tu proposer l’inscription pour chaque événement répété ?

      Alors il faudra mettre faudrait ou passer la variable

      options['id_evenement_source'] = ''

      dans le contexte our remplacer la 4e variable du formulaire par

      #ARRAY{id_evenement_source,''} 

      ce qui donnerait

      #FORMULAIRE_RESERVATION{#ENV{id_evenement},#ENV{id_article}, #ENV{retour}, #ARRAY{id_evenement_source,''} }
    • Pierrot

      Oui bien sûr il s’agissait bien des répétitions du premier et oui bien sur j’affiche les événements répétés un par un avec chacun un formulaire de réservation propre à chaque répétition.

      Donc non la boite modale brouillerait les cartes, je ne veux pas qu’un événement répété affiche toutes ses occurences, j’ai autant de « boites » que j’ai d’événements ce qui permet d’avoir tous les événements en ordre chrono, quelle que soit le cycle de répétitions auquel il pourrait appartenir (ou pas).

      Pierre.

    • Pierrot

      En fait je constate que j’ai réussi à corriger le comportement de l’affichage mais j’ai encore le soucis dans les emails envoyés au gestionnaire ou là aussi on informe le gestionnaire qu’untel s’est inscrit à un évènement et on lui donne toute l’amplitude des répétitions ... donc on ne sait pas à quel date exactement (parmi les répétitions) la personne s’est inscrite.

      Je pense qu’il y a 2 conceptions sur ces répétitions :

      -  le plugin considère qu’un évènement avec des répétitions est un seul évènement et que l’on s’inscrit à l’ensemble des séances
      -  pour moi ces répétitions sont par exemple la répétition d’un même cours 8 fois dans l’année et je veux que l’on s’inscrive à un seul des 8 cours pas au 8 ... donc dans ce cadre l’affichage et le mail sont incompréhensibles car ils signalent l’amplitude complète des répétitions.

      Je vois qu’en fait je devrais faire la correction dans l’enregistrement des détails car le mail ne fait qu’envoyer les détails, je ne vois pas comment corriger dans la notification ... Je devrais regarder ou pour arriver à faire une correction équivalente au moment ou on crée le détail ?

    • Tu peux utiliser la pipeline reservation_evenement_donnees_details qui permet de modifier les détails de l’enregistrement (action/editer_reservations_detail.php ligne 70) générés par la fonction

      $donnees_reservations_details = charger_fonction('donnees_reservations_details', 'inc');

      elle même surchargeable dans ton fichier mes_fonctions.php

    Répondre à ce message

  • 25

    Bonjour,
    Après avoir activé le plugin Réservation d’évènements et configuré celui-ci, lorsque je clique sur un événement de ma page agenda dans l’espace public, j’ai un message d’erreur m’indiquant : Erreur 404, l’url n’existe pas. Voici le lien qui pourtant fonctionne très bien si le plugin réservation est désactivé : http://monsite/spip.php?page=evenement&id_article=40

    Je suis sous SPIP 3.1.4, Sarka-SPIP 3.4.6, PHP 5.4.45.

    Quel peut être le problème ? Si quelqu’un peut m’aider.
    Merci et cordialement,
    Yann

    • Bonjour,

      Le plugin propose des squelette sevenement à la source et dans le dossier content.

      Regarde le quel des deux cause problème et surcharge le/les dans ton squelettes avec ton original

      Rainer

    • Bonjour Rainer,
      Merci beaucoup pour réactivité. En effet, j’ai surchargé les squelettes et cela fonctionne. Super !
      J’ai effectué 2 réservations en test.
      Les réservations fonctionnent et sont visibles dans l’espace privé Activité / Réservations.

      Par contre, lorsque je vais dans l’événement dans l’espace privé mes détails de réservation s’affichent bien en bas (cf. xx détails de réservation)

      mais j’ai une ligne :
      Inscription en ligne : 50 places (Réponses : 0 oui | 0 non | 0 ?)
      Liste des inscriptions

      et quand je clique sur « Liste des inscriptions », c’est vide et sur mon site en ligne en dessous du calendrier et de l’événement j’ai : | 0/50

      Le formulaire lui, affiche bien le nombre de places restantes.

      Il doit s’agir d’un détail...mais où ?

      Yann

    • Ce dont tu parles est une fonctionnalité native du plugin agenda et pas lié à ce plugin.

      Comme plusieurs utilisateurs se sont déjà étonné de ça je vais peut-être le cacher dans le futur en laissant la possibilité de le faire réapparaître via la config.

      Le résumé des réservations se trouvent toujours dans la colonne gauche au niveau de l’événement, article, rubrique

    • Rainer,
      Si je comprends bien, on ne peut donc pas récupérer les infos bien que cela fasse partie du plugin Agenda.
      Dans ce cas oui, il serait peut être intéressant de le masquer avec la possibilité éventuelle de l’utiliser via la config.
      Merci.
      Yann

    • Pas tout à fait.

      Le plugin agenda dispose d’un propre formulaire d’inscription avec une table propre pour l’enregistrement. Le réservations faits via ce formulaire seraient disponibles à cet endroit.

      Réservation utilise d’autres tables et un autre formulaire et ses résultats son visible dans la colonne gauche.

      Le seul lien entre les deux systèmes est le champ « inscription » dans le formulaire d’édition de l’événement.

    • Ah d’accord. Compris ! :-)
      Pour faire propre sur le site en ligne, est-il possible dans ce cas de masquer l’info | 0/50 présente en dessous du calendrier ?

    • Pour le moment tu peux le faire en css.

      Je vais le prévoir dans une future version du plugin

    • Merci Rainer.
      Je n’ai pas trop été encore dans les css :-) peur de mettre le cirque...mais je vais regarder.
      Yann

    • Rainer,

      Je ne m’y connais pas trop en CSS et j’ai peur de faire des bêtises...

    • Je vais voir si j’ai un moment ce week-end pour le faire

    • Merci Rainer ! :-)

    • je viens de modifier le plugin dans ce sens. Par défaut c’est caché, possibilité de le rendre visible via config.

    • Rainer,
      Merci infiniment. Magnifique. Bon weekend.
      Yann

    • Rainer,
      Quand je veux modifier une réservation dans l’espace privé, par exemple pour indiquer la date de paiement, j’obtiens un message qui me dit qu’ il y a une erreur dans ma saisie.
      Pourtant j’indique juste la date sans rien modifier d’autre.
      Yann

    • peux-tu m’envoyer un screenshot ?

    • Bonjour Rainer,

      Voici le screenshot.

    • Je ne reproduis pas.

      Version spip, version reservations_evenements ?

      Peux-tu faire un essais avec seul les plugins nécessaire pour reservations_evenement installés ?

    • Même résultat en ne conservant que les plugins nécessaires à la réservation.
      SPIP 3.1.4, reservations_evenement 1.23.12
      Yann

    • pourrais-tu mettre la balise #ENV dans formulaires/editer_reservation.html, ressayer de soumettre le formulaire et me poster le résultat

    • Voici le résultat.

    • mais tu n’as pas d’erreur cette fois-ci, non ? Tu as soumis le formulaire ? Peux tu également mettre #ENV{erreurs}  ?

    • Si j’ai une erreur. Voici ce que j’obtiens après avoir rajouté #ENVerreurs

    • je vois.

      Tu as du désactivé « Permettre de réutiliser une adresse email ».

      Et une adresse email présente dans le champ « email » (caché) qui est déjà utilisé par un auteur.

      Enlève la sélection sous « client », ce qui fait réapparaître le champ email -> enlève l’adresse email et tout devrait entrer en ordre.

      Cependant cela ne devrait pas arriver et je vais corriger le plugin

    • Rainer,
      Super. Tout fonctionne. Merci encore pour ton aide.
      Bonne soirée.
      Yann

    • Tant mieux, le plugin est d’ailleurs actualisé

    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