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

(-)a/C4/Auth.pm (-2 / +2 lines)
Lines 1526-1532 sub getuserflags { Link Here
1526
            $userflags->{$flag} = 0;
1526
            $userflags->{$flag} = 0;
1527
        }
1527
        }
1528
    }
1528
    }
1529
1530
    # get subpermissions and merge with top-level permissions
1529
    # get subpermissions and merge with top-level permissions
1531
    my $user_subperms = get_user_subpermissions($userid);
1530
    my $user_subperms = get_user_subpermissions($userid);
1532
    foreach my $module (keys %$user_subperms) {
1531
    foreach my $module (keys %$user_subperms) {
Lines 1622-1628 sub haspermission { Link Here
1622
    my ($userid, $flagsrequired) = @_;
1621
    my ($userid, $flagsrequired) = @_;
1623
    my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
1622
    my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?");
1624
    $sth->execute($userid);
1623
    $sth->execute($userid);
1625
    my $flags = getuserflags($sth->fetchrow(), $userid);
1624
    my $row = $sth->fetchrow();
1625
    my $flags = getuserflags($row, $userid);
1626
    if ( $userid eq C4::Context->config('user') ) {
1626
    if ( $userid eq C4::Context->config('user') ) {
1627
        # Super User Account from /etc/koha.conf
1627
        # Super User Account from /etc/koha.conf
1628
        $flags->{'superlibrarian'} = 1;
1628
        $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 204-218 sub GetSerialInformation { Link Here
204
    my ($serialid) = @_;
205
    my ($serialid) = @_;
205
    my $dbh        = C4::Context->dbh;
206
    my $dbh        = C4::Context->dbh;
206
    my $query      = qq|
207
    my $query      = qq|
207
        SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid |;
208
        SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid
208
    if (   C4::Context->preference('IndependantBranches')
209
        && C4::Context->userenv
210
        && C4::Context->userenv->{'flags'} != 1
211
        && C4::Context->userenv->{'branch'} ) {
212
        $query .= "
213
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
214
    }
215
    $query .= qq|             
216
        FROM   serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid
209
        FROM   serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid
217
        WHERE  serialid = ?
210
        WHERE  serialid = ?
218
    |;
211
    |;
Lines 251-256 sub GetSerialInformation { Link Here
251
    $data->{ "status" . $data->{'serstatus'} } = 1;
244
    $data->{ "status" . $data->{'serstatus'} } = 1;
252
    $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1;
245
    $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1;
253
    $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} );
246
    $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} );
247
    $data->{cannotedit} = not can_edit_subscription( $data );
254
    return $data;
248
    return $data;
255
}
249
}
256
250
Lines 309-323 sub GetSubscription { Link Here
309
                subscriptionhistory.*,
303
                subscriptionhistory.*,
310
                aqbooksellers.name AS aqbooksellername,
304
                aqbooksellers.name AS aqbooksellername,
311
                biblio.title AS bibliotitle,
305
                biblio.title AS bibliotitle,
312
                subscription.biblionumber as bibnum);
306
                subscription.biblionumber as bibnum
313
    if (   C4::Context->preference('IndependantBranches')
314
        && C4::Context->userenv
315
        && C4::Context->userenv->{'flags'} != 1
316
        && C4::Context->userenv->{'branch'} ) {
317
        $query .= "
318
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
319
    }
320
    $query .= qq(             
321
       FROM subscription
307
       FROM subscription
322
       LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid
308
       LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid
323
       LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id
309
       LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id
Lines 325-340 sub GetSubscription { Link Here
325
       WHERE subscription.subscriptionid = ?
311
       WHERE subscription.subscriptionid = ?
326
    );
312
    );
327
313
328
    #     if (C4::Context->preference('IndependantBranches') &&
329
    #         C4::Context->userenv &&
330
    #         C4::Context->userenv->{'flags'} != 1){
331
    # #       $debug and warn "flags: ".C4::Context->userenv->{'flags'};
332
    #       $query.=" AND subscription.branchcode IN ('".C4::Context->userenv->{'branch'}."',\"\")";
333
    #     }
334
    $debug and warn "query : $query\nsubsid :$subscriptionid";
314
    $debug and warn "query : $query\nsubsid :$subscriptionid";
335
    my $sth = $dbh->prepare($query);
315
    my $sth = $dbh->prepare($query);
336
    $sth->execute($subscriptionid);
316
    $sth->execute($subscriptionid);
337
    return $sth->fetchrow_hashref;
317
    my $subscription = $sth->fetchrow_hashref;
318
    $subscription->{cannotedit} = not can_edit_subscription( $subscription );
319
    return $subscription;
338
}
320
}
339
321
340
=head2 GetFullSubscription
322
=head2 GetFullSubscription
Lines 358-372 sub GetFullSubscription { Link Here
358
            aqbooksellers.name as aqbooksellername,
340
            aqbooksellers.name as aqbooksellername,
359
            biblio.title as bibliotitle,
341
            biblio.title as bibliotitle,
360
            subscription.branchcode AS branchcode,
342
            subscription.branchcode AS branchcode,
361
            subscription.subscriptionid AS subscriptionid |;
343
            subscription.subscriptionid AS subscriptionid
362
    if (   C4::Context->preference('IndependantBranches')
363
        && C4::Context->userenv
364
        && C4::Context->userenv->{'flags'} != 1
365
        && C4::Context->userenv->{'branch'} ) {
366
        $query .= "
367
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
368
    }
369
    $query .= qq|
370
  FROM      serial 
344
  FROM      serial 
371
  LEFT JOIN subscription ON 
345
  LEFT JOIN subscription ON 
372
          (serial.subscriptionid=subscription.subscriptionid )
346
          (serial.subscriptionid=subscription.subscriptionid )
Lines 380-386 sub GetFullSubscription { Link Here
380
    $debug and warn "GetFullSubscription query: $query";
354
    $debug and warn "GetFullSubscription query: $query";
381
    my $sth = $dbh->prepare($query);
355
    my $sth = $dbh->prepare($query);
382
    $sth->execute($subscriptionid);
356
    $sth->execute($subscriptionid);
383
    return $sth->fetchall_arrayref( {} );
357
    my $subscriptions = $sth->fetchall_arrayref( {} );
358
    for my $subscription ( @$subscriptions ) {
359
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
360
    }
361
    return $subscriptions;
384
}
362
}
385
363
386
=head2 PrepareSerialsData
364
=head2 PrepareSerialsData
Lines 478-490 sub GetSubscriptionsFromBiblionumber { Link Here
478
        $subs->{ "periodicity" . $subs->{periodicity} }     = 1;
456
        $subs->{ "periodicity" . $subs->{periodicity} }     = 1;
479
        $subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
457
        $subs->{ "numberpattern" . $subs->{numberpattern} } = 1;
480
        $subs->{ "status" . $subs->{'status'} }             = 1;
458
        $subs->{ "status" . $subs->{'status'} }             = 1;
481
        $subs->{'cannotedit'} =
482
          (      C4::Context->preference('IndependantBranches')
483
              && C4::Context->userenv
484
              && C4::Context->userenv->{flags} % 2 != 1
485
              && C4::Context->userenv->{branch}
486
              && $subs->{branchcode}
487
              && ( C4::Context->userenv->{branch} ne $subs->{branchcode} ) );
488
459
489
        if ( $subs->{enddate} eq '0000-00-00' ) {
460
        if ( $subs->{enddate} eq '0000-00-00' ) {
490
            $subs->{enddate} = '';
461
            $subs->{enddate} = '';
Lines 493-498 sub GetSubscriptionsFromBiblionumber { Link Here
493
        }
464
        }
494
        $subs->{'abouttoexpire'}       = abouttoexpire( $subs->{'subscriptionid'} );
465
        $subs->{'abouttoexpire'}       = abouttoexpire( $subs->{'subscriptionid'} );
495
        $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} );
