--- loncom/interface/lonparmset.pm 2005/06/03 21:19:04 1.206 +++ loncom/interface/lonparmset.pm 2005/06/05 17:24:04 1.210 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.206 2005/06/03 21:19:04 www Exp $ +# $Id: lonparmset.pm,v 1.210 2005/06/05 17:24:04 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -440,6 +440,8 @@ sub plink { $winvalue=$env{'form.recent_'.(split(/\_/,$type))[0]}; } } + + return ''. @@ -447,22 +449,13 @@ sub plink { } sub startpage { - my ($r,$id,$udom,$csec,$uname,$have_assessments)=@_; + my $r=shift; my $bodytag=&Apache::loncommon::bodytag('Set/Modify Course Parameters','', 'onUnload="pclose()"'); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Table Mode Parameter Setting'); - my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '. - &Apache::loncommon::selectstudent_link('parmform','uname','udom'); my $selscript=&Apache::loncommon::studentbrowser_javascript(); my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); - my %lt=&Apache::lonlocal::texthash( - 'captm' => "Course Assessments Parameters - Table Mode", - 'sg' => "Section/Group", - 'fu' => "For User", - 'oi' => "or ID", - 'ad' => "at Domain" - ); my $html=&Apache::lonxml::xmlbegin(); $r->print(< $bodytag $breadcrumbs -ENDHEAD - my %sectionhash=(); - my $sections=''; - if (&Apache::loncommon::get_sections( - $env{'course.'.$env{'request.course.id'}.'.domain'}, - $env{'course.'.$env{'request.course.id'}.'.num'}, - \%sectionhash)) { - $sections=$lt{'sg'}.': '; - } - $r->print(< -

$lt{'captm'}

