Bug 13662: Fix the serials.receive_serials permissions
authorJonathan Druart <jonathan.druart@biblibre.com>
Tue, 3 Feb 2015 12:25:47 +0000 (13:25 +0100)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Fri, 5 Jun 2015 15:53:09 +0000 (12:53 -0300)
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>

koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc
koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
serials/serials-edit.pl

index d02781a..f1d6547 100644 (file)
         });
        //]]>
        </script>
-<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>
+[% 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 %]
-    [% 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 %]
+        [% 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 %]
+        [% 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 %]
-    [% END %]
-</div>
+    </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 %]
+    </div>
+[% END %]
index 723f31e..4418baf 100644 (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 ) %]
index 1b7d2ed..8df489d 100755 (executable)
@@ -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;