466
        $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} );
467
        $subs->{cannotedit} = not can_edit_subscription( $subs );
496
        push @res, $subs;
468
        push @res, $subs;
497
    }
469
    }
498
    return \@res;
470
    return \@res;
Lines 518-533 sub GetFullSubscriptionsFromBiblionumber { Link Here
518
            year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
490
            year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
519
            biblio.title as bibliotitle,
491
            biblio.title as bibliotitle,
520
            subscription.branchcode AS branchcode,
492
            subscription.branchcode AS branchcode,
521
            subscription.subscriptionid AS subscriptionid|;
493
            subscription.subscriptionid AS subscriptionid
522
    if (   C4::Context->preference('IndependantBranches')
523
        && C4::Context->userenv
524
        && C4::Context->userenv->{'flags'} != 1
525
        && C4::Context->userenv->{'branch'} ) {
526
        $query .= "
527
      , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit ";
528
    }
529
530
    $query .= qq|      
531
  FROM      serial 
494
  FROM      serial 
532
  LEFT JOIN subscription ON 
495
  LEFT JOIN subscription ON 
533
          (serial.subscriptionid=subscription.subscriptionid)
496
          (serial.subscriptionid=subscription.subscriptionid)
Lines 540-546 sub GetFullSubscriptionsFromBiblionumber { Link Here
540
          |;
503
          |;
541
    my $sth = $dbh->prepare($query);
504
    my $sth = $dbh->prepare($query);
542
    $sth->execute($biblionumber);
505
    $sth->execute($biblionumber);
543
    return $sth->fetchall_arrayref( {} );
506
    my $subscriptions = $sth->fetchall_arrayref( {} );
507
    for my $subscription ( @$subscriptions ) {
508
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
509
    }
510
    return $subscriptions;
544
}
511
}
545
512
546
=head2 GetSubscriptions
513
=head2 GetSubscriptions
Lines 615-633 sub GetSubscriptions { Link Here
615
    $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
582
    $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params );
