use Koha::Database;
use Koha::DateUtils qw(dt_from_string);
+use Koha::Exceptions::UnknownProgramState;
use base qw(Koha::Object);
return $quote;
}
+=head2 get_daily_quote_for_interface
+
+ my $quote = Koha::Quote->get_daily_quote_for_interface();
+
+Is a wrapper for get_daily_quote(), 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 get_daily_quote_for_interface {
+ my ($self, %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 $self->get_daily_quote(%opts);
+}
+
=head3 _type
=cut
- 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
[% END %]
</div><!-- /koha-news -->
[% END %]
+ [% IF ( daily_quote ) %]
+ <div id="area-news">
+ <h3>Quote of the Day</h3>
+ <div class="newsitem">
+ <span id="daily-quote-text">[% daily_quote.text %]</span><span id="daily-quote-sep"> ~ </span><span id="daily-quote-source">[% daily_quote.source %]</span>
+ </div>
+ </div>
+ [% END %]
</div> <!-- /.col-sm-2 -->
<div class="col-sm-9">
<div class="row">
"action" : "edit",
};
},
- "height" : "14px",
"placeholder" : "Saving data...",
});
},
var aRow = oTable.fnAddData(
[
'NA', // this is hackish to fool the datatable sort routine into placing this row at the end of the list...
- '<input id="quoteSource" type="text" style="height:14px; width:99%" onkeydown="fnClickAddQuote(event,this.parentNode.parentNode)"/>',
- '<input id="quoteText" type="text" style="height:14px; width:99%" onkeydown="fnClickAddQuote(event,this.parentNode.parentNode)"/>',
+ '<input id="quoteSource" type="text" style="width:99%" onkeydown="fnClickAddQuote(event,this.parentNode.parentNode)"/>',
+ '<input id="quoteText" type="text" style="width:99%" onkeydown="fnClickAddQuote(event,this.parentNode.parentNode)"/>',
'0000-00-00 00:00:00',
],
false
[% END # IF koha_news %]
[% UNLESS news_item # Don't show under single news item %]
- [% IF ( display_daily_quote && daily_quote ) %]
+ [% IF ( daily_quote ) %]
<div id="daily-quote">
<h3>Quote of the day</h3>
<div>
use Koha::Reviews;
use Koha::ArticleRequests;
use Koha::ProblemReports;
+use Koha::Quote;
my $query = new CGI;
$template->param(
koha_news => $all_koha_news,
- koha_news_count => $koha_news_count
+ koha_news_count => $koha_news_count,
+ daily_quote => Koha::Quote->get_daily_quote_for_interface(),
);
my $branch =
@all_koha_news = &GetNewsToDisplay( $template->lang, $homebranch);
}
-my $quote = Koha::Quote->get_daily_quote(); # 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 );
$template->param(
koha_news => @all_koha_news,
branchcode => $homebranch,
- display_daily_quote => C4::Context->preference('QuoteOfTheDay'),
- daily_quote => $quote,
+ daily_quote => Koha::Quote->get_daily_quote_for_interface(),
);
output_html_with_http_headers $input, $cookie, $template->output;
use Modern::Perl;
use DateTime::Format::MySQL;
-use Test::More tests => 12;
+use Test::More tests => 13;
use Koha::Database;
use Koha::DateUtils qw(dt_from_string);
use Koha::Quote;
use Koha::Quotes;
+use t::lib::TestBuilder;
+use t::lib::Mocks;
+
BEGIN {
use_ok('Koha::Quote');
}
$quote = Koha::Quote->get_daily_quote();
is( $quote->{id}, 6, ' get_daily_quote returns the only existing quote' );
+
+$schema->storage->txn_rollback;
+
+subtest "get_daily_quote_for_interface" => sub {
+
+ plan tests => 3;
+
+ $schema->storage->txn_begin;
+
+ my ($quote);
+ my $quote_1 = Koha::Quote->new({ id => 10, source => 'Dusk And Her Embrace', text => 'Unfurl thy limbs breathless succubus<br/>How the full embosomed fog<br/>Imparts the night to us....', timestamp => dt_from_string })->store;
+
+ my $expected_quote = {
+ id => 10,
+ source => 'Dusk And Her Embrace',
+ text => 'Unfurl thy limbs breathless succubus<br/>How the full embosomed fog<br/>Imparts the night to us....',
+ timestamp => DateTime::Format::MySQL->format_datetime(dt_from_string),
+ };
+
+ t::lib::Mocks::mock_preference('QuoteOfTheDay', '');
+
+ ##Set interface and get nothing because syspref is not set.
+ C4::Context->interface('opac');
+ $quote = Koha::Quote->get_daily_quote_for_interface(id => $quote_1->id);
+ ok(not($quote), "'QuoteOfTheDay'-syspref not set so nothing returned");
+
+ ##Set 'QuoteOfTheDay'-syspref to not include current interface 'opac'
+ t::lib::Mocks::mock_preference('QuoteOfTheDay', 'intra commandline sip2 api yo-mama');
+ $quote = Koha::Quote->get_daily_quote_for_interface(id => $quote_1->id);
+ ok(not($quote), "'QuoteOfTheDay'-syspref doesn't include 'opac'");
+
+ ##Set 'QuoteOfTheDay'-syspref to include current interface 'opac'
+ t::lib::Mocks::mock_preference('QuoteOfTheDay', 'intraopaccommandline');
+ $quote = Koha::Quote->get_daily_quote_for_interface(id => $quote_1->id);
+ is_deeply($quote, $expected_quote, "Got the expected quote");
+
+ $schema->storage->txn_rollback;
+};