From 14c8b7891f8d5440e197935b28512bd97e77981b Mon Sep 17 00:00:00 2001 From: erickson Date: Fri, 18 Nov 2005 18:52:35 +0000 Subject: [PATCH] more added content methods created and some added content added to the record detail page git-svn-id: svn://svn.open-ils.org/ILS/trunk@2076 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../Application/Search/AddedContent.pm | 134 ++++++++++++++---- Open-ILS/web/opac/common/js/config.js | 3 + Open-ILS/web/opac/locale/en-US/lang.dtd | 1 + Open-ILS/web/opac/skin/default/css/layout.css | 39 +++-- Open-ILS/web/opac/skin/default/js/rdetail.js | 65 ++++++++- .../opac/skin/default/xml/myopac_checked.xml | 2 +- .../opac/skin/default/xml/myopac_fines.xml | 2 +- .../opac/skin/default/xml/myopac_holds.xml | 2 +- .../opac/skin/default/xml/myopac_summary.xml | 34 ++--- .../web/opac/skin/default/xml/rdetail.xml | 3 + .../skin/default/xml/rdetail_copyinfo.xml | 14 +- .../web/opac/skin/default/xml/sidebar.xml | 3 - .../web/opac/theme/default/css/colors.css | 1 + 13 files changed, 225 insertions(+), 78 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Search/AddedContent.pm b/Open-ILS/src/perlmods/OpenILS/Application/Search/AddedContent.pm index d5a361edfa..5327c680ad 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Search/AddedContent.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Search/AddedContent.pm @@ -17,6 +17,7 @@ my $types = { toc => "TOC.asmx", review => "Review.asmx", annotation => "Annotation.asmx", + member => "Member.asmx", }; sub initialize { @@ -31,62 +32,145 @@ sub initialize { -__PACKAGE__->register_method( - method => "added_content", - api_name => "open-ils.search.added_content.retrieve", - notes => <<" NOTE"); - Returns a list values based on the added content type. - types include: toc, review, annotation - PARAMS( ISBN ), - NOTE +# Fetches the added content and returns the data as a string. +# If not data is retrieved (or timeout occurs), undef is returned +sub retrieve_added_content { + my( $type, $isbn, $summary ) = @_; -sub added_content { - my( $self, $client, $isbn, $type ) = @_; + my $func = "fnDetailByItemKey"; + if($summary) { $func = "fnContentByItemKey"; } my $url = "$host/$urlbase/" . $types->{$type} . - "/fnDetailByItemKey?UserId=$username&Password=$password&ItemKey=$isbn"; + "/$func?UserId=$username&Password=$password&ItemKey=$isbn"; + warn "Added Content URL: $url\n"; - my $data; + my $data = undef; try { alarm(15); $data = LWP::UserAgent->new->get($url)->content; alarm(0); } catch Error with { alarm(0); - $data = []; }; alarm(0); warn "received content data:\n$data\n"; + return $data; +} - return $data if(ref($data)); +__PACKAGE__->register_method( + method => "summary", + api_name => "open-ils.search.added_content.summary.retrieve", + notes => <<" NOTE"); + Returns an object like so: + { + Review : true/false, + Inventory : true/false, + Annotation : true/false, + Jacket : true/false + TOC : true/false + Product : true/false + } + This object indicates the existance of each type of added content for the given ISBN + PARAMS( ISBN ), + NOTE + +sub summary { + my( $self, $client, $isbn ) = @_; + my $data = retrieve_added_content( "member", $isbn, 1 ); + my $doc = XML::LibXML->new->parse_string($data); + my $summary = {}; + return $summary unless $doc; - return _parse_content($type, $data); + for my $node ( $doc->getDocumentElement->childNodes ) { + if( $node->localName ) { + $summary->{$node->localName} = $node->textContent; + } + } + return $summary; } -sub _parse_content { - my( $type, $data ) = @_; + + + +__PACKAGE__->register_method( + method => "reviews", + api_name => "open-ils.search.added_content.review.retrieve.random", + notes => <<" NOTE"); + Returns a singe random review article object + PARAMS( ISBN ), + NOTE + +__PACKAGE__->register_method( + method => "reviews", + api_name => "open-ils.search.added_content.review.retrieve.all", + notes => <<" NOTE"); + Returns an array review article objects + PARAMS( ISBN ), + NOTE + +sub reviews { + my( $self, $client, $isbn ) = @_; + + my $data = retrieve_added_content( "review", $isbn ); my $doc = XML::LibXML->new->parse_string($data); my $ret = []; - return $ret unless $doc; - if( $type eq "review" ) { + if(!$doc) { + if( $self->api_name =~ /random/ ) { return undef; } + return $ret; + } + + my $reviews = $doc->findnodes("//*[local-name()='Review']"); + + for my $rev ( $reviews->get_nodelist() ) { + my $revobj = {}; + for my $node ($rev->childNodes) { - warn '-'x50 . "\n"; - warn $doc->toString(1) . "\n"; - warn '-'x50 . "\n"; + if( $node->localName ) { + if( $node->localName eq "ReviewText" ) { + $revobj ->{'text'} = $node->textContent; + } + if( $node->localName eq "ReviewLiteral" ) { + $revobj->{'info'} = $node->textContent; + } - my $nodelist = $doc->findnodes("//*[local-name()='ReviewText']"); - for my $rev ( $nodelist->get_nodelist() ) { - push( @$ret, $rev->textContent ); + } } + + if( $self->api_name =~ /random/ ) { return $revobj; } + push( @$ret, $revobj ); } return $ret; } +__PACKAGE__->register_method( + method => "toc", + api_name => "open-ils.search.added_content.toc.retrieve", + notes => <<" NOTE"); + Returns the table of contents for the given ISBN + PARAMS( ISBN ), + NOTE + +sub toc { + my( $self, $client, $isbn ) = @_; + + my $data = retrieve_added_content( "toc", $isbn ); + my $doc = XML::LibXML->new->parse_string($data); + my $ret = {}; + + my $reviews = $doc->findnodes("//*[local-name()='Review']"); + + # XXX + $ret->{text} = $reviews->toString(); + + return $ret; +} + + 1; diff --git a/Open-ILS/web/opac/common/js/config.js b/Open-ILS/web/opac/common/js/config.js index feda65dc6c..a932290684 100644 --- a/Open-ILS/web/opac/common/js/config.js +++ b/Open-ILS/web/opac/common/js/config.js @@ -201,6 +201,9 @@ var UPDATE_PASSWORD = "open-ils.actor:open-ils.actor.user.password.update"; var UPDATE_EMAIL = "open-ils.actor:open-ils.actor.user.email.update"; var RENEW_CIRC = "open-ils.circ:open-ils.circ.renew"; var CHECK_SPELL = "open-ils.search:open-ils.search.spell_check"; +var FETCH_REVIEWS = "open-ils.search:open-ils.search.added_content.review.retrieve.all"; +var FETCH_TOC = "open-ils.search:open-ils.search.added_content.toc.retrieve"; +var FETCH_ACONT_SUMMARY = "open-ils.search:open-ils.search.added_content.summary.retrieve"; /* ---------------------------------------------------------------------------- */ diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index 2659dc1067..1ba204080b 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -42,6 +42,7 @@ + diff --git a/Open-ILS/web/opac/skin/default/css/layout.css b/Open-ILS/web/opac/skin/default/css/layout.css index 1afab75cd5..6287ad9c6f 100644 --- a/Open-ILS/web/opac/skin/default/css/layout.css +++ b/Open-ILS/web/opac/skin/default/css/layout.css @@ -10,8 +10,9 @@ table { border-collapse: collapse; } /* generic CSS for a table with data */ .data_grid { font-weight: 500; } -.data_grid thead tr { background: #CCFFFF; color: #000000; border: 1px solid #808080; } -.data_grid thead td { border-bottom: 1px solid #808080; } +/*.data_grid thead tr { background: #CCFFFF; color: #000000; border: 1px solid #808080; }*/ +.data_grid thead tr { background: #E0F0E0; color: #000000; border: 1px solid #808080; } +.data_grid thead td { border-bottom: 1px solid #808080; padding-right: 5px; padding-left: 5px;} .data_grid tbody td { border: 1px solid #E0E0E0; padding: 5px; } .classic_link { text-decoration: underline; color: blue;} @@ -140,26 +141,7 @@ border-left: 1px solid #E0E0E0; border-top: 1px solid #E0E0E0; border-bottom: 1p border-bottom: 1px solid #808080; border-top: 1px solid #808080; } -/* -.myopac_link { - width: 18%; margin: 3px; padding: 3px; - text-align: center; vertical-align: middle; - border-top: 1px solid #808080; } - */ - -/* -.myopac_link_active { background: #CCFFFF; border-bottom: 6px solid green;} -*/ - -.myopac_link_active { background: #CCFFFF; font-weight: 700;} - - -/* -.color_1 { background: #A7EA9D; color: #000000; } -.color_2 { background: #64EA4F; color: #000000; } -.color_3 { background: #CCFFFF; color: #000000; } -*/ - +.myopac_link_active { background: #E0F0E0; font-weight: 700;} .myopac_table thead tr td { padding: 2px; font-weight: 500; border: 1px solid #808080;} .myopac_table td { padding: 3px; } .myopac_form_pic { width: 20px; height: 20px; } @@ -173,4 +155,15 @@ border-left: 1px solid #E0E0E0; border-top: 1px solid #E0E0E0; border-bottom: 1p #result_low_hits { border-top: 2px solid #A7EA9D } .lowhits_div { width: 100%; border-top: 1px solid #E0E0E0; text-align: center; - padding-top: 8px; padding-bottom: 8px; }/*margin-top:15px; vertical-align: middle; }*/ + padding-top: 8px; padding-bottom: 8px; } + +.rdetail_extras_div { + border-top: 2px solid #E0E0E0; +} + +.copy_info_region_row { + padding: 6px; + border: 2px solid #E0E0E0; + font-weight: 600; + background: #E0F0E0; +} diff --git a/Open-ILS/web/opac/skin/default/js/rdetail.js b/Open-ILS/web/opac/skin/default/js/rdetail.js index 207a52d34b..a2c6394fbd 100644 --- a/Open-ILS/web/opac/skin/default/js/rdetail.js +++ b/Open-ILS/web/opac/skin/default/js/rdetail.js @@ -99,6 +99,68 @@ function _rdetailDraw(r) { G.ui.rdetail.image.setAttribute("src", buildISBNSrc(cleanISBN(record.isbn()))); runEvt("rdetail", "recordDrawn"); recordsCache.push(record); + + var req = new Request(FETCH_ACONT_SUMMARY, cleanISBN(record.isbn())); + req.callback(rdetailHandleAddedContent); + req.send(); + +} + +function rdetailShowExtra(type) { + + hideMe($('rdetail_copy_info_div')); + hideMe($('rdetail_reviews_div')); + hideMe($('rdetail_toc_div')); + + switch(type) { + case "copyinfo": unHideMe($('rdetail_copy_info_div')); break; + case "reviews": unHideMe($('rdetail_reviews_div')); break; + case "tocs": unHideMe($('rdetail_tocs_div')); break; + } +} + +function rdetailHandleAddedContent(r) { + var resp = r.getResultObject(); + + if( resp.Review == 'true' ) { + var req = new Request(FETCH_REVIEWS, cleanISBN(record.isbn())); + req.callback(rdetailShowReviews); + req.send(); + } + + if( resp.TOC == 'true' ) { + var req = new Request(FETCH_TOC, cleanISBN(record.isbn())); + req.callback(rdetailShowTOC); + req.send(); + } + +} + + +function rdetailShowReviews(r) { + var res = r.getResultObject(); + var par = $('rdetail_reviews_div'); + var template = par.removeChild($('rdetail_review_template')); + if( res && res.length > 0 ) { + unHideMe($('rdetail_reviews_link')); + for( var i = 0; i != res.length; i++ ) { + var rev = res[i]; + if( rev.text && rev.info ) { + var node = template.cloneNode(true); + $n(node, 'review_header').appendChild(text(rev.info)); + $n(node, 'review_text').appendChild(text(rev.text)); + par.appendChild(node); + } + } + } +} + +function rdetailShowTOC(r) { + var resp = r.getResultObject(); + if(resp) { + unHideMe($('rdetail_toc_link')); + $('rdetail_toc_div').appendChild(text(resp)); + } } @@ -130,7 +192,8 @@ function _rdetailRows(node) { libtd.setAttribute("colspan", numStatuses + 2 ); libtd.colSpan = numStatuses + 2; - addCSSClass(row, config.css.color_3); + //addCSSClass(row, config.css.color_3); + addCSSClass(row, 'copy_info_region_row'); } copyRowParent.appendChild(row); diff --git a/Open-ILS/web/opac/skin/default/xml/myopac_checked.xml b/Open-ILS/web/opac/skin/default/xml/myopac_checked.xml index 3a9a724ac9..b081509171 100644 --- a/Open-ILS/web/opac/skin/default/xml/myopac_checked.xml +++ b/Open-ILS/web/opac/skin/default/xml/myopac_checked.xml @@ -6,7 +6,7 @@ - +
diff --git a/Open-ILS/web/opac/skin/default/xml/myopac_fines.xml b/Open-ILS/web/opac/skin/default/xml/myopac_fines.xml index d09ddada68..808e156e1e 100644 --- a/Open-ILS/web/opac/skin/default/xml/myopac_fines.xml +++ b/Open-ILS/web/opac/skin/default/xml/myopac_fines.xml @@ -3,7 +3,7 @@

