--- loncom/interface/lonparmset.pm 2005/06/05 17:24:04 1.210 +++ loncom/interface/lonparmset.pm 2005/06/06 02:25:09 1.211 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.210 2005/06/05 17:24:04 www Exp $ +# $Id: lonparmset.pm,v 1.211 2005/06/06 02:25:09 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -668,6 +668,7 @@ sub extractResourceInformation { my $maptitles=shift; my $uris=shift; my $keyorder=shift; + my $defkeytype=shift; my $keyordercnt=100; @@ -699,6 +700,7 @@ sub extractResourceInformation { my $parmdis = $display; $parmdis =~ s/\[Part.*$//g; $$allparms{$name}=$parmdis; + $$defkeytype{$name}=&Apache::lonnet::metadata($srcf,$key.'.type'); # # allparts is a hash of all parts # @@ -741,7 +743,7 @@ sub extractResourceInformation { ################################################## sub parmmenu { - my ($r,$allparms,$pscat)=@_; + my ($r,$allparms,$pscat,$keyorder)=@_; my $tempkey; $r->print(< @@ -798,8 +800,7 @@ ENDSCRIPT $r->print(); $r->print("\n"); my $cnt=0; - foreach $tempkey (sort { $$allparms{$a} cmp $$allparms{$b} } - keys %{$allparms} ) { + foreach $tempkey (&keysindisplayorder($allparms,$keyorder)) { $r->print("\n'); } $r->print('
print('value="'.$tempkey.'"'); if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) { @@ -829,7 +830,7 @@ ENDSCRIPT sub partmenu { my ($r,$allparts,$psprt)=@_; - $r->print(''); $r->print(''); @@ -886,10 +887,10 @@ ENDMENU } sub displaymenu { - my ($r,$allparms,$allparts,$pscat,$psprt)=@_; + my ($r,$allparms,$allparts,$pscat,$psprt,$keyorder)=@_; $r->print('
'.&mt('Select Parameters to View').''. &mt('Select Parts to View').'
'); - &parmmenu($r,$allparms,$pscat); + &parmmenu($r,$allparms,$pscat,$keyorder); $r->print(''); &partmenu($r,$allparts,$psprt); $r->print('
'); @@ -923,6 +924,48 @@ sub levelmenu { $r->print(""); } + +sub sectionmenu { + my ($r,$selectedsections)=@_; + + my ($classlist,$field_names) = + &Apache::loncoursedata::get_classlist( + $env{'request.course.id'}, + $env{'course.'.$env{'request.course.id'}.'.domain'}, + $env{'course.'.$env{'request.course.id'}.'.num'}); + my %Sections=(); + while (my ($student,$student_data) = each (%$classlist)) { + my $studenthash = (); + for (my $i=0; $i< scalar(@$field_names);$i++) { + my $field = $field_names->[$i]; + # Store the data + $studenthash->{$field}=$student_data->[$i]; + } + my $section = $studenthash->{'section'}; + if (! defined($section) || $section =~/^\s*$/ || $section == -1) { + $studenthash->{'section'} = 'none'; + $section = $studenthash->{'section'}; + } + $Sections{$section}++; + } + my @Sections = sort {$a cmp $b} keys(%Sections); + unshift(@Sections,'all'); + + $r->print('\n"); +} + sub keysplit { my $keyp=shift; return (split(/\,/,$keyp)); @@ -935,6 +978,34 @@ sub keysinorder { } (keys %{$name}); } +sub keysindisplayorder { + my ($name,$keyorder)=@_; + return sort { + $$keyorder{'parameter_0_'.$a} <=> $$keyorder{'parameter_0_'.$b}; + } (keys %{$name}); +} + +sub standardkeyorder { + return ('parameter_0_opendate' => 1, + 'parameter_0_duedate' => 2, + 'parameter_0_answerdate' => 3, + 'parameter_0_interval' => 4, + 'parameter_0_weight' => 5, + 'parameter_0_maxtries' => 6, + 'parameter_0_hinttries' => 7, + 'parameter_0_contentopen' => 8, + 'parameter_0_contentclose' => 9, + 'parameter_0_type' => 10, + 'parameter_0_problemstatus' => 11, + 'parameter_0_hiddenresource' => 12, + 'parameter_0_hiddenparts' => 13, + 'parameter_0_display' => 14, + 'parameter_0_ordered' => 15, + 'parameter_0_tol' => 16, + 'parameter_0_sig' => 17, + 'parameter_0_turnoffunit' => 18); +} + ################################################## ################################################## @@ -998,24 +1069,8 @@ sub assessparms { # # Order in which these parameters will be displayed # - my %keyorder=('parameter_0_opendate' => 1, - 'parameter_0_duedate' => 2, - 'parameter_0_answerdate' => 3, - 'parameter_0_interval' => 4, - 'parameter_0_weight' => 5, - 'parameter_0_maxtries' => 6, - 'parameter_0_hinttries' => 7, - 'parameter_0_contentopen' => 8, - 'parameter_0_contentclose' => 9, - 'parameter_0_type' => 10, - 'parameter_0_problemstatus' => 11, - 'parameter_0_hiddenresource' => 12, - 'parameter_0_hiddenparts' => 13, - 'parameter_0_display' => 14, - 'parameter_0_ordered' => 15, - 'parameter_0_tol' => 16, - 'parameter_0_sig' => 17, - 'parameter_0_turnoffunit' => 18); + my %keyorder=&standardkeyorder(); + @ids=(); %symbp=(); %typep=(); @@ -1153,7 +1208,7 @@ sub assessparms { $r->print('
'); - &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt); + &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt,\%keyorder); } else { my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb); $r->print(&mt('Specific Resource').": ".$resource. @@ -1996,7 +2051,11 @@ sub listdata { $tableopen=0; my $foundkeys=0; foreach my $thiskey (sort keys %{$listdata}) { - if ($$resourcedata{$thiskey.'.type'}) { + if ($$listdata{$thiskey.'.type'}) { + my $thistype=$$listdata{$thiskey.'.type'}; + if ($$resourcedata{$thiskey.'.type'}) { + $thistype=$$resourcedata{$thiskey.'.type'}; + } my ($middle,$part,$name)= ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); my $section=&mt('All Students'); @@ -2040,7 +2099,7 @@ sub listdata { ':'); $foundkeys++; - if ($$resourcedata{$thiskey.'.type'}=~/^date/) { + if ($thistype=~/^date/) { my $jskey='key_'.$pointer; $pointer++; $r->print( @@ -2050,10 +2109,11 @@ sub listdata { '' ); } else { - $r->print( - ''); } + $r->print(''); $r->print(''); } } @@ -2075,10 +2135,123 @@ $html $bodytag $breadcrumbs -
+ ENDOVER - $r->print(&tableend(). - '

'); + my @ids=(); + my %typep=(); + my %keyp=(); + my %allparms=(); + my %allparts=(); + my %allmaps=(); + my %mapp=(); + my %symbp=(); + my %maptitles=(); + my %uris=(); + my %keyorder=&standardkeyorder(); + my %defkeytype=(); + + my %alllevs=(); + $alllevs{'Resource Level'}='full'; + $alllevs{'Map Level'}='map'; + $alllevs{'Course Level'}='general'; + + my $csec=$env{'form.csec'}; + + my @pscat=&Apache::loncommon::get_env_multiple('form.pscat'); + my $pschp=$env{'form.pschp'}; + my @psprt=&Apache::loncommon::get_env_multiple('form.psprt'); + if (!@psprt) { $psprt[0]='0'; } + + my @selected_sections = + &Apache::loncommon::get_env_multiple('form.Section'); + @selected_sections = ('all') if (! @selected_sections); + foreach (@selected_sections) { + if ($_ eq 'all') { + @selected_sections = ('all'); + } + } + + my $pssymb=''; + my $parmlev=''; + + unless ($env{'form.parmlev'}) { + $parmlev = 'map'; + } else { + $parmlev = $env{'form.parmlev'}; + } + + &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, + \%mapp, \%symbp,\%maptitles,\%uris, + \%keyorder,\%defkeytype); + +# Menu to select levels, etc + + $r->print(''); + } + $r->print('
'); + &levelmenu($r,\%alllevs,$parmlev); + if ($parmlev ne 'general') { + $r->print(''); + &mapmenu($r,\%allmaps,$pschp,\%maptitles); + $r->print('
'); + + $r->print('
'); + &parmmenu($r,\%allparms,\@pscat,\%keyorder); + $r->print(''); + &partmenu($r,\%allparts,\@psprt); + $r->print(''); + §ionmenu($r,\@selected_sections); + $r->print('
'); + + +# Build the list data hash from the specified parms + + my $listdata; + %{$listdata}=(); + + foreach my $cat (@pscat) { + foreach my $section (@selected_sections) { + foreach my $part (@psprt) { + my $newparmkey=$env{'request.course.id'}; + if (($section ne 'all') && ($section ne 'none') && ($section)) { + $newparmkey.='.['.$section.']'; + } + if ($parmlev eq 'general') { +# course-level parameter + } elsif ($parmlev eq 'map') { + foreach my $map (keys %allmaps) { + if (($pschp ne 'all') && ($pschp ne $map)) { next; } + $newparmkey.='.'.$allmaps{$map}.'.'.$part.'.'.$cat; + $$listdata{$newparmkey}=1; + $$listdata{$newparmkey.'.type'}=$defkeytype{$cat}; + } +# map-level parameter + } else { +# resource-level parameter + + } + } + } + } + + + + $r->print(join("\n
",keys %{$listdata})); + + if ($env{'form.dis'}) { + + &storedata($r,$crs,$dom); + +# Read modified data + + my $resourcedata=&readdata($crs,$dom); + +# List data + + &listdata($r,$resourcedata,$listdata); + } + $r->print(&tableend(). + '

'); } sub overview {