616
    $sth = $dbh->prepare($sql);
583
    $sth = $dbh->prepare($sql);
617
    $sth->execute(@bind_params);
584
    $sth->execute(@bind_params);
618
    my @results;
585
    my $subscriptions = $sth->fetchall_arrayref( {} );
619
586
    for my $subscription ( @$subscriptions ) {
620
    while ( my $line = $sth->fetchrow_hashref ) {
587
        $subscription->{cannotedit} = not can_edit_subscription( $subscription );
621
        $line->{'cannotedit'} =
622
          (      C4::Context->preference('IndependantBranches')
623
              && C4::Context->userenv
624
              && C4::Context->userenv->{flags} % 2 != 1
625
              && C4::Context->userenv->{branch}
626
              && $line->{branchcode}
627
              && ( C4::Context->userenv->{branch} ne $line->{branchcode} ) );
628
        push @results, $line;
629
    }
588
    }
630
    return @results;
589
    return @$subscriptions;
631
}
590
}
632
591
633
=head2 GetSerials
592
=head2 GetSerials
Lines 2361-2366 sub is_barcode_in_use { Link Here
2361
    return @{$occurences};
2320
    return @{$occurences};
2362
}
2321
}
2363
2322
2323
sub can_edit_subscription {
2324
    my ( $subscription, $userid ) = @_;
2325
    my $flags = C4::Context->userenv->{flags};
2326
    $userid ||= C4::Context->userenv->{'id'};
2327
    if( C4::Context->preference('IndependantBranches')
2328
        and (
2329
               $flags % 2 == 1
2330
               or C4::Auth::haspermission( $userid, {serials => 'superserials'}),
2331
            or not defined $subscription->{branchcode}
2332
            or $subscription->{branchcode} eq ''
2333
            or $subscription->{branchcode} eq C4::Context->userenv->{'branch'}
2334
        )
2335
    ) {
2336
        return 1;
2337
    }
2338
     return 0;
2339
}
2340
2364
1;
2341
1;
2365
__END__
2342
__END__
2366
2343
(-)a/installer/data/mysql/de-DE/mandatory/userpermissions.sql (+1 lines)
Lines 48-53 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
48
   (15, 'receive_serials', 'Zugang von Heften'),
48
   (15, 'receive_serials', 'Zugang von Heften'),
49
   (15, 'renew_subscription', 'Abonnements verlängern'),
49
   (15, 'renew_subscription', 'Abonnements verlängern'),
50
   (15, 'routing', 'Umlauflisten verwalten'),
50
   (15, 'routing', 'Umlauflisten verwalten'),
51
   (15, 'superserials', 'Manage subscriptions from any branch'),
51
   (16, 'execute_reports', 'SQL-Reports ausführen'),
52
   (16, 'execute_reports', 'SQL-Reports ausführen'),
52
   (16, 'create_reports', 'SQL-Reports erstellen')
53
   (16, 'create_reports', 'SQL-Reports erstellen')
53
;
54
;
(-)a/installer/data/mysql/en/mandatory/userpermissions.sql (+1 lines)
Lines 48-53 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
48
   (15, 'receive_serials', 'Serials receiving'),
48
   (15, 'receive_serials', 'Serials receiving'),
49
   (15, 'renew_subscription', 'Renew a subscription'),
49
   (15, 'renew_subscription', 'Renew a subscription'),
50
   (15, 'routing', 'Routing'),
50
   (15, 'routing', 'Routing'),
51
   (15, 'superserials', 'Manage subscriptions from any branch'),
51
   (16, 'execute_reports', 'Execute SQL reports'),
52
   (16, 'execute_reports', 'Execute SQL reports'),
52
   (16, 'create_reports', 'Create SQL Reports')
