Changeset 89847 in spip-zone


Ignore:
Timestamp:
Jun 2, 2015, 3:10:28 PM (5 years ago)
Author:
abelass@…
Message:
  • amélioration squelette événement
  • nouveau squelette inscription
  • correctement enregistrer les prix pour des inscriptions multiples
Location:
_plugins_/reservation_evenement
Files:
10 added
22 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/reservation_evenement/branches/v1/aside/evenement.html

    r88266 r89847  
    44        <ul class="nav nav-list">
    55                <li class="nav-header"><:agenda:evenements:></li>
    6                 <BOUCLE_evenements_article(EVENEMENTS) {id_article} {!par date} {0,10}>
     6                <BOUCLE_evenements_article(EVENEMENTS) {id_article} {!par date} {date_fin>#DATE} {0,10}>
    77                <li><a href="#URL_EVENEMENT"[ class="(#EXPOSE)"]>#TITRE</a></li>
    88                </BOUCLE_evenements_article>
  • _plugins_/reservation_evenement/branches/v1/content/evenement.html

    r88266 r89847  
    11<BOUCLE_content(EVENEMENTS){id_evenement}>
    2 [(#SET{annee,#DATE_DEBUT|annee})][(#SET{mois,#DATE_DEBUT|nom_mois})][(#SET{jour,#DATE_DEBUT|jour})]
    3     #SET{prix,''}
    4     <BOUCLE_prix(PRIX_OBJETS?){id_objet=#ID_EVENEMENT}{objet=evenement}{0,1}>
    5      #SET{prix,#PRIX}
    6     </BOUCLE_prix>
    7         [(#REM) ou à l'article]
    8         <BOUCLE_prix_article(PRIX_OBJETS?){id_objet=#ID_ARTICLE}{objet=article}{0,1}>
    9         #SET{prix,#PRIX}
    10         </BOUCLE_prix_article>
    11          [(#REM) Sinon, si l'événement ne contient pas de prix, on prend le prix du champs prix l'article]
    12             <BOUCLE_art_present(ARTICLES){id_article=#GET{id_article}}{si #GET{prix}|>{0}|non}>
    13                 #SET{prix,#PRIX}
    14             </BOUCLE_art_present>
    15                   [(#REM) sinon on prend le prix du champs prix de l'événement] 
    16                    #SET{prix,#PRIX|appliquer_filtre{prix_formater}}                       
    17             <//B_art_present>
    18          <//B_prix_article>                           
    19     <//B_prix>
     2
     3  #SET{id_evenement_source,#ID_EVENEMENT_SOURCE}
     4  #SET{date_debut,#DATE_DEBUT}
     5  [(#ID_EVENEMENT_SOURCE|=={0}|oui) #SET{id_evenement_source,#ID_EVENEMENT}]
     6  [(#ID_EVENEMENT_SOURCE|!={0}|oui) #SET{date_debut,#INFO_DATE_DEBUT{evenement,#ID_EVENEMENT_SOURCE}}]
     7
     8  #SET{date_fin,#DATE_FIN}
     9  <BOUCLE_evmt_lie(EVENEMENTS){id_evenement_source = #GET{id_evenement_source}}{! par date_fin}{0,1}>
     10    #SET{date_fin,#DATE_FIN}
     11  </BOUCLE_evmt_lie>
     12
    2013<article class="entry evenement vevent id_#ID_EVENEMENT" id="evenement_#ID_EVENEMENT" itemscope itemtype="http://schema.org/Event">
    2114    <header class="cartouche">
    2215        [(#LOGO_EVENEMENT|image_reduire{200,200})]
    2316        <h1><span class="#EDIT{titre}">#TITRE</span></h1>
    24                 <meta itemprop="startDate" content="[(#DATE_DEBUT|date_iso)]" />
    25                 <meta itemprop="endDate" content="[(#DATE_FIN|date_iso)]" />
    26                 [<p class="info-publi"><time><i class="icon-calendar"></i> (#DATE_DEBUT|agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE*,'hcal'})</time></p>]
     17                <meta itemprop="startDate" content="[(#GET{date_debut}|date_iso)]" />
     18                <meta itemprop="endDate" content="[(#GET{date_fin}|date_iso)]" />
     19                [<p class="info-publi"><time><i class="icon-calendar"></i> (#GET{date_debut}|agenda_affdate_debut_fin{#GET{date_fin},#HORAIRE*,'hcal'})</time></p>]
    2720    </header>
    28    #SET{intro,''}<BOUCLE_art(ARTICLES){id_article}>#SET{intro,#INTRODUCTION}</BOUCLE_art>
     21   #SET{intro,''}<BOUCLE_art(ARTICLES){id_article}>#SET{intro,#TEXTE}</BOUCLE_art>
    2922        [(#SET{intro,[<div class="introduction #EDIT{descriptif}" itemprop="description">(#DESCRIPTIF|sinon{#GET{intro}})</div>]})]
    3023
    31         [(#GET{intro}|ou{#LIEU}|ou{#ADRESSE}|ou{#GET{prix}}|ou{#PLACES|>{0}}|oui)
    32         <div class="main">
    33                 #GET{intro}
    34                 [<div class="location" itemprop="location"><div class="lieu #EDIT{lieu}">
    35                         <div><strong><:agenda:evenement_lieu:></strong></div>
    36                         <div>(#LIEU)</div>
    37                         [<div class="adresse #EDIT{adresse}">(#ADRESSE)</div>]</div>]
    38                         [<div class><:reservation:label_prix:> (#GET{prix})</div>]
    39                         [(#PLACES|>{0}|oui)<INCLURE{fond=inclure/places_disponibles,id_evenement,places,statut=#VAL|statuts_complet}/>]         
    40         </div>]
    41        
     24
     25  [<div class="main">
     26    (#GET{intro})
     27  </div>]
     28
     29<INCLURE{fond=inclure/evenement_details,
     30  id_objet=#GET{id_evenement_source},
     31  id_article,
     32  prix=#PRIX,
     33  lieu,
     34  places,
     35  adresse
     36  } />
     37
    4238</article>
    4339</BOUCLE_content>
  • _plugins_/reservation_evenement/branches/v1/formulaires/inc-reservation_evenements.html

    r89832 r89847  
    33    [<div class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_evenement})</div>]
    44<BOUCLE_art_or(DATA){source tableau,#ENV{evenements}} {id_evenement_source = 0} {par date_debut}>
    5     #SET{prix,#VALEUR{prix}}#VALEUR{prix}
     5    #SET{prix,#VALEUR{prix}}
    66[(#REM) Si le plugin prix objets est activé on regarde si il y a un prix attaché à l'évenement]
    77    #SET{prix2,''}
    88    <BOUCLE_prix(PRIX_OBJETS?){id_objet=#ID_EVENEMENT}{objet=evenement}{0,1}>
    9      #SET{prix2,#PRIX**}
     9     #SET{prix2,#PRIX}
    1010    </BOUCLE_prix>
    1111        [(#REM) ou à l'article]
    1212        <BOUCLE_prix_article(PRIX_OBJETS?){id_objet=#ID_ARTICLE}{objet=article}{0,1}>
    13         #SET{prix2,#PRIX**}
     13        #SET{prix2,#PRIX}
    1414        </BOUCLE_prix_article>
    1515         [(#REM) Sinon, si l'événement ne contient pas de prix, on prend le prix du champs prix l'article]
    1616            <BOUCLE_art(ARTICLES){id_article=#VALEUR{id_article}}{si #GET{prix}|=={0}|ou{#GET{prix}|=={0.00}}|oui}>
    17                 #SET{prix2,#PRIX**}
     17                #SET{prix2,#PRIX}
    1818            </BOUCLE_art>
    1919                  [(#REM) sinon on prend le prix du champs prix de l'événement]
     
    3232    [<div class="location" itemprop="location"><span class="lieu">(#LIEU)</span>[<br /><span class="adresse">(#ADRESSE|PtoBR)</span>]</div>]
    3333        [(#PLACES|>{0}|oui)<INCLURE{fond=inclure/places_disponibles,id_evenement,places,statut=#VAL|statuts_complet}/>]
    34   <INCLURE{fond=formulaires/inc-reservation_evenements_champ,id_evenement, prix = #GET{prix2},evenements=#ENV{id_evenement}}/>
     34  <INCLURE{fond=formulaires/inc-reservation_evenements_champ,id_evenement, prix=#GET{prix2},evenements=#ENV{id_evenement}}/>
    3535</BOUCLE_art_or>
    3636</li>
  • _plugins_/reservation_evenement/branches/v1/formulaires/inc-reservation_evenements_champ.html

    r89832 r89847  
    11<div class="choix">
    22    <label for="id_evenement_#ID_EVENEMENT">
    3         [(#ENV{prix}|>{0}|?{[(#PRIX)],<:reservation:label_inscription:>})]
     3        [(#ENV{prix}|>{0}|?{[(#ENV{prix})],<:reservation:label_inscription:>})]
    44  </label>
    5     <input type="checkbox" name="id_evenement[#ID_EVENEMENT]" class="checkbox" id="id_evenement_#ID_EVENEMENT" value="#ID_EVENEMENT"[(#ID_EVENEMENT|in_array{#ENV{evenements}}|oui) checked="checked"]/>
     5    <input type="checkbox" name="id_evenement[#ID_EVENEMENT]" class="checkbox evenement" id="id_evenement_#ID_EVENEMENT" value="#ID_EVENEMENT"[(#ID_EVENEMENT|in_array{#ENV{evenements}}|oui) checked="checked"]/>
    66</div>
  • _plugins_/reservation_evenement/branches/v1/formulaires/inc-reservation_evenements_declinaisons_prix.html

    r89832 r89847  
    33    <div class="choix">
    44    <BOUCLE_decl(DECLINAISONS){id_declinaison}{statut ?}{par num titre,titre}>
    5        <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox declinaison" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
     5       <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox evenement declinaison" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
    66       <label for="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]">#TITRE[ : <strong data-prix="#ID_PRIX_OBJET">(#GET{prix})</strong>]</label>
    77
     
    1010</B_decl>
    1111    <div class="choix">
    12       <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
     12      <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox evenement declinaison" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
    1313      <label for="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]">
    1414       [ <strong data-prix="#ID_PRIX_OBJET">(#GET{prix})</strong>]
  • _plugins_/reservation_evenement/branches/v1/formulaires/reservation.php

    r89777 r89847  
    11<?php
    22/**
    3  * Plugin Agenda 4 pour Spip 3.0
    4  * Licence GPL 3
     3 * Le Formulaire réservation
    54 *
    6  * 2006-2014
    7  * Auteurs : cf paquet.xml
     5 * @plugin     Réservation Événements
     6 * @copyright  2013
     7 * @author     Rainer Müller
     8 * @licence    GNU/GPL
     9 * @package    SPIP\Reservation_evenement\Formulaires
    810 */
    911
    1012if (!defined("_ECRIRE_INC_VERSION"))
    11         return;
     13  return;
    1214
    1315include_spip('inc/actions');
    1416include_spip('inc/editer');
    1517
    16 function formulaires_reservation_charger_dist($id = '', $id_article = '', $retour='') {
    17         include_spip('inc/config');
    18         include_spip('formulaires/selecteur/generique_fonctions');
    19 
    20         //Si l'affichage n'est pas déjà définie on établit si une zone s'applique
    21         if (!$id_article AND !$id) {
    22                 include_spip('inc/reservation_evenements');
    23 
    24                 $config = lire_config('reservation_evenement/rubrique_reservation');
    25                 $rubrique_reservation = picker_selected($config, 'rubrique');
    26                 $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
    27                         'tableau' => 'oui',
    28                         'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
    29                         'select' => '*',
    30                         'resultat' => 'par_id'
    31                 ));
    32 
    33         }
    34 
    35         if (!is_array($zone)) {
    36                 $where = array('date_fin>NOW() AND inscription=1 AND statut="publie"');
    37                 if ($id) {
    38                         if (!is_array($id))
    39                                 array_push($where, 'id_evenement_source =' . intval($id));
    40                         elseif (is_array($id))
    41                                 array_push($where, 'id_evenement_source IN (' . implode(',', $id) . ')');
    42                 }
    43                 if ($id_article) {
    44                         if (!is_array($id_article))
    45                                 array_push($where, 'id_article=' . intval($id_article));
    46                         elseif (is_array($id_article))
    47                                 array_push($where, 'id_article IN (' . implode(',', $id_article) . ')');
    48                 }
    49 
    50                 $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
    51 
    52                 $evenements = array();
    53                 $articles = array();
    54                 while ($row = sql_fetch($sql)) {
    55                         $evenements[$row['id_evenement']] = $row;
    56                         $articles[] = $row['id_article'];
    57                 }
    58         } else {
    59                 $evenements = $zone;
    60         }
    61 
    62         $valeurs = array(
    63                 'evenements' => $evenements,
    64                 'articles' => $evenements,
    65                 'lang' => $GLOBALS['spip_lang']
    66         );
    67 
    68         if (intval($GLOBALS['visiteur_session'])) {
    69                 $session = $GLOBALS['visiteur_session'];
    70                 $nom = $session['nom'];
    71                 $email = $session['email'];
    72 
    73         }
    74 
    75         // valeurs d'initialisation
    76         $valeurs['id_evenement'] = _request('id_evenement') ? (is_array(_request('id_evenement')) ? _request('id_evenement') : array(_request('id_evenement'))) : array();
    77 
    78         $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(_request('id_objet_prix'))) : array();
    79 
    80         $valeurs['nom'] = $nom;
    81         $valeurs['email'] = $email;
    82         $valeurs['enregistrer'] = _request('enregistrer');
    83         $valeurs['new_pass'] = _request('new_pass');
    84         $valeurs['new_pass2'] = _request('new_pass2');
    85         $valeurs['new_login'] = _request('new_login');
    86         $valeurs['statut'] = 'encours';
    87         $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
    88 
    89         //les champs extras auteur
    90         include_spip('cextras_pipelines');
    91 
    92         if (function_exists('champs_extras_objet')) {
    93                 //Charger les définitions pour la création des formulaires
    94                 $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
    95                 foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
    96                         $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
    97                         $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
    98 
    99                 }
    100         }
    101 
    102         $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
    103         $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
    104         $valeurs['_hidden'] .= '<input type="hidden" name="quantite" value="' . $valeurs['quantite'] . '"/>';
    105 
    106         return $valeurs;
     18function formulaires_reservation_charger_dist($id = '', $id_article = '', $retour = '') {
     19  include_spip('inc/config');
     20  include_spip('formulaires/selecteur/generique_fonctions');
     21
     22  //Si l'affichage n'est pas déjà définie on établit si une zone s'applique
     23  if (!$id_article AND !$id) {
     24    include_spip('inc/reservation_evenements');
     25
     26    $config = lire_config('reservation_evenement/rubrique_reservation');
     27    $rubrique_reservation = picker_selected($config, 'rubrique');
     28    $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
     29      'tableau' => 'oui',
     30      'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
     31      'select' => '*',
     32      'resultat' => 'par_id'
     33    ));
     34
     35  }
     36
     37  if (!is_array($zone)) {
     38    $where = array('date_fin>NOW() AND inscription=1 AND statut="publie"');
     39    if ($id) {
     40      $id_evenement_source = sql_getfetsel('id_evenement_source','spip_evenements','id_evenement=' . $id);
     41      if (!is_array($id)){
     42        if ($id_evenement_source == 0)
     43          $where[] = 'id_evenement=' . intval($id);
     44        else $where[] = 'id_evenement_source=' . intval($id);
     45      }
     46      elseif (is_array($id)){
     47        if ($id_evenement_source == 0)
     48          $where[] = 'id_evenement IN (' . implode(',', $id) . ')';
     49        else
     50          $where[] = 'id_evenement_source IN (' . implode(',', $id) . ')';
     51      }
     52    }
     53    if ($id_article) {
     54      if (!is_array($id_article))
     55        array_push($where, 'id_article=' . intval($id_article));
     56      elseif (is_array($id_article))
     57        array_push($where, 'id_article IN (' . implode(',', $id_article) . ')');
     58    }
     59
     60    $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
     61
     62    $evenements = array();
     63    $articles = array();
     64    while ($row = sql_fetch($sql)) {
     65      $evenements[$row['id_evenement']] = $row;
     66      $articles[] = $row['id_article'];
     67    }
     68  }
     69  else {
     70    $evenements = $zone;
     71  }
     72
     73  $valeurs = array(
     74    'evenements' => $evenements,
     75    'articles' => $evenements,
     76    'lang' => $GLOBALS['spip_lang']
     77  );
     78
     79  if (intval($GLOBALS['visiteur_session'])) {
     80    $session = $GLOBALS['visiteur_session'];
     81    $nom = $session['nom'];
     82    $email = $session['email'];
     83
     84  }
     85
     86  // valeurs d'initialisation
     87  $valeurs['id_evenement'] = _request('id_evenement') ? (is_array(_request('id_evenement')) ? _request('id_evenement') : array(_request('id_evenement'))) : array();
     88
     89  $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(_request('id_objet_prix'))) : array();
     90
     91  $valeurs['nom'] = $nom;
     92  $valeurs['email'] = $email;
     93  $valeurs['enregistrer'] = _request('enregistrer');
     94  $valeurs['new_pass'] = _request('new_pass');
     95  $valeurs['new_pass2'] = _request('new_pass2');
     96  $valeurs['new_login'] = _request('new_login');
     97  $valeurs['statut'] = 'encours';
     98  $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
     99
     100  //les champs extras auteur
     101  include_spip('cextras_pipelines');
     102
     103  if (function_exists('champs_extras_objet')) {
     104    //Charger les définitions pour la création des formulaires
     105    $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
     106    foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
     107      $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
     108      $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
     109
     110    }
     111  }
     112
     113  $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
     114  $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
     115
     116  return $valeurs;
    107117}
    108118
    109 function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour='') {
    110         $erreurs = array();
    111         $email = _request('email');
    112         $id_auteur = '';
    113 
    114         if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
    115                 $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    116         }
    117 
    118         if (_request('enregistrer')) {
    119                 include_spip('inc/auth');
    120                 $obligatoires = array(
    121                         'nom',
    122                         'email',
    123                         'new_pass',
    124                         'new_login'
    125                 );
    126                 foreach ($obligatoires AS $champ) {
    127                         if (!_request($champ))
    128                                 $erreurs[$champ] = _T("info_obligatoire");
    129                 }
    130                 //Vérifier le login
    131                 if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
    132                         $erreurs['new_login'] = $err;
    133                         $erreurs['message_erreur'] .= $err;
    134                 }
    135 
    136                 //Vérifier les mp
    137                 if ($p = _request('new_pass')) {
    138                         if ($p != _request('new_pass2')) {
    139                                 $erreurs['new_pass'] = _T('info_passes_identiques');
    140                                 $erreurs['message_erreur'] .= _T('info_passes_identiques');
    141                         } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
    142                                 $erreurs['new_pass'] = $err;
    143                         }
    144                 }
    145         } else {
    146                 $obligatoires = array(
    147                         'nom',
    148                         'email'
    149                 );
    150 
    151                 if (test_plugin_actif('declinaisons'))
    152                         array_push($obligatoires, 'id_objet_prix');
    153                 else
    154                         array_push($obligatoires, 'id_evenement');
    155 
    156                 foreach ($obligatoires AS $champ) {
    157                         if (!_request($champ))
    158                                 $erreurs[$champ] = _T("info_obligatoire");
    159                 }
    160         }
    161 
    162         if ($email) {
    163                 include_spip('inc/filtres');
    164                 // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
    165                 if (!email_valide($email)) {
    166                         $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
    167                 } elseif (!$id_auteur) {
    168                         if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
    169                                 $erreurs['email'] = _T('reservation:erreur_email_utilise');
    170                 }
    171         }
    172 
    173         //les champs extras auteur
    174         include_spip('cextras_pipelines');
    175 
    176         if (function_exists('champs_extras_objet')) {
    177                 include_spip('inc/saisies');
    178                 //Charger les définitions
    179                 $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
    180                 $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
    181         }
    182         if (count($erreurs) AND !isset($erreurs['message_erreur']))
    183                 $erreurs['message_erreur'] = _T('reservation:message_erreur');
    184         return $erreurs;
     119function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour = '') {
     120  $erreurs = array();
     121  $email = _request('email');
     122  $id_auteur = '';
     123
     124  if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
     125    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
     126  }
     127
     128  if (_request('enregistrer')) {
     129    include_spip('inc/auth');
     130    $obligatoires = array(
     131      'nom',
     132      'email',
     133      'new_pass',
     134      'new_login'
     135    );
     136    foreach ($obligatoires AS $champ) {
     137      if (!_request($champ))
     138        $erreurs[$champ] = _T("info_obligatoire");
     139    }
     140    //Vérifier le login
     141    if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
     142      $erreurs['new_login'] = $err;
     143      $erreurs['message_erreur'] .= $err;
     144    }
     145
     146    //Vérifier les mp
     147    if ($p = _request('new_pass')) {
     148      if ($p != _request('new_pass2')) {
     149        $erreurs['new_pass'] = _T('info_passes_identiques');
     150        $erreurs['message_erreur'] .= _T('info_passes_identiques');
     151      }
     152      elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
     153        $erreurs['new_pass'] = $err;
     154      }
     155    }
     156  }
     157  else {
     158    $obligatoires = array(
     159      'nom',
     160      'email'
     161    );
     162
     163    if (test_plugin_actif('declinaisons'))
     164      array_push($obligatoires, 'id_objet_prix');
     165    else
     166      array_push($obligatoires, 'id_evenement');
     167
     168    foreach ($obligatoires AS $champ) {
     169      if (!_request($champ))
     170        $erreurs[$champ] = _T("info_obligatoire");
     171    }
     172  }
     173
     174  if ($email) {
     175    include_spip('inc/filtres');
     176    // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
     177    if (!email_valide($email)) {
     178      $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
     179    }
     180    elseif (!$id_auteur) {
     181      if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
     182        $erreurs['email'] = _T('reservation:erreur_email_utilise');
     183    }
     184  }
     185
     186  //les champs extras auteur
     187  include_spip('cextras_pipelines');
     188
     189  if (function_exists('champs_extras_objet')) {
     190    include_spip('inc/saisies');
     191    //Charger les définitions
     192    $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
     193    $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
     194  }
     195  if (count($erreurs) AND !isset($erreurs['message_erreur']))
     196    $erreurs['message_erreur'] = _T('reservation:message_erreur');
     197  return $erreurs;
    185198}
    186199
    187 function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour='') {
    188         if ($retour) {
    189                 refuser_traiter_formulaire_ajax();
    190         }
    191         $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
    192         if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
    193                 $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    194         }
    195 
    196         $retours = $enregistrer($id, $id_article, $id_auteur);
    197        
    198         // Si on demande une redirection
    199         if ($retour) $retours['redirect'] = $retour;
    200 
    201         return $retours;
     200function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour = '') {
     201  if ($retour) {
     202    refuser_traiter_formulaire_ajax();
     203  }
     204  $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
     205  if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
     206    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
     207  }
     208
     209  $retours = $enregistrer($id, $id_article, $id_auteur);
     210
     211  // Si on demande une redirection
     212  if ($retour)
     213    $retours['redirect'] = $retour;
     214
     215  return $retours;
    202216}
    203217?>
  • _plugins_/reservation_evenement/branches/v1/inc/donnees_reservations_details.php

    r88302 r89847  
    11<?php
    2 if (!defined('_ECRIRE_INC_VERSION')) return;
     2if (!defined('_ECRIRE_INC_VERSION'))
     3  return;
    34
    4 function inc_donnees_reservations_details_dist($id_reservations_detail,$set) {
    5                        
    6         if(count($set)>0){
    7                 include_spip('inc/filtres');
    8                 $reservations_details=sql_fetsel('*','spip_reservations_details','id_reservations_detail='.$id_reservations_detail);
     5function inc_donnees_reservations_details_dist($id_reservations_detail, $set) {
    96
    10                 $id_evenement=isset($set['id_evenement'])?$set['id_evenement']:$reservations_details['id_evenement'];   
    11                 // Les données de l'évènenement
     7  if (count($set) > 0) {
     8    include_spip('inc/filtres');
     9    $reservations_details = sql_fetsel('*', 'spip_reservations_details', 'id_reservations_detail=' . $id_reservations_detail);
    1210
    13                 $evenement=sql_fetsel('*','spip_evenements','id_evenement='.$id_evenement);
    14                
    15                 $date_debut=$evenement['date_debut'];
    16                 if(!$date_fin=sql_getfetsel('date_fin','spip_evenements','id_evenement_source='.$id_evenement,'','date_debut DESC'))$date_fin=$evenement['date_fin'];
     11    $id_evenement = isset($set['id_evenement']) ? $set['id_evenement'] : $reservations_details['id_evenement'];
     12    // Les données de l'évènenement
    1713
    18                 // On établit les dates         
    19                 if($date_debut!=$date_fin){
    20                         if(affdate($date_debut,'d-m-Y')==affdate($date_fin,'d-m-Y')){
    21                                 $date=affdate($date_debut,'d/m/Y').','.affdate($date_debut,'G:i').'-'.affdate($date_fin,'G:i');
    22                         }
    23                         else {
    24                                 $date=affdate($date_debut,'d/m/Y').'-'.affdate($date_fin,'d/m/Y').', '.affdate($date_debut,'nom_jour').' '.affdate($date_debut,'G:i').'-'.affdate($date_fin,'G:i');
    25                                
    26                         }
    27                 }
    28                 else{
    29                         if(affdate($date_debut,'G:i')=='0:00')$date=affdate($date_debut,'d/m/Y');
    30                         else $datte=affdate($date_debut,'d/m/Y G:i');
    31                 }
    32                 // Les descriptif
    33                 $set['descriptif']=supprimer_numero($evenement['titre']).'  ('.$date.')';
    34                 if(intval($evenement['places']))$set['places']=$evenement['places'];
    35                 $set['quantite']=_request('quantite');
    36                 if(is_array($set['quantite']) and isset($set['quantite'][$id_evenement]))$set['quantite']=$set['quantite'][$id_evenement];
     14    $evenement = sql_fetsel('*', 'spip_evenements', 'id_evenement=' . $id_evenement);
    3715
    38                 // Si le prix n'est pas fournit, on essaye de le trouver
     16    $date_debut = $evenement['date_debut'];
     17    if (!$date_fin = sql_getfetsel('date_fin', 'spip_evenements', 'id_evenement_source=' . $id_evenement, '', 'date_debut DESC'))
     18      $date_fin = $evenement['date_fin'];
    3919
    40                 if(!isset($set['prix']) AND !isset($set['prix_ht'])){
    41                        
    42                         /*Existence d'un prix via le plugin Prix  Objets http://plugins.spip.net/prix_objets.html */
    43                         if($prix_objets=test_plugin_actif('prix_objets')){
    44                                 $fonction_prix = charger_fonction('prix', 'inc/');
    45                                 $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
    46                                  /*si le plugin déclinaison produit (http://plugins.spip.net/declinaisons.html) est active il peut y avoir plusieurs prix par évenement*/
    47                                 if(test_plugin_actif('declinaisons')){ 
    48                                         $id_prix=isset($set['id_prix_objet'])?$set['id_prix_objet']:$reservations_details['id_prix_objet'];     
    49                                         $p=sql_fetsel('prix_ht,id_prix_objet,id_declinaison','spip_prix_objets','id_prix_objet='.$id_prix);
    50                                        
    51                                         if($p['id_declinaison']>0)$set['descriptif'].=' - '.supprimer_numero(sql_getfetsel('titre','spip_declinaisons','id_declinaison='.$p['id_declinaison']));
    52                                 }
    53                                 //Sinon on cherche d'abord le prix attaché à l'évenement, puis à l'article de l'évenement
    54                                 elseif (!$p=sql_fetsel('prix_ht,id_prix_objet','spip_prix_objets','objet="evenement" AND id_objet='.$id_evenement)) $p=sql_fetsel('prix_ht,id_prix_objet','spip_prix_objets','objet="article" AND id_objet='.$evenement['id_article']);
    55                                 if(isset($p)){
    56                                         $prix_ht = $fonction_prix_ht('prix_objet', $p['id_prix_objet']);
    57                                         $prix = $fonction_prix('prix_objet',$p['id_prix_objet']);
    58                                         if($prix_ht)$taxe = round(($prix - $prix_ht) / $prix_ht, 3);
    59                                         $set['prix_ht']=$prix_ht;
    60                                         $set['taxe']=$taxe; 
    61                                         $set['id_prix_objet']=$p['id_prix_objet'];     
    62                                 }                       
    63                         }
    64                         /*Sinon si il y un prix attaché à l'évenement*/
    65                         elseif(intval($evenement['prix']) OR intval($evenement['prix_ht']))
    66                                 $set=etablir_prix($id_evenement,'evenement',$evenement,$set);   
    67                         elseif($article=sql_fetsel('*','spip_articles','id_article='.$evenement['id_article']))
    68                                 $set=etablir_prix($evenement['id_article'],'article',$article,$set);
    69                 }
    70         }
    71         return $set;
     20    // On établit les dates
     21    if ($date_debut != $date_fin) {
     22      if (affdate($date_debut, 'd-m-Y') == affdate($date_fin, 'd-m-Y')) {
     23        $date = affdate($date_debut, 'd/m/Y') . ',' . affdate($date_debut, 'G:i') . '-' . affdate($date_fin, 'G:i');
     24      }
     25      else {
     26        $date = affdate($date_debut, 'd/m/Y') . '-' . affdate($date_fin, 'd/m/Y') . ', ' . affdate($date_debut, 'nom_jour') . ' ' . affdate($date_debut, 'G:i') . '-' . affdate($date_fin, 'G:i');
     27
     28      }
     29    }
     30    else {
     31      if (affdate($date_debut, 'G:i') == '0:00')
     32        $date = affdate($date_debut, 'd/m/Y');
     33      else
     34        $datte = affdate($date_debut, 'd/m/Y G:i');
     35    }
     36
     37    // Les descriptif
     38    $set['descriptif'] = supprimer_numero($evenement['titre']) . '  (' . $date . ')';
     39    if (intval($evenement['places']))
     40      $set['places'] = $evenement['places'];
     41    $set['quantite'] = _request('quantite');
     42    if (is_array($set['quantite']) and isset($set['quantite'][$id_evenement]) )
     43      $set['quantite'] = ($set['quantite'][$id_evenement] > 0) ? $set['quantite'][$id_evenement] : 1;
     44
     45    $quantite = $set['quantite'];
     46
     47    // Si le prix n'est pas fournit, on essaye de le trouver
     48
     49    if (!isset($set['prix']) AND !isset($set['prix_ht'])) {
     50
     51      /*Existence d'un prix via le plugin Prix  Objets http://plugins.spip.net/prix_objets.html */
     52      if ($prix_objets = test_plugin_actif('prix_objets')) {
     53        $fonction_prix = charger_fonction('prix', 'inc/');
     54        $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
     55
     56        /*si le plugin déclinaison produit (http://plugins.spip.net/declinaisons.html) est active il peut y avoir plusieurs prix par évenement*/
     57        if (test_plugin_actif('declinaisons')) {
     58          $id_prix = isset($set['id_prix_objet']) ? $set['id_prix_objet'] : $reservations_details['id_prix_objet'];
     59          $p = sql_fetsel('prix_ht,id_prix_objet,id_declinaison', 'spip_prix_objets', 'id_prix_objet=' . $id_prix);
     60
     61          if ($p['id_declinaison'] > 0)
     62            $set['descriptif'] .= ' - ' . supprimer_numero(sql_getfetsel('titre', 'spip_declinaisons', 'id_declinaison=' . $p['id_declinaison']));
     63        }
     64
     65        //Sinon on cherche d'abord le prix attaché à l'évenement, puis à l'article de l'évenement
     66        elseif (!$p = sql_fetsel('prix_ht,id_prix_objet', 'spip_prix_objets', 'objet="evenement" AND id_objet=' . $id_evenement))
     67          $p = sql_fetsel('prix_ht,id_prix_objet', 'spip_prix_objets', 'objet="article" AND id_objet=' . $evenement['id_article']);
     68        if (isset($p)) {
     69          $prix_ht = $quantite * $fonction_prix_ht('prix_objet', $p['id_prix_objet']);
     70          $prix = $quantite * $fonction_prix('prix_objet', $p['id_prix_objet']);
     71          if ($prix_ht)
     72            $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
     73          $set['prix_ht'] = $prix_ht;
     74          $set['taxe'] = $taxe;
     75          $set['id_prix_objet'] = $p['id_prix_objet'];
     76        }
     77      }
     78
     79      /*Sinon si il y un prix attaché à l'évenement*/
     80      elseif (intval($evenement['prix']) OR intval($evenement['prix_ht']))
     81        $set = etablir_prix($id_evenement, 'evenement', $evenement, $set, $quantite);
     82      elseif ($article = sql_fetsel('*', 'spip_articles', 'id_article=' . $evenement['id_article']))
     83        $set = etablir_prix($evenement['id_article'], 'article', $article, $set, $quantite);
     84    }
     85  }
     86  return $set;
    7287}
    7388
    74 function etablir_prix($id,$objet,$datas,$set){
    75         if($fonction_prix = charger_fonction('prix', 'inc/',true)){
    76                 $prix = $fonction_prix($objet,$id);
    77         }
    78         else $prix=$datas['prix'];
    79        
    80         if($fonction_prix_ht = charger_fonction('ht', 'inc/prix',true)){
    81                 $prix_ht = $fonction_prix_ht($objet, $id);
    82         }
    83         elseif(intval($datas['prix_ht'])) $prix_ht =$datas['prix_ht'];
    84        
    85         if($prix_ht){
    86                 $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
    87                 $set['prix_ht']=$prix_ht;
    88                 $set['taxe']=$taxe;     
    89         }
    90         else $set['prix']=$prix;
    91        
    92         return  $set;
     89function etablir_prix($id, $objet, $datas, $set, $quantite) {
     90  if ($fonction_prix = charger_fonction('prix', 'inc/', true)) {
     91    $prix = $fonction_prix($objet, $id);
     92  }
     93  else
     94    $prix = $datas['prix'];
     95
     96  if ($fonction_prix_ht = charger_fonction('ht', 'inc/prix', true)) {
     97    $prix_ht = $fonction_prix_ht($objet, $id);
     98  }
     99  elseif (intval($datas['prix_ht']))
     100    $prix_ht = $datas['prix_ht'];
     101
     102  if ($prix_ht) {
     103    $prix = $quantite * $prix;
     104    $prix_ht = $quantite * $prix_ht;
     105    $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
     106    $set['prix_ht'] = $prix_ht;
     107    $set['taxe'] = $taxe;
     108  }
     109  else
     110    $set['prix'] = $quantite * $prix;
     111
     112  return $set;
    93113}
  • _plugins_/reservation_evenement/branches/v1/inc/reservation_enregistrer.php

    r89541 r89847  
    33// Sécurité
    44if (!defined('_ECRIRE_INC_VERSION'))
    5         return;
     5  return;
    66
    77//Enregistrement d'une réservation
    88function inc_reservation_enregistrer_dist($id = '', $id_article = '', $id_auteur = '', $champs_extras_auteurs = '') {
    9         include_spip('inc/config');
    10         include_spip('inc/session');
    11         $config = lire_config('reservation_evenement');
    12         $statut = $config['statut_defaut'] ? $config['statut_defaut'] : 'rien';
    13         if ($statut == 'rien') {
    14                 $statut_defaut = charger_fonction('defaut', 'inc/statuts');
    15                 $statut = $statut_defaut($statut);
    16         }
     9  include_spip('inc/config');
     10  include_spip('inc/session');
     11  $config = lire_config('reservation_evenement');
     12  $statut = $config['statut_defaut'] ? $config['statut_defaut'] : 'rien';
     13  if ($statut == 'rien') {
     14    $statut_defaut = charger_fonction('defaut', 'inc/statuts');
     15    $statut = $statut_defaut($statut);
     16  }
    1717
    18         //Créer la réservation
    19         $action = charger_fonction('editer_objet', 'action');
     18  //Créer la réservation
     19  $action = charger_fonction('editer_objet', 'action');
    2020
    21         // La référence
    22         $fonction_reference = charger_fonction('reservation_reference', 'inc/');
     21  // La référence
     22  $fonction_reference = charger_fonction('reservation_reference', 'inc/');
    2323
    24         $set = array(
    25                 'statut' => $statut,
    26                 'lang' => _request('lang')
    27         );
     24  $set = array(
     25    'statut' => $statut,
     26    'lang' => _request('lang')
     27  );
    2828
    29         //les champs extras auteur
    30         include_spip('cextras_pipelines');
    31         $valeurs_extras = array();
     29  //les champs extras auteur
     30  include_spip('cextras_pipelines');
     31  $valeurs_extras = array();
    3232
    33         if (_request('enregistrer')) {
    34                 include_spip('actions/editer_auteur');
     33  if (_request('enregistrer')) {
     34    include_spip('actions/editer_auteur');
    3535
    36                 if (!$id_auteur) {
    37                         include_spip('inc/auth');
    38                         $res = formulaires_editer_objet_traiter('auteur', 'new', '', '', $retour, $config_fonc, $row, $hidden);
    39                         $id_auteur = $res['id_auteur'];
    40                         sql_updateq('spip_auteurs', array('statut' => '6forum'), 'id_auteur=' . $id_auteur);
    41                         $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $id_auteur) ;           
    42             auth_loger($auteur);
    43                 }
    44                 $set['reference'] = $fonction_reference($id_auteur);
    45         } elseif (!intval($id_auteur)) {
    46                 $set['nom'] = _request('nom');
    47                 $set['email'] = _request('email');
    48                 //$set['donnees_auteur']=serialize( $valeurs_extras);
    49         } else {
    50                 $valeurs = array_merge(array(
    51                         'nom' => _request('nom'),
    52                         'email' => _request('email')
    53                 ), $valeurs_extras);
    54                 sql_updateq('spip_auteurs', $valeurs, 'id_auteur=' . $id_auteur);
    55         }
    56         $set['reference'] = $fonction_reference();
    57         $set['id_auteur'] = $id_auteur;
     36    if (!$id_auteur) {
     37      include_spip('inc/auth');
     38      $res = formulaires_editer_objet_traiter('auteur', 'new', '', '', $retour, $config_fonc, $row, $hidden);
     39      $id_auteur = $res['id_auteur'];
     40      sql_updateq('spip_auteurs', array('statut' => '6forum'), 'id_auteur=' . $id_auteur);
     41      $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $id_auteur);
     42      auth_loger($auteur);
     43    }
     44    $set['reference'] = $fonction_reference($id_auteur);
     45  }
     46  elseif (!intval($id_auteur)) {
     47    $set['nom'] = _request('nom');
     48    $set['email'] = _request('email');
     49    //$set['donnees_auteur']=serialize( $valeurs_extras);
     50  }
     51  else {
     52    $valeurs = array_merge(array(
     53      'nom' => _request('nom'),
     54      'email' => _request('email')
     55    ), $valeurs_extras);
     56    sql_updateq('spip_auteurs', $valeurs, 'id_auteur=' . $id_auteur);
     57  }
     58  $set['reference'] = $fonction_reference();
     59  $set['id_auteur'] = $id_auteur;
    5860
    59         $id_reservation = $action('new', 'reservation', $set);
    60        
    61         // On ajoute l'id à la session
    62         session_set('id_reservation', $id_reservation);
    63        
    64         $message = '<p>' . _T('reservation:reservation_enregistre') . '</p>';
    65         $message .= '<h3>' . _T('reservation:details_reservation') . '</h3>';
    66         $message .= recuperer_fond('inclure/reservation', array('id_reservation' => $id_reservation[0]));
     61  $id_reservation = $action('new', 'reservation', $set);
    6762
    68         //Ivalider les caches
    69         include_spip('inc/invalideur');
    70         suivre_invalideur("id='reservation/$id_reservation'");
    71         suivre_invalideur("id='reservations_detail/$id_reservations_detail'");
    72         return array(
    73                 'message_ok' => $message,
    74                 'editable' => false
    75         );
     63  // On ajoute l'id à la session
     64  session_set('id_reservation', $id_reservation);
     65
     66  $message = '<p>' . _T('reservation:reservation_enregistre') . '</p>';
     67  $message .= '<h3>' . _T('reservation:details_reservation') . '</h3>';
     68  $message .= recuperer_fond('inclure/reservation', array('id_reservation' => $id_reservation[0]));
     69
     70  //Ivalider les caches
     71  include_spip('inc/invalideur');
     72  suivre_invalideur("id='reservation/$id_reservation'");
     73  suivre_invalideur("id='reservations_detail/$id_reservations_detail'");
     74  return array(
     75    'message_ok' => $message,
     76    'editable' => false
     77  );
    7678}
  • _plugins_/reservation_evenement/branches/v1/inclure/reservation.html

    r88266 r89847  
    99                quantite, #QUANTITE,
    1010                prix, #PRIX*,
    11                 statut,#STATUT         
     11                statut,#STATUT
    1212        })]})]
    1313         [(#SET{total,[(#GET{total}|plus{#PRIX*})]})]
     
    3333               <th class="description"><:reservation:designation:></th>
    3434               [(#GET{total}|>{0}|oui)<th class="montant"><:reservation:montant:></th>]
    35                <th class="statut"><:reservation:label_statut:></th>               
     35               <th class="statut"><:reservation:label_statut:></th>
    3636            </tr>
    3737         </thead>
     
    4343               <td class="statut">
    4444                   [(#VAL{reservation:texte_statut[_(#VALEUR{statut}|trim)]}|_T)]
    45                    </td>               
     45                   </td>
    4646            </tr>
    4747            </BOUCLE_details>
    4848         </tbody>
    49          [<tfoot>
     49         [(#GET{total}|>{0}|oui)<tfoot>
    5050            <tr class="total_ttc">
    5151               <td class="descriptif">[(#PLUGIN{prix}|?{<:prix:label_total_ttc:>,<:reservation:total:>})]</td>
    52                <td class="montant">(#GET{total}|appliquer_filtre{prix_formater,#GET{total}|})</td>
     52               <td class="montant">[(#GET{total}|appliquer_filtre{prix_formater,#GET{total}|})]</td>
    5353            </tr>
    5454         </tfoot>]
  • _plugins_/reservation_evenement/branches/v1/lang/reservation_fr.php

    r89526 r89847  
    2828        'evenement_cloture' => 'Évenement clôturé',
    2929        'explication_client' => 'Choissisez un client parmis les auteurs ou saisissez les données du client ci-bas',
    30         'explication_envoi_separe' => 'Le changement de statut d’un Détail de Réservation vers 
     30        'explication_envoi_separe' => 'Le changement de statut d’un Détail de Réservation vers
    3131    <div><b>"@statuts@"</b></div> provoquera l’envoi d’une notification !',
    3232        'explication_envoi_separe_detail' => 'Le changement de statut vers <div><strong>"@statuts@"</strong></div> provoquera l’envoi d’une notification !',
     
    4545        'info_reservations_auteur' => 'Les réservations de cet auteur',
    4646        'info_voir_reservations_poubelle' => 'Voir les Résevations mises à la poubelle',
     47        'inscription' => 'Inscription',
     48        'inscrire' => 'S\'inscrire',
    4749        'inscrire_liste_attente' => 'Choissisez un autre cours ou inscrivez vous dans la liste d’attente.',
    4850
  • _plugins_/reservation_evenement/branches/v1/paquet.xml

    r89832 r89847  
    22prefix="reservation_evenement"
    33categorie="date"
    4 version="1.18.6"
     4version="1.19.0"
    55etat="test"
    66compatibilite="[3.0.16;3.1.*]"
  • _plugins_/reservation_evenement/trunk/aside/evenement.html

    r88261 r89847  
    44        <ul class="nav nav-list">
    55                <li class="nav-header"><:agenda:evenements:></li>
    6                 <BOUCLE_evenements_article(EVENEMENTS) {id_article} {!par date} {0,10}>
     6                <BOUCLE_evenements_article(EVENEMENTS) {id_article} {!par date} {date_fin>#DATE} {0,10}>
    77                <li><a href="#URL_EVENEMENT"[ class="(#EXPOSE)"]>#TITRE</a></li>
    88                </BOUCLE_evenements_article>
  • _plugins_/reservation_evenement/trunk/content/evenement.html

    r88260 r89847  
    11<BOUCLE_content(EVENEMENTS){id_evenement}>
    2 [(#SET{annee,#DATE_DEBUT|annee})][(#SET{mois,#DATE_DEBUT|nom_mois})][(#SET{jour,#DATE_DEBUT|jour})]
    3     #SET{prix,''}
    4     <BOUCLE_prix(PRIX_OBJETS?){id_objet=#ID_EVENEMENT}{objet=evenement}{0,1}>
    5      #SET{prix,#PRIX}
    6     </BOUCLE_prix>
    7         [(#REM) ou à l'article]
    8         <BOUCLE_prix_article(PRIX_OBJETS?){id_objet=#ID_ARTICLE}{objet=article}{0,1}>
    9         #SET{prix,#PRIX}
    10         </BOUCLE_prix_article>
    11          [(#REM) Sinon, si l'événement ne contient pas de prix, on prend le prix du champs prix l'article]
    12             <BOUCLE_art_present(ARTICLES){id_article=#GET{id_article}}{si #GET{prix}|>{0}|non}>
    13                 #SET{prix,#PRIX}
    14             </BOUCLE_art_present>
    15                   [(#REM) sinon on prend le prix du champs prix de l'événement] 
    16                    #SET{prix,#PRIX|appliquer_filtre{prix_formater}}                       
    17             <//B_art_present>
    18          <//B_prix_article>                           
    19     <//B_prix>
     2
     3  #SET{id_evenement_source,#ID_EVENEMENT_SOURCE}
     4  #SET{date_debut,#DATE_DEBUT}
     5  [(#ID_EVENEMENT_SOURCE|=={0}|oui) #SET{id_evenement_source,#ID_EVENEMENT}]
     6  [(#ID_EVENEMENT_SOURCE|!={0}|oui) #SET{date_debut,#INFO_DATE_DEBUT{evenement,#ID_EVENEMENT_SOURCE}}]
     7
     8  #SET{date_fin,#DATE_FIN}
     9  <BOUCLE_evmt_lie(EVENEMENTS){id_evenement_source = #GET{id_evenement_source}}{! par date_fin}{0,1}>
     10    #SET{date_fin,#DATE_FIN}
     11  </BOUCLE_evmt_lie>
     12
    2013<article class="entry evenement vevent id_#ID_EVENEMENT" id="evenement_#ID_EVENEMENT" itemscope itemtype="http://schema.org/Event">
    2114    <header class="cartouche">
    2215        [(#LOGO_EVENEMENT|image_reduire{200,200})]
    2316        <h1><span class="#EDIT{titre}">#TITRE</span></h1>
    24                 <meta itemprop="startDate" content="[(#DATE_DEBUT|date_iso)]" />
    25                 <meta itemprop="endDate" content="[(#DATE_FIN|date_iso)]" />
    26                 [<p class="info-publi"><time><i class="icon-calendar"></i> (#DATE_DEBUT|agenda_affdate_debut_fin{#DATE_FIN,#HORAIRE*,'hcal'})</time></p>]
     17                <meta itemprop="startDate" content="[(#GET{date_debut}|date_iso)]" />
     18                <meta itemprop="endDate" content="[(#GET{date_fin}|date_iso)]" />
     19                [<p class="info-publi"><time><i class="icon-calendar"></i> (#GET{date_debut}|agenda_affdate_debut_fin{#GET{date_fin},#HORAIRE*,'hcal'})</time></p>]
    2720    </header>
    28    #SET{intro,''}<BOUCLE_art(ARTICLES){id_article}>#SET{intro,#INTRODUCTION}</BOUCLE_art>
     21   #SET{intro,''}<BOUCLE_art(ARTICLES){id_article}>#SET{intro,#TEXTE}</BOUCLE_art>
    2922        [(#SET{intro,[<div class="introduction #EDIT{descriptif}" itemprop="description">(#DESCRIPTIF|sinon{#GET{intro}})</div>]})]
    3023
    31         [(#GET{intro}|ou{#LIEU}|ou{#ADRESSE}|ou{#GET{prix}}|ou{#PLACES|>{0}}|oui)
    32         <div class="main">
    33                 #GET{intro}
    34                 [<div class="location" itemprop="location"><div class="lieu #EDIT{lieu}">
    35                         <div><strong><:agenda:evenement_lieu:></strong></div>
    36                         <div>(#LIEU)</div>
    37                         [<div class="adresse #EDIT{adresse}">(#ADRESSE)</div>]</div>]
    38                         [<div class><:reservation:label_prix:> (#GET{prix})</div>]
    39                         [(#PLACES|>{0}|oui)<INCLURE{fond=inclure/places_disponibles,id_evenement,places,statut=#VAL|statuts_complet}/>]         
    40         </div>]
    41        
     24
     25  [<div class="main">
     26    (#GET{intro})
     27  </div>]
     28
     29<INCLURE{fond=inclure/evenement_details,
     30  id_objet=#GET{id_evenement_source},
     31  id_article,
     32  prix=#PRIX,
     33  lieu,
     34  places,
     35  adresse
     36  } />
     37
    4238</article>
    4339</BOUCLE_content>
  • _plugins_/reservation_evenement/trunk/formulaires/inc-reservation_evenements.html

    r89832 r89847  
    33    [<div class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_evenement})</div>]
    44<BOUCLE_art_or(DATA){source tableau,#ENV{evenements}} {id_evenement_source = 0} {par date_debut}>
    5     #SET{prix,#VALEUR{prix}}#VALEUR{prix}
     5    #SET{prix,#VALEUR{prix}}
    66[(#REM) Si le plugin prix objets est activé on regarde si il y a un prix attaché à l'évenement]
    77    #SET{prix2,''}
    88    <BOUCLE_prix(PRIX_OBJETS?){id_objet=#ID_EVENEMENT}{objet=evenement}{0,1}>
    9      #SET{prix2,#PRIX**}
     9     #SET{prix2,#PRIX}
    1010    </BOUCLE_prix>
    1111        [(#REM) ou à l'article]
    1212        <BOUCLE_prix_article(PRIX_OBJETS?){id_objet=#ID_ARTICLE}{objet=article}{0,1}>
    13         #SET{prix2,#PRIX**}
     13        #SET{prix2,#PRIX}
    1414        </BOUCLE_prix_article>
    1515         [(#REM) Sinon, si l'événement ne contient pas de prix, on prend le prix du champs prix l'article]
    1616            <BOUCLE_art(ARTICLES){id_article=#VALEUR{id_article}}{si #GET{prix}|=={0}|ou{#GET{prix}|=={0.00}}|oui}>
    17                 #SET{prix2,#PRIX**}
     17                #SET{prix2,#PRIX}
    1818            </BOUCLE_art>
    1919                  [(#REM) sinon on prend le prix du champs prix de l'événement]
     
    3232    [<div class="location" itemprop="location"><span class="lieu">(#LIEU)</span>[<br /><span class="adresse">(#ADRESSE|PtoBR)</span>]</div>]
    3333        [(#PLACES|>{0}|oui)<INCLURE{fond=inclure/places_disponibles,id_evenement,places,statut=#VAL|statuts_complet}/>]
    34   <INCLURE{fond=formulaires/inc-reservation_evenements_champ,id_evenement, prix = #GET{prix2},evenements=#ENV{id_evenement}}/>
     34  <INCLURE{fond=formulaires/inc-reservation_evenements_champ,id_evenement, prix=#GET{prix2},evenements=#ENV{id_evenement}}/>
    3535</BOUCLE_art_or>
    3636</li>
  • _plugins_/reservation_evenement/trunk/formulaires/inc-reservation_evenements_champ.html

    r89832 r89847  
    11<div class="choix">
    22    <label for="id_evenement_#ID_EVENEMENT">
    3         [(#ENV{prix}|>{0}|?{[(#PRIX)],<:reservation:label_inscription:>})]
     3        [(#ENV{prix}|>{0}|?{[(#ENV{prix})],<:reservation:label_inscription:>})]
    44  </label>
    5     <input type="checkbox" name="id_evenement[#ID_EVENEMENT]" class="checkbox" id="id_evenement_#ID_EVENEMENT" value="#ID_EVENEMENT"[(#ID_EVENEMENT|in_array{#ENV{evenements}}|oui) checked="checked"]/>
     5    <input type="checkbox" name="id_evenement[#ID_EVENEMENT]" class="checkbox evenement" id="id_evenement_#ID_EVENEMENT" value="#ID_EVENEMENT"[(#ID_EVENEMENT|in_array{#ENV{evenements}}|oui) checked="checked"]/>
    66</div>
  • _plugins_/reservation_evenement/trunk/formulaires/inc-reservation_evenements_declinaisons_prix.html

    r89832 r89847  
    33    <div class="choix">
    44    <BOUCLE_decl(DECLINAISONS){id_declinaison}{statut ?}{par num titre,titre}>
    5        <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox declinaison" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
     5       <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox evenement declinaison" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
    66       <label for="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]">#TITRE[ : <strong data-prix="#ID_PRIX_OBJET">(#GET{prix})</strong>]</label>
    77
     
    1010</B_decl>
    1111    <div class="choix">
    12       <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
     12      <input type="checkbox" name="id_objet_prix[#ID_EVENEMENT]" class="checkbox evenement declinaison" id="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]" value="#ID_PRIX_OBJET"[(#ID_PRIX_OBJET|in_array{#ENV{id_objet_prix}}|oui) checked="checked"]/>
    1313      <label for="id_objet_prix[_(#ID_EVENEMENT)][_(#ID_PRIX_OBJET)]">
    1414       [ <strong data-prix="#ID_PRIX_OBJET">(#GET{prix})</strong>]
  • _plugins_/reservation_evenement/trunk/formulaires/reservation.php

    r89777 r89847  
    11<?php
    22/**
    3  * Plugin Agenda 4 pour Spip 3.0
    4  * Licence GPL 3
     3 * Le Formulaire réservation
    54 *
    6  * 2006-2014
    7  * Auteurs : cf paquet.xml
     5 * @plugin     Réservation Événements
     6 * @copyright  2013
     7 * @author     Rainer Müller
     8 * @licence    GNU/GPL
     9 * @package    SPIP\Reservation_evenement\Formulaires
    810 */
    911
    1012if (!defined("_ECRIRE_INC_VERSION"))
    11         return;
     13  return;
    1214
    1315include_spip('inc/actions');
    1416include_spip('inc/editer');
    1517
    16 function formulaires_reservation_charger_dist($id = '', $id_article = '', $retour='') {
    17         include_spip('inc/config');
    18         include_spip('formulaires/selecteur/generique_fonctions');
    19 
    20         //Si l'affichage n'est pas déjà définie on établit si une zone s'applique
    21         if (!$id_article AND !$id) {
    22                 include_spip('inc/reservation_evenements');
    23 
    24                 $config = lire_config('reservation_evenement/rubrique_reservation');
    25                 $rubrique_reservation = picker_selected($config, 'rubrique');
    26                 $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
    27                         'tableau' => 'oui',
    28                         'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
    29                         'select' => '*',
    30                         'resultat' => 'par_id'
    31                 ));
    32 
    33         }
    34 
    35         if (!is_array($zone)) {
    36                 $where = array('date_fin>NOW() AND inscription=1 AND statut="publie"');
    37                 if ($id) {
    38                         if (!is_array($id))
    39                                 array_push($where, 'id_evenement_source =' . intval($id));
    40                         elseif (is_array($id))
    41                                 array_push($where, 'id_evenement_source IN (' . implode(',', $id) . ')');
    42                 }
    43                 if ($id_article) {
    44                         if (!is_array($id_article))
    45                                 array_push($where, 'id_article=' . intval($id_article));
    46                         elseif (is_array($id_article))
    47                                 array_push($where, 'id_article IN (' . implode(',', $id_article) . ')');
    48                 }
    49 
    50                 $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
    51 
    52                 $evenements = array();
    53                 $articles = array();
    54                 while ($row = sql_fetch($sql)) {
    55                         $evenements[$row['id_evenement']] = $row;
    56                         $articles[] = $row['id_article'];
    57                 }
    58         } else {
    59                 $evenements = $zone;
    60         }
    61 
    62         $valeurs = array(
    63                 'evenements' => $evenements,
    64                 'articles' => $evenements,
    65                 'lang' => $GLOBALS['spip_lang']
    66         );
    67 
    68         if (intval($GLOBALS['visiteur_session'])) {
    69                 $session = $GLOBALS['visiteur_session'];
    70                 $nom = $session['nom'];
    71                 $email = $session['email'];
    72 
    73         }
    74 
    75         // valeurs d'initialisation
    76         $valeurs['id_evenement'] = _request('id_evenement') ? (is_array(_request('id_evenement')) ? _request('id_evenement') : array(_request('id_evenement'))) : array();
    77 
    78         $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(_request('id_objet_prix'))) : array();
    79 
    80         $valeurs['nom'] = $nom;
    81         $valeurs['email'] = $email;
    82         $valeurs['enregistrer'] = _request('enregistrer');
    83         $valeurs['new_pass'] = _request('new_pass');
    84         $valeurs['new_pass2'] = _request('new_pass2');
    85         $valeurs['new_login'] = _request('new_login');
    86         $valeurs['statut'] = 'encours';
    87         $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
    88 
    89         //les champs extras auteur
    90         include_spip('cextras_pipelines');
    91 
    92         if (function_exists('champs_extras_objet')) {
    93                 //Charger les définitions pour la création des formulaires
    94                 $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
    95                 foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
    96                         $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
    97                         $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
    98 
    99                 }
    100         }
    101 
    102         $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
    103         $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
    104         $valeurs['_hidden'] .= '<input type="hidden" name="quantite" value="' . $valeurs['quantite'] . '"/>';
    105 
    106         return $valeurs;
     18function formulaires_reservation_charger_dist($id = '', $id_article = '', $retour = '') {
     19  include_spip('inc/config');
     20  include_spip('formulaires/selecteur/generique_fonctions');
     21
     22  //Si l'affichage n'est pas déjà définie on établit si une zone s'applique
     23  if (!$id_article AND !$id) {
     24    include_spip('inc/reservation_evenements');
     25
     26    $config = lire_config('reservation_evenement/rubrique_reservation');
     27    $rubrique_reservation = picker_selected($config, 'rubrique');
     28    $zone = rubrique_reservation('', 'evenement', $rubrique_reservation, array(
     29      'tableau' => 'oui',
     30      'where' => 'e.date_fin>NOW() AND e.inscription=1 AND e.statut="publie"',
     31      'select' => '*',
     32      'resultat' => 'par_id'
     33    ));
     34
     35  }
     36
     37  if (!is_array($zone)) {
     38    $where = array('date_fin>NOW() AND inscription=1 AND statut="publie"');
     39    if ($id) {
     40      $id_evenement_source = sql_getfetsel('id_evenement_source','spip_evenements','id_evenement=' . $id);
     41      if (!is_array($id)){
     42        if ($id_evenement_source == 0)
     43          $where[] = 'id_evenement=' . intval($id);
     44        else $where[] = 'id_evenement_source=' . intval($id);
     45      }
     46      elseif (is_array($id)){
     47        if ($id_evenement_source == 0)
     48          $where[] = 'id_evenement IN (' . implode(',', $id) . ')';
     49        else
     50          $where[] = 'id_evenement_source IN (' . implode(',', $id) . ')';
     51      }
     52    }
     53    if ($id_article) {
     54      if (!is_array($id_article))
     55        array_push($where, 'id_article=' . intval($id_article));
     56      elseif (is_array($id_article))
     57        array_push($where, 'id_article IN (' . implode(',', $id_article) . ')');
     58    }
     59
     60    $sql = sql_select('*', 'spip_evenements', $where, '', 'date_debut,date_fin');
     61
     62    $evenements = array();
     63    $articles = array();
     64    while ($row = sql_fetch($sql)) {
     65      $evenements[$row['id_evenement']] = $row;
     66      $articles[] = $row['id_article'];
     67    }
     68  }
     69  else {
     70    $evenements = $zone;
     71  }
     72
     73  $valeurs = array(
     74    'evenements' => $evenements,
     75    'articles' => $evenements,
     76    'lang' => $GLOBALS['spip_lang']
     77  );
     78
     79  if (intval($GLOBALS['visiteur_session'])) {
     80    $session = $GLOBALS['visiteur_session'];
     81    $nom = $session['nom'];
     82    $email = $session['email'];
     83
     84  }
     85
     86  // valeurs d'initialisation
     87  $valeurs['id_evenement'] = _request('id_evenement') ? (is_array(_request('id_evenement')) ? _request('id_evenement') : array(_request('id_evenement'))) : array();
     88
     89  $valeurs['id_objet_prix'] = _request('id_objet_prix') ? (is_array(_request('id_objet_prix')) ? _request('id_objet_prix') : array(_request('id_objet_prix'))) : array();
     90
     91  $valeurs['nom'] = $nom;
     92  $valeurs['email'] = $email;
     93  $valeurs['enregistrer'] = _request('enregistrer');
     94  $valeurs['new_pass'] = _request('new_pass');
     95  $valeurs['new_pass2'] = _request('new_pass2');
     96  $valeurs['new_login'] = _request('new_login');
     97  $valeurs['statut'] = 'encours';
     98  $valeurs['quantite'] = _request('quantite') ? _request('quantite') : 1;
     99
     100  //les champs extras auteur
     101  include_spip('cextras_pipelines');
     102
     103  if (function_exists('champs_extras_objet')) {
     104    //Charger les définitions pour la création des formulaires
     105    $valeurs['champs_extras_auteurs'] = champs_extras_objet(table_objet_sql('auteur'));
     106    foreach ($valeurs['champs_extras_auteurs'] as $key => $value) {
     107      $valeurs[$value['options']['nom']] = $session[$value['options']['nom']];
     108      $valeurs['champs_extras_auteurs'][$key]['options']['label'] = extraire_multi($value['options']['label']);
     109
     110    }
     111  }
     112
     113  $valeurs['_hidden'] .= '<input type="hidden" name="statut" value="' . $valeurs['statut'] . '"/>';
     114  $valeurs['_hidden'] .= '<input type="hidden" name="lang" value="' . $valeurs['lang'] . '"/>';
     115
     116  return $valeurs;
    107117}
    108118
    109 function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour='') {
    110         $erreurs = array();
    111         $email = _request('email');
    112         $id_auteur = '';
    113 
    114         if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
    115                 $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    116         }
    117 
    118         if (_request('enregistrer')) {
    119                 include_spip('inc/auth');
    120                 $obligatoires = array(
    121                         'nom',
    122                         'email',
    123                         'new_pass',
    124                         'new_login'
    125                 );
    126                 foreach ($obligatoires AS $champ) {
    127                         if (!_request($champ))
    128                                 $erreurs[$champ] = _T("info_obligatoire");
    129                 }
    130                 //Vérifier le login
    131                 if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
    132                         $erreurs['new_login'] = $err;
    133                         $erreurs['message_erreur'] .= $err;
    134                 }
    135 
    136                 //Vérifier les mp
    137                 if ($p = _request('new_pass')) {
    138                         if ($p != _request('new_pass2')) {
    139                                 $erreurs['new_pass'] = _T('info_passes_identiques');
    140                                 $erreurs['message_erreur'] .= _T('info_passes_identiques');
    141                         } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
    142                                 $erreurs['new_pass'] = $err;
    143                         }
    144                 }
    145         } else {
    146                 $obligatoires = array(
    147                         'nom',
    148                         'email'
    149                 );
    150 
    151                 if (test_plugin_actif('declinaisons'))
    152                         array_push($obligatoires, 'id_objet_prix');
    153                 else
    154                         array_push($obligatoires, 'id_evenement');
    155 
    156                 foreach ($obligatoires AS $champ) {
    157                         if (!_request($champ))
    158                                 $erreurs[$champ] = _T("info_obligatoire");
    159                 }
    160         }
    161 
    162         if ($email) {
    163                 include_spip('inc/filtres');
    164                 // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
    165                 if (!email_valide($email)) {
    166                         $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
    167                 } elseif (!$id_auteur) {
    168                         if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
    169                                 $erreurs['email'] = _T('reservation:erreur_email_utilise');
    170                 }
    171         }
    172 
    173         //les champs extras auteur
    174         include_spip('cextras_pipelines');
    175 
    176         if (function_exists('champs_extras_objet')) {
    177                 include_spip('inc/saisies');
    178                 //Charger les définitions
    179                 $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
    180                 $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
    181         }
    182         if (count($erreurs) AND !isset($erreurs['message_erreur']))
    183                 $erreurs['message_erreur'] = _T('reservation:message_erreur');
    184         return $erreurs;
     119function formulaires_reservation_verifier_dist($id = '', $id_article = '', $retour = '') {
     120  $erreurs = array();
     121  $email = _request('email');
     122  $id_auteur = '';
     123
     124  if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
     125    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
     126  }
     127
     128  if (_request('enregistrer')) {
     129    include_spip('inc/auth');
     130    $obligatoires = array(
     131      'nom',
     132      'email',
     133      'new_pass',
     134      'new_login'
     135    );
     136    foreach ($obligatoires AS $champ) {
     137      if (!_request($champ))
     138        $erreurs[$champ] = _T("info_obligatoire");
     139    }
     140    //Vérifier le login
     141    if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
     142      $erreurs['new_login'] = $err;
     143      $erreurs['message_erreur'] .= $err;
     144    }
     145
     146    //Vérifier les mp
     147    if ($p = _request('new_pass')) {
     148      if ($p != _request('new_pass2')) {
     149        $erreurs['new_pass'] = _T('info_passes_identiques');
     150        $erreurs['message_erreur'] .= _T('info_passes_identiques');
     151      }
     152      elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
     153        $erreurs['new_pass'] = $err;
     154      }
     155    }
     156  }
     157  else {
     158    $obligatoires = array(
     159      'nom',
     160      'email'
     161    );
     162
     163    if (test_plugin_actif('declinaisons'))
     164      array_push($obligatoires, 'id_objet_prix');
     165    else
     166      array_push($obligatoires, 'id_evenement');
     167
     168    foreach ($obligatoires AS $champ) {
     169      if (!_request($champ))
     170        $erreurs[$champ] = _T("info_obligatoire");
     171    }
     172  }
     173
     174  if ($email) {
     175    include_spip('inc/filtres');
     176    // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
     177    if (!email_valide($email)) {
     178      $erreurs['email'] = $id_auteur ? _T('form_email_non_valide') : _T('form_prop_indiquer_email');
     179    }
     180    elseif (!$id_auteur) {
     181      if ($email_utilise = sql_getfetsel('email', 'spip_auteurs', 'email=' . sql_quote($email)))
     182        $erreurs['email'] = _T('reservation:erreur_email_utilise');
     183    }
     184  }
     185
     186  //les champs extras auteur
     187  include_spip('cextras_pipelines');
     188
     189  if (function_exists('champs_extras_objet')) {
     190    include_spip('inc/saisies');
     191    //Charger les définitions
     192    $champs_extras_auteurs = champs_extras_objet(table_objet_sql('auteur'));
     193    $erreurs = array_merge($erreurs, saisies_verifier($champs_extras_auteurs));
     194  }
     195  if (count($erreurs) AND !isset($erreurs['message_erreur']))
     196    $erreurs['message_erreur'] = _T('reservation:message_erreur');
     197  return $erreurs;
    185198}
    186199
    187 function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour='') {
    188         if ($retour) {
    189                 refuser_traiter_formulaire_ajax();
    190         }
    191         $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
    192         if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
    193                 $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    194         }
    195 
    196         $retours = $enregistrer($id, $id_article, $id_auteur);
    197        
    198         // Si on demande une redirection
    199         if ($retour) $retours['redirect'] = $retour;
    200 
    201         return $retours;
     200function formulaires_reservation_traiter_dist($id = '', $id_article = '', $retour = '') {
     201  if ($retour) {
     202    refuser_traiter_formulaire_ajax();
     203  }
     204  $enregistrer = charger_fonction('reservation_enregistrer', 'inc');
     205  if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur'] > 0) {
     206    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
     207  }
     208
     209  $retours = $enregistrer($id, $id_article, $id_auteur);
     210
     211  // Si on demande une redirection
     212  if ($retour)
     213    $retours['redirect'] = $retour;
     214
     215  return $retours;
    202216}
    203217?>
  • _plugins_/reservation_evenement/trunk/inc/donnees_reservations_details.php

    r88302 r89847  
    11<?php
    2 if (!defined('_ECRIRE_INC_VERSION')) return;
     2if (!defined('_ECRIRE_INC_VERSION'))
     3  return;
    34
    4 function inc_donnees_reservations_details_dist($id_reservations_detail,$set) {
    5                        
    6         if(count($set)>0){
    7                 include_spip('inc/filtres');
    8                 $reservations_details=sql_fetsel('*','spip_reservations_details','id_reservations_detail='.$id_reservations_detail);
     5function inc_donnees_reservations_details_dist($id_reservations_detail, $set) {
    96
    10                 $id_evenement=isset($set['id_evenement'])?$set['id_evenement']:$reservations_details['id_evenement'];   
    11                 // Les données de l'évènenement
     7  if (count($set) > 0) {
     8    include_spip('inc/filtres');
     9    $reservations_details = sql_fetsel('*', 'spip_reservations_details', 'id_reservations_detail=' . $id_reservations_detail);
    1210
    13                 $evenement=sql_fetsel('*','spip_evenements','id_evenement='.$id_evenement);
    14                
    15                 $date_debut=$evenement['date_debut'];
    16                 if(!$date_fin=sql_getfetsel('date_fin','spip_evenements','id_evenement_source='.$id_evenement,'','date_debut DESC'))$date_fin=$evenement['date_fin'];
     11    $id_evenement = isset($set['id_evenement']) ? $set['id_evenement'] : $reservations_details['id_evenement'];
     12    // Les données de l'évènenement
    1713
    18                 // On établit les dates         
    19                 if($date_debut!=$date_fin){
    20                         if(affdate($date_debut,'d-m-Y')==affdate($date_fin,'d-m-Y')){
    21                                 $date=affdate($date_debut,'d/m/Y').','.affdate($date_debut,'G:i').'-'.affdate($date_fin,'G:i');
    22                         }
    23                         else {
    24                                 $date=affdate($date_debut,'d/m/Y').'-'.affdate($date_fin,'d/m/Y').', '.affdate($date_debut,'nom_jour').' '.affdate($date_debut,'G:i').'-'.affdate($date_fin,'G:i');
    25                                
    26                         }
    27                 }
    28                 else{
    29                         if(affdate($date_debut,'G:i')=='0:00')$date=affdate($date_debut,'d/m/Y');
    30                         else $datte=affdate($date_debut,'d/m/Y G:i');
    31                 }
    32                 // Les descriptif
    33                 $set['descriptif']=supprimer_numero($evenement['titre']).'  ('.$date.')';
    34                 if(intval($evenement['places']))$set['places']=$evenement['places'];
    35                 $set['quantite']=_request('quantite');
    36                 if(is_array($set['quantite']) and isset($set['quantite'][$id_evenement]))$set['quantite']=$set['quantite'][$id_evenement];
     14    $evenement = sql_fetsel('*', 'spip_evenements', 'id_evenement=' . $id_evenement);
    3715
    38                 // Si le prix n'est pas fournit, on essaye de le trouver
     16    $date_debut = $evenement['date_debut'];
     17    if (!$date_fin = sql_getfetsel('date_fin', 'spip_evenements', 'id_evenement_source=' . $id_evenement, '', 'date_debut DESC'))
     18      $date_fin = $evenement['date_fin'];
    3919
    40                 if(!isset($set['prix']) AND !isset($set['prix_ht'])){
    41                        
    42                         /*Existence d'un prix via le plugin Prix  Objets http://plugins.spip.net/prix_objets.html */
    43                         if($prix_objets=test_plugin_actif('prix_objets')){
    44                                 $fonction_prix = charger_fonction('prix', 'inc/');
    45                                 $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
    46                                  /*si le plugin déclinaison produit (http://plugins.spip.net/declinaisons.html) est active il peut y avoir plusieurs prix par évenement*/
    47                                 if(test_plugin_actif('declinaisons')){ 
    48                                         $id_prix=isset($set['id_prix_objet'])?$set['id_prix_objet']:$reservations_details['id_prix_objet'];     
    49                                         $p=sql_fetsel('prix_ht,id_prix_objet,id_declinaison','spip_prix_objets','id_prix_objet='.$id_prix);
    50                                        
    51                                         if($p['id_declinaison']>0)$set['descriptif'].=' - '.supprimer_numero(sql_getfetsel('titre','spip_declinaisons','id_declinaison='.$p['id_declinaison']));
    52                                 }
    53                                 //Sinon on cherche d'abord le prix attaché à l'évenement, puis à l'article de l'évenement
    54                                 elseif (!$p=sql_fetsel('prix_ht,id_prix_objet','spip_prix_objets','objet="evenement" AND id_objet='.$id_evenement)) $p=sql_fetsel('prix_ht,id_prix_objet','spip_prix_objets','objet="article" AND id_objet='.$evenement['id_article']);
    55                                 if(isset($p)){
    56                                         $prix_ht = $fonction_prix_ht('prix_objet', $p['id_prix_objet']);
    57                                         $prix = $fonction_prix('prix_objet',$p['id_prix_objet']);
    58                                         if($prix_ht)$taxe = round(($prix - $prix_ht) / $prix_ht, 3);
    59                                         $set['prix_ht']=$prix_ht;
    60                                         $set['taxe']=$taxe; 
    61                                         $set['id_prix_objet']=$p['id_prix_objet'];     
    62                                 }                       
    63                         }
    64                         /*Sinon si il y un prix attaché à l'évenement*/
    65                         elseif(intval($evenement['prix']) OR intval($evenement['prix_ht']))
    66                                 $set=etablir_prix($id_evenement,'evenement',$evenement,$set);   
    67                         elseif($article=sql_fetsel('*','spip_articles','id_article='.$evenement['id_article']))
    68                                 $set=etablir_prix($evenement['id_article'],'article',$article,$set);
    69                 }
    70         }
    71         return $set;
     20    // On établit les dates
     21    if ($date_debut != $date_fin) {
     22      if (affdate($date_debut, 'd-m-Y') == affdate($date_fin, 'd-m-Y')) {
     23        $date = affdate($date_debut, 'd/m/Y') . ',' . affdate($date_debut, 'G:i') . '-' . affdate($date_fin, 'G:i');
     24      }
     25      else {
     26        $date = affdate($date_debut, 'd/m/Y') . '-' . affdate($date_fin, 'd/m/Y') . ', ' . affdate($date_debut, 'nom_jour') . ' ' . affdate($date_debut, 'G:i') . '-' . affdate($date_fin, 'G:i');
     27
     28      }
     29    }
     30    else {
     31      if (affdate($date_debut, 'G:i') == '0:00')
     32        $date = affdate($date_debut, 'd/m/Y');
     33      else
     34        $datte = affdate($date_debut, 'd/m/Y G:i');
     35    }
     36
     37    // Les descriptif
     38    $set['descriptif'] = supprimer_numero($evenement['titre']) . '  (' . $date . ')';
     39    if (intval($evenement['places']))
     40      $set['places'] = $evenement['places'];
     41    $set['quantite'] = _request('quantite');
     42    if (is_array($set['quantite']) and isset($set['quantite'][$id_evenement]) )
     43      $set['quantite'] = ($set['quantite'][$id_evenement] > 0) ? $set['quantite'][$id_evenement] : 1;
     44
     45    $quantite = $set['quantite'];
     46
     47    // Si le prix n'est pas fournit, on essaye de le trouver
     48
     49    if (!isset($set['prix']) AND !isset($set['prix_ht'])) {
     50
     51      /*Existence d'un prix via le plugin Prix  Objets http://plugins.spip.net/prix_objets.html */
     52      if ($prix_objets = test_plugin_actif('prix_objets')) {
     53        $fonction_prix = charger_fonction('prix', 'inc/');
     54        $fonction_prix_ht = charger_fonction('ht', 'inc/prix');
     55
     56        /*si le plugin déclinaison produit (http://plugins.spip.net/declinaisons.html) est active il peut y avoir plusieurs prix par évenement*/
     57        if (test_plugin_actif('declinaisons')) {
     58          $id_prix = isset($set['id_prix_objet']) ? $set['id_prix_objet'] : $reservations_details['id_prix_objet'];
     59          $p = sql_fetsel('prix_ht,id_prix_objet,id_declinaison', 'spip_prix_objets', 'id_prix_objet=' . $id_prix);
     60
     61          if ($p['id_declinaison'] > 0)
     62            $set['descriptif'] .= ' - ' . supprimer_numero(sql_getfetsel('titre', 'spip_declinaisons', 'id_declinaison=' . $p['id_declinaison']));
     63        }
     64
     65        //Sinon on cherche d'abord le prix attaché à l'évenement, puis à l'article de l'évenement
     66        elseif (!$p = sql_fetsel('prix_ht,id_prix_objet', 'spip_prix_objets', 'objet="evenement" AND id_objet=' . $id_evenement))
     67          $p = sql_fetsel('prix_ht,id_prix_objet', 'spip_prix_objets', 'objet="article" AND id_objet=' . $evenement['id_article']);
     68        if (isset($p)) {
     69          $prix_ht = $quantite * $fonction_prix_ht('prix_objet', $p['id_prix_objet']);
     70          $prix = $quantite * $fonction_prix('prix_objet', $p['id_prix_objet']);
     71          if ($prix_ht)
     72            $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
     73          $set['prix_ht'] = $prix_ht;
     74          $set['taxe'] = $taxe;
     75          $set['id_prix_objet'] = $p['id_prix_objet'];
     76        }
     77      }
     78
     79      /*Sinon si il y un prix attaché à l'évenement*/
     80      elseif (intval($evenement['prix']) OR intval($evenement['prix_ht']))
     81        $set = etablir_prix($id_evenement, 'evenement', $evenement, $set, $quantite);
     82      elseif ($article = sql_fetsel('*', 'spip_articles', 'id_article=' . $evenement['id_article']))
     83        $set = etablir_prix($evenement['id_article'], 'article', $article, $set, $quantite);
     84    }
     85  }
     86  return $set;
    7287}
    7388
    74 function etablir_prix($id,$objet,$datas,$set){
    75         if($fonction_prix = charger_fonction('prix', 'inc/',true)){
    76                 $prix = $fonction_prix($objet,$id);
    77         }
    78         else $prix=$datas['prix'];
    79        
    80         if($fonction_prix_ht = charger_fonction('ht', 'inc/prix',true)){
    81                 $prix_ht = $fonction_prix_ht($objet, $id);
    82         }
    83         elseif(intval($datas['prix_ht'])) $prix_ht =$datas['prix_ht'];
    84        
    85         if($prix_ht){
    86                 $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
    87                 $set['prix_ht']=$prix_ht;
    88                 $set['taxe']=$taxe;     
    89         }
    90         else $set['prix']=$prix;
    91        
    92         return  $set;
     89function etablir_prix($id, $objet, $datas, $set, $quantite) {
     90  if ($fonction_prix = charger_fonction('prix', 'inc/', true)) {
     91    $prix = $fonction_prix($objet, $id);
     92  }
     93  else
     94    $prix = $datas['prix'];
     95
     96  if ($fonction_prix_ht = charger_fonction('ht', 'inc/prix', true)) {
     97    $prix_ht = $fonction_prix_ht($objet, $id);
     98  }
     99  elseif (intval($datas['prix_ht']))
     100    $prix_ht = $datas['prix_ht'];
     101
     102  if ($prix_ht) {
     103    $prix = $quantite * $prix;
     104    $prix_ht = $quantite * $prix_ht;
     105    $taxe = round(($prix - $prix_ht) / $prix_ht, 3);
     106    $set['prix_ht'] = $prix_ht;
     107    $set['taxe'] = $taxe;
     108  }
     109  else
     110    $set['prix'] = $quantite * $prix;
     111
     112  return $set;
    93113}
  • _plugins_/reservation_evenement/trunk/inc/reservation_enregistrer.php

    r89538 r89847  
    33// Sécurité
    44if (!defined('_ECRIRE_INC_VERSION'))
    5         return;
     5  return;
    66
    77//Enregistrement d'une réservation
    88function inc_reservation_enregistrer_dist($id = '', $id_article = '', $id_auteur = '', $champs_extras_auteurs = '') {
    9         include_spip('inc/config');
    10         include_spip('inc/session');
    11         $config = lire_config('reservation_evenement');
    12         $statut = $config['statut_defaut'] ? $config['statut_defaut'] : 'rien';
    13         if ($statut == 'rien') {
    14                 $statut_defaut = charger_fonction('defaut', 'inc/statuts');
    15                 $statut = $statut_defaut($statut);
    16         }
     9  include_spip('inc/config');
     10  include_spip('inc/session');
     11  $config = lire_config('reservation_evenement');
     12  $statut = $config['statut_defaut'] ? $config['statut_defaut'] : 'rien';
     13  if ($statut == 'rien') {
     14    $statut_defaut = charger_fonction('defaut', 'inc/statuts');
     15    $statut = $statut_defaut($statut);
     16  }
    1717
    18         //Créer la réservation
    19         $action = charger_fonction('editer_objet', 'action');
     18  //Créer la réservation
     19  $action = charger_fonction('editer_objet', 'action');
    2020
    21         // La référence
    22         $fonction_reference = charger_fonction('reservation_reference', 'inc/');
     21  // La référence
     22  $fonction_reference = charger_fonction('reservation_reference', 'inc/');
    2323
    24         $set = array(
    25                 'statut' => $statut,
    26                 'lang' => _request('lang')
    27         );
     24  $set = array(
     25    'statut' => $statut,
     26    'lang' => _request('lang')
     27  );
    2828
    29         //les champs extras auteur
    30         include_spip('cextras_pipelines');
    31         $valeurs_extras = array();
     29  //les champs extras auteur
     30  include_spip('cextras_pipelines');
     31  $valeurs_extras = array();
    3232
    33         if (_request('enregistrer')) {
    34                 include_spip('actions/editer_auteur');
     33  if (_request('enregistrer')) {
     34    include_spip('actions/editer_auteur');
    3535
    36                 if (!$id_auteur) {
    37                         include_spip('inc/auth');
    38                         $res = formulaires_editer_objet_traiter('auteur', 'new', '', '', $retour, $config_fonc, $row, $hidden);
    39                         $id_auteur = $res['id_auteur'];
    40                         sql_updateq('spip_auteurs', array('statut' => '6forum'), 'id_auteur=' . $id_auteur);
    41                         $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $id_auteur) ;           
    42             auth_loger($auteur);
    43                 }
    44                 $set['reference'] = $fonction_reference($id_auteur);
    45         } elseif (!intval($id_auteur)) {
    46                 $set['nom'] = _request('nom');
    47                 $set['email'] = _request('email');
    48                 //$set['donnees_auteur']=serialize( $valeurs_extras);
    49         } else {
    50                 $valeurs = array_merge(array(
    51                         'nom' => _request('nom'),
    52                         'email' => _request('email')
    53                 ), $valeurs_extras);
    54                 sql_updateq('spip_auteurs', $valeurs, 'id_auteur=' . $id_auteur);
    55         }
    56         $set['reference'] = $fonction_reference();
    57         $set['id_auteur'] = $id_auteur;
     36    if (!$id_auteur) {
     37      include_spip('inc/auth');
     38      $res = formulaires_editer_objet_traiter('auteur', 'new', '', '', $retour, $config_fonc, $row, $hidden);
     39      $id_auteur = $res['id_auteur'];
     40      sql_updateq('spip_auteurs', array('statut' => '6forum'), 'id_auteur=' . $id_auteur);
     41      $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . $id_auteur);
     42      auth_loger($auteur);
     43    }
     44    $set['reference'] = $fonction_reference($id_auteur);
     45  }
     46  elseif (!intval($id_auteur)) {
     47    $set['nom'] = _request('nom');
     48    $set['email'] = _request('email');
     49    //$set['donnees_auteur']=serialize( $valeurs_extras);
     50  }
     51  else {
     52    $valeurs = array_merge(array(
     53      'nom' => _request('nom'),
     54      'email' => _request('email')
     55    ), $valeurs_extras);
     56    sql_updateq('spip_auteurs', $valeurs, 'id_auteur=' . $id_auteur);
     57  }
     58  $set['reference'] = $fonction_reference();
     59  $set['id_auteur'] = $id_auteur;
    5860
    59         $id_reservation = $action('new', 'reservation', $set);
    60        
    61         // On ajoute l'id à la session
    62         session_set('id_reservation', $id_reservation);
    63        
    64         $message = '<p>' . _T('reservation:reservation_enregistre') . '</p>';
    65         $message .= '<h3>' . _T('reservation:details_reservation') . '</h3>';
    66         $message .= recuperer_fond('inclure/reservation', array('id_reservation' => $id_reservation[0]));
     61  $id_reservation = $action('new', 'reservation', $set);
    6762
    68         //Ivalider les caches
    69         include_spip('inc/invalideur');
    70         suivre_invalideur("id='reservation/$id_reservation'");
    71         suivre_invalideur("id='reservations_detail/$id_reservations_detail'");
    72         return array(
    73                 'message_ok' => $message,
    74                 'editable' => false
    75         );
     63  // On ajoute l'id à la session
     64  session_set('id_reservation', $id_reservation);
     65
     66  $message = '<p>' . _T('reservation:reservation_enregistre') . '</p>';
     67  $message .= '<h3>' . _T('reservation:details_reservation') . '</h3>';
     68  $message .= recuperer_fond('inclure/reservation', array('id_reservation' => $id_reservation[0]));
     69
     70  //Ivalider les caches
     71  include_spip('inc/invalideur');
     72  suivre_invalideur("id='reservation/$id_reservation'");
     73  suivre_invalideur("id='reservations_detail/$id_reservations_detail'");
     74  return array(
     75    'message_ok' => $message,
     76    'editable' => false
     77  );
    7678}
  • _plugins_/reservation_evenement/trunk/inclure/reservation.html

    r88264 r89847  
    99                quantite, #QUANTITE,
    1010                prix, #PRIX*,
    11                 statut,#STATUT         
     11                statut,#STATUT
    1212        })]})]
    1313         [(#SET{total,[(#GET{total}|plus{#PRIX*})]})]
     
    3333               <th class="description"><:reservation:designation:></th>
    3434               [(#GET{total}|>{0}|oui)<th class="montant"><:reservation:montant:></th>]
    35                <th class="statut"><:reservation:label_statut:></th>               
     35               <th class="statut"><:reservation:label_statut:></th>
    3636            </tr>
    3737         </thead>
     
    4343               <td class="statut">
    4444                   [(#VAL{reservation:texte_statut[_(#VALEUR{statut}|trim)]}|_T)]
    45                    </td>               
     45                   </td>
    4646            </tr>
    4747            </BOUCLE_details>
    4848         </tbody>
    49          [<tfoot>
     49         [(#GET{total}|>{0}|oui)<tfoot>
    5050            <tr class="total_ttc">
    5151               <td class="descriptif">[(#PLUGIN{prix}|?{<:prix:label_total_ttc:>,<:reservation:total:>})]</td>
    52                <td class="montant">(#GET{total}|appliquer_filtre{prix_formater,#GET{total}|})</td>
     52               <td class="montant">[(#GET{total}|appliquer_filtre{prix_formater,#GET{total}|})]</td>
    5353            </tr>
    5454         </tfoot>]
  • _plugins_/reservation_evenement/trunk/lang/reservation_fr.php

    r89273 r89847  
    2828        'evenement_cloture' => 'Évenement clôturé',
    2929        'explication_client' => 'Choissisez un client parmis les auteurs ou saisissez les données du client ci-bas',
    30         'explication_envoi_separe' => 'Le changement de statut d’un Détail de Réservation vers 
     30        'explication_envoi_separe' => 'Le changement de statut d’un Détail de Réservation vers
    3131    <div><b>"@statuts@"</b></div> provoquera l’envoi d’une notification !',
    3232        'explication_envoi_separe_detail' => 'Le changement de statut vers <div><strong>"@statuts@"</strong></div> provoquera l’envoi d’une notification !',
     
    4545        'info_reservations_auteur' => 'Les réservations de cet auteur',
    4646        'info_voir_reservations_poubelle' => 'Voir les Résevations mises à la poubelle',
     47        'inscription' => 'Inscription',
     48        'inscrire' => 'S\'inscrire',
    4749        'inscrire_liste_attente' => 'Choissisez un autre cours ou inscrivez vous dans la liste d’attente.',
    4850
  • _plugins_/reservation_evenement/trunk/paquet.xml

    r89832 r89847  
    22prefix="reservation_evenement"
    33categorie="date"
    4 version="1.18.6"
     4version="1.19.0"
    55etat="test"
    66compatibilite="[3.0.16;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.