Bug 10584 - Hide OPAC biblio details if all items are hidden
[koha.git] / opac / opac-browser.pl
index 0b42133..0e9a632 100755 (executable)
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-# $Id$
 
-=head1 opac-tags_subject.pl
+=head1 opac-browser.pl
 
 TODO :: Description here
 
 =cut
 
 use strict;
-require Exporter;
+use warnings;
+
 use C4::Auth;
 use C4::Context;
 use C4::Output;
@@ -44,7 +44,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         template_name   => "opac-browser.tmpl",
         query           => $query,
         type            => "opac",
-        authnotrequired => 1,
+        authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
         debug           => 1,
     }
 );
@@ -52,6 +52,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 # the level of browser to display
 my $level = $query->param('level') || 0;
 my $filter = $query->param('filter');
+$filter = '' unless defined $filter;
 $level++; # the level passed is the level of the PREVIOUS list, not the current one. Thus the ++
 
 # build this level loop
@@ -61,24 +62,43 @@ my @level_loop;
 my $i=0;
 while (my $line = $sth->fetchrow_hashref) {
     $line->{description} =~ s/\((.*)\)//g;
-    $i++;
-    $line->{count3}=1 unless $i %3;
     push @level_loop,$line;
 }
 
+my $have_hierarchy = 0;
+
 # now rebuild hierarchy loop
-$sth = $dbh->prepare("SELECT * FROM browser where classification=?");
 $filter =~ s/\.//g;
 my @hierarchy_loop;
-for (my $i=1;$i <=length($filter);$i++) {
-    $sth->execute(substr($filter,0,$i));
-    my $line = $sth->fetchrow_hashref;
-    push @hierarchy_loop,$line;
+if ($filter eq '' and $level == 1) {
+    # we're starting from the top
+    $have_hierarchy = 1 if @level_loop;
+    unless (@level_loop) {
+        $sth->execute(1, "%");
+        while (my $line = $sth->fetchrow_hashref) {
+            $line->{description} =~ s/\((.*)\)//g;
+            push @level_loop,$line;
+        }
+    }
+} else {
+    $sth = $dbh->prepare("SELECT * FROM browser where classification=?");
+    for (my $i=1;$i <=length($filter);$i++) {
+        $sth->execute(substr($filter,0,$i));
+        my $line = $sth->fetchrow_hashref;
+        push @hierarchy_loop,$line;
+    }
+    $have_hierarchy = 1 if @hierarchy_loop;
+}
+
+# mark every third entry in level_loop
+for (my $i = 0; $i <= $#level_loop; $i++) {
+    $level_loop[$i]->{count3} = 1 if 2 == $i % 3 && $i != $#level_loop;
 }
 
 $template->param(
     LEVEL_LOOP => \@level_loop,
     HIERARCHY_LOOP => \@hierarchy_loop,
+    have_hierarchy => $have_hierarchy,
 );
 
 output_html_with_http_headers $query, $cookie, $template->output;