]> git.agnieray.net Git - galette.git/blob - galette/templates/default/gestion_adherents.tpl
Resctict edit button to authorized users
[galette.git] / galette / templates / default / gestion_adherents.tpl
1 {extends file="page.tpl"}
2
3
4 {function name=draw_actions}
5 <td class="{$rclass} center nowrap actions_row">
6 {if $member->canEdit($login)}
7 <a
8 href="{path_for name="editMember" data=["id" => $member->id]}"
9 class="tooltip action"
10 >
11 <i class="fas fa-user-edit fa-fw" aria-hidden="true"></i>
12 <span class="sr-only">{_T string="%membername: edit information" pattern="/%membername/" replace=$member->sname}</span>
13 </a>
14 {/if}
15 {if $login->isAdmin() or $login->isStaff()}
16 <a
17 href="{path_for name="contributions" data=["type" => "contributions", "option" => "member", "value" => $member->id]}"
18 class="tooltip"
19 >
20 <i class="fas fa-cookie fa-fw" aria-hidden="true"></i>
21 <span class="sr-only">{_T string="%membername: contributions" pattern="/%membername/" replace=$member->sname}</span>
22 </a>
23 <a
24 href="{path_for name="removeMember" data=["id" => $member->id]}"
25 class="delete tooltip"
26 >
27 <i class="fas fa-user-times fa-fw" aria-hidden="true"></i>
28 <span class="sr-only">{_T string="%membername: remove from database" pattern="/%membername/" replace=$member->sname}</span>
29 </a>
30 {/if}
31 {if $login->isSuperAdmin()}
32 <a
33 href="{path_for name="impersonate" data=["id" => $member->id]}"
34 class="tooltip"
35 >
36 <i class="fas fa-user-secret fa-fw" aria-hidden="true"></i>
37 <span class="sr-only">{_T string="Log in in as %membername" pattern="/%membername/" replace=$member->sname}</span>
38 </a>
39 {/if}
40 {* If some additionnals actions should be added from plugins, we load the relevant template file
41 We have to use a template file, so Smarty will do its work (like replacing variables). *}
42 {if $plugin_actions|@count != 0}
43 {foreach from=$plugin_actions key=plugin_name item=action}
44 {include file=$action module_id=$plugin_name|replace:'actions_':''}
45 {/foreach}
46 {/if}
47 </td>
48 {/function}
49
50 {block name="content"}
51 <form action="{path_for name="filter-memberslist"}" method="post" id="filtre">
52 <div id="listfilter">
53 {if !isset($adv_filters) || !$adv_filters}
54 <label for="filter_str">{_T string="Search:"}&nbsp;</label>
55 <input type="text" name="filter_str" id="filter_str" value="{$filters->filter_str}" type="search" placeholder="{_T string="Enter a value"}"/>&nbsp;
56 {_T string="in:"}&nbsp;
57 <select name="field_filter">
58 {html_options options=$field_filter_options selected=$filters->field_filter}
59 </select>
60 {_T string="among:"}&nbsp;
61 <select name="membership_filter" onchange="form.submit()">
62 {html_options options=$membership_filter_options selected=$filters->membership_filter}
63 </select>
64 <select name="filter_account" onchange="form.submit()">
65 {html_options options=$filter_accounts_options selected=$filters->filter_account}
66 </select>
67 <select name="group_filter" onchange="form.submit()">
68 <option value="0">{_T string="Select a group"}</option>
69 {foreach from=$filter_groups_options item=group}
70 <option value="{$group->getId()}"{if $filters->group_filter eq $group->getId()} selected="selected"{/if}>{$group->getIndentName()}</option>
71 {/foreach}
72 </select>
73 <button type="submit" class="tooltip action" title="{_T string="Apply filters"}" name="filter">
74 <i class="fa fa-search"></i>
75 {_T string="Filter"}
76 </button>
77 <button type="submit" class="tooltip action" title="{_T string="Save selected criteria"}" name="savesearch" id="savesearch">
78 <i class="fa fa-fw fa-save"></i>
79 {_T string="Save"}
80 </button>
81 <input type="submit" name="clear_filter" class="inline tooltip" value="{_T string="Clear filter"}" title="{_T string="Reset all filters to defaults"}"/>
82 <div>
83 {_T string="Members that have an email address:"}
84 <input type="radio" name="email_filter" id="filter_dc_email" value="{Galette\Repository\Members::FILTER_DC_EMAIL}"{if $filters->email_filter eq constant('Galette\Repository\Members::FILTER_DC_EMAIL')} checked="checked"{/if}>
85 <label for="filter_dc_email" >{_T string="Don't care"}</label>
86 <input type="radio" name="email_filter" id="filter_with_email" value="{Galette\Repository\Members::FILTER_W_EMAIL}"{if $filters->email_filter eq constant('Galette\Repository\Members::FILTER_W_EMAIL')} checked="checked"{/if}>
87 <label for="filter_with_email" >{_T string="With"}</label>
88 <input type="radio" name="email_filter" id="filter_without_email" value="{Galette\Repository\Members::FILTER_WO_EMAIL}"{if $filters->email_filter eq constant('Galette\Repository\Members::FILTER_WO_EMAIL')} checked="checked"{/if}>
89 <label for="filter_without_email" >{_T string="Without"}</label>
90 </div>
91 {else}
92 <p>
93 <strong>{_T string="Advanced search mode"}</strong>
94 <button type="submit" class="tooltip action" title="{_T string="Change search criteria"}" name="adv_criteria">
95 <i class="fa fa-edit"></i>
96 {_T string="Change criteria"}
97 </button>
98 <button type="submit" class="tooltip action" title="{_T string="Save current advanced search criteria"}" name="savesearch" id="savesearch">
99 <i class="fa fa-fw fa-save"></i>
100 {_T string="Save"}
101 </button>
102 <input type="hidden" name="advanced_search" value="1"/>
103 <input type="submit" name="clear_filter" class="inline tooltip" value="{_T string="Clear filter"}" title="{_T string="Reset all filters to defaults"}"/>
104 <br/>
105 <a href="#" id="showhideqry">{_T string="Show/hide query"}</a>
106 </p>
107 <pre id="sql_qry" class="hidden">{$filters->query}</pre>
108 {/if}
109 {include file="forms_types/csrf.tpl"}
110 </div>
111 <div class="infoline">
112 {_T string="%count member" plural="%count members" count=$nb_members pattern="/%count/" replace=$nb_members}
113 <div class="fright">
114 <label for="nbshow">{_T string="Records per page:"}</label>
115 <select name="nbshow" id="nbshow">
116 {html_options options=$nbshow_options selected=$numrows}
117 </select>
118 <noscript> <span><input type="submit" value="{_T string="Change"}" /></span></noscript>
119 </div>
120 </div>
121 </form>
122 <form action="{path_for name="batch-memberslist"}" method="post" id="listform">
123
124 <table class="listing">
125 <thead>
126 <tr>
127 {foreach item=column from=$galette_list}
128 {if $column->field_id eq 'id_adh'}
129 {if $preferences->pref_show_id}
130 <th class="id_row">
131 <a href="{path_for name="members" data=["option" => "order", "value" => "Galette\Repository\Members::ORDERBY_ID"|constant]}">
132 {_T string="Mbr id"}
133 {if $filters->orderby eq constant('galette\Repository\Members::ORDERBY_ID')}
134 {if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
135 <img src="{base_url}/{$template_subdir}images/down.png" width="10" height="6" alt=""/>
136 {else}
137 <img src="{base_url}/{$template_subdir}images/up.png" width="10" height="6" alt=""/>
138 {/if}
139 {/if}
140 </a>
141 </th>
142 {else}
143 <th class="id_row">#</th>
144 {/if}
145 {else}
146 <th class="left">
147 <a href="{path_for name="members" data=["option" => "order", "value" => $column->field_id]}">
148 {$column->label}
149 {if $filters->orderby eq $column->field_id}
150 {if $filters->ordered eq constant('Galette\Filters\MembersList::ORDER_ASC')}
151 <img src="{base_url}/{$template_subdir}images/down.png" width="10" height="6" alt=""/>
152 {else}
153 <img src="{base_url}/{$template_subdir}images/up.png" width="10" height="6" alt=""/>
154 {/if}
155 {/if}
156 </a>
157 </th>
158 {/if}
159 {/foreach}
160 <th class="actions_row">{_T string="Actions"}</th>
161 </tr>
162 </thead>
163 <tbody>
164 {foreach from=$members item=member key=ordre}
165 {assign var=rclass value=$member->getRowClass() }
166 <tr>
167 {foreach item=column from=$galette_list}
168 {if $column->field_id eq 'id_adh'}
169 <td class="{$rclass} right" data-scope="id">
170 {if $preferences->pref_show_id}
171 {$member->id}
172 {else}
173 {$ordre+1+($filters->current_page - 1)*$numrows}
174 {/if}
175 </td>
176 {elseif $column->field_id eq 'list_adh_name'}
177 <td class="{$rclass} nowrap username_row" data-scope="row">
178 <input type="checkbox" name="member_sel[]" value="{$member->id}"/>
179 {if $member->isCompany()}
180 <span class="tooltip">
181 <img src="{base_url}/{$template_subdir}images/icon-company.png" alt="" width="16" height="16"/>
182 <span class="sr-only">{_T string="Is a company"}</span>
183 </span>
184 {elseif $member->isMan()}
185 <span class="tooltip">
186 <img src="{base_url}/{$template_subdir}images/icon-male.png" alt="" width="16" height="16"/>
187 <span class="sr-only">{_T string="Is a man"}</span>
188 </span>
189 {elseif $member->isWoman()}
190 <span class="tooltip">
191 <img src="{base_url}/{$template_subdir}images/icon-female.png" alt="" width="16" height="16"/>
192 <span class="sr-only">{_T string="Is a woman"}</span>
193 </span>
194 {else}
195 <img src="{base_url}/{$template_subdir}images/icon-empty.png" alt="" width="16" height="16"/>
196 {/if}
197 {if $member->email != ''}
198 <a href="mailto:{$member->email}" class="tooltip">
199 <img src="{base_url}/{$template_subdir}images/icon-mail.png" alt="" width="16" height="16"/>
200 <span class="sr-only">{_T string="Mail"}</span>
201 </a>
202 {else}
203 <img src="{base_url}/{$template_subdir}images/icon-empty.png" alt="" width="16" height="16"/>
204 {/if}
205 {if $member->isAdmin()}
206 <span class="tooltip">
207 <img src="{base_url}/{$template_subdir}images/icon-star.png" alt="" width="16" height="16"/>
208 <span class="sr-only">{_T string="Admin"}</span>
209 </span>
210 {elseif $member->isStaff()}
211 <span class="tooltip">
212 <img src="{base_url}/{$template_subdir}images/icon-staff.png" alt="" width="16" height="16"/>
213 <span class="sr-only">{_T string="Staff member"}</span>
214 </span>
215 {else}
216 <img src="{base_url}/{$template_subdir}images/icon-empty.png" alt="" width="16" height="16"/>
217 {/if}
218 {assign var="mid" value=$member->id}
219 <a href="{path_for name="member" data=["id" => $member->id]}">{$member->sname}{if $member->company_name} ({$member->company_name|escape}){/if}</a>
220 </td>
221 {else}
222 {assign var="lrclass" value=$rclass}
223 {assign var="propname" value=$column->propname}
224 {assign var="propvalue" value=$member->$propname}
225 {assign var="value" value=null}
226
227 {if $column->field_id eq 'nom_adh'}
228 {assign var="value" value=$member->sfullname}
229 {elseif $column->field_id eq 'pseudo_adh'}
230 {assign var="lrclass" value="$rclass nowrap"}
231 {assign var=value value=$member->$propname}
232 {elseif $column->field_id eq 'tel_adh' or $column->field_id eq 'gsm_adh'}
233 {assign var="lrclass" value="$rclass nowrap"}
234 {elseif $column->field_id eq 'id_statut'}
235 {assign var="lrclass" value="$rclass nowrap"}
236 {assign var=value value={statusLabel id=$member->$propname}}
237 {elseif $column->field_id eq 'titre_adh'}
238 {if is_object($member->title)}
239 {assign var=value value=$member->title->long}
240 {/if}
241 {elseif $column->field_id eq 'pref_lang'}
242 {assign var="value" value=$i18n->getNameFromId($member->language)}
243 {elseif $column->field_id eq 'adresse_adh'}
244 {assign var="value" value=$member->saddress|escape|nl2br}
245 {assign var="escaped" value=true}
246 {elseif $column->field_id eq 'bool_display_info'}
247 {assign var="value" value=$member->sappears_in_list}
248 {elseif $column->field_id eq 'activite_adh'}
249 {assign var="value" value=$member->sactive}
250 {elseif $column->field_id eq 'id_statut'}
251 {assign var="value" value=$member->sstatus}
252 {elseif $column->field_id eq 'bool_admin_adh'}
253 {assign var="value" value=$member->sadmin}
254 {elseif $column->field_id eq 'bool_exempt_adh'}
255 {assign var="value" value=$member->sdue_free}
256 {elseif $column->field_id eq 'sexe_adh'}
257 {assign var="value" value=$member->sgender}
258 {/if}
259
260 {* If value has not been set, take the generic value *}
261 {if !$value}
262 {if $propvalue}
263 {assign var=value value=$propvalue|escape}
264 {else}
265 {assign var=value value=$propvalue}
266 {/if}
267 {else if !isset($escaped)}
268 {assign var=value value=$value|escape}
269 {/if}
270
271 <td class="{$lrclass}" data-title="{$column->label}">
272 {* Display column.
273 A check is done here to adapt display, this is may not the best way to go
274 but for notw, that works as excpected.
275 *}
276 {if not empty($value)}
277 {if $column->field_id eq 'email_adh'}
278 <a href="mailto:{$value}">{$value}</a>
279 {elseif $column->field_id eq 'tel_adh' or $column->field_id eq 'gsm_adh'}
280 <a href="tel:{$value}">{$value}</a>
281 {elseif $column->field_id eq 'parent_id'}
282 <a href="{path_for name="member" data=["id" => $member->parent]}">{memberName id=$member->parent}</a>
283 {elseif $column->field_id eq 'ddn_adh'}
284 {$value} {$member->getAge()}
285 {else}
286 {$value}
287 {/if}
288 {/if}
289 </td>
290 {/if}
291 {/foreach}
292 {draw_actions class=$rclass member=$member login=$login plugin_actions=$plugin_actions}
293 </tr>
294 {foreachelse}
295 {* colspan +1 for actions column *}
296 <tr><td colspan="{$galette_list|count + 1}" class="emptylist">{_T string="No member has been found"}</td></tr>
297 {/foreach}
298 </tbody>
299 </table>
300 {if $nb_members != 0}
301 <div class="center cright">
302 {_T string="Pages:"}<br/>
303 <ul class="pages">{$pagination}</ul>
304 </div>
305 <ul class="selection_menu">
306 <li>{_T string="For the selection:"}</li>
307 {if $login->isAdmin() or $login->isStaff()}
308 <li>
309 <button type="submit" id="delete" name="delete">
310 <i class="fas fa-user-times fa-fw"></i> {_T string="Delete"}
311 </button>
312 </li>
313 <li>
314 <button type="submit" id="masschange" name="masschange" class="action">
315 <i class="fas fa-user-edit fa-fw"></i> {_T string="Mass change"}
316 </button>
317 </li>
318 <li>
319 <button type="submit" id="masscontributions" name="masscontributions" class="action">
320 <i class="fas fa-cookie-bite fa-fw"></i> {_T string="Mass add contributions"}
321 </button>
322 </li>
323 {if $pref_mail_method neq constant('Galette\Core\GaletteMail::METHOD_DISABLED')}
324 <li>
325 <button type="submit" id="sendmail" name="mailing">
326 <i class="fas fa-mail-bulk fa-fw"></i> {_T string="Mail"}
327 </button>
328 </li>
329 {/if}
330 {/if}
331 <li>
332 <button type="submit" id="attendance_sheet" name="attendance_sheet">
333 <i class="fas fa-file-alt fa-fw"></i> {_T string="Attendance sheet"}
334 </button>
335 </li>
336 <li>
337 <button type="submit" id="labels" name="labels">
338 <i class="far fa-address-card fa-fw"></i> {_T string="Generate labels"}
339 </button>
340 </li>
341 <li>
342 <button type="submit" id="cards" name="cards">
343 <i class="fas fa-id-badge fa-fw"></i> {_T string="Generate Member Cards"}
344 </button>
345 </li>
346 {if $login->isAdmin() or $login->isStaff()}
347 <li>
348 <button type="submit" id="csv" name="csv">
349 <i class="fas fa-file-csv fa-fw"></i> {_T string="Export as CSV"}
350 </button>
351 </li>
352 {/if}
353 {if $plugin_batch_actions|@count != 0}
354 {foreach from=$plugin_batch_actions key=plugin_name item=action}
355 {include file=$action module_id=$plugin_name|replace:'batch_action_':''}
356 {/foreach}
357 {/if}
358 </ul>
359 {/if}
360 {include file="forms_types/csrf.tpl"}
361 </form>
362 {if $nb_members != 0}
363 <div id="legende" title="{_T string="Legend"}">
364 <h1>{_T string="Legend"}</h1>
365 <table>
366 <tbody>
367 <tr>
368 <th class="" colspan="4">{_T string="Reading the list"}</th>
369 </tr>
370 <tr>
371 <th class="back">{_T string="Name"}</th>
372 <td class="back">{_T string="Active account"}</td>
373 <th class="inactif back">{_T string="Name"}</th>
374 <td class="back">{_T string="Inactive account"}</td>
375 </tr>
376 <tr>
377 <th class="cotis-ok color-sample">&nbsp;</th>
378 <td class="back">{_T string="Membership in order"}</td>
379 <th class="cotis-soon color-sample">&nbsp;</th>
380 <td class="back">{_T string="Membership will expire soon (&lt;30d)"}</td>
381 </tr>
382 <tr>
383 <th class="cotis-never color-sample">&nbsp;</th>
384 <td class="back">{_T string="Never contributed"}</td>
385 <th class="cotis-late color-sample">&nbsp;</th>
386 <td class="back">{_T string="Lateness in fee"}</td>
387 </tr>
388 </tbody>
389 <tbody>
390 <tr>
391 <th class="" colspan="4">{_T string="Actions"}</th>
392 </tr>
393 <tr>
394 <th class="action">
395 <i class="fas fa-user-edit fa-fw"></i>
396 </th>
397 <td class="back">{_T string="Modification"}</td>
398 <th>
399 <i class="fas fa-cookie fa-fw"></i>
400 </th>
401 <td class="back">{_T string="Contributions"}</td>
402 </tr>
403 <tr>
404 <th class="delete">
405 <i class="fas fa-user-times fa-fw"></i>
406 </th>
407 <td class="back">{_T string="Deletion"}</td>
408 </tr>
409 </tbody>
410 <tbody>
411 <tr>
412 <th colspan="4">{_T string="User status/interactions"}</th>
413 </tr>
414 <tr>
415 <th><img src="{base_url}/{$template_subdir}images/icon-mail.png" alt="{_T string="Mail"}" width="16" height="16"/></th>
416 <td class="back">{_T string="Send an email"}</td>
417 <th><img src="{base_url}/{$template_subdir}images/icon-company.png" alt="{_T string="Is a company"}" width="16" height="16"/></th>
418 <td class="back">{_T string="Is a company"}</td>
419 </tr>
420
421 <tr>
422 <th><img src="{base_url}/{$template_subdir}images/icon-male.png" alt="{_T string="Is a man"}" width="16" height="16"/></th>
423 <td class="back">{_T string="Is a man"}</td>
424 <th><img src="{base_url}/{$template_subdir}images/icon-female.png" alt="{_T string="Is a woman"}" width="16" height="16"/></th>
425 <td class="back">{_T string="Is a woman"}</td>
426 </tr>
427 <tr>
428 <th><img src="{base_url}/{$template_subdir}images/icon-star.png" alt="{_T string="Admin"}" width="16" height="16"/></th>
429 <td class="back">{_T string="Admin"}</td>
430 <th><img src="{base_url}/{$template_subdir}images/icon-staff.png" alt="{_T string="Staff member"}" width="16" height="16"/></th>
431 <td class="back">{_T string="Staff member"}</td>
432
433 </tr>
434 </tbody>
435 </table>
436 </div>
437 {/if}
438 {/block}
439
440 {block name="javascripts"}
441 <script type="text/javascript">
442 {if $nb_members != 0}
443 var _checkselection = function() {
444 var _checkeds = $('table.listing').find('input[type=checkbox]:checked').length;
445 if ( _checkeds == 0 ) {
446 var _el = $('<div id="pleaseselect" title="{_T string="No member selected" escape="js"}">{_T string="Please make sure to select at least one member from the list to perform this action." escape="js"}</div>');
447 _el.appendTo('body').dialog({
448 modal: true,
449 buttons: {
450 Ok: function() {
451 $(this).dialog( "close" );
452 }
453 },
454 close: function(event, ui){
455 _el.remove();
456 }
457 });
458 return false;
459 }
460 return true;
461 }
462 {/if}
463 {* Use of Javascript to draw specific elements that are not relevant is JS is inactive *}
464 $(function(){
465 {if $nb_members != 0}
466 var _checklinks = '<div class="checkboxes"><span class="fleft"><a href="#" class="checkall tooltip"><i class="fas fa-check-square"></i> {_T string="(Un)Check all" escape="js"}</a> | <a href="#" class="checkinvert tooltip"><i class="fas fa-exchange-alt"></i> {_T string="Invert selection" escape="js"}</a></span><a href="#" class="show_legend fright">{_T string="Show legend" escape="js"}</a></div>';
467 $('.listing').before(_checklinks);
468 $('.listing').after(_checklinks);
469 _bind_check();
470 _bind_legend();
471
472 $('.selection_menu *[type="submit"], .selection_menu *[type="button"]').click(function(event){
473 if ( this.id == 'delete' || this.id == 'masschange' ) {
474 //mass removal is handled from 2 steps removal
475 //mass change is specifically handled below
476 return;
477 }
478
479 if (!_checkselection()) {
480 return false;
481 } else {
482 {if $existing_mailing eq true}
483 if (this.id == 'sendmail') {
484 var _el = $('<div id="existing_mailing" title="{_T string="Existing mailing" escape="js"}">{_T string="A mailing already exists. Do you want to create a new one or resume the existing?" escape="js"}</div>');
485 _el.appendTo('body').dialog({
486 modal: true,
487 hide: 'fold',
488 width: '25em',
489 height: 150,
490 close: function(event, ui){
491 _el.remove();
492 },
493 buttons: {
494 '{_T string="Resume"}': function() {
495 $(this).dialog( "close" );
496 location.href = '{path_for name="mailing"}';
497 },
498 '{_T string="New"}': function() {
499 $(this).dialog( "close" );
500 //add required controls to the form, change its action URI, and send it.
501 var _form = $('#listform');
502 _form.append($('<input type="hidden" name="mailing_new" value="true"/>'));
503 _form.append($('<input type="hidden" name="mailing" value="true"/>'));
504 _form.submit();
505 }
506 }
507 });
508 return false;
509 }
510 {/if}
511 if (this.id == 'attendance_sheet') {
512 _attendance_sheet_details();
513 return false;
514 }
515
516 if (this.id == 'masscontributions') {
517 event.preventDefault();
518 $.ajax({
519 url: '{path_for name="batch-memberslist"}',
520 type: "POST",
521 data: {
522 ajax: true,
523 masscontributions: true,
524 member_sel: $('#listform input[type=\"checkbox\"]:checked').map(function(){
525 return $(this).val();
526 }).get()
527 },
528 datatype: 'json',
529 {include file="js_loader.tpl"},
530 success: function(res){
531 var _res = $(res);
532 _bindmassres(_res);
533 $('body').append(_res);
534
535 _initTooltips('#mass_contributions');
536 _massCheckboxes('#mass_contributions');
537
538 _res.dialog({
539 width: 'auto',
540 modal: true,
541 close: function(event, ui){
542 $(this).dialog('destroy').remove()
543 }
544 });
545 },
546 error: function() {
547 alert("{_T string="An error occurred :(" escape="js"}");
548 }
549 });
550 }
551
552 return true;
553 }
554 });
555 {/if}
556 if ( _shq = $('#showhideqry') ) {
557 _shq.click(function(){
558 $('#sql_qry').toggleClass('hidden');
559 return false;
560 });
561 }
562
563 $('#savesearch').on('click', function(e) {
564 e.preventDefault();
565
566 var _el = $('<div id="savedsearch_details" title="{_T string="Search title" escape="js"}"><input type="text" name="search_title" id="search_title"/></div>');
567 _el.appendTo('body').dialog({
568 modal: true,
569 hide: 'fold',
570 width: '40%',
571 height: 200,
572 close: function(event, ui){
573 _el.remove();
574 },
575 buttons: {
576 '{_T string="Ok" escape="js"}': function() {
577 var _form = $('#filtre');
578 var _data = _form.serialize();
579 _data = _data + "&search_title=" + $('#search_title').val();
580 $.ajax({
581 url: '{path_for name="saveSearch"}',
582 type: "POST",
583 data: _data,
584 datatype: 'json',
585 {include file="js_loader.tpl"},
586 success: function(res) {
587 $.ajax({
588 url: '{path_for name="ajaxMessages"}',
589 method: "GET",
590 success: function (message) {
591 $('#asso_name').after(message);
592 }
593 });
594 }
595 });
596
597 $(this).dialog( "close" );
598 },
599 '{_T string="Cancel" escape="js"}': function() {
600 $(this).dialog( "close" );
601 }
602 }
603 });
604 });
605
606 });
607 {if $nb_members != 0}
608 {include file="js_removal.tpl"}
609 {include file="js_removal.tpl" selector="#delete" deleteurl="'{path_for name="batch-memberslist"}'" extra_check="if (!_checkselection()) {ldelim}return false;{rdelim}" extra_data="delete: true, member_sel: $('#listform input[type=\"checkbox\"]:checked').map(function(){ return $(this).val(); }).get()" method="POST"}
610
611 var _bindmassres = function(res) {
612 res.find('#btncancel')
613 .button()
614 .on('click', function(e) {
615 e.preventDefault();
616 res.dialog('close');
617 });
618
619 res.find('input[type=submit]')
620 .button();
621
622 res.find('select:not(.nochosen)').selectize({
623 maxItems: 1
624 });
625 }
626
627 $('#masschange').off('click').on('click', function(event) {
628 event.preventDefault();
629 var _this = $(this);
630
631 if (!_checkselection()) {
632 return false;
633 }
634 $.ajax({
635 url: '{path_for name="batch-memberslist"}',
636 type: "POST",
637 data: {
638 ajax: true,
639 masschange: true,
640 member_sel: $('#listform input[type=\"checkbox\"]:checked').map(function(){
641 return $(this).val();
642 }).get()
643 },
644 datatype: 'json',
645 {include file="js_loader.tpl"},
646 success: function(res){
647 var _res = $(res);
648 _bindmassres(_res);
649
650 _res.find('form').on('submit', function(e) {
651 e.preventDefault();
652 var _form = $(this);
653 var _data = _form.serialize();
654 $.ajax({
655 url: _form.attr('action'),
656 type: "POST",
657 data: _data,
658 datatype: 'json',
659 {include file="js_loader.tpl"},
660 success: function(html) {
661 var _html = $(html);
662 _bindmassres(_html);
663
664 $('#mass_change').remove();
665 $('body').append(_html);
666
667 _initTooltips('#mass_change');
668 //_massCheckboxes('#mass_change');
669
670 _html.dialog({
671 width: 'auto',
672 modal: true,
673 close: function(event, ui){
674 $(this).dialog('destroy').remove()
675 }
676 });
677
678 _html.find('form').on('submit', function(e) {
679 e.preventDefault();
680 var _form = $(this);
681 var _data = _form.serialize();
682 $.ajax({
683 url: _form.attr('action'),
684 type: "POST",
685 data: _data,
686 datatype: 'json',
687 {include file="js_loader.tpl"},
688 success: function(res) {
689 if (res.success) {
690 window.location.href = _form.find('input[name=redirect_uri]').val();
691 } else {
692 $.ajax({
693 url: '{path_for name="ajaxMessages"}',
694 method: "GET",
695 success: function (message) {
696 $('#asso_name').after(message);
697 }
698 });
699 }
700 }
701 });
702 });
703 },
704 error: function() {
705 alert("{_T string="An error occurred :(" escape="js"}");
706 }
707 });
708 });
709
710 $('body').append(_res);
711
712 _initTooltips('#mass_change');
713 _massCheckboxes('#mass_change');
714
715 _res.dialog({
716 width: 'auto',
717 modal: true,
718 close: function(event, ui){
719 $(this).dialog('destroy').remove()
720 }
721 });
722 },
723 error: function() {
724 alert("{_T string="An error occurred :(" escape="js"}");
725 }
726 });
727 });
728
729 var _attendance_sheet_details = function(){
730 var _selecteds = [];
731 $('table.listing').find('input[type=checkbox]:checked').each(function(){
732 _selecteds.push($(this).val());
733 });
734 $.ajax({
735 url: '{path_for name="attendance_sheet_details"}',
736 type: "POST",
737 data: {
738 ajax: true,
739 selection: _selecteds
740 },
741 dataType: 'html',
742 success: function(res){
743 var _el = $('<div id="attendance_sheet_details" title="{_T string="Attendance sheet details" escape="js"}"> </div>');
744 _el.appendTo('body').dialog({
745 modal: true,
746 hide: 'fold',
747 width: '60%',
748 height: 400,
749 close: function(event, ui){
750 _el.remove();
751 },
752 buttons: {
753 Ok: function() {
754 $('#sheet_details_form').submit();
755 $(this).dialog( "close" );
756 },
757 Cancel: function() {
758 $(this).dialog( "close" );
759 }
760 }
761 }).append(res);
762 $('#sheet_date').datepicker({
763 changeMonth: true,
764 changeYear: true,
765 showOn: 'button',
766 yearRange: 'c:c+5',
767 buttonText: '<i class="far fa-calendar-alt"></i> <span class="sr-only">{_T string="Select a date" escape="js"}</span>'
768 });
769 },
770 error: function() {
771 alert("{_T string="An error occurred displaying attendance sheet details interface :(" escape="js"}");
772 }
773 });
774 }
775 {/if}
776 </script>
777 {/block}