Koha/koha-tmpl/intranet-tmpl/prog/js/marc_modification_templates.js
Owen Leonard df8aca0252
Bug 32164: Add link to MARC modification templates from batch record modification page
This patch adds a more visible link from the batch record modification
page in the event that there are no MARC modification templates defined.
The template checks that the user has permission.

The patch also modifies the same message on the MARC modification
templates page so that the interfaces are more unified, and tweaks the
operation of the "New action" button.

To test you should have no MARC modification templates defined.

- Apply the patch and go to Tools -> Batch record modification.
- If you're logged in as a user with permission you should see a message
  dialog containing a button, "Create a new MARC modification template."
- Clicking it should take you to the MARC modification templates page,
  where you'll see a similar message and a button, "Create a new
  template." Clicking this button should trigger a modal form, just like
  clicking the "New template" button in the toolbar should.
- Submit the form to create a new template. You should see message on
  the following page that says "New action." Clicking the button should
  display the entry form, and then clicking "Cancel" should hide the
  form and redisplay the message.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-04-06 09:47:28 -03:00

370 lines
12 KiB
JavaScript

/* global __ KohaTable table_settings */
$(document).ready(function() {
window.modaction_legend_innerhtml = $("#modaction_legend").text();
window.action_submit_value = $("#action_submit").val();
$('#select_template').find("input:submit").hide();
$('#select_template').change(function() {
$('#select_template').submit();
});
$("span.match_regex_prefix" ).hide();
$("span.match_regex_suffix" ).hide();
$("#add_action").submit(function(){
var action = $("#action").val();
if ( action == 'move_field' || action == 'copy_field' || action == 'copy_and_replace_field') {
if ( $("#from_subfield").val().length != $("#to_subfield").val().length ) {
alert( __("Both subfield values should be filled or empty.") );
return false;
}
if ( $("#to_field").val().length <= 0 ) {
alert( __("The destination should be filled.") );
return false;
}
if ( ( $("#to_field").val() < 10 && $("#to_subfield").val().length > 0 ) ||
( $("#from_field").val() < 10 && $("#from_subfield").val().length > 0 ) ) {
alert( __("If the field is a control field, the subfield should be empty") );
return false;
}
if ( ( $("#from_field").val() < 10 && $("#to_field").val() >= 10 ) ||
( $("#to_field").val() < 10 && $("#from_field").val() >= 10 ) ) {
alert( __("A control field cannot be used with a regular field.") );
return false;
}
}
if ( action == 'update_field' ) {
if ( $("#from_subfield").val().length <= 0 ) {
alert( __("The source subfield should be filled for update.") );
return false;
}
}
if ( $("#from_field").val().length <= 0 ) {
alert( __("The source field should be filled.") );
return false;
}
if ( $("#conditional").val() == 'if' || $("#conditional").val() == 'unless' ) {
if ( $("#conditional_field").val() == '' ) {
alert( __("The conditional field should be filled.") );
return false;
}
if ( $("#conditional_comparison").val() == '' ) {
alert( __("The conditional comparison operator should be filled.") );
return false;
}
if ( $("#conditional_value").val() == '' &&
( $("#conditional_comparison").val() == 'equals' || $("#conditional_comparison").val() == 'not_equals' ) ) {
if ( document.getElementById('conditional_regex').checked == true ) {
alert( __("The conditional regular expression should be filled.") );
return false;
} else {
alert( __("The conditional value should be filled.") );
return false;
}
}
}
});
$("#conditional_field,#from_field").change(function(){
updateAllEvery();
});
$(".new_action").on("click",function(e){
e.preventDefault();
cancelEditAction();
$("#no_defined_actions").hide();
$("#add_action").show();
$("#action").focus();
});
$(".duplicate_template").on("click",function(e){
e.preventDefault();
var template_id = $(this).data("template_id");
$("#duplicate_a_template").val(template_id);
$("#duplicate_current_template").val(1);
});
$('#createTemplate').on('shown.bs.modal', function (e) {
e.preventDefault();
$("#template_name").focus();
});
$("#duplicate_a_template").on("change",function(e){
e.preventDefault();
if( this.value === '' ){
$("#duplicate_current_template").val("");
} else {
$("#duplicate_current_template").val(1);
}
});
$(".delete_template").on("click",function(){
return confirmDelete();
});
$(".edit_action").on("click", function(){
var mmta_id = $(this).data("mmta_id");
var mmta = $.grep(mmtas, function(elt, id) {
return elt['mmta_id'] == mmta_id;
});
editAction( mmta[0] );
updateAllEvery();
});
KohaTable("templatest", {
}, table_settings);
});
function updateAllEvery(){
if ( $("#conditional_field").is(":visible") ) {
if ( $("#conditional_field").val() == $("#from_field").val() && $("#from_field").val().length > 0 ) {
$("#field_number option[value='0']").html( __("Every") );
} else {
$("#field_number option[value='0']").html( __("All") );
}
}
}
function onActionChange(selectObj) {
// get the index of the selected option
var idx = selectObj.selectedIndex;
// get the value of the selected option
var action = selectObj.options[idx].value;
switch( action ) {
case 'delete_field':
show('field_number_block');
hide('with_value_block');
hide('to_field_block');
break;
case 'add_field':
hide('field_number_block');
show('with_value_block');
hide('to_field_block');
break;
case 'update_field':
hide('field_number_block');
show('with_value_block');
hide('to_field_block');
break;
case 'move_field':
show('field_number_block');
hide('with_value_block');
show('to_field_block');
break;
case 'copy_field':
show('field_number_block');
hide('with_value_block');
show('to_field_block');
break;
case 'copy_and_replace_field':
show('field_number_block');
hide('with_value_block');
show('to_field_block');
break;
}
}
function onConditionalChange(selectObj) {
// get the index of the selected option
var idx = selectObj.selectedIndex;
// get the value of the selected option
var action = selectObj.options[idx].value;
switch( action ) {
case '':
hide('conditional_block');
break;
case 'if':
case 'unless':
show('conditional_block');
break;
}
}
function onConditionalComparisonChange(selectObj) {
// get the index of the selected option
var idx = selectObj.selectedIndex;
// get the value of the selected option
var action = selectObj.options[idx].value;
switch( action ) {
case 'equals':
case 'not_equals':
show('conditional_comparison_block');
break;
default:
hide('conditional_comparison_block');
break;
}
}
function onToFieldRegexChange( checkboxObj ) {
if ( checkboxObj.checked ) {
show('to_field_regex_value_block');
} else {
hide('to_field_regex_value_block');
}
}
function onConditionalRegexChange( checkboxObj ) {
if ( checkboxObj.checked ) {
$("span.match_regex_prefix" ).show();
$("span.match_regex_suffix" ).show();
} else {
$("span.match_regex_prefix" ).hide();
$("span.match_regex_suffix" ).hide();
}
}
function show(eltId) {
elt = document.getElementById( eltId );
elt.style.display='inline';
}
function hide(eltId) {
clearFormElements( eltId );
elt = document.getElementById( eltId );
elt.style.display='none';
}
function clearFormElements(divId) {
myBlock = document.getElementById( divId );
var inputElements = myBlock.getElementsByTagName( "input" );
for (var i = 0; i < inputElements.length; i++) {
switch( inputElements[i].type ) {
case "text":
inputElements[i].value = '';
break;
case "checkbox":
inputElements[i].checked = false;
break;
}
}
var selectElements = myBlock.getElementsByTagName( "select" );
for (var i = 0; i < selectElements.length; i++) {
selectElements[i].selectedIndex = 0;
}
}
function confirmDeleteAction() {
return confirm( __("Are you sure you wish to delete this template action?") );
}
function confirmDelete() {
return confirm( __("Are you sure you wish to delete this template?") );
}
var modaction_legend_innerhtml;
var action_submit_value;
function editAction( mmta ) {
$("#add_action").show();
document.getElementById('mmta_id').value = mmta['mmta_id'];
setSelectByValue( 'action', mmta['action'] );
$('#action').change();
setSelectByValue( 'field_number', mmta['field_number'] );
document.getElementById('from_field').value = mmta['from_field'];
document.getElementById('from_subfield').value = mmta['from_subfield'];
document.getElementById('field_value').value = mmta['field_value'];
document.getElementById('to_field').value = mmta['to_field'];
document.getElementById('to_subfield').value = mmta['to_subfield'];
if ( mmta['regex_search'] == '' && mmta['to_regex_replace'] == '' && mmta['to_regex_modifiers'] == '' ) {
$('#to_field_regex').prop('checked', false).change();
} else {
$('#to_field_regex').prop('checked', true).change();
$("#to_regex_search").val(mmta['to_regex_search']);
$("#to_regex_replace").val(mmta['to_regex_replace']);
$("#to_regex_modifiers").val(mmta['to_regex_modifiers']);
}
setSelectByValue( 'conditional', mmta['conditional'] );
$('#conditional').change();
document.getElementById('conditional_field').value = mmta['conditional_field'];
document.getElementById('conditional_subfield').value = mmta['conditional_subfield'];
setSelectByValue( 'conditional_comparison', mmta['conditional_comparison'] );
$('#conditional_comparison').change();
document.getElementById('conditional_value').value = mmta['conditional_value'];
document.getElementById('conditional_regex').checked = parseInt( mmta['conditional_regex'] );
$('#conditional_regex').change();
document.getElementById('description').value = mmta['description'];
window.modaction_legend_innerhtml = document.getElementById('modaction_legend').innerHTML;
document.getElementById('modaction_legend').innerHTML = __("Edit action %s").format(mmta['ordering']);
window.action_submit_value = document.getElementById('action_submit').value;
document.getElementById('action_submit').value = __("Update action");
}
function cancelEditAction() {
document.getElementById('mmta_id').value = '';
setSelectByValue( 'action', 'delete_field' );
$('#action').change();
document.getElementById('from_field').value = '';
document.getElementById('from_subfield').value = '';
document.getElementById('field_value').value = '';
document.getElementById('to_field').value = '';
document.getElementById('to_subfield').value = '';
$("#to_regex_search").val("");
$("#to_regex_replace").val("");
$("#to_regex_modifiers").val("");
$("#description").val("");
$('#to_field_regex').prop('checked', false).change();
setSelectByValue( 'conditional', '' );
$('#conditional').change();
document.getElementById('conditional_field').value = '';
document.getElementById('conditional_subfield').value = '';
setSelectByValue( 'conditional_comparison', '' );
$('#conditional_comparison').change();
document.getElementById('conditional_value').value = '';
document.getElementById('conditional_regex').checked = false;
document.getElementById('modaction_legend').innerHTML = window.modaction_legend_innerhtml;
document.getElementById('action_submit').value = window.action_submit_value;
if( $("#template_actions").length < 1 ){
$("#no_defined_actions").show();
}
$("#add_action").hide();
}
function setSelectByValue( selectId, value ) {
s = document.getElementById( selectId );
for ( i = 0; i < s.options.length; i++ ) {
if ( s.options[i].value == value ) {
s.selectedIndex = i;
}
}
}