[Koha-patches] [PATCH 3/5] MT 1816: Granular permissions for the serials module

Henri-Damien LAURENT henridamien.laurent at biblibre.com
Thu May 27 22:03:38 CEST 2010


Signed-off-by: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>
---
 .../data/mysql/en/mandatory/userpermissions.sql    |    8 +++
 .../mysql/fr-FR/1-Obligatoire/userpermissions.sql  |    9 +++-
 .../intranet-tmpl/prog/en/includes/mainmenu.inc    |    4 ++
 .../prog/en/includes/serials-menu.inc              |   15 ++++-
 .../prog/en/includes/serials-toolbar.inc           |   56 ++++++++++++++------
 .../prog/en/modules/serials/serials-home.tmpl      |    2 +-
 .../prog/en/modules/serials/subscription-add.tmpl  |   11 +++-
 serials/acqui-search-result.pl                     |    2 +-
 serials/acqui-search.pl                            |    2 +-
 serials/checkexpiration.pl                         |    2 +-
 serials/claims.pl                                  |    2 +-
 serials/member-search.pl                           |   17 ++++---
 serials/routing-preview.pl                         |    4 +-
 serials/routing.pl                                 |    2 +-
 serials/serial-issues.pl                           |    2 +-
 serials/serials-collection.pl                      |    2 +-
 serials/serials-edit.pl                            |    2 +-
 serials/serials-home.pl                            |    2 +-
 serials/statecollection.pl                         |    2 +-
 serials/subscription-add.pl                        |    8 +++-
 serials/subscription-bib-search.pl                 |   16 ++++--
 serials/subscription-detail.pl                     |   37 ++++++++-----
 serials/subscription-renew.pl                      |    2 +-
 serials/viewalerts.pl                              |    2 +-
 24 files changed, 148 insertions(+), 63 deletions(-)

diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql b/installer/data/mysql/en/mandatory/userpermissions.sql
index 287d9da..ec61ea0 100644
--- a/installer/data/mysql/en/mandatory/userpermissions.sql
+++ b/installer/data/mysql/en/mandatory/userpermissions.sql
@@ -36,6 +36,14 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    (13, 'manage_csv_profiles', 'Manage CSV export profiles'),
    (13, 'moderate_tags', 'Moderate patron tags'),
    (13, 'rotating_collections', 'Manage rotating collections'),
+   (15, 'check_expiration', 'Check the expiration of a serial'),
+   (15, 'claim_serials', 'Claim missing serials'),
+   (15, 'create_subscription', 'Create a new subscription'),
+   (15, 'delete_subscription', 'Delete an existing subscription'),
+   (15, 'edit_subscription', 'Edit an existing subscription'),
+   (15, 'receive_serials', 'Serials receiving'),
+   (15, 'renew_subscription', 'Renew a subscription'),
+   (15, 'routing', 'Routing'),
    (16, 'execute_reports', 'Execute SQL reports'),
    (16, 'create_reports', 'Create SQL Reports')
 ;
diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql
index a300256..2e56f4e 100644
--- a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql
+++ b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql
@@ -36,7 +36,14 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    (13, 'rotating_collections', 'Gérer les collections tournantes'),
    (13, 'batchmod', 'Modifier les exemplaires par lot'),
    (13, 'batchdel', 'Supprimer les exemplaires par lot'),
+   (15, 'check_expiration', 'Check the expiration of a serial'),
+   (15, 'claim_serials', 'Claim missing serials'),
+   (15, 'create_subscription', 'Create a new subscription'),
+   (15, 'delete_subscription', 'Delete an existing subscription'),
+   (15, 'edit_subscription', 'Edit an existing subscription'),
+   (15, 'receive_serials', 'Serials receiving'),
+   (15, 'renew_subscription', 'Renew a subscription'),
+   (15, 'routing', 'Routing'),
    (16, 'execute_reports', 'Lancer les rapports SQL'),
    (16, 'create_reports', 'Créer les rapports SQL Reports')
-
 ;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/mainmenu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/mainmenu.inc
index 9d41cab..87e2637 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/mainmenu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/mainmenu.inc
@@ -46,10 +46,14 @@
     <!-- TMPL_IF NAME="CAN_user_editcatalogue_edit_catalogue" -->
     <li><a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a><ul>
         <li><a href="/cgi-bin/koha/cataloguing/addbiblio.pl">Add MARC Record</a></li>
