From 903373be39314a07421f9fa8431c32abbda0b640 Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Tue, 26 Feb 2019 14:44:08 +0100 Subject: [PATCH] Bug 18823: Keep Batch selected and remove record backends when needed. Signed-off-by: cori Rebased-on: 2019-03-20 Alex Arnaud --- .../prog/en/includes/cateditor-ui.inc | 36 +++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc index 014e84d..c021e33 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/cateditor-ui.inc @@ -230,6 +230,17 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr [% END %] } + function resetSaveTargets() { + $('input.save-toggle-target').each(function() { + targetid = $(this).data('target-id'); + parts = targetid.split('/'); + if (parts[1]) { + $(this).parent().remove(); + delete state.saveTargets[targetid]; + } + }); + } + // Record loading var backends = { 'new': { @@ -462,7 +473,7 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr var backend = backends[ parts[0] ]; - setSaveTargetChecked( recid, false ); + setSaveTargetChecked( recid, true ); addSaveTarget( { label: backend.saveExistingLabel.format( data.newId[1] ), id: data.newId.join('/'), @@ -650,6 +661,7 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr } ); $tr.find( '.open-link' ).click( function() { $( '#search-results-ui' ).modal('hide'); + resetSaveTargets(); openRecord( hit.id, editor ); return false; @@ -1107,22 +1119,29 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr // Click bindings $( '#save-record, #save-dropdown a' ).click( function() { $( '#save-record' ).find('i').attr( 'class', 'fa fa-spinner fa-spin' ).siblings( 'span' ).text( _("Saving...") ); - var enabledTargets = []; + var filteredTargets = []; var targetNames = []; $.each( state.saveTargets, function() { if ( this.checked ) { - enabledTargets.push(this); + // Filtering the targets so that if Batch and record in the + // same Batch are selected, we keep only the record. + // This avoid create (duplicate error) + update. + parts = this.id.split('/'); + filteredTargets[parts[0]] = ''; + if (parts[1]) { + filteredTargets[parts[0]] = parts[1]; + } targetNames.push(this.label); } } ); - if ( enabledTargets.length == 0 ) { + if ( Object.keys(filteredTargets).length == 0 ) { humanMsg.displayAlert( _("Please select a save target"), { className: 'humanError' } ); return false; } $( '#save-record' ).find('i').attr( 'class', 'icon-loading' ).siblings( 'span' ).text( _("Saving...") ); - var targets_left = enabledTargets.length; + var targets_left = Object.keys(filteredTargets).length; var errors = false; function finishCb(result) { @@ -1185,8 +1204,9 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr var options = { override_warnings: $(this).is('#save-with-override') } - $.each( enabledTargets, function() { - saveRecord( this.id, editor, finishCb, options ); + Object.keys(filteredTargets).forEach(function(key) { + id = key + '/' + filteredTargets[key]; + saveRecord( id, editor, finishCb, options ); } ); return false; @@ -1215,6 +1235,7 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr if (record.marc8_corrupted) humanMsg.displayMsg( '

' + _("Possible record corruption") + '

' + _("Record not marked as UTF-8, may be corrupted") + '

', { className: 'humanError' } ); + resetSaveTargets(); editor.displayRecord( record ); }; @@ -1408,6 +1429,7 @@ require( [ 'koha-backend', 'search', 'macros', 'marc-editor', 'marc-record', 'pr $('#new-record' ).click( function() { if ( editor.modified && !confirm( _("Are you sure you want to erase your changes?") ) ) return; + resetSaveTargets(); openRecord( 'new/', editor ); return false; } ); -- 2.7.4