--- loncom/interface/lonparmset.pm 2006/10/07 20:02:16 1.339 +++ loncom/interface/lonparmset.pm 2006/11/15 22:33:13 1.346 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.339 2006/10/07 20:02:16 banghart Exp $ +# $Id: lonparmset.pm,v 1.346 2006/11/15 22:33:13 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2193,7 +2193,7 @@ sub crsenv { ' Tabloid [11x17 in], Executive [7 1/2x10 in], A2 [420x594 mm],'. ' A3 [297x420 mm], A4 [210x297 mm], A5 [148x210 mm], A6 [105x148 mm])', 'print_header_format' - => 'Print header format; substitutions: %n student name %c course id %a assignment', + => 'Print header format; substitutions: %n student name %c course id %a assignment note, numbers after the % limit the field size', 'anonymous_quiz' => ''.&mt('Anonymous quiz/exam').'
'. ' ('.&mt('yes').' '.&mt('to avoid print students names').' )', @@ -3188,8 +3188,15 @@ ENDMAINFORMHEAD } ### Set portfolio metadata sub output_row { - my ($r, $field_name, $field_text, $added_flag) = @_; + my ($r, $field_name, $field_text, $added_flag, $alt_row) = @_; + my $row_class; + if ($alt_row) { + $row_class = ' class="LC_metadata_light" '; + } else { + $row_class = ' class="LC_metadata_dark" '; + } my $output; + $output = ""; my $options=$env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.options'}; my $values=$env{'course.'.$env{'request.course.id'}.'.metadata.'.$field_name.'.values'}; if (!defined($options)) { @@ -3197,9 +3204,10 @@ sub output_row { $values = ''; } if (!($options =~ /deleted/)) { - $output.=''.$field_text.':'; - $output.='
'; - + $output = ""; + $output .= ''.$field_text.':'; + $output .= ''; + $output .= "\n"; my @options= ( ['active', 'Show to student'], ['onlyone','Student may select only one choice'], ['stuadd', 'Student may type choices']); @@ -3208,13 +3216,96 @@ sub output_row { } foreach my $opt (@options) { my $checked = ($options =~ m/$opt->[0]/) ? ' checked="checked" ' : '' ; - $output.=(' 'x5).' '."\n"; } + } 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')); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>"/adm/parmset?action=setrestrictmeta", + text=>"Restrict Metadata"}, + {text=>"Order Metadata"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Order Metadata')); + 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; + my $put_result = &Apache::lonnet::put('environment', + {'metadata.addedorder'=>$ordered_fields},$dom,$crs); + &Apache::lonnet::appenv('course.'.$env{'request.course.id'}.'.metadata.addedorder' => $ordered_fields); + } + 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(''); + $idx ++; + } + $r->print('
'); + $r->print('
'); + $r->print('
'); + $r->print(''); + $r->print(''); + $r->print(''); + $r->print($$fields{$key}.'
'); + return 'ok'; +} sub addmetafield { my ($r)=@_; $r->print(&Apache::loncommon::start_page('Add Metadata Field')); @@ -3310,23 +3401,31 @@ sub setrestrictmeta { my %metadata_fields = &Apache::lonmeta::fieldnames('portfolio'); # Now get possible added metadata fields my $added_metadata_fields = &get_added_meta_fieldnames(\%metadata_fields); + my $row_alt = 1; + $output .= ''; foreach my $field (sort(keys(%metadata_fields))) { if ($field ne 'courserestricted') { - $output.= &output_row($r, $field, $metadata_fields{$field}); + $row_alt = $row_alt ? 0 : 1; + $output.= &output_row($r, $field, $metadata_fields{$field}, undef, $row_alt); } } my $added_flag = 1; foreach my $field (sort(keys(%$added_metadata_fields))) { - $output.= &output_row($r, $field, $$added_metadata_fields{$field},$added_flag); + $row_alt = $row_alt ? 0 : 1; + $output.= &output_row($r, $field, $$added_metadata_fields{$field},$added_flag, $row_alt); } + $output .= "
"; $r->print(< -

$output - +
-

- + + +
+
+
+
ENDenv $r->print(&Apache::loncommon::end_page()); @@ -3335,7 +3434,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; @@ -3807,6 +3905,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"});