From 189661577821bfb8b1a7e264da65f59eefd8fbad Mon Sep 17 00:00:00 2001 From: berick Date: Wed, 20 Apr 2011 17:50:29 -0400 Subject: [PATCH] show No Subjects when, well, there are no subjects; cleanup --- .../default/opac/parts/record/subjects.tt2 | 136 ++++++++---------- 1 file changed, 63 insertions(+), 73 deletions(-) diff --git a/Open-ILS/web/templates/default/opac/parts/record/subjects.tt2 b/Open-ILS/web/templates/default/opac/parts/record/subjects.tt2 index 64cc3c474a..98c8b1aade 100644 --- a/Open-ILS/web/templates/default/opac/parts/record/subjects.tt2 +++ b/Open-ILS/web/templates/default/opac/parts/record/subjects.tt2 @@ -1,77 +1,67 @@ -
- - - - - +[% + subjects = [ + { + label => l('Genre: '), + xpath => '//*[@tag="655"]|//*[@tag="659"]' + }, { + label => l('Topic Heading: '), + xpath => '//*[@tag="690"]' + }, { + label => l('Geographic Setting: '), + xpath => '//*[@tag="691"]' + }, { + label => l('Biographical Subject: '), + xpath => '//*[@tag="692"]' + }, { + label => l('Character Attributes: '), + xpath => '//*[@tag="693"]' + }, { + label => l('Setting: '), + xpath => '//*[@tag="698"]' + }, { + label => l('Time Period: '), + xpath => '//*[@tag="699"]' + } + ]; - [% - subjects = [ - { - label => l('Genre: '), - xpath => '//*[@tag="655"]|//*[@tag="659"]' - }, { - label => l('Topic Heading: '), - xpath => '//*[@tag="690"]' - }, { - label => l('Geographic Setting: '), - xpath => '//*[@tag="691"]' - }, { - label => l('Biographical Subject: '), - xpath => '//*[@tag="692"]' - }, { - label => l('Character Attributes: '), - xpath => '//*[@tag="693"]' - }, { - label => l('Setting: '), - xpath => '//*[@tag="698"]' - }, { - label => l('Time Period: '), - xpath => '//*[@tag="699"]' - } - ]; + BLOCK render_subject; + loc = CGI.param('loc') | uri; + xpath = xpath || '//*[starts-with(@tag,"6")]'; + FOR node IN ctx.marc_xml.findnodes(xpath); + all_terms = []; + FOR subfield IN node.childNodes; + NEXT UNLESS subfield.nodeName == "subfield"; + code = subfield.getAttribute('code'); + NEXT UNLESS code.match('[a-z]'); + IF code.match('[vxyz]'); " — "; END; + # at this point, we actually have a partial term to use. + single_term = subfield.textContent | html; + all_terms.push(subfield.textContent); + total_term = all_terms.join(" ").replace('\s+$', '') | uri; + '' _ single_term _ ''; + END; + IF all_terms.size; "
"; END; + END; + END +%] - FOREACH subj IN subjects; - ''; - content = PROCESS render_subject(xpath=subj.xpath); - IF content.match('\S') %] - - - - - [% END; END; %] +
+
- [% l('Subject:') %] - - [% BLOCK render_subject; - loc = CGI.param('loc') | uri; - xpath = xpath || '//*[starts-with(@tag,"6")]'; - FOR node IN ctx.marc_xml.findnodes(xpath); - all_terms = []; - FOR subfield IN node.childNodes; - NEXT UNLESS subfield.nodeName == "subfield"; - code = 0; - FOR a IN subfield.attributes; - IF a.nodeName == "code"; - code = a.nodeValue; - END; - END; - NEXT UNLESS code.match('[a-z]'); - - IF code.match('[vxyz]'); - " — "; - END; - # at this point, we actually have a partial term to use. - single_term = subfield.textContent | html; - all_terms.push(subfield.textContent); - total_term = all_terms.join(" ").replace('\s+$', '') ; # XXX need to take care of any &'s, right? - '' _ single_term _ ''; - END; - "
"; - END %] - [% END %] - [% s = PROCESS render_subject; IF s.match('\S'); s; END; %] -
- [% subj.label %] -
[% content %]
+ [% any_subjects = 0; + FOREACH subj IN subjects; + content = PROCESS render_subject(xpath=subj.xpath); + IF content.match('\S'); + any_subjects = 1; %] + + + + + [% END; %] + [% END; %] + [% IF any_subjects == 0 %] + + [% END; %]
+ [% subj.label %] +
[% content %]
No Subjects
-- 2.43.2