Cherry-picked onto master, fixing conflicts: MT 1816: Granular permissions for the serials module

Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>

Conflicts:

	installer/data/mysql/en/mandatory/userpermissions.sql
	installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql
	installer/data/mysql/updatedatabase30.pl
	koha-tmpl/intranet-tmpl/prog/en/includes/header.inc
	koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tmpl
	serials/member-search.pl
	serials/serials-edit.pl
	serials/subscription-add.pl
	serials/subscription-bib-search.pl
	serials/subscription-detail.pl
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
Chris Cormack 2010-06-16 16:38:31 +12:00 committed by Galen Charlton
parent 9f806f2611
commit b3feb54ee0
27 changed files with 166 additions and 49 deletions

View File

@ -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')
;

View File

@ -36,6 +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')

View File

@ -3624,6 +3624,24 @@ INSERT INTO permissions (module_bit, code, description) VALUES
SetVersion ($DBversion);
}
$DBversion = "3.01.00.137";
if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
$dbh->do("
INSERT INTO permissions (module_bit, code, description) VALUES
(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');
");
print "Upgrade to $DBversion done (adding granular permissions for serials)";
SetVersion ($DBversion);
}
=item DropAllForeignKeys($table)

View File

@ -1,5 +1,6 @@
<!-- TMPL_IF NAME="intranetbookbag" --><div id="cartDetails">Your cart is empty.</div><!-- /TMPL_IF -->
<<<<<<< HEAD:koha-tmpl/intranet-tmpl/prog/en/includes/header.inc
<div id="header" class="clearfix">
<div id="toplevelnav">
<ul id="toplevelmenu">

View File

@ -47,7 +47,11 @@
<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>
<li><a href="/cgi-bin/koha/authorities/authorities-home.pl">Authorities</a></li>
<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="CAN_user_serials" -->
<li><a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a></li>
<!-- /TMPL_IF -->
<!-- TMPL_IF NAME="CAN_user_editcatalogue" -->
</ul></li>
<li><a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a></li>

View File

@ -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>
<!-- /TMPL_IF -->
</ul>

View File

@ -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>

View File

@ -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>

View File

@ -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">

View File

@ -10,7 +10,7 @@
use strict;
sub kohaversion {
our $VERSION = '3.01.00.136';
our $VERSION = '3.01.00.137';
# version needs to be set this way
# so that it can be picked up by Makefile.PL
# during install

View File

@ -55,7 +55,7 @@ my ($template, $loggedinuser, $cookie)
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => '*'},
debug => 1,
});

View File

@ -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,
}
);

View File

@ -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,
}
);

View File

@ -49,7 +49,7 @@ my ($template, $loggedinuser, $cookie)
query => $input,
type => 'intranet',
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => 'claim_serials'},
debug => 1,
});

View File

@ -43,6 +43,8 @@ foreach (keys %$patron){
my @categories=C4::Category->all;
my $branches=(defined $$patron{branchcode}?GetBranchesLoop($$patron{branchcode}):GetBranchesLoop());
my $subscriptionid = $cgi->param('subscriptionid');
my $searchstring = $cgi->param('member');
my %categories_dislay;
my ($template, $loggedinuser, $cookie);
@ -51,7 +53,7 @@ my ($template, $loggedinuser, $cookie);
query => $cgi,
type => "intranet",
authnotrequired => 0,
flagsrequired => {borrowers => 1},
flagsrequired => { serials => 'routing' },
});
foreach my $category (@categories){

View File

@ -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,
});
}

View File

@ -90,7 +90,7 @@ my ($template, $loggedinuser, $cookie)
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => 'routing'},
debug => 1,
});

View File

@ -71,7 +71,7 @@ if ($selectview eq "full"){
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => '*'},
debug => 1,
});

View File

@ -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');

View File

@ -108,14 +108,15 @@ unless ( scalar(@serialids) ) {
print $query->redirect($string);
}
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "serials/serials-edit.tmpl",
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => { serials => 1 },
debug => 1,
template_name => "serials/serials-edit.tmpl",
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 'receive_serials'},
debug => 1,
}
);

View File

@ -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,
}
);

View File

@ -47,7 +47,7 @@ my ($template, $loggedinuser, $cookie)
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => '*'},
debug => 1,
});

View File

@ -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,
});

View File

@ -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,17 @@ if ($op eq "do_search" && $query) {
numbers=>\@numbers,
);
} # end of if ($op eq "do_search" & $query)
else {
else {
($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 $itemtypes = GetItemTypes;
my @itemtypesloop;
if (!$advanced_search_types or $advanced_search_types eq 'itemtypes') {
# load the itemtypes
@ -219,7 +228,7 @@ if ($op eq "do_search" && $query) {
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {catalogue => 1, serials=>1},
flagsrequired => {catalogue => 1, serials => '*'},
debug => 1,
});

View File

@ -35,12 +35,32 @@ my ($template, $loggedinuser, $cookie, $hemisphere);
my $subscriptionid = $query->param('subscriptionid');
my $subs = GetSubscription($subscriptionid);
$subs->{enddate} = GetExpirationDate($subscriptionid);
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");
}
DelSubscription($subscriptionid);
print "Content-Type: text/html\n\n<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=serials-home.pl\"></html>";
exit;
}
my ($routing, @routinglist) = getroutinglist($subscriptionid);
my ($totalissues,@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 => 1},
flagsrequired => {serials => $permission},
debug => 1,
});

View File

@ -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,
}
);

View File

@ -38,7 +38,7 @@ my ($template, $loggedinuser, $cookie)
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => '*'},
debug => 1,
});