Koha/koha-tmpl/intranet-tmpl/prog/js/merge-record.js
Owen Leonard 5e1bcc4aa7 Bug 16242 - Move staff client JavaScript out of language directory
This patch moves the JavaScript files in prog/en/js to prog/js.
JavaScript files do not need to be in the directory which is processed
by the translator.

To test, apply the patch and visit various pages in the staff client to
confirm that JavaScript files are still loading correctly.

Revised: I intended for this to be built on top of Bug 15883 as well as
Bug 16242. Now it is.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
On top of 15883 and 16241
All seems to work, js files pulled from new dir.
No errors

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
2016-04-29 14:32:42 +00:00

184 lines
5 KiB
JavaScript

/*
* Merging 2 source records into a destination record
*/
function build_target_record($sources) {
var target_record = {};
$sources.find('.record input[type="checkbox"].fieldpick:checked').each(function() {
var $checkbox = $(this);
var $li = $checkbox.parent();
var field = $checkbox.parent().find("span.field").text();
if (!(field in target_record)) {
target_record[field] = [];
}
target_record[field].push({
'id' : $li.attr('id'),
'tag' : field,
'subfields' : []
});
});
$sources.find('.record input[type="checkbox"].subfieldpick:checked').each(function() {
var $checkbox = $(this);
var $li = $checkbox.parent();
var $field_li = $li.parents('li');
var field = $field_li.find('span.field').text();
var subfield = $li.find('span.subfield').text();
var target_field;
if (field in target_record) {
for (i in target_record[field]) {
if (target_record[field][i].id == $field_li.attr('id')) {
target_field = target_record[field][i];
}
}
if (!target_field) {
target_field = target_record[field][0];
}
}
if (target_field) {
target_field.subfields.push({
'id' : $li.attr('id'),
'code' : subfield
});
} else {
$field_li.find('input.fieldpick').prop('checked', true);
target_record[field] = [{
'id' : $field_li.attr('id'),
'tag' : field,
'subfields' : [{
'id' : $li.attr('id'),
'code' : subfield
}]
}];
}
});
return target_record;
}
function field_can_be_added($sources, $li) {
target_record = build_target_record($sources);
var tag = $li.find('span.field').text();
var repeatable = true;
if (tag in tagslib) {
repeatable = (tagslib[tag].repeatable != 0) ? true : false;
}
if ((!repeatable) && (tag in target_record)) {
alert(MSG_MERGEREC_ALREADY_EXISTS);
return false;
}
return true;
}
function subfield_can_be_added($sources, $li) {
target_record = build_target_record($sources);
var $field_li = $li.parents('li');
var tag = $field_li.find('span.field').text();
var code = $li.find('span.subfield').text();
var repeatable = true;
if (tag in tagslib && code in tagslib[tag]) {
repeatable = (tagslib[tag][code].repeatable != 0) ? true : false;
}
if (!repeatable) {
var target_field;
if (tag in target_record) {
for (i in target_record[tag]) {
if (target_record[tag][i].id == $field_li.attr('id')) {
target_field = target_record[tag][i];
}
}
if (!target_field) {
target_field = target_record[tag][0];
}
}
if (target_field) {
for (i in target_field.subfields) {
var subfield = target_field.subfields[i];
if (code == subfield.code) {
alert(MSG_MERGEREC_SUBFIELD_ALREADY_EXISTS);
return false;
}
}
}
}
return true;
}
function rebuild_target($sources, $target) {
target_record = build_target_record($sources);
$target.empty();
var keys = $.map(target_record, function(elem, idx) { return idx }).sort();
for (k in keys) {
var tag = keys[k];
var fields = target_record[tag];
for (i in fields) {
var field = fields[i];
if (parseInt(tag) < 10) {
var $field_clone = $('#' + field.id).clone();
$field_clone.find('.fieldpick').remove();
$target.append($field_clone);
} else if (field.subfields.length > 0) {
var $field_clone = $('#' + field.id).clone();
$field_clone.find('ul').empty();
$field_clone.find('.fieldpick').remove();
$target.append($field_clone);
for (j in field.subfields) {
var subfield = field.subfields[j];
var $subfield_clone = $('#' + subfield.id).clone();
$subfield_clone.find('.subfieldpick').remove();
$field_clone.find('ul').append($subfield_clone);
}
} else {
$('#' + field.id).find('input.fieldpick').prop('checked', false);
}
}
}
}
/*
* Add actions on field and subfields checkboxes
*/
$(document).ready(function(){
// When a field is checked / unchecked
$('input.fieldpick').click(function() {
var ischecked = this.checked;
if (ischecked) {
$(this).prop('checked', false);
if (!field_can_be_added($('#tabs'), $(this).parent())) {
return false;
}
$(this).prop('checked', true);
}
// (un)check all subfields
$(this).parent().find("input.subfieldpick").each(function() {
this.checked = ischecked;
});
rebuild_target($('#tabs'), $('#resultul'));
});
// When a field or subfield is checked / unchecked
$("input.subfieldpick").click(function() {
var ischecked = this.checked;
if (ischecked) {
$(this).prop('checked', false);
if (!subfield_can_be_added($('#tabs'), $(this).parent())) {
return false;
}
$(this).prop('checked', true);
}
rebuild_target($('#tabs'), $('#resultul'));
});
});