source: trunk/gsdl/src/recpt/pagedbrowserclass.cpp@ 727

Last change on this file since 727 was 727, checked in by sjboddie, 25 years ago

fixed some stupid compiler warnings on windows

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.9 KB
Line 
1/**********************************************************************
2 *
3 * pagedbrowserclass.cpp --
4 * Copyright (C) 1999 The New Zealand Digital Library Project
5 *
6 * A component of the Greenstone digital library software
7 * from the New Zealand Digital Library Project at the
8 * University of Waikato, New Zealand.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 * $Id: pagedbrowserclass.cpp 727 1999-10-19 08:40:13Z sjboddie $
25 *
26 *********************************************************************/
27
28/*
29 $Log$
30 Revision 1.2 1999/10/19 08:40:11 sjboddie
31 fixed some stupid compiler warnings on windows
32
33 Revision 1.1 1999/10/14 22:59:35 sjboddie
34 finished off browser classes
35
36 */
37
38
39#include "pagedbrowserclass.h"
40#include <assert.h>
41#include "OIDtools.h"
42
43pagedbrowserclass::pagedbrowserclass () {
44}
45
46pagedbrowserclass::~pagedbrowserclass () {
47}
48
49// returns the name that specifies the browserclass type
50text_t pagedbrowserclass::get_browser_name () {
51 return "Paged";
52}
53
54
55void pagedbrowserclass::load_metadata_defaults (text_tset &metadata) {
56 metadata.insert ("Title");
57}
58
59text_t pagedbrowserclass::get_default_formatstring () {
60 return "";
61}
62
63// if the "gp" (go to page) argument is set we need to set
64// the "d" argument to the corresponding page
65void pagedbrowserclass::processOID (cgiargsclass &args, recptproto *collectproto,
66 ostream &logout) {
67
68 text_t &arg_d = args["d"];
69 text_t &arg_gp = args["gp"];
70
71 if ((!arg_d.empty()) && (!arg_gp.empty()) && (is_number (arg_gp))) {
72 text_t top;
73 get_top (arg_d, top);
74 text_tset metadata;
75 metadata.insert ("Title");
76 bool getParents = false;
77 FilterResponse_t response;
78 get_children (top, args["c"], metadata, getParents, collectproto, response, logout);
79 ResultDocInfo_tarray::iterator dochere = response.docInfo.begin();
80 ResultDocInfo_tarray::iterator docend = response.docInfo.end();
81 while (dochere != docend) {
82 if ((*dochere).metadata["Title"].values[0] == arg_gp) {
83 arg_d = (*dochere).OID;
84 break;
85 }
86 dochere ++;
87 }
88 }
89}
90
91
92int pagedbrowserclass::output_section_group (ResultDocInfo_t &section, cgiargsclass &args,
93 int /*colnumber*/, format_t * /*formatlistptr*/,
94 bool /*use_table*/, text_tset &/*metadata*/, bool &/*getParents*/,
95 recptproto * /*collectproto*/, displayclass &disp,
96 outconvertclass &outconvert, ostream &textout, ostream &/*logout*/) {
97
98 // this browser class only handles document levels
99 if (args["d"].empty()) return 0;
100
101
102
103 if (section.OID != args["d"]) {
104 // set the _parentarrow_ macro
105 text_t parentarrow = "<a href=\"_httpdocument_&cl=" + args["cl"] +
106 "&d=" + section.OID + "\">_iconprev_</a>\n";
107 disp.setmacro ("parentarrow", "document", parentarrow);
108 return 0;
109 }
110
111 // must be at top level to get to here!
112 textout << outconvert << disp << "<table><tr valign=top><td colspan=3><center><b>"
113 << section.metadata["Title"].values[0] << "_document:textintro_</b>\n";
114
115 return 0;
116}
117
118int pagedbrowserclass::output_section_group (FilterResponse_t &sections, cgiargsclass &args,
119 int /*colnumber*/, format_t * /*formatlistptr*/,
120 bool /*use_table*/, text_tset &/*metadata*/, bool &/*getParents*/,
121 recptproto * /*collectproto*/, displayclass &disp,
122 outconvertclass &outconvert, ostream &textout, ostream &/*logout*/) {
123
124 text_t &arg_d = args["d"];
125
126 // this browser class only handles document levels
127 if (arg_d.empty()) return 0;
128
129 text_t previousOID, previoustitle, nextOID, nexttitle;
130 text_t previousarrow, nextarrow;
131 bool found = false;
132
133 // this should be our list of pages
134
135 ResultDocInfo_tarray::iterator thissection = sections.docInfo.begin();
136 ResultDocInfo_tarray::iterator endsection = sections.docInfo.end();
137
138 while (thissection != endsection) {
139 if (arg_d == (*thissection).OID) {
140 found = true;
141 textout << outconvert << disp << "<table><tr valign=top><td colspan=3><center><b>_document:textpage_"
142 << (*thissection).metadata["Title"].values[0] << "</b>\n";
143 if (thissection != sections.docInfo.begin()) {
144 previousOID = (*(thissection-1)).OID;
145 previoustitle = (*(thissection-1)).metadata["Title"].values[0];
146 } else
147 previousarrow = "_document:parentarrow_";
148
149 if (thissection != sections.docInfo.end()) {
150 nextOID = (*(thissection+1)).OID;
151 nexttitle = (*(thissection+1)).metadata["Title"].values[0];
152 }
153 break;
154 }
155 thissection ++;
156 }
157
158 int numpages = sections.docInfo.size();
159 textout << outconvert << disp
160 << ("_document:textnumpages_(" + text_t(numpages) + ")</center></td></tr>\n");
161
162 if (!found)
163 nextarrow = "<a href=\"_httpdocument_&cl=" + args["cl"] + "&d=" + sections.docInfo[0].OID +
164 "\">" + sections.docInfo[0].metadata["Title"].values[0] + "_iconnext_";
165 else {
166 if (!previousOID.empty())
167 previousarrow = "<a href=\"_httpdocument_&cl=" + args["cl"] + "&d=" +
168 previousOID + "\">_iconprev_" + previoustitle + "</a>\n";
169 if (!nextOID.empty())
170 nextarrow = "<a href=\"_httpdocument_&cl=" + args["cl"] + "&d=" +
171 nextOID + "\">" + nexttitle + "_iconnext_</a>\n";
172 }
173
174 textout << outconvert << disp << "<tr valign=middle>\n"
175 << "<td align=right>" << previousarrow << "</td>\n"
176 << "<td align=center valign=top>_document:gotoform_</td>"
177 << "<td align=left>" << nextarrow << "</td>\n"
178 << "</tr></table>\n";
179
180 return 0;
181}
Note: See TracBrowser for help on using the repository browser.