Bug 18636: Sysprefs: Add explanation for conflict autonumbernum / BorrowerMandatoryFields
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / admin / matching-rules.tt
1 [% INCLUDE 'doc-head-open.inc' %]
2 <title>Koha &rsaquo; Administration &rsaquo; Record matching rules
3 [% IF ( matching_rule_form ) %]
4   [% IF ( edit_matching_rule ) %]
5     &rsaquo; Modify record matching rule
6   [% ELSE %]
7     &rsaquo; Add record matching rule
8   [% END %]
9 [% END %]
10 [% IF ( delete_matching_rule_form ) %]
11   &rsaquo; Confirm deletion of record matching rule &quot;[% code %]&quot;
12 [% END %]
13 </title>
14 [% INCLUDE 'doc-head-close.inc' %]
15
16 [% BLOCK norms_text %]
17 [%    SWITCH norm %]
18 [%        CASE 'none'           %]None
19 [%        CASE 'remove_spaces'  %]Remove spaces
20 [%        CASE 'upper_case'     %]Uppercase
21 [%        CASE 'lower_case'     %]Lowercase
22 [%        CASE 'legacy_default' %]Legacy default
23 [%        CASE %][% norm %]
24 [%    END %]
25 [% END %]
26
27 [% BLOCK norms_options %]
28 [%# PARAMS: selected_norm %]
29 [%    FOREACH norm IN valid_norms %]
30 [%        IF ( norm == selected_norm ) %]
31         <option value="[% norm %]" selected="selected">[% PROCESS norms_text norm=norm %]</option>
32 [%        ELSE %]
33         <option value="[% norm %]">[% PROCESS norms_text norm=norm %]</option>
34 [%        END %]
35 [%    END %]
36 [% END %]
37
38 [% BLOCK norms_select %]
39 [%# PARAMS: selected_norm, id, name %]
40 [%    UNLESS valid_norms.grep(selected_norm).size %]
41 [%#       Fallback to 'none' %]
42 [%        selected_norm = 'none' %]
43 [%    END %]
44     <select id="[% id %]" name="[% name %]">
45 [%    PROCESS norms_options selected_norm=selected_norm %]
46     </select>
47 [% END %]
48
49 <script type="text/javascript">
50 //<![CDATA[
51
52 var maxMatchPoint = [% max_matchpoint %];
53 var maxMatchCheck = [% max_matchcheck %];
54
55 function InsertMatchpoint(loc, index) {
56     var original= $("#"+index);
57     var clone = original.clone();
58     clone.show();
59
60     // update IDs and form names
61     maxMatchPoint++;
62     clone.attr('id', 'mp_' + maxMatchPoint);
63     $("span.counter",clone).html(maxMatchPoint);
64     $("label",clone).each(function(){
65       var s = $(this).attr("for");
66         if (s.match(/mp_num/)) {
67             $(this).attr("for",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
68         }
69     });
70
71     $("div",clone).each(function(){
72       var s = $(this).attr("id");
73         if (s.match(/mp_num/)) {
74             $(this).attr("id",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
75         }
76     });
77     $("input",clone).each(function(){
78         var s = $(this).attr("id");
79         if(s.match(/mp_num/)){
80           $(this).attr("id",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
81         }
82
83         var s = $(this).attr("name");
84         if(s.match(/mp_num/)){
85           $(this).attr("name",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
86         }
87     });
88     $("#match_points").append(clone);
89 }
90
91 function InsertMatchcheck(loc, index) {
92     var original= $("#"+index);
93     var clone = original.clone();
94     clone.show();
95
96     // update IDs and form names
97     maxMatchCheck++;
98     clone.attr('id', 'mc_' + maxMatchCheck);
99     $("span.counter",clone).html(maxMatchCheck);
100     $("label",clone).each(function(){
101       var s = $(this).attr("for");
102         if (s.match(/mc_num/)) {
103             $(this).attr("for",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
104         }
105     });
106
107     $("div",clone).each(function(){
108       var s = $(this).attr("id");
109         if (s.match(/mc_num/)) {
110             $(this).attr("id",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
111         }
112     });
113     $("input",clone).each(function(){
114         var s = $(this).attr("id");
115         if(s.match(/mc_num/)){
116           $(this).attr("id",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
117         }
118
119         var s = $(this).attr("name");
120         if(s.match(/mc_num/)){
121           $(this).attr("name",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
122         }
123     });
124     $("#match_checks").append(clone);
125 }
126
127 function DeleteMatchpoint(loc) {
128     $(loc).parent().parent().parent().remove();
129     if($(".matchgroup",$("#match_points")).length == 0){
130       maxMatchPoint = 0;
131       $("#addMatchPoint").show();
132     }
133 }
134
135 function DeleteMatchcheck(loc) {
136     $(loc).parent().parent().parent().remove();
137     if($(".matchgroup",$("#match_checks")).length == 0){
138       maxMatchCheck = 0;
139       $("#addMatchCheck").show();
140     }
141 }
142
143 function DoCancel(f) {
144   f.op.value='';
145   document.Aform.submit();
146 }
147
148 function CheckMatchingRuleForm(f) {
149     var ok=1;
150     var _alertString="";
151     var alertString2;
152     if (f.code.value.length==0) {
153         _alertString += "\n- " + _("Matching rule code missing");
154     }
155     if (f.description.value.length==0) {
156         _alertString += "\n- " + _("Description missing");
157     }
158     if (f.threshold.value.length==0) {
159         _alertString += "\n- " + _("Threshold missing");
160     }
161     if (_alertString.length==0) {
162         document.Aform.submit();
163     } else {
164         alertString2  = _("Form not submitted because of the following problem(s)");
165         alertString2 += "\n------------------------------------------------------------------------------------\n";
166         alertString2 += _alertString;
167         alert(alertString2);
168     }
169 }
170
171 function CheckRuleForm(f) {
172     var ok=1;
173     var _alertString="";
174     var alertString2;
175     if (f.sort_rule.value.length==0) {
176         _alertString += "\n- " + _("Filing rule code missing");
177     }
178     if (f.description.value.length==0) {
179         _alertString += "\n- " + _("Description missing");
180     }
181     if (f.sort_routine.value.length==0) {
182         _alertString += "\n- " + _("Sort routine missing");
183     }
184     if (_alertString.length==0) {
185         document.Aform.submit();
186     } else {
187         alertString2  = _("Form not submitted because of the following problem(s)");
188         alertString2 += "\n------------------------------------------------------------------------------------\n";
189         alertString2 += _alertString;
190         alert(alertString2);
191     }
192 }
193
194 //]]>
195 </script>
196 <style type="text/css">
197   fieldset.rows fieldset.rows { border-width : 0; }
198   fieldset.rows fieldset.rows fieldset.rows { border-width : 1px; }
199   fieldset, fieldset.rows { width : 90%; padding: .3em .6em .3em .6em; }
200         fieldset.rows fieldset {font-size:100%;}
201   div.matchgroup { border:1px solid #DDD; border-left-width: 15px; padding:.4em; margin-bottom:.6em;}
202 </style>
203 </head>
204 <body id="admin_matching-rules" class="admin">
205 [% INCLUDE 'header.inc' %]
206 [% INCLUDE 'prefs-admin-search.inc' %]
207
208 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> &rsaquo; [% IF ( display_list ) %]Record matching rules[% ELSE %]<a href="/cgi-bin/koha/admin/matching-rules.pl">Record matching rules</a>[% END %]
209 [% IF ( matching_rule_form ) %]
210   [% IF ( edit_matching_rule ) %]
211     &rsaquo; Modify record matching rule
212   [% ELSE %]
213     &rsaquo; Add record matching rule
214   [% END %]
215 [% END %]
216 [% IF ( delete_matching_rule_form ) %]
217   &rsaquo; Confirm deletion of record matching rule &quot;[% code %]&quot;
218 [% END %]
219 </div>
220
221 <div id="doc3" class="yui-t2">
222
223    <div id="bd">
224     <div id="yui-main">
225     <div class="yui-b">
226
227 [% IF ( matching_rule_form ) %]
228   [% IF ( edit_matching_rule ) %]
229 <h2>Modify record matching rule</h2>
230   [% ELSE %]
231 <h2>Add record matching rule</h2>
232   [% END %]
233 <form action="[% script_name %]" name="Aform" method="post">
234   <input type="hidden" name="op" value="[% confirm_op %]" />
235   <fieldset class="rows">
236     <ol>
237       <li>
238           [% IF ( edit_matching_rule ) %]
239                   <span class="label">Matching rule code: </span>
240             <input type="hidden" name="matcher_id" value="[% matcher_id %]" />
241             <input type="hidden" name="code" value="[% code %]" />
242             [% code %]
243           [% ELSE %]
244                   <label for="code" class="required">Matching rule code: </label>
245             <input type="text" id="code" name="code"  size="10" maxlength="10" /> <span class="required">Required</span>
246           [% END %]
247        </li>
248        <li><label for="description" class="required">Description: </label>
249            <input type="text" id="description" name="description" size="50" maxlength="250" 
250                   value="[% description |html %]" /> <span class="required">Required</span>
251        </li>
252        <li><label for="threshold" class="required">Match threshold: </label>
253            <input type="text" id="threshold" name="threshold" size="5" maxlength="5" 
254                   value="[% threshold |html %]" /> <span class="required">Required</span>
255        </li>
256        <li><label for="record_type" class="required">Record type: </label>
257            <select id="record_type" name="record_type">
258                [% IF ( record_type == "authority" ) %]
259                    <option value="biblio">Bibliographic record</option>
260                    <option value="authority" selected="selected">Authority record</option>
261                [% ELSE %]
262                    <option value="biblio" selected="selected">Bibliographic record</option>
263                    <option value="authority">Authority record</option>
264                [% END %]
265            </select><span class="required">Required</span>
266        </li>
267     </ol>
268   </fieldset>
269
270   <fieldset class="rows" id="match_points">
271   <h4>Match points</h4>
272   [% IF ( edit_matching_rule ) %]
273   [% IF ( matchpoints ) %]<p id="addMatchPoint" style="display:none;">[% ELSE %]<p id="addMatchPoint">[% END %]<a href="#" class="button" onclick="InsertMatchpoint('mp_1', 'mp_template'); return false;">Add match point</a></p>
274   [% ELSE %]<p id="addMatchPoint" style="display:none;"><a href="#" class="button" onclick="InsertMatchpoint('mp_1', 'mp_template'); return false;">Add match point</a></p>[% END %]
275   [% IF ( edit_matching_rule ) %]
276   [% FOREACH matchpoint IN matchpoints %]
277   <div id="mp_[% matchpoint.mp_num %]" class="matchgroup">
278   <fieldset class="rows">
279     <legend>Match point [% matchpoint.mp_num %] | <a href="#" class="button" onclick="InsertMatchpoint('mp_[% matchpoint.mp_num %]', 'mp_template'); return false;">Add match point</a> | <a href="#" class="button" onclick="DeleteMatchpoint(this); return false;">Remove this match point</a></legend>
280     <ol>
281       <li>
282         <label for="mp_[% matchpoint.mp_num %]_search_index">Search index: </label>
283         <input type ="text" id="mp_[% matchpoint.mp_num %]_search_index" 
284                name="mp_[% matchpoint.mp_num %]_search_index" size="20" 
285                value="[% matchpoint.index |html %]"
286           maxlength="30" />
287       </li>
288       <li>
289         <label for="mp_[% matchpoint.mp_num %]_score">Score: </label>
290         <input type ="text" id="mp_[% matchpoint.mp_num %]_score" 
291                name="mp_[% matchpoint.mp_num %]_score" size="5"
292                value="[% matchpoint.score |html %]" 
293                maxlength="5" />
294       </li>
295       </ol>
296       [% FOREACH component IN matchpoint.components %]
297       <fieldset class="rows" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]">
298       <legend>Matchpoint components</legend>
299         <ol>
300           <li>
301             <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_tag">Tag: </label>
302             <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_tag" 
303                    name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_tag" 
304                    value="[% component.tag |html %]"
305                    size="3" maxlength="3" />
306           </li>
307           <li>
308             <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_subfields">Subfields: </label>
309             <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_subfields" 
310                    name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_subfields" 
311                    value="[% component.subfields |html %]"
312                    size="10" maxlength="40" />
313           </li>
314           <li>
315             <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_offset">Offset: </label>
316             <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_offset" 
317                    name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_offset" 
318                    value="[% component.offset |html %]"
319                    size="5" maxlength="5" />
320           </li>
321           <li>
322             <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_length">Length: </label>
323             <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_length" 
324                    name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_length" 
325                    value="[% component.length |html %]"
326                    size="5" maxlength="5" />
327           </li>
328               [% FOREACH norm IN component.norms %]
329               <li id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_n_[% norm.norm_num %]">
330                 <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_n__[% norm.norm_num %]_norm">Normalization rule: </label>
331                 [%# Note: Following directive in one line, otherwise we have translatabiltiy problems %]
332                 [% PROCESS norms_select selected_norm=norm.norm id="mp_${norm.mp_num}_c_${component.comp_num}_n__${norm.norm_num}_norm" name="mp_${matchpoint.mp_num}_c_${component.comp_num}_n_${norm.norm_num}_norm" %]
333               </li>
334               [% END %]
335         </ol>
336       </fieldset>
337       [% END %]
338       </fieldset>
339       <br style="clear:both;" />
340       </div>
341   </fieldset>
342
343   [% END %]
344   [% ELSE %]
345   <div id="mp_1" class="matchgroup">
346   <fieldset class="rows">
347     <legend>Match point 1 | <a href="#" class="button" onclick="InsertMatchpoint('mp_1', 'mp_template'); return false;">Add match point</a> | <a href="#" class="button" onclick="DeleteMatchpoint(this); return false;">Remove this match point</a></legend>
348     <ol>
349       <li>
350         <label for="mp_1_search_index">Search index: </label>
351         <input type ="text" id="mp_1_search_index" name="mp_1_search_index" size="20" 
352           maxlength="30" />
353       </li>
354       <li>
355         <label for="mp_1_score">Score: </label>
356         <input type ="text" id="mp_1_score" name="mp_1_score" size="5" maxlength="5" />
357       </li>
358     </ol>
359     <fieldset class="rows" id="mp_1_c_1">
360       <legend>Matchpoint components</legend>
361         <ol>
362           <li>
363             <label for="mp_1_c_1_tag">Tag: </label>
364             <input type="text" id="mp_1_c_1_tag" name="mp_1_c_1_tag" size="3" maxlength="3" />
365           </li>
366           <li>
367             <label for="mp_1_c_1_subfields">Subfields: </label>
368             <input type="text" id="mp_1_c_1_subfields" name="mp_1_c_1_subfields" size="10" maxlength="40" />
369           </li>
370           <li>
371             <label for="mp_1_c_1_offset">Offset: </label>
372             <input type="text" id="mp_1_c_1_offset" name="mp_1_c_1_offset" size="5" maxlength="5" />
373           </li>
374           <li>
375             <label for="mp_1_c_1_length">Length: </label>
376             <input type="text" id="mp_1_c_1_length" name="mp_1_c_1_length" size="5" maxlength="5" />
377           </li>
378             <li id="mp_1_c_1_n_1">
379               <label for="mp_1_c_1_n_1_norm">Normalization rule: </label>
380                 [% PROCESS norms_select selected_norm="none" id="mp_1_c_1_n_1_norm" name="mp_1_c_1_n_1_norm" %]
381             </li>
382         </ol>
383     </fieldset>
384     </fieldset>
385       <br style="clear:both;" />
386       </div>
387
388   </fieldset>
389   [% END %]
390
391   <fieldset class="rows" id="match_checks">
392   <h4>Required match checks</h4>
393   [% IF ( edit_matching_rule ) %]
394   [% IF ( matchchecks ) %]<p id="addMatchCheck" style="display:none;">[% ELSE %]<p id="addMatchCheck">[% END %]<a href="#" class="button" onclick="InsertMatchcheck('mc_1', 'mc_template'); return false;">Add match check</a></p>
395   [% ELSE %]<p id="addMatchCheck" style="display:none;"><a href="#" class="button" onclick="InsertMatchcheck('mc_1', 'mc_template'); return false;">Add match check</a></p>[% END %]
396   [% IF ( edit_matching_rule ) %]
397   [% FOREACH matchcheck IN matchchecks %]
398   <div id="mc_[% matchcheck.mc_num %]" class="matchgroup">
399   <fieldset class="rows">
400     <legend>Match check [% matchcheck.mc_num %]<a href="#" class="button" onclick="InsertMatchcheck('mc_[% matchcheck.mc_num %]', 'mc_template'); return false;">Add match check</a> | <a href="#" class="button" onclick="DeleteMatchcheck(this); return false;">Remove this match check</a></legend>
401     <input type="hidden" id="mc_[% matchcheck.mc_num %]_id" name="mc_[% matchcheck.mc_num %]_id" value="1" />
402       [% FOREACH src_component IN matchcheck.src_components %]
403       <fieldset class="rows" id="mc_[% src_component.mc_num %]_src_c_[% src_component.comp_num %]">
404         <legend>Source (incoming) record check field</legend>
405         <ol>
406           <li>
407             <label for="mc_[% src_component.mc_num %]_src_c_[% src_component.comp_num %]_tag">Tag: </label>
408             <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_tag" 
409                    name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_tag" 
410                    value="[% src_component.tag |html %]"
411                    size="3" maxlength="3" />
412           </li>
413           <li>
414             <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_subfields">Subfields: </label>
415             <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_subfields" 
416                    name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_subfields" 
417                    value="[% src_component.subfields |html %]"
418                    size="10" maxlength="40" />
419           </li>
420           <li>
421             <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_offset">Offset: </label>
422             <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_offset" 
423                    name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_offset" 
424                    value="[% src_component.offset |html %]"
425                    size="5" maxlength="5" />
426           </li>
427           <li>
428             <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_length">Length: </label>
429             <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_length" 
430                    name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_length" 
431                    value="[% src_component.length |html %]"
432                    size="5" maxlength="5" />
433           </li>
434           [% FOREACH norm IN src_component.norms %]
435             <li id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_n_[% norm.norm_num %]">
436               <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_n_[% norm.norm_num %]_norm">Normalization rule: </label>
437                 [%# Note: Following directive in one line, otherwise we have translatabiltiy problems %]
438                 [% PROCESS norms_select selected_norm=norm.norm id="mc_${matchcheck.mc_num}_src_c_${src_component.comp_num}_n_${norm.norm_num}_norm" name="mc_${matchcheck.mc_num}_src_c_${src_component.comp_num}_n_${norm.norm_num}_norm" %]
439             </li>
440           [% END %]
441         </ol>
442       </fieldset>
443       [% END %]
444       [% FOREACH tgt_component IN matchcheck.tgt_components %]
445       <fieldset class="rows" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]">
446         <legend>Target (database) record check field</legend>
447         <ol>
448           <li>
449             <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_tag">Tag: </label>
450             <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_tag" 
451                    name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_tag" 
452                    value="[% tgt_component.tag |html %]"
453                    size="3" maxlength="3" />
454           </li>
455           <li>
456             <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_subfields">Subfields: </label>
457             <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_subfields" 
458                    name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_subfields" 
459                    value="[% tgt_component.subfields |html %]"
460                    size="10" maxlength="40" />
461           </li>
462           <li>
463             <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_offset">Offset: </label>
464             <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_offset" 
465                    name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_offset" 
466                    value="[% tgt_component.offset |html %]"
467                    size="5" maxlength="5" />
468           </li>
469           <li>
470             <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_length">Length: </label>
471             <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_length" 
472                    name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_length" 
473                    value="[% tgt_component.length |html %]"
474                    size="5" maxlength="5" />
475           </li>
476           [% FOREACH norm IN tgt_component.norms %]
477             <li id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_n_[% norm.norm_num %]">
478               <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_n_[% norm.norm_num %]_norm">Normalization rule: </label>
479                 [%# Note: Following directive in one line, otherwise we have translatabiltiy problems %]
480                 [% PROCESS norms_select selected_norm=norm.norm id="mc_${matchcheck.mc_num}_tgt_c_${tgt_component.comp_num}_n_${norm.norm_num}_norm" name="mc_${matchcheck.mc_num}_tgt_c_${tgt_component.comp_num}_n_${norm.norm_num}_norm" %]
481             </li>
482           [% END %]
483         </ol>
484       </fieldset>
485       [% END %]
486   </fieldset>
487   <br style="clear:both;" />
488   </div>
489   [% END %]
490   [% ELSE %]
491   <div id="mc_1" class="matchgroup">
492   <fieldset class="rows">
493     <legend>Match check 1 | <a href="#" class="button" onclick="InsertMatchcheck('mc_1', 'mc_template'); return false;">Add match check</a> | <a href="#" class="button" onclick="DeleteMatchcheck(this); return false;">Remove this match check</a></legend>
494     <input type="hidden" id="mc_1_id" name="mc_1_id" value="1" />
495       <fieldset class="rows" id="mc_1_src_c_1">
496         <legend>Source (incoming) record check field</legend>
497         <ol>
498           <li>
499             <label for="mc_1_src_c_1_tag">Tag: </label>
500             <input type="text" id="mc_1_src_c_1_tag" name="mc_1_src_c_1_tag" size="3" maxlength="3" />
501           </li>
502           <li>
503             <label for="mc_1_src_c_1_subfields">Subfields: </label>
504             <input type="text" id="mc_1_src_c_1_subfields" name="mc_1_src_c_1_subfields" size="10" maxlength="40" />
505           </li>
506           <li>
507             <label for="mc_1_src_c_1_offset">Offset: </label>
508             <input type="text" id="mc_1_src_c_1_offset" name="mc_1_src_c_1_offset" size="5" maxlength="5" />
509           </li>
510           <li>
511             <label for="mc_1_src_c_1_length">Length: </label>
512             <input type="text" id="mc_1_src_c_1_length" name="mc_1_src_c_1_length" size="5" maxlength="5" />
513           </li>
514             <li id="mc_1_src_c_1_n_1">
515               <label for="mc_1_src_c_1_n_1_norm">Normalization rule: </label>
516                 [% PROCESS norms_select selected_norm="none" id="mc_1_src_c_1_n_1_norm" name="mc_1_src_c_1_n_1_norm" %]
517             </li>
518         </ol>
519       </fieldset>
520
521       <fieldset class="rows" id="mc_1_tgt_c_1">
522         <legend>Target (database) record check field</legend>
523         <ol>
524           <li>
525             <label for="mc_1_tgt_c_1_tag">Tag: </label>
526             <input type="text" id="mc_1_tgt_c_1_tag" name="mc_1_tgt_c_1_tag" size="3" maxlength="3" />
527           </li>
528           <li>
529             <label for="mc_1_tgt_c_1_subfields">Subfields: </label>
530             <input type="text" id="mc_1_tgt_c_1_subfields" name="mc_1_tgt_c_1_subfields" size="10" maxlength="40" />
531           </li>
532           <li>
533             <label for="mc_1_tgt_c_1_offset">Offset: </label>
534             <input type="text" id="mc_1_tgt_c_1_offset" name="mc_1_tgt_c_1_offset" size="5" maxlength="5" />
535           </li>
536           <li>
537             <label for="mc_1_tgt_c_1_length">Length: </label>
538             <input type="text" id="mc_1_tgt_c_1_length" name="mc_1_tgt_c_1_length" size="5" maxlength="5" />
539           </li>
540             <li id="mc_1_tgt_c_1_n_1">
541               <label for="mc_1_tgt_c_1_n_1_norm">Normalization rule: </label>
542                 [% PROCESS norms_select selected_norm="none" id="mc_1_tgt_c_1_n_1_norm" name="mc_1_tgt_c_1_n_1_norm" %]
543             </li>
544         </ol>
545       </fieldset>
546   </fieldset>
547   <br style="clear:both;" />
548   </div>
549   [% END %]
550   </fieldset>
551   <fieldset class="action">
552     [% IF ( edit_matching_rule ) %]
553     <input type="button" value="Save"
554            onclick="CheckMatchingRuleForm(this.form)" />
555     [% ELSE %]
556     <input type="button" value="Save"
557            onclick="CheckMatchingRuleForm(this.form)" />
558     [% END %]
559     <a class="cancel" href="/cgi-bin/koha/admin/matching-rules.pl">Cancel</a>
560   </fieldset>
561 </form>
562 [% END %]
563
564 [% IF ( delete_matching_rule_form ) %]
565     <div class="dialog alert">
566         <h3>Confirm deletion of record matching rule <span class="ex">'[% code %]' ([% description %])</span>?</h3>
567         <form action="[% script_name %]" name="Aform" method="post">
568             <input type="hidden" name="op" value="[% confirm_op %]" />
569             <input type="hidden" name="matcher_id" value="[% matcher_id %]" />
570             <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete record matching rule</button>
571         </form>
572         <form action="[% script_name %]" method="get">
573             <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
574         </form>
575     </div>
576 [% END %]
577
578 [% IF ( display_list ) %]
579
580 <div id="toolbar" class="btn-toolbar">
581     <a class="btn btn-default btn-sm" id="newrule" href="[% script_name %]?op=add_matching_rule"><i class="fa fa-plus"></i> New record matching rule</a>
582 </div>
583
584 <h2>Record matching rules</h2>
585 [% IF ( added_matching_rule ) %]
586 <div class="dialog message">Added record matching rule &quot;[% added_matching_rule %]&quot;</div>
587 [% END %]
588 [% IF ( edited_matching_rule ) %]
589 <div class="dialog message">Modified record matching rule &quot;[% edited_matching_rule %]&quot;</div>
590 [% END %]
591 [% IF ( deleted_matching_rule ) %]
592 <div class="dialog message">Deleted record matching rule &quot;[% deleted_matching_rule %]&quot;</div>
593 [% END %]
594 [% IF ( available_matching_rules ) %]<table>
595   <tr>
596     <th>#</th>
597     <th>Code</th>
598     <th>Description</th>
599     <th>Actions</th>
600   </tr>
601   [% FOREACH available_matching_rule IN available_matching_rules %]
602   <tr>
603     <td>[% available_matching_rule.matcher_id %]</td>
604     <td>[% available_matching_rule.code %]</td>
605     <td>[% available_matching_rule.description %]</td>
606     <td class="actions">
607       <a class="btn btn-default btn-xs" href="[% available_matching_rule.script_name %]?op=edit_matching_rule&amp;matcher_id=[% available_matching_rule.matcher_id |html %]"><i class="fa fa-pencil"></i> Edit</a>
608       <a class="btn btn-default btn-xs" href="[% available_matching_rule.script_name %]?op=delete_matching_rule&amp;matcher_id=[% available_matching_rule.matcher_id |html %]"><i class="fa fa-trash"></i> Delete</a>
609     </td>
610   </tr>
611   [% END %]
612 </table>[% ELSE %]<p>There are no saved matching rules.</p>[% END %]
613
614 <div class="pages">[% pagination_bar %]</div>
615
616 [% END %]
617  [% IF ( matching_rule_form ) %]
618 <div id="mp_template" class="matchgroup" style="display:none;">
619   <fieldset class="rows">
620     <legend>Match point <span class="counter"></span> | <a href="#" class="button" onclick="DeleteMatchpoint(this); return false;">Remove this match point</a></legend>
621     <ol>
622       <li>
623         <label for="mp_num_search_index">Search index: </label>
624         <input type ="text" id="mp_num_search_index" name="mp_num_search_index" size="20" 
625           maxlength="30" />
626       </li>
627       <li>
628         <label for="mp_num_score">Score: </label>
629         <input type ="text" id="mp_num_score" name="mp_num_score" size="5" maxlength="5" />
630       </li>
631     </ol>
632       <fieldset id="mp_num_c_1" class="rows">
633       <legend>Matchpoint components</legend>
634         <ol>
635           <li>
636             <label for="mp_num_c_1_tag">Tag: </label>
637             <input type="text" id="mp_num_c_1_tag" name="mp_num_c_1_tag" size="3" maxlength="3" />
638           </li>
639           <li>
640             <label for="mp_num_c_1_subfields">Subfields: </label>
641             <input type="text" id="mp_num_c_1_subfields" name="mp_num_c_1_subfields" size="10" maxlength="40" />
642           </li>
643           <li>
644             <label for="mp_num_c_1_offset">Offset: </label>
645             <input type="text" id="mp_num_c_1_offset" name="mp_num_c_1_offset" size="5" maxlength="5" />
646           </li>
647           <li>
648             <label for="mp_num_c_1_length">Length: </label>
649             <input type="text" id="mp_num_c_1_length" name="mp_num_c_1_length" size="5" maxlength="5" />
650           </li>
651             <li id="mp_num_c_1_n_1">
652               <label for="mp_num_c_1_n_1_norm">Normalization rule: </label>
653                 [% PROCESS norms_select selected_norm="none" id="mp_num_c_1_n_1_norm" name="mp_num_c_1_n_1_norm" %]
654             </li>
655         </ol>
656       </fieldset>
657   </fieldset>
658       <br style="clear:both;" />
659       </div>
660
661 <div id="mc_template" class="matchgroup" style="display:none">
662 <fieldset class="rows">
663   <legend>Match check <span class="counter"></span> | <a href="#" class="button" onclick="DeleteMatchcheck(this); return false;">Remove this match check</a></legend>
664   <input type="hidden" id="mc_num_id" name="mc_num_id" value="1" />
665     <fieldset class="rows" id="mc_num_src_c_1">
666       <legend>Source (incoming) record check field</legend>
667       <ol>
668         <li>
669           <label for="mc_num_src_c_1_tag">Tag: </label>
670           <input type="text" id="mc_num_src_c_1_tag" name="mc_num_src_c_1_tag" size="3" maxlength="3" />
671         </li>
672         <li>
673           <label for="mc_num_src_c_1_subfields">Subfields: </label>
674           <input type="text" id="mc_num_src_c_1_subfields" name="mc_num_src_c_1_subfields" size="10" maxlength="40" />
675         </li>
676         <li>
677           <label for="mc_num_src_c_1_offset">Offset: </label>
678           <input type="text" id="mc_num_src_c_1_offset" name="mc_num_src_c_1_offset" size="5" maxlength="5" />
679         </li>
680         <li>
681           <label for="mc_num_src_c_1_length">Length: </label>
682           <input type="text" id="mc_num_src_c_1_length" name="mc_num_src_c_1_length" size="5" maxlength="5" />
683         </li>
684           <li id="mc_num_src_c_1_n_1">
685             <label for="mc_num_src_c_1_n_1_norm">Normalization rule: </label>
686                [% PROCESS norms_select selected_norm="none" id="mc_num_src_c_1_n_1_norm" name="mc_num_src_c_1_n_1_norm" %]
687           </li>
688       </ol>
689     </fieldset>
690     <fieldset class="rows" id="mc_num_tgt_c_1">
691       <legend>Target (database) record check field</legend>
692       <ol>
693         <li>
694           <label for="mc_num_tgt_c_1_tag">Tag: </label>
695           <input type="text" id="mc_num_tgt_c_1_tag" name="mc_num_tgt_c_1_tag" size="3" maxlength="3" />
696         </li>
697         <li>
698           <label for="mc_num_tgt_c_1_subfields">Subfields: </label>
699           <input type="text" id="mc_num_tgt_c_1_subfields" name="mc_num_tgt_c_1_subfields" size="10" maxlength="40" />
700         </li>
701         <li>
702           <label for="mc_num_tgt_c_1_offset">Offset: </label>
703           <input type="text" id="mc_num_tgt_c_1_offset" name="mc_num_tgt_c_1_offset" size="5" maxlength="5" />
704         </li>
705         <li>
706           <label for="mc_num_tgt_c_1_length">Length: </label>
707           <input type="text" id="mc_num_tgt_c_1_length" name="mc_num_tgt_c_1_length" size="5" maxlength="5" />
708         </li>
709           <li id="mc_num_tgt_c_1_n_1">
710             <label for="mc_num_tgt_c_1_n_1_norm">Normalization rule: </label>
711                [% PROCESS norms_select selected_norm="none" id="mc_num_tgt_c_1_n_1_norm" name="mc_num_tgt_c_1_n_1_norm" %]
712           </li>
713       </ol>
714     </fieldset>
715 </fieldset>
716 <br style="clear:both;" />
717 </div>
718 [% END %]
719
720 </div>
721 </div>
722 <div class="yui-b">
723 [% INCLUDE 'admin-menu.inc' %]
724 </div>
725 </div>
726 [% INCLUDE 'intranet-bottom.inc' %]