--- loncom/interface/lonparmset.pm 2006/09/27 23:30:12 1.337
+++ loncom/interface/lonparmset.pm 2006/10/13 17:17:14 1.341
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set parameters for assessments
#
-# $Id: lonparmset.pm,v 1.337 2006/09/27 23:30:12 banghart Exp $
+# $Id: lonparmset.pm,v 1.341 2006/10/13 17:17:14 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -3215,23 +3215,126 @@ sub output_row {
}
return ($output);
}
+sub order_meta_fields {
+ my ($r)=@_;
+ my $idx = 1;
+ my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ $r->print(&Apache::loncommon::start_page('Order Metadata Fields'));
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata Fields'));
+ if ($env{'form.storeorder'}) {
+ my $newpos = $env{'form.newpos'} - 1;
+ my $currentpos = $env{'form.currentpos'} - 1;
+ my @neworder = ();
+ my @oldorder = split /,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'};
+ my $i;
+ if ($newpos > $currentpos) {
+ # moving stuff up
+ for ($i=0;$i<$currentpos;$i++) {
+ $neworder[$i]=$oldorder[$i];
+ }
+ for ($i=$currentpos;$i<$newpos;$i++) {
+ $neworder[$i]=$oldorder[$i+1];
+ }
+ $neworder[$newpos]=$oldorder[$currentpos];
+ for ($i=$newpos+1;$i<=$#oldorder;$i++) {
+ $neworder[$i]=$oldorder[$i];
+ }
+ } else {
+ # moving stuff down
+ for ($i=0;$i<$newpos;$i++) {
+ $neworder[$i]=$oldorder[$i];
+ }
+ $neworder[$newpos]=$oldorder[$currentpos];
+ for ($i=$newpos+1;$i<$currentpos+1;$i++) {
+ $neworder[$i]=$oldorder[$i-1];
+ }
+ for ($i=$currentpos+1;$i<=$#oldorder;$i++) {
+ $neworder[$i]=$oldorder[$i];
+ }
+ }
+ my $ordered_fields = join ",", @neworder;
+ $env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'} = $ordered_fields;
+ my $put_result = &Apache::lonnet::put('environment',
+ {'metadata.addedorder'=>$ordered_fields},$dom,$crs);
+ }
+ my $fields = &get_added_meta_fieldnames();
+ my $ordered_fields;
+ my @fields_in_order = split /,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'};
+ if (!@fields_in_order) {
+ # no order found, pick sorted order then create metadata.addedorder key.
+ foreach my $key (sort keys %$fields) {
+ push @fields_in_order, $key;
+ $ordered_fields = join ",", @fields_in_order;
+ }
+ my $put_result = &Apache::lonnet::put('environment',
+ {'metadata.addedorder'=>$ordered_fields},$dom,$crs);
+ }
+ $r->print('
');
+ my $num_fields = scalar(@fields_in_order);
+ foreach my $key (@fields_in_order) {
+ $r->print('');
+ $r->print(' | ');
+ $r->print('');
+ $r->print('');
+ $r->print('');
+ $r->print($$fields{$key}.' |
');
+ $idx ++;
+ }
+ $r->print('
');
+ return 'ok';
+}
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'})) {
+ if (exists($env{'form.undelete'})) {
+ my @meta_fields = &Apache::loncommon::get_env_multiple('form.undelete');
+ foreach my $meta_field(@meta_fields) {
+ my $options = $env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.options'};
+ $options =~ s/deleted//;
+ $options =~ s/,,/,/;
+ my $put_result = &Apache::lonnet::put('environment',
+ {'metadata.'.$meta_field.'.options'=>$options},$dom,$crs);
+
+ $r->print('Undeleted Metadata Field '.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}." with result ".$put_result.'
');
+ }
+ $r->print('');
+ }
+ $r->print('
Or you may enter a new metadata field name.');
@@ -3303,6 +3406,10 @@ sub setrestrictmeta {
+
+
ENDenv
$r->print(&Apache::loncommon::end_page());
return 'ok';
@@ -3310,7 +3417,6 @@ ENDenv
##################################################
sub get_added_meta_fieldnames {
my %fields;
- my ($default_fields) = @_;
foreach my $key(%env) {
if ($key =~ m/\.metadata\.(.+)\.added$/) {
my $field_name = $1;
@@ -3320,6 +3426,20 @@ sub get_added_meta_fieldnames {
}
return \%fields;
}
+sub get_deleted_meta_fieldnames {
+ my %fields;
+ my ($default_fields) = @_;
+ foreach my $key(%env) {
+ if ($key =~ m/\.metadata\.(.+)\.added$/) {
+ my $field_name = $1;
+ if ($env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.options'} =~ m/deleted/) {
+ my ($display_field_name) = $env{$key};
+ $fields{$field_name} = $display_field_name;
+ }
+ }
+ }
+ return \%fields;
+}
sub defaultsetter {
my ($r) = @_;
@@ -3768,6 +3888,10 @@ sub handler {
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
text=>"Add Metadata Field"});
&addmetafield($r);
+ } elsif ($env{'form.action'} eq 'ordermetadata' && $parm_permission) {
+ &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=addmetadata',
+ text=>"Add Metadata Field"});
+ &order_meta_fields($r);
} elsif ($env{'form.action'} eq 'setrestrictmeta' && $parm_permission) {
&Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setrestrictmeta',
text=>"Restrict Metadata"});