Index: /gsdl/trunk/src/recpt/dynamicclassifieraction.cpp
===================================================================
--- /gsdl/trunk/src/recpt/dynamicclassifieraction.cpp	(revision 16096)
+++ /gsdl/trunk/src/recpt/dynamicclassifieraction.cpp	(revision 16097)
@@ -424,4 +424,5 @@
 
   // Display the child classifier nodes
+  FilterResponse_t child_classifier_nodes_response;
   map<text_t, int, lttext_t>::iterator child_classifier_nodes_iterator = child_classifier_nodes.begin();
   while (child_classifier_nodes_iterator != child_classifier_nodes.end())
@@ -432,26 +433,29 @@
       child_classifier_node_OID = classifier_node_OID + "|" + child_classifier_node_OID;
     }
-    text_t child_classifier_node_label = (*child_classifier_nodes_iterator).first;
-    int child_classifier_node_numleafdocs = (*child_classifier_nodes_iterator).second;
-    display_classifier_node (child_classifier_node_OID, child_classifier_node_label, child_classifier_node_numleafdocs, classifier_node_indent, args, collectproto, browsers, disp, outconvert, textout, logout);
+
+    ResultDocInfo_t child_classifier_node;
+    child_classifier_node.OID = child_classifier_node_OID;
+    child_classifier_node.metadata["doctype"].values.push_back ("classify");
+    child_classifier_node.metadata["haschildren"].values.push_back ("1");
+    child_classifier_node.metadata["numleafdocs"].values.push_back ((*child_classifier_nodes_iterator).second);
+    child_classifier_node.metadata["Title"].values.push_back ((*child_classifier_nodes_iterator).first);
+    child_classifier_nodes_response.docInfo.push_back (child_classifier_node);
+
     child_classifier_nodes_iterator++;
   }
-}
-
-
-void dynamicclassifieraction::display_classifier_node (text_t classifier_node_OID, text_t classifier_node_label,
-						       text_t classifier_node_numleafdocs, int classifier_node_indent,
-						       cgiargsclass &args, recptproto *collectproto,
-						       browsermapclass *browsers, displayclass &disp,
-						       outconvertclass &outconvert, ostream &textout,
-						       ostream &logout)
-{
-  // Generate the ResultDocInfo_t containing the information for the classifier node
-  ResultDocInfo_t classifier_node;
-  classifier_node.OID = classifier_node_OID;
-  classifier_node.metadata["doctype"].values.push_back ("classify");
-  classifier_node.metadata["haschildren"].values.push_back ("1");
-  classifier_node.metadata["numleafdocs"].values.push_back (classifier_node_numleafdocs);
-  classifier_node.metadata["Title"].values.push_back (classifier_node_label);
+
+  display_classifier_nodes (child_classifier_nodes_response, classifier_node_indent, args, collectproto, browsers, disp, outconvert, textout, logout);
+}
+
+
+void dynamicclassifieraction::display_classifier_nodes (FilterResponse_t classifier_nodes_response,
+						        int classifier_node_indent,
+							cgiargsclass &args, recptproto *collectproto,
+							browsermapclass *browsers, displayclass &disp,
+							outconvertclass &outconvert, ostream &textout,
+							ostream &logout)
+{
+  // Check there are some classifier nodes to display
+  if (classifier_nodes_response.docInfo.empty()) return;
 
   // Get the format statement for this classifier if there is one, or use the browser's default otherwise
@@ -470,16 +474,18 @@
   bool use_table = is_table_content (formatlistptr);
 
-  // Display the classifier node
-  bptr->output_section_group (classifier_node, args, args["c"], classifier_node_indent, formatlistptr, use_table, metadata, getParents, collectproto, disp, outconvert, textout, logout);
-}
-
-
-void dynamicclassifieraction::display_classifier_nodes (FilterResponse_t classifier_nodes_response,
-						        int classifier_node_indent,
-							cgiargsclass &args, recptproto *collectproto,
-							browsermapclass *browsers, displayclass &disp,
-							outconvertclass &outconvert, ostream &textout,
-							ostream &logout)
-{
+  // Display the classifier nodes
+  bptr->output_section_group (classifier_nodes_response, args, args["c"], classifier_node_indent, formatlistptr, use_table, metadata, getParents, collectproto, disp, outconvert, textout, logout);
+}
+
+
+void dynamicclassifieraction::display_document_nodes (FilterResponse_t documents_response, int document_nodes_indent,
+						      cgiargsclass &args, recptproto *collectproto,
+						      browsermapclass *browsers, displayclass &disp,
+						      outconvertclass &outconvert, ostream &textout,
+						      ostream &logout)
+{
+  // Check there are some documents to display
+  if (documents_response.docInfo.empty()) return;
+
   // Get the format statement for this classifier if there is one, or use the browser's default otherwise
   text_t formatstring;
@@ -497,30 +503,4 @@
   bool use_table = is_table_content (formatlistptr);
 
-  // Display the classifier nodes
-  bptr->output_section_group (classifier_nodes_response, args, args["c"], classifier_node_indent, formatlistptr, use_table, metadata, getParents, collectproto, disp, outconvert, textout, logout);
-}
-
-
-void dynamicclassifieraction::display_document_nodes (FilterResponse_t documents_response, int document_nodes_indent,
-						      cgiargsclass &args, recptproto *collectproto,
-						      browsermapclass *browsers, displayclass &disp,
-						      outconvertclass &outconvert, ostream &textout,
-						      ostream &logout)
-{
-  // Get the format statement for this classifier if there is one, or use the browser's default otherwise
-  text_t formatstring;
-  text_t classifier_type = "VList";
-  browserclass *bptr = browsers->getbrowser (classifier_type);
-  ColInfoResponse_t *cinfo = recpt->get_collectinfo_ptr (collectproto, args["c"], logout);
-  if (!get_formatstring (args["dcl"], classifier_type, cinfo->format, formatstring))
-  {
-    formatstring = bptr->get_default_formatstring();
-  }
-  format_t *formatlistptr = new format_t();
-  text_tset metadata;
-  bool getParents = false;
-  parse_formatstring (formatstring, formatlistptr, metadata, getParents);
-  bool use_table = is_table_content (formatlistptr);
-
   // Request the necessary metadata for displaying the documents
   text_tarray document_OIDs;
Index: /gsdl/trunk/src/recpt/dynamicclassifieraction.h
===================================================================
--- /gsdl/trunk/src/recpt/dynamicclassifieraction.h	(revision 16096)
+++ /gsdl/trunk/src/recpt/dynamicclassifieraction.h	(revision 16097)
@@ -94,4 +94,11 @@
 				ostream &logout);
 
+  void display_classifier_nodes (FilterResponse_t classifier_nodes_response,
+				 int classifier_node_indent,
+				 cgiargsclass &args, recptproto *collectproto,
+				 browsermapclass *browsers, displayclass &disp,
+				 outconvertclass &outconvert, ostream &textout,
+				 ostream &logout);
+
   void display_document_nodes (FilterResponse_t documents_response, int document_nodes_indent,
 			       cgiargsclass &args, recptproto *collectproto,
