View | Details | Raw Unified | Return to bug 8435
Collapse All | Expand All

(-)a/C4/Auth.pm (-2 / +2 lines)
Lines 1506-1512 sub getuserflags { Link Here
1506
            $userflags->{$flag} = 0;
1506
            $userflags->{$flag} = 0;
1507
        }
1507
        }
1508
    }
1508
    }
1509
1510
    # get subpermissions and merge with top-level permissions
1509
    # get subpermissions and merge with top-level permissions
1511
    my $user_subperms = get_user_subpermissions($userid);
1510
    my $user_subperms = get_user_subpermissions($userid);
1512
    foreach my $module (keys %$user_subperms) {
1511
    foreach my $module (keys %$user_subperms) {
Lines 1602-1608 sub haspermission { Link Here
1602
    my ($userid, $flagsrequired) = @_;
1601
    my ($userid, $flagsrequired) = @_;
1603
    my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
1602
    my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
1604
    $sth->execute($userid);
1603
    $sth->execute($userid);
1605
    my $flags = getuserflags($sth->fetchrow(), $userid);
1604
    my $row = $sth->fetchrow();
1605
    my $flags = getuserflags($row, $userid);
1606
    if ( $userid eq C4::Context->config('user') ) {
1606
    if ( $userid eq C4::Context->config('user') ) {
1607
        # Super User Account from /etc/koha.conf
1607
        # Super User Account from /etc/koha.conf
1608
        $flags->{'superlibrarian'} = 1;
1608
        $flags->{'superlibrarian'} = 1;
(-)a/C4/Serials.pm (-65 / +42 lines)
Lines 20-25 package C4::Serials; Link Here
20
20
21
use strict;
21
use strict;
22
use warnings;
22
use warnings;
23
use C4::Context;
23
use C4::Dates qw(format_date format_date_in_iso);
24
use C4::Dates qw(format_date format_date_in_iso);
24
use Date::Calc qw(:all);
25
use Date::Calc qw(:all);
25
use POSIX qw(strftime);
26
use POSIX qw(strftime);
Lines 205-219 sub GetSerialInformation { Link Here
205
    my ($serialid) = @_;
206
    my ($serialid) = @_;
206
    my $dbh        = C4::Context->dbh;
207
    my $dbh        = C4::Context->dbh;
207
    my $query      = qq|
208
    my $query      = qq|
208
        SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid |;
209
        SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid
209
    if (   C4::Context->preference('IndependantBranches')
210
        && C4::Context->userenv
211
        && C4::Context->userenv->{'flags'} != 1
212
        && C4::Context->userenv->{'branch'} ) {
213
        $query .= "
214
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
215
    }
216
    $query .= qq|             
217
        FROM   serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid
210
        FROM   serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid
218
        WHERE  serialid = ?
211
        WHERE  serialid = ?
219
    |;
212
    |;
Lines 252-257 sub GetSerialInformation { Link Here
252
    $data->{ "status" . $data->{'serstatus'} } = 1;
245
    $data->{ "status" . $data->{'serstatus'} } = 1;
253
    $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1;
246
    $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1;
254
    $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} );
247
    $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} );
248
    $data->{cannotedit} = not can_edit_subscription( $data );
255
    return $data;
249
    return $data;
256
}
250
}
257
251
Lines 310-324 sub GetSubscription { Link Here
310
                subscriptionhistory.*,
304
                subscriptionhistory.*,
311
                aqbooksellers.name AS aqbooksellername,
305
                aqbooksellers.name AS aqbooksellername,
312
                biblio.title AS bibliotitle,
306
                biblio.title AS bibliotitle,
313
                subscription.biblionumber as bibnum);
307
                subscription.biblionumber as bibnum
314
    if (   C4::Context->preference('IndependantBranches')
315
        && C4::Context->userenv
316
        && C4::Context->userenv->{'flags'} != 1
317
        && C4::Context->userenv->{'branch'} ) {
318
        $query .= "
319
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
320
    }
321
    $query .= qq(             
322
       FROM subscription
308
       FROM subscription
323
       LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid
309
       LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid
324
       LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id
310
       LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id
Lines 326-341 sub GetSubscription { Link Here
326
       WHERE subscription.subscriptionid = ?
312
       WHERE subscription.subscriptionid = ?
327
    );
313
    );
328
314
329
    #     if (C4::Context->preference('IndependantBranches') &&
330
    #         C4::Context->userenv &&
331
    #         C4::Context->userenv->{'flags'} != 1){
332
    # #       $debug and warn "flags: ".C4::Context->userenv->{'flags'};
333
    #       $query.=" AND subscription.branchcode IN ('".C4::Context->userenv->{'branch'}."',\"\")";
334
    #     }
335
    $debug and warn "query : $query\nsubsid :$subscriptionid";
315
    $debug and warn "query : $query\nsubsid :$subscriptionid";
336
    my $sth = $dbh->prepare($query);
316
    my $sth = $dbh->prepare($query);
337
    $sth->execute($subscriptionid);
317
    $sth->execute($subscriptionid);
338
    return $sth->fetchrow_hashref;
318
    my $subscription = $sth->fetchrow_hashref;
319
    $subscription->{cannotedit} = not can_edit_subscription( $subscription );
320
    return $subscription;
339
}
321
}
340
322
341
=head2 GetFullSubscription
323
=head2 GetFullSubscription
Lines 359-373 sub GetFullSubscription { Link Here
359
            aqbooksellers.name as aqbooksellername,
341
            aqbooksellers.name as aqbooksellername,
360
            biblio.title as bibliotitle,
342
            biblio.title as bibliotitle,
361
            subscription.branchcode AS branchcode,
343
            subscription.branchcode AS branchcode,
362
            subscription.subscriptionid AS subscriptionid |;
344
            subscription.subscriptionid AS subscriptionid
363
    if (   C4::Context->preference('IndependantBranches')
364
        && C4::Context->userenv
365
        && C4::Context->userenv->{'flags'} != 1
366
        && C4::Context->userenv->{'branch'} ) {
367
        $query .= "
368
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
369
    }
370
    $query .= qq|
371
  FROM      serial 
345
  FROM      serial 
372
  LEFT JOIN subscription ON 
346
  LEFT JOIN subscription ON 
373
          (serial.subscriptionid=subscription.subscriptionid )
347
          (serial.subscriptionid=subscription.subscriptionid )
Lines 381-387 sub GetFullSubscription { Link Here
381
    $debug and warn "GetFullSubscription query: $query";
355
    $debug and warn "GetFullSubscription query: $query";
382
    my $sth = $dbh->prepare($query);
356
    my $sth = $dbh->prepare($query);
383
    $sth->execute($subscriptionid);
357
    $sth->execute($subscriptionid);
384
    return $sth->fetchall_arrayref( {} );
358
    my $subscriptions = $sth->fetchall_arrayref( {} );
359
    for my $subscription ( @$subscriptions ) {
360
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
361
    }
362
    return $subscriptions;
385
}
363
}
386
364
387
=head2 PrepareSerialsData
365
=head2 PrepareSerialsData
Lines 479-491 sub GetSubscriptionsFromBiblionumber { Link Here
479
        $subs->{ "periodicity" . $subs->{periodicity} }     = 1;
457
        $subs->{ "periodicity" . $subs->{periodicity} }     = 1;
480
        $subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
458
        $subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
481
        $subs->{ "status" . $subs->{'status'} }             = 1;
459
        $subs->{ "status" . $subs->{'status'} }             = 1;
482
        $subs->{'cannotedit'} =
483
          (      C4::Context->preference('IndependantBranches')
484
              && C4::Context->userenv
485
              && C4::Context->userenv->{flags} % 2 != 1
486
              && C4::Context->userenv->{branch}
487
              && $subs->{branchcode}
488
              && ( C4::Context->userenv->{branch} ne $subs->{branchcode} ) );
489
460
490
        if ( $subs->{enddate} eq '0000-00-00' ) {
461
        if ( $subs->{enddate} eq '0000-00-00' ) {
491
            $subs->{enddate} = '';
462
            $subs->{enddate} = '';
Lines 494-499 sub GetSubscriptionsFromBiblionumber { Link Here
494
        }
465
        }
495
        $subs->{'abouttoexpire'}       = abouttoexpire( $subs->{'subscriptionid'} );
466
        $subs->{'abouttoexpire'}       = abouttoexpire( $subs->{'subscriptionid'} );
496
        $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} );
