@@ -, +, @@ --- Koha/AdditionalContents.pm | 3 +- Koha/Template/Plugin/AdditionalContents.pm | 4 ++ .../intranet-tmpl/prog/en/includes/pages-nav.inc | 10 +++ .../intranet-tmpl/prog/en/includes/tools-menu.inc | 1 + .../prog/en/modules/tools/additional-contents.tt | 74 ++++++++++++++----- .../intranet-tmpl/prog/en/modules/tools/page.tt | 64 +++++++++++++++++ .../prog/en/modules/tools/tools-home.tt | 10 +++ koha-tmpl/intranet-tmpl/prog/js/tools-menu.js | 2 + .../opac-tmpl/bootstrap/en/includes/masthead.inc | 14 ++++ .../opac-tmpl/bootstrap/en/modules/opac-page.tt | 83 ++++++++++++++++++++++ opac/opac-page.pl | 65 +++++++++++++++++ tools/page.pl | 64 +++++++++++++++++ tools/tools-home.pl | 16 ++++- 13 files changed, 390 insertions(+), 20 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/pages-nav.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/tools/page.tt create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-page.tt create mode 100755 opac/opac-page.pl create mode 100755 tools/page.pl --- a/Koha/AdditionalContents.pm +++ a/Koha/AdditionalContents.pm @@ -38,7 +38,7 @@ Koha::AdditionalContents - Koha Additional content object set class =head3 search_for_display my $contents = Koha::AdditionalContents->search_for_display({ - category => 'news', # news or html_customizations + category => 'news', # news, html_customizations, or pages location => 'slip', lang => 'es-ES', library_id => $branchcode @@ -75,6 +75,7 @@ sub search_for_display { $search_params->{published_on} = { '<=' => \'CAST(NOW() AS DATE)' }; $search_params->{-or} = [ expirationdate => { '>=' => \'CAST(NOW() AS DATE)' }, expirationdate => undef ]; + $search_params->{category} = $params->{category}; if ( $params->{lang} ) { # FIXME I am failing to translate the following query --- a/Koha/Template/Plugin/AdditionalContents.pm +++ a/Koha/Template/Plugin/AdditionalContents.pm @@ -46,6 +46,10 @@ sub get { } ); + if ( $category and $category eq 'pages' ) { + return $content->unblessed; + } + if ( $content->count ) { return { content => $content, --- a/koha-tmpl/intranet-tmpl/prog/en/includes/pages-nav.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/pages-nav.inc @@ -0,0 +1,10 @@ +[% IF ( pages.count ) %] + [% IF show_heading %]

Pages

[% END %] + +[% END %] --- a/koha-tmpl/intranet-tmpl/prog/en/includes/tools-menu.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/tools-menu.inc @@ -110,6 +110,7 @@ [% IF ( CAN_user_tools_edit_additional_contents ) %]
  • News
  • HTML customizations
  • +
  • Pages
  • [% END %] [% IF ( CAN_user_tools_schedule_tasks ) %]
  • Task scheduler
  • --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/additional-contents.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/additional-contents.tt @@ -24,6 +24,12 @@ .syspref-link::before { content: " | "; } + .customisation-link::before { + content: " | "; + } + .customisation-link:first-child::before { + content: none; + } @@ -44,6 +50,8 @@
  • [% IF category == 'news' %] News + [% ELSIF category == 'pages' %] + Pages [% ELSE %] HTML customizations [% END %] @@ -55,7 +63,7 @@ [% ELSE %] Add additional content [% END %] - ([% IF category == 'news' %]News[% ELSE %]HTML customizations[% END %]) + ([% IF category == 'news' %]News[% ELSIF category == 'pages' %]Pages[% ELSE %]HTML customizations[% END %])
  • [% ELSE %] @@ -63,6 +71,8 @@ [% IF category == 'news' %] News + [% ELSIF category == 'pages' %] + Pages [% ELSE %] HTML customizations [% END %] @@ -165,7 +175,7 @@ [% IF additional_content %]

    Modify an additional content

    [% ELSE %] -

    New additional content ([% IF category == 'news' %]News[% ELSE %]HTML customizations[% END %])

    +

    New additional content ([% IF category == 'news' %]News[% ELSIF category == 'pages' %]Pages[% ELSE %]HTML customizations[% END %])

    [% END %]
    @@ -174,6 +184,8 @@
    [% IF category == 'news' %]
    Cancel + [% ELSIF category == 'pages' %] + Cancel [% ELSE %] Cancel [% END %] @@ -300,16 +312,17 @@ -

    Additional contents ([% IF category == 'news' %]News[% ELSE %]HTML customizations[% END %])

    - [% IF category == 'news' %] - See HTML customizations - [% ELSE %] - See News - [% END %] - [% IF ( CAN_user_parameters_manage_sysprefs ) %] - OPACUserJS - OPACUserCSS - [% END %] +

    Additional contents ([% IF category == 'news' %]News[% ELSIF category == 'pages' %]Pages[% ELSE %]HTML customizations[% END %])

    + + See + News + HTML customizations + Pages + [% IF ( CAN_user_parameters_manage_sysprefs ) %] + OPACUserJS + OPACUserCSS + [% END %] + [% IF additional_contents.count %]
    @@ -335,7 +348,7 @@ - [% IF c.category == 'news' %] + [% IF c.category == 'news' || c.category == 'pages' %] [% IF c.location == 'staff_and_opac' %]All [% ELSIF c.location == 'staff_only' %]Librarian interface [% ELSIF c.location == 'opac_only' %]OPAC @@ -394,6 +407,29 @@
    Delete
    + [% IF c.category == 'pages' %] +
    + [% IF c.location == 'opac_only' %] + View + [% ELSE %] + View + [% END %] + +
    + [% END %] [% END %] @@ -414,7 +450,7 @@ [% END %] [% BLOCK locations_options %] - [% IF category == 'news' %] + [% IF category == 'news' || category == 'pages' %] [% IF location == "staff_and_opac" %] [% ELSE %] @@ -433,10 +469,12 @@ [% END %] - [% IF location == "slip" %] - - [% ELSE %] - + [% UNLESS category == 'pages' %] + [% IF location == "slip" %] + + [% ELSE %] + + [% END %] [% END %] [% ELSE %] [% FOREACH l IN [ 'OpacNavRight', 'opacheader', 'OpacCustomSearch', 'OpacMainUserBlock', 'opaccredits', 'OpacLoginInstructions', 'OpacNav', 'OpacNavBottom', 'OpacSuggestionInstructions', 'ArticleRequestsDisclaimerText', 'OpacMoreSearches', 'OpacMySummaryNote' ] %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/page.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/page.tt @@ -0,0 +1,64 @@ +[% USE raw %] +[% USE Asset %] +[% SET footerjs = 1 %] +[% INCLUDE 'doc-head-open.inc' %] +[% IF page %][% page.title | html %][% ELSE %]Page error[% END %] › Tools › Koha +[% INCLUDE 'doc-head-close.inc' %] + + + + [% INCLUDE 'header.inc' %] + [% INCLUDE 'cat-search.inc' %] + + + +
    +
    +
    +
    + + [% IF page %] + +

    [% page.title | html %]

    + +
    + [% page.content | $raw %] +
    + + [% ELSE %] + +
    + This page does not exist. +
    + + [% END %] + +
    +
    + +
    + +
    +
    + +[% MACRO jsinclude BLOCK %] + [% Asset.js("js/tools-menu.js") | $raw %] +[% END %] + +[% INCLUDE 'intranet-bottom.inc' %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/tools-home.tt @@ -5,6 +5,12 @@ [% INCLUDE 'doc-head-open.inc' %] Tools › Koha [% INCLUDE 'doc-head-close.inc' %] + [% INCLUDE 'header.inc' %] @@ -121,6 +127,10 @@
    HTML customizations
    Write HTML customizations
    + +
    Pages
    +
    Write custom pages
    + [% INCLUDE 'pages-nav.inc' %] [% END %] [% IF ( CAN_user_tools_schedule_tasks ) %] --- a/koha-tmpl/intranet-tmpl/prog/js/tools-menu.js +++ a/koha-tmpl/intranet-tmpl/prog/js/tools-menu.js @@ -18,5 +18,7 @@ $('#navmenulist a[href$="/cgi-bin/koha/tools/stockrotation.pl"]').addClass("current"); } else if (path.indexOf("plugins") >= 0 ) { $('#navmenulist a[href$="/cgi-bin/koha/plugins/plugins-home.pl?method=tool"]').addClass("current"); + } else if (path.indexOf("page.pl") >= 0 ) { + $('#navmenulist a[href$="/cgi-bin/koha/tools/additional-contents.pl?category=pages"]').addClass("current"); } }); --- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc +++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/masthead.inc @@ -9,6 +9,7 @@ [% SET OpacCustomSearch = AdditionalContents.get( location => "OpacCustomSearch", lang => lang, library => logged_in_user.branchcode || default_branch, blocktitle => 0 ) %] [% SET OpacLoginInstructions = AdditionalContents.get( location => "OpacLoginInstructions", lang => lang, library => branchcode || default_branch ) %] [% SET OpacMoreSearches = AdditionalContents.get( location => "OpacMoreSearches", lang => lang, library => branchcode || default_branch ) %] +[% SET pages = AdditionalContents.get( category => "pages", location => [ "opac_only", "staff_and_opac" ], lang => lang, library => branchcode || default_branch ) %]
    @@ -345,6 +346,19 @@ [% END %] + + [% IF pages %] +
    + [% FOREACH page IN pages %] + + [% END %] +
    + [% END %] + [% PROCESS koha_news_block news => OpacMoreSearches %]
    --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-page.tt +++ a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-page.tt @@ -0,0 +1,83 @@ +[% USE raw %] +[% USE Koha %] +[% USE AdditionalContents %] +[% PROCESS 'i18n.inc' %] +[% SET OpacNav = AdditionalContents.get( location => "OpacNav", lang => lang, library => logged_in_user.branchcode, blocktitle => 0 ) %] +[% SET OpacNavBottom = AdditionalContents.get( location => "OpacNavBottom", lang => lang, library => logged_in_user.branchcode, blocktitle => 0 ) %] +[% INCLUDE 'doc-head-open.inc' %] +[% IF page %][% page.title | html %][% ELSE %]Page error[% END %] › [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog +[% INCLUDE 'doc-head-close.inc' %] +[% BLOCK cssinclude %][% END %] + +[% INCLUDE 'bodytag.inc' bodyid='opac-page-' _ page.idnew %] +[% INCLUDE 'masthead.inc' %] + +
    + + +
    +
    + [% IF ( OpacNav || OpacNavBottom || pages.count ) %] +
    + +
    +
    + [% ELSE %] +
    + [% END %] +
    + + [% IF page %] + +

    [% page.title | html %]

    + +
    + [% page.content | $raw %] +
    + + [% ELSE %] + +
    + This page does not exist. +
    + + [% END %] + +
    + +
    +
    +
    + +[% INCLUDE 'opac-bottom.inc' %] +[% BLOCK jsinclude %][% END %] --- a/opac/opac-page.pl +++ a/opac/opac-page.pl @@ -0,0 +1,65 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use CGI qw ( -utf8 ); +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); +use Koha::AdditionalContents; + +my $query = CGI->new(); + +my ( $template, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "opac-page.tt", + query => $query, + type => "opac", + authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ), + } +); + +my $homebranch = $ENV{OPAC_BRANCH_DEFAULT}; +if (C4::Context->userenv) { + $homebranch = C4::Context->userenv->{'branch'}; +} + +my $pages = Koha::AdditionalContents->search_for_display( + { + category => 'pages', + location => [ 'opac_only', 'staff_and_opac' ], + lang => $template->lang, + library_id => $homebranch + } +); + +my $page_id = $query->param('page_id'); +my $page; +if ( $page_id ) { + foreach ( @{$pages->unblessed} ) { + if ( $_->{idnew} eq $page_id ) { + $page = $_; + } + } +} + +$template->param( + pages => $pages, + page => $page, +); + +output_html_with_http_headers $query, $cookie, $template->output; --- a/tools/page.pl +++ a/tools/page.pl @@ -0,0 +1,64 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use CGI qw ( -utf8 ); +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_html_with_http_headers ); +use Koha::AdditionalContents; + +my $query = CGI->new; +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "tools/page.tt", + query => $query, + type => "intranet", + flagsrequired => { tools => '*' }, + } +); + +my $homebranch; +if (C4::Context->userenv) { + $homebranch = C4::Context->userenv->{'branch'}; +} +my $pages = Koha::AdditionalContents->search_for_display( + { + category => 'pages', + location => [ 'staff_only', 'staff_and_opac' ], + lang => $template->lang, + library_id => $homebranch + } +); + +my $page_id = $query->param('page_id'); + +my $page; +if ( $page_id ) { + foreach ( @{$pages->unblessed} ) { + if ( $_->{idnew} eq $page_id ) { + $page = $_; + } + } +} + +$template->param( + pages => $pages, + page => $page, +); + +output_html_with_http_headers $query, $cookie, $template->output; --- a/tools/tools-home.pl +++ a/tools/tools-home.pl @@ -36,9 +36,23 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( my $pendingcomments = Koha::Reviews->search_limited({ approved => 0 })->count; my $pendingtags = get_count_by_tag_status(0); +my $homebranch; +if (C4::Context->userenv) { + $homebranch = C4::Context->userenv->{'branch'}; +} +my $pages = Koha::AdditionalContents->search_for_display( + { + category => 'pages', + location => [ 'staff_only', 'staff_and_opac' ], + lang => $template->lang, + library_id => $homebranch + } +); + $template->param( pendingcomments => $pendingcomments, - pendingtags => $pendingtags + pendingtags => $pendingtags, + pages => $pages, ); if ( C4::Context->config('enable_plugins') ) { --