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