Bugzilla – Attachment 85380 Details for
Bug 19265
Advanced Editor - Rancor - Add ability to export selected records from and import records into an import batch
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 19265: Rancor - Add export of selected records, edit button to manage imports
Bug-19265-Rancor---Add-export-of-selected-records-.patch (text/plain), 11.75 KB, created by
Alex Arnaud
on 2019-02-20 16:15:27 UTC
(
hide
)
Description:
Bug 19265: Rancor - Add export of selected records, edit button to manage imports
Filename:
MIME Type:
Creator:
Alex Arnaud
Created:
2019-02-20 16:15:27 UTC
Size:
11.75 KB
patch
obsolete
>From 300f9d6520c81113d4cb864c3745ca5818eff35b Mon Sep 17 00:00:00 2001 >From: Jesse Weaver <pianohacker@gmail.com> >Date: Fri, 20 Nov 2015 10:13:37 -0700 >Subject: [PATCH] Bug 19265: Rancor - Add export of selected records, edit > button to manage imports > >To test: >1 - Open a batch of staged records >2 - Note the new toolbar >3 - Select some records and export >4 - Verify previous functionality works as expected > >Rebased-on: 2019-02-20 - Alex Arnaud <alex.arnaud@biblibre.com> >Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com> >--- > .../prog/en/modules/tools/manage-marc-import.tt | 165 +++++++++++++++++++++ > svc/cataloguing/import_batches | 6 + > 2 files changed, 171 insertions(+) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt >index e384b13..9b58229 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt >@@ -8,6 +8,7 @@ > [% END %] > </title> > [% INCLUDE 'doc-head-close.inc' %] >+[% Asset.css("css/datatables.css") | $raw %] > <style> > #jobpanel,#jobstatus,#jobfailed { display : none; } > span.change-status { font-style:italic; color:#666; display:none; } >@@ -37,6 +38,7 @@ > › Batch [% import_batch_id | html %] > [% END %] > </h1> >+ > [% IF ( label_batch_msg ) %] > [% IF ( alert ) %] > <div class="alert"> >@@ -340,9 +342,15 @@ > [% END %] > > [% IF import_batch_id %] >+ <div id="toolbar" class="btn-toolbar"> >+ <!--<button class="btn btn-small" id="import-additional" title="Import extra records into this batch"><i class="icon-plus"></i> <span>Import additional records</span></button>--> >+ <button class="btn btn-small" id="export-selected" title="Import extra records into this batch"><i class="fa fa-hdd-o"></i> <span>Export selected records</span></button> >+ </div> >+ > <table id="records-table"> > <thead> > <tr> >+ <th> </th> > <th>#</th> > <th>Citation</th> > <th>Status</th> >@@ -350,6 +358,7 @@ > <th>Match details</th> > <th><abbr title="Differences between the original bibliographic record and the imported">Diff</abbr></th> > <th>Record</th> >+ <th>Action</th> > </tr> > </thead> > </table> >@@ -386,6 +395,7 @@ > [% Asset.js("js/tools-menu.js") | $raw %] > [% Asset.js("js/background-job-progressbar.js") | $raw %] > [% INCLUDE 'datatables.inc' %] >+ <script type="text/javascript" src="[% interface %]/[% theme %]/js/background-job-progressbar.js"></script> > <script> > $(document).ready(function(){ > $("#staged-record-matching-rules select").change(function(){ >@@ -506,6 +516,161 @@ > return confirm( _("Clear all reservoir records staged in this batch? This cannot be undone.") ); > } > }); >+ >+ $("#staged-record-matching-rules select").change(function(){ >+ var str = $(this).attr("id"); >+ $("#reset_"+str).parent().show(); >+ }); >+ $("a.reset").click(function(){ >+ var str = $(this).attr("id"); >+ str = str.replace("reset_","") >+ $("#"+str+" option[selected='selected']").attr("selected","selected"); >+ $(this).parent().hide(); >+ }); >+ [% IF import_batch_id %] >+ var checkedRecords = {}; >+ $("#records-table").dataTable($.extend(true, {}, dataTablesDefaults, { >+ "bAutoWidth": false, >+ "bFilter": false, >+ "bProcessing": true, >+ "bServerSide": true, >+ "sAjaxSource": 'batch_records_ajax.pl', >+ "sPaginationType": "full_numbers", >+ "sDom": '<"top pager"iflp>rt<"bottom pager"flp><"clear">', >+ "aaSorting": [ [ 1, 'asc' ] ], >+ "aoColumns": [{ >+ "bSortable": false, >+ "mDataProp": null, >+ "sDefaultContent": '' >+ }, >+ { "mDataProp": "import_record_id" }, >+ { "mDataProp": "citation" }, >+ { "mDataProp": "status" }, >+ { "mDataProp": "overlay_status" }, >+ { "mDataProp": "match_citation" }, >+ { "mDataProp": "diff_url" }, >+ { "mDataProp": "matched" }, >+ { >+ "bSortable": false, >+ "mDataProp": null, >+ "sDefaultContent": '' >+ } >+ ], >+ "fnServerData": function ( sSource, aoData, fnCallback ) { >+ aoData.push( { "name": "import_batch_id", "value": [% import_batch_id %] } ); >+ $.ajax({ >+ 'dataType': 'json', >+ 'type': 'POST', >+ 'url': sSource, >+ 'data': aoData, >+ 'success': function(json){ >+ fnCallback(json); >+ } >+ }); >+ }, >+ "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) { >+ [% IF ( record_type == 'auth' ) %] >+ var record_details_url = "/cgi-bin/koha/authorities/detail.pl?authid="; >+ [% ELSE %] >+ var record_details_url = "/cgi-bin/koha/catalogue/detail.pl?biblionumber="; >+ [% END %] >+ >+ var record_id = aData['import_record_id']; >+ var $checkbox = $('<input type="checkbox"></input>'); >+ $('td:eq(0)', nRow).append($checkbox); >+ $checkbox.prop( 'checked', checkedRecords[record_id] ); >+ $checkbox.change( function() { >+ if ( this.checked ) { >+ checkedRecords[record_id] = true; >+ } else { >+ delete checkedRecords[record_id]; >+ } >+ }); >+ >+ $('td:eq(2)', nRow).html( >+ '<a href="/cgi-bin/koha/catalogue/showmarc.pl?importid=' + aData['import_record_id'] + '" class="previewMARC">' + aData['citation'] + '</a>' >+ ); >+ >+ $('td:eq(3)', nRow).html( >+ aData['status'] == 'imported' ? _("Imported") : >+ aData['status'] == 'ignored' ? _("Ignored") : >+ aData['status'] == 'reverted' ? _("Reverted") : >+ aData['status'] == 'staged' ? _("Staged") : >+ aData['status'] == 'error' ? _("Error") : >+ aData['status'] >+ ); >+ >+ $('td:eq(4)', nRow).html( >+ aData['overlay_status'] == 'no_match' ? _("No match") : >+ aData['overlay_status'] == 'match_applied' ? _("Match applied") : >+ aData['overlay_status'] == 'auto_match' ? _("Match found") : >+ aData['overlay_status'] >+ ); >+ >+ if ( aData['match_id'] ) { >+ [% IF ( record_type == 'auth' ) -%] >+ var matching_msg = _("Matches authority %s (score=%s):%s"); >+ [%- ELSE -%] >+ var matching_msg = _("Matches biblio %s (score=%s):%s"); >+ [%- END %] >+ $('td:eq(4)', nRow).html( >+ matching_msg.format(aData['match_id'], aData['score'], >+ '<a target="_blank" href="' + record_details_url >+ + aData['match_id'] + '">' + aData['match_citation'] + '</a>') >+ ); >+ } >+ if (aData['diff_url']){ >+ $('td:eq(6)', nRow).html( >+ '<a rel="gb_page_center[960,600]" href="'+aData['diff_url']+'">View</a>' >+ ); >+ } >+ $('td:eq(7)', nRow).html( >+ '<a target="_blank" href="' + record_details_url >+ + aData['matched'] + '">' + aData['matched'] + '</a>' >+ ); >+ $('td:eq(8)', nRow).html( >+ '<a target="_blank" href="/cgi-bin/koha/cataloguing/editor.pl#batch:[% import_batch_id %]/' + record_id >+ + '">' + _("Edit") + '</a>' >+ ); >+ }, >+ })); >+ $("#import_batch_form").on("submit",function(){ >+ return submitBackgroundJob( document.getElementById("import_batch_form") ); >+ }); >+ $("#revert_batch_form").on("submit",function(){ >+ return confirm( _("Are you sure you want to undo the import of this batch into the catalog?") ) && submitBackgroundJob( document.getElementById("revert_batch_form") ); >+ }); >+ $('#export-selected').click( function() { >+ var options = { >+ import_record_id: $.map( checkedRecords, function( undef, key ) { return key; } ).join('|'), >+ }; >+ >+ if ( options.import_record_id.length == 0 ) return false;_ >+ >+ window.open( '/cgi-bin/koha/svc/cataloguing/import_batches/' + [% import_batch_id %] + '?download=1&' + $.param( options ) ); >+ return false; >+ }); >+ [% END %] >+ >+ $("body").on("click",".previewMARC", function(e){ >+ e.preventDefault(); >+ var ltitle = $(this).text(); >+ var page = $(this).attr("href"); >+ $("#marcPreviewLabel").text(ltitle); >+ $("#marcPreview .modal-body").load(page + " table"); >+ $('#marcPreview').modal({show:true}); >+ }); >+ $("#marcPreview").on("hidden", function(){ >+ $("#marcPreviewLabel").html(""); >+ $("#marcPreview .modal-body").html("<div id=\"loading\"><img src=\"[% interface %]/[% theme %]/img/spinner-small.gif\" alt=\"\" /> "+_("Loading")+"</div>"); >+ }); >+ $(".batch_form").on("submit",function(){ >+ if( $(this).hasClass("batch_delete") ){ >+ return confirm( _("Are you sure you want to permanently delete this batch?") ); >+ } else { >+ return confirm( _("Clear all reservoir records staged in this batch? This cannot be undone.") ); >+ } >+ }); > }); > </script> > [% END %] >diff --git a/svc/cataloguing/import_batches b/svc/cataloguing/import_batches >index 6bf5fdb..cfb5835 100755 >--- a/svc/cataloguing/import_batches >+++ b/svc/cataloguing/import_batches >@@ -85,6 +85,12 @@ sub download_batch { > }; > } > >+ my $import_record_ids = $query->param( 'import_record_id' ); >+ >+ if ( $import_record_ids ) { >+ $extra_conditions{'import_record.import_record_id'} = { -in => [ split /\|/, $import_record_ids ] }; >+ } >+ > my $records = $schema->resultset('ImportBiblio')->search( > { > 'import_record.import_batch_id' => $batch_id, >-- >2.7.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 19265
:
66898
|
66899
|
66900
|
77245
|
77246
|
77247
|
77248
|
80993
|
80994
|
80995
|
80996
|
85372
|
85373
|
85374
|
85375
| 85380 |
85381
|
85382
|
85383