Bug 13662: Fix the serials.receive_serials permissions

There are some issues with serial permissions.
For instance it's not possible to receive serials if the
edit_subscription is not set.
Also the toolbar is empty.

Test plan:
1/ Set the serials => receive_serials permissions to a patron (and only
this one for the serials module).
2/ Verify you cannot create a new subscription, you can search
subscriptions but cannot edit them.
3/ On the serial result list, receive a serial (action > Serial
receive).
You can now change the status and receive it.
4/ On the serial collection, you can edit 1+ serials to reveice it.
5/ Set the serials => edit_subscription permission and confirm there is
no regression.

QA note: I think we should introduce a C4::Serials::can_receive_serials
subroutine, to test the IndependentBranches pref, but I don't want to
add to much processing to check permissions.

Signed-off-by: Paola Rossi <paola.rossi@cineca.it>

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2015-02-03 13:25:47 +01:00 committed by Tomas Cohen Arazi
parent 8e9f89e92b
commit e604097740
3 changed files with 52 additions and 50 deletions

View File

@ -34,58 +34,59 @@
});
//]]>
</script>
<div id="toolbar" class="btn-toolbar">
[% IF ( CAN_user_serials_create_subscription ) %]
[% IF subscriptionid and ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription || CAN_user_serials_receive_serials ) %]
<div id="toolbar" class="btn-toolbar">
[% IF CAN_user_serials_create_subscription %]
[% IF biblionumber_for_new_subscription %]
<div class="btn-group"><a id="newsubscription" class="btn btn-small" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=[% biblionumber_for_new_subscription %]"><i class="icon-plus"></i> New subscription</a></div>
[% ELSE %]
<div class="btn-group"><a id="newsubscription" class="btn btn-small" href="/cgi-bin/koha/serials/subscription-add.pl"><i class="icon-plus"></i> New subscription</a></div>
[% END %]
[% END %]
[% IF ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription ) %]
[% UNLESS ( cannotedit ) %]
<div class="btn-group">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><i class="icon-pencil"></i> Edit <span class="caret"></span></button>
<ul class="dropdown-menu">
[% IF ( cannotedit ) %] <li class="disabled"> [% ELSE %]
<li> [% END %]
<a href="/cgi-bin/koha/serials/subscription-add.pl?op=modify&amp;subscriptionid=[% subscriptionid %]">Edit subscription</a></li>
[% IF ( cannotedit ) %] <li class="disabled"> [% ELSE %]
<li> [% END %]
<a href="/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=[% subscriptionid %]">Edit as new (duplicate)</a></li>
[% IF ( CAN_user_serials_delete_subscription ) %]
[% IF ( cannotedit ) %] <li class="disabled"> [% ELSE %]
<li> [% END %]
<a href="#" id="deletesub">Delete subscription</a></li>[% END %]
</ul>
</div>
[% END %]
[% END %]
[% IF not cannotedit or CAN_user_serials_receive_serials %]
[% IF CAN_user_serials_renew_subscription and not closed %]
<div class="btn-group"><a id="renew" class="btn btn-small" href="#" onclick="popup([% subscriptionid %])"><i class="icon-refresh"></i> Renew</a></div>
[% END %]
[% IF CAN_user_serials_receive_serials and not closed %]
<div class="btn-group"><a id="receive" class="btn btn-small" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscriptionid %]&amp;serstatus=1,3"><i class="icon-inbox"></i> Receive</a></div>
[% END %]
[% UNLESS cannotedit %]
[% IF closed %]
<div class="btn-group"><a id="reopen" class="btn btn-small" href="#"><i class="icon-repeat"></i> Reopen</a></div>
[% ELSE %]
<div class="btn-group"><a id="close" class="btn btn-small" href="#"><i class="icon-remove-circle"></i> Close</a></div>
[% END %]
[% END %]
[% END %]
</div>
[% ELSIF CAN_user_serials_create_subscription %]
<div id="toolbar" class="btn-toolbar">
[% IF ( biblionumber_for_new_subscription ) %]
<div class="btn-group"><a id="newsubscription" class="btn btn-small" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=[% biblionumber_for_new_subscription %]"><i class="icon-plus"></i> New subscription</a></div>
[% ELSE %]
<div class="btn-group"><a id="newsubscription" class="btn btn-small" href="/cgi-bin/koha/serials/subscription-add.pl"><i class="icon-plus"></i> New subscription</a></div>
[% END %]
[% END %]
[% IF ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription ) %]
[% IF ( subscriptionid ) %]
[% IF ( CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription ) %]
[% UNLESS ( cannotedit ) %]
<div class="btn-group">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown"><i class="icon-pencil"></i> Edit <span class="caret"></span></button>
<ul class="dropdown-menu">
[% IF ( cannotedit ) %] <li class="disabled"> [% ELSE %]
<li> [% END %]
<a href="/cgi-bin/koha/serials/subscription-add.pl?op=modify&amp;subscriptionid=[% subscriptionid %]">Edit subscription</a></li>
[% IF ( cannotedit ) %] <li class="disabled"> [% ELSE %]
<li> [% END %]
<a href="/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=[% subscriptionid %]">Edit as new (duplicate)</a></li>
[% IF ( CAN_user_serials_delete_subscription ) %]
[% IF ( cannotedit ) %] <li class="disabled"> [% ELSE %]
<li> [% END %]
<a href="#" id="deletesub">Delete subscription</a></li>[% END %]
</ul>
</div>
[% END %]
[% END %]
[% UNLESS ( cannotedit ) %]
[% UNLESS closed %]
[% IF ( CAN_user_serials_renew_subscription ) %]
<div class="btn-group"><a id="renew" class="btn btn-small" href="#" onclick="popup([% subscriptionid %])"><i class="icon-refresh"></i> Renew</a></div>
[% END %]
[% END %]
[% IF ( CAN_user_serials_receive_serials ) %]
[% UNLESS closed %]
<div class="btn-group"><a id="receive" class="btn btn-small" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscriptionid %]&amp;serstatus=1,3"><i class="icon-inbox"></i> Receive</a></div>
[% END %]
[% END %]
[% IF CAN_user_serials_edit_subscription %]
[% IF closed %]
<div class="btn-group"><a id="reopen" class="btn btn-small" href="#"><i class="icon-repeat"></i> Reopen</a></div>
[% ELSE %]
<div class="btn-group"><a id="close" class="btn btn-small" href="#"><i class="icon-remove-circle"></i> Close</a></div>
[% END %]
[% END %]
[% END %]
[% END %]
[% END %]
</div>
</div>
[% END %]

View File

@ -223,7 +223,7 @@ $(document).ready(function() {
[% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %]
[% IF ( CAN_user_serials_receive_serials ) %]
<td>
[% IF ( serial.cannotedit ) %]
[% UNLESS CAN_user_serials_receive_serials %]
disabled
[% ELSE %]
[% IF ( serial.subscriptionexpired ) %]

View File

@ -154,6 +154,7 @@ foreach my $serialid (@serialids) {
)
|| $serinfo->{'cannotedit'}
);
$serinfo->{editdisable} = 0 if C4::Auth::haspermission( C4::Context->userenv->{id}, { serials => 'receive_serials' } );
$serinfo->{editdisable} ||= ($serinfo->{status8} and $serinfo->{closed});
push @serialdatalist, $serinfo;
$processedserialid{$serialid} = 1;