From d8c2676f3022c441bf54647243ce3cf836dd58d5 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 --- 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 981c5b413da..e439a500966 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 112ca421d35..2ee0a71760c 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 881e3d92c92..33880c39330 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt @@ -17,6 +17,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 %] @@ -288,6 +290,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 + + +
    +
  • +
    @@ -488,7 +507,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 05b5a393fd7..a1b7ba5eda1 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 @@ -48,6 +48,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 4fab59077de..4e8adf5f553 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 %] @@ -294,6 +295,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)