Bug 2693: add ability to filter by reviewer name on tag review page
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / tags / review.tt
1 [% USE KohaDates %]
2 [% INCLUDE 'doc-head-open.inc' %]
3 <title>Home &rsaquo; Tools &rsaquo; Tags &rsaquo; [% IF ( do_it ) %]Review &rsaquo; [% ELSE %]Review tags[% END %]</title>
4 [% INCLUDE 'doc-head-close.inc' %]
5 <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/en/css/datatables.css" />
6 [% INCLUDE 'datatables.inc' %]
7 [% INCLUDE 'calendar.inc' %]
8 <script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
9 <style type="text/css">
10 .setlabel {width: 6em; font-family: courier; background-color:#E8E8E8;}
11 tr > td.red      {color:darkred;   background-color: pink;}
12 tr > td.green    {color:darkgreen; background-color: #D1EFD5; text-align: center;}
13 tr > td.pending  {background-color: lightyellow;}
14 tr > td input,td input[type="submit"] { font-size: 85%; padding: 1px; }
15 </style>
16 <script type="text/javascript">
17 //<![CDATA[
18         // [% script_name %]
19         $.ajaxSetup({
20           url: "/cgi-bin/koha/tags/review.pl",
21           type: "POST",
22           dataType: "script"
23         });
24         var ok_count  = 0;
25         var nok_count = 0;
26         var rej_count = 0;
27         var alerted = 0;
28         function pull_counts () {
29                 ok_count  = parseInt(document.getElementById("terms_summary_approved_count"  ).innerHTML);
30                 nok_count = parseInt(document.getElementById("terms_summary_unapproved_count").innerHTML);
31                 rej_count = parseInt(document.getElementById("terms_summary_rejected_count"  ).innerHTML);
32         }
33         function count_approve () {
34                 pull_counts();
35                 if (nok_count > 0) {
36                         $("#terms_summary_unapproved_count").html(nok_count -1);
37                         $("#terms_summary_approved_count"  ).html( ok_count +1);
38                 }
39         }
40         function count_reject () {
41                 pull_counts();
42                 if (nok_count > 0) {
43                         $("#terms_summary_unapproved_count").html(nok_count -1);
44                         $("#terms_summary_rejected_count"  ).html(rej_count +1);
45                 }
46         }
47         function warn_once (evt) {
48                 if (alerted <= 1 && ($(evt.target).is('.ok') || $(evt.target).is('.rej'))) {
49                         alerted += 1;
50                         window.alert("this is: " + this + "is '.ok': " + $(evt.target).is('.ok') + "  is '.rej': " + $(evt.target).is('.rej'));
51                 }
52         }
53         var success_approve = function(tag){
54                 // window.alert(_("AJAX approved tag: ") + tag);
55         };
56         var failure_approve = function(tag){
57                 window.alert(_("AJAX failed to approve tag: ") + tag);
58         };
59         var success_reject  = function(tag){
60                 // window.alert(_("AJAX rejected tag: ") + tag);
61         };
62         var failure_reject  = function(tag){
63                 window.alert(_("AJAX failed to reject tag: ") + tag);
64         };
65         var success_test    = function(tag){
66                 $('#verdict').html(tag + _(" is permitted!"));
67         };
68         var failure_test    = function(tag){
69                 $('#verdict').html(tag + _(" is prohibited!"));
70         };
71         var indeterminate_test = function(tag){
72                 $('#verdict').html(tag + _(" is neither permitted nor prohibited!"));
73         };
74
75         var success_test_call = function() {
76                 $('#test_button').removeAttr("disabled");
77                 $('#test_button').attr("value","test");
78         };
79         $(document).ready(function() {
80                 $('.ajax_buttons' ).css({visibility:"visible"});
81                 $("p.check").html("<strong>"+_("Select:")+" <\/strong><a id=\"CheckAll\" href=\"/cgi-bin/koha/tags/review.pl\">"+_("All")+"<\/a> <a id=\"CheckPending\" href=\"/cgi-bin/koha/tags/review.pl\">"+_("Pending")+"<\/a> <a id=\"CheckNone\" href=\"/cgi-bin/koha/tags/review.pl\">"+_("None")+"<\/a>");
82             $("#CheckAll").click(function(){
83                 $(".checkboxed").checkCheckboxes();
84                 return false;
85             });
86             $("#CheckNone").click(function(){
87                 $(".checkboxed").unCheckCheckboxes();
88                 return false;
89             });
90             $("#CheckPending").click(function(){
91                 $(".checkboxed").checkCheckboxes(".pending");
92                 return false;
93             });
94                 $('body').click(function(event) {
95                         pull_counts();
96                         // window.alert(_("Click detected on ") + event.target + ": " + $(event.target).html);
97                         if ($(event.target).is('.ok')) {
98                                 $.ajax({
99                     "data": {ok: $(event.target).attr("title")},
100                                         "success": count_approve // success_approve
101                                 });
102                 $(event.target).next(".rej").removeAttr("disabled").attr("value",_("Reject")).css("color","#000");
103                                 $(event.target).attr(   "value",_("Approved")).attr("disabled","disabled").css("color","#666");
104                                 return false;   // cancel submit
105                         }
106                         if ($(event.target).is('.rej')) {
107                                 $.ajax({
108                     "data": {rej: $(event.target).attr("title")},
109                                         "success": count_reject // success_reject
110                                 });
111                 $(event.target).prev(".ok").removeAttr("disabled").attr("value",_("Approve")).css("color","#000");
112                                 $(event.target).attr(   "value",_("Rejected")).attr("disabled","disabled").css("color","#666");
113                                 return false;   // cancel submit
114                         }
115                         if ($(event.target).is('#test_button')) {
116                                 $(event.target).attr(   "value",_("Testing...")).attr("disabled","disabled");
117                                 $.ajax({
118                                         "data": {test: $('#test').attr("value")},
119                                         "success": success_test_call // success_reject
120                                 });
121                                 return false;   // cancel submit
122                         }
123                 });
124                 $("*").ajaxError(function(evt, request, settings){
125                         if ((alerted +=1) <= 1){ window.alert(_("AJAX error")+" (" + alerted + " alert)"); }
126                 });
127         $("#tagst").dataTable($.extend(true, {}, dataTablesDefaults, {
128             "aoColumnDefs": [
129                 [% IF ( filter_approved_pending ) %]
130                     { "aTargets": [ 0,1,-2 ], "bSortable": false, "bSearchable": false }
131                 [% ELSE %]
132                     { "aTargets": [ 0,1,-3 ], "bSortable": false, "bSearchable": false }
133                 [% END %]
134             ],
135             "aoColumns": [
136                 null,null,null,null,null,null,[% UNLESS ( filter_approved_pending ) %]null,[% END %]{ "sType": "title-string" }
137             ],
138             "aaSorting": [[ 4, "desc" ]],
139             "aLengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]],
140             "iDisplayLength": 20,
141             "sPaginationType": "four_button"
142         }));
143         var reviewerField = $("#approver");
144         reviewerField.autocomplete({
145             source: "/cgi-bin/koha/circ/ysearch.pl",
146             minLength: 3,
147             select: function( event, ui ) {
148                 reviewerField.val( ui.item.borrowernumber );
149                 return false;
150             }
151         })
152         .data( "autocomplete" )._renderItem = function( ul, item ) {
153             return $( "<li></li>" )
154             .data( "item.autocomplete", item )
155             .append( "<a>" + item.surname + ", " + item.firstname + " (" + item.cardnumber + ") <small>" + item.address + " " + item.city + " " + item.zipcode + " " + item.country + "</small></a>" )
156             .appendTo( ul );
157         };
158         });
159 //]]>
160 </script>
161 </head>
162 <body id="tags_review" class="tools">
163 [% INCLUDE 'header.inc' %]
164 [% INCLUDE 'cat-search.inc' %]
165
166 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo; Tags</div>
167
168 <div id="doc3" class="yui-t2">
169  <div id="bd">
170   <div id="yui-main">
171    <div class="yui-b">
172    
173 <div class="yui-ge">
174 <div class="yui-u first">
175 <h1>Tags</h1>
176 <form method="post" action="/cgi-bin/koha/tags/review.pl" class="checkboxed">
177   <h4>Displaying 
178         [% IF ( filter_approved_all ) %]ALL[% END %]
179         [% IF ( filter_approved_ok ) %]Approved[% END %]
180         [% IF ( filter_approved_pending ) %]Pending[% END %]
181         [% IF ( filter_approved_rej ) %]Rejected[% END %]
182         Terms
183   </h4>
184
185   [% IF ( op_count ) %]
186   <div class="dialog message" id="main_status">
187                 [% IF ( op == 'approve' ) %]            Approved
188                 [% ELSIF ( op == 'reject' ) %]  Rejected
189                 [% ELSIF ( op == 'test' ) %]            Tested
190                 [% ELSE %]Unknown Operation ([% op %]) on
191                 [% END %]
192         [% op_count %] Term(s).
193   </div>
194   [% END %]
195   [% IF ( message_loop ) %]
196   <div class="dialog alert" id="main_error">
197         [% FOREACH message_loo IN message_loop %]
198                 [% IF ( message_loo.date_from ) %]ERROR: <em>Date from</em> is not a legal value ("[% message_loo.date_from %]").
199                 [% ELSIF ( message_loo.date_to ) %]ERROR: <em>Date to</em> is not a legal value ("[% message_loo.date_to %]").
200                 [% ELSIF ( message_loo.failed_ok ) %]ERROR: Failed to approve term ([% message_loo.failed_ok %]).
201                 [% ELSIF ( message_loo.failed_rej ) %]ERROR: Failed to reject term ([% message_loo.failed_rej %]).
202                 [% ELSIF ( message_loo.approver ) %]ERROR: No match for user ([% message_loo.approver %]). FILTER REQUIRES BORROWERNUMBER (not name).
203                 [% ELSIF ( message_loo.approved_by ) %]ERROR: No match for borrowernumber ([% message_loo.approved_by %]).
204                 [% ELSIF ( message_loo.op_zero ) %]ERROR: The root koha user in your KOHA_CONF file
205                                 (default: kohaadmin) is not a valid tag moderator.  These actions are logged 
206                                 by borrowernumber, so the moderator must exist in your borrowers table.
207                                 Please login as a different authorized staff user to moderate tags.  
208                 [% ELSE %]                                      Unrecognized error! 
209                 [% END %]
210                 <br />
211         [% END %]
212   </div>
213   [% END %]
214   [% IF ( pagination_bar ) %]
215   <div class="pages" id="pagination_top">
216         [% pagination_bar %]
217   </div>
218   [% END %]
219   [% IF ( tagloop ) %]
220   <p class="check"></p>
221   <table id="tagst">
222     <thead>
223         <tr>
224                 <th>&nbsp;</th>
225                 <th>&nbsp;</th>
226                 <th>Status</th>
227                 <th>Term</th>
228                 <th>Weight</th>
229                 <th>Actions</th>
230             [% UNLESS ( filter_approved_pending ) %]<th>Reviewer</th>[% END %]
231                 <th>Date</th>
232         </tr>
233     </thead>
234     <tbody>
235     [% FOREACH tagloo IN tagloop %]
236         <tr>
237             <td class="count">[% offset + loop.count %]
238             </td>
239                 [% IF ( tagloo.approved == 0 ) %]<td><span><input type="checkbox" value="[% tagloo.term %]" name="tags" class="pending" /></span>
240                 [% ELSE %]<td><span><input type="checkbox" value="[% tagloo.term %]" name="tags" /></span>[% END %]
241             </td>
242             [% IF ( tagloo.approved == -1 ) %]<td class="red">rejected
243                 [% ELSIF ( tagloo.approved == 1 ) %]<td class="green"><img alt="OK" src="[% interface %]/[% theme %]/img/approve.gif" />
244             [% ELSE %]<td class="pending">
245             [% END %]
246             </td>
247             <td><a href="/cgi-bin/koha/tags/list.pl?tag=[% tagloo.term|uri %]">[% tagloo.term %]</a>
248             </td>
249             <td>[% tagloo.weight_total %]
250             </td>
251             [% IF ( tagloo.approved ) %]
252             <td><span class="ajax_buttons" style="visibility:hidden">
253                     [% IF ( tagloo.approved == -1 ) %]
254                 <input class="ok"  type="submit" title="[% tagloo.term %]" value="Approve" name="approve" />
255                 <input class="rej" disabled="disabled" type="submit" title="[% tagloo.term %]" value="Rejected" name="reject" />
256                 [% ELSE %]
257                 <input class="ok"  disabled="disabled" type="submit" title="[% tagloo.term %]" value="Approved" name="approve" />
258                 <input class="rej" type="submit" title="[% tagloo.term %]" value="Reject" name="reject" />
259                 [% END %]
260                 </span>
261             </td>
262             <td>[% IF ( tagloo.approved_by_name ) %]<a href="/cgi-bin/koha/tags/review.pl?approved_by=[% tagloo.approved_by %]&amp;approved=all">[% tagloo.approved_by_name %]</a>[% ELSE %]&nbsp;[% END %]
263             </td>
264             [% ELSE %]
265             <td><span class="ajax_buttons" style="visibility:hidden">
266             <input class="ok"  type="submit" title="[% tagloo.term %]" value="Approve" name="approve" />
267                 <input class="rej" type="submit" title="[% tagloo.term %]" value="Reject" name="reject" />
268                 </span>
269             </td>
270             [% UNLESS ( filter_approved_pending ) %]<td>&nbsp;</td>[% END %]
271             [% END %]
272             <td>
273                 <span title="[% tagloo.date_approved %]">[% tagloo.date_approved | $KohaDates %]</span>
274             </td>
275         </tr>
276     [% END %]
277     </tbody>
278   </table>
279   [% END %]
280     [% IF ( tagloop ) %]<fieldset class="action">
281    <input type="submit" value="Approve" id="approve_button" name="op-approve" />
282    <input type="submit" value="Reject"  id="reject_button"  name="op-reject" />
283   </fieldset>[% END %]
284   </form>
285 </div>
286 <div class="yui-u">
287  <fieldset class="brief">
288   <h4>Terms summary</h4>
289   <ul>
290         <li><a href="/cgi-bin/koha/tags/review.pl?approved=1">Approved</a>:
291                 <span id="terms_summary_approved_count">[% approved_count %]</span>
292         </li>
293         <li><a href="/cgi-bin/koha/tags/review.pl?approved=-1">Rejected</a>:
294                 <span id="terms_summary_rejected_count">[% rejected_count %]</span>
295         </li>
296         <li><a href="/cgi-bin/koha/tags/review.pl?approved=0">Pending</a>:
297                 <span id="terms_summary_unapproved_count">[% unapproved_count %]</span>
298         </li>
299         <li><a href="/cgi-bin/koha/tags/review.pl?approved=all">Total</a>:
300                 <span id="terms_summary_approved_total">[% approved_total %]</span>
301         </li>
302   </ul>
303   <span id="terms_summary_status">&nbsp;</span>
304   </fieldset>
305   <fieldset class="brief">
306    <h4>Check lists</h4>
307    <div class="description">Enter a word or phrase to check against approved/rejected lists: </div>
308    <form method="post" action="/cgi-bin/koha/tags/review.pl">
309    <input type="text" size="14" name="test" id="test" />
310    <fieldset class="action"><input type="submit" value="Test" id="test_button" name="op-test" /></fieldset>
311    <div id="verdict">
312         [% IF ( test_term ) %]
313         [% IF ( verdict_ok ) %]
314                 &quot;[% test_term %]&quot; is permitted.
315         [% ELSIF ( verdict_rej ) %]
316                 &quot;[% test_term %]&quot; is prohibited.
317         [% ELSIF ( verdict_indeterminate ) %]
318                 &quot;[% test_term %]&quot; is neither permitted nor prohibited.
319         [% END %]
320         [% END %]
321    </div>
322    </form>
323   </fieldset>
324 </div>
325 </div>
326
327
328   </div>
329  </div>
330  <div class="yui-b">
331 <form method="post" action="/cgi-bin/koha/tags/review.pl">
332 <fieldset class="brief">
333   <h4>Filters</h4>
334         <ol>
335             <li><label for="tag">Term</label> <input type="text" name="tag" id="tag" value="[% filter_tag %]" />
336             </li>
337             <li><label for="approved">Status</label> 
338             <select name="approved" id="approved">
339             [% IF ( filter_approved_all ) %]<option selected="selected" value="all">all</option>
340             [% ELSE %]<option value="all">all</option>[% END %]
341             [% IF ( filter_approved_ok ) %]<option selected="selected" value="1">approved</option>
342             [% ELSE %]<option value="1">approved</option>[% END %]
343             [% IF ( filter_approved_pending ) %]<option selected="selected" value="0">pending</option>
344             [% ELSE %]<option value="0">pending</option>[% END %]
345             [% IF ( filter_approved_rej ) %]<option selected="selected" value="-1">rejected</option>
346             [% ELSE %]<option value="-1">rejected</option>[% END %]
347                         </select>
348             </li>
349             <li><label for="approver">Reviewer</label> <input type="text" name="approver" id="approver" value="[% filter_approver %]" />
350             </li>
351             <li>
352                         <label for="from">Date: from </label>
353             <input type="text" size="10" id="from" name="from" value="[% filter_date_approved_from %]" class="datepickerfrom" />
354                         <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
355
356                         <label for="to">...to </label>
357             <input type="text" size="10" id="to" name="to" value="[% filter_date_approved_to %]" class="datepickerto" />
358                         <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
359             </li>
360   </ol>
361  <fieldset class="action"><input type="submit" value="Apply filter(s)" /></fieldset>
362 </fieldset>
363 </form>
364 </div>
365 </div>
366 [% INCLUDE 'intranet-bottom.inc' %]
367