+    <!-- /TMPL_IF -->
         <li><a href="/cgi-bin/koha/authorities/authorities-home.pl">Authorities</a></li>
+    <!-- TMPL_IF NAME="CAN_user_serials" -->
         <li><a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a></li>
+    <!-- /TMPL_IF -->
     </ul></li>
     
+    <!-- TMPL_IF NAME="CAN_user_editcatalogue" -->
     <li><a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a></li>
     <!-- /TMPL_IF -->
     <!-- TMPL_IF NAME="CAN_user_reports" -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc
index 6f21f93..88e32e3 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc
@@ -1,12 +1,21 @@
 <!-- TMPL_IF NAME="subscriptionid" -->
 <ul>
 <li><a href="serials-collection.pl?subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->">Serial Collection</a></li>
-	<!-- TMPL_IF NAME="routing" --><li><a href="routing.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->">Edit Routing List</a></li><!-- TMPL_ELSE -->
-	<li><a href="routing.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->&amp;op=new">Create Routing List</a></li><!-- /TMPL_IF -->
+	<!-- TMPL_IF NAME="CAN_user_serials_routing" -->
+	    <!-- TMPL_IF NAME="routing" -->
+		<li><a href="routing.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->">Edit Routing List</a></li>
+	    <!-- TMPL_ELSE -->
+		<li><a href="routing.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->&amp;op=new">Create Routing List</a></li>
+	    <!-- /TMPL_IF -->
+	<!-- /TMPL_IF -->
 </ul>
 <!-- /TMPL_IF -->
 
 <ul>
+    <!-- TMPL_IF NAME="CAN_user_serials_claim_serials" -->
 	<li><a href="/cgi-bin/koha/serials/claims.pl">Claims</a></li>
+    <!-- /TMPL_IF -->
+    <!-- TMPL_IF NAME="CAN_user_serials_check_expiration" -->
 	<li><a href="/cgi-bin/koha/serials/checkexpiration.pl">Check Expiration</a></li>
-</ul>
\ No newline at end of file
+    <!-- /TMPL_IF -->
+</ul>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc
index b7b773c..6bed3a0 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc
@@ -17,9 +17,15 @@
 	
     <!-- TMPL_IF NAME="subscriptionid" -->
 	    var editmenu = [
-	        { text: _("Edit Subscription"),  <!-- TMPL_IF NAME="cannotedit" -->disabled: true, <!-- /TMPL_IF --> url: "/cgi-bin/koha/serials/subscription-add.pl?op=mod&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->" },
-	        { text: _("Edit as New (Duplicate)"), <!-- TMPL_IF NAME="cannotedit" -->disabled: true, <!-- /TMPL_IF --> url: "/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->" },
+	        <!-- TMPL_IF NAME="CAN_user_serials_edit_subscription" -->
+		    { text: _("Edit Subscription"),  <!-- TMPL_IF NAME="cannotedit" -->disabled: true, <!-- /TMPL_IF --> url: "/cgi-bin/koha/serials/subscription-add.pl?op=mod&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->" },
+		<!-- /TMPL_IF -->
+	        <!-- TMPL_IF NAME="CAN_user_serials_create_subscription" -->
+		    { text: _("Edit as New (Duplicate)"), <!-- TMPL_IF NAME="cannotedit" -->disabled: true, <!-- /TMPL_IF --> url: "/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->" },
+		<!-- /TMPL_IF -->
+	        <!-- TMPL_IF NAME="CAN_user_serials_delete_subscription" -->
 			{ text: _("Delete Subscription"), <!-- TMPL_IF NAME="cannotedit" -->disabled: true, <!-- /TMPL_IF --> onclick: {fn: confirm_deletion }}
+		<!-- /TMPL_IF -->
 	    ];
 	 <!-- /TMPL_IF -->
 	    new YAHOO.widget.Button("newsubscription");
@@ -50,21 +56,39 @@ onclick: {fn:function(){popup(<!--TMPL_VAR Name="subscriptionid"-->)}}
 	//]]>
 	</script>
 <ul class="toolbar">
