cb01b25330
Includes: * code factorization Some code from subscription & Mana-KB has been factorized in order to speed-up next developments * SytemPreferences: Mana Activation: - add a value "no, let me think about it", that is the default value. - as long as this value is selected, messages ask if user want to activate it ( in Administration and Add-subscription(page 2) ) AutoShareWithMana - Add the syspref AutoShareWithMana: user can automatically share infos with Mana-KB (not set by default) * Interface : - On mana-search, rows are now sorted by date of last import, then by number of users - Windows redesigned to improve the user experience * New Feature : report a mistake. - people can now report an invalid data (wrong, obsolete,...) - if a data is reported as invalid many time, it will appear differently - Added few tooltip (to explain the fields last import, nb of users, to explain the new feature) - When reporting a data as invalid, a comment can also be added. Koha will then display comments related to data in result lists * API (svc/mana) - add svc/mana/addvaluetofield: allows to ask mana incrementing a field of a resource - no hardcoding for resources in the code of api (api needs to be called with a ressourcename) * New feature : SQL report sharing - Create Koha::Report.pm and Koha::Reports.pm, objects class for Reports - New feature: share reports with Mana-KB - New feature: search report in Mana-KB with keywords - New feature: load reports from Mana-KB Test plan: 1 - Apply Patch + update database 2 - Copy the three lines about mana config in etc/koha-conf.xml in ../etc/koha-conf.xml (after <backupdir> for example) <!-- URL of the mana KB server --> <!-- alternative value http://mana-test.koha-community.org to query the test server --> <mana_config>https://mana-kb.koha-community.org</mana_config> 3 - Check Mana syspref and AutoShareWithMana syspref are not activated 4 - Search the syspref ManaToken and follow the instructions 5 - subscriptions - Try create a new subscription for a first serial => Mana-KB shouldn't show you anything (except if the base hase been filled) - Share this serial with Mana-KB (on the serial individual's page there must be a Share button) - Try to create a new subscription for serial nr1 => a message should appear when you click on "next", click on "use", the fields should automaticaly appear - Activate AutoShareWithMana => Subscriptions - Create a new subscription for a second serial - There shouldn't be any Share button - Create a second subscription => the message should appear, click again on use 6 - SQL Report - Create a new SQL report, without notes. - On the table with all report (reports > use saved), there should be the action "Share" - If you click on share, you have an error message - Create a new report, with a title and notes longer than 20 characters - You can share it with mana => you will have a success message - On (report > use saved), there must be a message inviting you to search on Mana-KB for more results, enter a few word from title, notes, type of the report you shared, it should appear. You can use it, it will load it into your report list. 7 - Report mistakes. - On any table containing Mana-KB search results, you can report a mistake and add a comment. 8 - For each previous test, try to send wrong data, to delete the security token, to send nothing: it should show a correct warning message. Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Rebased-by: Alex Arnaud <alex.arnaud@biblibre.com> (2018-07-04) Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
206 lines
7.1 KiB
Perl
Executable file
206 lines
7.1 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Copyright 2012 Koha Team
|
|
#
|
|
# 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 3 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, see <http://www.gnu.org/licenses>.
|
|
|
|
|
|
=head1 NAME
|
|
|
|
serials-search.pl
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
this script is the search page for serials
|
|
|
|
=cut
|
|
|
|
use Modern::Perl;
|
|
use CGI qw ( -utf8 );
|
|
use C4::Auth;
|
|
use C4::Context;
|
|
use C4::Koha qw( GetAuthorisedValues );
|
|
use C4::Output;
|
|
use C4::Serials;
|
|
use Koha::AdditionalField;
|
|
|
|
use Koha::DateUtils;
|
|
use Koha::SharedContent;
|
|
|
|
my $query = new CGI;
|
|
my $title = $query->param('title_filter') || '';
|
|
my $ISSN = $query->param('ISSN_filter') || '';
|
|
my $EAN = $query->param('EAN_filter') || '';
|
|
my $callnumber = $query->param('callnumber_filter') || '';
|
|
my $publisher = $query->param('publisher_filter') || '';
|
|
my $bookseller = $query->param('bookseller_filter') || '';
|
|
my $biblionumber = $query->param('biblionumber') || '';
|
|
my $branch = $query->param('branch_filter') || '';
|
|
my $location = $query->param('location_filter') || '';
|
|
my $expiration_date = $query->param('expiration_date_filter') || '';
|
|
my $routing = $query->param('routing') || C4::Context->preference("RoutingSerials");
|
|
my $searched = $query->param('searched') || 0;
|
|
my $mana = $query->param('mana') || 0;
|
|
my @subscriptionids = $query->multi_param('subscriptionid');
|
|
my $op = $query->param('op');
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "serials/serials-search.tt",
|
|
query => $query,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => { serials => '*' },
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
if ( $op and $op eq "close" ) {
|
|
for my $subscriptionid ( @subscriptionids ) {
|
|
C4::Serials::CloseSubscription( $subscriptionid );
|
|
}
|
|
} elsif ( $op and $op eq "reopen" ) {
|
|
for my $subscriptionid ( @subscriptionids ) {
|
|
C4::Serials::ReopenSubscription( $subscriptionid );
|
|
}
|
|
}
|
|
|
|
|
|
my $additional_fields = Koha::AdditionalField->all( { tablename => 'subscription', searchable => 1 } );
|
|
my $additional_field_filters;
|
|
for my $field ( @$additional_fields ) {
|
|
my $filter_value = $query->param('additional_field_' . $field->{id} . '_filter');
|
|
if ( defined $filter_value and $filter_value ne q|| ) {
|
|
$additional_field_filters->{ $field->{name} } = {
|
|
value => $filter_value,
|
|
authorised_value_category => $field->{authorised_value_category},
|
|
};
|
|
}
|
|
if ( $field->{authorised_value_category} ) {
|
|
$field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} );
|
|
}
|
|
}
|
|
|
|
my $expiration_date_dt = $expiration_date ? dt_from_string( $expiration_date ) : undef;
|
|
my @subscriptions;
|
|
my $mana_statuscode;
|
|
if ($searched){
|
|
if ($mana) {
|
|
my $result = Koha::SharedContent::search_entities("subscription",{
|
|
title => $title,
|
|
issn => $ISSN,
|
|
ean => $EAN,
|
|
publisher => $publisher
|
|
});
|
|
$mana_statuscode = $result->{code};
|
|
@subscriptions = @{ $result->{data} };
|
|
}
|
|
else {
|
|
@subscriptions = SearchSubscriptions(
|
|
{
|
|
biblionumber => $biblionumber,
|
|
title => $title,
|
|
issn => $ISSN,
|
|
ean => $EAN,
|
|
callnumber => $callnumber,
|
|
publisher => $publisher,
|
|
bookseller => $bookseller,
|
|
branch => $branch,
|
|
additional_fields => [ map{ { name => $_, value => $additional_field_filters->{$_}{value}, authorised_value_category => $additional_field_filters->{$_}{authorised_value_category} } } keys %$additional_field_filters ],
|
|
location => $location,
|
|
expiration_date => $expiration_date_dt,
|
|
});
|
|
}
|
|
}
|
|
|
|
if ($mana) {
|
|
$template->param(
|
|
subscriptions => \@subscriptions,
|
|
statuscode => $mana_statuscode,
|
|
total => scalar @subscriptions,
|
|
title_filter => $title,
|
|
ISSN_filter => $ISSN,
|
|
EAN_filter => $EAN,
|
|
callnumber_filter => $callnumber,
|
|
publisher_filter => $publisher,
|
|
bookseller_filter => $bookseller,
|
|
branch_filter => $branch,
|
|
location_filter => $location,
|
|
expiration_date_filter => $expiration_date_dt,
|
|
done_searched => $searched,
|
|
routing => $routing,
|
|
additional_field_filters => $additional_field_filters,
|
|
additional_fields_for_subscription => $additional_fields,
|
|
marcflavour => (uc(C4::Context->preference("marcflavour"))),
|
|
mana => $mana,
|
|
search_only => 1
|
|
);
|
|
}
|
|
else
|
|
{
|
|
# to toggle between create or edit routing list options
|
|
if ($routing) {
|
|
for my $subscription ( @subscriptions) {
|
|
$subscription->{routingedit} = check_routing( $subscription->{subscriptionid} );
|
|
}
|
|
}
|
|
|
|
my (@openedsubscriptions, @closedsubscriptions);
|
|
for my $sub ( @subscriptions ) {
|
|
unless ( $sub->{closed} ) {
|
|
push @openedsubscriptions, $sub
|
|
unless $sub->{cannotdisplay};
|
|
} else {
|
|
push @closedsubscriptions, $sub
|
|
unless $sub->{cannotdisplay};
|
|
}
|
|
}
|
|
|
|
my @branches = Koha::Libraries->search( {}, { order_by => ['branchcode'] } );
|
|
my @branches_loop;
|
|
foreach my $b ( @branches ) {
|
|
my $selected = 0;
|
|
$selected = 1 if( defined $branch and $branch eq $b->branchcode );
|
|
push @branches_loop, {
|
|
branchcode => $b->branchcode,
|
|
branchname => $b->branchname,
|
|
selected => $selected,
|
|
};
|
|
}
|
|
|
|
$template->param(
|
|
openedsubscriptions => \@openedsubscriptions,
|
|
closedsubscriptions => \@closedsubscriptions,
|
|
total => @openedsubscriptions + @closedsubscriptions,
|
|
title_filter => $title,
|
|
ISSN_filter => $ISSN,
|
|
EAN_filter => $EAN,
|
|
callnumber_filter => $callnumber,
|
|
publisher_filter => $publisher,
|
|
bookseller_filter => $bookseller,
|
|
branch_filter => $branch,
|
|
location_filter => $location,
|
|
expiration_date_filter => $expiration_date_dt,
|
|
branches_loop => \@branches_loop,
|
|
done_searched => $searched,
|
|
routing => $routing,
|
|
additional_field_filters => $additional_field_filters,
|
|
additional_fields_for_subscription => $additional_fields,
|
|
marcflavour => (uc(C4::Context->preference("marcflavour"))),
|
|
mana => $mana
|
|
);
|
|
}
|
|
output_html_with_http_headers $query, $cookie, $template->output;
|