[open-ils-commits] [GIT] Evergreen ILS branch master updated. 61a95875189d27ed3543f45edb63d3e243aa272a
Evergreen Git
git at git.evergreen-ils.org
Wed Aug 1 16:55:43 EDT 2012
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".
The branch, master has been updated
via 61a95875189d27ed3543f45edb63d3e243aa272a (commit)
via f58ad303473a992b11cbefe704dafd1a8eb03ae3 (commit)
via 8151ed9d949a6613c1bf40d605c59f2d07efd06c (commit)
via a6170ad241d22e936def92dd0896ee955ae48e53 (commit)
from 77fdad1194178d217b46c4c49d9930a2c31cd5be (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 61a95875189d27ed3543f45edb63d3e243aa272a
Author: Thomas Berezansky <tsbere at mvlc.org>
Date: Wed Aug 1 16:40:51 2012 -0400
Fix place hold hiding logic
Always show the place hold link for staff with permission to place holds
that won't fill currently.
Otherwise, only show the link if:
There are holdable copies
AND
We aren't blocking OR there are no available copies
Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/Open-ILS/src/templates/opac/parts/record/summary.tt2 b/Open-ILS/src/templates/opac/parts/record/summary.tt2
index 32858db..990201d 100644
--- a/Open-ILS/src/templates/opac/parts/record/summary.tt2
+++ b/Open-ILS/src/templates/opac/parts/record/summary.tt2
@@ -25,10 +25,9 @@
<div id="rdetail_actions_div">
[%- search_ou = ctx.search_ou;
IF ctx.place_unfillable ||
- (ctx.holds_block.enabled != 'true' &&
- attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0
- ) ||
- (ctx.holds_block.enable == 'true' && attrs.org_copy_counts.$search_ou.available > 0)
+ ( attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0
+ && (ctx.holds_block.enabled != 'true' || attrs.org_copy_counts.$search_ou.available == 0)
+ )
%]
<div class="rdetail_aux_utils place_hold">
<a href="[% mkurl(ctx.opac_root _ '/place_hold',
diff --git a/Open-ILS/src/templates/opac/parts/result/table.tt2 b/Open-ILS/src/templates/opac/parts/result/table.tt2
index 1d809d6..225c21a 100644
--- a/Open-ILS/src/templates/opac/parts/result/table.tt2
+++ b/Open-ILS/src/templates/opac/parts/result/table.tt2
@@ -218,11 +218,9 @@
<div class="result_table_utils">
[%- search_ou = ctx.search_ou;
IF ctx.place_unfillable ||
- (ctx.holds_block.enabled != 'true' &&
- attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0
- ) ||
- (ctx.holds_block.enable == 'true' && attrs.org_copy_counts.$search_ou.available > 0)
-
+ ( attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0
+ && (ctx.holds_block.enabled != 'true' || attrs.org_copy_counts.$search_ou.available == 0)
+ )
%]
<div class="results_aux_utils place_hold"><a
href="[% mkurl(ctx.opac_root _ '/place_hold',
commit f58ad303473a992b11cbefe704dafd1a8eb03ae3
Author: Dan Scott <dscott at laurentian.ca>
Date: Wed Aug 1 16:54:32 2012 -0400
TPAC: Wrap "holdable copies" upgrade script
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 7b86406..b836f97 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -87,7 +87,7 @@ CREATE TRIGGER no_overlapping_deps
BEFORE INSERT OR UPDATE ON config.db_patch_dependencies
FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
-INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0733', :eg_version); -- berick/miker
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0734', :eg_version); -- tsbere/denials
CREATE TABLE config.bib_source (
id SERIAL PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.tpac_holdable_check.sql b/Open-ILS/src/sql/Pg/upgrade/0734.tpac_holdable_check.sql
similarity index 97%
rename from Open-ILS/src/sql/Pg/upgrade/XXXX.tpac_holdable_check.sql
rename to Open-ILS/src/sql/Pg/upgrade/0734.tpac_holdable_check.sql
index 8212687..e43bd3b 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.tpac_holdable_check.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0734.tpac_holdable_check.sql
@@ -1,3 +1,10 @@
+-- Evergreen DB patch 0734.tpac_holdable_check.sql
+--
+BEGIN;
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('0734', :eg_version);
+
CREATE OR REPLACE FUNCTION asset.record_has_holdable_copy ( rid BIGINT ) RETURNS BOOL AS $f$
BEGIN
PERFORM 1
@@ -135,3 +142,4 @@ RETURNS XML AS $F$
);
$F$ LANGUAGE SQL STABLE;
+COMMIT;
commit 8151ed9d949a6613c1bf40d605c59f2d07efd06c
Author: Art Rhyno <art632000 at yahoo.ca>
Date: Fri Jul 27 11:39:14 2012 -0400
Block "Place Hold" link in TPAC if item is available
Suppress the display of the "Place Hold" link based on whether an item
is available. This is set as a preference in config.tt2. Some sites
may want the ability to place holds regardless of availability.
Signed-off-by: Art Rhyno <art632000 at yahoo.ca>
Signed-off-by: Dan Scott <dscott at laurentian.ca>
Conflicts:
Open-ILS/src/templates/opac/parts/record/summary.tt2
Open-ILS/src/templates/opac/parts/result/table.tt2
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/Open-ILS/src/templates/opac/parts/config.tt2 b/Open-ILS/src/templates/opac/parts/config.tt2
index 813280a..f23ef4d 100644
--- a/Open-ILS/src/templates/opac/parts/config.tt2
+++ b/Open-ILS/src/templates/opac/parts/config.tt2
@@ -6,6 +6,15 @@
##############################################################################
##############################################################################
+# Holds blocking
+##############################################################################
+# Prevent the "Place hold" link from being displayed if a copy is available.
+# This is not perfect, given the umpteen different types of holds that are
+# possible, but addresses the major use case for libraries that don't want
+# to fetch copies from the shelves.
+ctx.holds_block.enabled = 'false';
+
+##############################################################################
# RefWorks configuration
##############################################################################
# RefWorks is a Web-based citation manager
diff --git a/Open-ILS/src/templates/opac/parts/misc_util.tt2 b/Open-ILS/src/templates/opac/parts/misc_util.tt2
index 524a66b..124d124 100644
--- a/Open-ILS/src/templates/opac/parts/misc_util.tt2
+++ b/Open-ILS/src/templates/opac/parts/misc_util.tt2
@@ -238,10 +238,12 @@
FOR node IN xml.findnodes(xpath);
FOR attr IN ['count', 'available', 'unshadow', 'transcendant', 'org_unit'];
depth = node.getAttribute('depth');
+ org_unit = node.getAttribute('org_unit');
args.copy_counts.$depth.$attr = node.getAttribute(attr);
+ args.org_copy_counts.$org_unit.$attr = node.getAttribute(attr);
END;
END;
-
+
# Get preferred library copy count
args.plib_copy_counts = {};
count_type = 'pref_lib';
diff --git a/Open-ILS/src/templates/opac/parts/record/summary.tt2 b/Open-ILS/src/templates/opac/parts/record/summary.tt2
index 7e3c883..32858db 100644
--- a/Open-ILS/src/templates/opac/parts/record/summary.tt2
+++ b/Open-ILS/src/templates/opac/parts/record/summary.tt2
@@ -23,14 +23,20 @@
</div>
<div id="rdetail_actions_div">
-[% IF ctx.place_unfillable || attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0 %]
+ [%- search_ou = ctx.search_ou;
+ IF ctx.place_unfillable ||
+ (ctx.holds_block.enabled != 'true' &&
+ attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0
+ ) ||
+ (ctx.holds_block.enable == 'true' && attrs.org_copy_counts.$search_ou.available > 0)
+ %]
<div class="rdetail_aux_utils place_hold">
<a href="[% mkurl(ctx.opac_root _ '/place_hold',
{hold_target => ctx.bre_id, hold_type => 'T', hold_source_page => mkurl()}, stop_parms) %]"
class="no-dec"><img src="[% ctx.media_prefix %]/images/green_check.png" alt="[% l('place hold') %]" /><span
class="place_hold">[% l('Place Hold') %]</span></a>
</div>
-[% END %]
+ [%- END -%]
<div class="rdetail_aux_utils toggle_list">
[% IF ctx.user;
INCLUDE "opac/parts/bookbag_actions.tt2";
diff --git a/Open-ILS/src/templates/opac/parts/result/table.tt2 b/Open-ILS/src/templates/opac/parts/result/table.tt2
index 426803c..1d809d6 100644
--- a/Open-ILS/src/templates/opac/parts/result/table.tt2
+++ b/Open-ILS/src/templates/opac/parts/result/table.tt2
@@ -216,7 +216,14 @@
<td nowrap='nowrap' width="1" align="right">
<div class="result_table_utils_cont">
<div class="result_table_utils">
-[% IF ctx.place_unfillable || attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0 %]
+[%- search_ou = ctx.search_ou;
+ IF ctx.place_unfillable ||
+ (ctx.holds_block.enabled != 'true' &&
+ attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0
+ ) ||
+ (ctx.holds_block.enable == 'true' && attrs.org_copy_counts.$search_ou.available > 0)
+
+%]
<div class="results_aux_utils place_hold"><a
href="[% mkurl(ctx.opac_root _ '/place_hold',
{hold_target => rec.id, hold_type => 'T', hold_source_page => mkurl()}) %]"
@@ -224,7 +231,7 @@
src="[% ctx.media_prefix %]/images/green_check.png"
alt=""/><span class="result_place_hold">[% l('Place Hold') %]</span></a>
</div>
-[% END %]
+[%- END -%]
<div class="results_aux_utils result_util">
[% IF ctx.user;
INCLUDE "opac/parts/bookbag_actions.tt2";
commit a6170ad241d22e936def92dd0896ee955ae48e53
Author: Thomas Berezansky <tsbere at mvlc.org>
Date: Wed Apr 18 17:03:05 2012 -0400
TPac: Hide place hold links when not holdable
The only check done is on the holdable flags:
Copy
Status
Location
Hold rules themselves are not checked.
Note that place hold links are shown either way when you can have the
PLACE_UNFILLABLE_HOLD permission and are logged into the staff client.
Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
Signed-off-by: Dan Scott <dscott at laurentian.ca>
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
index 0933acc..865674b 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Search/Biblio.pm
@@ -276,6 +276,51 @@ sub record_id_to_copy_count {
return [ sort { $a->{depth} <=> $b->{depth} } @count ];
}
+__PACKAGE__->register_method(
+ method => "record_has_holdable_copy",
+ api_name => "open-ils.search.biblio.record.has_holdable_copy",
+ signature => {
+ desc => q/Returns a boolean indicating if a record has any holdable copies./,
+ params => [
+ {desc => 'Record ID', type => 'number'}
+ ],
+ return => {
+ desc => q/bool indicating if the record has any holdable copies/,
+ type => 'bool'
+ }
+ }
+);
+
+__PACKAGE__->register_method(
+ method => "record_has_holdable_copy",
+ api_name => "open-ils.search.biblio.metarecord.has_holdable_copy",
+ signature => {
+ desc => q/Returns a boolean indicating if a record has any holdable copies./,
+ params => [
+ {desc => 'Record ID', type => 'number'}
+ ],
+ return => {
+ desc => q/bool indicating if the record has any holdable copies/,
+ type => 'bool'
+ }
+ }
+);
+
+sub record_has_holdable_copy {
+ my($self, $client, $record_id ) = @_;
+
+ return 0 unless $record_id;
+
+ my $key = $self->api_name =~ /metarecord/ ? 'metarecord' : 'record';
+
+ my $data = $U->cstorereq(
+ "open-ils.cstore.json_query.atomic",
+ { from => ['asset.' . $key . '_has_holdable_copy' => $record_id ] }
+ );
+
+ return ${@$data[0]}{'asset.' . $key . '_has_holdable_copy'} eq 't';
+
+}
__PACKAGE__->register_method(
method => "biblio_search_tcn",
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
index ca9b149..218e2d2 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
@@ -262,6 +262,7 @@ sub load_common {
$ctx->{authtoken} = $e->authtoken;
$ctx->{authtime} = $e->authtime;
$ctx->{user} = $e->requestor;
+ $ctx->{place_unfillable} = 1 if $e->requestor->wsid && $e->allowed('PLACE_UNFILLABLE_HOLD', $e->requestor->ws_ou);
$ctx->{user_stats} = $U->simplereq(
'open-ils.actor',
diff --git a/Open-ILS/src/sql/Pg/040.schema.asset.sql b/Open-ILS/src/sql/Pg/040.schema.asset.sql
index d98fc75..7497878 100644
--- a/Open-ILS/src/sql/Pg/040.schema.asset.sql
+++ b/Open-ILS/src/sql/Pg/040.schema.asset.sql
@@ -650,6 +650,28 @@ BEGIN
END;
$f$ LANGUAGE PLPGSQL;
+CREATE OR REPLACE FUNCTION asset.record_has_holdable_copy ( rid BIGINT ) RETURNS BOOL AS $f$
+BEGIN
+ PERFORM 1
+ FROM
+ asset.copy acp
+ JOIN asset.call_number acn ON acp.call_number = acn.id
+ JOIN asset.copy_location acpl ON acp.location = acpl.id
+ JOIN config.copy_status ccs ON acp.status = ccs.id
+ WHERE
+ acn.record = rid
+ AND acp.holdable = true
+ AND acpl.holdable = true
+ AND ccs.holdable = true
+ AND acp.deleted = false
+ LIMIT 1;
+ IF FOUND THEN
+ RETURN true;
+ END IF;
+ RETURN FALSE;
+END;
+$f$ LANGUAGE PLPGSQL;
+
CREATE OR REPLACE FUNCTION asset.opac_ou_metarecord_copy_count (org INT, rid BIGINT) RETURNS TABLE (depth INT, org_unit INT, visible BIGINT, available BIGINT, unshadow BIGINT, transcendant INT) AS $f$
DECLARE
ans RECORD;
@@ -798,6 +820,29 @@ BEGIN
END;
$f$ LANGUAGE PLPGSQL;
+CREATE OR REPLACE FUNCTION asset.metarecord_has_holdable_copy ( rid BIGINT ) RETURNS BOOL AS $f$
+BEGIN
+ PERFORM 1
+ FROM
+ asset.copy acp
+ JOIN asset.call_number acn ON acp.call_number = acn.id
+ JOIN asset.copy_location acpl ON acp.location = acpl.id
+ JOIN config.copy_status ccs ON acp.status = ccs.id
+ JOIN metabib.metarecord_source_map mmsm ON acn.record = mmsm.source
+ WHERE
+ mmsm.metarecord = rid
+ AND acp.holdable = true
+ AND acpl.holdable = true
+ AND ccs.holdable = true
+ AND acp.deleted = false
+ LIMIT 1;
+ IF FOUND THEN
+ RETURN true;
+ END IF;
+ RETURN FALSE;
+END;
+$f$ LANGUAGE PLPGSQL;
+
CREATE OR REPLACE FUNCTION asset.autogenerate_placeholder_barcode ( ) RETURNS TRIGGER AS $f$
BEGIN
IF NEW.barcode LIKE '@@%' THEN
diff --git a/Open-ILS/src/sql/Pg/990.schema.unapi.sql b/Open-ILS/src/sql/Pg/990.schema.unapi.sql
index ac33c66..05eafcf 100644
--- a/Open-ILS/src/sql/Pg/990.schema.unapi.sql
+++ b/Open-ILS/src/sql/Pg/990.schema.unapi.sql
@@ -398,7 +398,8 @@ RETURNS XML AS $F$
name holdings,
XMLATTRIBUTES(
CASE WHEN $8 THEN 'http://open-ils.org/spec/holdings/v1' ELSE NULL END AS xmlns,
- CASE WHEN ('bre' = ANY ($5)) THEN 'tag:open-ils.org:U2 at bre/' || $1 || '/' || $3 ELSE NULL END AS id
+ CASE WHEN ('bre' = ANY ($5)) THEN 'tag:open-ils.org:U2 at bre/' || $1 || '/' || $3 ELSE NULL END AS id,
+ (SELECT record_has_holdable_copy FROM asset.record_has_holdable_copy($1)) AS has_holdable
),
XMLELEMENT(
name counts,
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.tpac_holdable_check.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.tpac_holdable_check.sql
new file mode 100644
index 0000000..8212687
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.tpac_holdable_check.sql
@@ -0,0 +1,137 @@
+CREATE OR REPLACE FUNCTION asset.record_has_holdable_copy ( rid BIGINT ) RETURNS BOOL AS $f$
+BEGIN
+ PERFORM 1
+ FROM
+ asset.copy acp
+ JOIN asset.call_number acn ON acp.call_number = acn.id
+ JOIN asset.copy_location acpl ON acp.location = acpl.id
+ JOIN config.copy_status ccs ON acp.status = ccs.id
+ WHERE
+ acn.record = rid
+ AND acp.holdable = true
+ AND acpl.holdable = true
+ AND ccs.holdable = true
+ AND acp.deleted = false
+ LIMIT 1;
+ IF FOUND THEN
+ RETURN true;
+ END IF;
+ RETURN FALSE;
+END;
+$f$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION asset.metarecord_has_holdable_copy ( rid BIGINT ) RETURNS BOOL AS $f$
+BEGIN
+ PERFORM 1
+ FROM
+ asset.copy acp
+ JOIN asset.call_number acn ON acp.call_number = acn.id
+ JOIN asset.copy_location acpl ON acp.location = acpl.id
+ JOIN config.copy_status ccs ON acp.status = ccs.id
+ JOIN metabib.metarecord_source_map mmsm ON acn.record = mmsm.source
+ WHERE
+ mmsm.metarecord = rid
+ AND acp.holdable = true
+ AND acpl.holdable = true
+ AND ccs.holdable = true
+ AND acp.deleted = false
+ LIMIT 1;
+ IF FOUND THEN
+ RETURN true;
+ END IF;
+ RETURN FALSE;
+END;
+$f$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION unapi.holdings_xml (
+ bid BIGINT,
+ ouid INT,
+ org TEXT,
+ depth INT DEFAULT NULL,
+ includes TEXT[] DEFAULT NULL::TEXT[],
+ slimit HSTORE DEFAULT NULL,
+ soffset HSTORE DEFAULT NULL,
+ include_xmlns BOOL DEFAULT TRUE,
+ pref_lib INT DEFAULT NULL
+)
+RETURNS XML AS $F$
+ SELECT XMLELEMENT(
+ name holdings,
+ XMLATTRIBUTES(
+ CASE WHEN $8 THEN 'http://open-ils.org/spec/holdings/v1' ELSE NULL END AS xmlns,
+ CASE WHEN ('bre' = ANY ($5)) THEN 'tag:open-ils.org:U2 at bre/' || $1 || '/' || $3 ELSE NULL END AS id,
+ (SELECT record_has_holdable_copy FROM asset.record_has_holdable_copy($1)) AS has_holdable
+ ),
+ XMLELEMENT(
+ name counts,
+ (SELECT XMLAGG(XMLELEMENT::XML) FROM (
+ SELECT XMLELEMENT(
+ name count,
+ XMLATTRIBUTES('public' as type, depth, org_unit, coalesce(transcendant,0) as transcendant, available, visible as count, unshadow)
+ )::text
+ FROM asset.opac_ou_record_copy_count($2, $1)
+ UNION
+ SELECT XMLELEMENT(
+ name count,
+ XMLATTRIBUTES('staff' as type, depth, org_unit, coalesce(transcendant,0) as transcendant, available, visible as count, unshadow)
+ )::text
+ FROM asset.staff_ou_record_copy_count($2, $1)
+ UNION
+ SELECT XMLELEMENT(
+ name count,
+ XMLATTRIBUTES('pref_lib' as type, depth, org_unit, coalesce(transcendant,0) as transcendant, available, visible as count, unshadow)
+ )::text
+ FROM asset.opac_ou_record_copy_count($9, $1)
+ ORDER BY 1
+ )x)
+ ),
+ CASE
+ WHEN ('bmp' = ANY ($5)) THEN
+ XMLELEMENT(
+ name monograph_parts,
+ (SELECT XMLAGG(bmp) FROM (
+ SELECT unapi.bmp( id, 'xml', 'monograph_part', evergreen.array_remove_item_by_value( evergreen.array_remove_item_by_value($5,'bre'), 'holdings_xml'), $3, $4, $6, $7, FALSE)
+ FROM biblio.monograph_part
+ WHERE record = $1
+ )x)
+ )
+ ELSE NULL
+ END,
+ XMLELEMENT(
+ name volumes,
+ (SELECT XMLAGG(acn ORDER BY rank, name, label_sortkey) FROM (
+ -- Physical copies
+ SELECT unapi.acn(y.id,'xml','volume',evergreen.array_remove_item_by_value( evergreen.array_remove_item_by_value($5,'holdings_xml'),'bre'), $3, $4, $6, $7, FALSE), y.rank, name, label_sortkey
+ FROM evergreen.ranked_volumes($1, $2, $4, $6, $7, $9) AS y
+ UNION ALL
+ -- Located URIs
+ SELECT unapi.acn(uris.id,'xml','volume',evergreen.array_remove_item_by_value( evergreen.array_remove_item_by_value($5,'holdings_xml'),'bre'), $3, $4, $6, $7, FALSE), 0, name, label_sortkey
+ FROM evergreen.located_uris($1, $2, $9) AS uris
+ )x)
+ ),
+ CASE WHEN ('ssub' = ANY ($5)) THEN
+ XMLELEMENT(
+ name subscriptions,
+ (SELECT XMLAGG(ssub) FROM (
+ SELECT unapi.ssub(id,'xml','subscription','{}'::TEXT[], $3, $4, $6, $7, FALSE)
+ FROM serial.subscription
+ WHERE record_entry = $1
+ )x)
+ )
+ ELSE NULL END,
+ CASE WHEN ('acp' = ANY ($5)) THEN
+ XMLELEMENT(
+ name foreign_copies,
+ (SELECT XMLAGG(acp) FROM (
+ SELECT unapi.acp(p.target_copy,'xml','copy',evergreen.array_remove_item_by_value($5,'acp'), $3, $4, $6, $7, FALSE)
+ FROM biblio.peer_bib_copy_map p
+ JOIN asset.copy c ON (p.target_copy = c.id)
+ WHERE NOT c.deleted AND p.peer_record = $1
+ LIMIT ($6 -> 'acp')::INT
+ OFFSET ($7 -> 'acp')::INT
+ )x)
+ )
+ ELSE NULL END
+ );
+$F$ LANGUAGE SQL STABLE;
+
diff --git a/Open-ILS/src/templates/opac/parts/record/summary.tt2 b/Open-ILS/src/templates/opac/parts/record/summary.tt2
index 9f83fc6..7e3c883 100644
--- a/Open-ILS/src/templates/opac/parts/record/summary.tt2
+++ b/Open-ILS/src/templates/opac/parts/record/summary.tt2
@@ -23,12 +23,14 @@
</div>
<div id="rdetail_actions_div">
+[% IF ctx.place_unfillable || attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0 %]
<div class="rdetail_aux_utils place_hold">
<a href="[% mkurl(ctx.opac_root _ '/place_hold',
{hold_target => ctx.bre_id, hold_type => 'T', hold_source_page => mkurl()}, stop_parms) %]"
class="no-dec"><img src="[% ctx.media_prefix %]/images/green_check.png" alt="[% l('place hold') %]" /><span
class="place_hold">[% l('Place Hold') %]</span></a>
</div>
+[% END %]
<div class="rdetail_aux_utils toggle_list">
[% IF ctx.user;
INCLUDE "opac/parts/bookbag_actions.tt2";
diff --git a/Open-ILS/src/templates/opac/parts/result/table.tt2 b/Open-ILS/src/templates/opac/parts/result/table.tt2
index 662041e..426803c 100644
--- a/Open-ILS/src/templates/opac/parts/result/table.tt2
+++ b/Open-ILS/src/templates/opac/parts/result/table.tt2
@@ -216,6 +216,7 @@
<td nowrap='nowrap' width="1" align="right">
<div class="result_table_utils_cont">
<div class="result_table_utils">
+[% IF ctx.place_unfillable || attrs.marc_xml.findnodes('//*[local-name()="holdings" and @has_holdable="true"]').size > 0 %]
<div class="results_aux_utils place_hold"><a
href="[% mkurl(ctx.opac_root _ '/place_hold',
{hold_target => rec.id, hold_type => 'T', hold_source_page => mkurl()}) %]"
@@ -223,6 +224,7 @@
src="[% ctx.media_prefix %]/images/green_check.png"
alt=""/><span class="result_place_hold">[% l('Place Hold') %]</span></a>
</div>
+[% END %]
<div class="results_aux_utils result_util">
[% IF ctx.user;
INCLUDE "opac/parts/bookbag_actions.tt2";
-----------------------------------------------------------------------
Summary of changes:
.../lib/OpenILS/Application/Search/Biblio.pm | 45 ++++++
.../src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm | 1 +
Open-ILS/src/sql/Pg/002.schema.config.sql | 2 +-
Open-ILS/src/sql/Pg/040.schema.asset.sql | 45 ++++++
Open-ILS/src/sql/Pg/990.schema.unapi.sql | 3 +-
.../sql/Pg/upgrade/0734.tpac_holdable_check.sql | 145 ++++++++++++++++++++
Open-ILS/src/templates/opac/parts/config.tt2 | 9 ++
Open-ILS/src/templates/opac/parts/misc_util.tt2 | 4 +-
.../src/templates/opac/parts/record/summary.tt2 | 7 +
Open-ILS/src/templates/opac/parts/result/table.tt2 | 7 +
10 files changed, 265 insertions(+), 3 deletions(-)
create mode 100644 Open-ILS/src/sql/Pg/upgrade/0734.tpac_holdable_check.sql
hooks/post-receive
--
Evergreen ILS
More information about the open-ils-commits
mailing list