Changeset 1915


Ignore:
Timestamp:
2001-02-07T12:33:33+13:00 (23 years ago)
Author:
kjm18
Message:

new look for history.
mg cols: small/large querybox option.
mgpp cols: querybox options, also form queries - simple/advanced
involves new cgiargs (fqa, fqn, fqs, fqk, fqf, fqv), new macros etc

Location:
trunk/gsdl/src/recpt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/recpt/queryaction.cpp

    r1888 r1915  
    3333#include "text_t.h"
    3434#include "historydb.h"
     35#include "htmlutils.h" // for html_safe in do_action
     36#include "gsdltools.h"
    3537
    3638void colinfo_t::clear () {
     
    5961  argsinfo.addarginfo (NULL, arg_ainfo);
    6062
     63   // "ct" - 0 = mg, 1 = mgpp
     64  arg_ainfo.shortname = "ct";
     65  arg_ainfo.longname = "collection type";
     66  arg_ainfo.multiplechar = false;
     67  arg_ainfo.defaultstatus = cgiarginfo::weak;
     68  arg_ainfo.argdefault = "0";
     69  arg_ainfo.savedarginfo = cgiarginfo::must;
     70  argsinfo.addarginfo (NULL, arg_ainfo);
     71 
    6172  // "b" - 0 = simple, 1 = advanced
    6273  arg_ainfo.shortname = "b";
     
    122133  argsinfo.addarginfo (NULL, arg_ainfo);
    123134
     135
    124136  // "q"
    125137  arg_ainfo.shortname = "q";
     
    232244
    233245  // "hd" history display  - search history only displayed when
    234   // this var set.
     246  // this var set to something other than 0
     247  // this number of records is displayed
    235248  arg_ainfo.shortname = "hd";
    236249  arg_ainfo.longname = "history display";
    237   arg_ainfo.multiplechar = false;
     250  arg_ainfo.multiplechar = true;
    238251  arg_ainfo.multiplevalue = false;
    239252  arg_ainfo.defaultstatus = cgiarginfo::weak;
     
    242255  argsinfo.addarginfo (NULL, arg_ainfo);
    243256       
    244 
    245  // "hs"  save - set to 1 in query form, so only save when submit
     257  // "hs"  save - set to 1 in query form, so only save when submit
    246258  // query
    247259  // 0 = no save 1 = save
     
    254266  argsinfo.addarginfo (NULL, arg_ainfo);
    255267
    256 
    257   // "hcl" compress the list (show only the last 5)
    258   // 0 = expand, 1 = compress
    259 
    260   arg_ainfo.shortname = "hcl";
    261   arg_ainfo.longname = "history compress list";
    262   arg_ainfo.multiplechar = false;
    263   arg_ainfo.defaultstatus = cgiarginfo::weak;
    264   arg_ainfo.argdefault = "1";
    265   arg_ainfo.savedarginfo = cgiarginfo::must;
    266   argsinfo.addarginfo (NULL, arg_ainfo);
    267 
    268 
    269268  // new arg for granularity, for mgpp collections
    270269  arg_ainfo.shortname = "g";
     
    276275  argsinfo.addarginfo (NULL, arg_ainfo);
    277276
    278      // "ds" - start date
     277  // "ds" - start date
    279278  arg_ainfo.shortname = "ds";
    280279  arg_ainfo.longname = "start date";
     
    312311  argsinfo.addarginfo (NULL, arg_ainfo);
    313312
     313  // "qt" - 0 = text, 1 = form
     314  arg_ainfo.shortname = "qt";
     315  arg_ainfo.longname = "query type";
     316  arg_ainfo.multiplechar = false;
     317  arg_ainfo.defaultstatus = cgiarginfo::weak;
     318  arg_ainfo.argdefault = "0";
     319  arg_ainfo.savedarginfo = cgiarginfo::must;
     320  argsinfo.addarginfo (NULL, arg_ainfo);
     321
     322  // "qb" - 0 = regular, 1 = large
     323  arg_ainfo.shortname = "qb";
     324  arg_ainfo.longname = "query box type";
     325  arg_ainfo.multiplechar = false;
     326  arg_ainfo.defaultstatus = cgiarginfo::weak;
     327  arg_ainfo.argdefault = "0";
     328  arg_ainfo.savedarginfo = cgiarginfo::must;
     329  argsinfo.addarginfo (NULL, arg_ainfo);
     330
     331  // "fqn" - number of fields in the query form
     332  arg_ainfo.shortname = "fqn";
     333  arg_ainfo.longname = "form query num fields";
     334  arg_ainfo.multiplechar = true;
     335  arg_ainfo.defaultstatus = cgiarginfo::weak;
     336  arg_ainfo.argdefault = "4";
     337  arg_ainfo.savedarginfo = cgiarginfo::must;
     338  argsinfo.addarginfo (NULL, arg_ainfo);
     339
     340  // "fqf" - the list of field names in the form query
     341  // - a comma separated list
     342  arg_ainfo.shortname = "fqf";
     343  arg_ainfo.longname = "form query fields";
     344  arg_ainfo.multiplechar = true;
     345  //arg_ainfo.multiplevalue = true;
     346  arg_ainfo.defaultstatus = cgiarginfo::weak;
     347  arg_ainfo.argdefault = "";
     348  arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     349  argsinfo.addarginfo (NULL, arg_ainfo);
     350 
     351  // "fqv" - the list of values in the form query
     352  // - a comma separated list
     353  arg_ainfo.shortname = "fqv";
     354  arg_ainfo.longname = "form query values";
     355  arg_ainfo.multiplechar = true;
     356  //arg_ainfo.multiplevalue = true;
     357  arg_ainfo.defaultstatus = cgiarginfo::weak;
     358  arg_ainfo.argdefault = "";
     359  arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     360  argsinfo.addarginfo (NULL, arg_ainfo);
     361 
     362
     363  // "fqs" - the list of stemming options in the form query
     364  // - a comma separated list
     365  arg_ainfo.shortname = "fqs";
     366  arg_ainfo.longname = "form query stems";
     367  arg_ainfo.multiplechar = true;
     368  //arg_ainfo.multiplevalue = true;
     369  arg_ainfo.defaultstatus = cgiarginfo::weak;
     370  arg_ainfo.argdefault = "";
     371  arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     372  argsinfo.addarginfo (NULL, arg_ainfo);
     373 
     374
     375  // "fqk" - the list of casefolding options in the form query
     376  // - a comma separated list
     377  arg_ainfo.shortname = "fqk";
     378  arg_ainfo.longname = "form query casefolds";
     379  arg_ainfo.multiplechar = true;
     380  //arg_ainfo.multiplevalue = true;
     381  arg_ainfo.defaultstatus = cgiarginfo::weak;
     382  arg_ainfo.argdefault = "";
     383  arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     384  argsinfo.addarginfo (NULL, arg_ainfo);
     385 
     386  // "fqc" - the list of boolean operators in the form query
     387  // - a comma separated list
     388  arg_ainfo.shortname = "fqc";
     389  arg_ainfo.longname = "form query combines";
     390  arg_ainfo.multiplechar = true;
     391  //arg_ainfo.multiplevalue = true;
     392  arg_ainfo.defaultstatus = cgiarginfo::weak;
     393  arg_ainfo.argdefault = "";
     394  arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     395  argsinfo.addarginfo (NULL, arg_ainfo);
     396
     397  // "fqa" - form query advanced - for "run query"
     398  arg_ainfo.shortname = "fqa";
     399  arg_ainfo.longname = "form query advanced query";
     400  arg_ainfo.multiplechar = false;
     401  arg_ainfo.defaultstatus = cgiarginfo::weak;
     402  arg_ainfo.argdefault = "0";
     403  arg_ainfo.savedarginfo = cgiarginfo::mustnot;
     404  argsinfo.addarginfo (NULL, arg_ainfo);
     405 
    314406}
    315407
     
    373465  }
    374466  //check hd argument
    375     int arg_hd = args.getintarg("hd");
    376     if (arg_hd !=0 && arg_hd !=1) {
    377       logout << "Warning: \"hd\" argument out of range (" << arg_hd << ")\n";
    378           cgiarginfo *hdinfo = argsinfo.getarginfo ("hd");
    379           if (hdinfo != NULL) args["hd"] = hdinfo->argdefault;
    380     } 
     467  int arg_hd = args.getintarg("hd");
     468  if (arg_hd <0 ) {
     469    logout << "Warning: \"hd\" argument less than 0 (" << arg_hd << ")\n";
     470    cgiarginfo *hdinfo = argsinfo.getarginfo ("hd");
     471    if (hdinfo != NULL) args["hd"] = hdinfo->argdefault;
     472  } 
     473 
    381474  //check hs argument
    382475  int arg_hs = args.getintarg("hs");
     
    387480  }
    388481
    389   // chech hcl argument
    390   int arg_hcl = args.getintarg("hcl");
    391   if (arg_hcl !=0 && arg_hcl !=1) {
    392     logout << "Warning: \"hcl\" argument out of range (" << arg_hcl << ")\n";
    393     cgiarginfo *hclinfo = argsinfo.getarginfo ("hcl");
    394     if (hclinfo != NULL) args["hcl"] = hclinfo->argdefault;
     482  // check ct argument
     483  int arg_ct = args.getintarg("ct");
     484  if (arg_ct !=0 && arg_ct !=1) {
     485    logout << "Warning: \"ct\" argument out of range (" << arg_ct << ")\n";
     486    cgiarginfo *ctinfo = argsinfo.getarginfo ("ct");
     487    if (ctinfo != NULL) args["ct"] = ctinfo->argdefault;
     488  }
     489
     490  // check qt argument
     491  int arg_qt = args.getintarg("qt");
     492  if (arg_qt !=0 && arg_qt !=1) {
     493    logout << "Warning: \"qt\" argument out of range (" << arg_qt << ")\n";
     494    cgiarginfo *qtinfo = argsinfo.getarginfo ("qt");
     495    if (qtinfo != NULL) args["qt"] = qtinfo->argdefault;
     496  }
     497
     498  // check qb argument
     499  int arg_qb = args.getintarg("qb");
     500  if (arg_qb !=0 && arg_qb !=1) {
     501    logout << "Warning: \"qb\" argument out of range (" << arg_qb << ")\n";
     502    cgiarginfo *qbinfo = argsinfo.getarginfo ("qb");
     503    if (qbinfo != NULL) args["qb"] = qbinfo->argdefault;
     504  }
     505
     506  // check fqa argument
     507  int arg_fqa = args.getintarg("fqa");
     508  if (arg_fqa !=0 && arg_fqa !=1) {
     509    logout << "Warning: \"fqa\" argument out of range (" << arg_fqa << ")\n";
     510    cgiarginfo *fqainfo = argsinfo.getarginfo ("fqa");
     511    if (fqainfo != NULL) args["fqa"] = fqainfo->argdefault;
     512  }
     513
     514  // check fqn argument
     515  int arg_fqn = args.getintarg("fqn");
     516  if (arg_fqn < -1) {
     517    logout << "Warning: \"fqn\" argument less than -1 (" << arg_fqn << ")\n";
     518    cgiarginfo *fqninfo = argsinfo.getarginfo ("fqn");
     519    if (fqninfo != NULL) args["fqn"] = fqninfo->argdefault;
    395520  }
    396521
     
    406531
    407532void queryaction::define_internal_macros (displayclass &disp, cgiargsclass &args,
    408                       recptprotolistclass * /*protos*/,
    409                       ostream &/*logout*/) {
     533                      recptprotolistclass * protos,
     534                      ostream &logout) {
    410535
    411536  // define_internal_macros sets the following macros:
     
    449574  if (args.getintarg("s")) quotedquery += "_textstemon_";
    450575  disp.setmacro ("quotedquery", "query", quotedquery);
     576
     577  define_form_macros(disp, args, protos, logout);
    451578}
    452579
     
    478605  macrovalue += "</select>\n";
    479606  disp.setmacro (macroname + "selection", "Global", macrovalue);
     607}
     608
     609// sets the selection box macro _fqfselection_.
     610void queryaction::set_fqfselection_macro (const FilterOption_t &option,
     611                     displayclass &disp) {
     612
     613  if (option.validValues.empty()) return;
     614  text_t macrovalue = "";
     615
     616  macrovalue += "<select name=\"fqf\" onChange=\"updatefqf();\">\n";
     617 
     618  text_tarray::const_iterator thisvalue = option.validValues.begin();
     619  text_tarray::const_iterator endvalue = option.validValues.end();
     620
     621  while (thisvalue != endvalue) {
     622    macrovalue += "<option value=\"" + *thisvalue + "\">_";   
     623    macrovalue += *thisvalue + "_\n";
     624    thisvalue ++;
     625  }
     626  macrovalue += "</select>\n";
     627  disp.setmacro ("fqfselection", "query", macrovalue);
     628
    480629}
    481630
     
    530679    if (it!=end) set_option_macro("g", args["g"], (*it).second, disp);
    531680
    532     // define_history_macros(disp, args, protos, logout);
     681    // should probably go into define_internal_macros
     682    // _fqfselection_
     683    it = response.filterOptions.find("IndexField");
     684    if (it!=end) {
     685      set_fqfselection_macro((*it).second, disp);
     686    }
    533687  }
    534688} // define external macros
     689
     690void queryaction::define_form_macros (displayclass &disp, cgiargsclass &args,
     691               recptprotolistclass *protos, ostream &logout) {
     692
     693  // defines the following macros
     694  // _regformlist_
     695  // _advformlist_
     696
     697  if (args["ct"]!="1" || args["qt"]!="1")
     698    return; // dont need these macros
     699
     700    // mgpp & form query only needs the macros defined
     701  text_t form = "";
     702  int argfqn = args.getintarg("fqn");
     703 
     704  if (args["b"] == "1") { // advanced form
     705    form += "<tr>_firstadvformelement_</tr>\n";
     706    for (int i=1; i<argfqn; i++) {     
     707    form += "<tr>_advformelement_</tr>\n";
     708    }
     709    disp.setmacro("advformlist", "query", form);
     710  }
     711  else { // simple form
     712    for (int i=0; i<argfqn; i++) {
     713      form += "<tr>_regformelement_</tr>\n";
     714    }
     715    disp.setmacro("regformlist", "query", form);
     716  }
     717 
     718}
    535719
    536720void queryaction::define_history_macros (displayclass &disp, cgiargsclass &args,
     
    543727  text_t historylist;
    544728  int arghd = args.getintarg("hd");
    545   if (arghd != 1) {
     729  if (arghd == 0) {
    546730    historylist="";
    547731  }
     
    555739      text_tarray::iterator here = entries.begin();
    556740      text_tarray::iterator end = entries.end();
    557       int size=(int)entries.size();
    558       if (args["hcl"]==1&&size>5) { // compress the list
    559     here = end-5;
    560     count=size-4;
     741      int numrecords=(int)entries.size();
     742      if (numrecords>arghd) { // only display some of them
     743    numrecords = arghd;
    561744      }
    562       historylist += "<table align=center width=500 border=0>\n";
    563       historylist += "<tr><td width=300 align=center>";
    564       historylist += "<a href=\"_httpclearhistory_\">_textclearhistory_</a></td>\n";
    565 
    566       if (size>5&&args["hcl"]==1) { //compress the list, show the expand button
    567        
    568       historylist += "<td><a href=\"_gwcgi_?_optsite_e=_compressedoptions_&a=q&hcl=0\">_textexpand_</a></td>\n";
    569       }
    570       else if (size >5 && args["hcl"]==0) { // expand the list, show contract button
    571     historylist += "<td><a href=\"_gwcgi_?_optsite_e=_compressedoptions_&a=q&hcl=1\">_textcontract_</a></td>\n";
    572       }
    573       historylist += "</table>\n";
    574       historylist += "<table align=center width=500 border=1>\n<tr><th colspan=4 align=center>";
    575       historylist += "_textsearchhistory_</th></tr>\n";
    576       historylist += "<tr><th width=40>#</th>\n<th width=340>_textquery_</th>\n";
    577       historylist += "<th width=60>_textresults_</th><th width=60>_textview_</th></tr>\n";
    578 
    579       while (here !=end ) {
    580     text_t c;
     745      historylist += "<form name=\"HistoryForm\"><table width=537>\n";
     746
     747      for (int i=0; i<numrecords;i++) {
    581748    text_t query;
    582749    text_t numdocs;
    583750    text_t cgiargs;
    584     text_t  userinfo;
    585     split_saved_query(*here,c, numdocs, cgiargs);
     751    text_t userinfo;
     752    text_t escquery;
     753    split_saved_query(entries[i],numdocs,cgiargs);
    586754    parse_saved_args(cgiargs, "q", query); // get query string out
    587755    decode_cgi_arg(query); // un cgisafe it
     756    escquery = escape_quotes(query); // escape the quotes
     757    text_t histvalue = "histvalue";
     758    histvalue += i;
     759    disp.setmacro(histvalue, "query", escquery);
     760    format_user_info(cgiargs, userinfo, args, protos, logout);
    588761   
    589     format_user_info(cgiargs, userinfo, protos, logout);
    590    
    591     historylist += "<tr> <td width=40 align=center>"+c+"</td>\n";
    592     historylist += "<td width=340 align=left>"+query+"</td><td width=60 align=center>"+numdocs+"</td>\n";
    593     historylist += "<td width=60 align=center><a href=\"_gwcgi_?_optsite_e=_compressedoptions_&";
    594     historylist += *here+"\"><img name=\"display\" src=\"_httpicondisplay_\" width=_widthdisplay_ ";
    595     historylist += "height=_heightdisplay_ border=\"0\" alt=\"" + userinfo +"\"></a></td></tr>\n";
    596     here++;
    597     count++;
     762    historylist += "<tr><td align=right>_imagehistbutton_(";
     763    historylist += i;
     764    historylist += ")</td>\n";
     765    historylist += "<td><nobr><table border=1 cellspacing=0 ";
     766    historylist += "cellpadding=0><tr><td width=365 align=left>"
     767      + query
     768      + "</td></tr></table></td><td width=110 align=center><small>"
     769      + numdocs;
     770    if (numdocs == 1) historylist += " _texthresult_";
     771    else historylist += " _texthresults_";
     772    if (!userinfo.empty()) {
     773      historylist += "<br>( "+userinfo+" )</small></td>\n";
     774    }
    598775      }
    599       historylist+="</table>\n\n";
     776      historylist+="</table></form>\n\n";
    600777     
    601     } // if
     778    } // if get history info
    602779    else {
    603780      historylist += "_textnohistory_";
     
    10401217  // do the query
    10411218  request.filterResultOptions = FROID | FRmetadata | FRtermFreq;
    1042   text_t formattedstring = args["q"];
    1043   if (!combine_query (args["z"], formattedstring, gsdlhome)) {
    1044     args["q"]=formattedstring;
    1045   }
    1046 
    1047   format_querystring (formattedstring, args.getintarg("b"));
    1048   add_dates(formattedstring, args.getintarg("ds"), args.getintarg("de"),
     1219  text_t formattedstring = "";
     1220
     1221  if (args["qt"]=="0") { // normal text search
     1222    formattedstring = args["q"];
     1223    format_querystring (formattedstring, args.getintarg("b"));
     1224    add_dates(formattedstring, args.getintarg("ds"), args.getintarg("de"),
    10491225        args.getintarg("dsbc"), args.getintarg("debc"));
    1050   set_queryfilter_options (request, formattedstring, args);
    1051   collectproto->filter (collection, request, response, err, logout);
    1052   if (err != noError) {
    1053     outconvertclass text_t2ascii;
    1054     logout << text_t2ascii
    1055        << "queryaction::search_single_collections: call to QueryFilter failed "
    1056        << "for " << collection << " collection (" << get_comerror_string (err) << ")\n";
     1226  }
     1227  else if (args["qt"]=="1" ){ // form search
     1228
     1229    if (args["b"]=="1" && args["fqa"]=="1") { // explicit query
     1230      formattedstring = args["q"];
     1231    }
     1232    else { // form search
     1233      if (args["b"]=="0") { // regular form
     1234    parse_reg_query_form(formattedstring, args);
     1235      }
     1236      else  { // advanced form
     1237    parse_adv_query_form(formattedstring, args);
     1238      }
     1239      args["q"] = formattedstring;
     1240     
     1241      // also reset the _cgiargq_ macro as it has changed now
     1242      disp.setmacro("cgiargq", "Global", html_safe(args["q"]));
     1243     
     1244      // reset the compressed options to include the q arg
     1245      text_t compressedoptions = recpt->get_compressed_arg(args, logout);
     1246      if (!compressedoptions.empty()) {
     1247    disp.setmacro ("compressedoptions", "Global", dm_safe(compressedoptions));
     1248    // need a decoded version of compressedoptions for use within forms
     1249    // as browsers encode values from forms before sending to server
     1250    // (e.g. %25 becomes %2525)
     1251    decode_cgi_arg (compressedoptions);
     1252    disp.setmacro ("decodedcompressedoptions", "Global", dm_safe(compressedoptions));
     1253      }
     1254    } // form search
     1255  } // args["qt"]=1
     1256  else {
     1257    logout << "ERROR (query_action::search_single_collection): querytype not defined\n";
    10571258    return false;
    10581259  }
    10591260
    1060  
    1061   define_query_macros (args, disp, response);
    1062 
    1063   // save the query if appropriate
    1064   if (!save_search_history(args, response))
    1065     logout << "save failed";
     1261  if (!formattedstring.empty()) { // do the query
     1262    set_queryfilter_options (request, formattedstring, args);
     1263    collectproto->filter (collection, request, response, err, logout);
     1264    if (err != noError) {
     1265      outconvertclass text_t2ascii;
     1266      logout << text_t2ascii
     1267         << "queryaction::search_single_collections: call to QueryFilter failed "
     1268         << "for " << collection << " collection (" << get_comerror_string (err) << ")\n";
     1269      return false;
     1270    }
     1271 
     1272    define_query_macros (args, disp, response);
     1273
     1274    // save the query if appropriate
     1275    if (!save_search_history(args, response))
     1276      logout << "save failed";
     1277  }
    10661278
    10671279  define_history_macros (disp, args, protos, logout);
    1068 
     1280 
    10691281  textout << outconvert << disp << "_query:header_\n"
    10701282      << "_query:content_";
     
    10961308  while (this_term != end_term) {
    10971309    char *term = (*this_term).term.getcstr();
    1098     if(term[0]<'0' || term[0] >'9'){
     1310    //   if(term[0]<'0' || term[0] >'9'){
    10991311      freqmsg += (*this_term).term + ": " + (*this_term).freq;
    11001312      if ((this_term + 1) != end_term)
    11011313    freqmsg += ", ";
    1102     }
     1314      // }
    11031315    delete term;
    11041316    this_term ++;
     
    11561368bool queryaction::save_search_history (cgiargsclass &args, const FilterResponse_t &response)
    11571369{
    1158 
    11591370  if (args["q"]=="") return true; // null query, dont save
    11601371  if (args["hs"]=="0") return true; // only save when submit query
    1161 
     1372                                    // displayed
    11621373  // get userid
    11631374  text_t userid = args["z"];
     
    11691380    query.push_back('+');
    11701381  }
    1171   query += "a=q";
    1172   query += "&c="+args["c"];
     1382  query += "c="+args["c"];
    11731383  query += "&h="+args["h"];
    11741384  query += "&t="+args["t"];
     
    11781388  query += "&s="+args["s"];
    11791389  query += "&k="+args["k"];
    1180    
     1390  query += "&g="+args["g"];
     1391 
    11811392  text_t qstring = args["q"];
    11821393  text_t formattedquery =cgi_safe(qstring);
    11831394  query += "&q="+formattedquery;
    11841395
    1185   if (set_history_info(userid, query, gsdlhome)) return true;
     1396  bool display=false;
     1397  int hd = args.getintarg("hd");
     1398  if (hd > 0) display=true;
     1399  if (set_history_info(userid, query, gsdlhome, display)) return true;
    11861400  else return false;
    11871401
     
    11911405
    11921406
    1193 
    1194 
    1195 
  • trunk/gsdl/src/recpt/queryaction.h

    r1285 r1915  
    6969                const FilterResponse_t &response);
    7070
     71  void define_form_macros (displayclass &disp, cgiargsclass &args,
     72               recptprotolistclass *protos, ostream &logout);
     73
     74  void set_fqfselection_macro (const FilterOption_t &option,
     75                  displayclass &disp);
     76
     77
    7178  void define_history_macros (displayclass &disp, cgiargsclass &args,
    7279                   recptprotolistclass *protos, ostream &logout);
     
    7986           ostream &textout, ostream &logout);
    8087 
    81 
    82 
    83   bool search_multiple_collections (cgiargsclass &args, recptprotolistclass *protos,
    84                     browsermapclass *browsers, displayclass &disp,
    85                     outconvertclass &outconvert, ostream &textout,
     88  bool search_multiple_collections (cgiargsclass &args,
     89                    recptprotolistclass *protos,
     90                    browsermapclass *browsers,
     91                    displayclass &disp,
     92                    outconvertclass &outconvert,
     93                    ostream &textout,
    8694                    ostream &logout);
    87 
    88 
    89   bool search_single_collection (cgiargsclass &args, const text_t &collection,
    90                  recptprotolistclass *protos, browsermapclass *browsers,
    91                  displayclass &disp, outconvertclass &outconvert,
     95 
     96  bool search_single_collection (cgiargsclass &args,
     97                 const text_t &collection,
     98                 recptprotolistclass *protos,
     99                 browsermapclass *browsers,
     100                 displayclass &disp,
     101                 outconvertclass &outconvert,
    92102                 ostream &textout, ostream &logout);
    93103
    94104
    95   bool save_search_history(cgiargsclass &args, const FilterResponse_t &response);
    96   bool delete_search_history(cgiargsclass &args);
     105  bool save_search_history(cgiargsclass &args,
     106               const FilterResponse_t &response);
    97107
    98108public:
Note: See TracChangeset for help on using the changeset viewer.