# index.php
server.register_function(get_lists)
+server.register_function(get_list_info)
server.register_function(subscribe)
server.register_function(unsubscribe)
# members.php
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2003-2006 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 *
+ ***************************************************************************/
+
+Ajax = {
+ xml_client: null,
+ init: false,
+
+ prepare_client: function()
+ {
+ if (!Ajax.init) {
+ if (window.XMLHttpRequest) {
+ Ajax.xml_client = new XMLHttpRequest();
+ } else if (window.ActiveXObject) {
+ try {
+ Ajax.xml_client = new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ Ajax.xml_client = new ActiveXObject("Microsoft.XMLHTTP");
+ }
+ }
+ if (Ajax.xml_client == null) {
+ alert("Ton client ne supporte pas Ajax, nécessaire pour certaines fonctionalités de cette page");
+ }
+ }
+ Ajax.init = true;
+ },
+
+ update_html: function(obj, src)
+ {
+ Ajax.prepare_client();
+ if (Ajax.xml_client == null) {
+ return true;
+ }
+ Ajax.xml_client.onreadystatechange =
+ function()
+ {
+ if(Ajax.xml_client.readyState == 4) {
+ document.getElementById(obj).innerHTML = Ajax.xml_client.responseText;
+ }
+ };
+ Ajax.xml_client.open ('GET', src, true);
+ Ajax.xml_client.send (null);
+ return false;
+ }
+}
+
<h2>L'inscription à une liste de diffusion</h2>
-<p>
-Pour t'inscrire à une liste il suffit de cliquer sur l'icone
-{icon name=add} située en fin de ligne.
-</p>
-
-<p>
-Certaines listes sont à inscription modérée, l'inscription n'y est pas
-immédiate. Il faut en effet l'action d'un modérateur de la liste pour valider
-(ou éventuellement refuser) ta candidature. Ces listes apparaissent avec l'icone
-{icon name=flag_orange title="en cours"}.
-</p>
+<ul>
+ <li>Pour demander ton inscription à une liste de diffusion, il suffit
+ de cliquer sur l'icône {icon name=add} située en fin de ligne</li>
+ <li>Si la liste est à inscription modérée, l'icône {icon name=flag_orange title="en cours"}
+ apparaîtra tant que ton inscription n'aura pas été validée par un modérateur</li>
+ <li>Pour te désinscrire d'une liste dont tu es membre, il suffit de cliquer sur la croix
+ {icon name=cross title="désinscription"} située en fin de ligne</li>
+</ul>
-<p>
-Pour se désinscrire, il suffit de la même manière de cliquer sur l'icone
-{icon name=cross title="désinscription"}.
+<p class="smaller">Attention : Lorsqu'une liste à laquelle tu es abonné est
+ privée, l'icône {icon name=weather_cloudy} est affichée en début de ligne.
+ Si tu t'en désinscrits, il ne te sera pas possible de t'y abonner de nouveau
+ sans l'action d'un modérateur
</p>
<h2>La diffusion sur une liste de diffusion</h2>
La diffusion a trois niveaux de modération. La diffusion peut être :
</p>
<ul>
- <li>libre : tout le monde peut y envoyer des mails, la diffusion y est
+ <li><strong>libre :</strong> tout le monde peut y envoyer des mails, la diffusion y est
immédiate;</li>
- <li>restreinte : les membres de la liste peuvent envoyer librement des mails,
+ <li><strong>restreinte :</strong> les membres de la liste peuvent envoyer librement des mails,
les extérieurs sont modérés;</li>
- <li>modérée: l'envoi d'un mail à la liste est alors filtré par des
+ <li><strong>modérée:</strong> l'envoi d'un mail à la liste est alors filtré par des
modérateurs, eux seuls peuvent accepter un message envoyé à la liste.</li>
</ul>
<p class='smaller'>
-{icon name=wrench title="Modérateur"} indique que tu es modérateur de la liste.<br />
-Les modérateurs jouent également le rôle de gestionnaire.
+{icon name=wrench title="Modérateur"} indique que tu es modérateur de la liste, les modérateurs jouent également le rôle de gestionnaire.<br />
+{icon name=error title="Modérateur mais non-membre"} indque que tu es modérateur de la liste, mais que tu n'en es pas membre.
</p>
-<h2>Demander la création d'une liste de diffusion</h2>
+<h1>Demander la création d'une liste de diffusion</h1>
<p>
Nos listes ont pour but de réunir des X autour de thèmes ou centres d'intérêt communs. C'est un
moyen pratique et efficace de rassembler plusieurs personnes autour d'un projet commun ou d'une
thématique particulière.
</p>
-<p>
+
+<p class="center">
Tu peux demander <a href='lists/create'>la création</a>
d'une liste de diffusion sur le thème de ton choix.
</p>
+{if $owner|@count}
+<h1>Listes dont tu es modérateur</h1>
-<h1>
- Listes de diffusion publiques
-</h1>
-
-<p>
-Les listes de diffusion publiques sont visibles par tous les X inscrits à Polytechnique.org.
-</p>
+{include file='listes/listes.inc.tpl' lists=$owner}
+{/if}
+{if $member|@count}
+<h1>Listes dont tu es membre</h1>
-{include file='listes/listes.inc.tpl' priv=0}
-
-<h1>
- Listes de diffusion privées (et de promo)
-</h1>
+{include file='listes/listes.inc.tpl' lists=$member}
+{/if}
+<h1>Listes de diffusion publiques auxquelles tu peux t'inscrire</h1>
<p>
-Si tu te désinscris de ces listes, tu ne seras plus capable de t'y réinscrire par toi-même !
+Les listes de diffusion publiques sont visibles par tous les X inscrits à Polytechnique.org.
</p>
-{include file='listes/listes.inc.tpl' priv=1}
+{if $public|@count}
+{include file='listes/listes.inc.tpl' lists=$public}
<br />
+{/if}
<form method='post' action='lists'>
<table class='tinybicol' cellspacing='0' cellpadding='2'>
--- /dev/null
+{**************************************************************************}
+{* *}
+{* Copyright (C) 2003-2006 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 *}
+{* *}
+{**************************************************************************}
+
+<td style="width: 16px">
+ {if $liste.own && $liste.sub}
+ {icon name=wrench title="Modérateur"}
+ {elseif $liste.own}
+ {icon name=error title="Modérateur mais non-membre"}
+ {elseif $liste.priv}
+ {icon name=weather_cloudy title="Liste privée"}
+ {/if}
+</td>
+<td>
+ <a href='{$platal->ns}lists/members/{$liste.list}'>{$liste.list}</a>
+</td>
+<td>
+ {$liste.desc}<br/>
+ {if $liste.subscriptions|@count}
+ <strong>• Demandes d'inscription</strong><br />
+ {foreach from=$liste.subscriptions item=s}
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?sadd={$s.id}'
+ onclick="return Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?sadd={$s.id}');">
+ {icon name=add title="Accepter"}
+ </a>
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?sid={$s.id}'>
+ {icon name=delete title="Refuser"}
+ </a>
+ {$s.name}
+ {if $s.login}
+ <a href="profile/{$s.login}" class="popup2">{icon name=user_suit title="Afficher la fiche"}</a>
+ {/if}
+ <br />
+ {/foreach}
+ {/if}
+ {if $liste.mails|@count}
+ <strong>• Demandes de modération</strong><br />
+ <span class="smaller">
+ {foreach from=$liste.mails item=m}
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}&mok=1'
+ onclick="return Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mok=1');">
+ {icon name=add title="Valider le mail"}
+ </a>
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}&mdel=1'
+ onclick="return Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mdel=1');">
+ {icon name=delete title="Détruire"}
+ </a>
+ De : {$m.sender}<br />
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}'>
+ {icon name=magnifier title="Voir le message"}
+ </a>
+ Sujet : {$m.subj|hdc|default:"[pas de sujet]"}<br />
+ {/foreach}
+ </span>
+ {/if}
+</td>
+<td class='center'>
+ {if $liste.diff eq 2}modérée{elseif $liste.diff}restreinte{else}libre{/if}
+</td>
+<td class='center'>
+ {if $liste.ins}modérée{else}libre{/if}
+</td>
+<td class='right'>{$liste.nbsub}</td>
+<td class='right'>
+ {if $liste.sub eq 2}
+ <a href='{$platal->ns}lists?del={$liste.list}'
+ onclick="return Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?unsubscribe=1');">
+ {icon name=cross title="me désinscrire"}
+ </a>
+ {elseif $liste.sub eq 1}
+ {icon name=flag_orange title='inscription en attente de modération'}
+ {else}
+ <a href='{$platal->ns}lists?add={$liste.list}'
+ onclick="return Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?subscribe=1');">
+ {icon name=add title="m'inscrire"}
+ </a>
+ {/if}
+ </td>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
<th>Nb</th>
<th></th>
</tr>
- {foreach from=$listes item=liste}
- {if $liste.priv eq $priv}
- <tr class='{cycle values="impair,pair"}'>
- <td style="width: 16px">
- {if $liste.own}
- {icon name=wrench title="Modérateur"}
- {/if}
- </td>
- <td>
- <a href='{$platal->ns}lists/members/{$liste.list}'>{$liste.list}</a>
- </td>
- <td>{$liste.desc}</td>
- <td class='center'>
- {if $liste.diff eq 2}modérée{elseif $liste.diff}restreinte{else}libre{/if}
- </td>
- <td class='center'>
- {if $liste.ins}modérée{else}libre{/if}
- </td>
- <td class='right'>{$liste.nbsub}</td>
- <td class='right'>
- {if $liste.sub eq 2}
- <a href='{$platal->ns}lists?del={$liste.list}'>
- {icon name=cross title="me désinscrire"}
- </a>
- {elseif $liste.sub eq 1}
- {icon name=flag_orange title='inscription en attente de modération'}
- {else}
- <a href='{$platal->ns}lists?add={$liste.list}'>
- {icon name=add title="m'inscrire"}</a>
- {/if}
- </td>
+ {foreach from=$lists item=liste}
+ <tr class='{cycle values="impair,pair"}' id='list_{$liste.list}'>
+ {include file="listes/liste.inc.tpl"}
</tr>
- {/if}
{/foreach}
</table>