Bug 9257 - Add "groups" to normal search pulldown
This patch adds the ability to add groups to the library select pulldown on the opac, if it is enabled. Test Plan: 1) Apply patch 2) Run updatedatabase.pl 3) Go to Administration › Libraries and groups 4) Create a new group, or edit an existing one 5) Ensure the 'Show in search pulldown' checkbox is checked 6) Save the group 7) Enable OpacAddMastheadLibraryPulldown if it is not already enabled 8) Load the OPAC, try the group search from the libraries pulldown menu Signed-off-by: Liz Rea <liz@catalyst.net.nz> Yes! Now this works, and well. Signed-off-by: Paul Poulain <paul.poulain@biblibre.com> Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
This commit is contained in:
parent
6e1ec2472a
commit
719044f771
11
C4/Auth.pm
11
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"),
|
||||
|
|
|
|||
68
C4/Branch.pm
68
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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
--
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -335,6 +335,14 @@ tinyMCE.init({
|
|||
[% 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>
|
||||
|
|
|
|||
|
|
@ -168,13 +168,28 @@
|
|||
[% 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 ) %]
|
||||
|
|
|
|||
|
|
@ -85,11 +85,24 @@
|
|||
<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 %]
|
||||
|
|
|
|||
|
|
@ -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)/) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue