Bugzilla – Attachment 36289 Details for
Bug 9303
relative's checkouts in the opac
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 9303 [3] - relative's checkouts in the opac
Bug-9303-3---relatives-checkouts-in-the-opac.patch (text/plain), 23.38 KB, created by
Kyle M Hall (khall)
on 2015-03-02 11:52:22 UTC
(
hide
)
Description:
Bug 9303 [3] - relative's checkouts in the opac
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2015-03-02 11:52:22 UTC
Size:
23.38 KB
patch
obsolete
>From c0243637ec93490d3876eb57251a889d32e09e77 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Mon, 2 Mar 2015 03:09:38 -0800 >Subject: [PATCH] Bug 9303 [3] - relative's checkouts in the opac > >--- > C4/Members.pm | 1 - > C4/Reserves.pm | 1 + > Koha/Template/Plugin/Koha.pm | 1 + > .../prog/en/modules/admin/preferences/opac.pref | 7 +++ > .../prog/en/modules/admin/preferences/patrons.pref | 6 +++ > .../prog/en/modules/members/memberentrygen.tt | 16 ++++++ > .../prog/en/modules/members/moremember.tt | 10 ++++ > .../bootstrap/en/modules/opac-memberentry.tt | 43 ++++++++++++++++ > .../opac-tmpl/bootstrap/en/modules/opac-privacy.tt | 24 ++++++++- > .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 53 ++++++++++++++++++-- > members/moremember.pl | 1 + > opac/opac-privacy.pl | 38 ++++++++------ > opac/opac-user.pl | 32 ++++++++---- > 13 files changed, 204 insertions(+), 29 deletions(-) > >diff --git a/C4/Members.pm b/C4/Members.pm >index 4fb845d..da88543 100644 >--- a/C4/Members.pm >+++ b/C4/Members.pm >@@ -115,7 +115,6 @@ BEGIN { > push @EXPORT, qw( > &ModMember > &changepassword >- &ModPrivacy > ); > > #Delete data >diff --git a/C4/Reserves.pm b/C4/Reserves.pm >index f405262..4bf2429 100644 >--- a/C4/Reserves.pm >+++ b/C4/Reserves.pm >@@ -266,6 +266,7 @@ sub GetReserve { > my ($reserve_id) = @_; > > my $dbh = C4::Context->dbh; >+ > my $query = "SELECT * FROM reserves WHERE reserve_id = ?"; > my $sth = $dbh->prepare( $query ); > $sth->execute( $reserve_id ); >diff --git a/Koha/Template/Plugin/Koha.pm b/Koha/Template/Plugin/Koha.pm >index f5898b5..76cca71 100644 >--- a/Koha/Template/Plugin/Koha.pm >+++ b/Koha/Template/Plugin/Koha.pm >@@ -23,6 +23,7 @@ use Encode qw( encode ); > use base qw( Template::Plugin ); > > use C4::Context; >+use Koha::Database; > > =pod > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >index f0c0951..0a4d84f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref >@@ -588,6 +588,13 @@ OPAC: > no: "Don't allow" > - patrons to choose their own privacy settings for their reading history. This requires opacreadinghistory and AnonymousPatron > - >+ - pref: AllowPatronToSetCheckoutsVisibilityForGuarantor >+ default: 0 >+ choices: >+ yes: Allow >+ no: "Don't allow" >+ - patrons to choose their own privacy settings for showing the patron's checkouts to the patron's guarantor". >+ - > - Use borrowernumber > - pref: AnonymousPatron > class: integer >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref >index aa567c3..0d80a3f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref >@@ -135,6 +135,12 @@ Patrons: > no: "Don't" > - enable the ability to upload and attach arbitrary files to a borrower record. > - >+ - pref: AllowStaffToSetCheckoutsVisibilityForGuarantor >+ choices: >+ yes: Allow >+ no: "Don't allow" >+ - staff to set the ability for a patron's checkouts to be viewed by linked patrons in the OPAC. >+ - > - Card numbers for patrons must be > - pref: CardnumberLength > - "characters long. The length can be a single number to specify an exact length, a range separated by a comma (i.e., 'Min,Max'), or a maximum with no minimum (i.e., ',Max')." >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >index b10ac47..191f99f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt >@@ -1,5 +1,6 @@ > [% USE Koha %] > [% USE KohaDates %] >+[% USE Koha %] > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Patrons › [% IF ( opadd ) %]Add[% ELSIF ( opduplicate ) %]Duplicate[% ELSE %] Modify[% END %] patron [% IF (firstname) %][% firstname %] [% END %][% IF (surname) %][% surname %] [% END %]([%IF ( categoryname ) %][% categoryname %][% ELSE %][% IF ( I ) %]Organization[% END %][% IF ( A ) %]Adult[% END %][% IF ( C ) %]Child[% END %][% IF ( P ) %]Professional[% END %][% IF ( S ) %]Staff[% END %][% END %])</title> > [% INCLUDE 'doc-head-close.inc' %] >@@ -428,6 +429,21 @@ > [% END %] > <input id="guarantordelete" type="button" value="Delete" /> > </li> >+ [% IF guarantorid && Koha.Preference('AllowStaffToSetCheckoutsVisibilityForGuarantor') %] >+ <li> >+ <label for="privacy_guarantor_checkouts">Show checkouts to guarantor</label> >+ <select name="privacy_guarantor_checkouts" id="privacy_guarantor_checkouts"> >+ [% IF privacy_guarantor_checkouts %] >+ <option value="0">No</option> >+ <option value="1" selected>Yes</option> >+ [% ELSE %] >+ <option value="0" selected>No</option> >+ <option value="1">Yes</option> >+ [% END %] >+ </select> >+ <div class="hint">Allow guarantor of this patron to view this patron's checkouts from the OPAC</div> >+ </li> >+ [% END %] > </ol> > </fieldset> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >index 3b89653..a964fa2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt >@@ -347,6 +347,16 @@ function validate1(date) { > [% IF ( privacy1 ) %]Default[% END %] > [% IF ( privacy2 ) %]Never[% END %] > </li>[% END %] >+ >+ <li> >+ <span class="label">Show checkouts to guarantor</span> >+ [% IF privacy_guarantor_checkouts %] >+ Yes >+ [% ELSE %] >+ No >+ [% END %] >+ </li> >+ > [% IF ( sort1 ) %]<li><span class="label">Sort field 1:</span>[% lib1 %]</li>[% END %] > [% IF ( sort2 ) %]<li><span class="label">Sort field 2:</span>[% lib2 %]</li>[% END %] > <li><span class="label">Username: </span>[% userid %]</li> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt >index 5e2e747..0f0b7ea 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-memberentry.tt >@@ -54,6 +54,33 @@ > <div class="alert">You typed in the wrong characters in the box before submitting. Please try again.</div> > [% END %] > >+ [% IF borrower.guarantorid && !Koha.Preference('OPACPrivacy') && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %] >+ <fieldset class="rows" id="memberentry_privacy"> >+ <legend id="privacy_legend">Privacy</legend> >+ <ol> >+ <li> >+ <label>Allow your guarantor to view your current checkouts?</label> >+ <select id="privacy_guarantor_checkouts"> >+ <option value="0">No</option> >+ [% IF borrower.privacy_guarantor_checkouts %] >+ <option value="1" selected="selected">Yes</option> >+ [% ELSE %] >+ <option value="1">Yes</option> >+ [% END %] >+ </select> >+ <span class="hint"> >+ <a id="update_privacy_guarantor_checkouts" href="#" class="btn">Update</a> >+ <span id="update_privacy_guarantor_checkouts_message" class="alert" style="display:none"></span> >+ </span> >+ <span class="hint"> >+ [% SET g = Koha.Find('Borrower',borrower.guarantorid) %] >+ Your guarantor is <i>[% g.firstname %] [% g.surname %]</i> >+ </span> >+ </li> >+ </ol> >+ </fieldset> >+ [% END %] >+ > <form method="post" action="/cgi-bin/koha/opac-memberentry.pl" id="memberentry-form"> > > [% UNLESS hidden.defined('branchcode') %] >@@ -796,6 +823,22 @@ > [% ELSE %] > $( "#borrower_dateofbirth" ).datepicker({ yearRange: "c-120:c" }); > [% END %] >+ >+ [% IF borrower.guarantorid && !Koha.Preference('OPACPrivacy') && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %] >+ $('#update_privacy_guarantor_checkouts').click( function() { >+ $.post( "/cgi-bin/koha/svc/patron/show_checkouts_to_relatives", { privacy_guarantor_checkouts: $('#privacy_guarantor_checkouts').val() }, null, 'json') >+ .done(function( data ) { >+ var message; >+ if ( data.success ) { >+ message = _("Your setting has been updated!"); >+ } else { >+ message = _("Unable to update your setting!"); >+ } >+ >+ $('#update_privacy_guarantor_checkouts_message').fadeIn("slow").text( message ).delay( 5000 ).fadeOut("slow"); >+ }); >+ }); >+ [% END %] > }); > //]]> > </script> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt >index 7686000..6fc0c31 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-privacy.tt >@@ -48,7 +48,7 @@ > <input type="hidden" name="op" value="update_privacy" /> > <fieldset> > <label for="privacy">Please choose your privacy rule:</label> >- <div class="input-append"> >+ <div> > <select name="privacy" id="privacy"> > [% IF ( privacy0 ) %] > <option value="0" selected="selected" class="privacy0">Forever</option> >@@ -66,8 +66,28 @@ > <option value="2" class="privacy2">Never</option> > [% END %] > </select> >- <button type="Submit" class="btn">Submit</button> > </div> >+ >+ [% SET b = Koha.Find('Borrower', borrower.borrowernumber) %] >+ [% IF b.guarantorid && Koha.Preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') %] >+ <div> >+ <label for="privacy_guarantor_checkouts">Allow your guarantor to view your current checkouts?</label> >+ <select name="privacy_guarantor_checkouts"> >+ [% IF borrower.privacy_guarantor_checkouts %] >+ <option value="0">No</option> >+ <option value="1" selected>Yes</option> >+ [% ELSE %] >+ <option value="0" selected>No</option> >+ <option value="1">Yes</option> >+ [% END %] >+ </select> >+ <span class="hint"> >+ Your guarantor is <i>[% b.guarantor.firstname %] [% b.guarantor.surname %]</i> >+ </span> >+ </div> >+ [% END %] >+ >+ <button type="Submit" class="btn">Save</button> > </fieldset> > </form> > <h2>Immediate deletion</h2> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >index f4cbddb..ee93de4 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >@@ -104,6 +104,7 @@ > <div id="opac-user-views" class="toptabs"> > <ul> > <li><a href="#opac-user-checkouts">Checked out ([% issues_count %])</a></li> >+ [% IF relatives %]<li><a href="#opac-user-relative-issues">Relatives' checkouts</a></li>[% END %] > [% IF ( overdues_count ) %]<li><a href="#opac-user-overdues">Overdue ([% overdues_count %])</a></li>[% END %] > [% IF ( OPACFinesTab ) %] > [% IF ( BORROWER_INF.amountoverfive ) %]<li><a href="#opac-user-fines">Fines ([% BORROWER_INF.amountoutstanding %])</a></li>[% END %] >@@ -132,7 +133,7 @@ > [% IF ( show_barcode ) %] > <th>Barcode</th> > [% END %] >- <th>Call No.</th> >+ <th>Call number</th> > [% IF ( OpacRenewalAllowed && !( borrower.is_expired && borrower.BlockExpiredPatronOpacActions ) ) %] > <th class="nosort">Renew</th> > [% END %] >@@ -365,6 +366,51 @@ > </div> <!-- /#opac-user-waiting --> > [% END # waiting_count && atdestination %] > >+ [% IF relatives %] >+ <div id="opac-user-relative-issues"> >+ <table id="opac-user-relative-issues-table" class="table table-bordered table-striped"> >+ <thead> >+ <tr> >+ <th class="anti-the">Title</th> >+ <th>Due</th> >+ <th>Barcode</th> >+ <th>Call number</th> >+ <th class="psort">Relative</th> >+ </tr> >+ </thead> >+ >+ <tbody> >+ [% FOREACH r IN relatives %] >+ [% FOREACH i IN r.issues %] >+ <tr> >+ <td> >+ <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% i.item.biblio.biblionumber %]"> >+ [% i.item.biblio.title %] >+ </a> >+ </td> >+ >+ <td> >+ [% i.date_due | $KohaDates %] >+ </td> >+ >+ <td> >+ [% i.item.barcode %] >+ </td> >+ >+ <td> >+ [% i.item.itemcallnumber %] >+ </td> >+ >+ <td> >+ [% r.firstname %] [% r.surname %] >+ </td> >+ </tr> >+ [% END %] >+ [% END %] >+ </tbody> >+ </table> >+ </div> >+ [% END %] > > [% IF ( overdues_count ) %] > <div id="opac-user-overdues"> >@@ -377,7 +423,7 @@ > <th class="anti-the">Title</th> > [% UNLESS ( item_level_itypes ) %]<th>Item type</th> [% END %] > [% IF ( show_barcode ) %]<th>Barcode</th>[% END %] >- <th>Call no.</th> >+ <th>Call number</th> > <th class="title-string psort">Due</th> > [% IF ( OpacRenewalAllowed ) %] > <th class="nosort">Renew</th> >@@ -686,7 +732,8 @@ > $(".js-hide").hide(); > $(".modal-nojs").addClass("modal").addClass("hide").removeClass("modal-nojs"); > $(".suspend-until").prop("readonly",1); >- var dTables = $("#checkoutst,#holdst,#overduest"); >+ >+ var dTables = $("#checkoutst,#holdst,#overduest,#opac-user-relative-issues-table"); > dTables.each(function(){ > var thIndex = $(this).find("th.psort").index(); > $(this).dataTable($.extend(true, {}, dataTablesDefaults, { >diff --git a/members/moremember.pl b/members/moremember.pl >index 92fe2d9..6ae8d6c 100755 >--- a/members/moremember.pl >+++ b/members/moremember.pl >@@ -376,6 +376,7 @@ $template->param( > is_child => ($category_type eq 'C'), > samebranch => $samebranch, > quickslip => $quickslip, >+ privacy_guarantor_checkouts => $data->{'privacy_guarantor_checkouts'}, > activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''), > AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'), > SuspendHoldsIntranet => C4::Context->preference('SuspendHoldsIntranet'), >diff --git a/opac/opac-privacy.pl b/opac/opac-privacy.pl >index 4d611a3..9e3abf0 100755 >--- a/opac/opac-privacy.pl >+++ b/opac/opac-privacy.pl >@@ -47,18 +47,25 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( > } > ); > >-my $op = $query->param("op"); >-my $privacy = $query->param("privacy"); >+my $op = $query->param("op"); >+my $privacy = $query->param("privacy"); >+my $privacy_guarantor_checkouts = $query->param("privacy_guarantor_checkouts"); > >-if ($op eq "update_privacy") >-{ >- ModPrivacy($borrowernumber,$privacy); >- $template->param('privacy_updated' => 1); >+if ( $op eq "update_privacy" ) { >+ ModMember( >+ borrowernumber => $borrowernumber, >+ privacy => $privacy, >+ privacy_guarantor_checkouts => $privacy_guarantor_checkouts, >+ ); >+ $template->param( 'privacy_updated' => 1 ); > } >-if ($op eq "delete_record") { >+elsif ( $op eq "delete_record" ) { >+ > # delete all reading records for items returned > # uses a hardcoded date ridiculously far in the future >- my ($rows,$err_history_not_deleted) = AnonymiseIssueHistory('2999-12-12',$borrowernumber); >+ my ( $rows, $err_history_not_deleted ) = >+ AnonymiseIssueHistory( '2999-12-12', $borrowernumber ); >+ > # confirm the user the deletion has been done > if ( !$err_history_not_deleted ) { > $template->param( 'deleted' => 1 ); >@@ -67,14 +74,17 @@ if ($op eq "delete_record") { > $template->param( 'err_history_not_deleted' => 1 ); > } > } >+ > # get borrower privacy .... >-my ( $borr ) = GetMemberDetails( $borrowernumber ); >+my $borrower = GetMemberDetails( $borrowernumber ); > >-$template->param( 'Ask_data' => '1', >- 'privacy'.$borr->{'privacy'} => 1, >- 'firstname' => $borr->{'firstname'}, >- 'surname' => $borr->{'surname'}, >- 'privacyview' => 1, >+$template->param( >+ 'Ask_data' => 1, >+ 'privacy' . $borrower->{'privacy'} => 1, >+ 'privacyview' => 1, >+ 'borrower' => $borrower, >+ 'surname' => $borrower->{surname}, >+ 'firstname' => $borrower->{firstname}, > ); > > output_html_with_http_headers $query, $cookie, $template->output; >diff --git a/opac/opac-user.pl b/opac/opac-user.pl >index 995db7b..6f1e4af 100755 >--- a/opac/opac-user.pl >+++ b/opac/opac-user.pl >@@ -36,6 +36,7 @@ use C4::Letters; > use C4::Branch; # GetBranches > use Koha::DateUtils; > use Koha::Borrower::Debarments qw(IsDebarred); >+use Koha::Database; > > use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE'; > >@@ -382,18 +383,31 @@ if ( $borr->{'opacnote'} ) { > ); > } > >+if ( C4::Context->preference('AllowPatronToSetCheckoutsVisibilityForGuarantor') >+ || C4::Context->preference('AllowStaffToSetCheckoutsVisibilityForGuarantor') ) >+{ >+ my @relatives = >+ Koha::Database->new()->schema()->resultset("Borrower")->search( >+ { >+ privacy_guarantor_checkouts => 1, >+ 'me.guarantorid' => $borrowernumber >+ }, >+ { prefetch => [ { 'issues' => { 'item' => 'biblio' } } ] } >+ ); >+ $template->param( relatives => \@relatives ); >+} >+ > $template->param( >- bor_messages_loop => GetMessages( $borrowernumber, 'B', 'NONE' ), >+ borrower => $borr, >+ bor_messages_loop => GetMessages( $borrowernumber, 'B', 'NONE' ), > waiting_count => $wcount, >- patronupdate => $patronupdate, >+ patronupdate => $patronupdate, > OpacRenewalAllowed => C4::Context->preference("OpacRenewalAllowed"), >- userview => 1, >-); >- >-$template->param( >- SuspendHoldsOpac => C4::Context->preference('SuspendHoldsOpac'), >- AutoResumeSuspendedHolds => C4::Context->preference('AutoResumeSuspendedHolds'), >- OpacHoldNotes => C4::Context->preference('OpacHoldNotes'), >+ userview => 1, >+ SuspendHoldsOpac => C4::Context->preference('SuspendHoldsOpac'), >+ OpacHoldNotes => C4::Context->preference('OpacHoldNotes'), >+ AutoResumeSuspendedHolds => >+ C4::Context->preference('AutoResumeSuspendedHolds'), > ); > > output_html_with_http_headers $query, $cookie, $template->output; >-- >1.7.10.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 9303
:
22757
|
22770
|
22771
|
22772
|
22783
|
22789
|
22790
|
22809
|
22966
|
22967
|
22968
|
22974
|
22975
|
23086
|
23087
|
23088
|
23089
|
23090
|
23525
|
23526
|
23527
|
24009
|
24010
|
24011
|
24773
|
24774
|
24775
|
24776
|
25008
|
25584
|
25585
|
25586
|
27537
|
27538
|
27539
|
27540
|
27541
|
27542
|
27543
|
27698
|
27699
|
28153
|
28154
|
28155
|
28156
|
28157
|
28158
|
28159
|
28160
|
28161
|
28912
|
29171
|
29172
|
29215
|
29286
|
29287
|
29288
|
29289
|
29290
|
29299
|
29302
|
29303
|
29304
|
29932
|
29933
|
29934
|
29935
|
29936
|
29937
|
30287
|
30288
|
30289
|
30297
|
30298
|
30299
|
30300
|
32053
|
32054
|
32055
|
33049
|
34629
|
34630
|
34631
|
34632
|
34633
|
35519
|
35520
|
35521
|
35522
|
35523
|
35524
|
35525
|
35526
|
35527
|
35528
|
35529
|
35530
|
35531
|
35532
|
35678
|
35679
|
35680
|
35681
|
35682
|
35683
|
35684
|
35686
|
35687
|
35688
|
35689
|
35690
|
35691
|
35832
|
36287
|
36288
|
36289
|
37110
|
37111
|
37112
|
38264
|
38265
|
38266
|
38267
|
38328
|
38329
|
38330
|
38331
|
38446
|
38447
|
38448
|
38449
|
38450
|
38820
|
38821
|
38822
|
38823
|
38824
|
39042
|
39043
|
39044
|
39045
|
39046
|
39047
|
39048
|
39811
|
39817
|
39818
|
39819
|
39820
|
39821
|
39822
|
39823
|
44430
|
44431
|
44432
|
44433
|
44434
|
44435
|
44436
|
44511
|
44512
|
44513
|
44514
|
44515
|
44516
|
44517
|
46136
|
46137
|
46138
|
46139
|
46140
|
46141
|
46142