Bug 34571: Remove use of "onclick" for ExpandField in cataloguing editors
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / merge.tt
1 [% USE raw %]
2 [% USE Asset %]
3 [% SET footerjs = 1 %]
4 [% PROCESS 'merge-record.inc' %]
5
6 [% INCLUDE 'doc-head-open.inc' %]
7 <title>Merging records &rsaquo; Cataloging &rsaquo; Koha</title>
8 [% INCLUDE 'doc-head-close.inc' %]
9 <style>
10 div.record ul, div.record li { float:none; display:block; }
11 div#result { margin-top: 1em; }
12 /* We use this style "against" the li ui-tabs-nav style automatically applied */
13 #dataPreview { width : 80%; } @media (max-width: 767px) { #dataPreview { margin: 0; width : auto; } }
14 </style>
15 </head>
16
17 <body id="cat_merge" class="cat">
18 [% WRAPPER 'header.inc' %]
19     [% INCLUDE 'cataloging-search.inc' %]
20 [% END %]
21
22 [% WRAPPER 'sub-header.inc' %]
23     [% WRAPPER breadcrumbs %]
24         [% WRAPPER breadcrumb_item %]
25             <a href="/cgi-bin/koha/cataloguing/cataloging-home.pl">Cataloging</a>
26         [% END %]
27         [% WRAPPER breadcrumb_item bc_active= 1 %]
28             <span>Merging records</span>
29         [% END %]
30     [% END #/ WRAPPER breadcrumbs %]
31 [% END #/ WRAPPER sub-header.inc %]
32
33 <div class="main container-fluid">
34     <div class="row">
35         <div class="col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">
36
37 <h1>Merging records</h1>
38 [% IF ( result ) %]
39     [% IF ( errors.size ) %]
40        [% FOREACH error IN errors %]
41            <div class="dialog alert">
42                 [% IF error.code == 'CANNOT_MOVE' %]
43                     The following items could not be moved from the old record to the new one: [% error.value | html %]
44                 [% ELSE %]
45                     [% error | html %]
46                 [% END %]
47                 <br />
48                 Therefore, the record to be merged has not been deleted.
49             </div>
50        [% END %]
51
52     [% ELSE %]
53         <div class="dialog message">The merge was successful. <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=[% ref_biblionumber | uri %]">View the merged record.</a></div>
54         <div class="page-section">
55             <h3>Report</h3>
56             <table>
57                 <thead>
58                     <tr>
59                         <th>Biblionumber</th>
60                         [% FOREACH key IN report_header.keys.sort %]
61                             [% tag = key.substr(0, 3) %]
62                             [% code = key.substr(3, 1) %]
63                             [% IF code == '@' %]
64                                 [% header = tag %]
65                             [% ELSE %]
66                                 [% header = tag _ '$' _ code %]
67                             [% END %]
68                             <th>[% header | html %]</th>
69                         [% END %]
70                     </tr>
71                 </thead>
72                 <tbody>
73                     [% FOREACH record IN report_records %]
74                         <tr>
75                             <td>
76                                 [% record.biblionumber | html %]
77                                 [% IF loop.first %]
78                                     <span>(record kept)</span>
79                                 [% END %]
80                             </td>
81                             [% FOREACH key IN report_header.keys.sort %]
82                                 <td>
83                                     [% values = record.fields.$key %]
84                                     [% IF values %]
85                                         [% FOREACH value IN record.fields.$key %]
86                                             [% value | html %]
87                                             [% UNLESS loop.last %]<br />[% END %]
88                                         [% END %]
89                                     [% END %]
90                                 </td>
91                             [% END %]
92                         </tr>
93                     [% END %]
94                 </tbody>
95             </table>
96         </div> <!-- /.page-section -->
97     [% END %]
98
99 [% ELSE %]
100
101 [% IF ( choosereference ) %]
102 <p>Please choose which record will be the reference for the merge. The record chosen as reference will be kept, and the other will be deleted.</p>
103 <form id="mergeform" action="/cgi-bin/koha/cataloguing/merge.pl" method="post">
104     <fieldset class="rows">
105     <legend>Merge reference</legend>
106     <ol>
107         [% FOREACH record IN records %]
108             <li class="radio">
109                 [% IF loop.first %]
110                     <input type="radio" value="[% record.biblionumber | html %]" checked="checked" id="ref_biblionumber[% record.biblionumber | html %]" name="ref_biblionumber" onclick="changeFramework('[% record.frameworkcode | html %]')" />
111                 [% ELSE %]
112                     <input type="radio" value="[% record.biblionumber | html %]" id="ref_biblionumber[% record.biblionumber | html %]" name="ref_biblionumber" onclick="changeFramework('[% record.frameworkcode | html %]')" />
113                 [% END %]
114                 <label for="ref_biblionumber[% record.biblionumber | html %]">
115                     [% INCLUDE 'biblio-title.inc' biblio=record.data %]
116                     ([% record.biblionumber | uri %]) <a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% record.biblionumber | uri %]" class="previewData">View MARC</a>
117                 </label>
118             </li>
119         [% END %]
120
121             <li>
122                 <label for="frameworkcode">Using framework:</label>
123                 <select name="frameworkcode" id="frameworkcode">
124                     <option value="">Default</option>
125                     [% FOREACH framework IN frameworks %]
126                         <option value="[% framework.frameworkcode | html %]">[% framework.frameworktext | html %]</option>
127                     [% END %]
128                 </select>
129             </li>
130     </ol>
131
132     [% FOREACH record IN records %]
133         <input type="hidden" name="biblionumber" value="[% record.biblionumber | html %]" />
134     [% END %]
135     </fieldset>
136     <fieldset class="action">
137         <input type="submit" class="btn btn-primary" value="Next" />
138     </fieldset>
139 </form>
140
141 <div id="dataPreview" class="modal" tabindex="-1" role="dialog" aria-labelledby="dataPreviewLabel" aria-hidden="true">
142     <div class="modal-dialog">
143     <div class="modal-content">
144     <div class="modal-header">
145         <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
146         <h3 id="dataPreviewLabel">Preview</h3>
147     </div>
148     <div class="modal-body">
149         <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
150     </div>
151     <div class="modal-footer">
152         <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
153     </div>
154     </div>
155     </div>
156 </div>
157
158 [% ELSE %]
159 [% IF ( errors.size ) %]
160     <div class="dialog alert">
161         [% FOREACH error IN errors %]
162             <p>[% error | html %]</p>
163         [% END %]
164     </div>
165 [% ELSE %]
166 <form id="mergeform" action="/cgi-bin/koha/cataloguing/merge.pl" method="post" onsubmit="return mergeformsubmit()">
167
168 <div class="col-sm-6">
169 [% PROCESS mergesource sourcerecords=records %]
170 </div>
171 <div class="col-sm-6">
172 [% PROCESS mergetarget %]
173 </div> <!-- .col-sm-6 -->
174
175 <input type="hidden" name="ref_biblionumber" value="[% ref_biblionumber | html %]" />
176 [% FOREACH record IN records %]
177     <input type="hidden" name="biblionumber" value="[% record.recordid | html %]" />
178 [% END %]
179 <input type="hidden" name="frameworkcode" value="[% framework | html %]" />
180
181 <fieldset class="action">
182     <input type="submit" name="merge" class="btn btn-primary" value="Merge" />
183     <label for="report_fields">Fields to display in report:</label>
184     <input type="text" name="report_fields" id="report_fields" value="[% MergeReportFields | html %]" />
185     <span class="hint">(Example: "001,245ab,600")</span>
186 </fieldset>
187 </form>
188 [% END %]
189 [% END %]
190 [% END %]
191
192 </div>
193 </div>
194
195 [% MACRO jsinclude BLOCK %]
196     [% Asset.js("js/merge-record.js") | $raw %]
197     <script>
198         [% UNLESS (result) %]
199           [% IF (choosereference) %]
200             function changeFramework(fw) {
201                 $("#frameworkcode").val(fw);
202             }
203             $(document).ready(function(){
204                     $(".previewData").on("click", function(e){
205                     e.preventDefault();
206                     var ltitle = $(this).text();
207                     var page = $(this).attr("href");
208                     $("#dataPreviewLabel").text(ltitle);
209                     $("#dataPreview .modal-body").load(page + " div");
210                     $('#dataPreview').modal({show:true});
211                 });
212                 $("#dataPreview").on("hidden.bs.modal", function(){
213                     $("#dataPreviewLabel").html("");
214                     $("#dataPreview .modal-body").html("<div id=\"loading\"><img src=\"[% interface | html %]/[% theme | html %]/img/spinner-small.gif\" alt=\"\" /> "+_("Loading")+"</div>");
215                 });
216             });
217           [% ELSE %]
218             function check_mandatory () {
219                 var missing = {
220                     'fields': [],
221                     'subfields': []
222                 };
223                 for (tag in tagslib) {
224                     if (tag == '000' || tag == '001')
225                         continue;
226                     if (tagslib[tag].mandatory == 1) {
227                         if ($("#resultul span.field:contains("+ tag +")").length == 0) {
228                             missing.fields.push(tag);
229                         }
230                     }
231                     for (subfieldcode in tagslib[tag]) {
232                         if (subfieldcode == 'lib' || subfieldcode == 'mandatory'
233                         || subfieldcode == 'repeatable' || subfieldcode == 'tab'
234                         || subfieldcode == '@') {
235                             continue;
236                         }
237                         if (tagslib[tag][subfieldcode].mandatory == 1 && tagslib[tag][subfieldcode].tab >= 0) {
238                             var fields = $("#resultul span.field:contains("+ tag +")");
239                             $(fields).each(function() {
240                                 var subfields = $(this).parents('li').find("span.subfield:contains("+ subfieldcode +")");
241                                 if (subfields.length == 0) {
242                                     missing.subfields.push( {
243                                         'tag': tag,
244                                         'subfieldcode': subfieldcode
245                                     } );
246                                 }
247                             });
248                         }
249                     }
250                 }
251                 return missing;
252             }
253
254             // When submiting the form
255             function mergeformsubmit() {
256                 var missing = check_mandatory();
257                 var alert_msg = '';
258                 var error = 0;
259                 if (missing.fields.length > 0) {
260                     alert_msg += _("Following required fields are missing:") + "\n";
261                     for (var i in missing.fields) {
262                         alert_msg += "\t- " + missing.fields[i] + "\n";
263                         error ++;
264                     }
265                     alert_msg += "\n";
266                 }
267                 if (missing.subfields.length > 0) {
268                     alert_msg += _("Following required subfields are missing:") + "\n";
269                     for (var i in missing.subfields) {
270                         var subfield = missing.subfields[i];
271                         alert_msg += "\t- " + subfield.tag + "$" + subfield.subfieldcode + "\n";
272                         error ++;
273                     }
274                 }
275
276                 if (error != 0) {
277                     alert(alert_msg);
278                     return false;
279                 } else {
280                     $("#tabs").remove();
281                 }
282             }
283
284         $(document).ready(function(){
285             tagslib = [];
286             $.getJSON("/cgi-bin/koha/cataloguing/merge_ajax.pl", {frameworkcode : "[% framework | html %]" }, function(json) {
287               tagslib = json;
288               rebuild_target($("#tabs"), $("#resultul"));
289             });
290
291             if( $("#tabs .tab-pane.active").length < 1 ){
292                 $("#tabs a:first").tab("show");
293             }
294
295             // Uncheck all checkboxes in both tabs, then check all checkboxes in first tab
296             // to avoid inconsistencies from a page refresh.
297             $("#tabs input[type='checkbox']").prop("checked", false);
298             $("#tabrecord[% ref_biblionumber | html %]_panel input[type='checkbox']").prop("checked", true );
299
300             //Set focus to cataloging search
301             $("input[name=q]:eq(0)").focus();
302         });
303
304           [% END %]
305         [% END %]
306     </script>
307 [% END %]
308
309 [% INCLUDE 'intranet-bottom.inc' %]