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

(-)a/C4/VirtualShelves.pm (-3 / +3 lines)
Lines 468-477 sub ShelfPossibleAction { Link Here
468
468
469
    return 0 unless defined($shelfnumber);
469
    return 0 unless defined($shelfnumber);
470
470
471
    if ( $user > 0 ) {
471
    if ( $user > 0 and $action eq 'delete_shelf' ) {
472
        my $borrower = C4::Members::GetMember( borrowernumber => $user );
472
        my $borrower = C4::Members::GetMember( borrowernumber => $user );
473
        return 1
473
        return 1
474
            if C4::Auth::haspermission( $borrower->{userid}, { shelves => 'manage_shelves' } );
474
            if C4::Auth::haspermission( $borrower->{userid}, { shelves => 'delete_shelves' } );
475
    }
475
    }
476
476
477
    my $dbh = C4::Context->dbh;
477
    my $dbh = C4::Context->dbh;
Lines 525-531 sub ShelfPossibleAction { Link Here
525
            return (0, 5); # code 5: should be private list
525
            return (0, 5); # code 5: should be private list
526
        }
526
        }
527
    }
527
    }
528
    elsif($action eq 'manage') {
528
    elsif($action eq 'manage' or $action eq 'delete_shelf') {
529
        return 1 if $user && $shelf->{owner}==$user;
529
        return 1 if $user && $shelf->{owner}==$user;
530
    }
530
    }
531
    return 0;
531
    return 0;
