--- loncom/homework/lonhomework.pm 2011/10/06 12:32:52 1.317.4.4 +++ loncom/homework/lonhomework.pm 2010/03/16 19:55:37 1.319 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Homework handler # -# $Id: lonhomework.pm,v 1.317.4.4 2011/10/06 12:32:52 raeburn Exp $ +# $Id: lonhomework.pm,v 1.319 2010/03/16 19:55:37 droeschl Exp $ # # Copyright Michigan State University Board of Trustees # @@ -47,7 +47,6 @@ use Apache::externalresponse(); use Apache::rankresponse(); use Apache::matchresponse(); use Apache::chemresponse(); -use Apache::functionplotresponse(); use Apache::drawimage(); use Apache::Constants qw(:common); use Apache::loncommon(); @@ -112,11 +111,7 @@ sub get_target { } elsif ( $env{'form.grade_target'} eq 'webgrade' && ($Apache::lonhomework::queuegrade eq 'F' )) { return ($env{'form.grade_target'}); - } elsif ($env{'form.grade_target'} eq 'answer') { - if ($env{'form.answer_output_mode'} eq 'tex') { - return ($env{'form.grade_target'}); - } - } + } if ($env{'form.webgrade'} && ($Apache::lonhomework::modifygrades eq 'F' || $Apache::lonhomework::queuegrade eq 'F' )) { @@ -129,46 +124,43 @@ sub get_target { return ('web'); } } elsif ($env{'request.state'} eq "construct") { -# -# We are in construction space, editing and testing problems -# if ( defined($env{'form.grade_target'}) ) { return ($env{'form.grade_target'}); } if ( defined($env{'form.preview'})) { if ( defined($env{'form.submitted'})) { -# -# We are doing a problem preview -# return ('grade', 'web'); } else { return ('web'); } } else { if ($env{'form.problemstate'} eq 'WEB_GRADE') { - return ('grade','webgrade','answer'); - } elsif ($env{'form.problemmode'} eq 'view') { - return ('grade','web','answer'); - } elsif ($env{'form.problemmode'} eq 'saveview') { - return ('modified','web','answer'); - } elsif ($env{'form.problemmode'} eq 'discard') { - return ('web','answer'); - } elsif (($env{'form.problemmode'} eq 'saveedit') || - ($env{'form.problemmode'} eq 'undo')) { - return ('modified','no_output_web','edit'); - } elsif ($env{'form.problemmode'} eq 'edit') { - return ('no_output_web','edit'); - } else { - return ('web'); - } + #$env{'form.webgrade'} = 'yes'; + return ('grade','webgrade','answer'); + } elsif (($env{'form.problemmode'} eq 'view') || + ($env{'form.problemmode'} eq 'discard')) { + if ( defined($env{'form.submitted'}) && + (!defined($env{'form.resetdata'})) && + (!defined($env{'form.newrandomization'}))) { + return ('grade', 'web','answer'); + } else { + return ('web','answer'); + } + } elsif ($env{'form.problemmode'} eq 'edit') { + if ( $env{'form.submitted'} eq 'edit' ) { + if ( $env{'form.submitbutton'} eq &mt('Save and View') ) { + return ('modified','web','answer'); + } else { + return ('modified','no_output_web','edit'); + } + } else { + return ('no_output_web','edit'); + } + } else { + return ('web'); + } } -# -# End of Construction Space -# } -# -# Huh? We are nowhere, so do nothing. -# return (); } @@ -178,16 +170,6 @@ sub setup_vars { # return ';$external::target='.$target.';'; } -sub createmenu { - my ($which,$request)=@_; - if ($which eq 'grade') { - $request->print(''); - } -} - sub proctor_checked_in { my ($slot_name,$slot,$type)=@_; my @possible_proctors=split(",",$slot->{'proctor'}); @@ -273,8 +255,8 @@ sub check_slot_access { } if ($slotstatus eq 'NEEDS_CHECKIN' && &proctor_checked_in($slot_name,$returned_slot,$type)) { - &Apache::lonxml::debug("proctor checked in"); - $slotstatus=$status; + &Apache::lonxml::debug("protoctor checked in"); + $slotstatus='CAN_ANSWER'; } my ($is_correct,$got_grade,$checkedin); @@ -386,7 +368,7 @@ sub check_access { $date=&mt("can not be accessed from your location."); return($status,$date); } - + foreach my $temp ("opendate","duedate","answerdate") { $lastdate = $date; if ($temp eq 'duedate') { @@ -641,12 +623,11 @@ sub setupheader { sub handle_save_or_undo { my ($request,$problem,$result) = @_; - my $file = &Apache::lonnet::filelocation("",$request->uri); my $filebak =$file.".bak"; my $filetmp =$file.".tmp"; my $error=0; - if (($env{'form.problemmode'} eq 'undo') || ($env{'form.problemmode'} eq 'undoxml')) { + if ($env{'form.Undo'} eq &mt('undo')) { my $error=0; if (!&File::Copy::copy($file,$filetmp)) { $error=1; } if ((!$error) && (!&File::Copy::copy($filebak,$file))) { $error=1; } @@ -669,7 +650,6 @@ sub handle_save_or_undo { } } else { &Apache::lonnet::correct_line_ends($result); - my $fs=Apache::File->new(">$filebak"); if (defined($fs)) { print $fs $$problem; @@ -906,22 +886,20 @@ sub editxmlmode { my $problem=&Apache::lonnet::getfile($file); if ($problem eq -1) { &Apache::lonxml::error( - '