-
+
diff --git a/Open-ILS/web/opac/skin/default/xml/myopac_holds.xml b/Open-ILS/web/opac/skin/default/xml/myopac_holds.xml index d028e359e3..d221937ee5 100644 --- a/Open-ILS/web/opac/skin/default/xml/myopac_holds.xml +++ b/Open-ILS/web/opac/skin/default/xml/myopac_holds.xml @@ -4,7 +4,7 @@ -
Summary
+
diff --git a/Open-ILS/web/opac/skin/default/xml/myopac_summary.xml b/Open-ILS/web/opac/skin/default/xml/myopac_summary.xml index f77e149824..6eb4956f46 100644 --- a/Open-ILS/web/opac/skin/default/xml/myopac_summary.xml +++ b/Open-ILS/web/opac/skin/default/xml/myopac_summary.xml @@ -4,35 +4,35 @@
-
+
- + - + - + - + - + - + - + + - + - + - + - + - + - + @@ -140,8 +140,8 @@


-
First NameFirst Name
Middle NameMiddle Name
Last NameLast Name
Day PhoneDay Phone
Evening PhoneEvening Phone
Other PhoneOther Phone
UsernameUsername - PasswordPassword (not shown)
Email AddressEmail Address
Primary IdentificationPrimary Identification
Secondary IdentificationSecondary Identification
Active BarcodeActive Barcode
Home LibraryHome Library
Account Creation DateAccount Creation Date
- +
+ diff --git a/Open-ILS/web/opac/skin/default/xml/rdetail.xml b/Open-ILS/web/opac/skin/default/xml/rdetail.xml index f86bbee9dc..c0f4600e3a 100644 --- a/Open-ILS/web/opac/skin/default/xml/rdetail.xml +++ b/Open-ILS/web/opac/skin/default/xml/rdetail.xml @@ -51,7 +51,10 @@
Addresses
Address Type


