[% BLOCK sourcetab %]
[% IF ( records ) %]
[% END %]
[% END %] [% BLOCK mergejs %] // Creating tabs $("#tabs").tabs(); // Toggle a field / subfield function toggleField(pField) { // Getting the key of the clicked checkbox var ckid = $(pField).attr("id"); var tab = ckid.split('_'); var source = tab[1]; // From which record the click came from var key = tab[2]; var type = $(pField).attr("class"); // Getting field/subfield var field; var subfield; if (type == "subfieldpick") { field = $(pField).parent().parent().parent().find("span.field").text(); subfield = $(pField).parent().find("span.subfield").text(); } else { field = $(pField).parent().find("span.field").text(); } // If the field has just been checked if (pField.checked) { // We check for repeatability var canbeadded = true; if (type == "subfieldpick") { var repeatable = 1; var alreadyexists = 0; if (tagslib[field] && tagslib[field][subfield]) { repeatable = tagslib[field][subfield].repeatable; // Note : we can't use the dot notation here (tagslib.021) because the key is a number // TODO : Checking for subfields } } else { if (tagslib[field]) { repeatable = tagslib[field].repeatable; alreadyexists = $("#resultul span.field:contains(" + field + ")"); if (repeatable == 0 && alreadyexists.length != 0) { canbeadded = false; } } } // If the field is not repeatable, we check if it already exists in the result table if (canbeadded == false) { alert(_("The field is non-repeatable and already exists in the destination record. Therefore, you cannot add it.")); pField.checked = 0; } else { // Cloning the field or subfield we picked var clone = $(pField).parent().clone(); // Removing the checkboxes from it $(clone).find("input.subfieldpick, input.fieldpick").each(function() { $(this).remove(); }); // If we are a subfield if (type == "subfieldpick") { // then we need to find who is our parent field... fieldkey = $(pField).parent().parent().parent().attr("id"); // Find where to add the subfield // First, check if the field is not already in the destination record if ($("#resultul li#" + fieldkey).length > 0) { // If so, we add our field to it $("#resultul li#" + fieldkey + " ul").append(clone); } else { // If not, we add the subfield to the first matching field var where = 0; $("#resultul li span.field").each(function() { if (where == 0 && $(this).text() == field) { where = this; } }); // If there is no matching field in the destination record if (where == 0) { // TODO: // We select the whole field and removing non-selected subfields, instead of... // Alerting the user alert(_("This subfield cannot be added: there is no") + " " + field + " " + _("field in the destination record.")); pField.checked = false; } else { $(where).nextAll("ul").append(clone); } } } else { // If we are a field var where = 0; // Find where to add the field $("#resultul li span.field").each(function() { if (where == 0 && $(this).text() > field) { where = this; } }); $(where).parent().before(clone); } } } else { // Else, we remove it from the results tab $("ul#resultul li#k" + key).remove(); } } // When a field is checked / unchecked $('input.fieldpick').click(function() { toggleField(this); // (un)check all subfields var ischecked = this.checked; $(this).parent().find("input.subfieldpick").each(function() { this.checked = ischecked; }); }); // When a field or subfield is checked / unchecked $("input.subfieldpick").click(function() { toggleField(this); }); [% END %] [% BLOCK mergesource %]

Source records

[% PROCESS sourcetab records=record1 recordnumber=1 defaultrecord=1 %] [% PROCESS sourcetab records=record2 recordnumber=2 defaultrecord=0 %]
[% END %] [% BLOCK mergetarget %]

Destination record

[% END %]