From 7cf438736010fa2df6680774ee0480b38eb54dc3 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Thu, 23 Sep 2004 17:20:35 +0000 Subject: [PATCH] vhosting for admin.php --- htdocs/listes/admin.php | 38 +++------ scripts/mailman/mailman-rpc.py | 44 +++++++---- templates/listes/admin.tpl | 171 ++++++++++++++-------------------------- templates/listes/listes.inc.tpl | 6 +- 4 files changed, 102 insertions(+), 157 deletions(-) diff --git a/htdocs/listes/admin.php b/htdocs/listes/admin.php index 67687ab..4dfe2c5 100644 --- a/htdocs/listes/admin.php +++ b/htdocs/listes/admin.php @@ -18,7 +18,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: admin.php,v 1.1 2004-09-21 16:14:35 x2000habouzit Exp $ + $Id: admin.php,v 1.2 2004-09-23 17:20:35 x2000habouzit Exp $ ***************************************************************************/ if(empty($_REQUEST['liste'])) header('Location: index.php'); @@ -34,39 +34,25 @@ mysql_free_result($res); $client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949"); -if(isset($_REQUEST['welc'])) $client->set_welcome($liste, $_REQUEST['welc']); - -if(isset($_REQUEST['add_member']) && isset($_REQUEST['member'])) { - $client->mass_subscribe($liste, Array($_REQUEST['member'])); +if(isset($_REQUEST['add_member'])) { + $client->mass_subscribe('polytechnique.org', $liste, Array($_REQUEST['add_member'])); } -if(isset($_REQUEST['del_member']) && isset($_REQUEST['member'])) { - $res = $globals->db->query("SELECT b.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id=b.id AND b.type='a_vie') - WHERE a.alias='{$_REQUEST['member']}'"); - if($forlife = mysql_fetch_row($res)) { - $client->mass_unsubscribe($liste, $forlife); - } - mysql_free_result($res); +if(isset($_REQUEST['del_member'])) { + $client->mass_unsubscribe('polytechnique.org', $liste, Array($_REQUEST['del_member'])); + header("Location: ?liste=$liste"); } -if(isset($_REQUEST['add_owner']) && isset($_REQUEST['owner'])) { - $client->add_owner($liste, $_REQUEST['owner']); +if(isset($_REQUEST['add_owner'])) { + $client->add_owner('polytechnique.org', $liste, $_REQUEST['add_owner']); } -if(isset($_REQUEST['del_owner']) && isset($_REQUEST['owner'])) { - $res = $globals->db->query("SELECT b.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id=b.id AND b.type='a_vie') - WHERE a.alias='{$_REQUEST['owner']}'"); - if(list($forlife) = mysql_fetch_row($res)) { - $client->del_owner($liste, $forlife); - } - mysql_free_result($res); +if(isset($_REQUEST['del_owner'])) { + $client->del_owner('polytechnique.org', $liste, $_REQUEST['del_owner']); + header("Location: ?liste=$liste"); } -$members = $client->get_members($liste); +$members = $client->get_members('polytechnique.org', $liste); if(is_array($members)) { $membres = Array(); foreach($members[1] as $member) { diff --git a/scripts/mailman/mailman-rpc.py b/scripts/mailman/mailman-rpc.py index 41ce4a0..bc29c0d 100755 --- a/scripts/mailman/mailman-rpc.py +++ b/scripts/mailman/mailman-rpc.py @@ -18,7 +18,7 @@ #* Foundation, Inc., * #* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * #*************************************************************************** -# $Id: mailman-rpc.py,v 1.30 2004-09-23 15:40:46 x2000habouzit Exp $ +# $Id: mailman-rpc.py,v 1.31 2004-09-23 17:20:36 x2000habouzit Exp $ #*************************************************************************** import base64, MySQLdb, os, getopt, sys, MySQLdb.converters @@ -146,7 +146,6 @@ def get_lists((userdesc,perms),vhost): 'diff' : mlist.generic_nonmember_action, 'ins' : mlist.subscribe_policy > 1, 'priv' : (1-mlist.advertised)+2*is_admin, - 'welc' : mlist.welcome_msg, 'sub' : is_pending + 2*is_member, 'own' : is_owner } ) @@ -194,27 +193,38 @@ def unsubscribe((userdesc,perms),vhost,listname): def get_members((userdesc,perms),vhost,listname): try: - mlist = MailList.MailList(vhost+'-'+listname, lock=0) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 members = mlist.getRegularMemberKeys() is_member = userdesc.address in members is_admin = mm_cfg.ADMIN_ML_OWNER in mlist.owner is_owner = ( perms == 'admin' and is_admin ) or ( userdesc.address in mlist.owner ) + is_pending = False + for id in mlist.GetSubscriptionIds(): + if userdesc.address == mlist.GetRecord(id)[1]: + is_pending = True + break if mlist.advertised or is_member or is_owner or ( perms == 'admin' ): members.sort() details = { 'addr' : listname+'@polytechnique.org', 'desc' : mlist.description, 'diff' : mlist.generic_nonmember_action, - 'ins' : mlist.subscribe_policy > 0, + 'ins' : mlist.subscribe_policy > 1, 'priv' : (1-mlist.advertised)+2*is_admin, - 'welc' : mlist.welcome_msg, - 'you' : is_member + 2*is_owner + 'sub' : is_pending + 2*is_member, + 'own' : is_owner } members = map(lambda member: (mlist.getMemberName(member) or '', member), members) + mlist.Unlock() return (details,members,mlist.owner) + mlist.Unlock() return 0 +#------------------------------------------------------------------------------- +# users procedures for [ trombi.php ] +# + def get_members_limit((userdesc,perms),vhost,listname,page,nb_per_page): try: details,members,owners = get_members((userdesc,perms),vhost,listname) @@ -224,12 +234,12 @@ def get_members_limit((userdesc,perms),vhost,listname,page,nb_per_page): return (details,members[i:i+int(nb_per_page)],owners,(len(members)-1)/int(nb_per_page)+1) #------------------------------------------------------------------------------- -# owners procedures +# owners procedures [ admin.php ] # -def mass_subscribe((userdesc,perms),listname,users): +def mass_subscribe((userdesc,perms),vhost,listname,users): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -256,9 +266,9 @@ def mass_subscribe((userdesc,perms),listname,users): mlist.Unlock() return added -def mass_unsubscribe((userdesc,perms),listname,users): +def mass_unsubscribe((userdesc,perms),vhost,listname,users): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -271,9 +281,9 @@ def mass_unsubscribe((userdesc,perms),listname,users): mlist.Unlock() return users -def add_owner((userdesc,perms),listname,user): +def add_owner((userdesc,perms),vhost,listname,user): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -293,9 +303,9 @@ def add_owner((userdesc,perms),listname,user): mlist.Unlock() return True -def del_owner((userdesc,perms),listname,user): +def del_owner((userdesc,perms),vhost,listname,user): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -309,6 +319,10 @@ def del_owner((userdesc,perms),listname,user): mlist.Unlock() return True +#------------------------------------------------------------------------------- +# owners procedures [ admin.php ] +# + def set_welcome((userdesc,perms),listname,welcome): try: mlist = MailList.MailList(listname) diff --git a/templates/listes/admin.tpl b/templates/listes/admin.tpl index 50dfbc7..d642d08 100644 --- a/templates/listes/admin.tpl +++ b/templates/listes/admin.tpl @@ -17,157 +17,102 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: admin.tpl,v 1.2 2004-09-22 11:39:51 x2000habouzit Exp $ + $Id: admin.tpl,v 1.3 2004-09-23 17:20:36 x2000habouzit Exp $ ***************************************************************************} {dynamic} -{if $no_list} +{if $no_list || !$details.own || $smarty.session.perms neq admin} -

