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.
---
C4/VirtualShelves/Page.pm | 26 +++++++++---
.../opac-tmpl/prog/en/modules/opac-shelves.tmpl | 44 +++++++++++---------
2 files changed, 44 insertions(+), 26 deletions(-)
diff --git a/C4/VirtualShelves/Page.pm b/C4/VirtualShelves/Page.pm
index bcfd3af..efe8902 100644
--- a/C4/VirtualShelves/Page.pm
+++ b/C4/VirtualShelves/Page.pm
@@ -72,6 +72,8 @@ 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.
+ my ($privshelflist, $privtotshelves) = GetShelves( 1, $shelveslimit,
$shelvesoffset, $loggedinuser );
my $op = $query->param('op');
# my $imgdir = getitemtypeimagesrc();
# my $itemtypes = GetItemTypes();
@@ -173,6 +175,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 +183,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 +216,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 +226,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;
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-shelves.tmpl
b/koha-tmpl/opac-tmpl/prog/en/modules/opac-shelves.tmpl
index 94795db..0a62acb 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-shelves.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-shelves.tmpl
@@ -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 -->
@@ -208,7 +211,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 -->
@@ -217,25 +220,26 @@ $.tablesorter.addParser({
</td>
<td>
<!-- 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="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"
/>
- <!-- TMPL_IF NAME="confirm" -->
- <input type="hidden" name="CONFIRM-<!-- TMPL_VAR
NAME="confirm" -->" value="1" />
- <input type="submit" class="confirm" value="Confirm" />
- <!-- TMPL_ELSE -->
- <input type="submit" class="deleteshelf" onclick="return
confirmDelete(_('Are you sure you want to remove this List?'));" value="Delete"
/>
- <!-- /TMPL_IF -->
- </form>
- <!-- /TMPL_IF -->
- </td>
- </tr>
+ <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="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" />
+ <!-- TMPL_ELSE -->
+ <input type="submit"
class="deleteshelf" onclick="return confirmDelete(_('Are you sure you want to
remove this List?'));" value="Delete" />
+ <!-- /TMPL_IF -->
+ </form>
+ <!-- /TMPL_IF -->
+ </td>
+ </tr>
<!-- /TMPL_LOOP -->
<!-- TMPL_ELSE -->
<tr><td colspan="4">No Private Lists.</td></tr>
--
1.5.5.GIT
_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches