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.
---
 C4/VirtualShelves/Page.pm                          |   29 +++++++++++++++----
 .../prog/en/includes/virtualshelves-toolbar.inc    |    2 +-
 .../prog/en/modules/virtualshelves/shelves.tmpl    |    5 ++-
 .../opac-tmpl/prog/en/modules/opac-shelves.tmpl    |    8 ++++-
 4 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/C4/VirtualShelves/Page.pm b/C4/VirtualShelves/Page.pm
index bcfd3af..8e45029 100644
--- a/C4/VirtualShelves/Page.pm
+++ b/C4/VirtualShelves/Page.pm
@@ -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;
diff --git 
a/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc 
b/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc
index 32b2de5..6910770 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/virtualshelves-toolbar.inc
@@ -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" -->&amp;op=modif">Edit List</a></li>
-       <li id="deleteshelfc"><a id="deleteshelf" 
href="/cgi-bin/koha/virtualshelves/shelves.pl?shelves=1&amp;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&amp;DEL-<!-- TMPL_VAR NAME="shelfnumber" -->=1">Delete 
List</a></li>
        <!-- /TMPL_IF --><!-- /TMPL_IF -->
 </ul>
 </div>
diff --git 
a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl 
b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl
index e9e9bfa..aa86b9a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tmpl
@@ -21,7 +21,7 @@ $(document).ready(function(){
 
        function confirmDelete(message){
                if (window.confirm(message)) {
-                       
location.href="/cgi-bin/koha/virtualshelves/shelves.pl?shelves=1&amp;DEL-<!-- 
TMPL_VAR NAME="shelfnumber" -->=1";
+                       
location.href="/cgi-bin/koha/virtualshelves/shelves.pl?<!-- TMPL_IF 
NAME="showprivateshelves" -->display=privateshelves&<!-- /TMPL_IF 
-->shelves=1&amp;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" />
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..a46a9da 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" -->&amp;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>&nbsp;</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 -->
@@ -219,13 +222,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" />
-- 
1.5.5.GIT

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches

Reply via email to