--- loncom/interface/lonparmset.pm 2006/08/18 22:39:37 1.333 +++ loncom/interface/lonparmset.pm 2006/09/08 20:49:19 1.335 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.333 2006/08/18 22:39:37 albertel Exp $ +# $Id: lonparmset.pm,v 1.335 2006/09/08 20:49:19 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3210,14 +3210,34 @@ sub output_row { } return ($output); } - +sub addmetafield { + my ($r)=@_; + $r->print(&Apache::loncommon::start_page('Add Metadata Field')); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Add Metadata Field')); + my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; + if (exists($env{'form.fieldname'})) { + my $meta_field = $env{'form.fieldname'}; + my $display_field = $env{'form.fieldname'}; + $meta_field =~ s/\W/_/g; + my $put_result = &Apache::lonnet::put('environment', + {'metadata.'.$meta_field.'.values'=>"", + 'metadata.'.$meta_field.'.added'=>"$display_field", + 'metadata.'.$meta_field.'.options'=>""},$dom,$crs); + $r->print('Added new Metadata Field '.$env{'form.fieldname'}." with result ".$put_result); + } else { + $r->print('
print('
'); + $r->print(''); + $r->print('
'); + } +} sub setrestrictmeta { my ($r)=@_; my $next_meta; my $output; my $item_num; my $put_result; - $r->print(&Apache::loncommon::start_page('Restrict Metadata')); $r->print(&Apache::lonhtmlcommon::breadcrumbs('Restrict Metadata')); my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; @@ -3252,25 +3272,44 @@ sub setrestrictmeta { } &Apache::lonnet::coursedescription($env{'request.course.id'}, {'freshen_cache' => 1}); + # Get the default metadata fields my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio'); + # Now get possible added metadata fields + my $added_metadata_fields = &get_added_meta_fieldnames(\%metadata_fields); foreach my $field (sort(keys(%metadata_fields))) { - &Apache::lonnet::logthis ($field); if ($field ne 'courserestricted') { $output.= &output_row($r, $field, $metadata_fields{$field}); } } + foreach my $field (sort(keys(%$added_metadata_fields))) { + $output.= &output_row($r, $field, $$added_metadata_fields{$field}); + } $r->print(<

$output +
+

+
ENDenv $r->print(&Apache::loncommon::end_page()); return 'ok'; } ################################################## - +sub get_added_meta_fieldnames { + my %fields; + my ($default_fields) = @_; + foreach my $key(%env) { + if ($key =~ m/\.metadata\.(.+)\.added$/) { + my $field_name = $1; + my ($display_field_name) = $env{$key}; + $fields{$field_name} = $display_field_name; + } + } + return \%fields; +} sub defaultsetter { my ($r) = @_; @@ -3715,6 +3754,10 @@ sub handler { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview', text=>"Overview Mode"}); &overview($r); + } elsif ($env{'form.action'} eq 'addmetadata' && $parm_permission) { + &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata', + text=>"Add Metadata Field"}); + &addmetafield($r); } elsif ($env{'form.action'} eq 'setrestrictmeta' && $parm_permission) { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta', text=>"Restrict Metadata"});