-ENDHEAD3 - - if (!$have_assessments) { - $r->print(''.&mt('There are no assessment parameters in this course to set.').'
'); - } else { - $r->print(< -$sections -
-$lt{'fu'} - -$lt{'oi'} - -$lt{'ad'} -$chooseopt - + ENDHEAD - } } + sub print_row { my ($r,$which,$part,$name,$symbp,$rid,$default,$defaulttype,$display,$defbgone, $defbgtwo,$parmlev,$uname,$udom,$csec)=@_; @@ -700,15 +662,14 @@ sub extractResourceInformation { my $keyp = shift; my $allparms = shift; my $allparts = shift; - my $allkeys = shift; my $allmaps = shift; - my $fcat = shift; - my $defp = shift; my $mapp = shift; my $symbp = shift; my $maptitles=shift; my $uris=shift; + my $keyorder=shift; + my $keyordercnt=100; my $navmap = Apache::lonnavmaps::navmap->new(); my @allres=$navmap->retrieveResources(undef,undef,1,undef,1); @@ -725,30 +686,39 @@ sub extractResourceInformation { foreach (split(/\,/,&Apache::lonnet::metadata($srcf,'allpossiblekeys'))) { if ($_=~/^parameter\_(.*)/) { my $key=$_; - my $allkey=$1; - $allkey=~s/\_/\./g; - if (&Apache::lonnet::metadata($srcf,$key.'.hidden') eq - 'parm') { - next; #hide hidden things +# Hidden parameters + if (&Apache::lonnet::metadata($srcf,$key.'.hidden') eq 'parm') { + next; } my $display= &Apache::lonnet::metadata($srcf,$key.'.display'); my $name=&Apache::lonnet::metadata($srcf,$key.'.name'); my $part= &Apache::lonnet::metadata($srcf,$key.'.part'); +# +# allparms is a hash of parameter names +# my $parmdis = $display; - $parmdis =~ s|(\[Part.*)$||g; - my $partkey = $part; - $partkey =~ tr|_|.|; - $$allparms{$name} = $parmdis; - $$allparts{$part} = "[Part $part]"; - $$allkeys{$allkey}=$display; - if ($allkey eq $fcat) { - $$defp{$id}= &Apache::lonnet::metadata($srcf,$key); - } + $parmdis =~ s/\[Part.*$//g; + $$allparms{$name}=$parmdis; +# +# allparts is a hash of all parts +# + $$allparts{$part} = "Part: $part"; +# +# Remember all keys going with this resource +# if ($$keyp{$id}) { $$keyp{$id}.=','.$key; } else { $$keyp{$id}=$key; } +# +# Put in order +# + unless ($$keyorder{$key}) { + $$keyorder{$key}=$keyordercnt; + $keyordercnt++; + } + } } $$mapp{$id}= @@ -766,6 +736,205 @@ sub extractResourceInformation { } } + +################################################## +################################################## + +sub parmmenu { + my ($r,$allparms,$pscat)=@_; + my $tempkey; + $r->print(< + function checkall(value, checkName) { + for (i=0; i +ENDSCRIPT + $r->print(); + $r->print("\n"); + my $cnt=0; + foreach $tempkey (sort { $$allparms{$a} cmp $$allparms{$b} } + keys %{$allparms} ) { + $r->print("\n'); + $cnt++; + if ($cnt==3) { + $r->print("\n"); + $cnt=0; + } + } + $r->print(' + +'); + $r->print('
print('value="'.$tempkey.'"'); + if ($$pscat[0] eq "all" || grep $_ eq $tempkey, @{$pscat}) { + $r->print(' checked'); + } + $r->print('>'.$$allparms{$tempkey}.'
+Select All +Select Standard + +Select Dates +Select Visibilities +Select Part Parameters + +Unselect All +
'); +} + +sub partmenu { + my ($r,$allparts,$psprt)=@_; + $r->print(''); +} + +sub usermenu { + my ($r,$uname,$id,$udom,$csec)=@_; + my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '. + &Apache::loncommon::selectstudent_link('parmform','uname','udom'); + my $selscript=&Apache::loncommon::studentbrowser_javascript(); + my %lt=&Apache::lonlocal::texthash( + 'sg' => "Section/Group", + 'fu' => "For User", + 'oi' => "or ID", + 'ad' => "at Domain" + ); + my %sectionhash=(); + my $sections=''; + if (&Apache::loncommon::get_sections( + $env{'course.'.$env{'request.course.id'}.'.domain'}, + $env{'course.'.$env{'request.course.id'}.'.num'}, + \%sectionhash)) { + $sections=$lt{'sg'}.': '; + } + $r->print(< +$sections +
+$lt{'fu'} + +$lt{'oi'} + +$lt{'ad'} +$chooseopt + +ENDMENU +} + +sub displaymenu { + my ($r,$allparms,$allparts,$pscat,$psprt)=@_; + $r->print('
'.&mt('Select Parameters to View').''. + &mt('Select Parts to View').'
'); + &parmmenu($r,$allparms,$pscat); + $r->print(''); + &partmenu($r,$allparts,$psprt); + $r->print('
'); +} + +sub mapmenu { + my ($r,$allmaps,$pschp,$maptitles)=@_; + $r->print(&mt('Select Enclosing Map or Folder').' '); + $r->print('"); +} + +sub levelmenu { + my ($r,$alllevs,$parmlev)=@_; + $r->print(&mt('Select Parameter Level'). + &Apache::loncommon::help_open_topic('Course_Parameter_Levels').' '); + $r->print('"); +} + +sub keysplit { + my $keyp=shift; + return (split(/\,/,$keyp)); +} + +sub keysinorder { + my ($name,$keyorder)=@_; + return sort { + $$keyorder{$a} <=> $$keyorder{$b}; + } (keys %{$name}); +} + ################################################## ################################################## @@ -809,7 +978,7 @@ sub assessparms { my %maptitles=(); # -------------------------------------------------------- Variable declaration - my %allkeys=(); + my %allmaps=(); my %alllevs=(); @@ -826,9 +995,27 @@ sub assessparms { my %allparms; my %allparts; - - my %defp; - +# +# 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); @ids=(); %symbp=(); %typep=(); @@ -848,11 +1035,9 @@ sub assessparms { my $pschp=$env{'form.pschp'}; my @psprt=&Apache::loncommon::get_env_multiple('form.psprt'); if (!@psprt) { $psprt[0]='0'; } - my $showoptions=$env{'form.showoptions'}; my $pssymb=''; my $parmlev=''; - my $prevvisit=$env{'form.prevvisit'}; unless ($env{'form.parmlev'}) { $parmlev = 'map'; @@ -923,11 +1108,10 @@ sub assessparms { unless ($csec) { $csec=''; } - my $fcat=$env{'form.fcat'}; - unless ($fcat) { $fcat=''; } - # --------------------------------------------------------- Get all assessments - &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allkeys, \%allmaps, $fcat, \%defp, \%mapp, \%symbp,\%maptitles,\%uris); + &extractResourceInformation(\@ids, \%typep,\%keyp, \%allparms, \%allparts, \%allmaps, + \%mapp, \%symbp,\%maptitles,\%uris, + \%keyorder); $mapp{'0.0'} = ''; $symbp{'0.0'} = ''; @@ -946,185 +1130,40 @@ sub assessparms { # ---------------------------------------------------------------- Done storing $message.='

'.&mt('Changes can take up to 10 minutes before being active for all students.').&Apache::loncommon::help_open_topic('Caching').'

'; } -# ------------------------------------------------------------------- Sort this - - @ids=sort { - if ($fcat eq '') { - $a<=>$b; - } else { - my ($result,@outpar)=&parmval($fcat,$a,$defp{$a},$uname,$udom,$csec); - my $aparm=$outpar[$result]; - ($result,@outpar)=&parmval($fcat,$b,$defp{$b},$uname,$udom,$csec); - my $bparm=$outpar[$result]; - 1*$aparm<=>1*$bparm; - } - } @ids; #----------------------------------------------- if all selected, fill in array - if ($pscat[0] eq "all" || !@pscat) {@pscat = (keys %allparms);} + if ($pscat[0] eq "all") {@pscat = (keys %allparms);} + if (!@pscat) { @pscat=('duedate','opendate','answerdate','weight','maxtries') }; if ($psprt[0] eq "all" || !@psprt) {@psprt = (keys %allparts);} # ------------------------------------------------------------------ Start page - &startpage($r,$id,$udom,$csec,$uname,scalar(keys(%allkeys))); - - $r->print(''); + &startpage($r); foreach ('tolerance','date_default','date_start','date_end', 'date_interval','int','float','string') { $r->print(''); } - - $r->print('

'.$message.'

'); - my $submitmessage = &mt('Update Section or Specific User'); if (!$pssymb) { - $r->print('\n"); - - $r->print(''); + $r->print('
'.&mt('Select Parameter Level'). - &Apache::loncommon::help_open_topic('Course_Parameter_Levels'). - ''); - $r->print('
'); - $r->print('\n"); + $r->print(''); } + $r->print('
'); + &levelmenu($r,\%alllevs,$parmlev); if ($parmlev ne 'general') { - $r->print('
'.&mt('Select Enclosing Map or Folder').'
'); + &mapmenu($r,\%allmaps,$pschp,\%maptitles); + $r->print('
'); + &displaymenu($r,\%allparms,\%allparts,\@pscat,\@psprt); } else { my ($map,$id,$resource)=&Apache::lonnet::decode_symb($pssymb); - $r->print("".&mt('Specific Resource')."$resource"); - $r->print(''); - $r->print(''); - $r->print(''); - } - - $r->print('

'); -# $r->print("Show: $showoptions"); -# $r->print("pscat: @pscat"); -# $r->print("psprt: @psprt"); -# $r->print("fcat: $fcat"); - - if ($showoptions eq 'show') { - my $tempkey; - - $r->print(''.&mt('Select Parameters to View').''); - - $r->print(''); - my $cnt=0; - foreach $tempkey (sort { $allparms{$a} cmp $allparms{$b} } - keys %allparms ) { - ++$cnt; - $r->print('') if ($cnt%2); - $r->print(''); - } - $r->print(' - -'); - $r->print('
print('value="'.$tempkey.'"'); - if ($pscat[0] eq "all" || grep $_ eq $tempkey, @pscat) { - $r->print(' checked'); - } - $r->print('>'.$allparms{$tempkey}.'
- - - - -
'); - -# $r->print('Select Parts'); - $r->print('
'); - - $r->print(''.&mt('Sort list by').''); - $r->print(''); - - $r->print('
'); - - } else { # hide options - include any necessary extras here - - $r->print(''."\n"); - - unless (@pscat) { - foreach (keys %allparms ) { - $r->print(''."\n"); - } - } else { - foreach (@pscat) { - $r->print(''."\n"); - } - } - - unless (@psprt) { - foreach (keys %allparts ) { - $r->print(''."\n"); - } - } else { - foreach (@psprt) { - $r->print(''."\n"); - } - } - - } - $r->print('
'); - if (($prevvisit) || ($pschp) || ($pssymb)) { - $submitmessage = &mt("Update Course Assessment Parameter Display"); - } else { - $submitmessage = &mt("Set/Modify Course Assessment Parameters"); + $r->print(&mt('Specific Resource').": ".$resource. + ''); } - $r->print(''); + &usermenu($r,$uname,$id,$udom,$csec); -# my @temp_psprt; -# foreach my $t (@psprt) { -# push(@temp_psprt, grep {eval (/^$t\./ || ($_ == $t))} (keys %allparts)); -# } + $r->print('

'.$message.'

'); -# @psprt = @temp_psprt; + $r->print('
'); my @temp_pscat; map { @@ -1134,7 +1173,7 @@ sub assessparms { @pscat = @temp_pscat; - if (($prevvisit) || ($pschp) || ($pssymb)) { + if (($env{'form.prevvisit'}) || ($pschp) || ($pssymb)) { # ----------------------------------------------------------------- Start Table my @catmarker=map { tr|.|_|; 'parameter_'.$_; } @pscat; my $csuname=$env{'user.name'}; @@ -1226,7 +1265,7 @@ ENDTABLEHEADFOUR my %default=(); my $uri=&Apache::lonnet::declutter($uris{$rid}); - foreach (split(/\,/,$keyp{$rid})) { + foreach (&keysplit($keyp{$rid})) { my $tempkeyp = $_; if (grep $_ eq $tempkeyp, @catmarker) { $part{$_}=&Apache::lonnet::metadata($uri,$_.'.part'); @@ -1270,7 +1309,7 @@ ENDTABLEHEADFOUR $r->print(''); - foreach (sort keys %name) { + foreach (&keysinorder(\%name,\%keyorder)) { unless ($firstrow) { $r->print(''); } else { @@ -1333,7 +1372,7 @@ ENDTABLEHEADFOUR # When storing information, store as part 0 # When requesting information, request from full part #------------------------------------------------------------------- - foreach (split(/\,/,$keyp{$rid})) { + foreach (&keysplit($keyp{$rid})) { my $tempkeyp = $_; my $fullkeyp = $tempkeyp; $tempkeyp =~ s/_\w+_/_0_/; @@ -1383,12 +1422,11 @@ ENDMAPONE $r->print(''.&mt('Default Value').''); $r->print(''.&mt('Parameter in Effect').''); - foreach (sort keys %name) { + foreach (&keysinorder(\%name,\%keyorder)) { $r->print(''); &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default, \%type,\%display,$defbgone,$defbgtwo, $parmlev,$uname,$udom,$csec); -# $r->print("resource.$part{$_}.$name{$_},$symbp{$mapid}\n"); } $r->print(""); } # end each map @@ -1420,7 +1458,7 @@ ENDMAPONE # When storing information, store as part 0 # When requesting information, request from full part #------------------------------------------------------------------- - foreach (split(/\,/,$keyp{$rid})) { + foreach (&keysplit($keyp{$rid})) { my $tempkeyp = $_; my $fullkeyp = $tempkeyp; $tempkeyp =~ s/_\w+_/_0_/; @@ -1461,11 +1499,10 @@ ENDMAPONE $r->print(''.&mt('Default Value').''); $r->print(''.&mt('Parameter in Effect').''); - foreach (sort keys %name) { + foreach (&keysinorder(\%name,\%keyorder)) { $r->print(''); &print_row($r,$_,\%part,\%name,\%symbp,$mapid,\%default, \%type,\%display,$defbgone,$defbgtwo,$parmlev,$uname,$udom,$csec); -# $r->print("resource.$part{$_}.$name{$_},$symbp{$mapid}\n"); } $r->print(""); } # end of $parmlev eq general @@ -1805,7 +1842,8 @@ $output ENDenv } ################################################## - +# Overview mode +################################################## my $tableopen; sub tablestart { @@ -1827,26 +1865,38 @@ sub tableend { } } -sub overview { - my $r=shift; - my $bodytag=&Apache::loncommon::bodytag( - 'Set/Modify Course Assessment Parameters'); - my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; - my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview'); - my $html=&Apache::lonxml::xmlbegin(); - $r->print(< -LON-CAPA Course Environment - -$bodytag -$breadcrumbs -
- -ENDOVER +sub readdata { + my ($crs,$dom)=@_; +# Read coursedata + my $resourcedata=&Apache::lonnet::get_courseresdata($crs,$dom); +# Read userdata + + my $classlist=&Apache::loncoursedata::get_classlist(); + foreach (keys %$classlist) { + # the following undefs are for 'domain', and 'username' respectively. + if ($_=~/^(\w+)\:(\w+)$/) { + my ($tuname,$tudom)=($1,$2); + my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom); + foreach my $userkey (keys %{$useropt}) { + if ($userkey=~/^$env{'request.course.id'}/) { + my $newkey=$userkey; + $newkey=~s/^($env{'request.course.id'}\.)/$1\[useropt\:$tuname\:$tudom\]\./; + $$resourcedata{$newkey}=$$useropt{$userkey}; + } + } + } + } + return $resourcedata; +} + + # Setting - my %olddata=&Apache::lonnet::dump('resourcedata',$dom,$crs); + +sub storedata { + my ($r,$crs,$dom)=@_; +# Set userlevel immediately +# Do an intermediate store of course level + my $olddata=&readdata($crs,$dom); my %newdata=(); undef %newdata; my @deldata=(); @@ -1855,18 +1905,58 @@ ENDOVER if ($_=~/^form\.([a-z]+)\_(.+)$/) { my $cmd=$1; my $thiskey=$2; + my ($tuname,$tudom)=&extractuser($thiskey); + my $tkey=$thiskey; + if ($tuname) { + $tkey=~s/\.\[useropt\:$tuname\:$tudom\]\./\./; + } if ($cmd eq 'set') { my $data=$env{$_}; - if ($olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; } + if ($$olddata{$thiskey} ne $data) { + if ($tuname) { + if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') { + $r->print('
'.&mt('Stored modified parameter for').' '. + &Apache::loncommon::plainname($tuname,$tudom)); + } else { + $r->print('

'. + &mt('Error storing parameters').'

'); + } + &Apache::lonnet::devalidateuserresdata($tuname,$tudom); + } else { + $newdata{$thiskey}=$data; + } + } } elsif ($cmd eq 'del') { - push (@deldata,$thiskey); + if ($tuname) { + if (&Apache::lonnet::del('resourcedata',[$tkey],$tudom,$tuname) eq 'ok') { + $r->print('
'.&mt('Deleted parameter for').' '.&Apache::loncommon::plainname($tuname,$tudom)); + } else { + $r->print('

'. + &mt('Error deleting parameters').'

'); + } + &Apache::lonnet::devalidateuserresdata($tuname,$tudom); + } else { + push (@deldata,$thiskey); + } } elsif ($cmd eq 'datepointer') { my $data=&Apache::lonhtmlcommon::get_date_from_form($env{$_}); - if (defined($data) and $olddata{$thiskey} ne $data) { $newdata{$thiskey}=$data; } + if (defined($data) and $$olddata{$thiskey} ne $data) { + if ($tuname) { + if (&Apache::lonnet::put('resourcedata',{$tkey=>$data},$tudom,$tuname) eq 'ok') { + $r->print('
'.&mt('Stored modified date for').' '.&Apache::loncommon::plainname($tuname,$tudom)); + } else { + $r->print('

'. + &mt('Error storing parameters').'

'); + } + &Apache::lonnet::devalidateuserresdata($tuname,$tudom); + } else { + $newdata{$thiskey}=$data; + } + } } } } -# Store +# Store all course level my $delentries=$#deldata+1; my @newdatakeys=keys %newdata; my $putentries=$#newdatakeys+1; @@ -1888,25 +1978,16 @@ ENDOVER } &Apache::lonnet::devalidatecourseresdata($crs,$dom); } -# Read coursedata - my $resourcedata=&Apache::lonnet::get_courseresdata($crs,$dom); -# Read userdata +} - my $classlist=&Apache::loncoursedata::get_classlist(); - foreach (keys %$classlist) { - # the following undefs are for 'domain', and 'username' respectively. - if ($_=~/^(\w+)\:(\w+)$/) { - my ($tuname,$tudom)=($1,$2); - my $useropt=&Apache::lonnet::get_userresdata($tuname,$tudom); - foreach my $userkey (keys %{$useropt}) { - if ($userkey=~/^$env{'request.course.id'}/) { - my $newkey=$userkey; - $newkey=~s/^($env{'request.course.id'}\.)/$1\[useropt\:$tuname\:$tudom\]\./; - $$resourcedata{$newkey}=$$useropt{$userkey}; - } - } - } - } +sub extractuser { + my $key=shift; + return ($key=~/^$env{'request.course.id'}.\[useropt\:(\w+)\:(\w+)\]\./); +} + +sub listdata { + my ($r,$resourcedata,$listdata)=@_; +# Start list output my $oldsection=''; my $oldrealm=''; @@ -1914,22 +1995,22 @@ ENDOVER my $pointer=0; $tableopen=0; my $foundkeys=0; - foreach my $thiskey (sort keys %{$resourcedata}) { + foreach my $thiskey (sort keys %{$listdata}) { if ($$resourcedata{$thiskey.'.type'}) { - $r->print($thiskey); - my ($course,$middle,$part,$name)= - ($thiskey=~/^(\w+)\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); + my ($middle,$part,$name)= + ($thiskey=~/^$env{'request.course.id'}\.(?:(.+)\.)*([\w\s]+)\.(\w+)$/); my $section=&mt('All Students'); - if ($middle=~/^\[(.*)\]\./) { + if ($middle=~/^\[(.*)\]/) { my $issection=$1; if ($issection=~/^useropt\:(\w+)\:(\w+)/) { $section=&mt('User').": ".&Apache::loncommon::plainname($1,$2); } else { $section=&mt('Group/Section').': '.$issection; } - $middle=~s/^\[(.*)\]\.//; + $middle=~s/^\[(.*)\]//; } - $middle=~s/\.$//; + $middle=~s/\.+$//; + $middle=~s/^\.+//; my $realm=''.&mt('All Resources').''; if ($middle=~/^(.+)\_\_\_\(all\)$/) { $realm=''.&mt('Folder/Map').': '.&Apache::lonnet::gettitle($1).'
('.$1.')
'; @@ -1976,9 +2057,61 @@ ENDOVER $r->print(''); } } - + return $foundkeys; +} + +sub newoverview { + my $r=shift; + my $bodytag=&Apache::loncommon::bodytag( + 'Set Course Assessment Parameters'); + my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview'); + my $html=&Apache::lonxml::xmlbegin(); + $r->print(< +LON-CAPA Parameters + +$bodytag +$breadcrumbs + +ENDOVER + $r->print(&tableend(). + '

'); +} + +sub overview { + my $r=shift; + my $bodytag=&Apache::loncommon::bodytag( + 'Modify Course Assessment Parameters'); + my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; + my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs(undef,'Overview'); + my $html=&Apache::lonxml::xmlbegin(); + $r->print(< +LON-CAPA Parameters + +$bodytag +$breadcrumbs +
+ENDOVER +# Store modified + + &storedata($r,$crs,$dom); + +# Read modified data + + my $resourcedata=&readdata($crs,$dom); + +# List data + + my $foundkeys=&listdata($r,$resourcedata,$resourcedata); + $r->print(&tableend().'

'. - ($foundkeys?'':&mt('There are no course or section parameters.')).'

'); + ($foundkeys?'':&mt('There are no parameters.')).'

'); } ################################################## @@ -2116,6 +2249,10 @@ ENDMAINFORMHEAD { text => 'Modify Course Assessment Parameters - Overview Mode', action => 'setoverview', permission => $parm_permission, + }, + { text => 'Set Course Assessment Parameters - Overview Mode', + action => 'newoverview', + permission => $parm_permission, }, { text => 'Set/Modify Course Assessment Parameters - Table Mode', action => 'settable', @@ -2228,6 +2365,10 @@ sub handler { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview', text=>"Overview Mode"}); &overview($r); + } elsif ($env{'form.action'} eq 'newoverview' && $parm_permission) { + &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=setoverview', + text=>"Overview Mode"}); + &newoverview($r); } elsif ($env{'form.action'} eq 'settable' && $parm_permission) { &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/parmset?action=settable', text=>"Table Mode",