2 * Copyright (C) 1995-2005, Index Data ApS
3 * See the file LICENSE for details.
5 * $Id: opacdisp.c,v 1.4 2005-01-15 19:47:14 adam Exp $
9 * \brief Implements OPAC record display
17 #include <yaz/proto.h>
19 static void opac_element_str(WRBUF wrbuf, int l, const char *elem,
25 wrbuf_puts(wrbuf, " ");
26 wrbuf_puts(wrbuf, "<");
27 wrbuf_puts(wrbuf, elem);
28 wrbuf_puts(wrbuf, ">");
29 wrbuf_xmlputs(wrbuf, data);
30 wrbuf_puts(wrbuf, "</");
31 wrbuf_puts(wrbuf, elem);
32 wrbuf_puts(wrbuf, ">\n");
36 static void opac_element_bool(WRBUF wrbuf, int l, const char *elem, int *data)
41 wrbuf_puts(wrbuf, " ");
42 wrbuf_puts(wrbuf, "<");
43 wrbuf_puts(wrbuf, elem);
45 wrbuf_puts(wrbuf, " value=\"1\"");
47 wrbuf_puts(wrbuf, " value=\"0\"");
48 wrbuf_puts(wrbuf, "/>\n");
52 void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags)
55 wrbuf_puts(wrbuf, "<holdings>\n");
57 for (i = 0; i < r->num_holdingsData; i++)
59 Z_HoldingsRecord *h = r->holdingsData[i];
60 wrbuf_puts(wrbuf, " <holding>\n");
62 if (h->which == Z_HoldingsRecord_marcHoldingsRecord)
64 wrbuf_puts (wrbuf, " <marc/>\n");
65 /* h->u.marcHoldingsRecord) */
67 else if (h->which == Z_HoldingsRecord_holdingsAndCirc)
71 Z_HoldingsAndCircData *d = h->u.holdingsAndCirc;
73 opac_element_str(wrbuf, 2, "typeOfRecord", d->typeOfRecord);
74 opac_element_str(wrbuf, 2, "encodingLevel", d->encodingLevel);
75 opac_element_str(wrbuf, 2, "format", d->format);
76 opac_element_str(wrbuf, 2, "receiptAcqStatus", d->receiptAcqStatus);
77 opac_element_str (wrbuf, 2, "generalRetention", d->generalRetention);
78 opac_element_str (wrbuf, 2, "completeness", d->completeness);
79 opac_element_str (wrbuf, 2, "dateOfReport", d->dateOfReport);
80 opac_element_str (wrbuf, 2, "nucCode", d->nucCode);
81 opac_element_str (wrbuf, 2, "localLocation", d->localLocation);
82 opac_element_str (wrbuf, 2, "shelvingLocation", d->shelvingLocation);
83 opac_element_str (wrbuf, 2, "callNumber", d->callNumber);
84 opac_element_str (wrbuf, 2, "shelvingData", d->shelvingData);
86 opac_element_str (wrbuf, 2, "copyNumber", d->copyNumber);
87 opac_element_str (wrbuf, 2, "publicNote", d->publicNote);
88 opac_element_str (wrbuf, 2, "reproductionNote", d->reproductionNote);
89 opac_element_str (wrbuf, 2, "termsUseRepro", d->termsUseRepro);
90 opac_element_str (wrbuf, 2, "enumAndChron", d->enumAndChron);
93 wrbuf_puts (wrbuf, " <volumes>\n");
94 for (j = 0; j<d->num_volumes; j++)
96 wrbuf_puts (wrbuf, " <volume>\n");
97 opac_element_str (wrbuf, 4, "enumeration",
98 d->volumes[j]->enumeration);
99 opac_element_str (wrbuf, 4, "chronology",
100 d->volumes[j]->chronology);
101 opac_element_str (wrbuf, 4, "enumAndChron",
102 d->volumes[j]->enumAndChron);
103 wrbuf_puts (wrbuf, " </volume>\n");
105 wrbuf_puts (wrbuf, " </volumes>\n");
107 if (d->num_circulationData)
109 wrbuf_puts (wrbuf, " <circulations>\n");
110 for (j = 0; j<d->num_circulationData; j++)
112 wrbuf_puts (wrbuf," <circulation>\n");
113 opac_element_bool (wrbuf, 4, "availableNow",
114 d->circulationData[j]->availableNow);
115 opac_element_str (wrbuf, 4, "availabiltyDate",
116 d->circulationData[j]->availablityDate);
117 opac_element_str (wrbuf, 4, "availableThru",
118 d->circulationData[j]->availableThru);
119 opac_element_str (wrbuf, 4, "restrictions",
120 d->circulationData[j]->restrictions);
121 opac_element_str (wrbuf, 4, "itemId",
122 d->circulationData[j]->itemId);
123 opac_element_bool (wrbuf, 4, "renewable",
124 d->circulationData[j]->renewable);
125 opac_element_bool (wrbuf, 4, "onHold",
126 d->circulationData[j]->onHold);
127 opac_element_str (wrbuf, 4, "enumAndChron",
128 d->circulationData[j]->enumAndChron);
129 opac_element_str (wrbuf, 4, "midspine",
130 d->circulationData[j]->midspine);
131 opac_element_str (wrbuf, 4, "temporaryLocation",
132 d->circulationData[j]->temporaryLocation);
133 wrbuf_puts (wrbuf, " </circulation>\n");
135 wrbuf_puts (wrbuf, " </circulations>\n");
138 wrbuf_puts(wrbuf, " </holding>\n");
140 wrbuf_puts(wrbuf, "</holdings>\n");