Bugzilla – Attachment 7885 Details for
Bug 7169
Change booksellers search results display
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
[SIGNED-OFF] Bug 7169: Change booksellers search results display
SIGNED-OFF-Bug-7169-Change-booksellers-search-resu.patch (text/plain), 15.88 KB, created by
Katrin Fischer
on 2012-02-26 10:01:46 UTC
(
hide
)
Description:
[SIGNED-OFF] Bug 7169: Change booksellers search results display
Filename:
MIME Type:
Creator:
Katrin Fischer
Created:
2012-02-26 10:01:46 UTC
Size:
15.88 KB
patch
obsolete
>From b29aa9350609e97f13c1270f80242994b78557d0 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Fri, 13 Jan 2012 12:11:49 +0100 >Subject: [PATCH] [SIGNED-OFF] Bug 7169: Change booksellers search results > display > >- Replace vendor table by a div (avoid table in a table) >- Add two columns in basket tables: biblio count and expected (not > received) items) >- Replace tablesorter by datatables >- Add a list of all returned bookseller names in top of the page (easier > to find a bookseller in a large list of results) > >Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> >--- > C4/Acquisition.pm | 34 ++++ > acqui/booksellers.pl | 36 ++--- > .../intranet-tmpl/prog/en/css/staff-global.css | 20 +++ > .../prog/en/modules/acqui/booksellers.tt | 177 ++++++++++---------- > 4 files changed, 161 insertions(+), 106 deletions(-) > >diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm >index 0a96a02..75e7bab 100644 >--- a/C4/Acquisition.pm >+++ b/C4/Acquisition.pm >@@ -44,6 +44,7 @@ BEGIN { > &GetBasket &NewBasket &CloseBasket &DelBasket &ModBasket > &GetBasketAsCSV > &GetBasketsByBookseller &GetBasketsByBasketgroup >+ &GetBasketsInfosByBookseller > > &ModBasketHeader > >@@ -464,6 +465,39 @@ sub GetBasketsByBookseller { > return $results > } > >+=head3 GetBasketsInfosByBookseller >+ >+ my $baskets = GetBasketsInfosByBookseller($supplierid); >+ >+Returns in a arrayref of hashref all about booksellers baskets, plus: >+ total_biblios: Number of distinct biblios in basket >+ total_items: Number of items in basket >+ expected_items: Number of non-received items in basket >+ >+=cut >+ >+sub GetBasketsInfosByBookseller { >+ my ($supplierid) = @_; >+ >+ return unless $supplierid; >+ >+ my $dbh = C4::Context->dbh; >+ my $query = qq{ >+ SELECT aqbasket.*, >+ SUM(aqorders.quantity) AS total_items, >+ COUNT(DISTINCT aqorders.biblionumber) AS total_biblios, >+ SUM(IF(aqorders.datereceived IS NULL, aqorders.quantity, 0)) AS expected_items >+ FROM aqbasket >+ LEFT JOIN aqorders ON aqorders.basketno = aqbasket.basketno >+ WHERE booksellerid = ? >+ GROUP BY aqbasket.basketno >+ }; >+ my $sth = $dbh->prepare($query); >+ $sth->execute($supplierid); >+ return $sth->fetchall_arrayref({}); >+} >+ >+ > #------------------------------------------------------------# > > =head3 GetBasketsByBasketgroup >diff --git a/acqui/booksellers.pl b/acqui/booksellers.pl >index d7c64db..f41eb39 100755 >--- a/acqui/booksellers.pl >+++ b/acqui/booksellers.pl >@@ -57,6 +57,7 @@ use C4::Output; > use CGI; > > use C4::Dates qw/format_date/; >+use C4::Acquisition qw/ GetBasketsInfosByBookseller /; > use C4::Bookseller qw/ GetBookSellerFromId GetBookSeller /; > use C4::Members qw/GetMember/; > use C4::Context; >@@ -105,18 +106,18 @@ my $userbranch = $userenv->{branch}; > my $loop_suppliers = []; > > for my $vendor (@suppliers) { >- my $baskets = get_vendors_baskets( $vendor->{id} ); >+ my $baskets = GetBasketsInfosByBookseller( $vendor->{id} ); > > my $loop_basket = []; >- >+ > for my $basket ( @{$baskets} ) { > my $authorisedby = $basket->{authorisedby}; > my $basketbranch = ''; # set a blank branch to start with >- if ( GetMember( borrowernumber => $authorisedby ) ) { >- # authorisedby may not be a valid borrowernumber; it's not foreign-key constrained! >- $basketbranch = GetMember( borrowernumber => $authorisedby )->{branchcode}; >+ my $member = GetMember( borrowernumber => $authorisedby ); >+ if ( $member ) { >+ $basketbranch = $member->{branchcode}; > } >- >+ > if ($userenv->{'flags'} & 1 || #user is superlibrarian > (haspermission( $uid, { acquisition => q{*} } ) && #user has acq permissions and > ($viewbaskets eq 'all' || #user is allowed to see all baskets >@@ -130,6 +131,13 @@ for my $vendor (@suppliers) { > $basket->{$date_field} = format_date( $basket->{$date_field} ); > } > } >+ foreach (qw(total_items total_biblios expected_items)) { >+ $basket->{$_} ||= 0; >+ } >+ if($member) { >+ $basket->{authorisedby_firstname} = $member->{firstname}; >+ $basket->{authorisedby_surname} = $member->{surname}; >+ } > push @{$loop_basket}, $basket; > } > } >@@ -146,21 +154,7 @@ $template->param( > loop_suppliers => $loop_suppliers, > supplier => ( $booksellerid || $supplier ), > count => $supplier_count, >+ dateformat => C4::Context->preference('dateformat'), > ); > > output_html_with_http_headers $query, $cookie, $template->output; >- >-sub get_vendors_baskets { >- my $supplier_id = shift; >- my $dbh = C4::Context->dbh; >- my $sql = <<'ENDSQL'; >-select aqbasket.*, count(*) as total, borrowers.firstname, borrowers.surname >-from aqbasket left join aqorders on aqorders.basketno = aqbasket.basketno >-left join borrowers on aqbasket.authorisedby = borrowers.borrowernumber >-where booksellerid = ? >-AND ( aqorders.quantity > aqorders.quantityreceived OR quantityreceived IS NULL) >-AND datecancellationprinted IS NULL >-group by basketno >-ENDSQL >- return $dbh->selectall_arrayref( $sql, { Slice => {} }, $supplier_id ); >-} >diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css >index fec66d6..6a0f607 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css >+++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css >@@ -2145,3 +2145,23 @@ a.localimage img { > div.pager p { > margin: 0; > } >+ >+div#acqui_order_supplierlist > div.supplier { >+ border: 1px solid #EEEEEE; >+ margin: 0.5em; >+ padding: 1em; >+} >+ >+div#acqui_order_supplierlist > div.supplier > span.suppliername { >+ display: inline; >+ font-size: 1.7em; >+ margin-bottom: 0.5em; >+} >+ >+div#acqui_order_supplierlist > div.supplier > span.action { >+ margin-left: 5em; >+} >+ >+div#acqui_order_supplierlist > div.supplier > div.baskets { >+ margin-top: 0.5em; >+} >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/booksellers.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/booksellers.tt >index 1616261..26c15fc 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/booksellers.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/booksellers.tt >@@ -6,19 +6,26 @@ > vertical-align: top; > } > </style> >-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> >+<link rel="stylesheet" href="[% themelang %]/css/datatables.css" /> >+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script> >+[% INCLUDE 'datatables-strings.inc' %] >+<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script> > <script type="text/javascript"> > //<![CDATA[ >- $(document).ready(function() { >- $("#vendorst").tablesorter({ >- headers: { >- 3: { >- sorter: false >- } >- } >- }); >- }); >- //]]> >+$(document).ready(function() { >+ [% IF (dateformat == 'metric') %] >+ dt_add_type_uk_date(); >+ [% END %] >+ $("table.baskets").dataTable($.extend(true, {}, dataTablesDefaults, { >+ 'bPaginate': false, >+ 'bFilter': false, >+ 'bInfo': false, >+ 'aoColumnDefs': [ >+ { 'aTargets': [-1], 'bSortable': false } >+ ] >+ })); >+}); >+//]]> > </script> > > </head> >@@ -40,88 +47,88 @@ > [% ELSE %] > <h1>You searched on <b>vendor [% supplier %],</b> [% count %] results found</h1> > [% END %] >-[% IF ( loop_suppliers ) %] >+[% IF ( loop_suppliers.size ) %] >+ [% UNLESS (count == 1) %] >+ <ul class="suppliers_anchors"> >+ [% FOREACH supplier IN loop_suppliers %] >+ <li><a href="#[% supplier.booksellerid %]">[% supplier.name %]</a></li> >+ [% END %] >+ </ul> >+ [% END %] > <div id="acqui_order_supplierlist"> >- <table id="vendorst"> >- <thead> >- <tr> >- <th>Order</th> >- <th>Order receive</th> >- <th>Vendor</th> >- <th> </th> >- </tr> >- </thead> >- <tbody> >- [% FOREACH loop_supplier IN loop_suppliers %] >- [% UNLESS ( loop.odd ) %] >- <tr class="highlight"> >- [% ELSE %] >- <tr> >- [% END %] >- <td>[% IF ( CAN_user_acquisition_order_manage ) %] >- [% IF ( loop_supplier.active ) %] >- <a href="basketheader.pl?booksellerid=[% loop_supplier.booksellerid %]&op=add_form">New basket</a> >+ [% FOREACH supplier IN loop_suppliers %] >+ <div class="supplier"> >+ <span class="suppliername"> >+ [% IF (supplier.name) %] >+ <a name="[% supplier.booksellerid %]" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% supplier.booksellerid %]">[% supplier.name %]</a> > [% ELSE %] >- Inactive >+ <a name="[% supplier.booksellerid %]" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% supplier.booksellerid %]">NO NAME</a> > [% END %] >+ </span> >+ <span class="action"> >+ [% IF ( CAN_user_acquisition_order_manage ) %] >+ [% IF ( supplier.active ) %] >+ <input type="button" value="New basket" onclick="window.location.href='/cgi-bin/koha/acqui/basketheader.pl?booksellerid=[% supplier.booksellerid %]&op=add_form'" /> >+ [% ELSE %] >+ (inactive) >+ [% END %] > [% END %] >- </td> >- <td> <a href="parcels.pl?booksellerid=[% loop_supplier.booksellerid %]">Receive shipment</a> >- </td> >- [% IF ( loop_supplier.name ) %] >- <td><a href="supplier.pl?booksellerid=[% loop_supplier.booksellerid %]">[% loop_supplier.name %]</a></td> >- [% ELSE %] >- <td><a href="supplier.pl?booksellerid=[% loop_supplier.booksellerid %]">NO NAME</a></td> >- [% END %] >- <td> <table> >- [% IF ( loop_supplier.loop_basket ) %] >- <tr> >- <th>Basket (#)</th> >- <th>Items</th> >- <th>Created by</th> >- <th>Date</th> >- <th> </th> >- </tr> >- [% FOREACH loop_baske IN loop_supplier.loop_basket %] >- [% IF ( loop_baske.uncertainprices ) %] >- <tr class="problem"> >- [% ELSE %] >- [% UNLESS ( loop.odd ) %] >- <tr class="highlight"> >- [% ELSE %] >+ <input type="button" value="Receive shipment" onclick="window.location.href='/cgi-bin/koha/acqui/parcels.pl?booksellerid=[% supplier.booksellerid %]'" /> >+ </span> >+ <div class="baskets"> >+ [% IF ( supplier.loop_basket.size ) %] >+ <table class="baskets"> >+ <thead> > <tr> >- [% END %] >- [% END %] >- <td>[% loop_baske.basketname %] (#[% loop_baske.basketno %])</td> >- <td>[% loop_baske.total %]</td> >- <td> [% loop_baske.firstname %] >- [% loop_baske.surname %] >- </td> >- <td>[% loop_baske.creationdate %]</td> >- <td> [% IF ( loop_baske.closedate ) %] >- closed on [% loop_baske.closedate %] >- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_baske.basketno %]">View</a> >- [% ELSE %] >- [% IF ( loop_baske.active ) %] >- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_baske.basketno %]">modify</a> >+ <th>Basket (#)</th> >+ <th>Biblios</th> >+ <th>Items</th> >+ <th>Expected items</th> >+ <th>Created by</th> >+ <th>Date</th> >+ <th> </th> >+ </tr> >+ </thead> >+ <tbody> >+ [% FOREACH basket IN supplier.loop_basket %] >+ [% IF ( basket.uncertainprices ) %] >+ <tr class="problem"> >+ [% ELSE %] >+ <tr> >+ [% END %] >+ <td>[% basket.basketname %] (#[% basket.basketno %])</td> >+ <td>[% basket.total_biblios %]</td> >+ <td>[% basket.total_items %]</td> >+ <td>[% basket.expected_items %]</td> >+ <td> >+ [% basket.authorisedby_firstname %] >+ [% basket.authorisedby_surname %] >+ </td> >+ <td>[% basket.creationdate %]</td> >+ <td> >+ [% IF ( basket.closedate ) %] >+ closed on [% basket.closedate %] >+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">View</a> > [% ELSE %] >- <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% loop_baske.basketno %]">View</a> >+ [% IF ( basket.active ) %] >+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">Modify</a> >+ [% ELSE %] >+ <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno %]">View</a> >+ [% END %] > [% END %] >- [% END %] >- </td> >- </tr> >- [% END %] >- [% ELSE %] >- <tr><td>No pending baskets</td></tr> >- [% END %] >+ </td> >+ </tr> >+ [% END %][%# FOREACH basket IN supplier.loop_basket %] >+ </tbody> > </table> >- </td> >- </tr> >- [% END %] >- </tbody> >- </table> >- </div> >- [% END %] >+ [% ELSE %] >+ <p>No pending baskets</p> >+ [% END %][%# IF ( supplier.loop_basket.size ) %] >+ </div> >+ </div> >+ [% END %][%# FOREACH supplier IN loop_suppliers %] >+ </div> >+[% END %][%# IF ( loop_suppliers.size ) %] > </div> > </div> > <div class="yui-b"> >-- >1.7.5.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 7169
:
6231
|
7134
|
7858
|
7885
|
7886
|
7956
|
8294
|
8295