Browse Source
Revamps the import options on the tools menu to have two parts: [1] Staging (load file into reservoir) [2] Managing (review the list of staged batches, then choose to commit or undo a given batch. Signed-off-by: Chris Cormack <crc@liblime.com> Signed-off-by: Joshua Ferraro <jmf@liblime.com>3.0.x
Galen Charlton
17 years ago
committed by
Joshua Ferraro
10 changed files with 778 additions and 135 deletions
@ -1,74 +0,0 @@ |
|||
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --> |
|||
<title>Koha › Tools › MARC Import</title> |
|||
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> |
|||
</head> |
|||
<body> |
|||
<!-- TMPL_INCLUDE NAME="header.inc" --> |
|||
<!-- TMPL_INCLUDE NAME="cat-search.inc" --> |
|||
|
|||
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> › MARC Import</div> |
|||
|
|||
<div id="doc3" class="yui-t2"> |
|||
|
|||
<div id="bd"> |
|||
<div id="yui-main"> |
|||
<div class="yui-b"> |
|||
|
|||
<h1>MARC acquisition system</h1> |
|||
|
|||
<!-- TMPL_IF name="uploadmarc" --> |
|||
<p>Import results :</p> |
|||
<ul> |
|||
<li><!-- TMPL_VAR name="imported" --> imported records</li> |
|||
<li><!-- TMPL_VAR name="alreadyindb" --> not imported because already in catalog</li> |
|||
<li><!-- TMPL_VAR name="alreadyinfarm" --> not imported because already in the reservoir</li> |
|||
<li><!-- TMPL_VAR name="notmarcrecord" --> not imported because they seem not to be in MARC format (or ISBN/ISSN missing) !</li> |
|||
<li><!-- TMPL_VAR name="total" --> records parsed</li> |
|||
<li><a href="/cgi-bin/koha/tools/tools-home.pl">Back</a></li> |
|||
</ul> |
|||
<!-- TMPL_ELSE --> |
|||
<ul> |
|||
<li>Select a file to import into the reservoir. It will be parsed, and for each ISBN found, a new baby will be created in the reservoir.</li> |
|||
<li>If an ISBN already exists in the reservoir, you can choose whether to ignore the new one or overwrite the old one.</li> |
|||
<li>You can enter a name for this import. It may be useful, when creating a biblio, to remember where the suggested MARC data comes from!</li> |
|||
<li>Of course, if the ISBN already exists in the active DB, the biblio will be ignored.</li> |
|||
</ul> |
|||
<form method="post" action="<!-- TMPL_VAR name="SCRIPT_NAME" -->" enctype="multipart/form-data"> |
|||
<fieldset class="rows"> |
|||
<legend>Import into the reservoir</legend><ol> |
|||
<li> |
|||
<label for="uploadmarc">Select the file to import: </label> |
|||
|
|||
<input type="file" id="uploadmarc" name="uploadmarc" /><br /> |
|||
|
|||
</li> |
|||
<li> |
|||
<label for="comments">Notes about this import: </label> |
|||
|
|||
<input type="text" id="comments" name="comments" /> |
|||
|
|||
</li> |
|||
<li> |
|||
<label for="syntax">Character encoding: </label> |
|||
|
|||
<select name="syntax" id="syntax"><option value="MARC21">MARC21</option><option value="UNIMARC">UNIMARC</option></select> |
|||
|
|||
</li> |
|||
</ol></fieldset> |
|||
<fieldset class="rows"> |
|||
<legend>If ISBN is already in the reservoir:</legend><ol><li class="radio"> |
|||
|
|||
<input type="radio" id="overwrite_bibliono" name="overwrite_biblio" value="0" checked="checked" /><label for="overwrite_bibliono">Ignore this one, keep the existing one</label></li> |
|||
<li class="radio"> |
|||
<input type="radio" id="overwrite_biblioyes" name="overwrite_biblio" value="1" /><label for="overwrite_biblioyes">Overwrite the existing one with this</label> |
|||
</li></ol></fieldset><input type="submit" value="Import" /> |
|||
</form> |
|||
<!-- /TMPL_IF --> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="yui-b"> |
|||
<!-- TMPL_INCLUDE NAME="tools-menu.inc" --> |
|||
</div> |
|||
</div> |
|||
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> |
@ -0,0 +1,180 @@ |
|||
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --> |
|||
<title>Koha › Tools › Manage Staged MARC Records |
|||
<!-- TMPL_IF name="import_batch_id" --> |
|||
› Batch <!-- TMPL_VAR name="import_batch_id" --> |
|||
<!-- /TMPL_IF --> |
|||
</title> |
|||
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> |
|||
</head> |
|||
<body> |
|||
<!-- TMPL_INCLUDE NAME="header.inc" --> |
|||
<!-- TMPL_INCLUDE NAME="cat-search.inc" --> |
|||
|
|||
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> |
|||
<!-- TMPL_IF name="import_batch_id" --> |
|||
› |
|||
<a href="<!-- TMPL_VAR name="script_name"-->">Manage Staged MARC Records</a> |
|||
› Batch <!-- TMPL_VAR name="import_batch_id" --> |
|||
<!-- TMPL_ELSE --> |
|||
› Manage Staged MARC Records |
|||
<!-- /TMPL_IF --> |
|||
</div> |
|||
|
|||
<div id="doc3" class="yui-t2"> |
|||
|
|||
<div id="bd"> |
|||
<div id="yui-main"> |
|||
<div class="yui-b"> |
|||
|
|||
<h1>Manage Staged MARC Records |
|||
<!-- TMPL_IF name="import_batch_id" --> |
|||
› Batch <!-- TMPL_VAR name="import_batch_id" --> |
|||
<!-- /TMPL_IF --> |
|||
</h1> |
|||
|
|||
<!-- TMPL_IF name="batch_info" --> |
|||
<p><label>File name</label> <!-- TMPL_VAR name="file_name" --></p> |
|||
<p><label>Comments</label> <!-- TMPL_VAR name="comments" --></p> |
|||
<p><label>Staged</label> <!-- TMPL_VAR name="upload_timestamp" --></p> |
|||
<p><label>Status</label> <!-- TMPL_VAR name="import_status" --></p> |
|||
<p> |
|||
<!-- TMPL_IF name="can_commit" --> |
|||
<form action="<!-- TMPL_VAR name="script_name" -->" method="post"> |
|||
<input type="hidden" name="op" value="commit-batch" /> |
|||
<input type="hidden" name="import_batch_id" value="<!-- TMPL_VAR name="import_batch_id" -->" /> |
|||
<input type="submit" class="button" value="Complete import" /> |
|||
</form> |
|||
<!-- /TMPL_IF --> |
|||
<!-- TMPL_IF name="can_revert" --> |
|||
<form action="<!-- TMPL_VAR name="script_name" -->" method="post"> |
|||
<input type="hidden" name="op" value="revert-batch" /> |
|||
<input type="hidden" name="import_batch_id" value="<!-- TMPL_VAR name="import_batch_id" -->" /> |
|||
<input type="submit" class="button" value="Undo import" /> |
|||
</form> |
|||
<!-- /TMPL_IF --> |
|||
</p> |
|||
<!-- TMPL_IF name="did_commit" --> |
|||
<p><span class="problem">Completed import of records</span></p> |
|||
<table> |
|||
<tr><td>Number of records added</td><td><!-- TMPL_VAR name="num_added" --></td></tr> |
|||
<tr><td>Number of records updated</td><td><!-- TMPL_VAR name="num_updated" --></td></tr> |
|||
<tr><td>Number of records ignored</td><td><!-- TMPL_VAR name="num_ignored" --></td></tr> |
|||
</table> |
|||
<!-- /TMPL_IF --> |
|||
<!-- TMPL_IF name="did_revert" --> |
|||
<p><span class="problem">Undid import of records</span></p> |
|||
<table> |
|||
<tr><td>Number of records deleted</td><td><!-- TMPL_VAR name="num_deleted" --></td></tr> |
|||
<tr><td>Number of records not deleted due to items on loan</td><td><!-- TMPL_VAR name="num_errors" --></td></tr> |
|||
<tr><td>Number of records changed back</td><td><!-- TMPL_VAR name="num_reverted" --></td></tr> |
|||
<tr><td>Number of records ignored</td><td><!-- TMPL_VAR name="num_ignored" --></td></tr> |
|||
</table> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_IF --> |
|||
<br /> |
|||
|
|||
<!-- TMPL_IF name="batch_list" --> |
|||
<!-- TMPL_IF name="pages" --> |
|||
<div class="pages"> |
|||
Page |
|||
<!-- TMPL_LOOP name="pages" --> |
|||
<!-- TMPL_IF name="current_page" --> |
|||
<span class="current"><!-- TMPL_VAR name="page_number" --></span> |
|||
<!-- TMPL_ELSE --> |
|||
<a class="nav" href="<!-- TMPL_VAR name="script_name" -->?offset=<!-- TMPL_VAR name="offset" -->"><!-- TMPL_VAR name="page_number" --></a> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_LOOP --> |
|||
</div> |
|||
<!-- /TMPL_IF --> |
|||
<table> |
|||
<tr> |
|||
<th>#</th> |
|||
<th>File name</th> |
|||
<th>Comments</th> |
|||
<th>Status</th> |
|||
<th>Staged</th> |
|||
<th># Bibs</th. |
|||
<th># Items</th> |
|||
</tr> |
|||
<!-- TMPL_LOOP name="batch_list" --> |
|||
<tr> |
|||
<td><a href="<!-- TMPL_VAR name="script_name" -->?import_batch_id=<!-- TMPL_VAR name="import_batch_id" -->"><!-- TMPL_VAR name="import_batch_id" --></a></td> |
|||
<td><!-- TMPL_VAR name="file_name" --></td> |
|||
<td><!-- TMPL_VAR name="comments" --></td> |
|||
<td><!-- TMPL_VAR name="import_status" --></td> |
|||
<td><!-- TMPL_VAR name="upload_timestamp" --></td> |
|||
<td><!-- TMPL_VAR name="num_biblios" --></td> |
|||
<td><!-- TMPL_VAR name="num_items" --></td> |
|||
</tr> |
|||
<!-- /TMPL_LOOP --> |
|||
</table> |
|||
<!-- TMPL_IF name="pages" --> |
|||
<div class="pages"> |
|||
Page |
|||
<!-- TMPL_LOOP name="pages" --> |
|||
<!-- TMPL_IF name="current_page" --> |
|||
<span class="current"><!-- TMPL_VAR name="page_number" --></span> |
|||
<!-- TMPL_ELSE --> |
|||
<a class="nav" href="<!-- TMPL_VAR name="script_name" -->?offset=<!-- TMPL_VAR name="offset" -->"><!-- TMPL_VAR name="page_number" --></a> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_LOOP --> |
|||
</div> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_IF --> |
|||
|
|||
<!-- TMPL_IF name="biblio_list" --> |
|||
<!-- TMPL_IF name="pages" --> |
|||
<div class="pages"> |
|||
Page |
|||
<!-- TMPL_LOOP name="pages" --> |
|||
<!-- TMPL_IF name="current_page" --> |
|||
<span class="current"><!-- TMPL_VAR name="page_number" --></span> |
|||
<!-- TMPL_ELSE --> |
|||
<a class="nav" href="<!-- TMPL_VAR name="script_name" -->?import_batch_id=<!-- TMPL_VAR name="import_batch_id" -->&offset=<!-- TMPL_VAR name="offset" -->"><!-- TMPL_VAR name="page_number" --></a> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_LOOP --> |
|||
</div> |
|||
<!-- /TMPL_IF --> |
|||
<table> |
|||
<tr> |
|||
<th>#</th> |
|||
<th>Citation</th> |
|||
<th>Status</th> |
|||
<th>Overlay?</th> |
|||
</tr> |
|||
<!-- TMPL_LOOP name="biblio_list" --> |
|||
<tr> |
|||
<td><!-- TMPL_VAR name="record_sequence"--></td> |
|||
<td><!-- TMPL_VAR name="citation"--></td> |
|||
<td><!-- TMPL_VAR name="status"--></td> |
|||
<td><!-- TMPL_VAR name="overlay_status"--></td> |
|||
</tr> |
|||
<!-- TMPL_IF name="match_biblionumber" --> |
|||
<tr> |
|||
<td /> |
|||
<td class="highlight" colspan="3">Matches biblio <!-- TMPL_VAR name="match_biblionumber" --> (score = <!-- TMPL_VAR name="match_score" -->): <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=<!-- TMPL_VAR name="match_biblionumber" -->"><!-- TMPL_VAR name="match_citation" --></a></td> |
|||
</tr> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_LOOP --> |
|||
</table> |
|||
<!-- TMPL_IF name="pages" --> |
|||
<div class="pages"> |
|||
Page |
|||
<!-- TMPL_LOOP name="pages" --> |
|||
<!-- TMPL_IF name="current_page" --> |
|||
<span class="current"><!-- TMPL_VAR name="page_number" --></span> |
|||
<!-- TMPL_ELSE --> |
|||
<a class="nav" href="<!-- TMPL_VAR name="script_name" -->?import_batch_id=<!-- TMPL_VAR name="import_batch_id" -->&offset=<!-- TMPL_VAR name="offset" -->"><!-- TMPL_VAR name="page_number" --></a> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_LOOP --> |
|||
</div> |
|||
<!-- /TMPL_IF --> |
|||
<!-- /TMPL_IF --> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="yui-b"> |
|||
<!-- TMPL_INCLUDE NAME="tools-menu.inc" --> |
|||
</div> |
|||
</div> |
|||
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> |
@ -0,0 +1,76 @@ |
|||
<!-- TMPL_INCLUDE NAME="doc-head-open.inc" --> |
|||
<title>Koha › Tools › Stage MARC Records For Import</title> |
|||
<!-- TMPL_INCLUDE NAME="doc-head-close.inc" --> |
|||
</head> |
|||
<body> |
|||
<!-- TMPL_INCLUDE NAME="header.inc" --> |
|||
<!-- TMPL_INCLUDE NAME="cat-search.inc" --> |
|||
|
|||
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> › Stage MARC Records For Import</div> |
|||
|
|||
<div id="doc3" class="yui-t2"> |
|||
|
|||
<div id="bd"> |
|||
<div id="yui-main"> |
|||
<div class="yui-b"> |
|||
|
|||
<h1>Stage MARC Records For Import</h1> |
|||
|
|||
<!-- TMPL_IF name="uploadmarc" --> |
|||
<p>MARC Staging results :</p> |
|||
<ul> |
|||
<li><!-- TMPL_VAR name="total" --> records in file</li> |
|||
<li><!-- TMPL_VAR name="import_errors" --> records not staged because of MARC error</li> |
|||
<li><!-- TMPL_VAR name="staged" --> records staged</li> |
|||
<!-- TMPL_IF name="checked_matches" --> |
|||
<li><!-- TMPL_VAR name="matched" --> records with at least one match in catalogue</li> |
|||
<!-- TMPL_ELSE --> |
|||
<li>Did not check for matches with existing records in catalogue</li> |
|||
<!-- /TMPL_IF --> |
|||
<li><a href="/cgi-bin/koha/tools/manage-marc-import.pl?import_batch_id=<!-- TMPL_VAR name="import_batch_id" -->">Manage staged records</a></li> |
|||
<li><a href="/cgi-bin/koha/tools/tools-home.pl">Back</a></li> |
|||
</ul> |
|||
<!-- TMPL_ELSE --> |
|||
<ul> |
|||
<li>Select a MARC file to stage in the import reservoir. It will be parsed, and each valid record staged for later import into the catalogue.</li> |
|||
<li>You can enter a name for this import. It may be useful, when creating a biblio, to remember where the suggested MARC data comes from!</li> |
|||
</ul> |
|||
<form method="post" action="<!-- TMPL_VAR name="SCRIPT_NAME" -->" enctype="multipart/form-data"> |
|||
<fieldset class="rows"> |
|||
<legend>Stage records into the reservoir</legend><ol> |
|||
<li> |
|||
<label for="uploadmarc">Select the file to stage: </label> |
|||
|
|||
<input type="file" id="uploadmarc" name="uploadmarc" /><br /> |
|||
|
|||
</li> |
|||
<li> |
|||
<label for="comments">Notes about this file: </label> |
|||
|
|||
<input type="text" id="comments" name="comments" /> |
|||
|
|||
</li> |
|||
<li> |
|||
<label for="syntax">Character encoding: </label> |
|||
|
|||
<select name="syntax" id="syntax"><option value="MARC21">MARC21</option><option value="UNIMARC">UNIMARC</option></select> |
|||
|
|||
</li> |
|||
</ol></fieldset> |
|||
<fieldset class="rows"> |
|||
<legend>Look for existing records in catalogue?</legend><ol><li class="radio"> |
|||
|
|||
<input type="radio" id="check_for_matchesno" name="check_for_matches" value="0" checked="checked" /><label for="check_for_matchesno">Do not look for matching records (using ISBN)</label></li> |
|||
<li class="radio"> |
|||
<input type="radio" id="check_for_matchesyes" name="check_for_matches" value="1" /><label for="check_for_matchesyes">Look for matching records</label> |
|||
</li></ol></fieldset><input type="submit" value="Import" /> |
|||
</form> |
|||
<!-- /TMPL_IF --> |
|||
|
|||
</div> |
|||
</div> |
|||
<div class="yui-b"> |
|||
<!-- TMPL_INCLUDE NAME="tools-menu.inc" --> |
|||
</div> |
|||
</div> |
|||
<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" --> |
@ -0,0 +1,196 @@ |
|||
#!/usr/bin/perl |
|||
|
|||
# Copyright (C) 2007 LibLime |
|||
# |
|||
# This file is part of Koha. |
|||
# |
|||
# Koha is free software; you can redistribute it and/or modify it under the |
|||
# terms of the GNU General Public License as published by the Free Software |
|||
# Foundation; either version 2 of the License, or (at your option) any later |
|||
# version. |
|||
# |
|||
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY |
|||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR |
|||
# A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License along with |
|||
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, |
|||
# Suite 330, Boston, MA 02111-1307 USA |
|||
|
|||
use strict; |
|||
|
|||
# standard or CPAN modules used |
|||
use CGI; |
|||
use MARC::File::USMARC; |
|||
|
|||
# Koha modules used |
|||
use C4::Context; |
|||
use C4::Auth; |
|||
use C4::Input; |
|||
use C4::Output; |
|||
use C4::Biblio; |
|||
use C4::ImportBatch; |
|||
use C4::Matcher; |
|||
|
|||
my $script_name = "/cgi-bin/koha/tools/manage-marc-import.pl"; |
|||
|
|||
my $input = new CGI; |
|||
my $op = $input->param('op'); |
|||
my $import_batch_id = $input->param('import_batch_id'); |
|||
|
|||
# record list displays |
|||
my $offset = $input->param('offset') || 0; |
|||
my $results_per_page = $input->param('results_per_page') || 10; |
|||
|
|||
my ($template, $loggedinuser, $cookie) |
|||
= get_template_and_user({template_name => "tools/manage-marc-import.tmpl", |
|||
query => $input, |
|||
type => "intranet", |
|||
authnotrequired => 0, |
|||
flagsrequired => {parameters => 1}, |
|||
debug => 1, |
|||
}); |
|||
|
|||
if ($op) { |
|||
$template->param(script_name => $script_name, $op => 1); |
|||
} else { |
|||
$template->param(script_name => $script_name); |
|||
} |
|||
|
|||
if ($op eq "") { |
|||
# displaying a list |
|||
if ($import_batch_id eq "") { |
|||
import_batches_list($template, $offset, $results_per_page); |
|||
} else { |
|||
import_biblios_list($template, $import_batch_id, $offset, $results_per_page); |
|||
} |
|||
} elsif ($op eq "commit-batch") { |
|||
commit_batch($template, $import_batch_id); |
|||
import_biblios_list($template, $import_batch_id, $offset, $results_per_page); |
|||
} elsif ($op eq "revert-batch") { |
|||
revert_batch($template, $import_batch_id); |
|||
import_biblios_list($template, $import_batch_id, $offset, $results_per_page); |
|||
} elsif ($op eq "clean-batch") { |
|||
; |
|||
} |
|||
|
|||
output_html_with_http_headers $input, $cookie, $template->output; |
|||
|
|||
exit 0; |
|||
|
|||
sub import_batches_list { |
|||
my ($template, $offset, $results_per_page) = @_; |
|||
my $batches = GetImportBatchRangeDesc($offset, $results_per_page); |
|||
|
|||
my @list = (); |
|||
foreach my $batch (@$batches) { |
|||
push @list, { |
|||
import_batch_id => $batch->{'import_batch_id'}, |
|||
num_biblios => $batch->{'num_biblios'}, |
|||
num_items => $batch->{'num_items'}, |
|||
upload_timestamp => $batch->{'upload_timestamp'}, |
|||
import_status => $batch->{'import_status'}, |
|||
file_name => $batch->{'file_name'}, |
|||
comments => $batch->{'comments'} |
|||
}; |
|||
} |
|||
$template->param(batch_list => \@list); |
|||
my $num_batches = GetNumberOfNonZ3950ImportBatches(); |
|||
add_page_numbers($template, $offset, $results_per_page, $num_batches); |
|||
$template->param(offset => $offset); |
|||
$template->param(range_top => $offset + $results_per_page - 1); |
|||
$template->param(num_results => $num_batches); |
|||
$template->param(results_per_page => $results_per_page); |
|||
|
|||
} |
|||
|
|||
sub commit_batch { |
|||
my ($template, $import_batch_id) = @_; |
|||
my ($num_added, $num_updated, $num_ignored) = BatchCommitBibRecords($import_batch_id); |
|||
$template->param(did_commit => 1); |
|||
$template->param(num_added => $num_added); |
|||
$template->param(num_updated => $num_updated); |
|||
$template->param(num_ignored => $num_ignored); |
|||
} |
|||
|
|||
sub revert_batch { |
|||
my ($template, $import_batch_id) = @_; |
|||
my ($num_deleted, $num_errors, $num_reverted, $num_ignored) = BatchRevertBibRecords($import_batch_id); |
|||
$template->param(did_revert => 1); |
|||
$template->param(num_deleted => $num_deleted); |
|||
$template->param(num_errors => $num_errors); |
|||
$template->param(num_reverted => $num_reverted); |
|||
$template->param(num_ignored => $num_ignored); |
|||
} |
|||
|
|||
sub import_biblios_list { |
|||
my ($template, $import_batch_id, $offset, $results_per_page) = @_; |
|||
|
|||
my $batch = GetImportBatch($import_batch_id); |
|||
my $biblios = GetImportBibliosRange($import_batch_id, $offset, $results_per_page); |
|||
my @list = (); |
|||
foreach my $biblio (@$biblios) { |
|||
my $citation = $biblio->{'title'}; |
|||
$citation .= " $biblio->{'author'}" if $biblio->{'author'}; |
|||
$citation .= " (" if $biblio->{'issn'} or $biblio->{'isbn'}; |
|||
$citation .= $biblio->{'isbn'} if $biblio->{'isbn'}; |
|||
$citation .= ", " if $biblio->{'issn'} and $biblio->{'isbn'}; |
|||
$citation .= $biblio->{'issn'} if $biblio->{'issn'}; |
|||
$citation .= ")" if $biblio->{'issn'} or $biblio->{'isbn'}; |
|||
my $match = GetImportRecordMatches($biblio->{'import_record_id'}, 1); |
|||
push @list, { |
|||
import_record_id => $biblio->{'import_record_id'}, |
|||
citation => $citation, |
|||
status => $biblio->{'status'}, |
|||
record_sequence => $biblio->{'record_sequence'}, |
|||
overlay_status => $biblio->{'overlay_status'}, |
|||
match_biblionumber => $#$match > -1 ? $match->[0]->{'biblionumber'} : 0, |
|||
match_citation => $#$match > -1 ? $match->[0]->{'title'} . ' ' . $match->[0]->{'author'} : '', |
|||
match_score => $#$match > -1 ? $match->[0]->{'score'} : 0, |
|||
}; |
|||
} |
|||
my $num_biblios = $batch->{'num_biblios'}; |
|||
$template->param(biblio_list => \@list); |
|||
add_page_numbers($template, $offset, $results_per_page, $num_biblios); |
|||
$template->param(offset => $offset); |
|||
$template->param(range_top => $offset + $results_per_page - 1); |
|||
$template->param(num_results => $num_biblios); |
|||
$template->param(results_per_page => $results_per_page); |
|||
$template->param(import_batch_id => $import_batch_id); |
|||
batch_info($template, $batch); |
|||
|
|||
} |
|||
|
|||
sub batch_info { |
|||
my ($template, $batch) = @_; |
|||
$template->param(batch_info => 1); |
|||
$template->param(file_name => $batch->{'file_name'}); |
|||
$template->param(comments => $batch->{'comments'}); |
|||
$template->param(import_status => $batch->{'import_status'}); |
|||
$template->param(upload_timestamp => $batch->{'upload_timestamp'}); |
|||
$template->param(num_biblios => $batch->{'num_biblios'}); |
|||
$template->param(num_items => $batch->{'num_biblios'}); |
|||
if ($batch->{'import_status'} eq 'staged' or $batch->{'import_status'} eq 'reverted') { |
|||
$template->param(can_commit => 1); |
|||
} |
|||
if ($batch->{'import_status'} eq 'imported') { |
|||
$template->param(can_revert => 1); |
|||
} |
|||
} |
|||
|
|||
sub add_page_numbers { |
|||
my ($template, $offset, $results_per_page, $total_results) = @_; |
|||
my $max_pages = POSIX::ceil($total_results / $results_per_page); |
|||
return if $max_pages < 2; |
|||
my $current_page = int($offset / $results_per_page) + 1; |
|||
my @pages = (); |
|||
for (my $i = 1; $i <= $max_pages; $i++) { |
|||
push @pages, { |
|||
page_number => $i, |
|||
current_page => ($current_page == $i) ? 1 : 0, |
|||
offset => ($i - 1) * $results_per_page |
|||
} |
|||
} |
|||
$template->param(pages => \@pages); |
|||
} |
|||
|
Loading…
Reference in new issue