La liste n'existe pas ou tu n'as pas le droit d'en voir les détails

+

La liste n'existe pas ou tu n'as pas le droit de l'administrer

{else} -
- Liste {$smarty.request.liste} -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Adresse {mailto address=$details.addr}
Sujet {$details.desc}
Visibilité {if $details.priv eq 0}publique{elseif $details.priv eq 1}privée{else}admin{/if}
Diffusion {if $details.diff}modérée{else}libre{/if}
Inscription {if $details.ins}modérée{else}libre{/if}
- trombino de la liste (page longue à charger) -
- -
- modérateurs de la liste -
- -{if $owners|@count} - - {foreach from=$owners item=xs key=promo} - - - - - {/foreach} -
{if $promo}{$promo}{else}non-X{/if} - {foreach from=$xs item=x} - {if $promo} - {$x.n}
- {else} - {$x.l}
- {/if} - {/foreach} -
-{/if} -
- membres de la liste + Administrer la liste {$details.addr}
- -{if $members|@count} - - {foreach from=$members item=xs key=promo} - - - - - {/foreach} -
{if $promo}{$promo}{else}non-X{/if} - {foreach from=$xs item=x} - {if $promo} - {$x.n}
- {else} - {$x.l}
- {/if} - {/foreach} -
-{/if} - -{if $details.you > 1 || $smarty.session.perms eq admin} -
- Administrer la liste -
-{if $details.you < 2} +{if !$details.own}

Tu n'es pas administrateur de la liste, mais du site.

{/if} -

modération : modérer la liste

-

Pour entrer un utilisateur, il faut remplir les champs prévus à cet effet par son login, c'est-à-dire "prenom.nom" ou "prenom.nom.promo"

+
+ modérateurs de la liste +
+
- +
+ {foreach from=$owners item=xs key=promo} - - - - - + - - + {/foreach} + +
modifier les abonnésmodifier les modérateurs
- - {if $promo}{$promo}{else}non-X{/if} - + {foreach from=$xs item=x} + {if $promo} + {$x.n} + {else} + {$x.l} + {/if} + + retirer utilisateur +
+ {/foreach}
- -   - -
Ajouter ... - +   - +
-

-Un message est adressé automatiquement à toute personne ajoutée à la liste de diffusion. Voici le -message actuellement envoyé : il est modifiable à volonté ! -

+ +
+ membres de la liste +
-
-
- -
+ + {foreach from=$members item=xs key=promo} + + + + + {/foreach} + + + + +
{if $promo}{$promo}{else}non-X{/if} + {foreach from=$xs item=x} + {if $promo} + {$x.n} + {else} + {$x.l} + {/if} + + retirer utilisateur +
+ {/foreach} +
Ajouter ... + +   + +
{/if} -{/if} - {/dynamic} {* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/listes/listes.inc.tpl b/templates/listes/listes.inc.tpl index 43f7494..517b53d 100644 --- a/templates/listes/listes.inc.tpl +++ b/templates/listes/listes.inc.tpl @@ -17,7 +17,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: listes.inc.tpl,v 1.5 2004-09-23 15:40:46 x2000habouzit Exp $ + $Id: listes.inc.tpl,v 1.6 2004-09-23 17:20:36 x2000habouzit Exp $ ***************************************************************************} @@ -34,9 +34,9 @@ -- 2.1.4
{$liste.list} {if $liste.own} - [mod] + [adm] {elseif $smarty.session.perms eq admin} - [mod] + [adm] {/if} {$liste.desc}