-    <!-- TMPL_IF NAME="biblionumber_for_new_subscription" -->
-	    <li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=<!-- TMPL_VAR NAME="biblionumber_for_new_subscription" -->">New Subscription</a></li>
-    <!-- TMPL_ELSE -->
-	    <li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl">New Subscription</a></li>
+    <!-- TMPL_IF NAME="CAN_user_serials_create_subscription" -->
+	<!-- TMPL_IF NAME="biblionumber_for_new_subscription" -->
+		<li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl?biblionumber_for_new_subscription=<!-- TMPL_VAR NAME="biblionumber_for_new_subscription" -->">New Subscription</a></li>
+	<!-- TMPL_ELSE -->
+		<li><a id="newsubscription" href="/cgi-bin/koha/serials/subscription-add.pl">New Subscription</a></li>
+	<!-- /TMPL_IF -->
     <!-- /TMPL_IF -->
-    <!-- TMPL_IF NAME="subscriptionid" -->
-        <!-- TMPL_UNLESS name="cannotedit" -->
-            <li id="editmenuc"><a id="edit" href="/cgi-bin/koha/serials/subscription-add.pl?op=mod&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->">Edit</a></li>
-        <!-- /TMPL_UNLESS -->
-        <li><a id="duplicate" href="/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->">Duplicate </a></li>
-        <!-- TMPL_UNLESS name="cannotedit" -->
-            <li id="renewc"><a id="renew" href="#" onclick="popup(<!--TMPL_VAR Name="subscriptionid"-->)">Renew </a></li>
-            <li><a id="receive" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->&amp;serstatus=1,3">Receive</a></li>
-            <li><a id="delete" href="javascript:confirm_deletion()">Delete</a></li>
-        <!-- /TMPL_UNLESS -->
+
+    <!-- TMPL_IF EXPR="CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription" -->
+	<!-- TMPL_IF NAME="subscriptionid" -->
+
+	    <!-- TMPL_IF expr="CAN_user_serials_edit_subscription || CAN_user_serials_create_subscription || CAN_user_serials_delete_subscription" -->
+		<!-- TMPL_UNLESS name="cannotedit" -->
+		    <li id="editmenuc"><a id="edit" href="/cgi-bin/koha/serials/subscription-add.pl?op=mod&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->">Edit</a></li>
+		<!-- /TMPL_UNLESS -->
+	    <!-- /TMPL_IF -->
+
+	    <!-- TMPL_IF name="CAN_user_serials_create_subscription" -->
+		<li><a id="duplicate" href="/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->">Duplicate </a></li>
+	    <!-- /TMPL_IF -->
+
+	    <!-- TMPL_UNLESS name="cannotedit" -->
+		<!-- TMPL_IF name="CAN_user_serials_renew_subscription" -->
+		    <li id="renewc"><a id="renew" href="#" onclick="popup(<!--TMPL_VAR Name="subscriptionid"-->)">Renew </a></li>
+		<!-- /TMPL_IF -->
+		<!-- TMPL_IF name="CAN_user_serials_receive_serials" -->
+		    <li><a id="receive" href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->&amp;serstatus=1,3">Receive</a></li>
+		<!-- /TMPL_IF -->
+		<!-- TMPL_IF name="CAN_user_serials_delete_subscription" -->
+		    <li><a id="delete" href="javascript:confirm_deletion()">Delete</a></li>
+		<!-- /TMPL_IF -->
+	    <!-- /TMPL_UNLESS -->
+	<!-- /TMPL_IF -->
     <!-- /TMPL_IF -->
 </ul>
 </div>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tmpl
index b4158eb..dd22f10 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tmpl
@@ -129,7 +129,7 @@ Serials updated :
                 <!-- TMPL_IF NAME="cannotedit" -->
                   &nbsp;        
                 <!-- TMPL_ELSE -->
-                  <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->&amp;serstatus=1,3,7">Serial receive</a>
+                  <!-- TMPL_IF name="CAN_user_serials_receive_serials" --><a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=<!-- TMPL_VAR name="subscriptionid" -->&amp;serstatus=1,3,7">Serial receive</a><!-- /TMPL_IF -->
                 <!-- /TMPL_IF -->
                 </td>
             </tr>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
