diff --git a/C4/Auth.pm b/C4/Auth.pm index 2984570469..ca061b5284 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -387,6 +387,8 @@ sub get_template_and_user { my $opac_name = ''; if (($opac_search_limit && $opac_search_limit =~ /branch:(\w+)/ && $opac_limit_override) || ($in->{'query'}->param('limit') && $in->{'query'}->param('limit') =~ /branch:(\w+)/)){ $opac_name = $1; # opac_search_limit is a branch, so we use it. + } elsif ( $in->{'query'}->param('multibranchlimit') ) { + $opac_name = $in->{'query'}->param('multibranchlimit'); } elsif (C4::Context->preference("SearchMyLibraryFirst") && C4::Context->userenv && C4::Context->userenv->{'branch'}) { $opac_name = C4::Context->userenv->{'branch'}; } @@ -395,13 +397,14 @@ sub get_template_and_user { AnonSuggestions => "" . C4::Context->preference("AnonSuggestions"), AuthorisedValueImages => C4::Context->preference("AuthorisedValueImages"), BranchesLoop => GetBranchesLoop($opac_name), - CalendarFirstDayOfWeek => (C4::Context->preference("CalendarFirstDayOfWeek") eq "Sunday")?0:1, + BranchCategoriesLoop => GetBranchCategories( undef, undef, 1, $opac_name ), + CalendarFirstDayOfWeek => (C4::Context->preference("CalendarFirstDayOfWeek") eq "Sunday")?0:1, LibraryName => "" . C4::Context->preference("LibraryName"), LibraryNameTitle => "" . $LibraryNameTitle, LoginBranchname => C4::Context->userenv?C4::Context->userenv->{"branchname"}:"", OPACAmazonCoverImages => C4::Context->preference("OPACAmazonCoverImages"), OPACFRBRizeEditions => C4::Context->preference("OPACFRBRizeEditions"), - OpacHighlightedWords => C4::Context->preference("OpacHighlightedWords"), + OpacHighlightedWords => C4::Context->preference("OpacHighlightedWords"), OPACItemHolds => C4::Context->preference("OPACItemHolds"), OPACShelfBrowser => "". C4::Context->preference("OPACShelfBrowser"), OpacShowRecentComments => C4::Context->preference("OpacShowRecentComments"), @@ -412,7 +415,7 @@ sub get_template_and_user { OpacAuthorities => C4::Context->preference("OpacAuthorities"), OPACBaseURL => ($in->{'query'}->https() ? "https://" : "http://") . $ENV{'SERVER_NAME'} . ($ENV{'SERVER_PORT'} eq ($in->{'query'}->https() ? "443" : "80") ? '' : ":$ENV{'SERVER_PORT'}"), - opac_css_override => $ENV{'OPAC_CSS_OVERRIDE'}, + opac_css_override => $ENV{'OPAC_CSS_OVERRIDE'}, opac_search_limit => $opac_search_limit, opac_limit_override => $opac_limit_override, OpacBrowser => C4::Context->preference("OpacBrowser"), @@ -426,7 +429,7 @@ sub get_template_and_user { OpacNavRight => "" . C4::Context->preference("OpacNavRight"), OpacNavBottom => "" . C4::Context->preference("OpacNavBottom"), OpacPasswordChange => C4::Context->preference("OpacPasswordChange"), - OPACPatronDetails => C4::Context->preference("OPACPatronDetails"), + OPACPatronDetails => C4::Context->preference("OPACPatronDetails"), OPACPrivacy => C4::Context->preference("OPACPrivacy"), OPACFinesTab => C4::Context->preference("OPACFinesTab"), OpacTopissue => C4::Context->preference("OpacTopissue"), diff --git a/C4/Branch.pm b/C4/Branch.pm index fe67e0c175..1509c1302f 100644 --- a/C4/Branch.pm +++ b/C4/Branch.pm @@ -328,7 +328,7 @@ sub GetBranchCategory { =head2 GetBranchCategories - my $categories = GetBranchCategories($branchcode,$categorytype); + my $categories = GetBranchCategories($branchcode,$categorytype,$show_in_pulldown,$selected_in_pulldown); Returns a list ref of anon hashrefs with keys eq columns of branchcategories table, i.e. categorycode, categorydescription, categorytype, categoryname. @@ -338,27 +338,43 @@ $branchcode is a member of , and to $categorytype. =cut sub GetBranchCategories { - my ($branchcode,$categorytype) = @_; - my $dbh = C4::Context->dbh(); - my $query = "SELECT c.* FROM branchcategories c"; - my (@where, @bind); - if($branchcode) { - $query .= ",branchrelations r, branches b "; - push @where, "c.categorycode=r.categorycode and r.branchcode=? "; - push @bind , $branchcode; - } - if ($categorytype) { - push @where, " c.categorytype=? "; - push @bind, $categorytype; - } - $query .= " where " . join(" and ", @where) if(@where); - $query .= " order by categorytype,c.categorycode"; - my $sth=$dbh->prepare( $query); - $sth->execute(@bind); - - my $branchcats = $sth->fetchall_arrayref({}); - $sth->finish(); - return( $branchcats ); + my ( $branchcode, $categorytype, $show_in_pulldown, $selected_in_pulldown ) = @_; + my $dbh = C4::Context->dbh(); + + my $query = "SELECT c.* FROM branchcategories c"; + my ( @where, @bind ); + + if( $branchcode ) { + $query .= ",branchrelations r, branches b "; + push @where, "c.categorycode = r.categorycode AND r.branchcode = ? "; + push @bind , $branchcode; + } + + if ( $categorytype ) { + push @where, " c.categorytype = ? "; + push @bind, $categorytype; + } + + if ( defined( $show_in_pulldown ) ) { + push( @where, " c.show_in_pulldown = ? " ); + push( @bind, $show_in_pulldown ); + } + + $query .= " WHERE " . join(" AND ", @where) if(@where); + $query .= " ORDER BY categorytype,c.categorycode"; + my $sth=$dbh->prepare( $query); + $sth->execute(@bind); + + my $branchcats = $sth->fetchall_arrayref({}); + $sth->finish(); + + if ( $selected_in_pulldown ) { + foreach my $bc ( @$branchcats ) { + $bc->{'selected'} = 1 if ( $bc->{'categorycode'} eq $selected_in_pulldown ); + } + } + + return( $branchcats ); } =head2 GetCategoryTypes @@ -506,14 +522,14 @@ sub ModBranchCategoryInfo { my $dbh = C4::Context->dbh; if ($data->{'add'}){ # we are doing an insert - my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype) VALUES (?,?,?,?)"); - $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'} ); + my $sth = $dbh->prepare("INSERT INTO branchcategories (categorycode,categoryname,codedescription,categorytype,show_in_pulldown) VALUES (?,?,?,?,?)"); + $sth->execute(uc( $data->{'categorycode'} ),$data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},$data->{'show_in_pulldown'} ); $sth->finish(); } else { # modifying - my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=? WHERE categorycode=?"); - $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},uc( $data->{'categorycode'} ) ); + my $sth = $dbh->prepare("UPDATE branchcategories SET categoryname=?,codedescription=?,categorytype=?,show_in_pulldown=? WHERE categorycode=?"); + $sth->execute($data->{'categoryname'}, $data->{'codedescription'},$data->{'categorytype'},$data->{'show_in_pulldown'},uc( $data->{'categorycode'} ) ); $sth->finish(); } } diff --git a/admin/branches.pl b/admin/branches.pl index d172ea6819..026d983e8f 100755 --- a/admin/branches.pl +++ b/admin/branches.pl @@ -168,6 +168,8 @@ elsif ( $op eq 'addcategory_validate' ) { $template->param( else => 1 ); # confirm settings change... my $params = $input->Vars; + $params->{'show_in_pulldown'} = ( $params->{'show_in_pulldown'} eq 'on' ) ? 1 : 0; + unless ( $params->{'categorycode'} && $params->{'categoryname'} ) { default("MESSAGE4",$template); } @@ -294,6 +296,7 @@ sub editcatform { categorycode => $data->{'categorycode'}, categoryname => $data->{'categoryname'}, codedescription => $data->{'codedescription'}, + show_in_pulldown => $data->{'show_in_pulldown'}, ); } for my $ctype (GetCategoryTypes()) { diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 7b5da3fe50..0a2d4e4e33 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -340,7 +340,9 @@ CREATE TABLE `branchcategories` ( -- information related to library/branch group `categoryname` varchar(32), -- name of the library/branch group `codedescription` mediumtext, -- longer description of the library/branch group `categorytype` varchar(16), -- says whether this is a search group or a properties group - PRIMARY KEY (`categorycode`) + `show_in_pulldown` tinyint(1) NOT NULL DEFAULT '0', -- says this group should be in the opac libararies pulldown if it is enabled + PRIMARY KEY (`categorycode`), + KEY `show_in_pulldown` (`show_in_pulldown`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 34ffc88717..75026c0e71 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6713,6 +6713,16 @@ if ( CheckVersion($DBversion) ) { SetVersion ($DBversion); } +$DBversion = "3.11.00.XXX"; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do(q{ + ALTER TABLE branchcategories ADD show_in_pulldown BOOLEAN NOT NULL DEFAULT '0', + ADD INDEX ( show_in_pulldown ) + }); + print "Upgrade to $DBversion done (Bug 9257 - Add groups to normal search pulldown)\n"; + SetVersion ($DBversion); +} + =head1 FUNCTIONS =head2 TableExists($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt index 4404e2804a..f9e5b99ca1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt @@ -335,6 +335,14 @@ tinyMCE.init({ [% END %] +
  • + + [% IF ( show_in_pulldown ) %] + + [% ELSE %] + + [% END %] +
  • diff --git a/koha-tmpl/opac-tmpl/ccsr/en/includes/masthead.inc b/koha-tmpl/opac-tmpl/ccsr/en/includes/masthead.inc index 1d8538e70e..5275bc8f47 100644 --- a/koha-tmpl/opac-tmpl/ccsr/en/includes/masthead.inc +++ b/koha-tmpl/opac-tmpl/ccsr/en/includes/masthead.inc @@ -168,13 +168,28 @@ [% ELSE %]
    [% END %] - + + +
    [% ELSE %] [% IF ( opac_limit_override ) %] diff --git a/koha-tmpl/opac-tmpl/prog/en/includes/masthead.inc b/koha-tmpl/opac-tmpl/prog/en/includes/masthead.inc index aa8c281bb4..ac815bcadd 100644 --- a/koha-tmpl/opac-tmpl/prog/en/includes/masthead.inc +++ b/koha-tmpl/opac-tmpl/prog/en/includes/masthead.inc @@ -85,11 +85,24 @@
    [% END %] [% IF ( OpacAddMastheadLibraryPulldown ) %] - - [% FOREACH BranchesLoo IN BranchesLoop %] - [% IF ( BranchesLoo.selected ) %] - [% ELSE %][% END %] + + [% FOREACH BranchesLoo IN BranchesLoop %] + [% IF ( BranchesLoo.selected ) %] + [% ELSE %][% END %] + [% END %] + + [% IF BranchCategoriesLoop %] + + [% FOREACH bc IN BranchCategoriesLoop %] + [% IF ( bc.selected ) %] + + [% ELSE %] + + [% END %] + [% END %] + [% END %] [% ELSE %] diff --git a/opac/opac-search.pl b/opac/opac-search.pl index a0ba2964ec..4b202b2620 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -63,6 +63,21 @@ my $DisplayMultiPlaceHold = C4::Context->preference("DisplayMultiPlaceHold"); use CGI qw('-no_undef_params'); my $cgi = new CGI; +my $branch_group_limit = $cgi->param("branch_group_limit"); +if ( $branch_group_limit ) { + if ( $branch_group_limit =~ /^multibranchlimit/ ) { + $cgi->param( + -name => 'multibranchlimit', + -values => [ ( split( 'multibranchlimit-', $branch_group_limit ) )[1] ] + ); + } else { + $cgi->append( + -name => 'limit', + -values => [ $branch_group_limit ] + ); + } +} + BEGIN { if (C4::Context->preference('BakerTaylorEnabled')) { require C4::External::BakerTaylor; @@ -77,6 +92,7 @@ my $template_name; my $template_type = 'basic'; my @params = $cgi->param("limit"); + my $format = $cgi->param("format") || ''; my $build_grouped_results = C4::Context->preference('OPACGroupResults'); if ($format =~ /(rss|atom|opensearchdescription)/) {