Bugzilla – Attachment 11411 Details for
Bug 8435
new permissions on subscriptions "superserials"
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8435: If IndependantBranches is on, Serials can't be manage from others libraries
Bug-8435-If-IndependantBranches-is-on-Serials-cant.patch (text/plain), 27.18 KB, created by
Chris Cormack
on 2012-08-07 10:36:08 UTC
(
hide
)
Description:
Bug 8435: If IndependantBranches is on, Serials can't be manage from others libraries
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2012-08-07 10:36:08 UTC
Size:
27.18 KB
patch
obsolete
>From 1a87eab25962a8ca8530946f136ef36466cc7ad5 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@biblibre.com> >Date: Fri, 13 Jul 2012 16:32:31 +0200 >Subject: [PATCH] Bug 8435: If IndependantBranches is on, Serials can't be > manage from others libraries > >In the serial module, we want to hide serials from others libraries. >New permission 'superserials'. If a patron have this permission, he can >override this restriction. > >Test plan: >- Switch on the IndependantBranches syspref >- Add the permission 'superserials' for a patron and test you can > navigate and see all serials >- Remove this permission and test you cannot manage/view subscriptions > from others libraries > >Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> >--- > C4/Auth.pm | 4 +- > C4/Serials.pm | 107 ++++++++------------ > .../data/mysql/de-DE/mandatory/userpermissions.sql | 1 + > .../data/mysql/en/mandatory/userpermissions.sql | 1 + > .../data/mysql/es-ES/mandatory/userpermissions.sql | 1 + > .../mysql/fr-FR/1-Obligatoire/userpermissions.sql | 1 + > .../data/mysql/it-IT/necessari/userpermissions.sql | 1 + > .../mysql/nb-NO/1-Obligatorisk/userpermissions.sql | 1 + > .../data/mysql/pl-PL/mandatory/userpermissions.sql | 1 + > installer/data/mysql/updatedatabase.pl | 7 ++ > .../prog/en/includes/serials-toolbar.inc | 6 +- > .../prog/en/modules/serials/serials-home.tt | 34 ++++--- > serials/serials-collection.pl | 4 +- > serials/serials-edit.pl | 1 + > serials/serials-home.pl | 1 + > serials/subscription-add.pl | 3 +- > serials/subscription-detail.pl | 33 ++---- > serials/subscription-renew.pl | 1 + > 18 files changed, 95 insertions(+), 113 deletions(-) > >diff --git a/C4/Auth.pm b/C4/Auth.pm >index f9b15ef..4511a08 100644 >--- a/C4/Auth.pm >+++ b/C4/Auth.pm >@@ -1506,7 +1506,6 @@ sub getuserflags { > $userflags->{$flag} = 0; > } > } >- > # get subpermissions and merge with top-level permissions > my $user_subperms = get_user_subpermissions($userid); > foreach my $module (keys %$user_subperms) { >@@ -1602,7 +1601,8 @@ sub haspermission { > my ($userid, $flagsrequired) = @_; > my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?"); > $sth->execute($userid); >- my $flags = getuserflags($sth->fetchrow(), $userid); >+ my $row = $sth->fetchrow(); >+ my $flags = getuserflags($row, $userid); > if ( $userid eq C4::Context->config('user') ) { > # Super User Account from /etc/koha.conf > $flags->{'superlibrarian'} = 1; >diff --git a/C4/Serials.pm b/C4/Serials.pm >index 98660e9..e6cd41f 100644 >--- a/C4/Serials.pm >+++ b/C4/Serials.pm >@@ -20,6 +20,7 @@ package C4::Serials; > > use strict; > use warnings; >+use C4::Context; > use C4::Dates qw(format_date format_date_in_iso); > use Date::Calc qw(:all); > use POSIX qw(strftime); >@@ -205,15 +206,7 @@ sub GetSerialInformation { > my ($serialid) = @_; > my $dbh = C4::Context->dbh; > my $query = qq| >- SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid |; >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- $query .= qq| >+ SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid > FROM serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid > WHERE serialid = ? > |; >@@ -252,6 +245,7 @@ sub GetSerialInformation { > $data->{ "status" . $data->{'serstatus'} } = 1; > $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1; > $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} ); >+ $data->{cannotedit} = not can_edit_subscription( $data ); > return $data; > } > >@@ -310,15 +304,7 @@ sub GetSubscription { > subscriptionhistory.*, > aqbooksellers.name AS aqbooksellername, > biblio.title AS bibliotitle, >- subscription.biblionumber as bibnum); >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- $query .= qq( >+ subscription.biblionumber as bibnum > FROM subscription > LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid > LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id >@@ -326,16 +312,12 @@ sub GetSubscription { > WHERE subscription.subscriptionid = ? > ); > >- # if (C4::Context->preference('IndependantBranches') && >- # C4::Context->userenv && >- # C4::Context->userenv->{'flags'} != 1){ >- # # $debug and warn "flags: ".C4::Context->userenv->{'flags'}; >- # $query.=" AND subscription.branchcode IN ('".C4::Context->userenv->{'branch'}."',\"\")"; >- # } > $debug and warn "query : $query\nsubsid :$subscriptionid"; > my $sth = $dbh->prepare($query); > $sth->execute($subscriptionid); >- return $sth->fetchrow_hashref; >+ my $subscription = $sth->fetchrow_hashref; >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ return $subscription; > } > > =head2 GetFullSubscription >@@ -359,15 +341,7 @@ sub GetFullSubscription { > aqbooksellers.name as aqbooksellername, > biblio.title as bibliotitle, > subscription.branchcode AS branchcode, >- subscription.subscriptionid AS subscriptionid |; >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- $query .= qq| >+ subscription.subscriptionid AS subscriptionid > FROM serial > LEFT JOIN subscription ON > (serial.subscriptionid=subscription.subscriptionid ) >@@ -381,7 +355,11 @@ sub GetFullSubscription { > $debug and warn "GetFullSubscription query: $query"; > my $sth = $dbh->prepare($query); > $sth->execute($subscriptionid); >- return $sth->fetchall_arrayref( {} ); >+ my $subscriptions = $sth->fetchall_arrayref( {} ); >+ for my $subscription ( @$subscriptions ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ } >+ return $subscriptions; > } > > =head2 PrepareSerialsData >@@ -479,13 +457,6 @@ sub GetSubscriptionsFromBiblionumber { > $subs->{ "periodicity" . $subs->{periodicity} } = 1; > $subs->{ "numberpattern" . $subs->{numberpattern} } = 1; > $subs->{ "status" . $subs->{'status'} } = 1; >- $subs->{'cannotedit'} = >- ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{flags} % 2 != 1 >- && C4::Context->userenv->{branch} >- && $subs->{branchcode} >- && ( C4::Context->userenv->{branch} ne $subs->{branchcode} ) ); > > if ( $subs->{enddate} eq '0000-00-00' ) { > $subs->{enddate} = ''; >@@ -494,6 +465,7 @@ sub GetSubscriptionsFromBiblionumber { > } > $subs->{'abouttoexpire'} = abouttoexpire( $subs->{'subscriptionid'} ); > $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} ); >+ $subs->{cannotedit} = not can_edit_subscription( $subs ); > push @res, $subs; > } > return \@res; >@@ -519,16 +491,7 @@ sub GetFullSubscriptionsFromBiblionumber { > year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year, > biblio.title as bibliotitle, > subscription.branchcode AS branchcode, >- subscription.subscriptionid AS subscriptionid|; >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- >- $query .= qq| >+ subscription.subscriptionid AS subscriptionid > FROM serial > LEFT JOIN subscription ON > (serial.subscriptionid=subscription.subscriptionid) >@@ -541,7 +504,11 @@ sub GetFullSubscriptionsFromBiblionumber { > |; > my $sth = $dbh->prepare($query); > $sth->execute($biblionumber); >- return $sth->fetchall_arrayref( {} ); >+ my $subscriptions = $sth->fetchall_arrayref( {} ); >+ for my $subscription ( @$subscriptions ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ } >+ return $subscriptions; > } > > =head2 GetSubscriptions >@@ -616,19 +583,11 @@ sub GetSubscriptions { > $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params ); > $sth = $dbh->prepare($sql); > $sth->execute(@bind_params); >- my @results; >- >- while ( my $line = $sth->fetchrow_hashref ) { >- $line->{'cannotedit'} = >- ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{flags} % 2 != 1 >- && C4::Context->userenv->{branch} >- && $line->{branchcode} >- && ( C4::Context->userenv->{branch} ne $line->{branchcode} ) ); >- push @results, $line; >+ my $subscriptions = $sth->fetchall_arrayref( {} ); >+ for my $subscription ( @$subscriptions ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); > } >- return @results; >+ return @$subscriptions; > } > > =head2 GetSerials >@@ -2396,6 +2355,24 @@ sub is_barcode_in_use { > return @{$occurences}; > } > >+sub can_edit_subscription { >+ my ( $subscription, $userid ) = @_; >+ my $flags = C4::Context->userenv->{flags}; >+ $userid ||= C4::Context->userenv->{'id'}; >+ if( C4::Context->preference('IndependantBranches') >+ and ( >+ $flags % 2 == 1 >+ or C4::Auth::haspermission( $userid, {serials => 'superserials'}), >+ or not defined $subscription->{branchcode} >+ or $subscription->{branchcode} eq '' >+ or $subscription->{branchcode} eq C4::Context->userenv->{'branch'} >+ ) >+ ) { >+ return 1; >+ } >+ return 0; >+} >+ > 1; > __END__ > >diff --git a/installer/data/mysql/de-DE/mandatory/userpermissions.sql b/installer/data/mysql/de-DE/mandatory/userpermissions.sql >index 7282cce..a5ef13d 100644 >--- a/installer/data/mysql/de-DE/mandatory/userpermissions.sql >+++ b/installer/data/mysql/de-DE/mandatory/userpermissions.sql >@@ -50,6 +50,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Zugang von Heften'), > (15, 'renew_subscription', 'Abonnements verlängern'), > (15, 'routing', 'Umlauflisten verwalten'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (16, 'execute_reports', 'SQL-Reports ausführen'), > (16, 'create_reports', 'SQL-Reports erstellen') > ; >diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql b/installer/data/mysql/en/mandatory/userpermissions.sql >index 070e8f5..a3351d3 100644 >--- a/installer/data/mysql/en/mandatory/userpermissions.sql >+++ b/installer/data/mysql/en/mandatory/userpermissions.sql >@@ -50,6 +50,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports') > ; >diff --git a/installer/data/mysql/es-ES/mandatory/userpermissions.sql b/installer/data/mysql/es-ES/mandatory/userpermissions.sql >index 070e8f5..a3351d3 100644 >--- a/installer/data/mysql/es-ES/mandatory/userpermissions.sql >+++ b/installer/data/mysql/es-ES/mandatory/userpermissions.sql >@@ -50,6 +50,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (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 4b8c66e..1c5ee59 100644 >--- a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql >+++ b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql >@@ -50,6 +50,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Bulletiner les périodiques'), > (15, 'renew_subscription', 'Renouveler les abonnements'), > (15, 'routing', 'Mettre en circulation'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (16, 'execute_reports', 'Lancer les rapports SQL'), > (16, 'create_reports', 'Créer les rapports SQL Reports') > >diff --git a/installer/data/mysql/it-IT/necessari/userpermissions.sql b/installer/data/mysql/it-IT/necessari/userpermissions.sql >index d0b5348..07b5c16 100644 >--- a/installer/data/mysql/it-IT/necessari/userpermissions.sql >+++ b/installer/data/mysql/it-IT/necessari/userpermissions.sql >@@ -52,6 +52,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Ricevi fascicoli'), > (15, 'renew_subscription', 'Rinnova un abbonamento'), > (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (16, 'execute_reports', 'Esegui reports SQL'), > (16, 'create_reports', 'Crea reports SQL') > ; >diff --git a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql >index a00535f..55ee91d 100644 >--- a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql >+++ b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql >@@ -71,6 +71,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Heftemottak'), > (15, 'renew_subscription', 'Fornye abonnementer'), > (15, 'routing', 'Sirkulasjon'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (16, 'execute_reports', 'Kjøre SQL-rapporter'), > (16, 'create_reports', 'Opprette SQL-rapporter') > ; >diff --git a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql >index 1165af1..a8e2ec4 100644 >--- a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql >+++ b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql >@@ -51,6 +51,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports') > ; >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index ed0c674..06d0417 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -5635,6 +5635,13 @@ if(C4::Context->preference("Version") < TransformToNum($DBversion) ) { > SetVersion($DBversion); > } > >+$DBversion = "3.09.00.XXX"; >+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { >+ $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES(15, 'superserials', 'Manage subscriptions from any branch')"); >+ print "Upgrade to $DBversion done (Add superserials permission)\n"; >+ SetVersion($DBversion); >+} >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >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 00f76bc..7708cd2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc >@@ -18,13 +18,13 @@ > [% IF ( subscriptionid ) %] > var editmenu = [ > [% IF ( CAN_user_serials_edit_subscription ) %] >- { text: _("Edit subscription"), [% IF ( cannotedit ) %]disabled: true, [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=modify&subscriptionid=[% subscriptionid %]" }, >+ { text: _("Edit subscription"), [% IF ( cannotedit ) %]id:'disabled', [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=modify&subscriptionid=[% subscriptionid %]" }, > [% END %] > [% IF ( CAN_user_serials_create_subscription ) %] >- { text: _("Edit as new (duplicate)"), [% IF ( cannotedit ) %]disabled: true, [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=dup&subscriptionid=[% subscriptionid %]" }, >+ { text: _("Edit as new (duplicate)"), [% IF ( cannotedit ) %]id:'disabled', [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=dup&subscriptionid=[% subscriptionid %]" }, > [% END %] > [% IF ( CAN_user_serials_delete_subscription ) %] >- { text: _("Delete subscription"), [% IF ( cannotedit ) %]disabled: true, [% END %] onclick: {fn: confirm_deletion }} >+ { text: _("Delete subscription"), [% IF ( cannotedit ) %]id:'disabled', [% END %] onclick: {fn: confirm_deletion }} > [% END %] > ]; > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt >index a0cd35e..1cbcfba 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt >@@ -75,11 +75,11 @@ Serials updated : > [% END %] > </table> > [% END %] >- [% IF ( done_searched ) %] >+[% IF ( done_searched ) %] > <h2>Serials subscriptions</h2> >- >+ [% IF ( subscriptions and size ) %] > <table id="srlt"> >- <thead> >+ <thead> > <tr> > <th>ISSN</th> > <th>Title</th> >@@ -89,12 +89,12 @@ Serials updated : > <th>Expiration date</th> > [% IF ( routing && CAN_user_serials_routing ) %] > <th>Routing list</th> >- [% END %] >+ [% END %] > <th> </th> > <th> </th> > </tr> >- </thead> >- <tfoot> >+ </thead> >+ <tfoot> > <tr> > <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td> > <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td> >@@ -106,9 +106,10 @@ Serials updated : > <td></td> > <td></td> > </tr> >- </tfoot> >- <tbody> >+ </tfoot> >+ <tbody> > [% FOREACH subscription IN subscriptions %] >+ [% UNLESS subscription.cannotedit %] > <tr> > <td> > [% IF ( subscription.issn ) %][% subscription.issn %] >@@ -145,18 +146,19 @@ Serials updated : > <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a> > </td> > <td> >- [% IF ( subscription.cannotedit ) %] >- >- [% ELSE %] >- [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&serstatus=1,3,7">Serial receive</a>[% END %] >- [% END %] >+ [% IF ( CAN_user_serials_receive_serials ) %] >+ <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&serstatus=1,3,7">Serial receive</a> >+ [% END %] > </td> > </tr> >+ [% END %] > [% END %] >- </tbody> >+ </tbody> > </table> >- >- [% END %] >+ [% ELSE %] >+ <p>Sorry, there is no result for your search.</p> >+ [% END %] >+[% END %] > > </div> > </div> >diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl >index 610de60..582fa42 100755 >--- a/serials/serials-collection.pl >+++ b/serials/serials-collection.pl >@@ -36,8 +36,7 @@ my $query = new CGI; > my $op = $query->param('op') || q{}; > my $dbh = C4::Context->dbh; > >-my ($template, $loggedinuser, $cookie); >-($template, $loggedinuser, $cookie) >+my ($template, $loggedinuser, $cookie) > = get_template_and_user({template_name => "serials/serials-collection.tmpl", > query => $query, > type => "intranet", >@@ -99,6 +98,7 @@ if (@subscriptionid){ > my @subscriptioninformation=(); > foreach my $subscriptionid (@subscriptionid){ > my $subs= GetSubscription($subscriptionid); >+ > $subs->{opacnote} =~ s/\n/\<br\/\>/g; > $subs->{missinglist} =~ s/\n/\<br\/\>/g; > $subs->{recievedlist} =~ s/\n/\<br\/\>/g; >diff --git a/serials/serials-edit.pl b/serials/serials-edit.pl >index b78e191..785ead6 100755 >--- a/serials/serials-edit.pl >+++ b/serials/serials-edit.pl >@@ -134,6 +134,7 @@ foreach my $serialid (@serialids) { > && !$processedserialid{$serialid} ) > { > my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above >+ > for my $d ( qw( publisheddate planneddate )){ > if ( $serinfo->{$d} =~m/^00/ ) { > $serinfo->{$d} = q{}; >diff --git a/serials/serials-home.pl b/serials/serials-home.pl >index 21b76e0..21a0d5d 100755 >--- a/serials/serials-home.pl >+++ b/serials/serials-home.pl >@@ -111,6 +111,7 @@ $template->param( > ISSN_filter => $ISSN, > done_searched => $searched, > routing => $routing, >+ size => scalar ( map {$_->{cannotedit} ? () : 1} @subscriptions ), > (uc(C4::Context->preference("marcflavour"))) => 1 > ); > >diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl >index a3306ea..1d8e885 100755 >--- a/serials/subscription-add.pl >+++ b/serials/subscription-add.pl >@@ -69,7 +69,8 @@ if ($op eq 'modify' || $op eq 'dup' || $op eq 'modsubscription') { > > my $subscriptionid = $query->param('subscriptionid'); > $subs = GetSubscription($subscriptionid); >-## FIXME : Check rights to edit if mod. Could/Should display an error message. >+ >+ ## FIXME : Check rights to edit if mod. Could/Should display an error message. > if ($subs->{'cannotedit'} && $op eq 'modify'){ > carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; > print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); >diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl >index ae85c51..685a5e7 100755 >--- a/serials/subscription-detail.pl >+++ b/serials/subscription-detail.pl >@@ -32,31 +32,15 @@ my $query = new CGI; > my $op = $query->param('op') || q{}; > my $issueconfirmed = $query->param('issueconfirmed'); > my $dbh = C4::Context->dbh; >-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 ($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) >+my ($template, $loggedinuser, $cookie) > = get_template_and_user({template_name => "serials/subscription-detail.tmpl", > query => $query, > type => "intranet", >@@ -65,7 +49,12 @@ my $permission = ($op eq "del") ? "delete_subscription" : "*"; > debug => 1, > }); > >-$$subs{enddate} ||= GetExpirationDate($subscriptionid); >+ >+my $subs = GetSubscription($subscriptionid); >+$subs->{enddate} ||= GetExpirationDate($subscriptionid); >+ >+my ($totalissues,@serialslist) = GetSerials($subscriptionid); >+$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue) > > if ($op eq 'del') { > if ($$subs{'cannotedit'}){ >@@ -119,18 +108,14 @@ if (! $subs->{periodicity}) { > $subs->{periodicity} = '0'; > } > my $default_bib_view = get_default_view(); >+my $can_edit = C4::Serials::can_edit_subscription( $subs ); > $template->param( > subscriptionid => $subscriptionid, > serialslist => \@serialslist, > hasRouting => $hasRouting, > routing => C4::Context->preference("RoutingSerials"), > totalissues => $totalissues, >- hemisphere => $hemisphere, >- cannotedit =>(C4::Context->preference('IndependantBranches') && >- C4::Context->userenv && >- C4::Context->userenv->{flags} % 2 !=1 && >- C4::Context->userenv->{branch} && $subs->{branchcode} && >- (C4::Context->userenv->{branch} ne $subs->{branchcode})), >+ cannotedit => (not C4::Serials::can_edit_subscription( $subs )), > 'periodicity' . $subs->{periodicity} => 1, > 'arrival' . $subs->{dow} => 1, > 'numberpattern' . $subs->{numberpattern} => 1, >diff --git a/serials/subscription-renew.pl b/serials/subscription-renew.pl >index 48861bc..3550b2b 100755 >--- a/serials/subscription-renew.pl >+++ b/serials/subscription-renew.pl >@@ -83,6 +83,7 @@ if ( $op eq "renew" ) { > } > > my $subscription = GetSubscription($subscriptionid); >+ > if ($subscription->{'cannotedit'}){ > carp "Attempt to renew subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; > print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); >-- >1.7.10.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 8435
:
10821
|
11377
|
11411
|
11892
|
13396
|
15673
|
16404
|
16462
|
16740
|
16750
|
16751
|
16798
|
16799
|
16801
|
16802
|
16803
|
16943
|
16944
|
19260
|
19261
|
19266
|
19268
|
20536
|
21286
|
21287
|
21288
|
21289
|
22624
|
22625
|
22626
|
22627
|
22628