53
   (16, 'create_reports', 'Create SQL Reports')
53
;
54
;
(-)a/installer/data/mysql/es-ES/mandatory/userpermissions.sql (+1 lines)
Lines 48-53 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
48
   (15, 'receive_serials', 'Serials receiving'),
48
   (15, 'receive_serials', 'Serials receiving'),
49
   (15, 'renew_subscription', 'Renew a subscription'),
49
   (15, 'renew_subscription', 'Renew a subscription'),
50
   (15, 'routing', 'Routing'),
50
   (15, 'routing', 'Routing'),
51
   (15, 'superserials', 'Manage subscriptions from any branch'),
51
   (16, 'execute_reports', 'Execute SQL reports'),
52
   (16, 'execute_reports', 'Execute SQL reports'),
52
   (16, 'create_reports', 'Create SQL Reports')
53
   (16, 'create_reports', 'Create SQL Reports')
53
;
54
;
(-)a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql (+1 lines)
Lines 48-53 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
48
   (15, 'receive_serials', 'Bulletiner les périodiques'),
48
   (15, 'receive_serials', 'Bulletiner les périodiques'),
49
   (15, 'renew_subscription', 'Renouveler les abonnements'),
49
   (15, 'renew_subscription', 'Renouveler les abonnements'),
50
   (15, 'routing', 'Mettre en circulation'),
50
   (15, 'routing', 'Mettre en circulation'),
51
   (15, 'superserials', 'Manage subscriptions from any branch'),
51
   (16, 'execute_reports', 'Lancer les rapports SQL'),
52
   (16, 'execute_reports', 'Lancer les rapports SQL'),
52
   (16, 'create_reports', 'Créer les rapports SQL Reports')
53
   (16, 'create_reports', 'Créer les rapports SQL Reports')
53
54
(-)a/installer/data/mysql/it-IT/necessari/userpermissions.sql (+1 lines)
Lines 50-55 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
50
   (15, 'receive_serials', 'Ricevi fascicoli'),
50
   (15, 'receive_serials', 'Ricevi fascicoli'),
51
   (15, 'renew_subscription', 'Rinnova un abbonamento'),
51
   (15, 'renew_subscription', 'Rinnova un abbonamento'),
52
   (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'),
52
   (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'),
53
   (15, 'superserials', 'Manage subscriptions from any branch'),
53
   (16, 'execute_reports', 'Esegui reports SQL'),
54
   (16, 'execute_reports', 'Esegui reports SQL'),
54
   (16, 'create_reports', 'Crea reports SQL')
55
   (16, 'create_reports', 'Crea reports SQL')
55
;
56
;
(-)a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql (+1 lines)
Lines 69-74 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
69
   (15, 'receive_serials', 'Heftemottak'),
69
   (15, 'receive_serials', 'Heftemottak'),
70
   (15, 'renew_subscription', 'Fornye abonnementer'),
70
   (15, 'renew_subscription', 'Fornye abonnementer'),
71
   (15, 'routing', 'Sirkulasjon'),
71
   (15, 'routing', 'Sirkulasjon'),
72
   (15, 'superserials', 'Manage subscriptions from any branch'),
72
   (16, 'execute_reports', 'Kjøre SQL-rapporter'),
73
   (16, 'execute_reports', 'Kjøre SQL-rapporter'),
73
   (16, 'create_reports', 'Opprette SQL-rapporter')
74
   (16, 'create_reports', 'Opprette SQL-rapporter')
74
;
75
;
(-)a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql (+1 lines)
Lines 49-54 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
49
   (15, 'receive_serials', 'Serials receiving'),
49
   (15, 'receive_serials', 'Serials receiving'),
50
   (15, 'renew_subscription', 'Renew a subscription'),
50
   (15, 'renew_subscription', 'Renew a subscription'),
51
   (15, 'routing', 'Routing'),
51
   (15, 'routing', 'Routing'),
52
   (15, 'superserials', 'Manage subscriptions from any branch'),
52
   (16, 'execute_reports', 'Execute SQL reports'),
53
   (16, 'execute_reports', 'Execute SQL reports'),
53
   (16, 'create_reports', 'Create SQL Reports')
54
   (16, 'create_reports', 'Create SQL Reports')
54
;
55
;
(-)a/installer/data/mysql/updatedatabase.pl (+7 lines)
Lines 5536-5541 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
5536
    SetVersion($DBversion);
5536
    SetVersion($DBversion);
5537
}
5537
}
5538
5538
5539
$DBversion = "3.09.00.XXX";
5540
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5541
    $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES(15, 'superserials', 'Manage subscriptions from any branch')");
