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