Changeset 669 for trunk/gsdl/src/recpt/receptionist.cpp
- Timestamp:
- 1999-10-15T12:00:53+13:00 (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/src/recpt/receptionist.cpp
r649 r669 28 28 /* 29 29 $Log$ 30 Revision 1.34 1999/10/14 23:00:52 sjboddie 31 finished changes to browsing support 32 30 33 Revision 1.33 1999/10/10 08:14:10 sjboddie 31 34 - metadata now returns mp rather than array … … 830 833 outconverter->reset(); 831 834 832 // decide on the protocol used for communicating with833 // the collection server834 835 text_t &collection = args["c"]; 835 836 recptproto *collectproto = NULL; 836 837 if (!collection.empty()) { 838 // decide on the protocol used for communicating with 839 // the collection server 837 840 collectproto = protocols.getrecptproto (collection, logout); 838 } 839 840 // get collection information 841 collectinfo.clear(); 842 if (!collection.empty()) { 843 comerror_t err; 844 collectproto->get_collectinfo (collection, collectinfo, err, logout); 845 if (err != noError) collectinfo.clear(); 846 } 847 848 // get browsers to process OID 849 text_t OID = args["d"]; 850 if (OID.empty()) OID = args["cl"]; 851 text_tset metadata; 852 FilterResponse_t response; 853 metadata.insert ("classifytype"); 854 if (get_info (OID + ".pr", args["c"], metadata, false, collectproto, response, logout)) { 855 browserclass *b = 856 browsers.getbrowser (response.docInfo[0].metadata["classifytype"].values[0]); 857 b->processOID (args); 858 } 859 860 // translate "d", "cl", and "hp" arguments if required 861 translate_OIDs (args, collectproto, logout); 841 842 // get collection information 843 collectinfo.clear(); 844 if (!collection.empty()) { 845 comerror_t err; 846 collectproto->get_collectinfo (collection, collectinfo, err, logout); 847 if (err != noError) collectinfo.clear(); 848 } 849 850 // get browsers to process OID 851 text_t OID = args["d"]; 852 if (OID.empty()) OID = args["cl"]; 853 if (!OID.empty()) { 854 text_tset metadata; 855 text_tarray OIDs; 856 OIDs.push_back (OID); 857 if (!is_top(OID)) OIDs.push_back (OID + ".pr"); 858 FilterResponse_t response; 859 metadata.insert ("childtype"); 860 if (get_info (OIDs, args["c"], metadata, false, collectproto, response, logout)) { 861 text_t classifytype = response.docInfo[0].metadata["childtype"].values[0]; 862 if (classifytype.empty()) 863 classifytype = response.docInfo[1].metadata["childtype"].values[0]; 864 browserclass *b = browsers.getbrowser (classifytype); 865 b->processOID (args, collectproto, logout); 866 } 867 } 868 869 // translate "d", "cl", and "hp" arguments if required 870 translate_OIDs (args, collectproto, logout); 871 } 862 872 863 873 // produce the page using the desired action … … 1003 1013 1004 1014 // translate_OIDs translates the "d", "cl", and "hp" arguments to their correct values 1005 // if they use the tricky ".fc", ".lc" type syntax. also sorts out the "d" argument 1006 // if the goto page ("gp") argument was used 1015 // if they use the tricky ".fc", ".lc" type syntax. 1007 1016 void receptionist::translate_OIDs (cgiargsclass &args, recptproto *collectproto, 1008 1017 ostream &logout) { … … 1015 1024 text_t &arg_hp = args["hp"]; 1016 1025 text_t &collection = args["c"]; 1017 text_t &arg_gp = args["gp"];1018 1026 1019 1027 // do a call to translate OIDs if required … … 1044 1052 collectproto->filter (collection, request, response, err, logout); 1045 1053 arg_hp = response.docInfo[0].OID; 1046 }1047 1048 // if the "gp" (go to page) argument is set we need to set1049 // the "d" argument to the corresponding page1050 if ((!arg_d.empty()) && (!arg_gp.empty()) && (is_number (arg_gp))) {1051 text_t top;1052 get_top (arg_d, top);1053 text_tset metadata;1054 metadata.insert ("Title");1055 bool getParents = false;1056 get_children (top, collection, metadata, getParents, collectproto, response, logout);1057 ResultDocInfo_tarray::iterator dochere = response.docInfo.begin();1058 ResultDocInfo_tarray::iterator docend = response.docInfo.end();1059 while (dochere != docend) {1060 if ((*dochere).metadata["Title"].values[0] == arg_gp) {1061 arg_d = (*dochere).OID;1062 break;1063 }1064 dochere ++;1065 }1066 1054 } 1067 1055 }
Note:
See TracChangeset
for help on using the changeset viewer.