]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/templates/default/opac/parts/misc_util.tt2
Merge branch 'opac-tt-poc' of git+ssh://yeti.esilibrary.com/home/evergreen/evergreen...
[Evergreen.git] / Open-ILS / web / templates / default / opac / parts / misc_util.tt2
1 [% 
2     # Extract MARC fields from XML
3     #   get_marc_attrs( { marc_xml => doc } )
4     BLOCK get_marc_attrs;
5         xml = args.marc_xml;
6         args.isbn = xml.findnodes('//*[@tag="020"]/*[@code="a"]').shift.textContent;
7         args.upc = xml.findnodes('//*[@tag="024"]/*[@code="a"]').textContent;
8         args.issn = xml.findnodes('//*[@tag="022"]/*[@code="a"]').textContent;
9         args.title = xml.findnodes('//*[@tag="245"]/*[@code="a"]').textContent;
10         args.author = xml.findnodes('//*[@tag="100"]/*[@code="a"]').textContent;
11         args.publisher = xml.findnodes('//*[@tag="260"]/*[@code="b"]').textContent;
12         args.pubdate = xml.findnodes('//*[@tag="260"]/*[@code="c"]').textContent;
13         args.edition = xml.findnodes('//*[@tag="250"]/*[@code="a"]').textContent ||
14             xml.findnodes('//*[@tag="534"]/*[@code="b"]').textContent ||
15             xml.findnodes('//*[@tag="775"]/*[@code="b"]').textContent;
16         phys = xml.findnodes(
17             '//*[@tag="300"]/*[@code="a" or @code="b" or @code="c" or @code="e"]'
18         );
19         phys_content = [];
20         FOR p IN phys; phys_content.push(p.textContent); END;
21         args.phys_desc = phys_content.join("");
22
23         # MARC Callnumber
24         args.marc_cn = xml.findnodes('//*[@tag="092" or @tag="099"]/*').textContent;
25
26         # clean up the ISBN
27         args.isbn_clean = args.isbn.replace('\ .*', '');
28
29         args.holdsing = [];
30         FOR holding IN xml.findnodes('//*[local-name()="volumes"]/*[local-name()="volume"]');
31             args.holdings.push({
32                 # TODO
33             });
34         END;
35
36         # Extract the copy count summary
37         count_type = (ctx.is_staff) ? 'staff' : 'public';
38         xpath = '//*[local-name()="counts"]/*[local-name()="count"][@type="' _ count_type _ '"]';
39         FOR node IN xml.findnodes(xpath);
40             args.copy_counts = {};
41             FOR attr IN ['count', 'available', 'unshadow', 'transcendant']; 
42                 args.copy_counts.$attr = node.getAttribute(attr);
43             END;
44         END;
45
46         # XXX get me from SVF attrs.  If no "matttype" attr present, fall back to mods-esque item form/type
47         args.mattype = xml.findnodes('//*[@tag="998"]/*[@code="d"]').textContent;
48         args.format = ctx.find_citm(args.mattype).value;
49         args.format_icon = 'media/' _ args.mattype _ '.png';
50     END;
51
52     BLOCK get_hold_status;
53         IF hold.hold.status == 4;
54             l("Available");
55             IF ahr.shelf_expire_time;
56                 l('<br/>Expires [_1]', 
57                     date.format(ctx.parse_datetime(ahr.shelf_expire_time), DATE_FORMAT));
58             END;
59         ELSIF hold.hold.estimated_wait AND hold.hold.estimated_wait > 0;
60             # estimated wait is delivered as seconds.
61             SET hwait = POSIX.ceil(hold.hold.estimated_wait / 86400);
62             l("Estimated wait: [quant,_1,day,days]", hwait);
63         ELSIF hold.hold.status == 3;
64             l("In Transit");
65         ELSIF hold.hold.status < 3;
66             l("Waiting for copy");
67         END;
68     END;
69 %]