index dd8f069..5a665de 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
@@ -985,8 +985,15 @@ $(document).ready(function() {
             
                 <input type="text" name="biblionumber" id="biblionumber" value="<!-- TMPL_VAR name="bibnum" -->" size="8" /> 
                 (<input type="text" name="title" value="<!-- TMPL_VAR name="bibliotitle" -->" disabled="disabled" readonly="readonly" />) <span class="required" title="Subscriptions must be associated with a bibliographic record">Required</span>
-               <div class="inputnote"> <a href="#" onclick="Plugin(f)">Search for Biblio</a> | <!--TMPL_IF Name="mod"--><a href="#" onclick="addbiblioPopup(<!-- TMPL_VAR NAME="bibnum" -->); return false;">Edit biblio</a><!-- TMPL_ELSE -->
-                <a href="#" onclick="addbiblioPopup(); return false;">Create Biblio</a><!--/TMPL_IF--></div>
+               <div class="inputnote"> <a href="#" onclick="Plugin(f)">Search for Biblio</a>
+		    <!-- TMPL_IF name="CAN_user_editcatalogue" --> 
+		       <!--TMPL_IF Name="mod"-->
+		       | <a href="#" onclick="addbiblioPopup(<!-- TMPL_VAR NAME="bibnum" -->); return false;">Edit biblio</a>
+		       <!-- TMPL_ELSE -->
+		       | <a href="#" onclick="addbiblioPopup(); return false;">Create Biblio</a>
+		       <!--/TMPL_IF-->
+		    <!--/TMPL_IF-->
+	       </div>
             
         </li>
         <li class="radio">
diff --git a/serials/acqui-search-result.pl b/serials/acqui-search-result.pl
index f5b216f..e671e96 100755
--- a/serials/acqui-search-result.pl
+++ b/serials/acqui-search-result.pl
@@ -55,7 +55,7 @@ my ($template, $loggedinuser, $cookie)
                  query => $query,
                  type => "intranet",
                  authnotrequired => 0,
-                 flagsrequired => {serials => 1},
+                 flagsrequired => {serials => '*'},
                  debug => 1,
                  });
 
diff --git a/serials/acqui-search.pl b/serials/acqui-search.pl
index 113e763..1e5d917 100755
--- a/serials/acqui-search.pl
+++ b/serials/acqui-search.pl
@@ -32,7 +32,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         query           => $query,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { serials => 1 },
+        flagsrequired   => { serials => '*' },
         debug           => 1,
     }
 );
diff --git a/serials/checkexpiration.pl b/serials/checkexpiration.pl
index 16529b0..02a4fbc 100755
--- a/serials/checkexpiration.pl
+++ b/serials/checkexpiration.pl
@@ -60,7 +60,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user (
         query           => $query,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { serials => 1 },
+        flagsrequired   => { serials => 'check_expiration' },
         debug           => 1,
     }
 );
diff --git a/serials/claims.pl b/serials/claims.pl
index af0143d..b723136 100755
--- a/serials/claims.pl
+++ b/serials/claims.pl
@@ -49,7 +49,7 @@ my ($template, $loggedinuser, $cookie)
             query => $input,
             type => 'intranet',
             authnotrequired => 0,
-            flagsrequired => {serials => 1},
+            flagsrequired => {serials => 'claim_serials'},
             debug => 1,
             });
 
diff --git a/serials/member-search.pl b/serials/member-search.pl
index 2d9a031..8c30104 100755
--- a/serials/member-search.pl
+++ b/serials/member-search.pl
@@ -46,13 +46,16 @@ my $branches=(defined $$patron{branchcode}?GetBranchesLoop($$patron{branchcode})
 
 my %categories_dislay;
 my ($template, $loggedinuser, $cookie);
-    ($template, $loggedinuser, $cookie)
-    = get_template_and_user({template_name => "serials/member-search.tmpl",
-                 query => $cgi,
-                 type => "intranet",
-                 authnotrequired => 0,
-                 flagsrequired => {borrowers => 1},
-                 });
+( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "serials/member-search.tmpl",
+        query           => $cgi,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { serials => 'routing' },
+        debug           => 1,
+    }
+);
 
 foreach my $category (@categories){
 	my $hash={
diff --git a/serials/routing-preview.pl b/serials/routing-preview.pl
index 716cced..477ae81 100755
--- a/serials/routing-preview.pl
+++ b/serials/routing-preview.pl
@@ -100,7 +100,7 @@ if($ok){
 				query => $query,
 				type => "intranet",
 				authnotrequired => 0,
-				flagsrequired => {serials => 1},
+				flagsrequired => {serials => 'routing'},
 				debug => 1,
 				});
     $template->param("libraryname"=>$branchname);
@@ -110,7 +110,7 @@ if($ok){
 				query => $query,
 				type => "intranet",
 				authnotrequired => 0,
-				flagsrequired => {serials => 1},
+				flagsrequired => {serials => 'routing'},
 				debug => 1,
 				});
 }
diff --git a/serials/routing.pl b/serials/routing.pl
index 524c71d..18519e3 100755
--- a/serials/routing.pl
+++ b/serials/routing.pl
@@ -90,7 +90,7 @@ my ($template, $loggedinuser, $cookie)
 				query => $query,
 				type => "intranet",
 				authnotrequired => 0,
-				flagsrequired => {serials => 1},
+				flagsrequired => {serials => 'routing'},
 				debug => 1,
 				});
 
diff --git a/serials/serial-issues.pl b/serials/serial-issues.pl
index 4eb53c3..4a971b5 100755
--- a/serials/serial-issues.pl
+++ b/serials/serial-issues.pl
@@ -71,7 +71,7 @@ if ($selectview eq "full"){
      query => $query,
      type => "intranet",
      authnotrequired => 0,
-	 flagsrequired => {serials => 1},
+	 flagsrequired => {serials => '*'},
      debug => 1,
      });
 
diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl
index e6d737b..23e2abc 100755
--- a/serials/serials-collection.pl
+++ b/serials/serials-collection.pl
@@ -40,7 +40,7 @@ my ($template, $loggedinuser, $cookie);
                             query => $query,
                             type => "intranet",
                             authnotrequired => 0,
-                            flagsrequired => {serials => 1},
+                            flagsrequired => {serials => 'receive_serials'},
                             debug => 1,
                             });
 my $biblionumber = $query->param('biblionumber');
diff --git a/serials/serials-edit.pl b/serials/serials-edit.pl
index b407ca9..09f024f 100755
--- a/serials/serials-edit.pl
+++ b/serials/serials-edit.pl
@@ -114,7 +114,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         query           => $query,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { serials => 1 },
+        flagsrequired => {serials => 'receive_serials'},
         debug           => 1,
     }
 );
diff --git a/serials/serials-home.pl b/serials/serials-home.pl
index a4a7bd3..8a82df7 100755
--- a/serials/serials-home.pl
+++ b/serials/serials-home.pl
@@ -67,7 +67,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         query           => $query,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { serials => 1 },
+        flagsrequired   => { serials => '*' },
         debug           => 1,
     }
 );
diff --git a/serials/statecollection.pl b/serials/statecollection.pl
index bcbfbda..6d01c35 100755
--- a/serials/statecollection.pl
+++ b/serials/statecollection.pl
@@ -47,7 +47,7 @@ my ($template, $loggedinuser, $cookie)
 				query => $query,
 				type => "intranet",
 				authnotrequired => 0,
-				flagsrequired => {serials => 1},
+				flagsrequired => {serials => '*'},
 				debug => 1,
 				});
 
diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl
index f87dae5..d8c0ea3 100755
--- a/serials/subscription-add.pl
+++ b/serials/subscription-add.pl
@@ -39,12 +39,18 @@ my $op = $query->param('op') || '';
 my $dbh = C4::Context->dbh;
 my $sub_length;
 
+my @budgets;
+
+# Permission needed if it is a modification : edit_subscription
+# Permission needed otherwise (nothing or dup) : create_subscription
+my $permission = ($op eq "mod") ? "edit_subscription" : "create_subscription";
+
 my ($template, $loggedinuser, $cookie)
 = get_template_and_user({template_name => "serials/subscription-add.tmpl",
 				query => $query,
 				type => "intranet",
 				authnotrequired => 0,
-				flagsrequired => {serials => 1},
+				flagsrequired => {serials => $permission},
 				debug => 1,
 				});
 
diff --git a/serials/subscription-bib-search.pl b/serials/subscription-bib-search.pl
index 90a4098..4a77df6 100755
--- a/serials/subscription-bib-search.pl
+++ b/serials/subscription-bib-search.pl
@@ -122,8 +122,7 @@ if ($op eq "do_search" && $query) {
                 query => $input,
                 type => "intranet",
                 authnotrequired => 0,
-                flagsrequired => {serials => 1},
-                flagsrequired => {catalogue => 1},
+                flagsrequired => {catalogue => 1, serials => '*'},
                 debug => 1,
                 });
 