(-)a/C4/VirtualShelves/Page.pm (-2 / +8 lines)
Lines 312-317 sub shelfpage { Link Here
312
                $showadd = 1;
312
                $showadd = 1;
313
                my $i = 0;
313
                my $i = 0;
314
                my $manageshelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' );
314
                my $manageshelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' );
315
                my $can_delete_shelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete_shelf' );
315
                $template->param(
316
                $template->param(
316
                    shelfname           => $shelfname,
317
                    shelfname           => $shelfname,
317
                    shelfnumber         => $shelfnumber,
318
                    shelfnumber         => $shelfnumber,
Lines 320-325 sub shelfpage { Link Here
320
                    manageshelf         => $manageshelf,
321
                    manageshelf         => $manageshelf,
321
                    allowremovingitems  => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete'),
322
                    allowremovingitems  => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete'),
322
                    allowaddingitem     => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add'),
323
                    allowaddingitem     => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add'),
324
                    allowdeletingshelf  => $can_delete_shelf,
323
                    "category$category" => 1,
325
                    "category$category" => 1,
324
                    category            => $category,
326
                    category            => $category,
325
                    itemsloop           => $items,
327
                    itemsloop           => $items,
Lines 377-384 sub shelfpage { Link Here
377
                    $stay=0;
379
                    $stay=0;
378
                    next;
380
                    next;
379
                }
381
                }
380
                #
382
381
                unless ( ShelfPossibleAction( $loggedinuser, $number, 'manage' ) ) {
383
                my $can_manage = ShelfPossibleAction( $loggedinuser, $number, 'manage' );
384
                my $can_delete = ShelfPossibleAction( $loggedinuser, $number, 'delete_shelf' );
385
                unless ( $can_manage or $can_delete ) {
382
                    push( @paramsloop, { nopermission => $shelfnumber } );
386
                    push( @paramsloop, { nopermission => $shelfnumber } );
383
                    last;
387
                    last;
384
                }
388
                }
Lines 436-443 sub shelfpage { Link Here
436
        my $category  = $shelflist->{$element}->{'category'};
440
        my $category  = $shelflist->{$element}->{'category'};
437
        my $owner     = $shelflist->{$element}->{'owner'}||0;
441
        my $owner     = $shelflist->{$element}->{'owner'}||0;
438
        my $canmanage = ShelfPossibleAction( $loggedinuser, $element, 'manage' );
442
        my $canmanage = ShelfPossibleAction( $loggedinuser, $element, 'manage' );
443
        my $candelete = ShelfPossibleAction( $loggedinuser, $element, 'delete_shelf' );
439
        $shelflist->{$element}->{"viewcategory$category"} = 1;
444
        $shelflist->{$element}->{"viewcategory$category"} = 1;
440
        $shelflist->{$element}->{manageshelf} = $canmanage;
445
        $shelflist->{$element}->{manageshelf} = $canmanage;
446
        $shelflist->{$element}->{allowdeletingshelf} = $candelete;
441
        if($canmanage || ($loggedinuser && $owner==$loggedinuser)) {
447
        if($canmanage || ($loggedinuser && $owner==$loggedinuser)) {
442
            $shelflist->{$element}->{'mine'} = 1;
448
            $shelflist->{$element}->{'mine'} = 1;
443
        }
449
        }
(-)a/installer/data/mysql/en/mandatory/userpermissions.sql (-1 / +1 lines)
Lines 72-76 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
72
   (19, 'tool', 'Use tool plugins'),
72
   (19, 'tool', 'Use tool plugins'),
73
   (19, 'report', 'Use report plugins'),
73
   (19, 'report', 'Use report plugins'),
74
   (19, 'configure', 'Configure plugins'),
74
   (19, 'configure', 'Configure plugins'),
75
   (20, 'manage_shelves', 'Manage shelves')
75
   (20, 'delete_shelves', 'Delete shelves')
76
;
76
;
(-)a/installer/data/mysql/updatedatabase.pl (-2 / +2 lines)
Lines 9616-9624 if ( CheckVersion($DBversion) ) { Link Here
9616
    |);
9616
    |);
9617
    $dbh->do(q|
9617
    $dbh->do(q|
9618
        INSERT INTO permissions (module_bit, code, description) VALUES
9618
        INSERT INTO permissions (module_bit, code, description) VALUES
9619
        (20, 'manage_shelves', 'Manage shelves')
9619
        (20, 'delete_shelves', 'Delete shelves')
9620
    |);
9620
    |);
9621
    print "Upgrade to $DBversion done (Bug 13417: Add permission to manage shelves)\n";
9621
    print "Upgrade to $DBversion done (Bug 13417: Add permission to delete shelves)\n";
9622
    SetVersion ($DBversion);
9622
    SetVersion ($DBversion);
9623
}
9623
}
9624
9624
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt (-2 / +3 lines)
Lines 600-611 function placeHold () { Link Here
600
			[% IF ( shelvesloo.viewcategory2 ) %]Public[% END %]
600
			[% IF ( shelvesloo.viewcategory2 ) %]Public[% END %]
601
		</td>
601
		</td>
602
        <td>
602
        <td>
603
            [% IF ( shelvesloo.manageshelf ) %]
603
            [% IF shelvesloo.manageshelf %]
604
				<form action="shelves.pl" method="get">
604
				<form action="shelves.pl" method="get">
605
					<input type="hidden" name="shelfnumber" value="[% shelvesloo.shelf %]" />
605
					<input type="hidden" name="shelfnumber" value="[% shelvesloo.shelf %]" />
606
					<input type="hidden" name="op" value="modif" />
606
					<input type="hidden" name="op" value="modif" />
607
					<input type="submit" class="editshelf" value="Edit" />
607
					<input type="submit" class="editshelf" value="Edit" />
608
				</form>
608
				</form>
609
            [% END %]
610
            [% IF shelvesloo.manageshelf OR shelvesloo.allowdeletingshelf %]
609
				<form action="shelves.pl" method="post">
611
				<form action="shelves.pl" method="post">
610
				        <input type="hidden" name="shelfoff" value="[% shelfoff %]" />
612
				        <input type="hidden" name="shelfoff" value="[% shelfoff %]" />
611
					<input type="hidden" name="shelves" value="1" />
613
					<input type="hidden" name="shelves" value="1" />
612
- 

Return to bug 13417