Merge remote branch 'origin/platal-1.0.0'
[platal.git] / templates / admin / user.tpl
1 {**************************************************************************}
2 {*                                                                        *}
3 {*  Copyright (C) 2003-2010 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 $smarty.post.u_kill_conf}
25 <form method="post" action="admin/user">
26   {xsrf_token_field}
27   <div class="center">
28     <input type="hidden" name="uid" value="{$smarty.request.uid}" />
29     Confirmer la suppression de l'utilisateur {$smarty.request.uid} ({$user->fullName()})&nbsp;&nbsp;
30     <input type="submit" name="u_kill" value="continuer" />
31   </div>
32 </form>
33 {elseif $user}
34 {literal}
35
36 <script type="text/javascript">
37 //<![CDATA[
38 function encryptPassword() {
39   if ($('[name=new_plain_password]').val() != '********') {
40     $('[name=hashpass]').val(hash_encrypt($('[name=new_plain_password]').val()));
41     $('[name=new_plain_password]').val('');
42   }
43 }
44
45 function del_alias(alias) {
46   document.forms.alias.del_alias.value = alias;
47   document.forms.alias.submit();
48 }
49
50 function del_profile(pid) {
51   document.forms.profiles.del_profile.value = pid;
52   document.forms.profiles.submit();
53 }
54
55 function del_fwd(fwd) {
56   document.forms.fwds.del_fwd.value = fwd;
57   document.forms.fwds.submit();
58 }
59
60 function del_openid(id) {
61   document.forms.openid.del_openid.value = id;
62   document.forms.openid.submit();
63 }
64
65 function act_fwd(fwd, activate) {
66   if (activate)
67     document.forms.fwds.activate_fwd.value = fwd;
68   else
69     document.forms.fwds.deactivate_fwd.value = fwd;
70   document.forms.fwds.submit();
71 }
72 function clean_fwd(fwd) {
73   document.forms.fwds.clean_fwd.value = fwd;
74   document.forms.fwds.submit();
75 }
76 function ban_write()
77 {
78     document.forms.bans.write_perm.value = "!xorg.*";
79 }
80 function ban_read()
81 {
82     document.forms.bans.read_perm.value = "!xorg.*";
83 }
84
85 $(document).ready(function() {
86   $('#tabs > ul').tabs();
87   $('.ui-tabs-nav li').width('24%')
88     .click(function() { $(this).children('a').click() });
89 });
90
91 // ]]>
92 </script>
93 {/literal}
94
95 <div id="tabs">
96   <ul style="margin-top: 0">
97     <li><a href="{$platal->pl_self()}#account"><span >Compte de {$user->login()}</span></a></li>
98     <li><a href="{$platal->pl_self()}#emails"><span>Emails</span></a></li>
99     <li><a href="{$platal->pl_self()}#authext"><span>OpenID</span></a></li>
100     <li><a href="{$platal->pl_self()}#forums"><span>Forums</span></a></li>
101   </ul>
102 </div>
103
104 <div id="account">
105 <form id="auth" method="post" action="admin/user/{$user->login()}#account">
106   {xsrf_token_field}
107   <h1>Informations sur le compte</h1>
108   <p class="smaller">
109     Dernière connexion le <strong>{$lastlogin|date_format:"%d %B %Y, %T"}</strong>
110     depuis <strong>{$host}</strong>.
111   </p>
112
113   <table class="bicol">
114     <tr>
115       <th colspan="2">
116         <div style="float: right; text-align: right">
117           {if $user->state eq 'pending'}
118           Non-inscrit
119           {else}
120           Inscrit le {$user->registration_date|date_format}
121           {/if}
122         </div>
123         <div style="float: left; text-align: left">
124           {icon name=user_gray} {$user->hruid} (uid {$user->id()})
125         </div>
126         <input type="hidden" name="uid" value="{$user->id()}" />
127       </th>
128     </tr>
129     <tr>
130       <td class="titre">Nom complet</td>
131       <td>{if $hasProfile}{$user->fullName()}{else}<input type="text" name="full_name" maxlength="255" value="{$user->fullName()}" />{/if}</td>
132     </tr>
133     <tr>
134       <td class="titre">Nom annuaire</td>
135       <td>{if $hasProfile}{$user->directoryName()}{else}<input type="text" name="directory_name" maxlength="255" value="{$user->directoryName()}" />{/if}</td>
136     </tr>
137     <tr>
138       <td class="titre">Nom affiché</td>
139       <td>{if $hasProfile}{$user->displayName()}{else}<input type="text" name="display_name" maxlength="255" value="{$user->displayName()}" />{/if}</td>
140     </tr>
141     <tr>
142       <td class="titre">Sexe</td>
143       <td>
144         <label>femme <input type="radio" name="sex" value="female" {if $user->isFemale()}checked="checked"{/if} /></label>
145         <label><input type="radio" name="sex" value="male" {if !$user->isFemale()}checked="checked"{/if} /> homme</label>
146       </td>
147     </tr>
148     <tr class="impair">
149       <td class="titre">Mot de passe</td>
150       <td>
151         <div style="float: left">
152           <input type="text" name="new_plain_password" size="10" maxlength="256" value="********" />
153           <input type="hidden" name="hashpass" value="" />
154         </div>
155         <div style="float: left; margin-top: 5px;">
156           {checkpasswd prompt="new_plain_password" submit="dummy_none"}
157         </div>
158       </td>
159     </tr>
160     <tr class="impair">
161       <td class="titre">Mot de passe SMTP</td>
162       <td>
163         <div style="float: left">
164           <input type="password" name="weak_password" size="10" maxlength="256" value="" />
165           {if $user->weak_access}
166           <input type="submit" name="disable_weak_access" value="Supprimer" />
167           {/if}
168         </div>
169       </td>
170     </tr>
171     <tr class="impair">
172       <td class="titre">Accès RSS</td>
173       <td>
174         <label>
175           <input type="checkbox" name="token_access" {if $user->token_access}checked="checked"{/if} value="1" />
176           activer l'accès
177         </label>
178       </td>
179     </tr>
180     <tr class="impair">
181       <td class="titre">Skin</td>
182       <td>
183         <select name="skin">
184           <option value="" {if !$user->skin}selected="selected"{/if}>Aucune (défaut du système)</option>
185           {iterate from=$skins item=skin}
186           <option value="{$skin.id}" {if $user->skin eq $skin.id}selected="selected"{/if}>{$skin.name}</option>
187           {/iterate}
188         </select>
189       </td>
190     </tr>
191     <tr class="pair">
192       <td class="titre">Etat du compte</td>
193       <td>
194         <select name="state">
195           <option value="pending" {if $user->state eq 'pending'}selected="selected"{/if}>pending (Non-inscrit)</option>
196           <option value="active" {if $user->state eq 'active'}selected="selected"{/if}>active (Inscrit, peut se logguer)</option>
197           <option value="disabled" {if $user->state eq 'disabled'}selected="selected"{/if}>disabled (Inscrit, accès interdit)</option>
198         </select><br />
199         <label>
200           <input type="checkbox" name="is_admin" value="1" {if $user->is_admin}checked="checked"{/if} />
201           administrateur du site
202         </label>
203       </td>
204     </tr>
205     <tr class="pair">
206       <td class="titre">Type de compte</td>
207       <td>
208         <select name="type">
209           {iterate from=$account_types item=type}
210           <option value="{$type.type}" {if $user->type eq $type.type}selected="selected"{/if}>{$type.type} ({$type.perms})</option>
211           {/iterate}
212         </select>
213         <a href="admin/account/types">{icon name=wrench title=Gérer} gérer</a>
214       </td>
215     </tr>
216     <tr class="pair">
217       <td class="titre">
218         Surveillance
219       </td>
220       <td>
221         <label><input type="checkbox" name="watch" {if $user->watch}checked="checked"{/if} value="1" />
222         Surveiller l'activité de ce compte</label><br />
223         <span class="smaller">Cette option permet d'avoir des logs complets de l'activité
224         du compte via le logger, et d'être alerté lors des connexions de l'utilisateur.</span>
225       </td>
226     </tr>
227     <tr class="pair">
228       <td class="titre">
229         Commentaire
230       </td>
231       <td>
232         <input type="text" name="comment" size="40" maxlength="64" value="{$user->comment}" />
233       </td>
234     </tr>
235     <tr class="impair">
236       <td colspan="2" class="center">
237         <input type="submit" name="update_account" value="Mettre à jour" onclick="encryptPassword()" />
238         <input type="submit" name="su_account" value="Prendre l'identité" />
239         <input type="submit" name="log_account" value="Consulter les logs" />
240       </td>
241     </tr>
242   </table>
243 </form>
244
245 <h1>Fiches associées au compte</h1>
246
247 <form id="profiles" method="post" action="admin/user/{$user->login()}#account">
248   {xsrf_token_field}
249   <table class="bicol">
250     <tr>
251       <th></th>
252       <th>Identifiant de la fiche</th>
253       <th></th>
254     </tr>
255     {iterate from=$profiles item=profile}
256     <tr>
257       <td><input type="radio" name="owner" value="{$profile.pid}" {if $profile.owner}checked="checked"{/if}
258                  onclick="this.form.submit()" /></td>
259       <td>{$profile.hrpid} (pid {$profile.pid})</td>
260       <td class="right">
261         <a href="profile/edit/{$profile.hrpid}">{icon name=user_edit}</a>
262         <a href="profile/{$profile.hrpid}" class="popup2">{icon name=user_suit}</a>
263         <a href="javascript:del_profile({$profile.pid})">{icon name=cross}</a>
264       </td>
265     </tr>
266     {/iterate}
267     <tr>
268       <td>
269         <input type="radio" name="owner" value="0" onclick="this.form.submit()" />
270       </td>
271       <td>None</td>
272       <td></td>
273     </tr>
274     <tr class="pair">
275       <td colspan="3">
276         <input type="hidden" name="del_profile" value="" />
277         <input type="text" maxlength="64" name="new_profile" />
278         <input type="submit" name="add_profile" value="Ajouter" />
279       </td>
280     </tr>
281   </table>
282 </form>
283
284 </div>
285
286 <div id="emails">
287 <h1>Gestion de l'adresse X.org</h1>
288
289 <form id="alias" method="post" action="admin/user/{$user->login()}#emails">
290   {xsrf_token_field}
291   <table class="bicol" cellpadding="2" cellspacing="0">
292     <tr>
293       <th class="alias" colspan="3">
294         Alias email de l'utilisateur
295       </th>
296     </tr>
297     {iterate from=$aliases item=a}
298     <tr class="{cycle values="impair,pair"}">
299       <td>
300         <input type="radio" name='best' {if $a.best}checked="checked"{/if} value='{$a.alias}' onclick="this.form.submit()" />
301       </td>
302       <td>
303         {if $a.for_life}<strong>{$a.alias}</strong>{else}{$a.alias}{/if}
304         {if $a.expire}<span class='erreur'>(expire le {$a.expire|date_format})</span>{/if}
305       </td>
306       {if $a.for_life}
307       <td>garanti à vie*</td>
308       {else}
309       <td class="action">
310         <a href="javascript:del_alias('{$a.alias}')">{icon name=cross}</a>
311       </td>
312       {/if}
313     </tr>
314     {/iterate}
315     <tr class="{cycle values="impair,pair"}">
316       <td colspan="2" class="detail">
317         <input type="text" name="email" size="29" maxlength="60" value="" />
318       </td>
319       <td class="action">
320         <input type="hidden" name="uid" value="{$user->id()}" />
321         <input type="hidden" name="del_alias" value="" />
322         <input type="submit" name="add_alias" value="Ajouter" />
323       </td>
324     </tr>
325     <tr class="{cycle values="impair,pair"}">
326       <td colspan="3" class="desc">
327         <strong>* à ne modifier qu'avec l'accord express de l'utilisateur !!!</strong>
328       </td>
329     </tr>
330   </table>
331 </form>
332
333 <br />
334
335 <form id="fwds" method="post" action="admin/user/{$user->login()}#emails">
336   {xsrf_token_field}
337   <table class="bicol" cellpadding="2" cellspacing="0">
338     <tr>
339       <th colspan="4">
340         Redirections
341       </th>
342     </tr>
343     {assign var=actives value=false}
344     {assign var=disabled value=false}
345     {foreach item=mail from=$emails}
346     {cycle assign=class values="impair,pair"}
347     <tr class="{$class}">
348       {if $mail->active && $mail->has_disable()}
349         {assign var=actives value=true}
350       {elseif $mail->disabled && $mail->has_disable()}
351         {assign var=disabled value=true}
352       {/if}
353       <td class="titre">
354         {if $mail->active}active{elseif $mail->disabled}suspendue{/if}
355       </td>
356       <td>
357         <span class="smaller">
358           {if !$mail->disabled}
359           <a href="javascript:act_fwd('{$mail->email}',{if $mail->active}false{else}true{/if})">
360             {if $mail->active}des{elseif $mail->broken}ré{/if}activer
361           </a>
362           {/if}
363         </span>
364       </td>
365       <td>
366         {if $mail->broken}<span style="color: #f00">{/if}
367         {if $mail->email == 'googleapps'}<a href="admin/googleapps/user/{$user->login()}">{/if}
368         {$mail->display_email}
369         {if $mail->email == 'googleapps'}</a>{/if}
370         {if $mail->broken}<em> (en panne)</em></span>{/if}
371       </td>
372       <td class="action">
373         {if $mail->is_removable()}
374         <a href="javascript:del_fwd('{$mail->email}')">{icon name=cross}</a>
375         {/if}
376       </td>
377     </tr>
378     {if $mail->panne && $mail->panne neq "0000-00-00"}
379     <tr class="{$class}">
380       <td colspan="3" class="smaller" style="color: #f00">
381         {icon name=error title="Panne"}
382         Panne de {$mail->display_email} le {$mail->panne|date_format}
383         {if $mail->panne neq $mail->last}confirmée le {$mail->last|date_format}{/if}
384       </td>
385       <td class="action">
386         <a href="javascript:clean_fwd('{$mail->email}')">effacer les pannes</a>
387       </td>
388     </tr>
389     {/if}
390     {/foreach}
391     {cycle assign=class values="impair,pair"}
392     <tr class="{$class}">
393       <td class="titre" colspan="2">
394         Ajouter une adresse
395       </td>
396       <td>
397         <input type="text" name="email" size="29" maxlength="60" value="" />
398       </td>
399       <td class="action">
400         <input type="hidden" name="uid" value="{$user->id()}" />
401         <input type="hidden" name="del_fwd" value="" />
402         <input type="hidden" name="clean_fwd" value="" />
403         <input type="hidden" name="activate_fwd" value="" />
404         <input type="hidden" name="deactivate_fwd" value="" />
405         <input type="submit" name="add_fwd" value="Ajouter" />
406       </td>
407     </tr>
408     <tr class="{$class}">
409       <td colspan="4" class="center">
410         {if $actives}
411         <input type="submit" name="disable_fwd" value="Désactiver la redirection des emails" />
412         {/if}
413         {if $disabled}
414         <input type="submit" name="enable_fwd" value="Réactiver la redirection des emails" />
415         {/if}
416       </td>
417     </tr>
418   </table>
419 </form>
420
421 {javascript name="ajax"}
422 {test_email hruid=$user->login()}
423
424 <h1>Autres adresses de l'utilisateur</h1>
425
426 <table class="bicol">
427   <tr>
428     <th>Virtual aliases auquel l'utilisateur appartient</th>
429   </tr>
430   {foreach from=$virtuals item=virtual}
431   <tr class="{cycle values="impair,pair"}">
432     <td>{$virtual}</td>
433   </tr>
434   {/foreach}
435 </table>
436 </div>
437
438 <div id="authext">
439 <h1>Gestion des autorisations d'authentification externe</h1>
440
441 <form id="openid" method="post" action="admin/user/{$user->login()}#authext">
442   {xsrf_token_field}
443   <table class="bicol">
444     <tr>
445       <th colspan="2">Sites de confiance</th>
446     </tr>
447     {iterate from=$openid item=site}
448     <tr class="{cycle values="pair,impair"}">
449       <td><a href="{$site.url}">{$site.url}</a></td>
450       <td><a href="javascript:del_openid({$site.id})">{icon name=cross}</a></td>
451     </tr>
452     {/iterate}
453   </table>
454   <div><input type="hidden" name="del_openid"/></div>
455 </form>
456 </div>
457
458 <div id="forums">
459 <h1>Gestion de l'accès au forums</h1>
460
461 <form id="bans" method="post" action="admin/user/{$user->login()}#forums">
462   {xsrf_token_field}
463   <table class="bicol">
464     <tr>
465       <th colspan="4">
466         Permissions sur les forums
467       </th>
468     </tr>
469     <tr class="impair">
470       <td class="titre">
471         Poster
472       </td>
473       <td>
474         <input type="text" name="write_perm" size="32" maxlength="255" value="{$bans.write_perm}" />
475       </td>
476       <td class="action">
477         <a href="javascript:ban_write()">Bannir</a>
478       </td>
479     </tr>
480     <tr class="pair">
481       <td class="titre">
482         Lire
483       </td>
484       <td>
485         <input type="text" name="read_perm" size="32" maxlength="255" value="{$bans.read_perm}" />
486       </td>
487       <td class="action">
488         <a href="javascript:ban_read()">Bannir</a>
489       </td>
490     </tr>
491     <tr class="impair">
492       <td class="titre">
493         Commentaire
494       </td>
495       <td colspan="2">
496         <input type="text" name="comment" size="40" maxlength="255" value="{$bans.comment}" />
497       </td>
498     </tr>
499     <tr class="center">
500       <td colspan="3">
501         <input type="hidden" name="uid" value="{$user->id()}" />
502         <input type="submit" name="b_edit" value="Modifier" />
503       </td>
504     </tr>
505   </table>
506 </form>
507 </div>
508
509 {else}
510
511 {literal}
512 <script type="text/javascript">
513 /* <![CDATA[ */
514   function add_user_to_url(f) {
515     f.action += '/' + f.login.value;
516   }
517 /* ]]> */
518 </script>
519 {/literal}
520 <form method="post" action="admin/user" onsubmit="add_user_to_url(this); return true">
521   {xsrf_token_field}
522   <table class="tinybicol" cellspacing="0" cellpadding="2">
523     <tr>
524       <th>
525         Administrer
526       </th>
527     </tr>
528     <tr class="pair">
529       <td class="center">
530         Il est possible d'entrer ici n'importe quelle adresse mail&nbsp;: redirection, melix, ou alias.
531       </td>
532     </tr>
533     <tr>
534       <td class="center">
535         <input type="text" name="login" size="40" maxlength="255" value="{$smarty.request.login|default:$user->hruid}" />
536       </td>
537     </tr>
538     <tr>
539       <td class="center">
540         <input type="submit" name="select" value=" edit " /> &nbsp;&nbsp;
541         <input type="submit" name="su_account" value=" su " />  &nbsp;&nbsp;
542         <input type="submit" name="log_account" value=" logs " />
543       </td>
544     </tr>
545   </table>
546 </form>
547 {/if}
548
549 {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}