Changeset 10218 for trunk/gsdl/perllib/classify/List.pm
- Timestamp:
- 2005-07-06T15:27:45+12:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/perllib/classify/List.pm
r8852 r10218 44 44 'desc' => "{BasClas.buttonname}", 45 45 'type' => "string", 46 'deft' => "{BasClas.metadata.deft}",46 # 'deft' => "{BasClas.metadata.deft}", 47 47 'reqd' => "no" }, 48 48 { 'name' => "sort", 49 49 'desc' => "{List.sort}", 50 50 'type' => "string", 51 'deft' => "{BasClas.metadata.deft}",51 # 'deft' => "{BasClas.metadata.deft}", 52 52 'reqd' => "no" } ]; 53 53 … … 60 60 61 61 sub new { 62 my $class = shift (@_); 63 my $self = new BasClas($class, @_); 64 65 # 14-05-02 To allow for proper inheritance of arguments - John Thompson 66 my $option_list = $self->{'option_list'}; 67 push( @{$option_list}, $options ); 68 69 if ($self->{'info_only'}) { 70 # created from classinfo.pl - don't need to parse the arguments 71 return bless $self, $class; 72 } 73 74 my ($metadata, $title, $sortname, $list); 75 76 if (!parsargv::parse(\@_, 77 q^metadata/.*/^, \$metadata, 78 q^buttonname/.*/^, \$title, 79 q^sort/.*/^, \$sortname, 80 "allow_extra_options")) { 81 82 print STDERR "\nIncorrect options passed to $class, check your collect.cfg file\n"; 83 $self->print_txt_usage(""); # Use default resource bundle 84 die "\n"; 85 } 86 my @meta_list; 87 my $meta1; 88 89 if ($metadata) { 90 @meta_list = split(/,/, $metadata); 62 my ($class) = shift (@_); 63 64 my ($classifierslist,$inputargs,$hashArgOptLists) = @_; 65 push(@$classifierslist, $class); 66 67 if(defined $arguments){ push(@{$hashArgOptLists->{"ArgList"}},@{$arguments});} 68 if(defined $options) { push(@{$hashArgOptLists->{"OptList"}},$options)}; 69 70 my $self = (defined $hashArgOptLists)? new BasClas($classifierslist,$inputargs,$hashArgOptLists): new BasClas($classifierslist,$inputargs); 71 72 # Transfer value from Auto Parsing to the variable name that used in previous GreenStone. 73 my (@meta_list,$meta1); 74 print STDERR "new List\n"; 75 if ($self->{"metadata"}) { 76 print STDERR "List: splitting metadata, ".$self->{"metadata"}."\n"; 77 @meta_list = split(/,/, $self->{"metadata"}); 91 78 $meta1 = $meta_list[0]; 92 } else { 93 $metadata = undef; 79 $self->{'meta_list'} = \@meta_list; 80 } else { 94 81 $meta1=undef; 95 82 @meta_list = undef; 96 83 } 97 84 98 if (!$title) { 99 if (defined ($meta1)) { 100 $title = $meta1; 101 } else { 102 $title = 'List'; 103 } 104 } 105 106 # sortname is handled a bit differently - kjdon 85 if (!$self->{"buttonname"}) { 86 if (defined ($self->{'metadata'})) { 87 $self->{"buttonname"} = $self->generate_title_from_metadata($self->{'metadata'}); 88 } else { 89 $self->{"buttonname"} = 'List'; 90 } 91 } 92 93 # Further setup 94 # $self->{"sort"} is handled a bit differently - kjdon 107 95 # undef means to sort, but use the metadata value from -metadata 108 96 # because there is no one metadata value to get for sorting when 109 97 # we have a list of possible metadata 110 # to get no sorting, set sortname = 'nosort' 111 if (!$sortname) { 112 if (defined ($metadata)) { 113 $sortname = undef; 114 } else { 115 $sortname = "nosort"; 116 } 117 } 98 # to get no sorting, set $self->{"sort"} = 'nosort' 99 if (!$self->{"sort"}) { 100 print STDERR "no sorting\n"; 101 if (defined ($self->{"metadata"})) { 102 $self->{"sort"} = undef; 103 print STDERR "setting no meta\n"; 104 } else { 105 $self->{"sort"} = "nosort"; 106 } 107 } 108 if (defined $self->{"sort"} && $self->{"sort"} eq "nosort") { 109 $self->{'list'} = []; 110 } else { 111 $self->{'list'} = {}; 112 } 113 114 # Clean out the unused keys 115 delete $self->{"metadata"}; # Delete this key 118 116 119 if (defined $sortname && $sortname eq "nosort") {120 $list = [];121 } else {122 $list = {};123 }124 125 $self->{'list'} = $list;126 if (defined $metadata) {127 $self->{'meta_list'} = \@meta_list;128 }129 $self->{'title'} = $title;130 $self->{'sortname'} = $sortname;131 132 117 return bless $self, $class; 133 118 } … … 146 131 # are we sorting the list?? 147 132 my $nosort = 0; 148 if (defined $self->{'sort name'} && $self->{'sortname'} eq "nosort") {133 if (defined $self->{'sort'} && $self->{'sort'} eq "nosort") { 149 134 $nosort = 1; 150 135 } … … 195 180 196 181 #check for a sort element other than our metadata 197 if (defined $self->{'sort name'}) {182 if (defined $self->{'sort'}) { 198 183 my $sortmeta; 199 if ($self->{'sort name'} =~ /^filename$/i) {184 if ($self->{'sort'} =~ /^filename$/i) { 200 185 $sortmeta = $doc_obj->get_source_filename(); 201 186 } else { 202 $sortmeta = $doc_obj->get_metadata_element($doc_obj->get_top_section(), $self->{'sort name'});187 $sortmeta = $doc_obj->get_metadata_element($doc_obj->get_top_section(), $self->{'sort'}); 203 188 if (defined $sortmeta) { 204 $sortmeta = &sorttools::format_metadata_for_sorting($self->{'sort name'}, $sortmeta, $doc_obj);189 $sortmeta = &sorttools::format_metadata_for_sorting($self->{'sort'}, $sortmeta, $doc_obj); 205 190 } 206 191 } … … 225 210 226 211 my @list = (); 227 if (defined $self->{'sort name'} && $self->{'sortname'} eq "nosort") {212 if (defined $self->{'sort'} && $self->{'sort'} eq "nosort") { 228 213 @list = @{$self->{'list'}}; 229 214 } else { … … 233 218 } 234 219 } 235 236 220 # organise into classification structure 237 221 my %classifyinfo = ('childtype'=>'VList', 238 'Title'=>$self->{' title'},222 'Title'=>$self->{'buttonname'}, 239 223 'contains'=>[]); 240 224 $classifyinfo{'thistype'} = 'Invisible' unless $no_thistype;
Note:
See TracChangeset
for help on using the changeset viewer.