@@ -, +, @@
SetEnv OVERRIDE_SYSPREF_OpacHighlightedWords "1"
to your koha-http.conf file's OPAC section.
Also add the line
SetEnv OVERRIDE_SYSPREF_NAMES "OpacHighlightedWords"
to the Intranet section
You should see a warning the this preference has been overridden.
---
C4/Context.pm | 27 ++++++++++++-------
admin/preferences.pl | 5 +++-
etc/koha-httpd.conf | 12 +++++++++
.../intranet-tmpl/prog/en/css/preferences.css | 8 +++++-
.../prog/en/modules/admin/preferences.tt | 6 ++++
5 files changed, 46 insertions(+), 12 deletions(-)
--- a/C4/Context.pm
+++ a/C4/Context.pm
@@ -540,7 +540,7 @@ my $use_syspref_cache = 1;
sub preference {
my $self = shift;
- my $var = lc(shift); # The system preference to return
+ my $var = shift; # The system preference to return
if ($use_syspref_cache && exists $sysprefs{$var}) {
return $sysprefs{$var};
@@ -548,15 +548,22 @@ sub preference {
my $dbh = C4::Context->dbh or return 0;
- # Look up systempreferences.variable==$var
- my $sql = <<'END_SQL';
- SELECT value
- FROM systempreferences
- WHERE variable=?
- LIMIT 1
-END_SQL
- $sysprefs{$var} = $dbh->selectrow_array( $sql, {}, $var );
- return $sysprefs{$var};
+ my $value;
+ if ( defined $ENV{"OVERRIDE_SYSPREF_$var"} ) {
+ $value = $ENV{"OVERRIDE_SYSPREF_$var"};
+ } else {
+ # Look up systempreferences.variable==$var
+ my $sql = q{
+ SELECT value
+ FROM systempreferences
+ WHERE variable = ?
+ LIMIT 1
+ };
+ $value = $dbh->selectrow_array( $sql, {}, $var );
+ }
+
+ $sysprefs{$var} = $value;
+ return $value;
}
sub boolean_preference {
--- a/admin/preferences.pl
+++ a/admin/preferences.pl
@@ -33,6 +33,7 @@ use C4::Budgets qw(GetCurrency);
use File::Spec;
use IO::File;
use YAML::Syck qw();
+use List::MoreUtils qw(any);
$YAML::Syck::ImplicitTyping = 1;
our $lang;
@@ -120,6 +121,8 @@ sub TransformPrefsToHTML {
my $tab = $data->{ $title };
$tab = { '' => $tab } if ( ref( $tab ) eq 'ARRAY' );
+ my @override_syspref_names = split( /,/, $ENV{"OVERRIDE_SYSPREF_NAMES"} );
+
foreach my $group ( sort keys %$tab ) {
if ( $group ) {
push @lines, { is_group_title => 1, title => $group };
@@ -156,6 +159,7 @@ sub TransformPrefsToHTML {
$name_entry->{'highlighted'} = 1;
}
}
+ $name_entry->{'overridden'} = 1 if ( any { $name eq $_ } @override_syspref_names );
push @names, $name_entry;
} else {
push @chunks, $piece;
@@ -164,7 +168,6 @@ sub TransformPrefsToHTML {
push @chunks, { type_text => 1, contents => $piece };
}
}
-
push @lines, { CHUNKS => \@chunks, NAMES => \@names, is_group_title => 0 };
}
}
--- a/etc/koha-httpd.conf
+++ a/etc/koha-httpd.conf
@@ -20,6 +20,13 @@
SetEnv MEMCACHED_SERVERS "__MEMCACHED_SERVERS__"
SetEnv MEMCACHED_NAMESPACE "__MEMCACHED_NAMESPACE__"
+ # This syntax allows you to override a system preference
+ # for a given virtual host. Use with caution!
+ # You should add all the system preferences you override
+ # in one of more vhosts to the environment variable
+ # OVERRIDE_SYSPREF_NAMES for your staff intranet vhost
+# SevEnv OVERRIDE_SYSPREF_PrefName
+
Options -Indexes
@@ -126,6 +133,11 @@
SetEnv MEMCACHED_NAMESPACE "__MEMCACHED_NAMESPACE__"
Options +FollowSymLinks
+ # If you are overriding any system preferences,
+ # list them this variable so the preference editor
+ # knows that they have been overridden.
+# SevEnv OVERRIDE_SYSPREF_NAMES "Pref1,Pref2,Pref3"
+
ErrorDocument 400 /cgi-bin/koha/errors/400.pl
ErrorDocument 401 /cgi-bin/koha/errors/401.pl
ErrorDocument 403 /cgi-bin/koha/errors/403.pl
--- a/koha-tmpl/intranet-tmpl/prog/en/css/preferences.css
+++ a/koha-tmpl/intranet-tmpl/prog/en/css/preferences.css
@@ -82,4 +82,10 @@ h3.collapsed {
background: transparent url("../../img/spinner-small.gif") top left no-repeat;
padding : 0 4px;
vertical-align: middle;
-}
+}
+
+span.overridden {
+ font-style: italic;
+ font-weight: bold;
+ color: red;
+}
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences.tt
@@ -89,6 +89,12 @@
[% ELSE %]
[% NAME.name %]
[% END %]
+
+ [% IF NAME.overridden %]
+
+ [Overridden]
+
+ [% END %]
[% UNLESS ( loop.last ) %]
[% END %]
[% END %]
--