' + ' ' .&mt('Unable to find [_1]', ''.$file.'') - .'

'); + .''); $problem=''; } - if (($env{'form.problemmode'} eq 'saveeditxml') || - ($env{'form.problemmode'} eq 'saveviewxml') || - ($env{'form.problemmode'} eq 'undoxml')) { + if (defined($env{'form.editxmltext'}) || defined($env{'form.Undo'})) { my $error=&handle_save_or_undo($request,\$problem, \$env{'form.editxmltext'}); if (!$error) { $problem=&Apache::lonnet::getfile($file); } } &Apache::lonhomework::showhashsubset(\%env,'^form'); - if ($env{'form.problemmode'} eq 'saveviewxml') { + if ( $env{'form.submitbutton'} eq &mt('Save and View') ) { &Apache::lonhomework::showhashsubset(\%env,'^form'); $env{'form.problemmode'}='view'; &renderpage($request,$file); @@ -935,7 +913,8 @@ sub editxmlmode { &Apache::loncommon::resize_textarea_js(). &Apache::structuretags::setmode_javascript(). &Apache::lonhtmlcommon::dragmath_js("EditMathPopup"); - my $only_body = ($env{'environment.remote'} eq 'off')? 0 : 1; + my $dragmath_button = + &Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1); # Breadcrumbs my $brcrum = [{'href' => &Apache::loncommon::authorspace(), @@ -946,13 +925,13 @@ sub editxmlmode { my $start_page = &Apache::loncommon::start_page(&mt("EditXML [_1]",$file),$js, {'no_auto_mt_title' => 1, - 'only_body' => $only_body, + 'only_body' => 0, 'add_entries' => { 'onresize' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')], 'onload' => q[resize_textarea('LC_editxmltext','LC_aftertextarea')], }, 'bread_crumbs' => $brcrum, - }); +}); $result=$start_page .&Apache::loncommon::head_subbox( @@ -967,13 +946,25 @@ sub editxmlmode { '.&Apache::loncommon::helpLatexCheatsheet('Problem_LON-CAPA_Functions','Script Functions').' - '; - - $result.=''. - &Apache::structuretags::problem_edit_buttons('editxml'); - - $result.='
'.&Apache::lonxml::message_location().''. - ' @@ -1016,10 +1007,9 @@ sub renderpage { $problem=''; my $filename=(split('/',$file))[-1]; my $error = - '

' - .&mt('Unable to find [_1]', + " ".&mt('Unable to find [_1]', ''.$filename.'') - ."

"; + .""; $result.= &Apache::loncommon::simple_error_page($request,'Not available', $error); @@ -1251,11 +1241,8 @@ sub handler { #first visit to problem in construction space $env{'form.problemmode'}= 'view'; &renderpage($request,$file); - } elsif (($env{'form.problemmode'} eq 'editxml') || - ($env{'form.problemmode'} eq 'saveeditxml') || - ($env{'form.problemmode'} eq 'saveviewxml') || - ($env{'form.problemmode'} eq 'undoxml')) { - &editxmlmode($request,$file); + } elsif ($env{'form.problemmode'} eq 'editxml') { + &editxmlmode($request,$file); } elsif ($env{'form.problemmode'} eq 'calcanswers') { &analyze($request,$file); } else {