]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/templates-bootstrap/opac/myopac/lists.tt2
LP2045292 Color contrast for AngularJS patron bills
[Evergreen.git] / Open-ILS / src / templates-bootstrap / opac / myopac / lists.tt2
1 [%  PROCESS "opac/parts/header.tt2";
2     PROCESS "opac/parts/misc_util.tt2";
3     WRAPPER "opac/parts/myopac/base.tt2";
4     myopac_page = "lists"
5     limit = ctx.bookbags_limit;
6     offset = ctx.bookbags_offset;
7     item_page = ctx.bookbags_item_page;
8     move_cart_by_default = CGI.param('move_cart_by_default') || 0;
9     bb_publish_text = l(
10 "Sharing a list means that the contents " _
11 "of the list will be visible to others. " _
12 "To see the public view of a shared list, " _
13 "click on the HTML View link in the Saved Lists section.");
14 %]
15
16
17 <div id='myopac_bookbag_div container'>
18
19     <!-- new list creation -->
20     <div class="row">
21     <button class="btn btn-sm btn-opac my-2" data-toggle="collapse" data-target="#create_form" aria-expanded="false" aria-controls="create_form">[% l('Create New List') %]</button>
22     </div>
23     <div id="create_form" [% IF ctx.add_rec || move_cart_by_default || !ctx.bookbags.size %] class="collapse show my-3"[% ELSE %] class="row collapse my-3"[% END %]>
24         <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post">
25             [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
26             <input type="hidden" name="action" value="create" class="form-control" />
27             [% IF ctx.add_rec %]
28                 <input type="hidden" name="add_rec" value="[% ctx.add_rec %]" class="form-control" />
29             [% END %]
30             [% IF ctx.where_from %]
31                  <input type="hidden" name="where_from" value="[% ctx.where_from %]" class="form-control" />
32             [% END %]
33             <div class="form-group">
34                 <label for="list_create_name">[% l('Enter the name of the new list:') %]</label>
35                 <input id="list_create_name" type="text" name="name" class="form-control" autofocus>
36             </div>
37             <div class="form-group">
38                 <label for="list_description">[% l("List description (optional):") %]</label>
39                 <textarea name="description" id="list_description" class="form-control"></textarea>
40             </div>
41             <div class="form-group">
42                 <label for="list_create_shared">[% l('Share this list?') %]</label>
43                 <select class="d-inline-block form-control mini-control" name="shared" id="list_create_shared">
44                     <option value="0">[% l('No') %]
45                     <option value="1">[% l('Yes') %]
46                 </select>
47                 <a href="#" title="Allows the list to be shared through a link or RSS." data-toggle="tooltip">
48                 <i class="fas fa-question-circle" aria-hidden="true"></i>
49                 </a>
50             </div>
51             [% IF ctx.mylist.size %]
52             <div class="form-group">
53                 <label for="list_move_cart">[% l('Move contents of basket to this list?') %]</label>
54                 <select class="d-inline-block form-control mini-control" name="move_cart" id="list_move_cart">
55                     <option value="0">[% l('No') %]
56                     <option value="1" [% IF move_cart_by_default %]selected="selected"[% END%]>[% l('Yes') %]
57                 </select>
58             </div>
59             [% END %]
60             <button type="submit" class="btn btn-confirm"><i class="fas fa-plus-square" aria-hidden="true"></i> [% l('Create List') %]</button>
61             <button type="reset" class="btn btn-deny" ><i class="fas fa-ban" aria-hidden="true"></i> [% l('Cancel') %]</button>
62         </form>
63     </div>
64
65     <div class="row">
66       [% IF (CGI.param('from_basket') && ctx.mylist.size)  %]
67     <h3>[% l("... from basket") %]</h3>
68     [% INCLUDE "opac/parts/anon_list.tt2" %]
69     [% ELSE %]
70     [% INCLUDE "opac/parts/anon_list.tt2" %]
71     </div>
72
73     <div class="row border-top pt-4">
74     <h3>[% l('Saved Lists') %]</h3>
75    
76
77         [% IF !ctx.bookbags.size %]
78         <div class="container pb-2 mt-2 pt-2">
79                 <h4>[% l("You don't have any lists yet") %]</h4>
80                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {}) %]'>[% l('Create a list with the form above') %]</a>
81   
82         [% ELSE %]
83         [% IF limit < ctx.bookbag_count; %]
84         <span class='float-left' style='padding-left: 10px;'>
85             [%- IF offset > 0 -%]
86                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
87                     offset => (offset - limit)
88                 }) %]'><span class="nav_arrow_fix">&#9668;</span>[% l('Previous') %]</a>
89             [%- END; -%]
90             [%- IF (offset - (limit * 3)) >= 0 -%]
91                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
92                     offset => (offset - (limit * 3))
93                 }) %]'>[% ((offset - (limit * 3)) / limit) + 1 %]</a>
94             [%- END; -%]
95             [%- IF (offset - (limit * 2)) >= 0 -%]
96                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
97                     offset => (offset - (limit * 2))
98                 }) %]'>[% ((offset - (limit * 2)) / limit) + 1 %]</a>
99             [%- END; -%]
100             [%- IF (offset - limit) >= 0 -%]
101                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
102                     offset => (offset - limit)
103                 }) %]'>[% ((offset - limit) / limit) + 1 %]</a>
104             [%- END; -%]
105             <span class="bookbag-paginator-selected" >[% (offset / limit) + 1 %]</span>
106             [%- IF (offset + limit) < ctx.bookbag_count -%]
107                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
108                     offset => (offset + limit)
109                 }) %]'>[% ((offset + limit) / limit) + 1 %]</a>
110             [%- END; -%]
111             [%- IF (offset + (limit * 2)) < ctx.bookbag_count -%]
112                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
113                     offset => (offset + (limit * 2))
114                 }) %]'>[% ((offset + (limit * 2)) / limit) + 1 %]</a>
115             [%- END; -%]
116             [%- IF (offset + (limit * 3)) < ctx.bookbag_count -%]
117                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
118                     offset => (offset + (limit * 3))
119                 }) %]'>[% ((offset + (limit * 3)) / limit) + 1 %]</a>
120             [%- END; -%]
121             [%- IF (ctx.bookbag_count - offset) > limit; -%]
122                 <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
123                     offset => (offset + limit)
124                 }) %]'>[% l('Next') %]<span class="nav_arrow_fix">&#9658;</span></a>
125             </span>
126             [%- END; -%]
127         [% END %]
128     </div>
129
130     <div id='acct_lists_prime'>
131         [% FOR bbag IN ctx.bookbags %]
132         <div class="container border-bottom pb-2">
133             <div class="row mt-2">
134                     [% baseurl = ctx.opac_root _ '/myopac/lists';
135                     IF bbag.id != CGI.param("bbid");
136                         url = mkurl(baseurl,{bbid => bbag.id, item_page => 1},['edit_notes','sort']);
137                         ltitle = l("Show items in list");
138                     ELSE;
139                         url = mkurl(baseurl, {}, ['bbid', 'edit_notes', 'sort']);
140                         ltitle = l("Hide items in list");
141                     END %]
142                     <h4 class="bookbag-name"><a title="[% ltitle %]" href="[% url %]">[% bbag.name | html %]</a>[% IF bbag.pub == 't'; %]
143                     <a target='_blank' href='/opac/extras/feed/bookbag/rss2-full/[% bbag.id %]' aria-label="RSS Feed">
144                     <i class="fas fa-rss-square" aria-hidden="true"></i></a>
145                     [% END %]</h4>
146             </div>
147             <div class="row bookbag-description">
148                      [% bbag.description | html %]
149             </div>
150             <div class="row">
151                 <div class="col-9">
152                     [% IF ctx.add_rec %]
153                     <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update', {}, 1) %]" method="post">
154                     <div class="bookbag-controls">
155                         <input type="hidden" name="action" value="add_rec" />
156                         <input type="hidden" name="list" value="[% bbag.id %]" />
157                         <input type="hidden" name="add_rec" value="[% ctx.add_rec %]" />
158                         [% IF ctx.where_from %]
159                         <input type="hidden" name="where_from" value="[% ctx.where_from %]" />
160                         [% END %]
161                         <button class="fixed btn btn-success btn-sm m-1" type="submit" ><i class="fas fa-plus-square" aria-hidden="true"></i> [% l('Add to this list') %]</button>
162                     </div>
163                     </form>
164                     [% END %]
165
166             <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post">
167                 <div class="bookbag-share">
168                     <input type="hidden" name="list" value="[% bbag.id %]" />
169                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
170                     [% IF bbag.pub != 't' %]
171                     <input type="hidden" name="action" value="show" />
172                     <button class="fixed btn btn-action btn-sm m-1" type="submit" ><i class="fas fa-share-square" aria-hidden="true"></i> [% l('Share') %]</button>
173                     [% ELSE %]
174                     <input type="hidden" name="action" value="hide" />
175                     <button class="fixed btn btn-secondary btn-sm m-1" type="submit"><i class="fas fa-eye-slash" aria-hidden="true"></i> [% l('Hide') %]</button>
176                     [% END %]
177                 </div>
178             </form>
179
180             <form action="[% mkurl(ctx.opac_root _ '/myopac/list/print') %]" method="post">
181                 <div class="bookbag-controls">
182                     <input type="hidden" name="list" value="[% bbag.id %]" />
183                     <input type="hidden" name="sort" value="[% CGI.param('sort') | html %]" />
184                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
185                     <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-file-download" aria-hidden="true"></i> [% l('Download CSV') %]</button>
186                 </div>
187             </form>
188
189             [% setting = 'opac.default_list'; %]
190             <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post">
191                 <div class="bookbag-controls">
192                     <input type="hidden" name="list" value="[% bbag.id %]" />
193                     [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
194                     [% IF ctx.user_setting_map.$setting == bbag.id %]
195                     <input type="hidden" name="action" value="remove_default" />
196                     <button type="submit" class="btn btn-deny btn-sm m-1"><i class="fas fa-minus-circle" aria-hidden="true"></i> [% l('Remove Default List') %]</button>
197                     [% ELSE %]
198                     <input type="hidden" name="action" value="make_default" />
199                     <button type="submit" class="btn btn-action btn-sm m-1"><i class="fas fa-th-list" aria-hidden="true"></i> [% l('Make Default List') %]</button>
200                     [% END %]
201                 </div>
202             </form>
203
204
205             [% IF ctx.is_staff %]
206             <div class="bookbag-controls">
207                 <button
208                     type="submit"
209                     onclick='
210                        var path =
211                           "oils://remote/xul/server/cat/bucketz39_dialog.xul";
212                         window.openDialog(
213                             xulG.url_prefix(path),
214                             "bucketz39_dialog",
215                             "width=800,height=500",
216                             "[% ctx.user.id %]",
217                             "[% ctx.authtoken %]",
218                             "[% ctx.user.ws_ou %]",
219                             "[% bbag.id %]",
220                             xulG
221                         )'
222                     value="[% l('Locate Z39.50 Matches') %]"
223                 ><i class="fas fa-external-link-alt" aria-hidden="true"></i></button>
224             </div>
225             [% END %]
226
227             [% IF bbag.pub == 't'; %]
228             <div class="bookbag-controls">
229                 <a class="btn btn-sm btn-opac m-1" href='[%-
230                     mkurl(
231                         ctx.opac_root _ '/results',
232                         {page => '0', bookbag => bbag.id, depth => 0, locg => ctx.search_ou},
233                         1
234                     )
235                 -%]'><i class="fas fa-glasses" aria-hidden="true"></i> [% l('View in Catalogue') %]</a>
236
237             </div>
238                [% END %]
239
240                     </div>
241                 <div class="col-3">
242                     <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" onsubmit="return confirm('[% l('Do you really want to delete this list?') %]')">
243                     <div class="bookbag-controls float-right">
244                         <input type="hidden" name="list" value="[% bbag.id %]" />
245                         <input type="hidden" name="action" value="delete" />
246                         [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
247                         <button type="submit" class="btn btn-deny btn-sm m-1"><i class="fas fa-trash-alt" aria-hidden="true"></i> [% l('Delete List') %]</button>
248                     </div>
249                    </form>
250                 </div>
251             </div>
252         </div>
253
254         
255         [% IF CGI.param("bbid") == bbag.id %]
256
257         <div>
258         <h5 class="text-center my-2">List Items</h5>
259         <form action="[% mkurl(ctx.opac_root _ '/myopac/list/update') %]" method="post" >
260         <input type="hidden" name="list" value="[% bbag.id %]" />
261         <input type="hidden" name="sort" value="[% CGI.param('sort') | uri %]" />
262         <div>
263         [% IF bbag.items.size %]
264             <div class="my-2">
265                 <button name="action" class="btn btn-action btn-sm" type="submit" value="place_hold" id="place_hold">[% l('Place hold') %]</button>
266                 <button name="action" class="btn btn-action btn-sm" type="submit" value="print">[% l('Print title details') %]</button>
267                 <button name="action" class="btn btn-action btn-sm" type="submit" value="email">[% l('Email title details') %]</button>
268                 <button name="action" class="btn btn-action btn-sm" type="submit" value="del_item">[% l('Remove from list') %]</button>
269             </div>
270         [% END %]
271
272         <div>
273          <div class="d-block d-md-none">
274
275
276             <input id="check_all_list_items" checked="checked" type="checkbox" onclick="var inputs=document.getElementsByTagName('input');
277                         for (i = 0; i < inputs.length; i++) {
278                             if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %])
279                                 inputs[i].checked = this.checked;}"/>
280
281             <label for="check_all_list_items">[% l('Check/Uncheck All') %]</label>
282         </div>
283         <table class="table table-hover miniTable w-100 bookbagTable">
284             <thead>
285                 <tr>
286                     <th class="list_checkbox">
287                     <input type="checkbox"
288                       onclick="var inputs=document.getElementsByTagName('input');
289                         for (i = 0; i < inputs.length; i++) {
290                             if (inputs[i].name == 'selected_item' &amp;&amp; !inputs[i].disabled &amp;&amp; inputs[i].getAttribute('bbag') == [% bbag.id %])
291                                 inputs[i].checked = this.checked;}"/>
292
293                     </th>
294                     <th class="list_entry">
295                         [% l("Cover") %]
296                     </th>
297                     <th class="list_entry">
298                         <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {sort=> (CGI.param('sort') == 'titlesort' ? 'titlesort.descending' : 'titlesort')}) %]">[% l('Title') %]</a>
299                     </th>
300                     <th class="list_entry">
301                         <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {sort=>(CGI.param('sort') == 'authorsort' ? 'authorsort.descending' : 'authorsort')}) %]">[% l('Author(s)') %]</a>
302                     </th>
303                     <th class='list_entry'>
304                         [% l('Local Call Number') %]
305                     </th>
306                     <th class="list_entry">
307                         <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {sort=>(CGI.param('sort') == 'pubdate' ? 'pubdate.descending' : 'pubdate')}) %]">[% l('Publication Date') %]</a>
308                     </th>
309                     <th class="list_entry">
310                          [% l('Format') %]
311                     </th>
312                     <th class="list_entry">
313                         [% l('Notes') %]
314                         [% IF CGI.param("edit_notes") != bbag.id %]
315                         | <a href="[% mkurl(ctx.opac_root _ '/myopac/lists', {edit_notes=> bbag.id}) %]">[% l('Edit') %]</a>
316                         [% END %]
317                     </th>
318                 </tr>
319             </thead>
320             <tbody>
321                 [% UNLESS bbag.items.size %]
322                 <tr><td colspan="6" class="list_is_empty">
323                     [% l("This list contains no items.") %]
324                 </td></tr>
325                 [% END %]
326                 [% FOR item IN bbag.items;
327                     rec_id = item.target_biblio_record_entry.id;
328                     attrs = {marc_xml => ctx.bookbags_marc_xml.$rec_id};
329                     PROCESS get_marc_attrs args=attrs %]
330                 <tr class="bookbag-item-row">
331                     <td class="list_checkbox">
332                         <input type="checkbox" name="selected_item" value="[% item.id %]" bbag='[% bbag.id %]'/>
333                     </td>
334                     [%  IF attrs.issns.0; 
335                             row_isbnissn = attrs.issns.0;
336                         ELSIF attrs.0;
337                             row_isbnissn = attrs.isbns.0;
338                         ELSE;
339                             row_isbnissn = '';
340                         END;
341                         row_rec_id = rec_id;
342                         row_title = attrs.title;
343                         PROCESS show_cover;
344                     %]
345                     <td class="list_entry" data-label="[% l('Title') %]">
346                         <a href="[% mkurl(ctx.opac_root _ '/record/' _ rec_id, {}, ['edit_notes', 'bbid']) %]">[% attrs.title | html %]</a>
347                     </td>
348                     <td class="list_entry" data-label="[% l('Author(s)') %]">
349                         <a href="[%-
350                             authorquery = attrs.author | replace('[,\.:;]', '');
351                             mkurl(ctx.opac_root _ '/results', {qtype => 'author', query => authorquery}, ['page', 'bbid', 'edit_notes'])
352                             -%]">[% attrs.author | html %]</a>
353                     </td>
354                     <td class="list_entry" data-label="[% l('Local Call Number') %]">
355                         [%
356                             copy = attrs.holdings.0;
357                             IF copy;
358                                 # only show a relevant call number
359                                 copy_org = ctx.get_aou_by_shortname(copy.owner);
360                                 FOR ctx_org IN [ctx.pref_ou, ctx.search_ou, ctx.home_ou, ctx.physical_loc];
361                                     NEXT UNLESS ctx_org;
362                                     ctx_org = ctx.get_aou(ctx_org);
363                                     IF ctx.org_within_scope(ctx_org, copy_org, ctx_org.ou_type.depth);
364                                         l('[_1] ([_2])', copy.label, copy_org.name) | html;
365                                         LAST;
366                                     END;
367                                 END;
368                             END;
369                         %]
370                     </td>
371                     <td class="list_entry" data-label="[% l('Publication Date') %]">
372                           [% attrs.pubdate | html %]
373                     </td>
374                     <td class="list_entry" data-label="[% l('Format') %]">
375                           [% attrs.format_label | html %]
376                     </td>
377                     [% IF CGI.param("edit_notes") == bbag.id %]
378                     <td class="list_entry" data-label="[% l('Notes') %]">
379                         [% FOR note IN item.notes %]
380                         <input type="text" name="note-[% note.id %]" value="[% note.note | html %]" />
381                         [% END %]
382                         <input type="text" name="item-[% item.id %]" />
383                     </td>
384                     [% ELSE %]
385                     <td class="list_entry" data-label="[% l('Notes') %]">
386                         [% FOR note IN item.notes %]
387                         <div>[% note.note | html %]</div>
388                         [% END %]
389                     </td>
390                     [% END %]
391                 </tr>
392                 [% END %]
393                 [% IF CGI.param("edit_notes") == bbag.id %]
394                 <tr class="mobile_hide">
395                     <td colspan="6"><!-- All space left of notes column --></td>
396                     <td class="save-notes">
397                         [%- INCLUDE "opac/parts/preserve_params.tt2"; %]
398                         <input type="hidden" name="bbid" value="[% CGI.param('bbid') | html %]" />
399                         <button type="submit" class="btn btn-confirm" name="save_notes" value="[% l('Save Notes') %]" ><i class="fas fa-save" aria-hidden="true"></i> [% l('Save Notes') %]</button>
400                     </td>
401                 </tr>
402                 [% END %]
403             </tbody>
404         </table>
405         </div>
406
407
408
409
410         [% IF ctx.bb_page_count > 1; %]
411             <div class="header_middle" style="padding-top:7px;">
412                 <div class="bbag-navigate-list">[% l('Navigate Selected List ') %]</div>
413                 <div class="bbag-navigate-list-pages">
414                     [%- IF item_page > 1 -%]
415                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
416                             item_page => item_page - 1
417                         }) %]'><span class="nav_arrow_fix">&#9668;</span>[% l('Previous') %]</a>
418                     [%- END; -%]
419
420                     [%- IF (item_page - 3) >= 1 -%]
421                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
422                             item_page => item_page - 3
423                         }) %]'>[% item_page - 3 %]</a>
424                     [%- END; -%]
425                     [%- IF (item_page - 2) >= 1 -%]
426                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
427                             item_page => item_page - 2
428                         }) %]'>[% item_page - 2 %]</a>
429                     [%- END; -%]
430                     [%- IF (item_page - 1) >= 1 -%]
431                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
432                             item_page => item_page - 1
433                         }) %]'>[% item_page - 1%]</a>
434                     [%- END; -%]
435                     <span class="bookbag-paginator-selected" >[% item_page %]</span>
436                     [%- IF (item_page + 1) <= ctx.bb_page_count -%]
437                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
438                             item_page => item_page + 1
439                         }) %]'>[% item_page + 1 %]</a>
440                     [%- END; -%]
441                     [%- IF (item_page + 2) <= ctx.bb_page_count -%]
442                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
443                             item_page => item_page + 2
444                         }) %]'>[% item_page + 2 %]</a>
445                     [%- END; -%]
446                     [%- IF (item_page + 3) <= ctx.bb_page_count -%]
447                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
448                             item_page => item_page + 3
449                         }) %]'>[% item_page + 3 %]</a>
450                     [%- END; -%]
451
452                     [%- IF (item_page + 1) <= ctx.bb_page_count; -%]
453                         <a href='[% mkurl(ctx.opac_root _ '/myopac/lists', {
454                             item_page => item_page + 1
455                         }) %]'>[% l('Next') %]<span class="nav_arrow_fix">&#9658;</span></a>
456                     [%- END; -%]
457                  </div>
458             </div>
459         [% END %]
460         <br/>
461  </div></div>
462         </form>
463         </div>
464         [% END %]
465         [% END %]
466     </div>
467     [% END %][% END %]
468 </div>
469
470 [% END %]
471