467
        $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} );
468
        $subs->{cannotedit} = not can_edit_subscription( $subs );
497
        push @res, $subs;
469
        push @res, $subs;
498
    }
470
    }
499
    return \@res;
471
    return \@res;
Lines 519-534 sub GetFullSubscriptionsFromBiblionumber { Link Here
519
            year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
491
            year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
520
            biblio.title as bibliotitle,
492
            biblio.title as bibliotitle,
521
            subscription.branchcode AS branchcode,
493
            subscription.branchcode AS branchcode,
522
            subscription.subscriptionid AS subscriptionid|;
494
            subscription.subscriptionid AS subscriptionid
523
    if (   C4::Context->preference('IndependantBranches')
524
        && C4::Context->userenv
525
        && C4::Context->userenv->{'flags'} != 1
526
        && C4::Context->userenv->{'branch'} ) {
527
        $query .= "
528
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
529
    }
530
531
    $query .= qq|      
532
  FROM      serial 
495
  FROM      serial 
533
  LEFT JOIN subscription ON 
496
  LEFT JOIN subscription ON 
534
          (serial.subscriptionid=subscription.subscriptionid)
497
          (serial.subscriptionid=subscription.subscriptionid)
Lines 541-547 sub GetFullSubscriptionsFromBiblionumber { Link Here
541
          |;
504
          |;
542
    my $sth = $dbh->prepare($query);
505
    my $sth = $dbh->prepare($query);
543
    $sth->execute($biblionumber);
506
    $sth->execute($biblionumber);
544
    return $sth->fetchall_arrayref( {} );
507
    my $subscriptions = $sth->fetchall_arrayref( {} );
508
    for my $subscription ( @$subscriptions ) {
509
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
510
    }
511
    return $subscriptions;
545
}
512
}
546
513
547
=head2 GetSubscriptions
514
=head2 GetSubscriptions
Lines 616-634 sub GetSubscriptions { Link Here
616
    $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
583
    $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
617
    $sth = $dbh->prepare($sql);
584
    $sth = $dbh->prepare($sql);
618
    $sth->execute(@bind_params);
585
    $sth->execute(@bind_params);
619
    my @results;
586
    my $subscriptions = $sth->fetchall_arrayref( {} );
620
587
    for my $subscription ( @$subscriptions ) {
621
    while ( my $line = $sth->fetchrow_hashref ) {
588
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
622
        $line->{'cannotedit'} =
623
          (      C4::Context->preference('IndependantBranches')
624
              && C4::Context->userenv
625
              && C4::Context->userenv->{flags} % 2 != 1
626
              && C4::Context->userenv->{branch}
627
              && $line->{branchcode}
628
              && ( C4::Context->userenv->{branch} ne $line->{branchcode} ) );
629
        push @results, $line;
630
    }
589
    }
631
    return @results;
590
    return @$subscriptions;
632
}
591
}
633
592
634
=head2 GetSerials
593
=head2 GetSerials
Lines 2396-2401 sub is_barcode_in_use { Link Here
2396
    return @{$occurences};
2355
    return @{$occurences};
2397
}
2356
}
2398
2357
2358
sub can_edit_subscription {
2359
    my ( $subscription, $userid ) = @_;
2360
    my $flags = C4::Context->userenv->{flags};
2361
    $userid ||= C4::Context->userenv->{'id'};
2362
    if( C4::Context->preference('IndependantBranches')
2363
        and (
2364
               $flags % 2 == 1
2365
               or C4::Auth::haspermission( $userid, {serials => 'superserials'}),
2366
            or not defined $subscription->{branchcode}
2367
            or $subscription->{branchcode} eq ''
2368
            or $subscription->{branchcode} eq C4::Context->userenv->{'branch'}
2369
        )
2370
    ) {
2371
        return 1;
2372
    }
2373
     return 0;
2374
}
2375
2399
1;
2376
1;
2400
__END__
2377
__END__
2401
2378
(-)a/installer/data/mysql/de-DE/mandatory/userpermissions.sql (+1 lines)
Lines 50-55 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
50
   (15, 'receive_serials', 'Zugang von Heften'),
