[% USE Asset %]
[% USE AuthorisedValues %]
[% USE Branches %]
+[% USE CGI %]
[% USE KohaDates %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
[% BLOCK subscriptions_table %]
- <table id="osrlt">
+ <form method="post">
+
+ [% url_params = [] %]
+ [% FOREACH param IN CGI.params.pairs %]
+ [% escaped_value = BLOCK %][% param.value | uri %][% END %]
+ [% url_params.push(param.key _ '=' _ escaped_value) %]
+ [% END %]
+ <input type="hidden" name="referrer" value="/cgi-bin/koha/serials/serials-search.pl?[% url_params.join('&') %]"/>
+
+ <div class="actions">
+ <a class="select-all" href="#"><i class="fa fa-check"></i> Select all</a>
+ |
+ <a class="clear-all" href="#"><i class="fa fa-remove"></i> Clear all</a>
+ |
+ <button class="btn btn-default btn-xs" type="submit" formaction="/cgi-bin/koha/serials/subscription-batchedit.pl"><i class="fa fa-pencil"></i> Edit</button>
+ </div>
+ <table>
<thead>
<tr>
+ <th></th>
<th>ISSN</th>
<th class="anti-the">Title</th>
<th>Notes</th>
</thead>
<tfoot>
<tr>
+ <td></td>
<td><input type="text" class="dt-filter" data-column_num="0" placeholder="Search ISSN" /></td>
<td><input type="text" class="dt-filter" data-column_num="1" placeholder="Search title" /></td>
<td><input type="text" class="dt-filter" data-column_num="2" placeholder="Search notes" /></td>
[% FOREACH subscription IN subscriptions %]
[% UNLESS subscription.cannotdisplay %]
<tr>
+ <td><input type="checkbox" name="subscriptionid" value="[% subscription.subscriptionid %]"/></td>
<td>
[% IF ( subscription.issn ) %][% subscription.issn %]
[% END %]
[% END %]
</tbody>
</table>
+ </form>
[% END %]
<div id="doc3" class="yui-t2">
$("#reopensub").click(function(){
return confirm(_("Are you sure you want to reopen this subscription?"));
});
+
+ $('.select-all, .clear-all').on('click', function(e) {
+ e.preventDefault();
+ var checkboxes = $(this).parents('form').find('input[type="checkbox"]');
+ checkboxes.prop('checked', $(this).hasClass('select-all'));
+ });
});
</script>
[% END %]
--- /dev/null
+[% USE AuthorisedValues %]
+[% USE Branches %]
+[% USE ItemTypes %]
+[% USE KohaDates %]
+[% INCLUDE 'doc-head-open.inc' %]
+ <title>Koha › Serials › Batch edit</title>
+ [% INCLUDE 'doc-head-close.inc' %]
+ [% INCLUDE 'calendar.inc' %]
+</head>
+<body id="ser_subscription-batchedit" class="ser">
+ [% INCLUDE 'header.inc' %]
+ [% INCLUDE 'serials-search.inc' %]
+
+ <div id="breadcrumbs">
+ <a href="/cgi-bin/koha/mainpage.pl">Home</a>
+ ›
+ <a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a>
+ ›
+ Batch edit
+ </div>
+
+ <div id="doc3" class="yui-t2">
+ <div id="bd">
+ <div id="yui-main">
+ <div class="yui-b">
+ <h1>Subscription batch edit</h1>
+
+ <div>
+ <p>You are about to edit the following subscriptions:</p>
+ <table>
+ <thead>
+ <tr>
+ <th>ISSN</th>
+ <th>Title</th>
+ <th>Notes</th>
+ <th>Library</th>
+ <th>Location</th>
+ <th>Call number</th>
+ <th>Expiration date</th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOREACH subscription IN subscriptions %]
+ <tr>
+ <td>[% subscription.biblio.biblioitem.issn %]</td>
+ <td><a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscription.subscriptionid %]">[% subscription.biblio.title %] (#[% subscription.subscriptionid %])</a></td>
+ <td>[% subscription.notes %] [% IF subscription.internalnotes %]([% subscription.internalnotes %])[% END %]</td>
+ <td>[% Branches.GetName(subscription.branchcode) %]</td>
+ <td>[% AuthorisedValues.GetByCode('LOC', subscription.location) %]</td>
+ <td>[% subscription.callnumber %]</td>
+ <td>[% subscription.enddate | $KohaDates %]</td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+ </div>
+
+ <form method="post">
+ [% FOREACH subscription IN subscriptions %]
+ <input type="hidden" name="subscriptionid" value="[% subscription.subscriptionid %]"/>
+ [% END %]
+ [% IF referrer %]
+ <input type="hidden" name="referrer" value="[% referrer %]"/>
+ [% END %]
+ <fieldset class="rows">
+ <ol>
+ <li>
+ <label for="booksellerid">Bookseller</label>
+ <select id="booksellerid" name="booksellerid">
+ <option value="">No change</option>
+ [% FOREACH bookseller IN booksellers %]
+ <option value="[% bookseller.id %]">[% bookseller.name %]</option>
+ [% END %]
+ </select>
+ </li>
+ <li>
+ <label for="location">Location</label>
+ <select id="location" name="location">
+ <option value="">No change</option>
+ [% FOREACH av IN AuthorisedValues.Get('LOC') %]
+ <option value="[% av.authorised_value | html %]">[% av.lib %]</option>
+ [% END %]
+ </select>
+ </li>
+ <li>
+ <label for="branchcode">Library</label>
+ <select id="branchcode" name="branchcode">
+ <option value="">No change</option>
+ [% FOREACH branch IN Branches.all %]
+ <option value="[% branch.branchcode | html %]">[% branch.branchname %]</option>
+ [% END %]
+ </select>
+ </li>
+ <li>
+ <label for="itemtype">Item type</label>
+ <select id="itemtype" name="itemtype">
+ <option value="">No change</option>
+ [% FOREACH itemtype IN ItemTypes.Get() %]
+ <option value="[% itemtype.itemtype %]">[% itemtype.description %]</option>
+ [% END %]
+ </select>
+ </li>
+ <li>
+ <label for="notes">Public note</label>
+ <textarea id="notes" name="notes" placeholder="No change"></textarea>
+ </li>
+ <li>
+ <label for="internalnotes">Nonpublic note</label>
+ <textarea id="internalnotes" name="internalnotes" placeholder="No change"></textarea>
+ </li>
+ <li>
+ <label for="serialsadditems">Create item when receiving</label>
+ <select id="serialsadditems" name="serialsadditems">
+ <option value="">No change</option>
+ <option value="0">No</option>
+ <option value="1">Yes</option>
+ </select>
+
+ </li>
+ <li>
+ <label for="enddate">Expiration date</label>
+ <input type="date" class="datepicker" id="enddate" name="enddate" placeholder="No change"/>
+ </li>
+ [% FOREACH field IN additional_fields %]
+ <li>
+ <label for="field_[% field.id %]">[% field.name %]</label>
+ [% IF field.authorised_value_category %]
+ <select id="field_[% field.id %]" name="field_[% field.id %]">
+ <option value="">No change</option>
+ [% FOREACH av IN AuthorisedValues.Get(field.authorised_value_category) %]
+ <option value="[% av.authorised_value %]">[% av.lib %]</option>
+ [% END %]
+ </select>
+ [% ELSE %]
+ <input id="field_[% field.id %]" name="field_[% field.id %]" placeholder="No change"/>
+ [% END %]
+ </li>
+ [% END %]
+ </ol>
+ </fieldset>
+
+ <fieldset class="action">
+ <button type="submit" name="batchedit" value="1">Start batch edit</button>
+ </fieldset>
+ </form>
+ </div>
+ </div>
+ <div class="yui-b">
+ [% INCLUDE 'serials-menu.inc' %]
+ </div>
+ </div>
+
+ [% INCLUDE 'intranet-bottom.inc' %]
--- /dev/null
+#!/usr/bin/perl
+
+# Copyright 2017 BibLibre
+#
+# 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>.
+
+use Modern::Perl;
+
+use CGI qw( -utf8 );
+
+use C4::Auth;
+use C4::Output;
+use Koha::Subscriptions;
+use Koha::Acquisition::Booksellers;
+use Koha::AdditionalField;
+use Koha::DateUtils;
+
+my $cgi = new CGI;
+
+my ($template, $loggedinuser, $cookie) = get_template_and_user({
+ template_name => 'serials/subscription-batchedit.tt',
+ query => $cgi,
+ type => 'intranet',
+ authnotrequired => 0,
+ flagsrequired => {serials => 'edit_subscription'},
+});
+
+my @subscriptionids = $cgi->multi_param('subscriptionid');
+
+my @subscriptions;
+foreach my $subscriptionid (@subscriptionids) {
+ my $subscription = Koha::Subscriptions->find($subscriptionid);
+
+ push @subscriptions, $subscription if $subscription;
+}
+
+my $additional_fields = Koha::AdditionalField->all({tablename => 'subscription'});
+
+my $batchedit = $cgi->param('batchedit');
+if ($batchedit) {
+ my %params = (
+ aqbooksellerid => scalar $cgi->param('booksellerid'),
+ location => scalar $cgi->param('location'),
+ branchcode => scalar $cgi->param('branchcode'),
+ itemtype => scalar $cgi->param('itemtype'),
+ notes => scalar $cgi->param('notes'),
+ internalnotes => scalar $cgi->param('internalnotes'),
+ serialsadditems => scalar $cgi->param('serialsadditems'),
+ enddate => dt_from_string(scalar $cgi->param('enddate')),
+ );
+
+ my $field_values = {};
+ foreach my $field (@$additional_fields) {
+ my $value = $cgi->param('field_' . $field->{id});
+ $field_values->{$field->{id}} = $value;
+ }
+
+ foreach my $subscription (@subscriptions) {
+ while (my ($key, $value) = each %params) {
+ if (defined $value and $value ne '') {
+ $subscription->$key($value);
+ }
+ }
+
+ foreach my $field (@$additional_fields) {
+ my $value = $field_values->{$field->{id}};
+ if (defined $value and $value ne '') {
+ $field->{values} //= {};
+ $field->{values}->{$subscription->subscriptionid} = $value;
+ }
+ }
+
+ $subscription->store;
+ }
+
+ foreach my $field (@$additional_fields) {
+ if (defined $field->{values}) {
+ $field->insert_values();
+ }
+ }
+
+ my $redirect_url = $cgi->param('referrer') // '/cgi-bin/koha/serials/serials-home.pl';
+ print $cgi->redirect($redirect_url);
+ exit;
+}
+
+$template->param(
+ subscriptions => \@subscriptions,
+ booksellers => [ Koha::Acquisition::Booksellers->search() ],
+ additional_fields => $additional_fields,
+ referrer => scalar $cgi->param('referrer'),
+);
+
+output_html_with_http_headers $cgi, $cookie, $template->output;