@@ -, +, @@ interfaces --- C4/Koha.pm | 26 ++++++++++ .../en/modules/admin/preferences/opac.pref | 11 ++-- .../prog/en/modules/intranet-main.tt | 8 +++ .../prog/en/modules/tools/quotes.tt | 5 +- mainpage.pl | 3 +- opac/opac-main.pl | 5 +- .../Koha/GetDailyQuoteForInterface.t | 52 +++++++++++++++++++ 7 files changed, 97 insertions(+), 13 deletions(-) create mode 100644 t/db_dependent/Koha/GetDailyQuoteForInterface.t --- a/C4/Koha.pm +++ a/C4/Koha.pm @@ -35,6 +35,8 @@ use autouse 'Data::cselectall_arrayref' => qw(Dumper); use DBI qw(:sql_types); use vars qw(@ISA @EXPORT @EXPORT_OK $DEBUG); +use Koha::Exceptions::UnknownProgramState; + BEGIN { require Exporter; @ISA = qw(Exporter); @@ -973,6 +975,30 @@ sub GetVariationsOfISSNs { 1; +=head2 GetDailyQuoteForInterface + + my $quote = C4::Koha::GetDailyQuoteForInterface(); + +Is a wrapper for GetDailyQuotes(), with an extra check for using the correct +interface defined in the syspref 'QuoteOfTheDay'. +If the current interface is not allowed to display quotes, then returns undef. + +=cut + +sub GetDailyQuoteForInterface { + my %opts = @_; + my $qotdPref = C4::Context->preference('QuoteOfTheDay'); + my $interface = C4::Context->interface(); + unless ($interface) { + my @cc = caller(3); + Koha::Exceptions::UnknownProgramState->throw(error => $cc[3]."()> C4::Context->interface() is not set! Don't know are you in OPAC or staff client?"); + } + unless ($qotdPref =~ /$interface/) { + return undef; + } + return GetDailyQuote(%opts); +} + __END__ =head1 AUTHOR --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -513,11 +513,12 @@ OPAC: - browsing and paging search results from the OPAC detail page. - - pref: QuoteOfTheDay - default: 0 - choices: - yes: Enable - no: Disable - - Quote of the Day display on OPAC home page + default: + class: short + - Quote of the Day display in Koha. + - Add 'opac' to show in OPAC home page. + - Add 'intranet' to show in the staff client main page. + - Example 'opac intranet', displays QOTD in OPAC and the staff client. - - pref: OPACPopupAuthorsSearch default: 0 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt @@ -34,6 +34,14 @@ [% END %] [% END %] + [% IF ( daily_quote ) %] +
+

Quote of the Day

+
+ [% daily_quote.text %] ~ [% daily_quote.source %] +
+
+ [% END %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/quotes.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/quotes.tt @@ -122,7 +122,6 @@ "action" : "edit", }; }, - "height" : "14px", "placeholder" : "Saving data...", }); }, @@ -190,8 +189,8 @@ var aRow = oTable.fnAddData( [ 'NA', // this is hackish to fool the datatable sort routine into placing this row at the end of the list... - '', - '', + '', + '', '0000-00-00 00:00:00', ], false --- a/mainpage.pl +++ a/mainpage.pl @@ -53,7 +53,8 @@ my $koha_news_count = scalar @$all_koha_news; $template->param( koha_news => $all_koha_news, - koha_news_count => $koha_news_count + koha_news_count => $koha_news_count, + daily_quote => C4::Koha::GetDailyQuoteForInterface(), ); my $branch = --- a/opac/opac-main.pl +++ a/opac/opac-main.pl @@ -73,8 +73,6 @@ if (defined $news_id){ @all_koha_news = &GetNewsToDisplay( $template->lang, $homebranch); } -my $quote = GetDailyQuote(); # other options are to pass in an exact quote id or select a random quote each pass... see perldoc C4::Koha - # For dashboard my $patron = Koha::Patrons->find( $borrowernumber ); @@ -101,8 +99,7 @@ if ( $patron ) { $template->param( koha_news => @all_koha_news, branchcode => $homebranch, - display_daily_quote => C4::Context->preference('QuoteOfTheDay'), - daily_quote => $quote, + daily_quote => C4::Koha::GetDailyQuoteForInterface(), ); # If GoogleIndicTransliteration system preference is On Set parameter to load Google's javascript in OPAC search screens --- a/t/db_dependent/Koha/GetDailyQuoteForInterface.t +++ a/t/db_dependent/Koha/GetDailyQuoteForInterface.t @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +use Modern::Perl; +use Test::More; +use Test::More tests => 1; +use Try::Tiny; + +use C4::Koha; + +my $dbh = C4::Context->dbh; + +# Start transaction +$dbh->{RaiseError} = 1; +# Setup stage +$dbh->do("DELETE FROM quotes"); +##populate test context +$dbh->do("INSERT INTO `quotes` VALUES + (10,'Dusk And Her Embrace','Unfurl thy limbs breathless succubus
How the full embosomed fog
Imparts the night to us....','0000-00-00 00:00:00'); +"); + +my $expected_quote = { + id => 10, + source => 'Dusk And Her Embrace', + text => 'Unfurl thy limbs breathless succubus
How the full embosomed fog
Imparts the night to us....', + timestamp => '0000-00-00 00:00:00', +}; + + +subtest "GetDailyQuoteForInterface", \&GetDailyQuoteForInterfaceTest; +sub GetDailyQuoteForInterfaceTest { + my ($quote); + + ##Set interface and get nothing because syspref is not set. + C4::Context->interface('opac'); + $quote = C4::Koha::GetDailyQuoteForInterface(id => 10); + ok(not($quote), "'QuoteOfTheDay'-syspref not set so nothing returned"); + + ##Set 'QuoteOfTheDay'-syspref to not include current interface 'opac' + C4::Context->set_preference('QuoteOfTheDay', 'intra commandline sip2 api yo-mama'); + $quote = C4::Koha::GetDailyQuoteForInterface(id => 10); + ok(not($quote), "'QuoteOfTheDay'-syspref doesn't include 'opac'"); + + ##Set 'QuoteOfTheDay'-syspref to include current interface 'opac' + C4::Context->set_preference('QuoteOfTheDay', 'intraopaccommandline'); + $quote = C4::Koha::GetDailyQuoteForInterface(id => 10); + is_deeply($quote, $expected_quote, "Got the expected quote"); + +} + +# teardown +C4::Context->set_preference('QuoteOfTheDay', undef); +$dbh->do("DELETE FROM quotes"); --