Improve ergonomy of the AX ID field on the profile page
[platal.git] / templates / profile / profile.tpl
1 {**************************************************************************}
2 {*                                                                        *}
3 {*  Copyright (C) 2003-2014 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 {literal}
24 <script type="text/javascript">//<![CDATA[
25 function chgMainWinLoc(strPage)
26 {
27   strPage = $.plURL(strPage);
28   if (parent.opener) {
29     try {
30       parent.opener.document.location = strPage;
31       window.close();
32     } catch(e) {
33       window.open(strPage);
34     }
35   } else {
36     document.location = strPage;
37   }
38 }
39
40 $($.closeOnEsc);
41
42 //]]></script>
43 {/literal}
44 <div id="fiche">
45   <div id="photo" class="part">
46     {assign var=photo value=$profile->getPhoto(false)}
47     {if $photo}<img alt="Photo de {$profile->fullName()}" src="photo/{$profile->hrid()}{if $with_pending_pic}/req{/if}" width="{$photo->width()}"/>{/if}
48
49     {if $logged && $view->isVisible(#Visibility::EXPORT_AX#) && ( $profile->section|smarty:nodefaults || $profile->getBinets()|smarty:nodefaults || ($owner && $owner->groups(true,true)|smarty:nodefaults))}
50       <h2>À l'X&hellip;</h2>
51       {if $profile->section}<div><em class="intitule">Section&nbsp;: </em><span>{$profile->section}</span></div>{/if}
52
53       {assign var=binets value=$profile->getFullBinets()}
54       {if $binets|@count}<div><em class="intitule">Binet{if count($binets) > 1}s{/if}&nbsp;: </em>
55       <span> <br />
56       {foreach from=$binets item=binet name=binets}
57         {if !$smarty.foreach.binets.first}, {/if}
58         <span title="{$binet.text}">{if $binet.url}<a href="{$binet.url}">{/if}{$binet.text}{if $binet.url}</a>{/if}</span>
59       {/foreach}
60       </span></div>{/if}
61
62       {if $owner && $view->isVisible(#Visibility::EXPORT_AX#)}
63         {assign var=groups value=$owner->groups(true,true)}
64         {if $groups|@count}<div><em class="intitule">Groupe{if count($groups) > 1}s{/if} et institution{if count($groups) > 1}s{/if} X&nbsp;: </em>
65         <span><br/>
66         {foreach from=$groups item=group name=groups}
67           {if !$smarty.foreach.groups.first}, {/if}
68           <span title="{$group.nom}"><a href="{if $group.site}{$group.site}{else}http://www.polytechnique.net/{$group.diminutif}{/if}">{$group.nom}</a></span>
69         {/foreach}
70         </span></div>{/if}
71       {/if}
72
73     {/if}
74
75     {assign var=networking value=$profile->getNetworking(#Profile::NETWORKING_ALL#)}
76     {if count($networking) > 0}
77       <h2>Sur le web...</h2>
78       {foreach from=$networking item=network}
79         <img style="width: auto; padding: 0" src="profile/networking/{$network.nwid}" alt="{$network.name}" title="{$network.name}"/>
80         {if $network.link}
81           <a href="{$network.link|replace:'%s':$network.address}">{$network.address}</a>
82         {else}
83           {$network.address}
84         {/if}
85         <br/>
86       {/foreach}
87     {/if}
88
89     {assign var=hobbies value=$profile->getHobbies()}
90     {if count($hobbies) > 0}
91       <h2>Hobbies...</h2>
92       {foreach from=$hobbies key=type item=text}
93         <div><em class="intitule">{$type} : </em>{$text}</div>
94       {/foreach}
95     {/if}
96
97     {if $profile->freetext}
98       <h2>Commentaires&nbsp;:</h2>
99       <span>{$profile->freetext|miniwiki|smarty:nodefaults}</span>
100     {/if}
101
102   </div>
103
104   <div id="fiche_identite" class="part">
105     <div class="civilite">
106       {if $profile->isFemale()}&bull;{/if}
107       {if $view->isVisible(#Visibility::EXPORT_PRIVATE#)}{$profile->private_name}{else}{$profile->public_name}{/if}
108       {if ( hasPerm('admin') || $smarty.session.user->canEdit($profile)) && $view->isVisible(#Visibility::EXPORT_PRIVATE#)}
109         <span title="Identifiant AX, uniquement visible par les administrateurs du site" style="font-weight:normal;font-style:italic;"> ({$profile->ax_id})</span>
110       {/if}
111
112       {if $logged}
113         &nbsp;{if !$profile->isDead()}<a href="vcard/{$owner->login()}.vcf">{*
114           *}{icon name=vcard title="Afficher la carte de visite"}</a>{/if}
115
116         {if !$smarty.session.user->isContact($profile)}
117         <a href="javascript:chgMainWinLoc('carnet/contacts?action=ajouter&amp;user={$owner->login()}&amp;token={xsrf_token}')">
118           {icon name=add title="Ajouter à mes contacts"}</a>
119         {else}
120         <a href="javascript:chgMainWinLoc('carnet/contacts?action=retirer&amp;user={$owner->login()}&amp;token={xsrf_token}')">
121           {icon name=cross title="Retirer de mes contacts"}</a>
122         {/if}
123
124         {if hasPerm('admin')}
125         <a href="javascript:chgMainWinLoc('admin/user/{$owner->login()}')">
126           {icon name=wrench title="administrer user"}</a>
127         {/if}
128
129         {if $smarty.session.user->isMyProfile($profile)}
130         <a href="javascript:chgMainWinLoc('profile/edit')">{icon name="user_edit" title="Modifier ma fiche"}</a>
131         {elseif hasPerm('admin') || $smarty.session.user->canEdit($profile)}
132         <a href="javascript:chgMainWinLoc('profile/edit/{$profile->hrpid}')">
133           {icon name=user_edit title="modifier la fiche"}
134         </a>
135         {/if}
136       {/if}
137     </div>
138
139     {if $logged && $view->isVisible(#Visibility::EXPORT_AX#) && $owner && $owner->state eq 'active'}
140     <div class='maj'>
141       Fiche mise à jour<br />
142       le {$profile->last_change|date_format}
143     </div>
144     {/if}
145
146     {* 121634816 is Profile::PHONE_LINK_PROFILE | Profile::PHONE_TYPE_ANY = 0x7400000 *}
147     {assign var=phones value=$profile->getPhones(121634816)}
148     {if ($logged && $view->isVisible(#Visibility::EXPORT_AX#)) || count($phones) > 0}
149     <div class="contact">
150       {if $logged && $view->isVisible(#Visibility::EXPORT_AX#)}
151       <div class='email'>
152         {if $profile->isDead()}
153         Décédé{if $profile->isFemale()}e{/if} le {$profile->deathdate|date_format}
154         {elseif $owner && $owner->lost}
155         Ce{if $profile->isFemale()}tte{/if} camarade n'a plus d'adresse de redirection valide,<br />
156         <a href="marketing/broken/{$owner->login()}" class="popup">clique ici si tu connais son adresse email&nbsp;!</a>
157         {elseif $owner && $owner->state != 'active'}
158         Cette personne n'est pas inscrite à Polytechnique.org,<br />
159         <a href="marketing/public/{$owner->login()}" class="popup">clique ici si tu connais son adresse email&nbsp;!</a>
160         {else}
161         {if $virtualalias && $view->isVisible(#Visibility::EXPORT_PRIVATE#) && $virtualalias neq $owner->bestEmail()}
162         <a href="mailto:{$virtualalias}">{$virtualalias}</a><br />
163         {/if}
164         <a href="mailto:{$owner->bestEmail()}">{$owner->bestEmail()}</a>
165         {if $owner->bestEmail() neq $owner->forlifeEmail()}<br />
166         <a href="mailto:{$owner->forlifeEmail()}">{$owner->forlifeEmail()}</a>
167         {/if}
168         {/if}
169       </div>
170       {/if}
171       {if count($phones) > 0}
172       <div style="float: right">
173         {display_phones tels=$phones dcd=$profile->isDead()}
174       </div>
175       {/if}
176       <div class='spacer'></div>
177     </div>
178     {else}
179     <div class='spacer'></div>
180     {/if}
181
182     <div class='formation'>
183       {foreach from=$profile->nationalities() item=country key=code}
184       <img src='images/flags/{$code}.gif' alt='{$code}' height='11' title='{$country}' />&nbsp;
185       {/foreach}
186
187       {$profile->promo('details')}
188
189       {if $logged && $view->isVisible(#Visibility::EXPORT_AX#) && $profile->mentor_expertise}
190       [<a href="referent/{$profile->hrid()}" class='popup2'>Ma fiche référent</a>]
191       {/if}
192
193       {assign var=educations value=$profile->getEducations(32)}
194       {if count($educations) > 0}
195         <ul>
196         {foreach from=$educations item=edu}
197           <li>{display_education edu=$edu profile=$profile full=true}</li>
198         {/foreach}
199         </ul>
200       {/if}
201
202       {assign var=corps value=$profile->getCorps()}
203       {if $corps && ($corps->current || $corps->original)}
204         <ul>
205         {if $corps->current}
206           <li>
207             Corps actuel&nbsp;: {$corps->current_name}
208             {if $corps->current_rank}({$corps->current_rank}){/if}
209           </li>
210         {/if}
211         {if $corps->current != $corps->original && $corps->original}
212           <li>Corps d'origine&nbsp;: {$corps->original_name}</li>
213         {/if}
214         </ul>
215       {/if}
216
217     </div>
218   </div>
219
220   {assign var=addr value=$profile->getAddresses(3)}
221   {if count($addr) > 0}
222   <div class="part">
223     <h2>Contact&nbsp;: </h2>
224     {if $profile->isDead()}
225       {assign var=address_name value="Dernière adresse"}
226     {else}
227       {assign var=address_name value="Adresse"}
228     {/if}
229     {foreach from=$addr item="address" name=addresses}
230       {if $smarty.foreach.addresses.iteration is even}
231         {assign var=pos value="right"}
232       {else}
233         {assign var=pos value="left"}
234       {/if}
235       {if $address->hasFlag('current')}
236       {include file="geoloc/address.tpl" address=$address titre_div=true titre=$address_name|@cat:" actuelle&nbsp;:"
237                for="`$profile->firstname` `$profile->lastname`" pos=$pos phones=null}
238       {elseif $address->hasFlag('secondary')}
239       {include file="geoloc/address.tpl" address=$address titre_div=true titre=$address_name|@cat:" secondaire&nbsp;:"
240                for="`$profile->firstname` `$profile->lastname`" pos=$pos phones=null}
241       {else}
242       {include file="geoloc/address.tpl" address=$address titre_div=true titre=$address_name|@cat:" principale&nbsp;:"
243                for="`$profile->firstname` `$profile->lastname`" pos=$pos phones=null}
244       {/if}
245       {if $smarty.foreach.addresses.iteration is even}<div class="spacer"></div>{/if}
246     {/foreach}
247   </div>
248   {/if}
249
250   {assign var=jobs value=$profile->getJobs(2)}
251   {if count($jobs) > 0}
252   <div class="part">
253     <h2>Informations professionnelles&nbsp;:</h2>
254     {foreach from=$jobs item="job" key="i"}
255       {if $i neq 0}<hr />{/if}
256       {include file="include/emploi.tpl" job=$job}
257       {assign var=jobPhones value=$job->phones()}
258       {if $job->address()}
259         {include file="geoloc/address.tpl" address=$job->address() titre="Adresse&nbsp;: " for=$job->company->name pos="left" phones=$jobPhones}
260       {elseif $jobPhones|@count neq 0}
261         {display_phones tels=$jobPhones}
262       {/if}
263       <div class="spacer">&nbsp;</div>
264     {/foreach}
265   </div>
266   {/if}
267
268   {assign var=medals value=$profile->getMedals()}
269   {if count($medals) > 0}
270     <div class="part">
271       <h2>Distinctions&nbsp;: </h2>
272       {foreach from=$medals item=m}
273       <div class="medal_frame">
274         <img src="profile/medal/thumb/{$m.mid}" height="50px" alt="{$m.text}" title="{$m.text}" style='float: left;' />
275         <div class="medal_text">
276           {$m.text}{if $m.level} ({$m.level}){/if}<br />{$m.grade}
277         </div>
278       </div>
279       {/foreach}
280       <div class="spacer">&nbsp;</div>
281     </div>
282   {/if}
283
284   {if $logged && $profile->cv}
285   <div class="part">
286     <h2>Curriculum Vitae&nbsp;:</h2>
287     {$profile->cv|miniwiki:title|smarty:nodefaults}
288   </div>
289   {/if}
290
291   {if $view->level() eq #Visibility::VIEW_PUBLIC#}
292   <div class="part">
293     <small>
294     Cette fiche est publique et visible par tout internaute,<br />
295     vous pouvez aussi voir <a href="profile/private/{$profile->hrid()}?display=light">celle&nbsp;réservée&nbsp;aux&nbsp;X</a>.
296     </small>
297   </div>
298   {elseif $view->level() eq #Visibility::VIEW_AX#}
299   <div class="part">
300     <small>
301     Cette fiche est privée et ne recense que les informations transmises à l'AX.
302     </small>
303   </div>
304   {/if}
305
306   <div class="spacer"></div>
307 </div>
308
309 {* vim:set et sw=2 sts=2 sws=2 fenc=utf-8: *}