--- loncom/homework/bridgetask.pm 2006/06/24 01:32:25 1.128.2.12 +++ loncom/homework/bridgetask.pm 2006/04/15 01:06:59 1.142 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.128.2.12 2006/06/24 01:32:25 albertel Exp $ +# $Id: bridgetask.pm,v 1.142 2006/04/15 01:06:59 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -66,7 +66,7 @@ sub proctor_check_auth { my @allowed=split(",",$slot->{'proctor'}); foreach my $possible (@allowed) { - my ($puser,$pdom)=(split('@',$possible)); + my ($puser,$pdom)=(split(':',$possible)); if ($puser eq $user && $pdom eq $domain) { my $authenticated=0; if ( $slot->{'secret'} =~ /\S/ && @@ -95,7 +95,7 @@ sub proctor_check_auth { #setup new version and who did it $Apache::lonhomework::results{'resource.0.version'}=$version; $Apache::lonhomework::results{"resource.$version.0.checkedin"}= - $user.'@'.$domain; + $user.':'.$domain; $Apache::lonhomework::results{"resource.$version.0.checkedin.slot"}= $slot_name; @@ -103,7 +103,7 @@ sub proctor_check_auth { } elsif ($authenticated && $type eq 'problem') { &Apache::lonxml::debug("authed $slot_name"); $Apache::lonhomework::results{"resource.0.checkedin"}= - $user.'@'.$domain; + $user.':'.$domain; $Apache::lonhomework::results{"resource.0.checkedin.slot"}= $slot_name; } @@ -349,15 +349,12 @@ sub webgrade_standard_info { my %lt=&Apache::lonlocal::texthash('done' => 'Next Item', 'stop' => 'Quit Grading', - 'fail' => 'Fail Rest', ); my $result=< - $file_list INFO @@ -368,8 +365,8 @@ sub start_Task { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my ($status,$accessmsg,$slot); - &Apache::structuretags::init_problem_globals('Task'); if ($target ne 'webgrade') { + &Apache::structuretags::init_problem_globals('Task'); &Apache::structuretags::initialize_storage(); &Apache::lonhomework::showhash(%Apache::lonhomework::history); if ($env{'request.state'} eq 'construct') { @@ -378,28 +375,28 @@ sub start_Task { } $Apache::lonhomework::parsing_a_task=1; - #should get back a or the neccesary stuff to start XML/MathML - my ($result,$head_tag_start,$body_tag_start,$form_tag_start)= - &Apache::structuretags::page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); - - $head_tag_start .= &style($target); - $body_tag_start .= '
'."\n"; + my $name; if ($target eq 'web' || $target eq 'webgrade') { - $head_tag_start.=''. - &Apache::structuretags::get_resource_name($parstack,$safeeval). - ''; + $name = &Apache::structuretags::get_resource_name($parstack,$safeeval); } + my ($result,$form_tag_start)= + &Apache::structuretags::page_start($target,$token,$tagstack,$parstack, + $parser,$safeeval,$name,&style()); + + $result .= '
'."\n"; + + if ($target eq 'web' && $env{'request.state'} ne 'construct') { if ($Apache::lonhomework::modifygrades) { - $body_tag_start.='
'.&add_grading_button()."
"; + $result.=$uri.'">'.&add_grading_button().""; my $symb=&Apache::lonnet::symbread(); if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { - $body_tag_start.='
'. + $result.=''. ''. ''. ''. + $result.=''. ''. ''. ''.$body_tag_start; if ($env{'request.state'} eq 'construct') { $result.=$form_tag_start; } @@ -456,33 +452,16 @@ sub start_Task { my (undef,undef,$domain,$user)= &Apache::lonxml::whichuser(); my $files = '
    '; - my $msg; foreach my $file (@files) { my $url="/uploaded/$domain/$user/portfolio$file"; - $file = ''.$file.''; + if (! &Apache::lonnet::stat_file($url)) { + $file = &mt(' Nonexistant file: [_1]',$file); + } else { + $file = ''.$file.''; + } $files .= '
  • '.$file.'
  • '; - $msg .= "

    Submitted file $file

    \n"; } $files.='
'; - my $subject = "Submission message for $title"; - my ($message_status,$comment_status); - my $setting = $env{'course.'.$env{'request.course.id'}.'.task_messages'}; - $setting =~ s/^\s*(\S*)\s*$/$1/; - $setting = lc($setting); - if ($setting eq 'only_student' - || $setting eq 'student_and_user_notes_screen') { - $message_status = - &Apache::lonmsg::user_normal_msg($user,$domain,$subject,$msg); - $message_status = '

'.&mt('Message sent to user: [_1]', - $message_status).'

