Index: /trunk/gsdl/perllib/classify/AllList.pm
===================================================================
--- /trunk/gsdl/perllib/classify/AllList.pm	(revision 8221)
+++ /trunk/gsdl/perllib/classify/AllList.pm	(revision 8221)
@@ -0,0 +1,69 @@
+use BasClas;
+package AllList;
+
+sub BEGIN {
+    @ISA = ('BasClas');
+}
+
+my $arguments = 
+    [
+     ];
+
+my $options = { 'name'     => "AllList",
+	        'abstract' => "no",
+	        'inherits' => "yes" };
+
+sub new {
+    my $class = shift (@_);
+    my $self  = new BasClas($class, @_);
+
+    $self->{'list'} = [];
+    $self->{'title'} = "All Documents";
+
+    return bless $self, $class;
+}
+
+sub init {
+    my $self = shift (@_);
+}
+
+sub classify {
+    my $self = shift (@_);
+    my ($doc_obj) = @_;
+
+    my $doc_OID = $doc_obj->get_OID();
+    
+    push (@{$self->{'list'}}, $doc_OID);
+
+    return;
+}
+
+sub get_classify_info {
+    my $self = shift(@_);
+    my ($no_thistype) = @_;
+
+    my %classifyinfo = ('childtype'   =>'VList',
+			'Title'       =>$self->{'title'},
+			'contains'    =>[],
+			'classifyOID' =>"oai");
+    $classifyinfo{'thistype'} = 'Invisible';
+    @list = @{$self->{'list'}};
+
+    my $seqNo = 0;
+    foreach $OID (@list) {
+	my $hashref={};
+	$hashref->{'OID'}=$OID;
+       
+	my %tempinfo=('childtype'=>'VList',
+		      'Title'=>$self->{'title'},
+		      'classifyOID' =>"oai.$seqNo",
+		      'contains'    =>[]);
+
+	push (@{$tempinfo{'contains'}}, $hashref);
+
+	push (@{$classifyinfo{'contains'}}, \%tempinfo);
+	$seqNo ++;
+    }
+
+    return \%classifyinfo;
+}
Index: /trunk/gsdl/perllib/classify/BasClas.pm
===================================================================
--- /trunk/gsdl/perllib/classify/BasClas.pm	(revision 8220)
+++ /trunk/gsdl/perllib/classify/BasClas.pm	(revision 8221)
@@ -220,4 +220,5 @@
 
     $self->{'outhandle'} = STDERR;
+    $self->{'idnum'} = -1;
     
     $self->{'option_list'} = [ $options ];
@@ -248,4 +249,17 @@
 sub init {
     my $self = shift (@_);
+
+    $self->{'supportsmemberof'} = &supports_memberof();
+}
+
+sub set_number {
+    my $self = shift (@_);
+    my ($id)   = @_;
+    $self->{'idnum'} = $id;
+}
+
+sub get_number {
+    my $self = shift (@_);
+    return $self->{'idnum'};
 }
 
@@ -263,4 +277,10 @@
     my $outhandle = $self->{'outhandle'};
     &gsprintf($outhandle, "BasClass::get_classify_info {common.must_be_implemented}\n");
+}
+
+sub supports_memberof {
+    my $self = shift(@_);
+
+    return "false";
 }
 
Index: /trunk/gsdl/perllib/classify/Hierarchy.pm
===================================================================
--- /trunk/gsdl/perllib/classify/Hierarchy.pm	(revision 8220)
+++ /trunk/gsdl/perllib/classify/Hierarchy.pm	(revision 8221)
@@ -201,4 +201,8 @@
 	    push (@{$self->{'locatorlist'}->{$self->{'descriptorlist'}->{$metaelement}}->{'contents'}}, 
 		  [$doc_OID, $sortmeta]);
+	    my $localid = $self->{'descriptorlist'}->{$metaelement};
+	    my $classid = $self->get_number();
+
+	    $doc_obj->add_metadata($doc_obj->get_top_section(), "memberof", "CL$classid.$localid");
 	}
     }
@@ -234,4 +238,10 @@
 }
 
+sub supports_memberof {
+    my $self = shift(@_);
+
+    return "true";
+}
+
 sub get_OID_entry {
     my $self = shift (@_);
@@ -266,8 +276,10 @@
     my $self = shift (@_);
     my ($title, $childtype, $thistype) = @_;
-
+    my $memberof = &supports_memberof();
+    
     # organise into classification structure
     my %classifyinfo = ('childtype'=>$childtype,
 			'Title'=>$title,
+			'supportsmemberof'=>$memberof,
 			'contains'=>[]);
     $classifyinfo{'thistype'} = $thistype 
Index: /trunk/gsdl/perllib/classify/List.pm
===================================================================
--- /trunk/gsdl/perllib/classify/List.pm	(revision 8220)
+++ /trunk/gsdl/perllib/classify/List.pm	(revision 8221)
@@ -208,4 +208,6 @@
 	$self->{'list'}->{$doc_OID} = $metavalue;
     }
+    my $id = $self->get_number();
+    $doc_obj->add_metadata($doc_obj->get_top_section(), "memberof", "CL$id");
 }
 
@@ -215,4 +217,5 @@
     my ($no_thistype) = @_;
     $no_thistype = 0 unless defined $no_thistype;
+    my $memberof = &supports_memberof();
 
     my @list = ();
@@ -231,4 +234,6 @@
 			'contains'=>[]);
     $classifyinfo{'thistype'} = 'Invisible' unless $no_thistype;
+    # always supports memberof
+    $classifyinfo{'supportsmemberof'} = $memberof;
 
     foreach $OID (@list) {
@@ -246,4 +251,9 @@
 }
 
+sub supports_memberof {
+    my $self = shift(@_);
+
+    return "true";
+}
 
 1;
