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'};
}
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"),
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"),
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"),
=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.
=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
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();
}
}
$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);
}
categorycode => $data->{'categorycode'},
categoryname => $data->{'categoryname'},
codedescription => $data->{'codedescription'},
+ show_in_pulldown => $data->{'show_in_pulldown'},
);
}
for my $ctype (GetCategoryTypes()) {
`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;
--
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)
[% END %]
</select>
</li>
+ <li>
+ <label for="show_in_pulldown">Show in search pulldown: </label>
+ [% IF ( show_in_pulldown ) %]
+ <input type="checkbox" name="show_in_pulldown" id="show_in_pulldown" checked="checked"/>
+ [% ELSE %]
+ <input type="checkbox" name="show_in_pulldown" id="show_in_pulldown" />
+ [% END %]
+ </li>
</ol>
</fieldset>
<fieldset class="action"><input type="submit" value="Update" /></fieldset>
[% ELSE %]
<div id="libraries" class="mobile-hidden">
[% END %]
- <select name="limit" id="select_library" class="left">
- <option value="">All libraries</option>
- [% FOREACH BranchesLoo IN BranchesLoop %]
- [% IF ( BranchesLoo.selected ) %]<option selected="selected" value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
- [% ELSE %]<option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>[% END %]
- [% END %]
- </select>
+
+ <select name="branch_group_limit" id="select_library" class="left">
+ <option value="">All libraries</option>
+ <optgroup label="Libraries">
+ [% FOREACH BranchesLoo IN BranchesLoop %]
+ [% IF ( BranchesLoo.selected ) %]<option selected="selected" value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
+ [% ELSE %]<option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>[% END %]
+ [% END %]
+ </optgroup>
+ [% IF BranchCategoriesLoop %]
+ <optgroup label="Groups">
+ [% FOREACH bc IN BranchCategoriesLoop %]
+ [% IF ( bc.selected ) %]
+ <option selected="selected" value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
+ [% ELSE %]
+ <option value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
+ [% END %]
+ [% END %]
+ </optgroup>
+ [% END %]
+ </select>
+
</div>
[% ELSE %]
[% IF ( opac_limit_override ) %]
<input type="text" title="Type search term" id = "transl1" name="q" class="left" style="width: 35%; font-size: 111%;"/><div id="translControl"></div>
[% END %]
[% IF ( OpacAddMastheadLibraryPulldown ) %]
- <select name="limit" id="select_library" class="left">
+ <select name="branch_group_limit" id="select_library" class="left">
<option value="">All libraries</option>
- [% FOREACH BranchesLoo IN BranchesLoop %]
- [% IF ( BranchesLoo.selected ) %]<option selected="selected" value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
- [% ELSE %]<option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>[% END %]
+ <optgroup label="Libraries">
+ [% FOREACH BranchesLoo IN BranchesLoop %]
+ [% IF ( BranchesLoo.selected ) %]<option selected="selected" value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>
+ [% ELSE %]<option value="branch:[% BranchesLoo.value %]">[% BranchesLoo.branchname %]</option>[% END %]
+ [% END %]
+ </optgroup>
+ [% IF BranchCategoriesLoop %]
+ <optgroup label="Groups">
+ [% FOREACH bc IN BranchCategoriesLoop %]
+ [% IF ( bc.selected ) %]
+ <option selected="selected" value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
+ [% ELSE %]
+ <option value="multibranchlimit-[% bc.categorycode %]">[% bc.categoryname %]</option>
+ [% END %]
+ [% END %]
+ </optgroup>
[% END %]
</select>
[% ELSE %]
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;
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)/) {