From caeb82df857033958ba1b648ca35ff430d15dbe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20V=C3=A9ron?= Date: Sun, 23 Apr 2017 00:22:51 +0200 Subject: [PATCH] Bug 18483 - Customised help: Enhance staff client with news based, easily editable help system Koha's staff client has a file based help system with an edit function for customising. However, the edited files have to be saved and restored with each release. Otherwise they are overwritten. As an enhancement or alternative, the existing news system can be used to implement a complementing help system. Similar to the news, the text can be created for all branches or for individual branches. Help is context sensitive (based on the existing help system), and it can be created / edited directly from the help page (based on a user permission). The display can be managed with a system preference (Bug 18472: Add system preference CustomOnlineHelpStaff to hide / select custom online help system). This patch is work in progress. It is not yet ready for testing or sign-off. Amended to resolve minor conflicts with Bug 18472 Amended to expand sysprefs from Bug 18472 Amended to add permissions Amended for visibility of edit buttons Amended for updatedb fixes Amended for managing permissions Amended to use news managing page as popup, needs Bug 13835 to test (not to apply) Amended to make it apply again on 18472 Amended for better cycle through popup Amended for last steps before switching to NSO Still work in progress, not yet ready to test. --- edithelp.pl | 13 +- help.pl | 53 +++++++- ...dd_system_preference_CustomOnlineHelpStaff.perl | 2 +- .../bug_18483_news-driven-help-system.perl | 17 +++ installer/data/mysql/sysprefs.sql | 2 +- installer/data/mysql/userpermissions.sql | 1 + .../intranet-tmpl/prog/en/includes/header.inc | 2 +- .../intranet-tmpl/prog/en/includes/help-bottom.inc | 15 ++- .../intranet-tmpl/prog/en/includes/help-top.inc | 54 +++++--- .../intranet-tmpl/prog/en/includes/permissions.inc | 1 + .../prog/en/modules/admin/preferences/admin.pref | 1 + .../intranet-tmpl/prog/en/modules/help/mainpage.tt | 5 +- .../prog/en/modules/help/nohelptext.tt | 2 + .../prog/en/modules/tools/koha-news.tt | 144 +++++++++++++-------- .../prog/en/modules/tools/tools-home.tt | 14 +- tools/koha-news.pl | 48 ++++++- 16 files changed, 267 insertions(+), 107 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_18483_news-driven-help-system.perl create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/help/nohelptext.tt diff --git a/edithelp.pl b/edithelp.pl index dca61b1..e2ec5f4 100755 --- a/edithelp.pl +++ b/edithelp.pl @@ -18,6 +18,7 @@ # along with Koha; if not, see . use Modern::Perl; +use C4::Koha; use C4::Output; use C4::Templates; use C4::Auth; @@ -45,17 +46,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { - catalogue => 1, - circulate => 1, - parameters => 1, - borrowers => 1, - permissions => 1, - reserveforothers => 1, - reserveforself => 1, - editcatalogue => 1, - updatecharges => 1, - }, + flagsrequired => { tools => 'edit_help' }, debug => 1, } ); diff --git a/help.pl b/help.pl index ad86a2d..4d13684 100755 --- a/help.pl +++ b/help.pl @@ -21,7 +21,8 @@ use strict; use warnings; use C4::Templates; use C4::Output; -# use C4::Auth; +use C4::NewsChannels; # GetNewsToDisplay +use C4::Auth; use C4::Context; use CGI qw ( -utf8 ); @@ -43,28 +44,72 @@ my $query = new CGI; # This is usually set by get_template_and_user C4::Context->interface('intranet'); +my $helpsys = C4::Context->preference('HelpSystem'); + # find the script that called the online help using the CGI referer() our $refer = $query->param('url'); $refer = $query->referer() if !$refer || $refer eq 'undefined'; +# replace referer if we come back from news edit popup +$refer = $query->param('popupreferer') if defined $query->param('popupreferer') ; + my $from = _help_template_file_of_url($refer); +my $helpkey = substr( $from, 0, rindex( $from, q{.} ) ); my $htdocs = C4::Context->config('intrahtdocs'); -# +#Template for 'classic' Koha help text (filebased) if needed, otherwise no text + # checking that the help file exist, otherwise, display nohelp.tt page -# my ( $theme, $lang ) = C4::Templates::themelanguage( $htdocs, $from, "intranet", $query ); + unless ( -e "$htdocs/$theme/$lang/modules/$from" ) { $from = "help/nohelp.tt"; ( $theme, $lang ) = C4::Templates::themelanguage( $htdocs, $from, "intranet", $query ); } -my $template = C4::Templates::gettemplate($from, 'intranet', $query); +# Classic Koha help text not used +if ( $helpsys eq 'newsbased' ) { + #Template without classic Koha help text + $from = "help/nohelptext.tt"; + ( $theme, $lang ) = C4::Templates::themelanguage( $htdocs, $from, "intranet", $query ); +} + +#my $template = C4::Templates::gettemplate($from, 'intranet', $query); + +my ( $template, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => $from, + query => $query, + type => "intranet", + authnotrequired => 0, + } +); + + + + $template->param( referer => $refer, + helpkey => $helpkey, intranetstylesheet => C4::Context->preference("intranetstylesheet"), intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), + helpsystem => $helpsys, ); +if ( index($helpsys,'newsbased') != -1 || index ($helpsys,'filebased') != -1 ) { + + my $homebranch; + if (C4::Context->userenv) { + $homebranch = C4::Context->userenv->{'branch'}; + } + my $help_from_news = &GetNewsToDisplay('staffhelp', $homebranch); + my $help_from_news_count = scalar @$help_from_news; + $template->param( + help_from_news => $help_from_news, + help_from_news_count => $help_from_news_count, + homebranch => $homebranch + ); +} + my $help_version = C4::Context->preference("Version"); if ( $help_version =~ m|^(\d+)\.(\d{2}).*$| ) { my $version = $1; diff --git a/installer/data/mysql/atomicupdate/bug_18472-Add_system_preference_CustomOnlineHelpStaff.perl b/installer/data/mysql/atomicupdate/bug_18472-Add_system_preference_CustomOnlineHelpStaff.perl index ce31d2d..a523c76 100644 --- a/installer/data/mysql/atomicupdate/bug_18472-Add_system_preference_CustomOnlineHelpStaff.perl +++ b/installer/data/mysql/atomicupdate/bug_18472-Add_system_preference_CustomOnlineHelpStaff.perl @@ -1,7 +1,7 @@ $DBversion = 'XXX'; # will be replaced by the RM if( CheckVersion( $DBversion ) ) { # you can use $dbh here like: - $dbh->do("INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('HelpSystem', 'filebased', 'filebased', 'Select online help system.', 'multiple')" ); + $dbh->do("INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('HelpSystem', 'filebased', 'filebased|newsbased', 'Select online help system.', 'multiple')" ); $dbh->do("INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ('EnableEditingFilebasedHelp', '1', '', 'Enable editing of file based Koha help.', 'yesno')" ); # or perform some test and warn diff --git a/installer/data/mysql/atomicupdate/bug_18483_news-driven-help-system.perl b/installer/data/mysql/atomicupdate/bug_18483_news-driven-help-system.perl new file mode 100644 index 0000000..c00c8dc --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_18483_news-driven-help-system.perl @@ -0,0 +1,17 @@ +$DBversion = 'XXXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + # you can use $dbh here like: + $dbh->do( "UPDATE systempreferences SET VALUE = 'filebased', OPTIONS = 'filebased|newsbased' where variable = 'HelpSystem'" ); + + $dbh->do( "ALTER TABLE opac_news ADD COLUMN helpkey varchar(250) AFTER lang "); + $dbh->do( "INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (13, 'edit_help', 'Edit custom help');" ); + + # or perform some test and warn + # if( !column_exists( 'biblio', 'biblionumber' ) ) { + # warn "There is something wrong"; + # } + + # Always end with this (adjust the bug info) + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug 18483 - Customised help: Enhance staff client with news based, easily editable help system)\n"; +} diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 9c32d85..244b225 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -115,7 +115,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('CronjobLog','0',NULL,'If ON, log information from cron jobs.','YesNo'), ('CumulativeRestrictionPeriods',0,NULL,'Cumulate the restriction periods instead of keeping the highest','YesNo'), ('CurrencyFormat','US','US|FR|CH','Determines the display format of currencies. eg: \'36000\' is displayed as \'360 000,00\' in \'FR\' or \'360,000.00\' in \'US\'.','Choice'), -('HelpSystem', 'filebased', 'filebased', 'Select online help system.', 'multiple'), +('HelpSystem', 'filebased', 'filebased|newsbased', 'Select online help system.', 'multiple'), ('EnableEditingFilebasedHelp', '1', '', 'Enable editing of file based Koha help.', 'yesno'), ('dateformat','us','metric|us|iso|dmydot','Define global date format (us mm/dd/yyyy, metric dd/mm/yyy, ISO yyyy-mm-dd, dmydot dd.mm.yyyy)','Choice'), ('DebugLevel','2','0|1|2','Define the level of debugging information sent to the browser when errors are encountered (set to 0 in production). 0=none, 1=some, 2=most','Choice'), diff --git a/installer/data/mysql/userpermissions.sql b/installer/data/mysql/userpermissions.sql index 172f4c6..ce41cc8 100644 --- a/installer/data/mysql/userpermissions.sql +++ b/installer/data/mysql/userpermissions.sql @@ -30,6 +30,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES (11, 'budget_manage_all', 'Manage all budgets'), (11, 'edi_manage', 'Manage EDIFACT transmissions'), (13, 'edit_news', 'Write news for the OPAC and staff interfaces'), + (13, 'edit_help', 'Edit custom help'), (13, 'label_creator', 'Create printable labels and barcodes from catalog and patron data'), (13, 'edit_calendar', 'Define days when the library is closed'), (13, 'moderate_comments', 'Moderate patron comments'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc index 82c2a4a..3ecc2df 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc @@ -98,7 +98,7 @@ - [% IF Koha.Preference('HelpSystem') == 'filebased' %] + [% IF Koha.Preference('HelpSystem').match('filebased|newsbased') %]
  • Help
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/help-bottom.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/help-bottom.inc index 0ed2086..8d8f706 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/help-bottom.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/help-bottom.inc @@ -1,10 +1,15 @@ +[% USE Koha %] +
    -
    - [% IF (Koha.Preference('HelpSystem') == 'filebased') && (Koha.Preference('EnableEditingFilebasedHelp') ) %] - +
    + -
    - [% END %] + [% IF ( Koha.Preference('HelpSystem').match('filebased') && Koha.Preference('EnableEditingFilebasedHelp') && CAN_user_tools_edit_help ) %] + + + [% END %] +
    + diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/help-top.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/help-top.inc index ff6aeb8..f720f1a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/help-top.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/help-top.inc @@ -1,21 +1,43 @@ [% USE Koha %] +[% USE Branches %] [% INCLUDE 'doc-head-open.inc' %] Online help - - - - -[% INCLUDE intranetstylesheet.inc %] -[% IF ( bidi ) %] - -[% END %] - - - - - - - - +[% USE Koha %] +[% INCLUDE 'doc-head-close.inc' %] + + +[% IF Koha.Preference('HelpSystem').match('newsbased') %] +
    +

    Help for [% Branches.GetName( homebranch ) %]

    + [% FOREACH helpitem IN help_from_news %] + [% IF (helpitem.helpkey == helpkey) || (helpitem.helpkey == 'all') %] +
    +

    [% helpitem.title %]

    +
    [% helpitem.content %]
    +
    [% helpitem.newdate %]
    + +
    + [% END %] + [% END %] + [% IF CAN_user_tools_edit_help %] +
    +

    + New custom help for this page + Key is: [% helpkey %]

    +

    + New custom help for all pages + Key is: all

    +
    +

    Note: You can manage and / or delete help entries in More › Tools

    + [% END %] +
    +[% END %] + +
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc index 7c6275a..7d6beac 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc @@ -57,6 +57,7 @@ [%- CASE 'batch_upload_patron_images' -%]Upload patron images in a batch or one at a time [%- CASE 'delete_anonymize_patrons' -%]Delete old borrowers and anonymize circulation history (deletes borrower reading history) [%- CASE 'edit_calendar' -%]Define days when the library is closed + [%- CASE 'edit_help' -%]Edit custom help [%- CASE 'edit_news' -%]Write news for the OPAC and staff interfaces [%- CASE 'edit_notice_status_triggers' -%]Set notice/status triggers for overdue items [%- CASE 'edit_notices' -%]Define notices diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref index c0c4526..5493b5a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref @@ -420,6 +420,7 @@ Administration: default: filebased multiple: filebased: "File based (staff client)" + newsbased: "News based" - - "Enable editing of file based Koha help: " - pref: EnableEditingFilebasedHelp diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/help/mainpage.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/help/mainpage.tt index 86ab4b7..0096079 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/help/mainpage.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/help/mainpage.tt @@ -2,7 +2,6 @@ [% INCLUDE 'help-top.inc' %]

    Welcome to Koha

    -

    If this is your first time logging into Koha, you should now go to Koha Administration and set up all system preferences, patron categories, item types and libraries. You should also review the other settings found in Administration.

    Once you have set up patron categories, you should create a new user in the Patrons module with superlibrarian permissions. Once that user is created, you should log in as that user rather than the root user which is set up as part of installation.

    @@ -18,7 +17,8 @@
  • Chat with Koha users and developers
  • -[% IF ( Koha.Preference('HelpSystem') == 'filebased' ) %] + [% IF Koha.Preference('HelpSystem').match('filebased') && (Koha.Preference('EnableEditingFilebasedHelp') && CAN_user_tools_edit_help ) %] +

    Can I edit the online help?

    You can edit the online help through the Koha Staff Client by clicking the "Edit Help" button. This feature has been designed so that library workflow and policies can be documented within Koha.

    @@ -26,6 +26,7 @@

    IMPORTANT: Your online help will be overwritten by the new Help when there is an upgrade. If you want to keep a copy of your online help, you should instruct your System Administrator to upgrade the Online Help directory in the Koha file tree.

    The online help directory is:

    [% themelang %]/modules/help

    +

    Note: Files in help directory must be writeable to make this feature work. Additionally, system preference 'EnableEditingFilebasedHelp' must be set to 'Yes'.

    [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/help/nohelptext.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/help/nohelptext.tt new file mode 100644 index 0000000..ea6af02 --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/help/nohelptext.tt @@ -0,0 +1,2 @@ +[% INCLUDE 'help-top.inc' %] +[% INCLUDE 'help-bottom.inc' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt index dd1ae84..9d73c22 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt @@ -1,3 +1,4 @@ +[% USE Koha %] [% USE KohaDates %] [% USE Branches %] [% INCLUDE 'doc-head-open.inc' %] @@ -72,11 +73,14 @@ tinyMCE.init({ -[% INCLUDE 'header.inc' %] -[% INCLUDE 'cat-search.inc' %] - [% END %] +
  • + [% IF ( Koha.Preference('HelpSystem').match('newsbased') && CAN_user_tools_edit_help ) %] + + [% IF ( new_detail.helpkey ) %] + + [% ELSIF ( helpkey ) %] + + [% ELSE %] + + [% END %] + Used for staff help. Will be populated for individual page when creating a new entry from 'Help'. Example: 'help/circ/circulation'. Use 'all' for all pages. + [% END %] + +
  • - -
    Cancel
    + +
    + [% IF popup_window %] + + Cancel + [% ELSE %] + + Cancel + [% END %] +
    [% ELSE %]
    - - + + [% INCLUDE langoptions %] +