Bugzilla – Attachment 62648 Details for
Bug 18483
Customised help: Enhance staff client with news based, easily editable help system
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18483 - Customised help: Enhance staff client with news based, easily editable help system
Bug-18483---Customised-help-Enhance-staff-client-w.patch (text/plain), 20.67 KB, created by
Marc Véron
on 2017-04-24 23:17:03 UTC
(
hide
)
Description:
Bug 18483 - Customised help: Enhance staff client with news based, easily editable help system
Filename:
MIME Type:
Creator:
Marc Véron
Created:
2017-04-24 23:17:03 UTC
Size:
20.67 KB
patch
obsolete
>From fb71f3c487c39683c0f0de9b21d352656b907db9 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Marc=20V=C3=A9ron?= <veron@veron.ch> >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 a first draft. 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 >--- > help.pl | 51 ++++++++++++++++++-- > .../bug_18483_news-driven-help-system.perl | 17 +++++++ > installer/data/mysql/sysprefs.sql | 2 +- > .../intranet-tmpl/prog/en/includes/help-bottom.inc | 17 ++++--- > .../intranet-tmpl/prog/en/includes/help-top.inc | 55 +++++++++++++++------- > .../intranet-tmpl/prog/en/includes/permissions.inc | 1 + > .../en/modules/admin/preferences/staff_client.pref | 2 + > .../intranet-tmpl/prog/en/modules/help/mainpage.tt | 3 +- > .../prog/en/modules/help/nohelptext.tt | 2 + > .../prog/en/modules/tools/koha-news.tt | 23 +++++++++ > tools/koha-news.pl | 11 ++++- > 11 files changed, 152 insertions(+), 32 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/help.pl b/help.pl >index ad86a2d..799002c 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 ); > >@@ -47,24 +48,66 @@ C4::Context->interface('intranet'); > our $refer = $query->param('url'); > $refer = $query->referer() if !$refer || $refer eq 'undefined'; > my $from = _help_template_file_of_url($refer); >+my $helpkey = substr( $from, 0, rindex( $from, q{.} ) ); > my $htdocs = C4::Context->config('intrahtdocs'); > >-# >+my $helpsys = C4::Context->preference('CustomOnlineHelpStaff'); >+ >+#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"), > ); > >+$template->param( helpsys => $helpsys ); >+ >+if ( ($helpsys eq 'newsbased') || ($helpsys eq 'newsbased-and-filebased') ) { >+ >+ 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_18483_news-driven-help-system.perl b/installer/data/mysql/atomicupdate/bug_18483_news-driven-help-system.perl >new file mode 100644 >index 0000000..8bf28f3 >--- /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 = 'none|filebased|newsbased|newsbased-and-filebased' where variable = 'CustomOnlineHelpStaff'" ); >+ >+ $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 ef65580..68685be 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -114,7 +114,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'), >-('CustomOnlineHelpStaff', 'filebased', 'none|filebased', 'Select custom online help system for staff client.', 'Choice'), >+('CustomOnlineHelpStaff', 'filebased', 'none|filebased|newsbased|newsbased-and-filebased', 'Select custom online help system for staff client.', 'Choice'), > ('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'), > ('decreaseLoanHighHolds',NULL,'','Decreases the loan period for items with number of holds above the threshold specified in decreaseLoanHighHoldsValue','YesNo'), >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 7424b80..dfc47c3 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,13 @@ >-<form action="/cgi-bin/koha/edithelp.pl" method="post"> >- <fieldset class="action"><input type="button" class="close" value="Close help window" /> >- <input type="hidden" name="type" value="modify" /> >- <input type="hidden" name="referer" value="[% referer %]" /> >- [% IF Koha.Preference('CustomOnlineHelpStaff') == 'filebased' %] >- <input type="submit" class="submit" value="Edit help" /></fieldset> >+[% IF ( (Koha.Preference( 'CustomOnlineHelpStaff' ) == 'filebased') || (Koha.Preference( 'CustomOnlineHelpStaff' ) == 'newsbased-and-filebased') ) %] >+ [% IF (CAN_user_tools_edit_help) %] >+ <form action="/cgi-bin/koha/edithelp.pl" method="post"> >+ <fieldset class="action"><input type="button" class="close" value="Close help window" /> >+ <input type="hidden" name="type" value="modify" /> >+ <input type="hidden" name="referer" value="[% referer %]" /> >+ <input type="submit" class="submit" value="Edit help" /></fieldset> >+ </form> > [% END %] >-</form> >+[% END %] >+</div> <!-- /koha-help --> > </body> > </html> >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..81a6c50 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,44 @@ > [% USE Koha %] >+[% USE Branches %] > [% INCLUDE 'doc-head-open.inc' %] > <title>Online help</title> >-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> >-<link rel="shortcut icon" href="[% IF ( IntranetFavicon ) %][% IntranetFavicon %][% ELSE %][% interface %]/[% theme %]/img/favicon.ico[% END %]" type="image/x-icon" /> >-<link rel="stylesheet" type="text/css" href="[% interface %]/lib/jquery/jquery-ui-1.11.4.min.css" /> >-<link rel="stylesheet" type="text/css" media="print" href="[% interface %]/[% theme %]/css/print.css" /> >-[% INCLUDE intranetstylesheet.inc %] >-[% IF ( bidi ) %] >- <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/right-to-left.css" /> >-[% END %] >-<script type="text/javascript" src="[% interface %]/lib/jquery/jquery-2.2.3.min.js"></script> >-<script type="text/javascript" src="[% interface %]/lib/jquery/jquery-migrate-1.3.0.min.js"></script> >-<script type="text/javascript" src="[% interface %]/lib/jquery/jquery-ui-1.11.4.min.js"></script> >-<script type="text/javascript" src="[% interface %]/lib/shortcut/shortcut.js"></script> >-<!-- koha core js --> >-<script type="text/javascript" src="[% interface %]/[% theme %]/js/staff-global.js"></script> >- > <link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/help.css" /> >-</head> >+[% USE Koha %] >+[% INCLUDE 'doc-head-close.inc' %] >+ > <body id="help" class="help"> >+ >+[% IF ( (Koha.Preference( 'CustomOnlineHelpStaff' ) == 'newsbased') || (Koha.Preference( 'CustomOnlineHelpStaff' ) == 'newsbased-and-filebased') ) %] >+ <div id="help_from_news"> >+ <h1><span class="help_title">Help for [% Branches.GetName( homebranch ) %]</span></h1> >+ [% FOREACH helpitem IN help_from_news %] >+ [% IF (helpitem.helpkey == helpkey) || (helpitem.helpkey == 'all') %] >+ <div class="help-item-title" id="helpnews[% helpitem.idnew %]"> >+ <h4>[% helpitem.title %] [% helpitem.helpkey %]</h4> >+ <div class="help-item-body">[% helpitem.content %]</div> >+ <div class="help-item-date">[% helpitem.newdate %]</div> >+ <div class="help-item-footer"> >+ [% IF CAN_user_tools_edit_help %] >+ <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/koha-news.pl?op=add_form&id=[% helpitem.idnew %]"> >+ <i class="fa fa-pencil"></i>Edit</a> >+ <a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/koha-news.pl?op=del&ids=[% helpitem.idnew %]"> >+ <i class="fa fa-trash"></i>Delete</a> >+ [% END %] >+ </div> >+ </div> >+ [% END %] >+ [% END %] >+ [% IF CAN_user_tools_edit_help %] >+ <div class="help-item-buttons"> >+ <p><a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/koha-news.pl?op=add_form&helpkey=[% helpkey %]&lang=staffhelp"> >+ <i class="fa fa-pencil"></i>New custom help for this page</a> >+ <span class="hint">Key is: [% helpkey %]</span></p> >+ <p><a class="btn btn-default btn-xs" href="/cgi-bin/koha/tools/koha-news.pl?op=add_form&helpkey=all&lang=staffhelp"> >+ <i class="fa fa-plus"></i>New custom help for all pages</a> >+ <span class="hint">Key is: all</span></p> >+ </div> >+ [% END %] >+ </div><!-- /help-from-news --> >+[% END %] >+ >+<div id="koha-help"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc >index bcff76b..7b2da46 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc >@@ -56,6 +56,7 @@ > [%- CASE 'batch_upload_patron_images' -%]<span>Upload patron images in a batch or one at a time</span> > [%- CASE 'delete_anonymize_patrons' -%]<span>Delete old borrowers and anonymize circulation history (deletes borrower reading history)</span> > [%- CASE 'edit_calendar' -%]<span>Define days when the library is closed</span> >+ [%- CASE 'edit_help' -%]<span>Edit custom help</span> > [%- CASE 'edit_news' -%]<span>Write news for the OPAC and staff interfaces</span> > [%- CASE 'edit_notice_status_triggers' -%]<span>Set notice/status triggers for overdue items</span> > [%- CASE 'edit_notices' -%]<span>Define notices</span> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref >index f1c0bb1..e774c13 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/staff_client.pref >@@ -156,6 +156,8 @@ Staff Client: > choices: > none: "None" > filebased: "File based" >+ newsbased: "News based" >+ newsbased-and-filebased: "News based and file based combined" > - > - pref: IntranetCatalogSearchPulldown > choices: >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 840c138..22e459d 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' %] > > <h2>Welcome to Koha</h2> >- > <p>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.</p> > > <p>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.</p> >@@ -18,7 +17,7 @@ > <li><a href="http://koha-community.org/get-involved/irc/">Chat with Koha users and developers</a></li> > </ul> > >-[% IF Koha.Preference('CustomOnlineHelpStaff') == 'filebased' %] >+[% IF (CAN_user_tools_edit_help) && (Koha.Preference('CustomOnlineHelpStaff') == 'filebased') %] > <h2>Can I edit the online help?</h2> > > <p>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.</p> >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..393e857 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 >@@ -119,6 +119,11 @@ Edit news item[% ELSE %]Add news item[% END %][% ELSE %]News[% END %]</div> > [% ELSE %] > <option value="slip" >Slip</option> > [% END %] >+ [% IF ( default_lang == "staffhelp" ) %] >+ <option value="staffhelp" selected="selected">Staff help</option> >+ [% ELSE %] >+ <option value="staffhelp">Staffhelp</option> >+ [% END %] > [% FOREACH lang_lis IN lang_list %] > [% IF ( lang_lis.language == default_lang ) %] > <option value="[% lang_lis.language %]" selected="selected">OPAC ([% lang_lis.language %])</option> >@@ -161,6 +166,17 @@ Edit news item[% ELSE %]Add news item[% END %][% ELSE %]News[% END %]</div> > <input id="number" size="3" name="number" type="text" /> > [% END %] > </li> >+ <li> >+ <label for="helpkey">Help key: </label> >+ [% IF ( new_detail.helpkey ) %] >+ <input id="number" size="60" name="helpkey" type="text" value="[% new_detail.helpkey %]" /> >+ [% ELSIF ( helpkey ) %] >+ <input id="number" size="60" name="helpkey" type="text" value="[% helpkey %]" /> >+ [% ELSE %] >+ <input id="helpkey" size="60" name="helpkey" type="text" /> >+ [% END %] >+ <span class="hint">Used for news driven custom help system</span> >+ </li> > <li><label for="content">News: </label> > <textarea name="content" id="content" cols="75" rows="10">[% new_detail.content %]</textarea> > </li> >@@ -189,6 +205,11 @@ Edit news item[% ELSE %]Add news item[% END %][% ELSE %]News[% END %]</div> > [% ELSE %] > <option value="slip" >Slip</option> > [% END %] >+ [% IF ( lang == "staffhelp" ) %] >+ <option value="staffhelp" selected="selected">Staff help</option> >+ [% ELSE %] >+ <option value="staffhelp" >Staff help</option> >+ [% END %] > [% FOREACH lang_lis IN lang_list %] > [% IF ( lang_lis.language == lang ) %] > <option value="[% lang_lis.language %]" selected="selected">OPAC ([% lang_lis.language %])</option> >@@ -240,6 +261,8 @@ Edit news item[% ELSE %]Add news item[% END %][% ELSE %]News[% END %]</div> > Slip > [% CASE "" %] > All >+ [% CASE "staffhelp" %] >+ Staff help <span class="hint">[% opac_new.helpkey %]</span> > [% CASE %] > OPAC ([% opac_new.lang %]) > [% END %] >diff --git a/tools/koha-news.pl b/tools/koha-news.pl >index 61c3ec6..476002a 100755 >--- a/tools/koha-news.pl >+++ b/tools/koha-news.pl >@@ -45,6 +45,7 @@ if ( $cgi->param('expirationdate') ) { > } > my $timestamp = output_pref({ dt => dt_from_string( scalar $cgi->param('timestamp') ), dateformat => 'iso', dateonly => 1 }); > my $number = $cgi->param('number'); >+my $helpkey = $cgi->param('helpkey'); > my $lang = $cgi->param('lang'); > my $branchcode = $cgi->param('branch'); > my $error_message = $cgi->param('error_message'); >@@ -99,7 +100,11 @@ if ( $op eq 'add_form' ) { > $template->{VARS}->{'new_detail'} = $new_detail; > } > else { >- $template->param( op => 'add' ); >+ $template->param( >+ op => 'add', >+ helpkey => $helpkey >+ ); >+ > } > } > elsif ( $op eq 'add' ) { >@@ -112,6 +117,7 @@ elsif ( $op eq 'add' ) { > expirationdate => $expirationdate, > timestamp => $timestamp, > number => $number, >+ helpkey => $helpkey, > branchcode => $branchcode, > borrowernumber => $borrowernumber, > } >@@ -131,6 +137,7 @@ elsif ( $op eq 'edit' ) { > lang => $lang, > expirationdate => $expirationdate, > timestamp => $timestamp, >+ helpkey => $helpkey, > number => $number, > branchcode => $branchcode, > } >@@ -145,7 +152,7 @@ elsif ( $op eq 'del' ) { > > else { > >- my ( $opac_news_count, $opac_news ) = &get_opac_news( undef, $lang, $branchcode ); >+ my ( $opac_news_count, $opac_news ) = &get_opac_news( undef, 'staffhelp', $branchcode ); > > foreach my $new ( @$opac_news ) { > next unless $new->{'expirationdate'}; >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 18483
:
62576
|
62577
|
62579
|
62648
|
62705
|
62718
|
62804
|
62812
|
62892
|
62898
|
62899
|
62900
|
62901
|
62952
|
66852
|
68749