5542
    print "Upgrade to $DBversion done (Add superserials permission)\n";
5543
    SetVersion($DBversion);
5544
}
5545
5539
=head1 FUNCTIONS
5546
=head1 FUNCTIONS
5540
5547
5541
=head2 TableExists($table)
5548
=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 (-23 / +21 lines)
Lines 74-84 Serials updated : Link Here
74
[% END %]
74
[% END %]
75
</table>
75
</table>
76
[% END %]
76
[% END %]
77
        [% IF ( done_searched ) %]
77
[% IF ( done_searched ) %]
78
<h2>Serials subscriptions</h2>
78
<h2>Serials subscriptions</h2>
79
79
  [% IF ( subscriptions and size ) %]
80
    <table id="srlt">
80
    <table id="srlt">
81
	<thead>
81
      <thead>
82
        <tr>
82
        <tr>
83
            <th>ISSN</th>
83
            <th>ISSN</th>
84
            <th>Title</th>
84
            <th>Title</th>
Lines 88-99 Serials updated : Link Here
88
            </th>
88
            </th>
89
            [% IF ( routing && CAN_user_serials_routing ) %]
89
            [% IF ( routing && CAN_user_serials_routing ) %]
90
              <th>Routing list</th>
90
              <th>Routing list</th>
91
            [% END %]        
91
            [% END %]
92
            <th>&nbsp;</th>
92
            <th>&nbsp;</th>
93
            <th>&nbsp;</th>
93
            <th>&nbsp;</th>
94
        </tr>
94
        </tr>
95
	</thead>
95
      </thead>
96
    <tfoot>
96
      <tfoot>
97
        <tr>
97
        <tr>
98
            <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td>
98
            <td><input type="text" class="filter" data-column_num="0" placeholder="Search ISSN" /></td>
99
            <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td>
99
            <td><input type="text" class="filter" data-column_num="1" placeholder="Search title" /></td>
Lines 103-111 Serials updated : Link Here
103
            <td></td>
103
            <td></td>
104
            <td></td>
104
            <td></td>
105
        </tr>
105
        </tr>
106
    </tfoot>
106
      </tfoot>
107
	<tbody> 
107
      <tbody>
108
        [% FOREACH subscription IN subscriptions %]
108
        [% FOREACH subscription IN subscriptions %]
109
          [% UNLESS subscription.cannotedit %]
109
            <tr>
110
            <tr>
110
                <td>
111
                <td>
111
                [% IF ( subscription.issn ) %][% subscription.issn %]
112
                [% IF ( subscription.issn ) %][% subscription.issn %]
Lines 122-153 Serials updated : Link Here
122
                </td>
123
                </td>
123
                [% IF ( routing && CAN_user_serials_routing ) %]
124
                [% IF ( routing && CAN_user_serials_routing ) %]
124
                <td>
125
                <td>
125
                    [% IF ( subscription.cannotedit ) %]
126
                    [% IF ( subscription.routingedit ) %]
126
                        &nbsp;
127
                        <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit</a>
127
                    [% ELSE %]
128
                    [% ELSE %]
128
                        [% IF ( subscription.routingedit ) %]
129
                        <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=new">New</a>
129
                            <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]">Edit</a>
130
                        [% ELSE %]
131
                            <a href="/cgi-bin/koha/serials/routing.pl?subscriptionid=[% subscription.subscriptionid %]&amp;op=new">New</a>
132
                        [% END %]
133
                    [% END %]
130
                    [% END %]
134
                </td>
131
                </td>
135
                [% END %]
132
                [% END %]
136
                <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
133
                <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a>
137
                </td>
134
                </td>
138
                <td>
135
                <td>
139
                [% IF ( subscription.cannotedit ) %]
136
                  [% IF ( CAN_user_serials_receive_serials ) %]
140
                  &nbsp;        
137
                    <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&amp;serstatus=1,3,7">Serial receive</a>
141
                [% ELSE %]
138
                  [% END %]
142
                  [% 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 %]
143
                [% END %]
144
                </td>
139
                </td>
145
            </tr>
140
            </tr>
141
          [% END %]
146
        [% END %]
142
        [% END %]
147
	</tbody>
143
      </tbody>
148
    </table>
144
    </table>
149
    
145
  [% ELSE %]
150
        [% END %]
146
    <p>Sorry, there is no result for your search.</p>
147
  [% END %]
148
[% END %]
151
149
152
</div>
150
</div>
153
</div>
151
</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