--- loncom/interface/lonparmset.pm 2006/12/05 02:55:53 1.350 +++ loncom/interface/lonparmset.pm 2007/01/18 21:14:04 1.350.2.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set parameters for assessments # -# $Id: lonparmset.pm,v 1.350 2006/12/05 02:55:53 albertel Exp $ +# $Id: lonparmset.pm,v 1.350.2.6 2007/01/18 21:14:04 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -122,7 +122,10 @@ sub parmval_by_symb { # load caches &cacheparmhash(); - my $useropt=&Apache::lonnet::get_userresdata($uname,$udom); + my $useropt; + if ($uname ne '' && $udom ne '') { + $useropt = &Apache::lonnet::get_userresdata($uname,$udom); + } my $result=''; my @outpar=(); @@ -173,7 +176,7 @@ sub parmval_by_symb { } # ------------------------------------------------------ fourth, back to course - if (defined($csec)) { + if ($csec ne '') { if (defined($$courseopt{$seclevel})) { $outpar[9]=$$courseopt{$seclevel}; $result=9; @@ -189,7 +192,7 @@ sub parmval_by_symb { } } # ------------------------------------------------------ fifth, check course group - if (defined($cgroup)) { + if ($cgroup ne '') { if (defined($$courseopt{$grplevel})) { $outpar[6]=$$courseopt{$grplevel}; $result=6; @@ -206,7 +209,7 @@ sub parmval_by_symb { # ---------------------------------------------------------- fifth, check user - if (defined($uname)) { + if ($uname ne '') { if (defined($$useropt{$courselevel})) { $outpar[3]=$$useropt{$courselevel}; $result=3; @@ -269,10 +272,8 @@ sub resetrulescache { sub rulescache { my $id=shift; - if ($rulesid ne $env{'request.course.id'}) { - %rules=(); - } - unless (defined($rules{$id})) { + if ($rulesid ne $env{'request.course.id'} + && !defined($rules{$id})) { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; %rules=&Apache::lonnet::dump('parmdefactions',$dom,$crs); @@ -3302,6 +3303,13 @@ sub order_meta_fields { $r->print(''); return 'ok'; } +sub continue { + my $output; + $output .= '
'; + $output .= ''; + $output .= ''; + return ($output); +} sub addmetafield { my ($r)=@_; $r->print(&Apache::loncommon::start_page('Add Metadata Field')); @@ -3309,7 +3317,7 @@ sub addmetafield { my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $crs = $env{'course.'.$env{'request.course.id'}.'.num'}; if (exists($env{'form.undelete'})) { - my @meta_fields = &Apache::loncommon::get_env_multiple('form.undelete'); + my @meta_fields = &Apache::loncommon::get_env_multiple('form.undeletefield'); foreach my $meta_field(@meta_fields) { my $options = $env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.options'}; $options =~ s/deleted//; @@ -3319,9 +3327,7 @@ sub addmetafield { $r->print('Undeleted Metadata Field '.$env{'course.'.$env{'request.course.id'}.'.metadata.'.$meta_field.'.added'}." with result ".$put_result.'
'); } - $r->print(''); - $r->print(''); - $r->print(''); + $r->print(&continue()); } elsif (exists($env{'form.fieldname'})) { my $meta_field = $env{'form.fieldname'}; my $display_field = $env{'form.fieldname'}; @@ -3331,14 +3337,15 @@ sub addmetafield { {'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); + $r->print('Added new Metadata Field '.$env{'form.fieldname'}." with result ".$put_result.'
'); + $r->print(&continue()); } else { my $fields = &get_deleted_meta_fieldnames(); if ($fields) { $r->print('You may undelete previously deleted fields.
Check those you wish to undelete and click Undelete.
'); $r->print(''); foreach my $key(keys(%$fields)) { - $r->print(''.$$fields{$key}.'
print(''.$$fields{$key}.'
print(''); $r->print('
'); @@ -3727,7 +3734,15 @@ sub parm_change_log { } if ($last) { ($folder) = &Apache::lonnet::decode_symb($last); } } - foreach my $id (sort { $parmlog{$b}{'exe_time'}<=>$parmlog{$a}{'exe_time'} } (keys(%parmlog))) { + foreach my $id (sort + { + if ($parmlog{$b}{'exe_time'} ne $parmlog{$a}{'exe_time'}) { + return $parmlog{$b}{'exe_time'} <=>$parmlog{$a}{'exe_time'} + } + my $aid = (split('00000',$a))[-1]; + my $bid = (split('00000',$b))[-1]; + return $bid<=>$aid; + } (keys(%parmlog))) { my @changes=keys(%{$parmlog{$id}{'logentry'}}); my $count = 0; my $time = @@ -3835,6 +3850,12 @@ sub parm_change_log { $r->print(&Apache::loncommon::end_page()); } +sub check_for_course_info { + my $navmap = Apache::lonnavmaps::navmap->new(); + return 1 if ($navmap); + return 0; +} + ################################################## ################################################## @@ -3878,7 +3899,9 @@ sub handler { (&Apache::lonnet::allowed('opa',$env{'request.course.id'}) || &Apache::lonnet::allowed('opa',$env{'request.course.id'}.'/'. $env{'request.course.sec'})); - if ($env{'request.course.id'} && $parm_permission) { + my $exists = &check_for_course_info(); + + if ($env{'request.course.id'} && $parm_permission && $exists) { # Start Page &Apache::loncommon::content_type($r,'text/html'); @@ -3948,8 +3971,13 @@ sub handler { } } else { # ----------------------------- Not in a course, or not allowed to modify parms - $env{'user.error.msg'}= - "/adm/parmset:opa:0:0:Cannot modify assessment parameters"; + if ($exists) { + $env{'user.error.msg'}= + "/adm/parmset:opa:0:0:Cannot modify assessment parameters"; + } else { + $env{'user.error.msg'}= + "/adm/parmset::0:1:Course environment gone, reinitialize the course"; + } return HTTP_NOT_ACCEPTABLE; } return OK;