50
   (15, 'receive_serials', 'Zugang von Heften'),
51
   (15, 'renew_subscription', 'Abonnements verlängern'),
51
   (15, 'renew_subscription', 'Abonnements verlängern'),
52
   (15, 'routing', 'Umlauflisten verwalten'),
52
   (15, 'routing', 'Umlauflisten verwalten'),
53
   (15, 'superserials', 'Manage subscriptions from any branch'),
53
   (16, 'execute_reports', 'SQL-Reports ausführen'),
54
   (16, 'execute_reports', 'SQL-Reports ausführen'),
54
   (16, 'create_reports', 'SQL-Reports erstellen')
55
   (16, 'create_reports', 'SQL-Reports erstellen')
55
;
56
;
(-)a/installer/data/mysql/en/mandatory/userpermissions.sql (+1 lines)
Lines 50-55 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
50
   (15, 'receive_serials', 'Serials receiving'),
50
   (15, 'receive_serials', 'Serials receiving'),
51
   (15, 'renew_subscription', 'Renew a subscription'),
51
   (15, 'renew_subscription', 'Renew a subscription'),
52
   (15, 'routing', 'Routing'),
52
   (15, 'routing', 'Routing'),
53
   (15, 'superserials', 'Manage subscriptions from any branch'),
53
   (16, 'execute_reports', 'Execute SQL reports'),
