From 1253975389975a8ff11a9bb2ef84582aeb6bd08b Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Wed, 28 Nov 2018 17:51:10 +0000 Subject: [PATCH] Bug 21091: Move add item template JavaScript to a separate file This patch moves the JavaScript in the add item template to separate files: 1 JS file and 1 include file containing translatable strings. While moving the JS to cataloging_additem.js I have made some changes to quiet ESLint warnings (spacing, variable definition). To test, apply the patch and open the add item page for an existing record. Test the various JS-driven functionalities: - Table sorting - Table column configuration - Table searching - Table inline edit/delete links (click anywhere in the table row) - Add multiple item form show/hide - Add multiple item warning when adding 100+ items Signed-off-by: Jose-Mario Monteiro-Santos Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens --- .../en/includes/str/cataloging_additem.inc | 16 +++ .../prog/en/modules/cataloguing/additem.tt | 136 +----------------- .../prog/js/cataloging_additem.js | 119 +++++++++++++++ 3 files changed, 142 insertions(+), 129 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/str/cataloging_additem.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/js/cataloging_additem.js diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/str/cataloging_additem.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/str/cataloging_additem.inc new file mode 100644 index 0000000000..51494a214d --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/str/cataloging_additem.inc @@ -0,0 +1,16 @@ + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt index 2820c4c5db..828860b2c7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt @@ -2,144 +2,21 @@ [% USE Asset %] [% USE Koha %] [% USE ColumnsSettings %] - [% INCLUDE 'doc-head-open.inc' %] Koha › Cataloging › [% title | html %] [% IF ( author ) %] by [% author | html %][% END %] (Record #[% biblionumber | html %]) › Items [% INCLUDE 'doc-head-close.inc' %] +[% Asset.css("css/datatables.css") | $raw %] +[% Asset.css("css/addbiblio.css") | $raw %] [% INCLUDE 'datatables.inc' %] [% Asset.js("js/cataloging.js") | $raw %] [% INCLUDE 'columns_settings.inc' %] [% INCLUDE 'browser-strings.inc' %] [% Asset.js("js/browser.js") | $raw %] - -[% Asset.css("css/addbiblio.css") | $raw %] - [% INCLUDE 'select2.inc' %] - - +[% INCLUDE 'str/cataloging_additem.inc' %] +[% Asset.js("js/cataloging_additem.js") | $raw %] + [% INCLUDE 'header.inc' %] [% INCLUDE 'cataloging-search.inc' %] @@ -360,7 +237,7 @@ function confirm_deletion() { Cancel [% END %] - + [%# Fields for fast cataloging %] @@ -376,4 +253,5 @@ function confirm_deletion() { + [% INCLUDE 'intranet-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/cataloging_additem.js b/koha-tmpl/intranet-tmpl/prog/js/cataloging_additem.js new file mode 100644 index 0000000000..f4a5dc1383 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/cataloging_additem.js @@ -0,0 +1,119 @@ +/* global KOHA searchid biblionumber frameworkcode popup opisadd LABEL_EDIT_ITEM LABEL_DELETE_ITEM MSG_FORM_NOT_SUBMITTED MSG_MANDATORY_FIELDS_EMPTY MSG_ADD_MULTIPLE_ITEMS MSG_ENTER_NUM_ITEMS MSG_CONFIRM_DELETE_ITEM MSG_CONFIRM_ADD_ITEM columns_settings CheckMandatorySubfields CheckMultipleAdd */ + +var browser = KOHA.browser(searchid, parseInt(biblionumber, 10)); +browser.show(); + +$(document).ready(function(){ + + // Remove the onclick event defined in browser.js, + // otherwise the deletion confirmation will not work correctly + $('a[href*="biblionumber="]').off('click'); + + if( popup ){ + if( opisadd ){ + window.close(); + } + } + + $("fieldset.rows input, fieldset.rows select").addClass("noEnterSubmit"); + /* Inline edit/delete links */ + var biblionumber = $("input[name='biblionumber']").attr("value"); + $("tr.editable").each(function(){ + $(this).find("td:not(:first)").on('click', function(){ + var rowid = $(this).parent().attr("id"); + var num_rowid = rowid.replace("row",""); + $(".linktools").remove(); + var edit_link = $(''); + $(edit_link).text( LABEL_EDIT_ITEM ); + var delete_link = $(''); + $(delete_link).text( LABEL_DELETE_ITEM ); + $(delete_link).on('click', function() { + return confirm_deletion(); + }); + var tools_node = $(''); + $(tools_node).append(edit_link); + $(tools_node).append(delete_link); + $(this).append(tools_node); + }); + }); + + $("#addnewitem").click(function(){ + if ( confirm( MSG_CONFIRM_ADD_ITEM ) ){ + window.location.href = "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=" + biblionumber; + } + }); + + // Skip the first column + columns_settings.unshift( { cannot_be_toggled: "1" } ); + + var itemst = KohaTable("itemst", { + "aoColumnDefs": [ + { "aTargets": [ 0 ], "bSortable": false, "bSearchable": false }, + ], + 'bPaginate': false, + 'bInfo': false, + "bAutoWidth": false, + "bKohaColumnsUseNames": true + }, columns_settings); + + var multiCopyControl = $("#add_multiple_copies_span"); + var addMultipleBlock = $("#addmultiple"); + var addSingleBlock = $("#addsingle"); + multiCopyControl.hide(); + $("#add_multiple_copies").on("click",function(e){ + e.preventDefault; + addMultipleBlock.toggle(); + addSingleBlock.toggle(); + multiCopyControl.toggle(); + $('body,html').animate({ scrollTop: $('body').height() }, 100); + }); + $("#cancel_add_multiple").on("click",function(e){ + e.preventDefault(); + addMultipleBlock.toggle(); + addSingleBlock.toggle(); + multiCopyControl.toggle(); + }); + + $('.subfield_line select').select2(); +}); + +function Check(f) { + var total_errors = CheckMandatorySubfields(f); + if (total_errors==0) { + // Explanation about this line: + // In case of limited edition permission, we have to prevent user from modifying some fields. + // But there is no such thing as readonly attribute for select elements. + // So we use disabled instead. But disabled prevent values from being passed through the form at submit. + // So we "un-disable" the elements just before submitting. + // That's a bit clumsy, and if someone comes up with a better solution, feel free to improve that. + $("select[name=field_value]").prop('disabled', false); + return true; + } else { + var alertString2 = MSG_FORM_NOT_SUBMITTED; + alertString2 += "\n------------------------------------------------------------------------------------\n"; + alertString2 += "\n- " + "%s " + MSG_MANDATORY_FIELDS_EMPTY.format(total_errors); + alert(alertString2); + return false; + } +} + +function CheckMultipleAdd(f) { + + if (!f || isNaN(f) || !parseInt(f) == f || f <= 0) { + alert( MSG_ENTER_NUM_ITEMS ); + return false; + } + // Add a soft-limit of 99 with a reminder about potential data entry error + if (f>99) { + return confirm( MSG_ADD_MULTIPLE_ITEMS.format(f)); + } +} + +function Dopop(link,i) { + var defaultvalue=document.forms[0].field_value[i].value; + var newin=window.open(link+"&result=" + defaultvalue,"valuebuilder",'width=500,height=400,toolbar=false,scrollbars=yes'); +} + +function confirm_deletion() { + return confirm( MSG_CONFIRM_DELETE_ITEM ); +} \ No newline at end of file -- 2.39.5