'; - } - if ($setting eq 'student_and_user_notes_screen') { - $comment_status = - &Apache::lonmsg::store_instructor_comment($subject.'
'. - $msg,$user,$domain); - $comment_status = '

'.&mt('Message sent to instructor: [_1]', - $comment_status).'

'; - } $result.=<$title @@ -491,8 +470,6 @@ sub start_Task {

Logout

Change to a different course

-$message_status -$comment_status DONESCREEN } elsif ($status ne 'NOT_YET_VIEWED') { $msg.='

'.&mt('Not open to be viewed').'

'; @@ -519,9 +496,7 @@ DONESCREEN } } } elsif ($target eq 'web') { - $result.="$head_tag_start - $body_tag_start \n"; - + $result.=&preserve_grade_info(); $result.=&internal_location(); $result.=$form_tag_start. @@ -532,9 +507,7 @@ DONESCREEN $target eq 'webgrade') { my $webgrade='yes'; if ($target eq 'webgrade') { - $result.=$head_tag_start. - ''.$body_tag_start. - "\n".'
'."\n". + $result.= "\n".'
'."\n". ''; #$result.='
Review'.&show_queue('reviewqueue'); @@ -618,7 +591,7 @@ DONESCREEN $result.="\n".'
'; } } elsif ($target eq 'edit') { - $result.=$head_tag_start."".$body_tag_start.$form_tag_start. + $result.=$form_tag_start. &Apache::structuretags::problem_edit_header(); $Apache::lonxml::warnings_error_header= &mt("Editor Errors - these errors might not effect the running of the problem, but they will likely cause problems with further use of the Edit mode. Please use the EditXML mode to fix these errors.")."
"; @@ -654,7 +627,7 @@ sub get_key_todo { } - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + my $me=$env{'user.name'}.':'.$env{'user.domain'}; #need to try both queues.. if (defined($env{'form.regradeaspecificsubmission'}) && @@ -700,7 +673,7 @@ sub get_key_todo { #otherwise (defined($who) && $who ne $me) some else has it... return (undef,'not_allowed', &mt('Another user ([_1]) currently has the record for [_2] locked.', - $who,$env{'form.gradinguser'}.'@'.$env{'form.gradingdomain'})); + $who,$env{'form.gradinguser'}.':'.$env{'form.gradingdomain'})); } @@ -866,7 +839,8 @@ DONEBUTTON } } if ($target eq 'web') { - $result.="\n
\n".&Apache::lonxml::xmlend().''; + $result.="\n
\n". + &Apache::loncommon::end_page({'discussion' => 1}); } } if ($target eq 'grade' && !$env{'form.webgrade'} && !$previous) { @@ -928,7 +902,7 @@ DONEBUTTON } &Apache::lonxml::debug("all dim ".join(':',@Apache::bridgetask::dimensionlist)."results -> m_f $mandatory_failed o_p $optional_passed u $ungraded r $review"); $Apache::lonhomework::results{'resource.0.regrader'}= - $env{'user.name'}.'@'.$env{'user.domain'}; + $env{'user.name'}.':'.$env{'user.domain'}; if ($review) { $Apache::lonhomework::results{"resource.$version.0.status"}='review'; if ($env{'form.queue'} eq 'reviewqueue') { @@ -1006,7 +980,7 @@ DONEBUTTON #$result.=' '; $result.=''."\n
\n
\n". - &Apache::loncommon::endbodytag().''; + &Apache::loncommon::end_page(); } elsif ($target eq 'meta') { $result.=&Apache::response::meta_package_write('Task'); $result.=&Apache::response::meta_stores_write('solved','string', @@ -1018,7 +992,6 @@ DONEBUTTON $result.=&Apache::response::meta_stores_write('status','string', 'Bridge Task Status'); } - &Apache::structuretags::reset_problem_globals('Task'); undef($Apache::lonhomework::parsing_a_task); return $result; } @@ -1045,11 +1018,11 @@ sub check_queue_unlock { if ($queue eq 'none') { return 'ok'; } my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser(); if (!defined($key)) { - $key="$symb\0queue\0$uname\@$udom"; + $key="$symb\0queue\0$uname:$udom"; } my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + my $me=$env{'user.name'}.':'.$env{'user.domain'}; my $who=&queue_key_locked($queue,$key,$cdom,$cnum); if ($who eq $me) { return &Apache::lonnet::del($queue,["$key\0locked"],$cdom,$cnum); @@ -1112,7 +1085,7 @@ sub get_queue_data { my ($symb,$cid,$udom,$uname)=&Apache::lonxml::whichuser(); my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; - my $todo="$symb\0queue\0$uname\@$udom"; + my $todo="$symb\0queue\0$uname:$udom"; my ($key,$value)=&Apache::lonnet::get($queue,[$todo],$cdom,$cnum); if ($key eq $todo && ref($value)) { return $value; @@ -1158,7 +1131,7 @@ sub add_to_queue { my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; my %data; - $data{"$symb\0queue\0$uname\@$udom"}=$user_data; + $data{"$symb\0queue\0$uname:$udom"}=$user_data; return &Apache::lonnet::cput($queue,\%data,$cdom,$cnum); } @@ -1207,7 +1180,7 @@ sub show_queue { my $ekey=&Apache::lonnet::escape($key); my ($action,$description,$status)=('select',&mt('Select')); if (exists($queue{"$key\0locked"})) { - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + my $me=$env{'user.name'}.':'.$env{'user.domain'}; $status=&mt('Locked by [_1]',$queue{"$key\0locked"}); if ($me eq $queue{"$key\0locked"}) { ($action,$description)=('resume',&mt('Resume')); @@ -1241,7 +1214,7 @@ FORM } } $result.= "".$fullname->{$uname.':'.$udom}. - " ($uname\@$udom) "; + " ($uname:$udom) "; $result.='Slot: '.$slot.' End time: '. &Apache::lonlocal::locallocaltime($slot_data{'endtime'}). ""; @@ -1288,13 +1261,13 @@ sub get_queue_counts { sub encode_queue_key { my ($symb,$udom,$uname)=@_; - return "$symb\0queue\0$uname\@$udom"; + return "$symb\0queue\0$uname:$udom"; } sub decode_queue_key { my ($key)=@_; my ($symb,undef,$user) = split("\0",$key); - my ($uname,$udom) = split('@',$user); + my ($uname,$udom) = split(':',$user); return ($symb,$uname,$udom); } @@ -1358,7 +1331,7 @@ sub pick_from_queue_data { sub find_mid_grade { my ($queue,$symb,$cdom,$cnum)=@_; my $todo=&Apache::lonnet::unescape($env{'form.gradingkey'}); - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + my $me=$env{'user.name'}.':'.$env{'user.domain'}; if ($todo) { my $who=&queue_key_locked($queue,$todo,$cdom,$cnum); if ($who eq $me) { return $todo; } @@ -1378,7 +1351,7 @@ sub find_mid_grade { sub lock_key { my ($queue,$todo)=@_; - my $me=$env{'user.name'}.'@'.$env{'user.domain'}; + my $me=$env{'user.name'}.':'.$env{'user.domain'}; my (undef,$cid)=&Apache::lonxml::whichuser(); my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; @@ -1820,13 +1793,7 @@ sub get_instance { my $mandatory_failed=0; my $ungraded=0; my $review=0; - - @Apache::scripttag::parser_env = @_; - $result.=&Apache::scripttag::xmlparse($dimension{'intro'}); foreach my $id (@{$dimension{$instance.'.criterias'}}) { - @Apache::scripttag::parser_env = @_; - $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.tex -t'}); my $link=&link($instance,$id); my $status=$Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.status"}=$env{'form.HWVAL_'.$link}; $Apache::lonhomework::results{"resource.$version.0.$dim.$instance.$id.comment"}=$env{'form.HWVAL_comment_'.$link}; @@ -1878,7 +1845,7 @@ sub grading_history { foreach my $t (1..$Apache::lonhomework::history{'version'}) { if (exists($Apache::lonhomework::history{$t.':resource.0.regrader'})) { my ($gname,$gdom) = - split('@',$Apache::lonhomework::history{$t.':resource.0.regrader'}); + split(':',$Apache::lonhomework::history{$t.':resource.0.regrader'}); my $fullname = &Apache::loncommon::plainname($gname,$gdom); $grader = &Apache::loncommon::aboutmewrapper($fullname, $gname,$gdom); @@ -1903,7 +1870,7 @@ sub grading_history { sub start_IntroParagraph { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; - if ($target eq 'web' || $target eq 'web' || $target eq 'webgrade') { + if ($target eq 'web' || $target eq 'webgrade') { if ($tagstack->[-2] eq 'Dimension') { $dimension{'intro'}=&Apache::lonxml::get_all_text('/introparagraph',$parser,$style); @@ -1944,7 +1911,7 @@ sub start_InstanceText { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $instance_id=$Apache::bridgetask::instance[-1]; my $text=&Apache::lonxml::get_all_text('/instancetext',$parser,$style); - if ($target eq 'grade' || $target eq 'web' || $target eq 'webgrade') { + if ($target eq 'web' || $target eq 'webgrade') { $dimension{$instance_id.'.text'}=$text; } return ''; @@ -2002,7 +1969,7 @@ sub proctor_validation_screen { Student who should be logged in is: Name:$name Student ID:$env{'environment.id'} - Usename$user\@$domain + Usename$user:$domain