Bug 22170: Improve display of add/edit library group modal
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / admin / library_groups.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% USE KohaSpan %]
4 [% SET footerjs = 1 %]
5 [% INCLUDE 'doc-head-open.inc' %]
6 <title>Koha &rsaquo; Administration &rsaquo; Library groups</title>
7 [% INCLUDE 'doc-head-close.inc' %]
8 [% Asset.css("lib/jquery/plugins/treetable/stylesheets/jquery.treetable.css") | $raw %]
9 </head>
10
11 <body id="admin_library_groups" class="admin">
12 [% INCLUDE 'header.inc' %]
13 [% INCLUDE 'cat-search.inc' %]
14
15 <div id="breadcrumbs">
16     <a href="/cgi-bin/koha/mainpage.pl">Home</a>
17     &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
18     &rsaquo; <a href="/cgi-bin/koha/admin/library_groups.pl">Library groups</a>
19 </div>
20
21 [% IF added %]
22     <div class="dialog message group-added">
23         [% IF added.branchcode %]
24             [% added.library.branchname | $KohaSpan class = 'name' | $raw %] added to group.
25         [% ELSE %]
26             Group [% added.title | $KohaSpan class = 'name' | $raw %] created.
27         [% END %]
28     </div>
29 [% ELSIF deleted %]
30     <div class="dialog message group-deleted">
31         [% IF deleted.title %]
32             Group [% deleted.title | $KohaSpan class = 'name' | $raw %] has been deleted.
33         [% ELSE %]
34             [% deleted.library | $KohaSpan class = 'name' | $raw %] has been removed from group.
35         [% END %]
36     </div>
37 [% ELSIF error_duplicate_title %]
38     <div class="dialog alert error-duplicate-group-title">
39             A group with the title [% error_duplicate_title | $KohaSpan class = 'name' | $raw %] already exists.
40     </div>
41 [% END %]
42
43 <div class="main container-fluid">
44     <div class="row">
45         <div class="col-sm-10 col-sm-push-2">
46             <main>
47
48                     <div id="toolbar" class="btn-toolbar">
49                         <div class="btn-group">
50                             <a id="add-group-root" class="btn btn-default btn-sm add-group" href="#">
51                                 <i class="fa fa-plus"></i> Add group
52                             </a>
53                         </div>
54                     </div>
55
56                 <h2>Library groups</h2>
57
58                 [% FOREACH root_group IN root_groups %]
59                     <table class="library-groups">
60                         <tr>
61                             <th>&nbsp;</th>
62                             <th>Description</th>
63                             <th>Features enabled</th>
64                             <th>&nbsp;</th>
65                         </tr>
66                         [% PROCESS tree group=root_group %]
67                     </table>
68                 [% END %]
69
70             </main>
71         </div> <!-- /.col-sm-10.col-sm-push-2 -->
72
73         <div class="col-sm-2 col-sm-pull-10">
74             <aside>
75                 [% INCLUDE 'admin-menu.inc' %]
76             </aside>
77         </div> <!-- /.col-sm-2.col-sm-pull-10 -->
78     </div> <!-- /.row -->
79
80     <div id="add-group-modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="add-group-modal-label" aria-hidden="true">
81         <form id="add-group-form" action="/cgi-bin/koha/admin/library_groups.pl" class="form-horizontal">
82             <div class="modal-dialog">
83                 <div class="modal-content">
84                     <div class="modal-header">
85                         <h3 id="add-group-modal-label">Add group</h3>
86                     </div>
87                     <div class="modal-body">
88                         <fieldset class="rows">
89                             <input type="hidden" id="add-group-modal-parent-id" name="parent_id" value="" />
90                             <input type="hidden" id="add-group-modal-action" name="action" value="add">
91                             <ol>
92                                 <li>
93                                     <label for="add-group-modal-title">Title: </label>
94                                     <input type="text" size="40" maxlength="100" name="title" id="add-group-modal-title" required="required" />
95                                     <span class="required">Required</span>
96                                 </li>
97                                 <li>
98                                     <label for="add-group-modal-description">Description: </label>
99                                     <input type="text" size="40" name="description" id="add-group-modal-description" />
100                                 </li>
101                             </ol>
102                         </fieldset>
103                         <div id="root-group-features-add">
104                             <h3>Features</h3>
105                             <div class="checkbox">
106                                 <p>
107                                     <label>
108                                         <input type="checkbox" name="ft_hide_patron_info" id="add-group-modal-ft_hide_patron_info" value="1" />
109                                         Limit patron data access by group
110                                     </label>
111                                 </p>
112                                 <p>
113                                     <label>
114                                         <input type="checkbox" name="ft_search_groups_opac" id="add-group-modal-ft_search_groups_opac" value="1" />
115                                         Use for OPAC search groups
116                                     </label>
117                                 </p>
118                                 <p>
119                                     <label>
120                                         <input type="checkbox" name="ft_search_groups_staff" id="add-group-modal-ft_search_groups_staff" value="1" />
121                                         Use for staff search groups
122                                     </label>
123                                 </p>
124                             </div>
125                         </div>
126                     </div>
127                     <div class="modal-footer">
128                         <button type="submit" class="btn btn-default">Save</button>
129                         <a href="#" class="cancel" data-dismiss="modal" aria-hidden="true">Cancel</a>
130                     </div>
131                 </div>
132             </div>
133         </form>
134     </div>
135
136     <div id="edit-group-modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="edit-group-modal-label" aria-hidden="true">
137         <form id="edit-group-form" action="/cgi-bin/koha/admin/library_groups.pl" class="form-horizontal">
138             <div class="modal-dialog">
139                 <div class="modal-content">
140                     <div class="modal-header">
141                         <h3 id="edit-group-modal-label">Edit group</h3>
142                     </div>
143                     <div class="modal-body">
144                         <input type="hidden" id="edit-group-modal-id" name="id" value="" />
145                         <input type="hidden" id="edit-group-modal-action" name="action" value="edit" />
146                         <fieldset class="rows">
147                             <ol>
148                                 <li>
149                                     <label for="edit-group-modal-title">Title: </label>
150                                     <input type="text" size="40" maxlength="100" id="edit-group-modal-title" name="title" value="" required="required" />
151                                     <span class="required">Required</span>
152                                 </li>
153
154                                 <li>
155                                     <label for="edit-group-modal-description">Description: </label>
156                                     <input type="text" size="40" id="edit-group-modal-description" name="description" value="" />
157                                 </li>
158                             </ol>
159                         </fieldset>
160                         <div id="root-group-features-edit">
161                             <h3>Features</h3>
162                             <div class="checkbox">
163                                 <p>
164                                     <label>
165                                         <input type="checkbox" id="edit-group-modal-ft_hide_patron_info" name="ft_hide_patron_info" value="1" />
166                                         Limit patron data access by group
167                                     </label>
168                                 </p>
169                                 <p>
170                                     <label>
171                                         <input type="checkbox" id="edit-group-modal-ft_search_groups_opac" name="ft_search_groups_opac" value="1" />
172                                         Use for OPAC search groups
173                                     </label>
174                                 </p>
175                                 <p>
176                                     <label>
177                                         <input type="checkbox" id="edit-group-modal-ft_search_groups_staff" name="ft_search_groups_staff" value="1" />
178                                         Use for staff search groups
179                                     </label>
180                                 </p>
181                             </div>
182                         </div>
183                     </div>
184                     <div class="modal-footer">
185                         <button type="submit" class="btn btn-default">Update</button>
186                         <a href="#" class="cancel" data-dismiss="modal" aria-hidden="true">Cancel</a>
187                     </div>
188                 </div>
189             </div>
190         </form>
191     </div>
192
193     <div id="delete-group-modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="delete-group-modal-label" aria-hidden="true">
194         <form action="/cgi-bin/koha/admin/library_groups.pl">
195             <div class="modal-dialog">
196                 <div class="modal-content">
197                     <input id="delete-group-modal-action" type="hidden" name="action" value="delete" />
198                     <input id="delete-group-modal-id" type="hidden" name="id" value="" />
199                     <div class="modal-header">
200                         <h3 id="delete-group-modal-label">Delete group</h3>
201                     </div>
202                     <div class="modal-body">
203                         Are you sure you want to delete <span id="delete-group-modal-title" class="name"></span>?
204                     </div>
205                     <div class="modal-footer">
206                         <button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i> Delete</button>
207                         <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Cancel</button>
208                     </div>
209                 </div>
210             </div>
211         </form>
212     </div>
213
214     <div id="remove-library-modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="remove-library-modal-label" aria-hidden="true">
215         <form action="/cgi-bin/koha/admin/library_groups.pl">
216             <div class="modal-dialog">
217                 <div class="modal-content">
218                     <input id="remove-library-modal-action" type="hidden" name="action" value="delete" />
219                     <input id="remove-library-modal-id" type="hidden" name="id" value="" />
220                     <div class="modal-header">
221                         <h3 id="remove-library-modal-label">Remove library from group</h3>
222                     </div>
223                     <div class="modal-body">
224                         Are you sure you want to remove <span id="remove-library-modal-library" class="name"></span> from <span id="remove-library-modal-group" class="name"></span>?
225                     </div>
226                     <div class="modal-footer">
227                         <button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i> Remove</button>
228                         <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Cancel</button>
229                     </div>
230                 </div>
231             </div>
232         </form>
233     </div>
234
235 [% MACRO jsinclude BLOCK %]
236     [% Asset.js("lib/jquery/plugins/treetable/jquery.treetable.js") | $raw %]
237     <script>
238         $(document).ready(function() {
239             $('.library-groups').treetable({
240                 expandable: true,
241                 initialState: 'expanded',
242                 clickableNodeNames: true,
243             });
244
245             $('.add-group').on('click', function(e) {
246                 e.preventDefault();
247                 var id = $(this).data('groupId');
248                 add_group( id );
249             });
250
251             $('.edit-group').on('click', function(e) {
252                 e.preventDefault();
253                 var id = $(this).data('groupId');
254                 var parent_id = $(this).data('groupParentId');
255                 var title = $(this).data('groupTitle');
256                 var description = $(this).data('groupDescription');
257                 var ft_hide_patron_info = $(this).data('groupFt_hide_patron_info');
258                 var ft_search_groups_opac = $(this).data('groupFt_search_groups_opac');
259                 var ft_search_groups_staff = $(this).data('groupFt_search_groups_staff');
260                 edit_group( id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff );
261             });
262
263             $('.delete-group').on('click', function(e) {
264                 e.preventDefault();
265                 var id = $(this).data('groupId');
266                 var title = $(this).data('groupTitle');
267                 delete_group( id, title );
268             });
269
270             $('.remove-library').on('click', function(e) {
271                 e.preventDefault();
272                 var id = $(this).data('groupId');
273                 var library = $(this).data('groupLibrary');
274                 var parent_title = $(this).data('groupParentTitle');
275                 remove_library( id, library, parent_title );
276             });
277             $('#add-group-modal').on('shown.bs.modal', function() {
278                 $('#add-group-modal-title').focus();
279             });
280             $('#edit-group-modal').on('shown.bs.modal', function() {
281                 $('#edit-group-modal-title').focus();
282             });
283         });
284
285         function add_group( parent_id ) {
286             $('#add-group-modal-parent-id').val( parent_id );
287
288             $('#add-group-modal-description').val("");
289             $('#add-group-modal-title').val("");
290
291
292             $('#add-group-modal-ft_hide_patron_info').prop('checked', false);
293             $('#add-group-modal-ft_search_groups_opac').prop('checked', false);
294             $('#add-group-modal-ft_search_groups_staff').prop('checked', false);
295             if ( parent_id ) {
296                 $('#root-group-features-add').hide();
297             } else {
298                 $('#root-group-features-add').show();
299             }
300             $('#add-group-modal').modal('show');
301
302         }
303
304         function edit_group( id, parent_id, title, description, ft_hide_patron_info, ft_search_groups_opac, ft_search_groups_staff ) {
305             $('#edit-group-modal-id').val( id );
306             $('#edit-group-modal-title').val( title );
307             $('#edit-group-modal-description').val( description );
308
309             if ( parent_id ) {
310                 $('#edit-group-modal-ft_hide_patron_info').prop('checked', false);
311                 $('#edit-group-modal-ft_search_groups_opac').prop('checked', false);
312                 $('#edit-group-modal-ft_search_groups_staff').prop('checked', false);
313                 $('#root-group-features-edit').hide();
314             } else {
315                 $('#edit-group-modal-ft_hide_patron_info').prop('checked', ft_hide_patron_info ? true : false );
316                 $('#edit-group-modal-ft_search_groups_opac').prop('checked', ft_search_groups_opac ? true : false );
317                 $('#edit-group-modal-ft_search_groups_staff').prop('checked', ft_search_groups_staff ? true : false );
318                 $('#root-group-features-edit').show();
319             }
320
321             $('#edit-group-modal').modal('show');
322         }
323
324         function delete_group( id, title ) {
325             $('#delete-group-modal-title').html(title);
326             $('#delete-group-modal-id').val( id );
327             $('#delete-group-modal').modal('show');
328         }
329
330         function remove_library( id, library, parent_title ) {
331             $('#remove-library-modal-library').html( library );
332             $('#remove-library-modal-group').html(parent_title);
333             $('#remove-library-modal-id').val( id );
334             $('#remove-library-modal').modal('show');
335         }
336
337     </script>
338 [% END %]
339
340 [% INCLUDE 'intranet-bottom.inc' %]
341
342 [% BLOCK tree %]
343     <tr data-tt-id="[% group.id | html %]" data-tt-parent-id="[% group.parent_id | html %]">
344         <td>
345             [% IF group.branchcode %]
346                 [% group.branchcode | html %]
347             [% ELSE %]
348                 [% group.title | html %]
349             [% END %]
350         </td>
351         <td>
352             [% IF group.branchcode %]
353                 [% group.library.branchname | html %]
354             [% ELSE %]
355                 [% group.description | html %]
356             [% END %]
357         </td>
358         <td>
359             [% UNLESS group.branchcode %]
360               <ul>
361                 [% IF group.ft_hide_patron_info %]
362                     <li>Hide patron's info for librarians outside of this group.</li>
363                 [% END %]
364                 [% IF group.ft_search_groups_opac %]
365                     <li>Use for OPAC search groups</li>
366                 [% END %]
367                 [% IF group.ft_search_groups_staff %]
368                     <li>Use for staff search groups</li>
369                 [% END %]
370               </ul>
371             [% END %]
372         </td>
373         <td>
374             [% IF group.branchcode %]
375                 <button class="btn btn-default btn-xs remove-library" data-group-id="[% group.id | html %]" data-group-library="[% group.library.branchname | html %]" data-group-parent-title="[% group.parent.title | html %]" ><i class="fa fa-trash"></i> Remove from group</button>
376             [% ELSE %]
377                 <div class="btn-group">
378                     <button class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><i class="fa fa-wrench"></i> Actions <span class="caret"></span></button>
379                     <ul class="dropdown-menu">
380                         <li>
381                             <a id="add-group-[% group.id | html %]" href="#" class="add-group" data-group-id="[% group.id | html %]">
382                                 <i class="fa fa-plus"></i> Add sub-group
383                             </a>
384                        </li>
385
386                         <li>
387                             <a class="edit-group" id="edit-group-[% group.id | html %]" href="#" data-group-id="[% group.id | html %]" data-group-parent-id="[% group.parent_id | html %]" data-group-title="[% group.title | html %]" data-group-description="[% group.description | html %]" data-group-ft_hide_patron_info="[% group.ft_hide_patron_info | html %]" data-group-ft_search_groups_opac="[% group.ft_search_groups_opac | html %]" data-group-ft_search_groups_staff="[% group.ft_search_groups_staff | html %]" >
388                                 <i class="fa fa-pencil"></i> Edit
389                             </a>
390                        </li>
391
392                         <li>
393                             <a class="delete-group" id="delete-group-[% group.id | html %]" href="#" data-group-id="[% group.id | html %]" data-group-title="[% group.title | html %]">
394                                 <i class="fa fa-trash"></i> Delete
395                             </a>
396                        </li>
397                     </ul>
398                 </div>
399
400                 <div class="btn-group">
401                     <button class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown"><i class="fa fa-plus"></i> Add library <span class="caret"></span></button>
402                     <ul class="dropdown-menu">
403                         [% FOREACH library IN group.libraries_not_direct_children %]
404                             <li>
405                                 <a class="add-library" id="add-library[% library.id | html %]-[% group.id | html %]" href="/cgi-bin/koha/admin/library_groups.pl?action=add&parent_id=[% group.id | html %]&branchcode=[% library.id | html %]">
406                                     [% library.branchname | html %]
407                                 </a>
408                            </li>
409                         [% END %]
410                     </ul>
411                 </div>
412             [% END %]
413         </td>
414     </tr>
415
416     [% FOREACH g IN group.children %]
417         [% PROCESS tree group=g %]
418     [% END %]
419 [% END %]