+ + diff --git a/Open-ILS/web/opac/skin/default/xml/rdetail_copyinfo.xml b/Open-ILS/web/opac/skin/default/xml/rdetail_copyinfo.xml index 860d64d761..f1ec94ff2b 100644 --- a/Open-ILS/web/opac/skin/default/xml/rdetail_copyinfo.xml +++ b/Open-ILS/web/opac/skin/default/xml/rdetail_copyinfo.xml @@ -1,21 +1,23 @@ -
+
- +
+ + - diff --git a/Open-ILS/web/opac/skin/default/xml/sidebar.xml b/Open-ILS/web/opac/skin/default/xml/sidebar.xml index 2ab5947e72..9a5e0e674c 100644 --- a/Open-ILS/web/opac/skin/default/xml/sidebar.xml +++ b/Open-ILS/web/opac/skin/default/xml/sidebar.xml @@ -100,9 +100,6 @@ - - - diff --git a/Open-ILS/web/opac/theme/default/css/colors.css b/Open-ILS/web/opac/theme/default/css/colors.css index 39232702ce..53181ffe75 100644 --- a/Open-ILS/web/opac/theme/default/css/colors.css +++ b/Open-ILS/web/opac/theme/default/css/colors.css @@ -5,6 +5,7 @@ body a:hover { color: red; text-decoration: underline;} .color_1 { background: #A7EA9D; color: #000000; } .color_2 { background: #64EA4F; color: #000000; } .color_3 { background: #CCFFFF; color: #000000; } +.color_4 { background: #E0F0E0; color: #000000; } /* .color_1 { background: #4D8444; color: #000000; } -- 2.43.2
&rdetail.copyInfo.local; + class='rdetail_copy_nav_link hide_me classic_link'>&rdetail.copyInfo.local; + &rdetail.copyInfo.all; + class='rdetail_copy_nav_link classic_link'>&rdetail.copyInfo.all;