Bug #2531 Cannot delete private shelf
Added logic to create a list of private lists to check on deletion. Multiple pages have the ability to delete lists, both private and public. Default option of retrieving a user's lists is retrieving the public ones. Now private lists of the owner are retrieved as well and checked upon deletion request. This allows any method of deletion to delete the correct list without examining the myriad of options currently used to indicate display of privateshelves and expect all pages to know whether a shelf number comes from a private or public list. Since deletion occurs based on shelf number and the virtualshelves table has a primary key on shelf number, this will not cause unwanted deletion of shelves. UPDATE: added logic for conditional creation of shelves. Also note change in staff side as deletions worked except for viewing a populated shelf, then deleting. The confirm message showed, but the display was of public shelves, not private. Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
parent
53a0ed93db
commit
25eb36f21f
|
|
@ -72,6 +72,11 @@ sub shelfpage ($$$$$) {
|
|||
# getting the Shelves list
|
||||
my $category = (($displaymode eq 'privateshelves') ? 1 : 2);
|
||||
my ($shelflist, $totshelves) = GetShelves( $category, $shelveslimit, $shelvesoffset, $loggedinuser );
|
||||
#Get a list of private shelves for possible deletion. Only do this when we've defaulted to public shelves
|
||||
my ($privshelflist, $privtotshelves);
|
||||
if ($category == 2) {
|
||||
($privshelflist, $privtotshelves) = GetShelves( 1, $shelveslimit, $shelvesoffset, $loggedinuser );
|
||||
}
|
||||
my $op = $query->param('op');
|
||||
# my $imgdir = getitemtypeimagesrc();
|
||||
# my $itemtypes = GetItemTypes();
|
||||
|
|
@ -173,6 +178,7 @@ SWITCH: {
|
|||
#$this_item->{'description'} = $itemtypes->{ $this_item->{itemtype} }->{'description'};
|
||||
$this_item->{'dateadded'} = format_date($this_item->{'dateadded'});
|
||||
}
|
||||
push @paramsloop, {display => 'privateshelves'} if $category == 1;
|
||||
$showadd = 1;
|
||||
my $i = 0;
|
||||
foreach (grep {$i++ % 2} @$items) { # every other item
|
||||
|
|
@ -180,7 +186,7 @@ SWITCH: {
|
|||
}
|
||||
my $manageshelf = ShelfPossibleAction( $loggedinuser, $shelfnumber, 'manage' );
|
||||
$template->param(
|
||||
shelfname => $shelflist->{$shelfnumber}->{'shelfname'},
|
||||
shelfname => $shelflist->{$shelfnumber}->{'shelfname'} || $privshelflist->{$shelfnumber}->{'shelfname'},
|
||||
shelfnumber => $shelfnumber,
|
||||
viewshelf => $shelfnumber,
|
||||
manageshelf => $manageshelf,
|
||||
|
|
@ -213,7 +219,7 @@ SWITCH: {
|
|||
/DEL-(\d+)/ or next;
|
||||
$delflag = 1;
|
||||
my $number = $1;
|
||||
unless (defined $shelflist->{$number}) {
|
||||
unless (defined $shelflist->{$number} || defined $privshelflist->{$number}) {
|
||||
push(@paramsloop, {unrecognized=>$number}); last;
|
||||
}
|
||||
unless (ShelfPossibleAction($loggedinuser, $number, 'manage')) {
|
||||
|
|
@ -223,17 +229,28 @@ SWITCH: {
|
|||
($contents, $totshelves) = GetShelfContents($number, $shelveslimit, $shelvesoffset);
|
||||
if (my $count = scalar @$contents){
|
||||
unless (scalar grep {/^CONFIRM-$number$/} $query->param()) {
|
||||
push(@paramsloop, {need_confirm=>$shelflist->{$number}->{shelfname}, count=>$count});
|
||||
$shelflist->{$number}->{confirm} = $number;
|
||||
if (defined $shelflist->{$number}) {
|
||||
push(@paramsloop, {need_confirm=>$shelflist->{$number}->{shelfname}, count=>$count});
|
||||
$shelflist->{$number}->{confirm} = $number;
|
||||
} else {
|
||||
push(@paramsloop, {need_confirm=>$privshelflist->{$number}->{shelfname}, count=>$count});
|
||||
$privshelflist->{$number}->{confirm} = $number;
|
||||
}
|
||||
$stay = 0;
|
||||
next;
|
||||
}
|
||||
}
|
||||
my $name = $shelflist->{$number}->{'shelfname'};
|
||||
my $name;
|
||||
if (defined $shelflist->{$number}) {
|
||||
$name = $shelflist->{$number}->{'shelfname'};
|
||||
delete $shelflist->{$number};
|
||||
} else {
|
||||
$name = $privshelflist->{$number}->{'shelfname'};
|
||||
delete $privshelflist->{$number};
|
||||
}
|
||||
unless (DelShelf($number)) {
|
||||
push(@paramsloop, {delete_fail=>$name}); last;
|
||||
}
|
||||
delete $shelflist->{$number};
|
||||
push(@paramsloop, {delete_ok=>$name});
|
||||
# print $query->redirect($pages{$type}->{redirect}); exit;
|
||||
$stay = 0;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
<li><a id="newshelf" href="/cgi-bin/koha/virtualshelves/shelves.pl?shelves=1">New List</a></li>
|
||||
<!-- TMPL_IF NAME="viewshelf" --><!-- TMPL_IF name="manageshelf" -->
|
||||
<li><a id="editshelf" href="/cgi-bin/koha/virtualshelves/shelves.pl?shelfnumber=<!-- TMPL_VAR NAME="shelfnumber" -->&op=modif">Edit List</a></li>
|
||||
<li id="deleteshelfc"><a id="deleteshelf" href="/cgi-bin/koha/virtualshelves/shelves.pl?shelves=1&DEL-<!-- TMPL_VAR NAME="shelfnumber" -->=1">Delete List</a></li>
|
||||
<li id="deleteshelfc"><a id="deleteshelf" href="/cgi-bin/koha/virtualshelves/shelves.pl?<!-- TMPL_IF NAME="showprivateshelves" -->display=privateshelves&<!-- /TMPL_IF -->shelves=1&DEL-<!-- TMPL_VAR NAME="shelfnumber" -->=1">Delete List</a></li>
|
||||
<!-- /TMPL_IF --><!-- /TMPL_IF -->
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ $(document).ready(function(){
|
|||
|
||||
function confirmDelete(message){
|
||||
if (window.confirm(message)) {
|
||||
location.href="/cgi-bin/koha/virtualshelves/shelves.pl?shelves=1&DEL-<!-- TMPL_VAR NAME="shelfnumber" -->=1";
|
||||
location.href="/cgi-bin/koha/virtualshelves/shelves.pl?<!-- TMPL_IF NAME="showprivateshelves" -->display=privateshelves&<!-- /TMPL_IF -->shelves=1&DEL-<!-- TMPL_VAR NAME="shelfnumber" -->=1";
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -299,7 +299,7 @@ $(document).ready(function(){
|
|||
<tr><th>List Name</th><th>Contents</th><th>Sort by</th><th>Type</th><th>Options</th></tr>
|
||||
<!-- TMPL_LOOP NAME="shelveslooppriv" -->
|
||||
<!-- TMPL_IF NAME="toggle" --><tr class="highlight"><!--TMPL_ELSE--><tr><!-- /TMPL_IF -->
|
||||
<td><a href="shelves.pl?viewshelf=<!-- TMPL_VAR NAME="shelf" -->"><!-- TMPL_VAR NAME="shelfname" ESCAPE="html" --></a></td>
|
||||
<td><a href="shelves.pl?<!-- TMPL_IF NAME="showprivateshelves" -->display=privateshelves&<!-- /TMPL_IF -->viewshelf=<!-- TMPL_VAR NAME="shelf" -->"><!-- TMPL_VAR NAME="shelfname" ESCAPE="html" --></a></td>
|
||||
<td><!-- TMPL_VAR NAME="count" --> item(s)</td>
|
||||
<td><!-- TMPL_VAR NAME="sortfield" --></td>
|
||||
<td><!-- TMPL_IF NAME="viewcategory1" -->Private<!-- /TMPL_IF -->
|
||||
|
|
@ -315,6 +315,7 @@ $(document).ready(function(){
|
|||
</form>
|
||||
<form action="shelves.pl" method="post">
|
||||
<input type="hidden" name="shelves" value="1" />
|
||||
<input type="hidden" name="display" value="privateshelves" />
|
||||
<input type="hidden" name="DEL-<!-- TMPL_VAR NAME="shelf" -->" value="1" />
|
||||
<!-- TMPL_IF NAME="confirm" -->
|
||||
<input type="hidden" name="CONFIRM-<!-- TMPL_VAR NAME="confirm" -->" value="1" />
|
||||
|
|
|
|||
|
|
@ -91,6 +91,9 @@ $.tablesorter.addParser({
|
|||
<!-- TMPL_IF NAME="manageshelf" --><div><span class="checkall"></span>
|
||||
<span class="clearall"></span> | <a class="editshelf" href="/cgi-bin/koha/opac-shelves.pl?shelfnumber=<!-- TMPL_VAR NAME="shelfnumber" -->&op=modif">Edit List</a> <form method="post" action="opac-shelves.pl">
|
||||
<input type="hidden" value="1" name="shelves"/>
|
||||
<!-- TMPL_IF NAME="showprivateshelves" -->
|
||||
<input type="hidden" name="display" value="privateshelves" />
|
||||
<!-- /TMPL_IF -->
|
||||
<input type="hidden" value="1" name="DEL-<!-- TMPL_VAR NAME="shelfnumber" -->"/>
|
||||
<input type="submit" class="deleteshelf" value="Delete List" onclick="return confirmDelete(_('Are you sure you want to remove this List?'));"/></form>
|
||||
</div><!-- /TMPL_IF -->
|
||||
|
|
@ -207,7 +210,7 @@ $.tablesorter.addParser({
|
|||
<tr><th>List Name</th><th>Contents</th><th>Sort by</th><th>Type</th><th> </th></tr>
|
||||
<!-- TMPL_LOOP NAME="shelveslooppriv" -->
|
||||
<!-- TMPL_IF NAME="toggle" --><tr class="highlight"><!--TMPL_ELSE--><tr><!-- /TMPL_IF -->
|
||||
<td><a href="opac-shelves.pl?viewshelf=<!-- TMPL_VAR NAME="shelf" -->"><!-- TMPL_VAR NAME="shelfname" ESCAPE="html" --></a></td>
|
||||
<td><a href="opac-shelves.pl?display=privateshelves&viewshelf=<!-- TMPL_VAR NAME="shelf" -->"><!-- TMPL_VAR NAME="shelfname" ESCAPE="html" --></a></td>
|
||||
<td><!-- TMPL_VAR NAME="count" --> item(s)</td>
|
||||
<td><!-- TMPL_VAR NAME="sortfield" --></td>
|
||||
<td><!-- TMPL_IF NAME="viewcategory1" -->Private<!-- /TMPL_IF -->
|
||||
|
|
@ -218,13 +221,14 @@ $.tablesorter.addParser({
|
|||
<!-- TMPL_IF NAME="mine" -->
|
||||
<form action="opac-shelves.pl" method="get">
|
||||
<input type="hidden" name="shelfnumber" value="<!-- TMPL_VAR NAME="shelf" -->" />
|
||||
<input type="hidden" name="display" value="privateshelves" />
|
||||
<input type="hidden" name="op" value="modif" />
|
||||
<input type="submit" class="editshelf" value="Edit" />
|
||||
</form>
|
||||
<form action="opac-shelves.pl" method="post">
|
||||
<input type="hidden" name="shelves" value="1" />
|
||||
<input type="hidden" name="DEL-<!-- TMPL_VAR NAME="shelf" -->" value="1" />
|
||||
<input type="hidden" name="display" value="privateshelves" />
|
||||
<input type="hidden" name="DEL-<!-- TMPL_VAR NAME="shelf" -->" value="1" />
|
||||
<!-- TMPL_IF NAME="confirm" -->
|
||||
<input type="hidden" name="CONFIRM-<!-- TMPL_VAR NAME="confirm" -->" value="1" />
|
||||
<input type="submit" class="confirm" value="Confirm" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue