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

(-)a/C4/VirtualShelves.pm (-3 / +3 lines)
Lines 463-472 sub ShelfPossibleAction { Link Here
463
463
464
    return 0 unless defined($shelfnumber);
464
    return 0 unless defined($shelfnumber);
465
465
466
    if ( $user > 0 ) {
466
    if ( $user > 0 and $action eq 'delete_shelf' ) {
467
        my $borrower = C4::Members::GetMember( borrowernumber => $user );
467
        my $borrower = C4::Members::GetMember( borrowernumber => $user );
468
        return 1
468
        return 1
469
            if C4::Auth::haspermission( $borrower->{userid}, { shelves => 'manage_shelves' } );
469
            if C4::Auth::haspermission( $borrower->{userid}, { shelves => 'delete_shelves' } );
470
    }
470
    }
471
471
472
    my $dbh = C4::Context->dbh;
472
    my $dbh = C4::Context->dbh;
Lines 520-526 sub ShelfPossibleAction { Link Here
520
            return (0, 5); # code 5: should be private list
520
            return (0, 5); # code 5: should be private list
521
        }
521
        }
522
    }
522
    }
523
    elsif($action eq 'manage') {
523
    elsif($action eq 'manage' or $action eq 'delete_shelf') {
524
        return 1 if $user && $shelf->{owner}==$user;
524
        return 1 if $user && $shelf->{owner}==$user;
525
    }
525
    }
526
    return 0;
526
    return 0;
(-)a/C4/VirtualShelves/Page.pm (-2 / +8 lines)
Lines 310-315 sub shelfpage { Link Here
310
                $showadd = 1;
310
                $showadd = 1;
311
                my $i = 0;
311
                my $i = 0;
312
                my $manageshelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' );
312
                my $manageshelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' );
313
                my $can_delete_shelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete_shelf' );
313
                $template->param(
314
                $template->param(
314
                    shelfname           => $shelfname,
315
                    shelfname           => $shelfname,
315
                    shelfnumber         => $shelfnumber,
316
                    shelfnumber         => $shelfnumber,
Lines 318-323 sub shelfpage { Link Here
318
                    manageshelf         => $manageshelf,
319
                    manageshelf         => $manageshelf,
319
                    allowremovingitems  => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete'),
320
                    allowremovingitems  => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'delete'),
320
                    allowaddingitem     => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add'),
321
                    allowaddingitem     => ShelfPossibleAction( $loggedinuser, $shelfnumber, 'add'),
322
                    allowdeletingshelf  => $can_delete_shelf,
321
                    "category$category" => 1,
323
                    "category$category" => 1,
322
                    category            => $category,
324
                    category            => $category,
323
                    itemsloop           => $items,
325
                    itemsloop           => $items,
Lines 374-381 sub shelfpage { Link Here
374
                    $stay=0;
376
                    $stay=0;
375
                    next;
377
                    next;
376
                }
378
                }
377
                #
379
378
                unless ( ShelfPossibleAction( $loggedinuser, $number, 'manage' ) ) {
380
                my $can_manage = ShelfPossibleAction( $loggedinuser, $number, 'manage' );
381
                my $can_delete = ShelfPossibleAction( $loggedinuser, $number, 'delete_shelf' );
382
                unless ( $can_manage or $can_delete ) {
379
                    push( @paramsloop, { nopermission => $shelfnumber } );
383
                    push( @paramsloop, { nopermission => $shelfnumber } );
380
                    last;
384
                    last;
381
                }
385
                }
Lines 428-435 sub shelfpage { Link Here
428
        my $category  = $shelflist->{$element}->{'category'};
432
        my $category  = $shelflist->{$element}->{'category'};
429
        my $owner     = $shelflist->{$element}->{'owner'}||0;
433
        my $owner     = $shelflist->{$element}->{'owner'}||0;
430
        my $canmanage = ShelfPossibleAction( $loggedinuser, $element, 'manage' );
434
        my $canmanage = ShelfPossibleAction( $loggedinuser, $element, 'manage' );
435
        my $candelete = ShelfPossibleAction( $loggedinuser, $element, 'delete_shelf' );
431
        $shelflist->{$element}->{"viewcategory$category"} = 1;
436
        $shelflist->{$element}->{"viewcategory$category"} = 1;
432
        $shelflist->{$element}->{manageshelf} = $canmanage;
437
        $shelflist->{$element}->{manageshelf} = $canmanage;
438
        $shelflist->{$element}->{allowdeletingshelf} = $candelete;
433
        if($canmanage || ($loggedinuser && $owner==$loggedinuser)) {
439
        if($canmanage || ($loggedinuser && $owner==$loggedinuser)) {
434
            $shelflist->{$element}->{'mine'} = 1;
440
            $shelflist->{$element}->{'mine'} = 1;
435
        }
441
        }
(-)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 9767-9775 if ( CheckVersion($DBversion) ) { Link Here
9767
    |);
9767
    |);
9768
    $dbh->do(q|
9768
    $dbh->do(q|
9769
        INSERT INTO permissions (module_bit, code, description) VALUES
9769
        INSERT INTO permissions (module_bit, code, description) VALUES
9770
        (20, 'manage_shelves', 'Manage shelves')
9770
        (20, 'delete_shelves', 'Delete shelves')
9771
    |);
9771
    |);
9772
    print "Upgrade to $DBversion done (Bug 13417: Add permission to manage shelves)\n";
9772
    print "Upgrade to $DBversion done (Bug 13417: Add permission to delete shelves)\n";
9773
    SetVersion ($DBversion);
9773
    SetVersion ($DBversion);
9774
}
9774
}
9775
9775
(-)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