Bugzilla – Attachment 122401 Details for
Bug 22544
Move C4:NewsChannels to Koha namespace
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 22544: Move GetNewsToDisplay to Koha namespace
Bug-22544-Move-GetNewsToDisplay-to-Koha-namespace.patch (text/plain), 19.08 KB, created by
Marcel de Rooy
on 2021-06-25 07:05:14 UTC
(
hide
)
Description:
Bug 22544: Move GetNewsToDisplay to Koha namespace
Filename:
MIME Type:
Creator:
Marcel de Rooy
Created:
2021-06-25 07:05:14 UTC
Size:
19.08 KB
patch
obsolete
>From f40ef82981a0c56e8e88e08a4a3917b2f4ebd205 Mon Sep 17 00:00:00 2001 >From: Josef Moravec <josef.moravec@gmail.com> >Date: Wed, 20 Mar 2019 07:36:53 +0000 >Subject: [PATCH] Bug 22544: Move GetNewsToDisplay to Koha namespace >Content-Type: text/plain; charset=utf-8 > >Signed-off-by: David Nind <david@davidnind.com> >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> > >Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >--- > C4/Members.pm | 23 +++-- > C4/NewsChannels.pm | 94 ------------------- > Koha/Template/Plugin/KohaNews.pm | 15 ++- > .../prog/en/modules/intranet-main.tt | 9 +- > .../bootstrap/en/includes/html_helpers.inc | 2 +- > .../bootstrap/en/modules/opac-main.tt | 15 ++- > .../bootstrap/en/modules/opac-news-rss.tt | 2 +- > mainpage.pl | 16 ++-- > opac/opac-main.pl | 22 +++-- > opac/opac-news-rss.pl | 19 ++-- > t/db_dependent/NewsChannels.t | 67 ------------- > tools/koha-news.pl | 1 - > 12 files changed, 80 insertions(+), 205 deletions(-) > delete mode 100644 C4/NewsChannels.pm > delete mode 100755 t/db_dependent/NewsChannels.t > >diff --git a/C4/Members.pm b/C4/Members.pm >index c2ef801294..edb33bdcec 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -33,7 +33,6 @@ use C4::Reserves; > use C4::Accounts; > use C4::Biblio; > use C4::Letters; >-use C4::NewsChannels; #get slip news > use DateTime; > use Koha::Database; > use Koha::DateUtils; >@@ -41,6 +40,7 @@ use Koha::AuthUtils qw(hash_password); > use Koha::Database; > use Koha::Holds; > use Koha::List::Patron; >+use Koha::News; > use Koha::Patrons; > use Koha::Patron::Categories; > >@@ -588,11 +588,22 @@ sub IssueSlip { > issues => $all, > }; > } >- my $news = GetNewsToDisplay( "slip", $branch ); >- my @news = map { >- $_->{'timestamp'} = $_->{'newdate'}; >- { opac_news => $_ } >- } @$news; >+ my $news = Koha::News->search({ >+ lang => [ 'slip', '' ], >+ branchcode => [ $branch, undef ], >+ -or => [ expirationdate => { '>=' => \'NOW()' }, >+ expirationdate => undef ] >+ },{ >+ order_by => 'number' >+ } >+ ); >+ my @news; >+ while ( my $n = $news->next ) { >+ my $all = $n->unblessed_all_relateds; >+ push @news, { >+ opac_news => $all, >+ }; >+ } > $letter_code = 'ISSUESLIP'; > %repeat = ( > checkedout => \@checkouts, >diff --git a/C4/NewsChannels.pm b/C4/NewsChannels.pm >deleted file mode 100644 >index 2a50a2a28c..0000000000 >--- a/C4/NewsChannels.pm >+++ /dev/null >@@ -1,94 +0,0 @@ >-package C4::NewsChannels; >- >-# This file is part of Koha. >-# >-# Copyright (C) 2000-2002 Katipo Communications >-# Copyright (C) 2013 Mark Tompsett >-# >-# 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 <http://www.gnu.org/licenses>. >- >-use Modern::Perl; >-use C4::Context; >-use Koha::DateUtils; >-use C4::Log qw(logaction); >-use Koha::News; >- >-use vars qw(@ISA @EXPORT); >- >-BEGIN { >- @ISA = qw(Exporter); >- @EXPORT = qw( >- &GetNewsToDisplay >- ); >-} >- >-=head1 NAME >- >-C4::NewsChannels - Functions to manage OPAC and intranet news >- >-=head1 DESCRIPTION >- >-This module provides the functions needed to mange OPAC and intranet news. >- >-=head1 FUNCTIONS >- >-=cut >- >-=head2 GetNewsToDisplay >- >- $news = &GetNewsToDisplay($lang,$branch); >- C<$news> is a ref to an array which contains >- all news with expirationdate > today or expirationdate is null >- that is applicable for a given branch. >- >-=cut >- >-sub GetNewsToDisplay { >- my ($lang,$branch) = @_; >- my $dbh = C4::Context->dbh; >- my $query = q{ >- SELECT opac_news.*,published_on AS newdate, >- borrowers.title AS author_title, >- borrowers.firstname AS author_firstname, >- borrowers.surname AS author_surname >- FROM opac_news >- LEFT JOIN borrowers on borrowers.borrowernumber = opac_news.borrowernumber >- WHERE ( >- expirationdate >= CURRENT_DATE() >- OR expirationdate IS NULL >- ) >- AND published_on <= CURDATE() >- AND (opac_news.lang = '' OR opac_news.lang = ?) >- AND (opac_news.branchcode IS NULL OR opac_news.branchcode = ?) >- ORDER BY number >- }; >- my $sth = $dbh->prepare($query); >- $lang = $lang // q{}; >- $sth->execute($lang,$branch); >- my @results; >- while ( my $row = $sth->fetchrow_hashref ){ >- $row->{newdate} = output_pref({ dt => dt_from_string( $row->{newdate} ), dateonly => 1 }); >- push @results, $row; >- } >- return \@results; >-} >- >-1; >-__END__ >- >-=head1 AUTHOR >- >-TG >- >-=cut >diff --git a/Koha/Template/Plugin/KohaNews.pm b/Koha/Template/Plugin/KohaNews.pm >index efd08dd52f..d602646234 100644 >--- a/Koha/Template/Plugin/KohaNews.pm >+++ b/Koha/Template/Plugin/KohaNews.pm >@@ -26,7 +26,7 @@ use base qw( Template::Plugin ); > > use C4::Koha; > use C4::Context; >-use C4::NewsChannels; # GetNewsToDisplay >+use Koha::News; > > sub get { > my ( $self, $params ) = @_; >@@ -34,7 +34,7 @@ sub get { > my $display_location = $params->{location}; > my $blocktitle = $params->{blocktitle}; > my $lang = $params->{lang}; >- my $library = $params->{library} || ""; >+ my $library = $params->{library}; > my $news_lang; > > if( !$display_location ){ >@@ -43,7 +43,16 @@ sub get { > $news_lang = $display_location."_".$lang; > } > >- my $content = &GetNewsToDisplay( $news_lang, $library ); >+ my $search_params; >+ $search_params->{lang} = $news_lang; >+ $search_params->{branchcode} = [ $library, undef ] if $library; >+ $search_params->{-or} = [ expirationdate => { '>=' => \'NOW()' }, >+ expirationdate => undef ]; >+ my $content = Koha::News->search( >+ $search_params, >+ { >+ order_by => 'number' >+ }); > > if( @$content ){ > return { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt >index c65c30cd25..b13d4660f4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt >@@ -2,6 +2,7 @@ > [% USE Asset %] > [% USE Koha %] > [% USE Branches %] >+[% USE KohaDates %] > [% SET footerjs = 1 %] > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha staff interface</title> >@@ -23,14 +24,16 @@ > <div id="container-main" class="container-fluid"> > <div class="row"> > <div class="col-sm-3"> >- [% IF ( koha_news_count ) %] >+ [% IF ( koha_news.count ) %] > <div id="area-news"> > <h3><span class="news_title">News</span></h3> >- [% SET newsdisp = Koha.Preference('NewsAuthorDisplay') %] >+ [% SET show_author = >+ Koha.Preference('NewsAuthorDisplay') == 'staff' >+ || Koha.Preference('NewsAuthorDisplay') == 'both' %] > [% FOREACH koha_new IN koha_news %] > <div class="newsitem" id="news[% koha_new.idnew | html %]"><h4>[% koha_new.title | html %]</h4> > <div class="newsbody">[% koha_new.content | $raw %]</div> >- <p class="newsfooter"> Posted on [% koha_new.newdate | html %][% IF( ( newsdisp == 'staff' || newsdisp == 'both' ) && koha_new.borrowernumber ) %] by <span class="newsauthor_title">[% koha_new.author_title | html %] </span>[% koha_new.author_firstname | html %] [% koha_new.author_surname | html %]<br />[% END %] >+ <p class="newsfooter"> Posted on [% koha_new.timestamp | $KohaDates %][% IF( show_author && koha_new.borrowernumber ) %] by <span class="newsauthor_title">[% koha_new.author.title | html %] </span>[% koha_new.author.firstname | html %] [% koha_new.author.surname | html %]<br />[% END %] > [% IF ( CAN_user_tools ) %] > <a href="/cgi-bin/koha/tools/koha-news.pl?op=add_form&id=[% koha_new.idnew | uri %]">Edit</a> > | <a class="news_delete" href="/cgi-bin/koha/tools/koha-news.pl?op=del&ids=[% koha_new.idnew | html %]">Delete</a> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/html_helpers.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/html_helpers.inc >index d872c73f4d..f292178697 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/html_helpers.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/html_helpers.inc >@@ -9,7 +9,7 @@ > [% END %] > > [% BLOCK koha_news_block %] >- [% IF ( news.content.size > 0 ) %] >+ [% IF ( news.content.count > 0 ) %] > <div id="[% news.location | html %]"> > [% FOREACH n IN news.content %] > <div class="[% n.lang | html %]_item"> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt >index 2c50b3ce84..ab8c160006 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-main.tt >@@ -96,7 +96,9 @@ > [% ELSE %] > > <div id="news" class="newscontainer"> >- [% SET newsdisp = ( Koha.Preference('NewsAuthorDisplay') ) %] >+ [% SET show_author = >+ Koha.Preference('NewsAuthorDisplay') == 'opac' >+ || Koha.Preference('NewsAuthorDisplay') == 'both' %] > [% FOREACH koha_new IN koha_news %] > <div class="newsitem"> > <h4 class="newsheader"> >@@ -109,21 +111,16 @@ > <div class="newsbody">[% koha_new.content | $raw %]</div> > <div class="newsfooter"> > Published on [% koha_new.published_on | $KohaDates %] >- [% IF ( (newsdisp == 'opac' || newsdisp == 'both') && koha_new.borrowernumber ) %] >- [% IF news_item %] >- [% SET author = koha_new.author %] >- by <span class="newsauthor_title">[% author.title | html %] </span>[% author.firstname | html %] [% author.surname | html %] >- [% ELSE %] >- by <span class="newsauthor_title">[% koha_new.author_title | html %] </span>[% koha_new.author_firstname | html %] [% koha_new.author_surname | html %] >- [% END %] >+ [% IF ( show_author && koha_new.borrowernumber ) %] >+ by <span class="newsauthor_title">[% koha_new.author.title | html %] </span>[% koha_new.author.firstname | html %] [% koha_new.author.surname | html %] > [% END %] > [% IF ( news_item ) %] > • <a href="/cgi-bin/koha/opac-main.pl">Show all news</a> > [% END %] > </div> > </div> >- > [% END %] >+ > [% UNLESS news_item %] > <div id="rssnews-container"> > <!-- Logged in users have a branch code or it could be explicitly set --> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt >index d3935e6d2f..645ba47e0f 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-news-rss.tt >@@ -1,4 +1,4 @@ >-[% USE raw %] >+[% USE raw -%] > <?xml version="1.0"?> > <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> > <channel> >diff --git a/mainpage.pl b/mainpage.pl >index 183b5e0fcd..6d2c79783c 100755 >--- a/mainpage.pl >+++ b/mainpage.pl >@@ -24,8 +24,8 @@ use CGI qw ( -utf8 ); > use C4::Output; > use C4::Auth; > use C4::Koha; >-use C4::NewsChannels; # GetNewsToDisplay > use C4::Tags qw/get_count_by_tag_status/; >+use Koha::News; > use Koha::Patron::Modifications; > use Koha::Patron::Discharge; > use Koha::Reviews; >@@ -49,13 +49,17 @@ my $homebranch; > if (C4::Context->userenv) { > $homebranch = C4::Context->userenv->{'branch'}; > } >-my $all_koha_news = &GetNewsToDisplay("koha",$homebranch); >-my $koha_news_count = scalar @$all_koha_news; >+my $koha_news = Koha::News->search({ >+ lang => 'koha', >+ branchcode => [ $homebranch, undef ] >+}, >+{ >+ order_by => 'number' >+}); > > $template->param( >- koha_news => $all_koha_news, >- koha_news_count => $koha_news_count, >- daily_quote => Koha::Quotes->get_daily_quote(), >+ koha_news => $koha_news, >+ daily_quote => Koha::Quotes->get_daily_quote(), > ); > > my $branch = >diff --git a/opac/opac-main.pl b/opac/opac-main.pl >index af0377f483..f11aecdf01 100755 >--- a/opac/opac-main.pl >+++ b/opac/opac-main.pl >@@ -22,7 +22,6 @@ use Modern::Perl; > use CGI qw ( -utf8 ); > use C4::Auth; # get_template_and_user > use C4::Output; >-use C4::NewsChannels; # GetNewsToDisplay > use C4::Languages qw(getTranslatedLanguages accept_language); > use Koha::Quotes; > use C4::Members; >@@ -61,17 +60,26 @@ elsif (C4::Context->userenv and defined $input->param('branch') and length $inpu > } > > my $news_id = $input->param('news_id'); >-my $all_koha_news; >+my $koha_news; > > if (defined $news_id){ >- $all_koha_news = Koha::News->search({ idnew => $news_id, lang => { '!=', 'koha' } }); # get news that is not staff-only news >- if( $all_koha_news->count ) { # we only expect one btw >- $template->param( news_item => $all_koha_news->next ); >+ $koha_news = Koha::News->search({ idnew => $news_id, lang => { '!=', 'koha' } }); # get news that is not staff-only news >+ if ( $koha_news->count > 0){ >+ $template->param( news_item => $koha_news->next ); > } else { > $template->param( single_news_error => 1 ); > } > } else { >- $all_koha_news = &GetNewsToDisplay( $template->lang, $homebranch); >+ my $params; >+ $params->{lang} = [ $template->lang, '' ]; >+ $params->{branchcode} = [ $homebranch, undef ] if $homebranch; >+ $params->{-or} = [ expirationdate => { '>=' => \'NOW()' }, >+ expirationdate => undef ]; >+ $koha_news = Koha::News->search( >+ $params, >+ { >+ order_by => 'number' >+ }); > } > > # For dashboard >@@ -104,7 +112,7 @@ if ( $patron ) { > } > > $template->param( >- koha_news => $all_koha_news, >+ koha_news => $koha_news, > branchcode => $homebranch, > daily_quote => Koha::Quotes->get_daily_quote(), > ); >diff --git a/opac/opac-news-rss.pl b/opac/opac-news-rss.pl >index f8c2b0e485..ff00cdfe24 100755 >--- a/opac/opac-news-rss.pl >+++ b/opac/opac-news-rss.pl >@@ -22,8 +22,8 @@ use Modern::Perl; > use CGI; > use C4::Auth; # get_template_and_user > use C4::Output; >-use C4::NewsChannels; # GetNewsToDisplay > use C4::Languages qw(getTranslatedLanguages accept_language); >+use Koha::News; > > my $input = CGI->new; > my $dbh = C4::Context->dbh; >@@ -43,12 +43,17 @@ my ($theme, $news_lang, $availablethemes) = C4::Templates::themelanguage(C4::Con > > my $branchcode = $input->param('branchcode'); > >-my $all_koha_news = GetNewsToDisplay( $news_lang, $branchcode ); >-my $koha_news_count = scalar @$all_koha_news; >+my $params; >+$params->{lang} = [ $news_lang, '' ]; >+$params->{branchcode} = [ $branchcode, undef ] if $branchcode; >+$params->{-or} = [ expirationdate => { '>=' => \'NOW()' }, >+ expirationdate => undef ]; >+my $koha_news = Koha::News->search( >+ $params, >+ { >+ order_by => 'number' >+ }); > >-$template->param( >- koha_news => $all_koha_news, >- koha_news_count => $koha_news_count, >-); >+$template->param( koha_news => $koha_news ); > > output_html_with_http_headers $input, $cookie, $template->output; >diff --git a/t/db_dependent/NewsChannels.t b/t/db_dependent/NewsChannels.t >deleted file mode 100755 >index 20e8ae12e9..0000000000 >--- a/t/db_dependent/NewsChannels.t >+++ /dev/null >@@ -1,67 +0,0 @@ >-#!/usr/bin/perl >- >-use Modern::Perl; >-use Koha::Database; >-use Koha::DateUtils; >-use Koha::Libraries; >-use Koha::News; >- >-use Test::More tests => 4; >- >-BEGIN { >- use_ok('C4::NewsChannels'); >-} >- >-my $schema = Koha::Database->new->schema; >-$schema->storage->txn_begin; >-my $dbh = C4::Context->dbh; >- >-# Add LIB1, if it doesn't exist. >-my $addbra = 'LIB1'; >-unless ( Koha::Libraries->find($addbra) ) { >- $dbh->do( q{ INSERT INTO branches (branchcode,branchname) VALUES (?,?) }, >- undef, ( $addbra, "$addbra branch" ) ); >-} >- >-# Add CAT1, if it doesn't exist. >-my $addcat = 'CAT1'; >-{ >- my $sth = $dbh->prepare( q{ SELECT categorycode FROM categories WHERE categorycode = ? } ); >- $sth->execute ( $addcat ); >- if ( not defined $sth->fetchrow () ) { >- $dbh->do( q{ INSERT INTO categories (categorycode,description) VALUES (?,?) }, >- undef, ( $addcat, "$addcat description") ); >- } >-} >- >-# Add a test user if not already present. >-my $addbrwr = 'BRWR1'; >-my $brwrnmbr; >-{ >- my $query = >- q{ SELECT borrowernumber from borrowers WHERE surname = ? AND branchcode = ? AND categorycode = ? }; >- my $sth = $dbh->prepare( $query ); >- $sth->execute( ($addbrwr, $addbra, $addcat) ); >- $brwrnmbr = $sth->fetchrow; >- >- # Not found, let us insert it. >- if ( not defined $brwrnmbr ) { >- $dbh->do( q{ INSERT INTO borrowers (surname, address, city, branchcode, categorycode) VALUES (?, ?, ?, ?, ?) }, >- undef, ($addbrwr, '(test) address', '(test) city', $addbra, $addcat) ); >- >- # Retrieve the njew borrower number. >- $query = >- q{ SELECT borrowernumber from borrowers WHERE surname = ? AND branchcode = ? AND categorycode = ? }; >- my $sth = $dbh->prepare( $query ); >- $sth->execute( ($addbrwr, $addbra, $addcat) ); >- $brwrnmbr = $sth->fetchrow; >- } >-} >- >-# Must have valid borrower number, or tests are meaningless. >-ok ( defined $brwrnmbr ); >- >-# Test GetNewsToDisplay >-my ( $opac_news_count, $arrayref_opac_news ) = GetNewsToDisplay( q{}, 'LIB1' ); >-ok( $opac_news_count >= 2, 'Successfully tested GetNewsToDisplay for LIB1!' ); >- >diff --git a/tools/koha-news.pl b/tools/koha-news.pl >index e63030995f..46c6574cdb 100755 >--- a/tools/koha-news.pl >+++ b/tools/koha-news.pl >@@ -28,7 +28,6 @@ use C4::Auth; > use C4::Koha; > use C4::Context; > use C4::Output; >-use C4::NewsChannels; > use C4::Languages qw(getTranslatedLanguages); > use Date::Calc qw/Date_to_Days Today/; > use Koha::DateUtils; >-- >2.20.1
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 22544
:
86772
|
86773
|
86774
|
86775
|
86776
|
86777
|
86780
|
86781
|
90103
|
90104
|
90105
|
90106
|
90107
|
90108
|
90109
|
90110
|
92005
|
92006
|
92007
|
92008
|
92009
|
92010
|
92011
|
92012
|
95613
|
95614
|
95615
|
95627
|
95628
|
95629
|
95630
|
95631
|
95632
|
95633
|
95634
|
99849
|
99850
|
99851
|
99852
|
99853
|
99854
|
99855
|
99856
|
99857
|
104176
|
104177
|
104178
|
104179
|
104180
|
104181
|
104182
|
104183
|
104184
|
111012
|
111013
|
111014
|
111015
|
111016
|
111017
|
111018
|
111019
|
111020
|
111021
|
111022
|
111023
|
115135
|
115136
|
115137
|
115138
|
115139
|
115140
|
115141
|
115142
|
115143
|
115144
|
115145
|
115146
|
115218
|
115296
|
115297
|
115298
|
115299
|
116933
|
116934
|
116935
|
117479
|
117480
|
117481
|
117482
|
117483
|
117484
|
117485
|
117486
|
117487
|
117488
|
117489
|
117490
|
117491
|
117492
|
117493
|
117494
|
117495
|
117496
|
117497
|
118054
|
118055
|
118056
|
118057
|
118058
|
118059
|
118060
|
118061
|
118062
|
118063
|
118064
|
118065
|
118066
|
118067
|
118068
|
118069
|
118070
|
118071
|
118072
|
118073
|
118087
|
118088
|
118089
|
118090
|
118091
|
118092
|
118093
|
118094
|
118095
|
118096
|
118097
|
118098
|
118099
|
118100
|
118101
|
118102
|
118103
|
118104
|
118105
|
118106
|
120377
|
120378
|
120379
|
120380
|
120381
|
120382
|
120383
|
120384
|
120385
|
120386
|
120387
|
120388
|
120389
|
120390
|
120391
|
120392
|
120393
|
120394
|
120395
|
120396
|
122396
|
122397
|
122398
|
122399
|
122400
| 122401 |
122402
|
122403
|
122404
|
122405
|
122406
|
122407
|
122408
|
122409
|
122410
|
122411
|
122412
|
122413
|
122414
|
122415