@@ -178,7 +177,16 @@ if ($op eq "do_search" && $query) {
                             numbers=>\@numbers,
                             );
 } # end of if ($op eq "do_search" & $query)
- else {
+elsif ($op eq "do_search") {
+    ($template, $loggedinuser, $cookie)
+        = get_template_and_user({template_name => "serials/subscription-bib-search.tmpl",
+                query => $input,
+                type => "intranet",
+                authnotrequired => 0,
+                flagsrequired => {catalogue => 1, serials => '*'},
+                debug => 1,
+                });
+    # load the itemtypes
     my @itemtypesloop;
     if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') {
 	# load the itemtypes
@@ -219,7 +227,7 @@ if ($op eq "do_search" && $query) {
                 query => $input,
                 type => "intranet",
                 authnotrequired => 0,
-                flagsrequired => {catalogue => 1, serials=>1},
+                flagsrequired => {catalogue => 1, serials => '*'},
                 debug => 1,
                 });
 
diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl
index d8c44ee..705416b 100755
--- a/serials/subscription-detail.pl
+++ b/serials/subscription-detail.pl
@@ -35,24 +35,13 @@ my ($template, $loggedinuser, $cookie, $hemisphere);
 my $subscriptionid = $query->param('subscriptionid');
 my $subs = GetSubscription($subscriptionid);
 
-($template, $loggedinuser, $cookie)
-= get_template_and_user({template_name => "serials/subscription-detail.tmpl",
-                query => $query,
-                type => "intranet",
-                authnotrequired => 0,
-                flagsrequired => {serials => 1},
-                debug => 1,
-                });
+$subs->{enddate} = GetExpirationDate($subscriptionid);
 
-$$subs{enddate} ||= GetExpirationDate($subscriptionid);
-
-if ($op eq 'del') {
-	if ($$subs{'cannotedit'}){
+if ($op && $op eq 'del') {
+	if ($subs->{'cannotedit'}){
 		carp "Attempt to delete subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
 		print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
-		exit;
 	}
-	
     # Asking for confirmation if the subscription has not strictly expired yet or if it has linked issues
     my $strictlyexpired = HasSubscriptionStrictlyExpired($subscriptionid);
     my $linkedissues = CountIssues($subscriptionid);
@@ -72,6 +61,26 @@ if ($op eq 'del') {
 		exit;
     }
 }
+my ($routing, @routinglist) = getroutinglist($subscriptionid);
+my ($totalissues, at serialslist) = GetSerials($subscriptionid);
+$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
+# the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...)
+
+# Permission needed if it is a deletion (del) : delete_subscription
+# Permission needed otherwise : *
+my $permission = ($op eq "del") ? "delete_subscription" : "*";
+
+($template, $loggedinuser, $cookie)
+= get_template_and_user({template_name => "serials/subscription-detail.tmpl",
+                query => $query,
+                type => "intranet",
+                authnotrequired => 0,
+                flagsrequired => {serials => $permission},
+                debug => 1,
+                });
+
+$$subs{enddate} ||= GetExpirationDate($subscriptionid);
+
 my $hasRouting = check_routing($subscriptionid);
 my ($totalissues, at serialslist) = GetSerials($subscriptionid);
 $totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
diff --git a/serials/subscription-renew.pl b/serials/subscription-renew.pl
index 02dce30..48861bc 100755
--- a/serials/subscription-renew.pl
+++ b/serials/subscription-renew.pl
@@ -69,7 +69,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         query           => $query,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { serials => 1 },
+        flagsrequired   => { serials => 'renew_subscription' },
         debug           => 1,
     }
 );
diff --git a/serials/viewalerts.pl b/serials/viewalerts.pl
index ad804f0..d2d1368 100755
--- a/serials/viewalerts.pl
+++ b/serials/viewalerts.pl
@@ -38,7 +38,7 @@ my ($template, $loggedinuser, $cookie)
                  query => $input,
                  type => "intranet",
                  authnotrequired => 0,
-                 flagsrequired => {serials => 1},
+                 flagsrequired => {serials => '*'},
                  debug => 1,
                  });
 
-- 
1.7.0.4



More information about the Koha-patches mailing list