gestion des evenements pour xnet
authorPascal Corpet <pascal.corpet@m4x.org>
Fri, 3 Jun 2005 09:08:37 +0000 (09:08 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:29:07 +0000 (23:29 +0200)
git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-677

ChangeLog
htdocs.net/groupe/annuaire.php
htdocs.net/groupe/evenements.php [new file with mode: 0644]
htdocs.net/groupe/evt-admin.php [new file with mode: 0644]
htdocs.net/groupe/evt-detail.php [new file with mode: 0644]
include/xnet/page.inc.php
templates/xnet/groupe/evenements.tpl [new file with mode: 0644]
templates/xnet/groupe/evt-admin.tpl [new file with mode: 0644]
templates/xnet/groupe/evt-detail.tpl [new file with mode: 0644]
templates/xnet/groupe/form_evenement.tpl [new file with mode: 0644]
upgrade/0.9.7/00_xnet.sql

index 0317146..4ba3c53 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,9 @@ New :
        * Search :
                - Nickname are used in fast search.                                                                     -Car
 
+       * Xnet :
+               - Events management.                                                                                            -Car
+
 Bug/Wish :
 
        * Core :
index adafedd..604fd5e 100644 (file)
@@ -62,9 +62,6 @@ $ann = $globals->xdb->iterator(
          ORDER BY  $tri
             LIMIT  {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE);
 
-$nb = $globals->xdb->query("SELECT  FOUND_ROWS()");
-$nb = $nb->fetchOneCell();
-
 
 $page->assign('ann', $ann);
 
diff --git a/htdocs.net/groupe/evenements.php b/htdocs.net/groupe/evenements.php
new file mode 100644 (file)
index 0000000..ee8f65a
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+require 'xnet.inc.php';
+
+new_group_page('xnet/groupe/evenements.tpl');
+
+$page->assign('logged', logged());
+$page->assign('admin', may_update());
+
+$moments = range(1, 4);
+$page->assign('moments', $moments);
+
+if ($eid = Env::get('eid')) {
+       $res = $globals->xdb->query("SELECT asso_id FROM groupex.evenements WHERE eid = {?}", $eid);
+       if ($res->fetchOneCell() != $globals->asso('id')) unset($eid);
+}
+
+if (may_update() && Post::get('intitule')) {
+       $globals->xdb->execute("REPLACE INTO groupex.evenements VALUES (
+               {?}, {?}, {?}, {?},
+               {?}, {?},
+               {?},
+               {?},
+               {?}, {?}, {?})",
+               $eid, $globals->asso('id'), Session::get('uid'), Post::get('intitule'),
+               NULL, Post::get('descriptif'),
+               Post::get('deb_Year')."-".Post::get('deb_Month')."-".Post::get('deb_Day')." ".Post::get('deb_Hour').":".Post::get('deb_Minute').":00",
+               Post::get('fin_Year')."-".Post::get('fin_Month')."-".Post::get('fin_Day')." ".Post::get('fin_Hour').":".Post::get('fin_Minute').":00",
+               Post::get('membres_only'), Post::get('advertise'), Post::get('show_participants'));
+
+       if (!$eid) {
+               $res = $globals->xdb->query("SELECT LAST_INSERT_ID()");
+               $eid = $res->fetchOneCell();
+       }
+
+       $nb_moments = 0;
+       foreach ($moments as $i) if (Post::get('titre'.$i)) {
+               $nb_moments++;
+               $globals->xdb->execute("
+               REPLACE INTO groupex.evenements_items VALUES (
+               {?}, {?},
+               {?}, {?}, {?})",
+               $eid, $i,
+               Post::get('titre'.$i), Post::get('details'.$i), strtr(Post::get('montant'.$i), ',', '.'));
+       } else {
+               $globals->xdb->execute("DELETE FROM groupex.evenements_items WHERE eid = {?} AND item_id = {?}", $eid, $i);
+       }
+       
+       // events with no sub-event
+       if ($nb_moments == 0)
+               $globals->xdb->execute("INSERT INTO groupex.evenements_items VALUES ({?}, {?}, '', '', 0)", $eid, 1);
+}
+
+if (may_update() && Env::has('sup') && $eid) {
+       $globals->xdb->execute("DELETE FROM groupex.evenements WHERE eid = {?} AND asso_id = {?}", $eid, $globals->asso('id'));
+
+       $globals->xdb->execute("DELETE FROM groupex.evenements_items WHERE eid = {?}", $eid);
+
+       $globals->xdb->execute("DELETE FROM groupex.evenements_participants WHERE eid = {?}", $eid);
+}
+
+if (may_update() && Env::has('add'))
+       $page->assign('get_form', true);
+
+if (may_update() && Env::has('mod') && $eid) {
+       $res = $globals->xdb->query(
+               "SELECT eid, intitule, descriptif, debut, fin, membres_only, advertise, show_participants
+                  FROM groupex.evenements
+                 WHERE eid = {?}", $eid);
+       $evt = $res->fetchOneAssoc();
+       $page->assign('evt', $evt);
+       
+       $res = $globals->xdb->iterator(
+               "SELECT item_id, titre, details, montant
+                  FROM groupex.evenements_items AS ei
+            INNER JOIN groupex.evenements AS e ON(e.eid = ei.eid)
+                 WHERE e.eid = {?}
+              ORDER BY item_id", $eid);
+       $items = array();
+       while ($item = $res->next()) $items[$item['item_id']] = $item;
+       $page->assign('items', $items);
+
+       $page->assign('get_form', true);
+} else {
+
+       $evenements = $globals->xdb->iterator(
+           "SELECT  e.eid, e.intitule, e.descriptif, e.debut, e.fin, e.show_participants, u.nom, u.prenom, u.promo, a.alias, MAX(ep.nb)>=1 AS inscrit
+             FROM  groupex.evenements AS e
+       INNER JOIN  x4dat.auth_user_md5 AS u ON u.user_id = e.organisateur_uid
+        LEFT JOIN  x4dat.aliases AS a ON (a.type = 'a_vie' AND a.id = u.user_id)
+        LEFT JOIN  groupex.evenements_participants AS ep ON (ep.eid = e.eid AND ep.uid = {?})
+            WHERE  asso_id = {?}
+         GROUP BY  e.eid
+         ORDER BY  debut",Session::get('uid'),$globals->asso('id'));
+
+       $page->assign('evenements', $evenements);
+
+       $page->assign('nb_evt', $evenements->total());
+}
+
+$page->run();
+
+?>
diff --git a/htdocs.net/groupe/evt-admin.php b/htdocs.net/groupe/evt-admin.php
new file mode 100644 (file)
index 0000000..848ceb8
--- /dev/null
@@ -0,0 +1,98 @@
+<?php
+require 'xnet.inc.php';
+
+define('NB_PER_PAGE', 25);
+
+$res = $globals->xdb->query(
+       "SELECT SUM(nb) AS nb_tot, e.intitule, ei.titre, e.show_participants
+          FROM groupex.evenements AS e
+     INNER JOIN        groupex.evenements_items AS ei ON (e.eid = ei.eid)
+      LEFT JOIN        groupex.evenements_participants AS ep ON(e.eid = ep.eid AND ei.item_id = ep.item_id)
+          WHERE        e.eid = {?} AND ei.item_id = {?} AND asso_id = {?}
+       GROUP BY e.eid",
+       Env::get('eid'), Env::getInt('item_id', 1), $globals->asso('id'));
+
+$evt = $res->fetchOneAssoc();
+if (!$evt['intitule'])
+       header("Location: evenements.php");
+
+if ($evt['show_participants'])
+       new_group_page('xnet/groupe/evt-admin.tpl');
+else
+       new_groupadmin_page('xnet/groupe/evt-admin.tpl');
+
+$page->assign('evt', $evt);
+$page->assign('url_page', Env::get('PHP_SELF')."?eid=".Env::get('eid')."&item_id=".Env::getInt('item_id', 1));
+$res = $globals->xdb->iterator(
+       "SELECT eid, item_id, titre
+          FROM groupex.evenements_items
+         WHERE eid = {?}",
+       Env::get('eid'));
+if ($res->total() > 1) $page->assign('moments', $res);
+
+$tri = (Env::get('order') == 'alpha' ? 'promo, nom, prenom' : 'nom, prenom, promo');
+$res = $globals->xdb->iterRow(
+            'SELECT  UPPER(SUBSTRING(IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), 1, 1)), COUNT(IF(m.origine="X",u.nom,m.nom))
+               FROM  groupex.evenements_participants AS ep
+        INNER JOIN  groupex.evenements AS e ON (ep.eid = e.eid)
+        INNER JOIN  groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
+          LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
+              WHERE  e.asso_id = {?} AND ep.eid = {?} AND ep.item_id = {?}
+           GROUP BY  UPPER(SUBSTRING(IF(m.origine="X",u.nom,m.nom), 1, 1))', $globals->asso('id'), Env::get('eid'), Env::getInt('moment', 1));
+
+$alphabet = array();
+$nb_tot = 0;
+while (list($char, $nb) = $res->next()) {
+    $alphabet[ord($char)] = $char;
+    $nb_tot += $nb;
+    if (Env::has('initiale') && $char == strtoupper(Env::get('initiale'))) {
+        $tot = $nb;
+    }
+}
+$page->assign('alphabet', $alphabet);
+
+$ofs   = Env::getInt('offset');
+$tot   = Env::get('initiale') ? $tot-1 : $nb_tot-1;
+$nbp   = intval(($tot-1)/NB_PER_PAGE);
+$links = array();
+if ($ofs) {
+    $links['précédent'] = $ofs-1;
+}
+for ($i = 0; $i <= $nbp; $i++) {
+    $links[(string)($i+1)] = $i;
+}
+if ($ofs < $nbp) {
+    $links['suivant'] = $ofs+1;
+}
+if (count($links)>1) {
+    $page->assign('links', $links);
+}
+
+$ini = Env::has('initiale') ? 'AND IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"' : '';
+$ann = $globals->xdb->iterator(
+          "SELECT  IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom,
+                   IF(m.origine='X',u.prenom,m.prenom) AS prenom,
+                   IF(m.origine='X',u.promo,'extérieur') AS promo,
+                   IF(m.origine='X',a.alias,m.email) AS email,
+                   IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme,
+                   m.perms='admin' AS admin,
+                   m.origine='X' AS x,
+                  ep.nb
+               FROM  groupex.evenements_participants AS ep
+        INNER JOIN  groupex.evenements AS e ON (ep.eid = e.eid)
+        INNER JOIN  groupex.membres AS m ON ( ep.uid = m.uid AND e.asso_id = m.asso_id)
+          LEFT JOIN  auth_user_md5   AS u ON ( u.user_id = m.uid )
+          LEFT JOIN  aliases         AS a ON ( a.id = m.uid AND a.type='a_vie' )
+              WHERE  e.asso_id = {?} AND ep.eid = {?} AND ep.item_id = {?} $ini
+          ORDER BY  $tri
+             LIMIT {?}, {?}",
+          $globals->asso('id'), Env::get('eid'), Env::getInt('item_id', 1),
+           $ofs*NB_PER_PAGE, NB_PER_PAGE);
+
+
+$page->assign('ann', $ann);
+
+$page->run();
+
+?>
diff --git a/htdocs.net/groupe/evt-detail.php b/htdocs.net/groupe/evt-detail.php
new file mode 100644 (file)
index 0000000..c6bdbbc
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+require 'xnet.inc.php';
+
+new_group_page('xnet/groupe/evt-detail.tpl');
+
+if (!Env::get("eid"))
+    header("Location: evenements.php");
+
+$may_participate = !$members_only || is_member() || may_update(); 
+$page->assign('may_participate', $may_participate);
+
+for ($i=1; Env::has('item_id'.$i); $i++) {
+       $j = Env::get('item_id'.$i);
+       $nb = Env::get('item_'.$j);
+       if ($nb == '+') $nb = Env::get('itemnb_'.$j)+1;
+       if ($nb > 0)
+               $globals->xdb->execute(
+       "REPLACE INTO groupex.evenements_participants
+              VALUES ({?}, {?}, {?}, {?})",
+              Env::get("eid"), Session::get("uid"), $j, $nb);
+       else
+               $globals->xdb->execute(
+       "DELETE FROM groupex.evenements_participants
+               WHERE eid = {?}, uid = {?}, item_id = {?}",
+              Env::get("eid"), Session::get("uid"), $j);               
+}
+
+// return to the main page after modifying
+if (Env::has("ins"))
+       header("Location: evenements.php");
+
+$res = $globals->xdb->query(
+        "SELECT  e.eid, a.nom, a.prenom, a.promo, intitule, descriptif, debut AS deb,
+                fin, membres_only
+          FROM  groupex.evenements AS e
+         INNER  JOIN x4dat.auth_user_md5 AS a ON a.user_id = e.organisateur_uid
+         WHERE  e.eid = {?}", Env::get("eid"));
+
+$evt = $res->fetchOneAssoc();
+$page->assign('evt', $evt);
+
+$moments = $globals->xdb->iterator(
+        "SELECT  titre, i.item_id, details, montant, nb
+          FROM  groupex.evenements_items AS i
+          LEFT  JOIN groupex.evenements_participants AS p
+                ON(i.eid = p.eid AND i.item_id = p.item_id AND uid = {?})
+         WHERE  i.eid = {?}",
+         Session::get('uid'), Env::get('eid'));
+
+$page->assign('moments', $moments);
+
+$page->run();
+
+?>
index 3d1eccc..bd37c69 100644 (file)
@@ -78,8 +78,8 @@ class XnetPage extends PlatalPage
             if ($globals->asso('mail_domain')) {
                 $sub['listes de diffusion'] = "$dim/listes.php";
             }
+            $sub['évenement'] = "$dim/evenements.php";
             if (false) {
-                $sub['evenement'] = "$dim/evenement.php";
                 $sub['carnet'] = "$dim/carnet.php";
             }
             $sub['telepaiement'] = "$dim/telepaiement.php";
diff --git a/templates/xnet/groupe/evenements.tpl b/templates/xnet/groupe/evenements.tpl
new file mode 100644 (file)
index 0000000..a01f4bd
--- /dev/null
@@ -0,0 +1,53 @@
+<h1>{$asso.nom} :
+{if ($smarty.request.add || $smarty.request.mod) && $admin}
+<a href='{$smarty.server.PHP_SELF}'>Evénements</a>
+{else}
+Evénements
+{/if}
+</h1>
+{if !$logged}
+<p class="descr">
+   Aucune manifestation publique n'a été saisie par ce groupe pour l'instant...
+</p>
+{elseif $get_form}
+    {include file='xnet/groupe/form_evenement.tpl'}
+{else}
+{if $admin}
+<p class="center">
+        <a href="{$marty.server.PHP_SELF}?add=1">Annoncer un nouvel événement</a>
+</p>
+{/if}
+
+{if $nb_evt eq 0}
+<p class="descr">
+       Aucun événement n'a été référencé par les animateurs du groupe.
+</p>
+{else}
+<ul class="decr">
+       {iterate from=$evenements item=e}
+       <li>{$e.intitule}
+       {if $admin || $e.show_participants}
+               <a href="evt-admin.php?eid={$e.eid}"><img src="{rel}/images/loupe.gif" title="Liste des participants" alt="Liste des participants" /></a>
+       {/if}
+       {if $admin}
+               <a href="{$smarty.session.PHP_SELF}?mod=1&eid={$e.eid}"><img src="{rel}/images/profil.png" title="Edition de l'événement" alt="Edition de l'événement" /></a>
+               <a href="{$smarty.session.PHP_SELF}?sup=1&eid={$e.eid}"><img src="{rel}/images/del.png" alt="Suppression de {$e.intitule}" title="Suppression de {$e.intitule}" /></a>
+       {/if}
+       <br />
+           &nbsp;&nbsp;&nbsp;&nbsp;date : {$e.debut}{if $e.fin} - {$e.fin}{/if}
+           <br />
+           &nbsp;&nbsp;&nbsp;&nbsp;annonceur : <a href='https://polytechnique.org/fiche.php?user={$e.alias}' target='new'>{$e.prenom} {$e.nom} ({$e.promo})</a>
+           <br />
+           <a href='evt-detail.php?eid={$e.eid}'><i>Détails...</i></a> 
+           {if $e.inscrit}
+               <small>tu es inscrit à cet événément !</small>
+           {else}
+               <small>pour l'instant, tu n'es pas inscrit à cet événément !</small>
+           {/if}
+       </li>
+       {/iterate}
+</ul>
+{/if}
+
+{/if}
+
diff --git a/templates/xnet/groupe/evt-admin.tpl b/templates/xnet/groupe/evt-admin.tpl
new file mode 100644 (file)
index 0000000..1737a38
--- /dev/null
@@ -0,0 +1,77 @@
+{**************************************************************************}
+{*                                                                        *}
+{*  Copyright (C) 2003-2004 Polytechnique.org                             *}
+{*  http://opensource.polytechnique.org/                                  *}
+{*                                                                        *}
+{*  This program is free software; you can redistribute it and/or modify  *}
+{*  it under the terms of the GNU General Public License as published by  *}
+{*  the Free Software Foundation; either version 2 of the License, or     *}
+{*  (at your option) any later version.                                   *}
+{*                                                                        *}
+{*  This program is distributed in the hope that it will be useful,       *}
+{*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *}
+{*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *}
+{*  GNU General Public License for more details.                          *}
+{*                                                                        *}
+{*  You should have received a copy of the GNU General Public License     *}
+{*  along with this program; if not, write to the Free Software           *}
+{*  Foundation, Inc.,                                                     *}
+{*  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA               *}
+{*                                                                        *}
+{**************************************************************************}
+
+<h1>{$asso.nom} : <a href='evenements.php'>Evénements</a> </h1>
+
+{if $moments}
+<p class="center">
+{iterate from=$moments item=m}
+[<a href="{$smarty.server.PHP_SELF}?eid={$m.eid}&item_id={$m.item_id}" {if $smarty.request.item_id eq $m.item_id || ($m.item_id eq 1 && !$smarty.request.item_id)}class="erreur"{/if}>{$m.titre}</a>]
+{/iterate}
+</p>
+{/if}
+
+<p class="descr">
+L'événement {$evt.intitule} {if $evt.titre} - {$evt.titre}{/if} comptera {$evt.nb_tot} personne{if $evt.nb_tot > 1}s{/if}.
+</p>
+
+<p class="center">
+[<a href="{$url_page}" {if !$smarty.request.initiale}class="erreur"{/if}>tout</a>]
+{foreach from=$alphabet item=c}
+[<a href="{$url_page}&initiale={$c}"{if $smarty.request.initiale eq $c} class="erreur"{/if}>{$c}</a>]
+{/foreach}
+</p>
+
+<table summary="participants a l'evenement" class="tiny">
+  <tr>
+    <th>Prénom NOM</th>
+    <th>Promo</th>
+    <th>Info</th>
+    <th>Nombre</th>
+  </tr>
+  {iterate from=$ann item=m}
+  <tr style="background:#d0c198;">
+    <td>{if $m.femme}&bull;{/if}{$m.prenom} {$m.nom}</td>
+    <td>{$m.promo}</td>
+    <td>
+      {if $m.x}
+      <a href="https://www.polytechnique.org/fiche.php?user={$m.email}"><img src="{rel}/images/loupe.gif" alt="[fiche]" /></a>
+      <a href="https://www.polytechnique.org/vcard.php/{$m.email}.vcf/?x={$m.email}"><img src="{rel}/images/vcard.png" alt="[vcard]" /></a>
+      <a href="mailto:{$m.email}@polytechnique.org"><img src="{rel}/images/mail.png" alt="mail" /></a>
+      {else}
+      <a href="mailto:{$m.email}"><img src="{rel}/images/mail.png" alt="mail"></a>
+      {/if}
+    </td>
+    <td>
+      {$m.nb}
+    </td>
+  </tr>
+  {/iterate}
+</table>
+
+<p class="descr">
+{foreach from=$links item=ofs key=txt}
+<a href="?offset={$ofs}&amp;initiale={$smarty.request.initiale}"{if $smarty.request.offset eq $ofs} class="erreur"{/if}>{$txt}</a>
+{/foreach}
+</p>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/xnet/groupe/evt-detail.tpl b/templates/xnet/groupe/evt-detail.tpl
new file mode 100644 (file)
index 0000000..22f57fa
--- /dev/null
@@ -0,0 +1,33 @@
+<h1>{$asso.nom} : <a href="{$smarty.server.PHP_SELF}">Evénements</a></h1>
+
+<h2>{$evt.intitule}</h2>
+
+<form method='post' action='{$smarty.server.PHP_SELF}'>
+ <table>
+       <tr><td><i>Evénement annoncé par :</i></td><td>{$evt.prenom} {$evt.nom} (X{$evt.promo})</td></tr>
+       <tr><td><i>Description :</i></td><td>{$evt.descriptif}</td></tr>
+       <tr><td><i>Date :</i></td><td>{$evt.deb}{if $evt.fin} - {$evt.fin}{/if}</td></tr>
+</table>
+
+<br /><br />
+
+<table border=1 width='100%'>
+       <input type="hidden" name="eid" value="{$evt.eid}" />
+       <tr><td></td><td>Participation</td></tr>
+       {iterate from=$moments item=m}
+               <input type="hidden" name="item_id{counter}" value="{$m.item_id}" />
+       {if $m.titre | $m.montant}
+               <tr><td colspan='2'><b>{$m.titre} - {if $m.montant > 0}{$m.montant}{else}gratuit{/if}</b></td></tr>
+       {/if}
+               <tr><td>{$m.details}</td><td>
+                <input name='item_{$m.item_id}' value='0' type='radio' {if $m.nb eq 0}checked{/if}> je ne participe pas<br />
+                <input name='item_{$m.item_id}' value='1' type='radio' {if $m.nb eq 1}checked{/if}> je participe, seul<br />
+                <input name='item_{$m.item_id}' value='+' type='radio' {if $m.nb > 1}checked{/if}> je viens, et serai accompagné de <input type='text' name='itemnb_{$m.item_id}' value='{if $m.nb < 2}0{else}{$m.nb-1}{/if}' size=1 maxlength=1> personnes
+              </td></tr>
+       {/iterate}
+</table>
+<br />
+<center><input type='submit' name='ins' value='valider ma participation'>
+<input type='reset' value='annuler'></center>
+</form>
+
diff --git a/templates/xnet/groupe/form_evenement.tpl b/templates/xnet/groupe/form_evenement.tpl
new file mode 100644 (file)
index 0000000..2b5e93d
--- /dev/null
@@ -0,0 +1,90 @@
+<p class="descr">
+  Un événement peut être une réunion, un séminaire, une conférence, un voyage promo,
+  etc... Pour en organiser un et bénéficier des outils de suivi d'inscription et de
+  paiement offerts, il te faut remplir les quelques champs du formulaire ci-dessous.
+</p>
+<p class="descr">
+  Tu as la possibilité, pour un événement donné, de distinguer plusieurs "moments"
+  distincts. Par exemple, dans le cas d'une réunion suivie d'un dîner, il peut être
+  utile de comptabiliser les présents à la réunion d'une part, et de compter ceux
+  qui s'inscrivent au repas d'autre part (en général certains participants à la réunion
+  ne restent pas pour le dîner...), de sorte que tu sauras combien de chaises prévoir
+  pour le premier "moment" (la réunion), et pour combien de personnes réserver le
+  restaurant.
+</p>
+<form method="post" action="{$smarty.server.PHP_SELF}">
+<input type="hidden" name="eid" value="{$evt.eid}" />
+  <hr />
+  <table>
+    <tr>
+      <td>Intitulé de l'événement :</td>
+      <td><input type="text" name="intitule" value="{$evt.intitule}" size="45" maxlength="100" /></td>
+    </tr>
+    <tr>
+      <td>Descriptif :</td>
+      <td><textarea name="descriptif" cols="45" rows="6">{$evt.descriptif}</textarea></td>
+    </tr>
+    <tr>
+      <td>Date de début :</td>
+      <td>
+        le
+       {html_select_date prefix='deb_' end_year='+5' day_value_format='%02d' field_order='DMY' field_separator=' / ' month_format='%m' time=$evt.debut}
+       à
+       {html_select_time use_24_hours=true display_seconds=false time=$evt.debut prefix='deb_' minute_interval=5}
+       </select>
+      </td>
+    </tr>
+    <tr>
+      <td>Date de fin :</td>
+      <td>
+        le
+       {html_select_date prefix='fin_' end_year='+5' day_value_format='%02d' field_order='DMY' field_separator=' / ' month_format='%m' time=$evt.fin}
+       à
+       {html_select_time use_24_hours=true display_seconds=false time=$evt.fin prefix='fin_' minute_interval=5}
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2">Ouvert aux membres du groupe uniquement :
+        <input type="radio" name="membres_only" value="1" {if $evt.membres_only}checked="checked"{/if} /> oui
+        <input type="radio" name="membres_only" value="0" {if !$evt.membres_only}checked="checked"{/if} /> non
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2">Annoncer l'événement publiquement sur le site :
+        <input type="radio" name="advertise" value="1" {if $evt.advertise}checked{/if} /> oui
+        <input type="radio" name="advertise" value="0" {if !$evt.advertise}checked{/if} /> non
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2">Montrer la liste des participants à tous les membres :
+        <input type="radio" name="show_participants" value="1" {if $evt.show_participants}checked{/if} /> oui
+        <input type="radio" name="show_participants" value="0" {if !$evt.show_participants}checked{/if}/> non
+      </td>
+    </tr>
+  </table>
+  {foreach from=$moments item=i}
+  {assign var='moment' value=$items[$i]}
+  <hr />
+  <table>
+    <tr><td colspan="2" align="center"><strong>"Moment" {$i}</strong></td></tr>
+    <tr>
+      <td>Intitulé :</td>
+      <td><input type="text" name="titre{$i}" value="{$moment.titre}" size="45" maxlength="100" /></td>
+    </tr>
+    <tr>
+      <td>Détails pratiques :</td>
+      <td><textarea name="details{$i}" rows="6" cols="45">{$moment.details}</textarea></td>
+    </tr>
+    <tr>
+      <td>Montant par participant :<br /><small>(0 si gratuit)</small></td>
+      <td><input type="text" name="montant{$i}" value="{if $moment.montant}{$moment.montant|replace:".":","}{else}0,00{/if}" size="7" maxlength="7" /> &#8364;</td>
+    </tr>
+  </table>
+{/foreach}
+  <center>
+    <input type="submit" name="valid" value="Valider" />
+    &nbsp;
+    <input type="reset" value="Annuler" />
+  </center>
+
+</form>
index 6aff287..402e94e 100644 (file)
@@ -1,2 +1,4 @@
 ALTER TABLE groupex.asso ADD `pub` ENUM( 'public', 'private' ) DEFAULT 'public' NOT NULL AFTER `ax` ;
+ALTER TABLE evenements_participants ADD PRIMARY KEY (eid, item_id, uid);
+ALTER TABLE evenements ADD `show_participants` TINYINT( 1 ) NOT NULL ;