d9685ed27f5d671fd56c4bc5264d7873e9991a3f
[platal.git] / templates / admin / user.tpl
1 {**************************************************************************}
2 {*                                                                        *}
3 {*  Copyright (C) 2003-2013 Polytechnique.org                             *}
4 {*  http://opensource.polytechnique.org/                                  *}
5 {*                                                                        *}
6 {*  This program is free software; you can redistribute it and/or modify  *}
7 {*  it under the terms of the GNU General Public License as published by  *}
8 {*  the Free Software Foundation; either version 2 of the License, or     *}
9 {*  (at your option) any later version.                                   *}
10 {*                                                                        *}
11 {*  This program is distributed in the hope that it will be useful,       *}
12 {*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *}
13 {*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *}
14 {*  GNU General Public License for more details.                          *}
15 {*                                                                        *}
16 {*  You should have received a copy of the GNU General Public License     *}
17 {*  along with this program; if not, write to the Free Software           *}
18 {*  Foundation, Inc.,                                                     *}
19 {*  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA               *}
20 {*                                                                        *}
21 {**************************************************************************}
22
23
24 {if t($smarty.post.delete_account)}
25 <form method="post" action="admin/user/{$user->login()}">
26   {xsrf_token_field}
27   <fieldset>
28     <legend>Confirmer la suppression de l'utilisateur {$user->hruid}</legend>
29
30     {if $user->hasProfile()}
31     <p>
32       <input type="checkbox" name="clear_profile" /> Vider la fiche de
33       l'utilisateur.
34     </p>
35     {else}
36     <p>
37       <input type="checkbox" name="erase_account" {if $user->state eq 'pending'}checked="checked"{/if} /> Supprimer le compte définitivement.
38     </p>
39     {/if}
40     <p>
41       <input type="hidden" name="uid" value="{$user->uid}" />
42       <input type="submit" name="account_deletion_cancel" value="Annuler" />
43       <input type="submit" name="account_deletion_confirmation" value="Confirmer" />
44     </p>
45   </fieldset>
46 </form>
47 {elseif t($smarty.post.erase_account)}
48 <p>
49   <a href="admin/accounts">Retourner à la gestion des comptes</a>
50 </p>
51 {else}
52 {literal}
53
54 <script type="text/javascript">
55 //<![CDATA[
56 function del_alias(alias) {
57   document.forms.alias.del_alias.value = alias;
58   document.forms.alias.submit();
59 }
60
61 function del_profile(pid) {
62   document.forms.profiles.del_profile.value = pid;
63   document.forms.profiles.submit();
64 }
65
66 function del_fwd(fwd) {
67   document.forms.fwds.del_fwd.value = fwd;
68   document.forms.fwds.submit();
69 }
70
71 function del_openid(id) {
72   document.forms.openid.del_openid.value = id;
73   document.forms.openid.submit();
74 }
75
76 function act_fwd(fwd, activate) {
77   if (activate)
78     document.forms.fwds.activate_fwd.value = fwd;
79   else
80     document.forms.fwds.deactivate_fwd.value = fwd;
81   document.forms.fwds.submit();
82 }
83 function clean_fwd(fwd) {
84   document.forms.fwds.clean_fwd.value = fwd;
85   document.forms.fwds.submit();
86 }
87 function ban_write()
88 {
89     document.forms.bans.write_perm.value = "!xorg.*";
90 }
91 function ban_read()
92 {
93     document.forms.bans.read_perm.value = "!xorg.*";
94 }
95
96 $(function() {
97   $('#tabs').tabs();
98   $('.ui-tabs-nav li').width('24%')
99     .click(function() { $(this).children('a').click() });
100 });
101
102 // ]]>
103 </script>
104 {/literal}
105
106 <div id="tabs">
107   <ul style="margin-top: 0">
108     <li><a href="#account"><span>Compte de {$user->login()}</span></a></li>
109     <li><a href="#emails"><span>Emails</span></a></li>
110     <li><a href="#authext"><span>OpenID</span></a></li>
111     <li><a href="#forums"><span>Forums</span></a></li>
112   </ul>
113
114 <div id="account">
115 <form id="auth" method="post" action="admin/user/{$user->login()}#account">
116   {xsrf_token_field}
117   <h1>Informations sur le compte</h1>
118   <p class="smaller">
119     Dernière connexion le <strong>{$lastlogin|date_format:"%d %B %Y, %T"}</strong>
120     depuis <strong>{$host}</strong>.
121   </p>
122
123   <table class="bicol">
124     <tr>
125       <th colspan="2">
126         <div style="float: right; text-align: right">
127           {if $user->state eq 'pending'}
128           Non-inscrit
129           {else}
130           Inscrit le {$user->registration_date|date_format}
131           {/if}
132         </div>
133         <div style="float: left; text-align: left">
134           {icon name=user_gray} {$user->hruid} (uid {$user->id()})
135         </div>
136         <input type="hidden" name="uid" value="{$user->id()}" />
137       </th>
138     </tr>
139     <tr>
140       <td class="titre">Nom complet</td>
141       <td>{$user->fullName()}</td>
142     </tr>
143     <tr>
144       <td class="titre">Nom annuaire</td>
145       <td>{$user->directoryName()}</td>
146     </tr>
147     {if !$hasProfile}
148     <tr>
149       <td class="titre">Nom</td>
150       <td><input type="text" name="lastname" maxlength="255" value="{$user->lastname}" /></td>
151     </tr>
152     {if $user->type neq 'virtual'}
153     <tr>
154       <td class="titre">Prénom</td>
155       <td><input type="text" name="firstname" maxlength="255" value="{$user->firstname}" /></td>
156     </tr>
157     {/if}
158     {/if}
159     {if $user->type neq 'virtual'}
160     <tr>
161       <td class="titre">Nom affiché</td>
162       <td>{if $hasProfile}{$user->displayName()}{else}<input type="text" name="display_name" maxlength="255" value="{$user->displayName()}" />{/if}</td>
163     </tr>
164     {/if}
165     <tr>
166       <td class="titre">Sexe</td>
167       <td>
168         <label>femme <input type="radio" name="sex" value="female" {if $user->isFemale()}checked="checked"{/if} /></label>
169         <label><input type="radio" name="sex" value="male" {if !$user->isFemale()}checked="checked"{/if} /> homme</label>
170       </td>
171     </tr>
172     <tr>
173       <td class="titre">Email</td>
174       <td>{if $user->checkPerms('mail')}{$user->forlifeEmail()}{else}<input type="text" name="email" size="40" maxlength="255" value="{$user->forlifeEmail()}" />{/if}</td>
175     </tr>
176     <tr class="impair">
177       <td class="titre">Mot de passe</td>
178       <td>
179         <div style="float: left">
180           <input type="text" name="new_plain_password" size="10" maxlength="256" value="********" />
181           <input type="hidden" name="pwhash" value="" />
182         </div>
183         <div style="float: left; margin-top: 5px;">
184           {checkpasswd prompt="new_plain_password" submit="dummy_none"}
185         </div>
186       </td>
187     </tr>
188     <tr class="impair">
189       <td class="titre">Mot de passe SMTP</td>
190       <td>
191         <div style="float: left">
192           <input type="password" name="weak_password" size="10" maxlength="256" value="" />
193           {if $user->weak_access}
194           <input type="submit" name="disable_weak_access" value="Supprimer" />
195           {/if}
196         </div>
197       </td>
198     </tr>
199     <tr class="impair">
200       <td class="titre">Accès RSS</td>
201       <td>
202         <label>
203           <input type="checkbox" name="token_access" {if $user->token_access}checked="checked"{/if} value="1" />
204           activer l'accès
205         </label>
206       </td>
207     </tr>
208     <tr class="impair">
209       <td class="titre">Skin</td>
210       <td>
211         <select name="skin">
212           <option value="" {if !$user->skin}selected="selected"{/if}>Aucune (défaut du système)</option>
213           {iterate from=$skins item=skin}
214           <option value="{$skin.id}" {if $user->skin eq $skin.id}selected="selected"{/if}>{$skin.name}</option>
215           {/iterate}
216         </select>
217       </td>
218     </tr>
219     <tr class="pair">
220       <td class="titre">Etat du compte</td>
221       <td>
222         <select name="state">
223           <option value="pending" {if $user->state eq 'pending'}selected="selected"{/if}>pending (Non-inscrit)</option>
224           <option value="active" {if $user->state eq 'active'}selected="selected"{/if}>active (Inscrit, peut se logguer)</option>
225           <option value="disabled" {if $user->state eq 'disabled'}selected="selected"{/if}>disabled (Inscrit, accès interdit)</option>
226         </select><br />
227         <label>
228           <input type="checkbox" name="is_admin" value="1" {if $user->is_admin}checked="checked"{/if} />
229           administrateur du site
230         </label>
231       </td>
232     </tr>
233     <tr class="pair">
234       <td class="titre">Type de compte</td>
235       <td>
236         <select name="type">
237           {iterate from=$account_types item=type}
238           <option value="{$type.type}" {if $user->type eq $type.type}selected="selected"{/if}>{$type.type} ({$type.perms})</option>
239           {/iterate}
240         </select>
241         <a href="admin/account/types">{icon name=wrench title=Gérer} gérer</a>
242       </td>
243     </tr>
244     <tr class="pair">
245       <td class="titre">
246         Surveillance
247       </td>
248       <td>
249         <label><input type="checkbox" name="watch" {if $user->watch}checked="checked"{/if} value="1" />
250         Surveiller l'activité de ce compte</label><br />
251         <span class="smaller">Cette option permet d'avoir des logs complets de l'activité
252         du compte via le logger, et d'être alerté lors des connexions de l'utilisateur.</span>
253       </td>
254     </tr>
255     <tr class="pair">
256       <td class="titre">
257         Commentaire
258       </td>
259       <td>
260         <input type="text" name="comment" size="40" maxlength="64" value="{$user->comment}" />
261       </td>
262     </tr>
263     <tr class="impair">
264       <td colspan="2" class="center">
265         <input type="submit" name="update_account" value="Mettre à jour" onclick="return hashResponse('new_plain_password', false, false, false);" />
266         <input type="submit" name="su_account" value="Prendre l'identité" />
267         <input type="submit" name="log_account" value="Consulter les logs" />
268         {if $user->state neq 'pending'}
269         <input type="submit" name="delete_account" value="Désinscrire" />
270         {elseif !$user->hasProfile()}
271         <input type="submit" name="delete_account" value="Supprimer le compte" />
272         {/if}
273       </td>
274     </tr>
275   </table>
276 </form>
277
278 <h1>Fiches associées au compte</h1>
279
280 <form id="profiles" method="post" action="admin/user/{$user->login()}#account">
281   {xsrf_token_field}
282   <table class="bicol">
283     <tr>
284       <th></th>
285       <th>Identifiant de la fiche</th>
286       <th></th>
287     </tr>
288     {iterate from=$profiles item=profile}
289     <tr>
290       <td><input type="radio" name="owner" value="{$profile.pid}" {if $profile.owner}checked="checked"{/if}
291                  onclick="this.form.submit()" /></td>
292       <td>{$profile.hrpid} (pid {$profile.pid}, ax_id {$profile.ax_id})</td>
293       <td class="right">
294         <a href="profile/edit/{$profile.hrpid}">{icon name=user_edit}</a>
295         <a href="profile/{$profile.hrpid}" class="popup2">{icon name=user_suit}</a>
296         <a href="javascript:del_profile({$profile.pid})">{icon name=cross}</a>
297       </td>
298     </tr>
299     {/iterate}
300     {if $profiles->total() > 0}
301     <tr>
302       <td>
303         <input type="radio" name="owner" value="0" onclick="this.form.submit()" />
304       </td>
305       <td>None</td>
306       <td></td>
307     </tr>
308     {/if}
309     <tr class="pair">
310       <td colspan="3">
311         <input type="hidden" name="del_profile" value="" />
312         <input type="text" maxlength="64" name="new_profile" />
313         <input type="submit" name="add_profile" value="Ajouter" />
314       </td>
315     </tr>
316   </table>
317 </form>
318
319 <h1>Groupes dont l'utilisateur est membre</h1>
320
321 <table class="bicol">
322   <tr>
323     <th>Nom du groupe</th>
324     <th>Permissions</th>
325   </tr>
326   {foreach from=$user->groups() item=group}
327   <tr class="impair">
328     <td>{$group.nom}</td>
329     <td style="text-align: right">
330       {$group.perms}
331       <a href="http://www.polytechnique.net/{$group.diminutif}/member/{$user->hruid}">
332       {icon name="user_edit" title="Modifier l'inscription"}
333       </a>
334     </td>
335   </tr>
336   {/foreach}
337 </table>
338
339 </div>
340
341 <div id="emails">
342 <h1>Gestion de l'adresse X.org</h1>
343
344 <form id="alias" method="post" action="admin/user/{$user->login()}#emails">
345   {xsrf_token_field}
346   <table class="bicol" cellpadding="2" cellspacing="0">
347     <tr>
348       <th class="alias" colspan="3">
349         Alias email de l'utilisateur
350       </th>
351     </tr>
352     {iterate from=$aliases item=a}
353     <tr class="{cycle values="impair,pair"}">
354       <td>
355         <input type="radio" name='best' {if $a.bestalias}checked="checked"{/if} value='{$a.email}' onclick="this.form.submit()" />
356       </td>
357       <td>
358         {if $a.forlife}<strong>{$a.email}</strong>{elseif $a.alias}<em>{$a.email}</em>{else}{$a.email}{/if}
359         {if $a.expire}<span class='erreur'>(expire le {$a.expire|date_format})</span>{/if}
360       </td>
361       {if $a.forlife}
362       <td>garanti à vie*</td>
363       {else}
364       <td class="action">
365         <a href="javascript:del_alias('{$a.email}')">{icon name=cross}</a>
366       </td>
367       {/if}
368     </tr>
369     {/iterate}
370     <tr class="{cycle values="impair,pair"}">
371       <td colspan="2" class="detail">
372         <input type="text" name="email" size="29" maxlength="255" value="" />
373       </td>
374       <td class="action">
375         <input type="hidden" name="uid" value="{$user->id()}" />
376         <input type="hidden" name="del_alias" value="" />
377         <input type="submit" name="add_alias" value="Ajouter" />
378       </td>
379     </tr>
380     <tr class="{cycle values="impair,pair"}">
381       <td colspan="3" class="desc">
382         <strong>* à ne modifier qu'avec l'accord express de l'utilisateur !!!</strong>
383       </td>
384     </tr>
385   </table>
386 </form>
387
388 <br />
389
390 <form id="fwds" method="post" action="admin/user/{$user->login()}#emails">
391   {xsrf_token_field}
392   <table class="bicol" cellpadding="2" cellspacing="0">
393     <tr>
394       <th colspan="5">
395         Redirections
396       </th>
397     </tr>
398     {assign var=actives value=false}
399     {assign var=disabled value=false}
400     {foreach item=mail from=$emails}
401     {cycle assign=class values="impair,pair"}
402     <tr class="{$class}">
403       {if $mail->active && $mail->has_disable()}
404         {assign var=actives value=true}
405       {elseif $mail->disabled && $mail->has_disable()}
406         {assign var=disabled value=true}
407       {/if}
408       <td class="titre">
409         {if $mail->active}active{elseif $mail->disabled}suspendue{/if}
410       </td>
411       <td>
412         <span class="smaller">
413           {if !$mail->disabled}
414           <a href="javascript:act_fwd('{$mail->email}',{if $mail->active}false{else}true{/if})">
415             {if $mail->active}des{elseif $mail->broken}ré{/if}activer
416           </a>
417           {/if}
418         </span>
419       </td>
420       <td>
421         {if $mail->broken}<span style="color: #f00">{/if}
422         {if $mail->type == 'googleapps'}<a href="admin/googleapps/user/{$user->login()}">{/if}
423         {$mail->display_email}
424         {if $mail->type == 'googleapps'}</a>{/if}
425         {if $mail->broken}<em> (en panne)</em></span>{/if}
426       </td>
427       <td>
428         {if $mail->type != 'imap'}<span class="smaller">(niveau {$mail->filter_level} : {$mail->action})</span>{/if}
429       </td>
430       <td class="action">
431         {if $mail->is_removable()}
432         <a href="javascript:del_fwd('{$mail->email}')">{icon name=cross}</a>
433         {/if}
434       </td>
435     </tr>
436     {if $mail->broken && $mail->broken_date neq "0000-00-00"}
437     <tr class="{$class}">
438       <td colspan="4" class="smaller" style="color: #f00">
439         {icon name=error title="Panne"}
440         Panne de {$mail->display_email} le {$mail->broken_date|date_format}
441         {if $mail->broken_date neq $mail->last}confirmée le {$mail->last|date_format}{/if}
442       </td>
443       <td class="action">
444         <a href="javascript:clean_fwd('{$mail->email}')">effacer les pannes</a>
445       </td>
446     </tr>
447     {/if}
448     {/foreach}
449     {cycle assign=class values="impair,pair"}
450     <tr class="{$class}">
451       <td class="titre" colspan="2">
452         Ajouter une adresse
453       </td>
454       <td colspan="2">
455         <input type="text" name="email" size="29" maxlength="255" value="" />
456       </td>
457       <td class="action">
458         <input type="hidden" name="uid" value="{$user->id()}" />
459         <input type="hidden" name="del_fwd" value="" />
460         <input type="hidden" name="clean_fwd" value="" />
461         <input type="hidden" name="activate_fwd" value="" />
462         <input type="hidden" name="deactivate_fwd" value="" />
463         <input type="submit" name="add_fwd" value="Ajouter" />
464       </td>
465     </tr>
466     <tr class="{$class}">
467       <td colspan="5" class="center">
468         {if $actives}
469         <input type="submit" name="disable_fwd" value="Désactiver la redirection des emails" />
470         {/if}
471         {if $disabled}
472         <input type="submit" name="enable_fwd" value="Réactiver la redirection des emails" />
473         {/if}
474       </td>
475     </tr>
476   </table>
477 </form>
478
479 {test_email hruid=$user->login()}
480
481 <h1>Autres adresses de l'utilisateur</h1>
482
483 <table class="bicol">
484   <tr>
485     <th colspan="3">Mailing lists auquelles l'utilisateur appartient</th>
486   </tr>
487   {foreach from=$mlists item=mlist}
488   <tr>
489     <td>
490       <a href="http://listes.polytechnique.org/members/{$mlist.addr|replace:"@":"_"}">
491       {$mlist.addr}
492       </a>
493     </td>
494     <td>
495       <input type="checkbox" disabled="disabled" {if $mlist.sub}checked="checked"{/if} /> Membre
496     </td>
497     <td>
498       <input type="checkbox" disabled="disabled" {if $mlist.own}checked="checked"{/if} /> Modérateur
499     </td>
500   </tr>
501   {/foreach}
502 </table>
503
504 <br />
505 <table class="bicol">
506   <tr>
507     <th>Alias de groupe auquel l'utilisateur appartient</th>
508   </tr>
509   {foreach from=$virtuals item=virtual}
510   <tr class="{cycle values="impair,pair"}">
511     <td>{$virtual}</td>
512   </tr>
513   {/foreach}
514 </table>
515 </div>
516
517 <div id="authext">
518 <h1>Gestion des autorisations d'authentification externe</h1>
519
520 <form id="openid" method="post" action="admin/user/{$user->login()}#authext">
521   {xsrf_token_field}
522   <table class="bicol">
523     <tr>
524       <th colspan="2">Sites de confiance</th>
525     </tr>
526     {iterate from=$openid item=site}
527     <tr class="{cycle values="pair,impair"}">
528       <td><a href="{$site.url}">{$site.url}</a></td>
529       <td><a href="javascript:del_openid({$site.id})">{icon name=cross}</a></td>
530     </tr>
531     {/iterate}
532   </table>
533   <div><input type="hidden" name="del_openid"/></div>
534 </form>
535 </div>
536
537 <div id="forums">
538 <h1>Gestion de l'accès au forums</h1>
539
540 <form id="bans" method="post" action="admin/user/{$user->login()}#forums">
541   {xsrf_token_field}
542   <table class="bicol">
543     <tr>
544       <th colspan="4">
545         Permissions sur les forums
546       </th>
547     </tr>
548     <tr class="impair">
549       <td class="titre">
550         Poster
551       </td>
552       <td>
553         <input type="text" name="write_perm" size="32" maxlength="255" value="{$bans.write_perm}" />
554       </td>
555       <td class="action">
556         <a href="javascript:ban_write()">Bannir</a>
557       </td>
558     </tr>
559     <tr class="pair">
560       <td class="titre">
561         Lire
562       </td>
563       <td>
564         <input type="text" name="read_perm" size="32" maxlength="255" value="{$bans.read_perm}" />
565       </td>
566       <td class="action">
567         <a href="javascript:ban_read()">Bannir</a>
568       </td>
569     </tr>
570     <tr class="impair">
571       <td class="titre">
572         Commentaire
573       </td>
574       <td colspan="2">
575         <input type="text" name="comment" size="40" maxlength="255" value="{$bans.comment}" />
576       </td>
577     </tr>
578     <tr class="center">
579       <td colspan="3">
580         <input type="hidden" name="uid" value="{$user->id()}" />
581         <input type="submit" name="b_edit" value="Modifier" />
582       </td>
583     </tr>
584   </table>
585 </form>
586 </div>
587 </div>
588 {/if}
589
590 {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}