From 2a0f1124d0dfd30c6db57f3a867eb1c79bf696cf Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop Date: Fri, 27 Jan 2023 12:34:39 +0000 Subject: [PATCH] Bug 32721: Add branch specific userjs and usercss This patch allows for branch specific userJS and userCSS to be added through the libraries table. This works in conjunction with the global UserJS and UserCSS functionality and allows for multiple OPACs with different css and js options. Test plan: 1) Add to apache conf (/etc/apache2/sites-available/kohadev.conf) SetEnv OPAC_BRANCH_DEFAULT "FFL" RequestHeader add X-Koha-SetEnv "OPAC_BRANCH_DEFAULT FFL" 2) In the container, run restart_all 3) Navigate to the OPACUserJS and OPACUserCSS system preferences and add the following: OPACUserJS - console.log('Hello from global sysprefs');, OPACUserCSS - 'body { background-color: black; }' 4) Refresh the OPAC and the background should be black and the message should be logged to the console in developer tools 5) Navigate to Administration > Libraries 6) On the Fairfield branch (if this does not exist you will need to create a branch with a code matching the code that you added to the apache conf file), click edit 7) At the bottom there should be two fields to add userjs and usercss, complete with Codemirror syntax checking 8) In userjs add console.log('Hello from branch level'); and in usercss add 'body { background-color: blue; } then save 9) Return to the OPAC and refresh 10) If you are logged out of the OPAC it should now be logging both the message from global and from the branch level and the background should be blue (if not you will need to log out) 11) Log back into the OPAC using a user that DOES NOT have a default branch matching the branch you added to the Apache conf 12) The OPAC should now revert to only showing the global message in the console with a black background Sponsored-by: PTFS Europe Signed-off-by: Lucas Gass --- Koha/Template/Plugin/Branches.pm | 22 +++++ admin/branches.pl | 2 + .../prog/en/modules/admin/branches.tt | 87 ++++++++++++++++--- .../bootstrap/en/includes/doc-head-close.inc | 5 ++ .../bootstrap/en/includes/opac-bottom.inc | 6 ++ 5 files changed, 111 insertions(+), 11 deletions(-) diff --git a/Koha/Template/Plugin/Branches.pm b/Koha/Template/Plugin/Branches.pm index 981c5b413d..693c088fe2 100644 --- a/Koha/Template/Plugin/Branches.pm +++ b/Koha/Template/Plugin/Branches.pm @@ -153,4 +153,26 @@ sub pickup_locations { return \@libraries; } +sub GetBranchSpecificJS { + my ($self, $branchcode) = @_; + + return q{} unless defined $branchcode; + + my $library = Koha::Libraries->find($branchcode); + my $userjs = $library ? $library->userjs : q{}; + + return $userjs +} + +sub GetBranchSpecificCSS { + my ($self, $branchcode) = @_; + + return q{} unless defined $branchcode; + + my $library = Koha::Libraries->find($branchcode); + my $usercss = $library ? $library->usercss : q{}; + + return $usercss +} + 1; diff --git a/admin/branches.pl b/admin/branches.pl index 112ca421d3..2ee0a71760 100755 --- a/admin/branches.pl +++ b/admin/branches.pl @@ -81,6 +81,8 @@ if ( $op eq 'add_form' ) { marcorgcode pickup_location public + userjs + usercss ); my $is_a_modif = $input->param('is_a_modif'); 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 a6aa3fe5fd..51a8ff883a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt @@ -18,6 +18,8 @@ Libraries › Administration › Koha [% INCLUDE 'doc-head-close.inc' %] +[% Asset.css("lib/codemirror/codemirror.min.css") | $raw %] +[% Asset.css("lib/codemirror/lint.min.css") | $raw %] @@ -275,6 +277,23 @@ Libraries › Administration › Koha
Set to 'yes' to show this library as a search option and on the libraries page in the OPAC.
+
  • + +
    + Click to edit + + +
    +
  • +
  • + +
    + Click to edit + + +
    +
  • +
    @@ -475,7 +494,30 @@ Libraries › Administration › Koha [% INCLUDE 'datatables.inc' %] [% INCLUDE 'columns_settings.inc' %] [% Asset.js("lib/tiny_mce/tinymce.min.js") | $raw %] + [% Asset.js( "lib/codemirror/codemirror.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/css.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/javascript.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/xml.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/yaml.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/lint.min.js" ) | $raw %] + [% Asset.js( "lib/linters/jshint.min.js" ) | $raw %] + [% Asset.js( "lib/linters/htmlhint.min.js" ) | $raw %] + [% Asset.js( "lib/linters/csslint.min.js" ) | $raw %] + [% Asset.js( "lib/linters/js-yaml.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/html-lint.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/javascript-lint.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/css-lint.min.js" ) | $raw %] + [% Asset.js( "lib/codemirror/yaml-lint.min.js" ) | $raw %] + [% Asset.css("lib/codemirror/codemirror.css") | $raw %] [% INCLUDE 'str/tinymce_i18n.inc' %] + [% END %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-close.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-close.inc index aad71ca835..1752ccdc8f 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-close.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/doc-head-close.inc @@ -43,6 +43,11 @@ [% IF ( Koha.Preference('OPACUserCSS') ) %] [% END %] +[% IF Branches.GetBranchSpecificCSS( Branches.GetLoggedInBranchcode() || default_branch) %] + +[% END %] [% IF SCO_login %] [% SET SCOUserCSS = Koha.Preference('SCOUserCSS') %] [% IF SCOUserCSS %] diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc index aba60fc502..94f489375e 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc +++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc @@ -1,5 +1,6 @@ [% USE raw %] [% USE Koha %] +[% USE Branches %] [% USE AdditionalContents %] [%- USE KohaPlugins -%] [% USE Asset %] @@ -296,6 +297,11 @@ $(document).ready(function() { [% Koha.Preference('OPACUserJS') | $raw %] [% END %] +[% IF Branches.GetBranchSpecificJS( Branches.GetLoggedInBranchcode() || default_branch) %] + +[% END %] [% IF SCO_login %] [% SET SCOUserJS = Koha.Preference('SCOUserJS') %] [% IF ( SCOUserJS ) %] -- 2.37.1 (Apple Git-137.1)