2 [% INCLUDE 'doc-head-open.inc' %]
3 <title>Koha › Administration › Record matching rules
4 [% IF ( matching_rule_form ) %]
5 [% IF ( edit_matching_rule ) %]
6 › Modify record matching rule
8 › Add record matching rule
11 [% IF ( delete_matching_rule_form ) %]
12 › Confirm deletion of record matching rule "[% code %]"
15 [% INCLUDE 'doc-head-close.inc' %]
17 [% BLOCK norms_text %]
20 [% CASE 'remove_spaces' %]Remove spaces
21 [% CASE 'upper_case' %]Uppercase
22 [% CASE 'lower_case' %]Lowercase
23 [% CASE 'legacy_default' %]Legacy default
28 [% BLOCK norms_options %]
29 [%# PARAMS: selected_norm %]
30 [% FOREACH norm IN valid_norms %]
31 [% IF ( norm == selected_norm ) %]
32 <option value="[% norm %]" selected="selected">[% PROCESS norms_text norm=norm %]</option>
34 <option value="[% norm %]">[% PROCESS norms_text norm=norm %]</option>
39 [% BLOCK norms_select %]
40 [%# PARAMS: selected_norm, id, name %]
41 [% UNLESS valid_norms.grep(selected_norm).size %]
42 [%# Fallback to 'none' %]
43 [% selected_norm = 'none' %]
45 <select id="[% id %]" name="[% name %]">
46 [% PROCESS norms_options selected_norm=selected_norm %]
50 <style type="text/css">
51 fieldset.rows fieldset.rows { border-width : 0; }
52 fieldset.rows fieldset.rows fieldset.rows { border-width : 1px; }
53 fieldset, fieldset.rows { width : 90%; padding: .3em .6em .3em .6em; }
54 fieldset.rows fieldset {font-size:100%;}
55 div.matchgroup { border:1px solid #DDD; border-left-width: 15px; padding:.4em; margin-bottom:.6em;}
58 <body id="admin_matching-rules" class="admin">
59 [% INCLUDE 'header.inc' %]
60 [% INCLUDE 'prefs-admin-search.inc' %]
62 <div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › [% IF ( display_list ) %]Record matching rules[% ELSE %]<a href="/cgi-bin/koha/admin/matching-rules.pl">Record matching rules</a>[% END %]
63 [% IF ( matching_rule_form ) %]
64 [% IF ( edit_matching_rule ) %]
65 › Modify record matching rule
67 › Add record matching rule
70 [% IF ( delete_matching_rule_form ) %]
71 › Confirm deletion of record matching rule "[% code %]"
75 <div id="doc3" class="yui-t2">
81 [% IF ( matching_rule_form ) %]
82 [% IF ( edit_matching_rule ) %]
83 <h2>Modify record matching rule</h2>
85 <h2>Add record matching rule</h2>
87 <form action="[% script_name %]" name="Aform" method="post">
88 <input type="hidden" name="op" value="[% confirm_op %]" />
89 <fieldset class="rows">
92 [% IF ( edit_matching_rule ) %]
93 <span class="label">Matching rule code: </span>
94 <input type="hidden" name="matcher_id" value="[% matcher_id %]" />
95 <input type="hidden" name="code" value="[% code %]" />
98 <label for="code" class="required">Matching rule code: </label>
99 <input type="text" id="code" name="code" size="10" maxlength="10" /> <span class="required">Required</span>
102 <li><label for="description" class="required">Description: </label>
103 <input type="text" id="description" name="description" size="50" maxlength="250"
104 value="[% description |html %]" /> <span class="required">Required</span>
106 <li><label for="threshold" class="required">Match threshold: </label>
107 <input type="text" id="threshold" name="threshold" size="5" maxlength="5"
108 value="[% threshold |html %]" /> <span class="required">Required</span>
110 <li><label for="record_type" class="required">Record type: </label>
111 <select id="record_type" name="record_type">
112 [% IF ( record_type == "authority" ) %]
113 <option value="biblio">Bibliographic record</option>
114 <option value="authority" selected="selected">Authority record</option>
116 <option value="biblio" selected="selected">Bibliographic record</option>
117 <option value="authority">Authority record</option>
119 </select><span class="required">Required</span>
124 <fieldset class="rows" id="match_points">
125 <h4>Match points</h4>
126 [% IF ( edit_matching_rule ) %]
127 [% 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>
128 [% 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 %]
129 [% IF ( edit_matching_rule ) %]
130 [% FOREACH matchpoint IN matchpoints %]
131 <div id="mp_[% matchpoint.mp_num %]" class="matchgroup">
132 <fieldset class="rows">
133 <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>
136 <label for="mp_[% matchpoint.mp_num %]_search_index">Search index: </label>
137 <input type ="text" id="mp_[% matchpoint.mp_num %]_search_index"
138 name="mp_[% matchpoint.mp_num %]_search_index" size="20"
139 value="[% matchpoint.index |html %]"
143 <label for="mp_[% matchpoint.mp_num %]_score">Score: </label>
144 <input type ="text" id="mp_[% matchpoint.mp_num %]_score"
145 name="mp_[% matchpoint.mp_num %]_score" size="5"
146 value="[% matchpoint.score |html %]"
150 [% FOREACH component IN matchpoint.components %]
151 <fieldset class="rows" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]">
152 <legend>Matchpoint components</legend>
155 <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_tag">Tag: </label>
156 <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_tag"
157 name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_tag"
158 value="[% component.tag |html %]"
159 size="3" maxlength="3" />
162 <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_subfields">Subfields: </label>
163 <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_subfields"
164 name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_subfields"
165 value="[% component.subfields |html %]"
166 size="10" maxlength="40" />
169 <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_offset">Offset: </label>
170 <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_offset"
171 name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_offset"
172 value="[% component.offset |html %]"
173 size="5" maxlength="5" />
176 <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_length">Length: </label>
177 <input type="text" id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_length"
178 name="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_length"
179 value="[% component.length |html %]"
180 size="5" maxlength="5" />
182 [% FOREACH norm IN component.norms %]
183 <li id="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_n_[% norm.norm_num %]">
184 <label for="mp_[% matchpoint.mp_num %]_c_[% component.comp_num %]_n__[% norm.norm_num %]_norm">Normalization rule: </label>
185 [%# Note: Following directive in one line, otherwise we have translatabiltiy problems %]
186 [% 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" %]
193 <br style="clear:both;" />
199 <div id="mp_1" class="matchgroup">
200 <fieldset class="rows">
201 <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>
204 <label for="mp_1_search_index">Search index: </label>
205 <input type ="text" id="mp_1_search_index" name="mp_1_search_index" size="20"
209 <label for="mp_1_score">Score: </label>
210 <input type ="text" id="mp_1_score" name="mp_1_score" size="5" maxlength="5" />
213 <fieldset class="rows" id="mp_1_c_1">
214 <legend>Matchpoint components</legend>
217 <label for="mp_1_c_1_tag">Tag: </label>
218 <input type="text" id="mp_1_c_1_tag" name="mp_1_c_1_tag" size="3" maxlength="3" />
221 <label for="mp_1_c_1_subfields">Subfields: </label>
222 <input type="text" id="mp_1_c_1_subfields" name="mp_1_c_1_subfields" size="10" maxlength="40" />
225 <label for="mp_1_c_1_offset">Offset: </label>
226 <input type="text" id="mp_1_c_1_offset" name="mp_1_c_1_offset" size="5" maxlength="5" />
229 <label for="mp_1_c_1_length">Length: </label>
230 <input type="text" id="mp_1_c_1_length" name="mp_1_c_1_length" size="5" maxlength="5" />
232 <li id="mp_1_c_1_n_1">
233 <label for="mp_1_c_1_n_1_norm">Normalization rule: </label>
234 [% PROCESS norms_select selected_norm="none" id="mp_1_c_1_n_1_norm" name="mp_1_c_1_n_1_norm" %]
239 <br style="clear:both;" />
245 <fieldset class="rows" id="match_checks">
246 <h4>Required match checks</h4>
247 [% IF ( edit_matching_rule ) %]
248 [% 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>
249 [% 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 %]
250 [% IF ( edit_matching_rule ) %]
251 [% FOREACH matchcheck IN matchchecks %]
252 <div id="mc_[% matchcheck.mc_num %]" class="matchgroup">
253 <fieldset class="rows">
254 <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>
255 <input type="hidden" id="mc_[% matchcheck.mc_num %]_id" name="mc_[% matchcheck.mc_num %]_id" value="1" />
256 [% FOREACH src_component IN matchcheck.src_components %]
257 <fieldset class="rows" id="mc_[% src_component.mc_num %]_src_c_[% src_component.comp_num %]">
258 <legend>Source (incoming) record check field</legend>
261 <label for="mc_[% src_component.mc_num %]_src_c_[% src_component.comp_num %]_tag">Tag: </label>
262 <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_tag"
263 name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_tag"
264 value="[% src_component.tag |html %]"
265 size="3" maxlength="3" />
268 <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_subfields">Subfields: </label>
269 <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_subfields"
270 name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_subfields"
271 value="[% src_component.subfields |html %]"
272 size="10" maxlength="40" />
275 <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_offset">Offset: </label>
276 <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_offset"
277 name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_offset"
278 value="[% src_component.offset |html %]"
279 size="5" maxlength="5" />
282 <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_length">Length: </label>
283 <input type="text" id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_length"
284 name="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_length"
285 value="[% src_component.length |html %]"
286 size="5" maxlength="5" />
288 [% FOREACH norm IN src_component.norms %]
289 <li id="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_n_[% norm.norm_num %]">
290 <label for="mc_[% matchcheck.mc_num %]_src_c_[% src_component.comp_num %]_n_[% norm.norm_num %]_norm">Normalization rule: </label>
291 [%# Note: Following directive in one line, otherwise we have translatabiltiy problems %]
292 [% 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" %]
298 [% FOREACH tgt_component IN matchcheck.tgt_components %]
299 <fieldset class="rows" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]">
300 <legend>Target (database) record check field</legend>
303 <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_tag">Tag: </label>
304 <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_tag"
305 name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_tag"
306 value="[% tgt_component.tag |html %]"
307 size="3" maxlength="3" />
310 <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_subfields">Subfields: </label>
311 <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_subfields"
312 name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_subfields"
313 value="[% tgt_component.subfields |html %]"
314 size="10" maxlength="40" />
317 <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_offset">Offset: </label>
318 <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_offset"
319 name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_offset"
320 value="[% tgt_component.offset |html %]"
321 size="5" maxlength="5" />
324 <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_length">Length: </label>
325 <input type="text" id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_length"
326 name="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_length"
327 value="[% tgt_component.length |html %]"
328 size="5" maxlength="5" />
330 [% FOREACH norm IN tgt_component.norms %]
331 <li id="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_n_[% norm.norm_num %]">
332 <label for="mc_[% matchcheck.mc_num %]_tgt_c_[% tgt_component.comp_num %]_n_[% norm.norm_num %]_norm">Normalization rule: </label>
333 [%# Note: Following directive in one line, otherwise we have translatabiltiy problems %]
334 [% 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" %]
341 <br style="clear:both;" />
345 <div id="mc_1" class="matchgroup">
346 <fieldset class="rows">
347 <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>
348 <input type="hidden" id="mc_1_id" name="mc_1_id" value="1" />
349 <fieldset class="rows" id="mc_1_src_c_1">
350 <legend>Source (incoming) record check field</legend>
353 <label for="mc_1_src_c_1_tag">Tag: </label>
354 <input type="text" id="mc_1_src_c_1_tag" name="mc_1_src_c_1_tag" size="3" maxlength="3" />
357 <label for="mc_1_src_c_1_subfields">Subfields: </label>
358 <input type="text" id="mc_1_src_c_1_subfields" name="mc_1_src_c_1_subfields" size="10" maxlength="40" />
361 <label for="mc_1_src_c_1_offset">Offset: </label>
362 <input type="text" id="mc_1_src_c_1_offset" name="mc_1_src_c_1_offset" size="5" maxlength="5" />
365 <label for="mc_1_src_c_1_length">Length: </label>
366 <input type="text" id="mc_1_src_c_1_length" name="mc_1_src_c_1_length" size="5" maxlength="5" />
368 <li id="mc_1_src_c_1_n_1">
369 <label for="mc_1_src_c_1_n_1_norm">Normalization rule: </label>
370 [% PROCESS norms_select selected_norm="none" id="mc_1_src_c_1_n_1_norm" name="mc_1_src_c_1_n_1_norm" %]
375 <fieldset class="rows" id="mc_1_tgt_c_1">
376 <legend>Target (database) record check field</legend>
379 <label for="mc_1_tgt_c_1_tag">Tag: </label>
380 <input type="text" id="mc_1_tgt_c_1_tag" name="mc_1_tgt_c_1_tag" size="3" maxlength="3" />
383 <label for="mc_1_tgt_c_1_subfields">Subfields: </label>
384 <input type="text" id="mc_1_tgt_c_1_subfields" name="mc_1_tgt_c_1_subfields" size="10" maxlength="40" />
387 <label for="mc_1_tgt_c_1_offset">Offset: </label>
388 <input type="text" id="mc_1_tgt_c_1_offset" name="mc_1_tgt_c_1_offset" size="5" maxlength="5" />
391 <label for="mc_1_tgt_c_1_length">Length: </label>
392 <input type="text" id="mc_1_tgt_c_1_length" name="mc_1_tgt_c_1_length" size="5" maxlength="5" />
394 <li id="mc_1_tgt_c_1_n_1">
395 <label for="mc_1_tgt_c_1_n_1_norm">Normalization rule: </label>
396 [% PROCESS norms_select selected_norm="none" id="mc_1_tgt_c_1_n_1_norm" name="mc_1_tgt_c_1_n_1_norm" %]
401 <br style="clear:both;" />
405 <fieldset class="action">
406 [% IF ( edit_matching_rule ) %]
407 <input type="button" value="Save"
408 onclick="CheckMatchingRuleForm(this.form)" />
410 <input type="button" value="Save"
411 onclick="CheckMatchingRuleForm(this.form)" />
413 <a class="cancel" href="/cgi-bin/koha/admin/matching-rules.pl">Cancel</a>
418 [% IF ( delete_matching_rule_form ) %]
419 <div class="dialog alert">
420 <h3>Confirm deletion of record matching rule <span class="ex">'[% code %]' ([% description %])</span>?</h3>
421 <form action="[% script_name %]" name="Aform" method="post">
422 <input type="hidden" name="op" value="[% confirm_op %]" />
423 <input type="hidden" name="matcher_id" value="[% matcher_id %]" />
424 <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete record matching rule</button>
426 <form action="[% script_name %]" method="get">
427 <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
432 [% IF ( display_list ) %]
434 <div id="toolbar" class="btn-toolbar">
435 <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>
438 <h2>Record matching rules</h2>
439 [% IF ( added_matching_rule ) %]
440 <div class="dialog message">Added record matching rule "[% added_matching_rule %]"</div>
442 [% IF ( edited_matching_rule ) %]
443 <div class="dialog message">Modified record matching rule "[% edited_matching_rule %]"</div>
445 [% IF ( deleted_matching_rule ) %]
446 <div class="dialog message">Deleted record matching rule "[% deleted_matching_rule %]"</div>
448 [% IF ( available_matching_rules ) %]<table>
455 [% FOREACH available_matching_rule IN available_matching_rules %]
457 <td>[% available_matching_rule.matcher_id %]</td>
458 <td>[% available_matching_rule.code %]</td>
459 <td>[% available_matching_rule.description |html %]</td>
461 <a class="btn btn-default btn-xs" href="[% available_matching_rule.script_name %]?op=edit_matching_rule&matcher_id=[% available_matching_rule.matcher_id |html %]"><i class="fa fa-pencil"></i> Edit</a>
462 <a class="btn btn-default btn-xs" href="[% available_matching_rule.script_name %]?op=delete_matching_rule&matcher_id=[% available_matching_rule.matcher_id |html %]"><i class="fa fa-trash"></i> Delete</a>
466 </table>[% ELSE %]<p>There are no saved matching rules.</p>[% END %]
468 <div class="pages">[% pagination_bar %]</div>
471 [% IF ( matching_rule_form ) %]
472 <div id="mp_template" class="matchgroup" style="display:none;">
473 <fieldset class="rows">
474 <legend>Match point <span class="counter"></span> | <a href="#" class="button" onclick="DeleteMatchpoint(this); return false;">Remove this match point</a></legend>
477 <label for="mp_num_search_index">Search index: </label>
478 <input type ="text" id="mp_num_search_index" name="mp_num_search_index" size="20"
482 <label for="mp_num_score">Score: </label>
483 <input type ="text" id="mp_num_score" name="mp_num_score" size="5" maxlength="5" />
486 <fieldset id="mp_num_c_1" class="rows">
487 <legend>Matchpoint components</legend>
490 <label for="mp_num_c_1_tag">Tag: </label>
491 <input type="text" id="mp_num_c_1_tag" name="mp_num_c_1_tag" size="3" maxlength="3" />
494 <label for="mp_num_c_1_subfields">Subfields: </label>
495 <input type="text" id="mp_num_c_1_subfields" name="mp_num_c_1_subfields" size="10" maxlength="40" />
498 <label for="mp_num_c_1_offset">Offset: </label>
499 <input type="text" id="mp_num_c_1_offset" name="mp_num_c_1_offset" size="5" maxlength="5" />
502 <label for="mp_num_c_1_length">Length: </label>
503 <input type="text" id="mp_num_c_1_length" name="mp_num_c_1_length" size="5" maxlength="5" />
505 <li id="mp_num_c_1_n_1">
506 <label for="mp_num_c_1_n_1_norm">Normalization rule: </label>
507 [% PROCESS norms_select selected_norm="none" id="mp_num_c_1_n_1_norm" name="mp_num_c_1_n_1_norm" %]
512 <br style="clear:both;" />
515 <div id="mc_template" class="matchgroup" style="display:none">
516 <fieldset class="rows">
517 <legend>Match check <span class="counter"></span> | <a href="#" class="button" onclick="DeleteMatchcheck(this); return false;">Remove this match check</a></legend>
518 <input type="hidden" id="mc_num_id" name="mc_num_id" value="1" />
519 <fieldset class="rows" id="mc_num_src_c_1">
520 <legend>Source (incoming) record check field</legend>
523 <label for="mc_num_src_c_1_tag">Tag: </label>
524 <input type="text" id="mc_num_src_c_1_tag" name="mc_num_src_c_1_tag" size="3" maxlength="3" />
527 <label for="mc_num_src_c_1_subfields">Subfields: </label>
528 <input type="text" id="mc_num_src_c_1_subfields" name="mc_num_src_c_1_subfields" size="10" maxlength="40" />
531 <label for="mc_num_src_c_1_offset">Offset: </label>
532 <input type="text" id="mc_num_src_c_1_offset" name="mc_num_src_c_1_offset" size="5" maxlength="5" />
535 <label for="mc_num_src_c_1_length">Length: </label>
536 <input type="text" id="mc_num_src_c_1_length" name="mc_num_src_c_1_length" size="5" maxlength="5" />
538 <li id="mc_num_src_c_1_n_1">
539 <label for="mc_num_src_c_1_n_1_norm">Normalization rule: </label>
540 [% PROCESS norms_select selected_norm="none" id="mc_num_src_c_1_n_1_norm" name="mc_num_src_c_1_n_1_norm" %]
544 <fieldset class="rows" id="mc_num_tgt_c_1">
545 <legend>Target (database) record check field</legend>
548 <label for="mc_num_tgt_c_1_tag">Tag: </label>
549 <input type="text" id="mc_num_tgt_c_1_tag" name="mc_num_tgt_c_1_tag" size="3" maxlength="3" />
552 <label for="mc_num_tgt_c_1_subfields">Subfields: </label>
553 <input type="text" id="mc_num_tgt_c_1_subfields" name="mc_num_tgt_c_1_subfields" size="10" maxlength="40" />
556 <label for="mc_num_tgt_c_1_offset">Offset: </label>
557 <input type="text" id="mc_num_tgt_c_1_offset" name="mc_num_tgt_c_1_offset" size="5" maxlength="5" />
560 <label for="mc_num_tgt_c_1_length">Length: </label>
561 <input type="text" id="mc_num_tgt_c_1_length" name="mc_num_tgt_c_1_length" size="5" maxlength="5" />
563 <li id="mc_num_tgt_c_1_n_1">
564 <label for="mc_num_tgt_c_1_n_1_norm">Normalization rule: </label>
565 [% PROCESS norms_select selected_norm="none" id="mc_num_tgt_c_1_n_1_norm" name="mc_num_tgt_c_1_n_1_norm" %]
570 <br style="clear:both;" />
577 [% INCLUDE 'admin-menu.inc' %]
581 [% MACRO jsinclude BLOCK %]
582 <script type="text/javascript" src="[% interface %]/[% theme %]/js/admin-menu_[% KOHA_VERSION %].js"></script>
583 <script type="text/javascript">
584 var maxMatchPoint = [% max_matchpoint %];
585 var maxMatchCheck = [% max_matchcheck %];
587 function InsertMatchpoint(loc, index) {
588 var original= $("#"+index);
589 var clone = original.clone();
592 // update IDs and form names
594 clone.attr('id', 'mp_' + maxMatchPoint);
595 $("span.counter",clone).html(maxMatchPoint);
596 $("label",clone).each(function(){
597 var s = $(this).attr("for");
598 if (s.match(/mp_num/)) {
599 $(this).attr("for",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
603 $("div",clone).each(function(){
604 var s = $(this).attr("id");
605 if (s.match(/mp_num/)) {
606 $(this).attr("id",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
609 $("input",clone).each(function(){
610 var s = $(this).attr("id");
611 if(s.match(/mp_num/)){
612 $(this).attr("id",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
615 var s = $(this).attr("name");
616 if(s.match(/mp_num/)){
617 $(this).attr("name",s.replace(/mp_num/, 'mp_' + maxMatchPoint));
620 $("#match_points").append(clone);
623 function InsertMatchcheck(loc, index) {
624 var original= $("#"+index);
625 var clone = original.clone();
628 // update IDs and form names
630 clone.attr('id', 'mc_' + maxMatchCheck);
631 $("span.counter",clone).html(maxMatchCheck);
632 $("label",clone).each(function(){
633 var s = $(this).attr("for");
634 if (s.match(/mc_num/)) {
635 $(this).attr("for",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
639 $("div",clone).each(function(){
640 var s = $(this).attr("id");
641 if (s.match(/mc_num/)) {
642 $(this).attr("id",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
645 $("input",clone).each(function(){
646 var s = $(this).attr("id");
647 if(s.match(/mc_num/)){
648 $(this).attr("id",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
651 var s = $(this).attr("name");
652 if(s.match(/mc_num/)){
653 $(this).attr("name",s.replace(/mc_num/, 'mc_' + maxMatchCheck));
656 $("#match_checks").append(clone);
659 function DeleteMatchpoint(loc) {
660 $(loc).parent().parent().parent().remove();
661 if($(".matchgroup",$("#match_points")).length == 0){
663 $("#addMatchPoint").show();
667 function DeleteMatchcheck(loc) {
668 $(loc).parent().parent().parent().remove();
669 if($(".matchgroup",$("#match_checks")).length == 0){
671 $("#addMatchCheck").show();
675 function DoCancel(f) {
677 document.Aform.submit();
680 function CheckMatchingRuleForm(f) {
684 if (f.code.value.length==0) {
685 _alertString += "\n- " + _("Matching rule code missing");
687 if (f.description.value.length==0) {
688 _alertString += "\n- " + _("Description missing");
690 if (f.threshold.value.length==0) {
691 _alertString += "\n- " + _("Threshold missing");
693 if (_alertString.length==0) {
694 document.Aform.submit();
696 alertString2 = _("Form not submitted because of the following problem(s)");
697 alertString2 += "\n------------------------------------------------------------------------------------\n";
698 alertString2 += _alertString;
703 function CheckRuleForm(f) {
707 if (f.sort_rule.value.length==0) {
708 _alertString += "\n- " + _("Filing rule code missing");
710 if (f.description.value.length==0) {
711 _alertString += "\n- " + _("Description missing");
713 if (f.sort_routine.value.length==0) {
714 _alertString += "\n- " + _("Sort routine missing");
716 if (_alertString.length==0) {
717 document.Aform.submit();
719 alertString2 = _("Form not submitted because of the following problem(s)");
720 alertString2 += "\n------------------------------------------------------------------------------------\n";
721 alertString2 += _alertString;
727 [% INCLUDE 'intranet-bottom.inc' %]