54
   (16, 'execute_reports', 'Execute SQL reports'),
54
   (16, 'create_reports', 'Create SQL Reports')
55
   (16, 'create_reports', 'Create SQL Reports')
55
;
56
;
(-)a/installer/data/mysql/es-ES/mandatory/userpermissions.sql (+1 lines)
Lines 50-55 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
50
   (15, 'receive_serials', 'Serials receiving'),
50
   (15, 'receive_serials', 'Serials receiving'),
51
   (15, 'renew_subscription', 'Renew a subscription'),
51
   (15, 'renew_subscription', 'Renew a subscription'),
52
   (15, 'routing', 'Routing'),
52
   (15, 'routing', 'Routing'),
53
   (15, 'superserials', 'Manage subscriptions from any branch'),
53
   (16, 'execute_reports', 'Execute SQL reports'),
54
   (16, 'execute_reports', 'Execute SQL reports'),
54
   (16, 'create_reports', 'Create SQL Reports')
55
   (16, 'create_reports', 'Create SQL Reports')
55
;
56
;
(-)a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql (+1 lines)
Lines 50-55 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
50
   (15, 'receive_serials', 'Bulletiner les périodiques'),
50
   (15, 'receive_serials', 'Bulletiner les périodiques'),
51
   (15, 'renew_subscription', 'Renouveler les abonnements'),
51
   (15, 'renew_subscription', 'Renouveler les abonnements'),
52
   (15, 'routing', 'Mettre en circulation'),
52
   (15, 'routing', 'Mettre en circulation'),
53
   (15, 'superserials', 'Manage subscriptions from any branch'),
53
   (16, 'execute_reports', 'Lancer les rapports SQL'),
54
   (16, 'execute_reports', 'Lancer les rapports SQL'),
54
   (16, 'create_reports', 'Créer les rapports SQL Reports')
55
   (16, 'create_reports', 'Créer les rapports SQL Reports')
55
56
(-)a/installer/data/mysql/it-IT/necessari/userpermissions.sql (+1 lines)
Lines 52-57 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
52
   (15, 'receive_serials', 'Ricevi fascicoli'),
52
   (15, 'receive_serials', 'Ricevi fascicoli'),
53
   (15, 'renew_subscription', 'Rinnova un abbonamento'),
53
   (15, 'renew_subscription', 'Rinnova un abbonamento'),
54
   (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'),
54
   (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'),
55
   (15, 'superserials', 'Manage subscriptions from any branch'),
55
   (16, 'execute_reports', 'Esegui reports SQL'),
56
   (16, 'execute_reports', 'Esegui reports SQL'),
56
   (16, 'create_reports', 'Crea reports SQL')
57
   (16, 'create_reports', 'Crea reports SQL')
57
;
58
;
(-)a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql (+1 lines)
Lines 71-76 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
71
   (15, 'receive_serials', 'Heftemottak'),
71
   (15, 'receive_serials', 'Heftemottak'),
72
   (15, 'renew_subscription', 'Fornye abonnementer'),
72
   (15, 'renew_subscription', 'Fornye abonnementer'),
73
   (15, 'routing', 'Sirkulasjon'),
73
   (15, 'routing', 'Sirkulasjon'),
74
   (15, 'superserials', 'Manage subscriptions from any branch'),
74
   (16, 'execute_reports', 'Kjøre SQL-rapporter'),
75
   (16, 'execute_reports', 'Kjøre SQL-rapporter'),
75
   (16, 'create_reports', 'Opprette SQL-rapporter')
76
   (16, 'create_reports', 'Opprette SQL-rapporter')
76
;
77
;
(-)a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql (+1 lines)
Lines 51-56 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
51
   (15, 'receive_serials', 'Serials receiving'),
51
   (15, 'receive_serials', 'Serials receiving'),
52
   (15, 'renew_subscription', 'Renew a subscription'),
52
   (15, 'renew_subscription', 'Renew a subscription'),
53
   (15, 'routing', 'Routing'),
53
   (15, 'routing', 'Routing'),
54
   (15, 'superserials', 'Manage subscriptions from any branch'),
54
   (16, 'execute_reports', 'Execute SQL reports'),
55
   (16, 'execute_reports', 'Execute SQL reports'),
55
   (16, 'create_reports', 'Create SQL Reports')
56
   (16, 'create_reports', 'Create SQL Reports')
56
;
57
;
(-)a/installer/data/mysql/updatedatabase.pl (+7 lines)
Lines 5635-5640 if(C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
5635
    SetVersion($DBversion);
5635
    SetVersion($DBversion);
5636
}
5636
}
5637
5637
5638
$DBversion = "3.09.00.XXX";
5639
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5640
    $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES(15, 'superserials', 'Manage subscriptions from any branch')");
5641
    print "Upgrade to $DBversion done (Add superserials permission)\n";
5642
    SetVersion($DBversion);
5643
}
5644
5638
=head1 FUNCTIONS
5645
=head1 FUNCTIONS
5639
5646
5640
=head2 TableExists($table)
5647
=head2 TableExists($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/serials-toolbar.inc (-3 / +3 lines)
Lines 18-30 Link Here
18
    [% IF ( subscriptionid ) %]
18
    [% IF ( subscriptionid ) %]
19
	    var editmenu = [
19
	    var editmenu = [
20
	        [% IF ( CAN_user_serials_edit_subscription ) %]
20
	        [% IF ( CAN_user_serials_edit_subscription ) %]
21
            { text: _("Edit subscription"),  [% IF ( cannotedit ) %]disabled: true, [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=modify&amp;subscriptionid=[% subscriptionid %]" },
21
            { text: _("Edit subscription"),  [% IF ( cannotedit ) %]id:'disabled', [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=modify&amp;subscriptionid=[% subscriptionid %]" },
22
		[% END %]
22
		[% END %]
23
	        [% IF ( CAN_user_serials_create_subscription ) %]
23
	        [% IF ( CAN_user_serials_create_subscription ) %]
24
            { text: _("Edit as new (duplicate)"), [% IF ( cannotedit ) %]disabled: true, [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=[% subscriptionid %]" },
24
            { text: _("Edit as new (duplicate)"), [% IF ( cannotedit ) %]id:'disabled', [% END %] url: "/cgi-bin/koha/serials/subscription-add.pl?op=dup&amp;subscriptionid=[% subscriptionid %]" },
25
		[% END %]
25
		[% END %]
26
	        [% IF ( CAN_user_serials_delete_subscription ) %]
26
	        [% IF ( CAN_user_serials_delete_subscription ) %]
27
            { text: _("Delete subscription"), [% IF ( cannotedit ) %]disabled: true, [% END %] onclick: {fn: confirm_deletion }}
27
            { text: _("Delete subscription"), [% IF ( cannotedit ) %]id:'disabled', [% END %] onclick: {fn: confirm_deletion }}
28
		[% END %]
28
		[% END %]
29
	    ];
29
	    ];
30
	 [% END %]
30
	 [% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-home.tt (-16 / +18 lines)
Lines 75-85 Serials updated : Link Here
75
[% END %]
75
[% END %]
76
</table>
76
</table>
77
[% END %]
77
[% END %]
78
        [% IF ( done_searched ) %]
78
[% IF ( done_searched ) %]
79
<h2>Serials subscriptions</h2>
79
<h2>Serials subscriptions</h2>
80
80
  [% IF ( subscriptions and size ) %]
81
    <table id="srlt">
81
    <table id="srlt">
82
	<thead>
82
      <thead>
83
        <tr>
83
        <tr>
84
            <th>ISSN</th>
84
            <th>ISSN</th>
85
            <th>Title</th>
85
            <th>Title</th>
Lines 89-100 Serials updated : Link Here
89
            <th>Expiration date</th>
89
            <th>Expiration date</th>
90
            [% IF ( routing && CAN_user_serials_routing ) %]
90
            [% IF ( routing && CAN_user_serials_routing ) %]
91
              <th>Routing list</th>
91
              <th>Routing list</th>
92
            [% END %]        
92
            [% END %]
93
            <th>&nbsp;</th>
93
            <th>&nbsp;</th>
94
            <th>&nbsp;</th>
94
            <th>&nbsp;</th>
95
        </tr>
95
        </tr>
96
	</thead>
96
      </thead>
97
    <tfoot>
97
      <tfoot>
98
        <tr>
98
        <tr>
99
            <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td>
99
            <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td>
100
            <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td>
100
            <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td>
Lines 106-114 Serials updated : Link Here
106
            <td></td>
106
            <td></td>
107
            <td></td>
107
            <td></td>
108
        </tr>
108
        </tr>
109
    </tfoot>
109
      </tfoot>
110
	<tbody> 
110
      <tbody>
111
        [% FOREACH subscription IN subscriptions %]
111
        [% FOREACH subscription IN subscriptions %]
112
          [% UNLESS subscription.cannotedit %]
112
            <tr>
113
            <tr>
113
                <td>
114
                <td>
114
                [% IF ( subscription.issn ) %][% subscription.issn %]
115
                [% IF ( subscription.issn ) %][% subscription.issn %]
Lines 145-162 Serials updated : Link Here
145
                <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
146
                <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
146
                </td>
147
                </td>
147
                <td>
148
                <td>
148
                [% IF ( subscription.cannotedit ) %]
149
                  [% IF ( CAN_user_serials_receive_serials ) %]
149
                  &nbsp;        
150
                    <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
150
                [% ELSE %]
151
                  [% END %]
151
                  [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>[% END %]
152
                [% END %]
153
                </td>
152
                </td>
154
            </tr>
153
            </tr>
154
          [% END %]
155
        [% END %]
155
        [% END %]
156
	</tbody>
156
      </tbody>
157
    </table>
157
    </table>
158
    
158
  [% ELSE %]
159
        [% END %]
159
    <p>Sorry, there is no result for your search.</p>
160
  [% END %]
161
[% END %]
160
162
161
</div>
163
</div>
162
</div>
164
</div>
(-)a/serials/serials-collection.pl (-2 / +2 lines)
Lines 36-43 my $query = new CGI; Link Here
36
my $op = $query->param('op') || q{};
36
my $op = $query->param('op') || q{};
37
my $dbh = C4::Context->dbh;
37
my $dbh = C4::Context->dbh;
38
38
39
my ($template, $loggedinuser, $cookie);
39
my ($template, $loggedinuser, $cookie)
40
($template, $loggedinuser, $cookie)
41
  = get_template_and_user({template_name => "serials/serials-collection.tmpl",
40
  = get_template_and_user({template_name => "serials/serials-collection.tmpl",
42
                            query => $query,
41
                            query => $query,
43
                            type => "intranet",
42
                            type => "intranet",
Lines 99-104 if (@subscriptionid){ Link Here
99
   my @subscriptioninformation=();
98
   my @subscriptioninformation=();
100
   foreach my $subscriptionid (@subscriptionid){
99
   foreach my $subscriptionid (@subscriptionid){
101
    my $subs= GetSubscription($subscriptionid);
100
    my $subs= GetSubscription($subscriptionid);
101
102
    $subs->{opacnote}     =~ s/\n/\<br\/\>/g;
102
    $subs->{opacnote}     =~ s/\n/\<br\/\>/g;
103
    $subs->{missinglist}  =~ s/\n/\<br\/\>/g;
103
    $subs->{missinglist}  =~ s/\n/\<br\/\>/g;
104
    $subs->{recievedlist} =~ s/\n/\<br\/\>/g;
104
    $subs->{recievedlist} =~ s/\n/\<br\/\>/g;
(-)a/serials/serials-edit.pl (+1 lines)
Lines 134-139 foreach my $serialid (@serialids) { Link Here
134
        && !$processedserialid{$serialid} )
134
        && !$processedserialid{$serialid} )
135
    {
135
    {
136
        my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above
136
        my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above
137
137
        for my $d ( qw( publisheddate planneddate )){
138
        for my $d ( qw( publisheddate planneddate )){
138
            if ( $serinfo->{$d} =~m/^00/ ) {
139
            if ( $serinfo->{$d} =~m/^00/ ) {
139
                $serinfo->{$d} = q{};
140
                $serinfo->{$d} = q{};
(-)a/serials/serials-home.pl (+1 lines)
Lines 111-116 $template->param( Link Here
111
    ISSN_filter   => $ISSN,
111
    ISSN_filter   => $ISSN,
112
    done_searched => $searched,
112
    done_searched => $searched,
113
    routing       => $routing,
113
    routing       => $routing,
114
    size          => scalar ( map {$_->{cannotedit} ? () : 1} @subscriptions ),
114
    (uc(C4::Context->preference("marcflavour"))) => 1
115
    (uc(C4::Context->preference("marcflavour"))) => 1
115
);
116
);
116
117
(-)a/serials/subscription-add.pl (-1 / +2 lines)
Lines 69-75 if ($op eq 'modify' || $op eq 'dup' || $op eq 'modsubscription') { Link Here
69
69
70
    my $subscriptionid = $query->param('subscriptionid');
70
    my $subscriptionid = $query->param('subscriptionid');
71
    $subs = GetSubscription($subscriptionid);
71
    $subs = GetSubscription($subscriptionid);
72
## FIXME : Check rights to edit if mod. Could/Should display an error message.
72
73
    ## FIXME : Check rights to edit if mod. Could/Should display an error message.
73
    if ($subs->{'cannotedit'} && $op eq 'modify'){
74
    if ($subs->{'cannotedit'} && $op eq 'modify'){
74
      carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
75
      carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
75
      print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
76
      print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
(-)a/serials/subscription-detail.pl (-24 / +9 lines)
Lines 32-62 my $query = new CGI; Link Here
32
my $op = $query->param('op') || q{};
32
my $op = $query->param('op') || q{};
33
my $issueconfirmed = $query->param('issueconfirmed');
33
my $issueconfirmed = $query->param('issueconfirmed');
34
my $dbh = C4::Context->dbh;
34
my $dbh = C4::Context->dbh;
35
my ($template, $loggedinuser, $cookie, $hemisphere);
36
my $subscriptionid = $query->param('subscriptionid');
35
my $subscriptionid = $query->param('subscriptionid');
37
my $subs = GetSubscription($subscriptionid);
38
39
$subs->{enddate} = GetExpirationDate($subscriptionid);
40
41
if ($op && $op eq 'del') {
42
	if ($subs->{'cannotedit'}){
43
		carp "Attempt to delete subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
44
		print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
45
	}
46
	DelSubscription($subscriptionid);
47
	print "Content-Type: text/html\n\n<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=serials-home.pl\"></html>";
48
	exit;
49
}
50
36
51
my ($totalissues,@serialslist) = GetSerials($subscriptionid);
52
$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
53
# the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...)
37
# the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...)
54
38
55
# Permission needed if it is a deletion (del) : delete_subscription
39
# Permission needed if it is a deletion (del) : delete_subscription
56
# Permission needed otherwise : *
40
# Permission needed otherwise : *
57
my $permission = ($op eq "del") ? "delete_subscription" : "*";
41
my $permission = ($op eq "del") ? "delete_subscription" : "*";
58
42
59
($template, $loggedinuser, $cookie)
43
my ($template, $loggedinuser, $cookie)
60
= get_template_and_user({template_name => "serials/subscription-detail.tmpl",
44
= get_template_and_user({template_name => "serials/subscription-detail.tmpl",
61
                query => $query,
45
                query => $query,
62
                type => "intranet",
46
                type => "intranet",
Lines 65-71 my $permission = ($op eq "del") ? "delete_subscription" : "*"; Link Here
65
                debug => 1,
49
                debug => 1,
66
                });
50
                });
67
51
68
$$subs{enddate} ||= GetExpirationDate($subscriptionid);
52
53
my $subs = GetSubscription($subscriptionid);
54
$subs->{enddate} ||= GetExpirationDate($subscriptionid);
55
56
my ($totalissues,@serialslist) = GetSerials($subscriptionid);
57
$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue)
69
58
70
if ($op eq 'del') {
59
if ($op eq 'del') {
71
	if ($$subs{'cannotedit'}){
60
	if ($$subs{'cannotedit'}){
Lines 119-136 if (! $subs->{periodicity}) { Link Here
119
    $subs->{periodicity} = '0';
108
    $subs->{periodicity} = '0';
120
}
109
}
121
my $default_bib_view = get_default_view();
110
my $default_bib_view = get_default_view();
111
my $can_edit = C4::Serials::can_edit_subscription( $subs );
122
$template->param(
112
$template->param(
123
	subscriptionid => $subscriptionid,
113
	subscriptionid => $subscriptionid,
124
    serialslist => \@serialslist,
114
    serialslist => \@serialslist,
125
    hasRouting  => $hasRouting,
115
    hasRouting  => $hasRouting,
126
    routing => C4::Context->preference("RoutingSerials"),
116
    routing => C4::Context->preference("RoutingSerials"),
127
    totalissues => $totalissues,
117
    totalissues => $totalissues,
128
    hemisphere => $hemisphere,
118
    cannotedit => (not C4::Serials::can_edit_subscription( $subs )),
129
    cannotedit =>(C4::Context->preference('IndependantBranches') &&
130
                C4::Context->userenv &&
131
                C4::Context->userenv->{flags} % 2 !=1  &&
132
                C4::Context->userenv->{branch} && $subs->{branchcode} &&
133
                (C4::Context->userenv->{branch} ne $subs->{branchcode})),
134
    'periodicity' . $subs->{periodicity} => 1,
119
    'periodicity' . $subs->{periodicity} => 1,
135
    'arrival' . $subs->{dow} => 1,
120
    'arrival' . $subs->{dow} => 1,
136
    'numberpattern' . $subs->{numberpattern} => 1,
121
    'numberpattern' . $subs->{numberpattern} => 1,
(-)a/serials/subscription-renew.pl (-1 / +1 lines)
Lines 83-88 if ( $op eq "renew" ) { Link Here
83
}
83
}
84
84
85
my $subscription = GetSubscription($subscriptionid);
85
my $subscription = GetSubscription($subscriptionid);
86
86
if ($subscription->{'cannotedit'}){
87
if ($subscription->{'cannotedit'}){
87
  carp "Attempt to renew subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
88
  carp "Attempt to renew subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
88
  print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
89
  print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
89
- 

Return to bug 8435