--- loncom/homework/bridgetask.pm 2007/08/09 01:05:15 1.238 +++ loncom/homework/bridgetask.pm 2009/05/06 16:19:26 1.249 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.238 2007/08/09 01:05:15 albertel Exp $ +# $Id: bridgetask.pm,v 1.249 2009/05/06 16:19:26 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -82,7 +82,10 @@ sub proctor_check_auth { } } if ($authenticated) { - &check_in($type,$user,$domain,$slot_name); + my $check = &check_in($type,$user,$domain,$slot_name); + if ($check =~ /^error:/) { + return 0; + } return 1; } } @@ -94,7 +97,10 @@ sub check_in { my ($type,$user,$domain,$slot_name) = @_; my $useslots = &Apache::lonnet::EXT("resource.0.useslots"); if ( $useslots eq 'map_map') { - &check_in_sequence($user,$domain,$slot_name); + my $result = &check_in_sequence($user,$domain,$slot_name); + if ($result =~ /^error: /) { + return $result; + } } else { &create_new_version($type,$user,$domain,$slot_name); &Apache::structuretags::finalize_storage(); @@ -105,6 +111,9 @@ sub check_in { sub check_in_sequence { my ($user,$domain,$slot_name) = @_; my $navmap = Apache::lonnavmaps::navmap->new(); + if (!defined($navmap)) { + return 'error: '; + } my ($symb) = &Apache::lonnet::whichuser(); my ($map) = &Apache::lonnet::decode_symb($symb); my @resources = @@ -252,10 +261,10 @@ sub add_grading_button { my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue'); $result.="\n\t".''."\n\t\t".''; if ($see_all || (!§ion_restricted())) { - $result.="\n\t\t\t".''. + $result.="\n\t\t\t".''. "\n\t\t\t".''; } else { - $result.="\n\t\t\t".''. + $result.="\n\t\t\t".''. "\n\t\t\t".''; } $result.="\n\t\t\t".'"; } - $result.="". + if ($with_selects) { $result.=''; } + $result.=''. &Apache::loncommon::end_data_table_header_row(); foreach my $key (sort(keys(%queue))) { my ($symb,$uname,$udom) = &decode_queue_key($key); @@ -1644,7 +1663,7 @@ sub show_queue { 'start'); } my $me=$env{'user.name'}.':'.$env{'user.domain'}; - $status=&mt('Locked by [_1] [_2]',$locker,$time); + $status=&mt('Locked by [_1] [_2]',''.$locker.'',$time); if ($me eq $locker) { ($action,$description)=('resume',&mt('Resume')); } else { @@ -1679,9 +1698,11 @@ FORM } $result.= ""; - $result.='".&Apache::loncommon::end_data_table_row(); + $result.='' + .&Apache::loncommon::end_data_table_row(); } } $result.= &Apache::loncommon::end_data_table()."
\n"; @@ -2034,8 +2055,10 @@ sub select_user { my $result; if (!(grep(/^all$/,@chosen_sections))) { - $result.='

Showing only sections '.join(', ',@chosen_sections). - '.

'."\n"; + $result.='

' + .&mt('Showing only sections [_1].' + ,''.join(', ',@chosen_sections).'') + .'

'."\n"; } $result.=&Apache::loncommon::start_data_table(); @@ -2071,6 +2094,7 @@ sub select_user { $seclist.=''; } + my $buttontext=&mt('Regrade'); $result.=&Apache::loncommon::start_data_table_row(); $result.=< @@ -2079,7 +2103,7 @@ sub select_user { - + $seclist @@ -2432,10 +2456,14 @@ sub end_Dimension { ('sub' x $dimension{$dim}{'depth'}).'question'; $ucquestion =~ s/^(.)/uc($1)/e; if ($dim_status eq 'pass') { - $dim_info.='

'.$ucquestion.' : you passed this '.$mandatory.' '.$question.'

'; + $dim_info.='

'.$ucquestion.' : ' + .&mt('you passed this [_1] [_2]',$mandatory,$question) + .'

'; } if ($dim_status eq 'fail') { - $dim_info.='

'.$ucquestion.' : you did not pass this '.$mandatory.' '.$question.'

'; + $dim_info.='

'.$ucquestion.' : ' + .&mt('you did not pass this [_1] [_2]',$mandatory,$question) + .'

'; } my %counts = &get_counts($dim,$instance,$parstack, $safeeval); @@ -2634,16 +2662,11 @@ sub question_status_message { } $status .= '.'; if ($counts->{'opt'}) { - $status .= ' You were required to pass '.$counts->{'opt_req'}. - ' optional '; - if ($counts->{'opt_dim'} + $counts->{'man_dim'} < 1) { - $status .= - ($counts->{'opt_req'} == 1?'criterion':'criteria'); - } else { - $status .= - 'component'.($counts->{'opt_req'} == 1?'':'s'); - } - $status .= '.'; + if ($counts->{'opt_dim'} + $counts->{'man_dim'} < 1) { + $status .= ' '.&mt('You were required to pass [quant,_1,optional criterion,optional criteria].',$counts->{'opt_req'}); + } else { + $status .= ' '.&mt('You were required to pass [quant,_1,optional component].',$counts->{'opt_req'}); + } } return $status; } @@ -2973,25 +2996,25 @@ sub layout_webgrade_Criteria { my $link=&link($id); my $version = &get_version(); my $status = &get_criteria('status',$version,$dim,$id); - my %lt = ( 'ungraded' => 'Ungraded', - 'fail' => 'Fail', - 'pass' => 'Pass', - 'review' => 'Review', - 'comment' => 'Additional Comment for Student', - ); - %lt = &Apache::lonlocal::texthash(%lt); + my %lt = &Apache::lonlocal::texthash( + 'ungraded' => 'Ungraded', + 'fail' => 'Fail', + 'pass' => 'Pass', + 'review' => 'Review', + 'comment' => 'Additional Comment for Student', + ); my $comment = &get_criteria('comment',$version,$dim,$id); $comment = &HTML::Entities::encode($comment,'<>"&'); my %checked; foreach my $which ('ungraded','fail','pass','review') { - if ($status eq $which) { $checked{$which} = 'checked="checked"'; } + if ($status eq $which) { $checked{$which} = ' checked="checked"'; } } - if (!%checked) { $checked{'ungraded'} = 'checked="checked"'; } + if (!%checked) { $checked{'ungraded'} = ' checked="checked"'; } my $buttons; foreach my $which ('ungraded','fail','pass','review') { $buttons .= < - + $lt{$which} END_BUTTON @@ -3118,39 +3141,52 @@ sub proctor_validation_screen { } if (!$valid) { $msg.='

' - .&mt("No valid poctors are defined.") + .&mt("No valid proctors are defined.") .'

'; } if (!$env{'form.proctordomain'}) { $env{'form.proctordomain'}=$domain; } my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); $uri = &HTML::Entities::encode($uri,'<>&"'); + my %lt = &Apache::lonlocal::texthash( + 'prva' => "Proctor Validation", + 'yoro' => "Your room's proctor needs to validate your access to this resource.", + 'prus' => "Proctor's Username:", + 'pasw' => "Password:", + 'prdo' => "Proctor's Domain:", + 'vali' => 'Validate', + 'stui' => "Student who should be logged in is:", + 'name' => "Name:", + 'sid' => "Student/Employee ID:", + 'unam' => "Username:", + ); my $result= (<Proctor Validation -

Your room's proctor needs to validate your access to this resource.

+

$lt{'prva'}

+

$lt{'yoro'}

$msg
Specify a section: '.&mt('Specify a section:').' '.$sec_select."\n\t\t\t".'Grading section: '.&mt('Grading section:').' '.$env{'request.course.sec'}."\n\t\t\t".''.' Will be next available: $description

-STUFF + $result.='

' + .&mt('Will be next available:') + .' '.$description + .'

'; } if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); } @@ -322,7 +332,7 @@ STUFF ''."\n\t\t". ''."\n\t\t". ''."\n\t". + $text.'" />'."\n\t". ''."\n"; return $result; } @@ -472,7 +482,7 @@ sub file_list { my $file=$file_url.$partial_file; $file=~s|/+|/|g; &Apache::lonnet::allowuploaded('/adm/bridgetask',$file); - $file_list.='
  • file icon '.$file. '
  • '."\n"; } @@ -492,13 +502,13 @@ sub webgrade_standard_info { my $file_list = &file_list($Apache::lonhomework::history{"resource.$version.0.bridgetask.portfiles"}); - my %lt=('done' => 'Next Item', - 'stop' => 'Quit Grading', - 'fail' => 'Fail Rest', - 'cancel' => 'Cancel', - 'submit' => 'Submit Grades', - ); - %lt=&Apache::lonlocal::texthash(%lt); + my %lt = &Apache::lonlocal::texthash( + 'done' => 'Next Item', + 'stop' => 'Quit Grading', + 'fail' => 'Fail Rest', + 'cancel' => 'Cancel', + 'submit' => 'Submit Grades', + ); my $result=< @@ -540,17 +550,19 @@ sub done_screen { foreach my $file (@files) { my $url="/uploaded/$domain/$user/portfolio$file"; if (! &Apache::lonnet::stat_file($url)) { - $file = &mt(' Nonexistent file: '. - '[_1]',$file); - $msg .= "

    Submitted non-existant file $file

    \n"; + $file = '' + .&mt('[_1]Nonexistent file:[_2]' + ,' ' + ,' '.$file.''); + $msg .= "

    ".&mt('Submitted non-existent file [_1]',$file)."

    \n"; } else { $file = ''.$file.''; - $msg .= "

    Submitted file $file

    \n"; + $msg .= "

    ".&mt('Submitted file [_1]',$file)."

    \n"; } $files .= '
  • '.$file.'
  • '; } $files.=''; - my $subject = "Submission message for $title"; + my $subject = &mt('Submission message for [_1]',$title); my ($message_status,$comment_status); my $setting = $env{'course.'.$env{'request.course.id'}.'.task_messages'}; $setting =~ s/^\s*(\S*)\s*$/$1/; @@ -569,16 +581,14 @@ sub done_screen { $comment_status = '

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

    '; } - return <$title -

    Files submitted: $files

    -

    You are now done with this Bridge Task

    -
    -

    Logout

    -

    Change to a different course

    -$message_status -$comment_status -DONESCREEN + return "

    $title

    " + .'

    '.&mt('Files submitted: [_1]',$files).'

    ' + .'

    '.&mt('You are now done with this Bridge Task').'

    ' + .'
    ' + .'

    '.&mt('Logout').'

    ' +.'

    '.&mt('Change to a different course').'

    ' +.$message_status +.$comment_status; } @@ -654,7 +664,11 @@ sub start_Task { if ($status eq 'CAN_ANSWER' && $version eq '') { # CAN_ANSWER mode, and no current version, unproctored access # thus self-checkedin - &check_in('Task',undef,undef,$slot_name); + my $check = &check_in('Task',undef,undef,$slot_name); + if ($check =~ /^error: /) { + my $symb=&Apache::lonnet::symbread(); + &Apache::lonnet::logthis("Error during self-checkin of version $version of Task (symb: $symb) using slot: $slot_name"); + } &add_to_queue('gradingqueue',{'type' => 'Task', 'time' => time, 'slot' => $slot_name}); @@ -684,7 +698,7 @@ sub start_Task { $msg.='

    '.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'

    '; } elsif ($status eq 'NOT_IN_A_SLOT') { $msg.='

    '.&mt('You are not currently signed up to work at this time and/or place.').'

    '; - $msg.=&add_request_another_attempt_button("Sign up for time to work."); + $msg.=&add_request_another_attempt_button("Sign up for time to work"); } elsif ($status eq 'NEEDS_CHECKIN') { $msg.='

    '.&mt('You need the Proctor to validate you.'). '

    '.&proctor_validation_screen($slot); @@ -700,7 +714,7 @@ sub start_Task { } $result.=$msg.'
    '; } elsif ($target eq 'tex') { - $result.='\begin{document}\noindent \vskip 1 mm \begin{minipage}{\textwidth}\vskip 0 mm'; + $result.='\noindent \vskip 1 mm \begin{minipage}{\textwidth}\vskip 0 mm'; if ($status eq 'UNAVAILABLE') { $result.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'\vskip 0 mm '; } else { @@ -1090,10 +1104,11 @@ sub end_Task { if (!$previous && $status ne 'SHOW_ANSWER' && &show_task($status,$previous)) { my $action = &Apache::lonenc::check_encrypt($env{'request.uri'}); + my $donetext = &mt('Done'); $result.=< - + DONEBUTTON } @@ -1126,13 +1141,15 @@ DONEBUTTON "

    \n"; if ($bt_status eq 'pass') { - $status.='

    You passed the '.$title.' given on '. - $start_time.'

    '; + $status.='

    ' + .&mt('You passed the [_1] given on [_2].',$title,$start_time) + .'

    '; $status.=$question_status; } if ($bt_status eq 'fail') { - $status.='

    You did not pass the '.$title.' given on '. - $start_time.'

    '; + $status.='

    ' + .&mt('You did not pass the [_1] given on [_2].',$title,$start_time) + .'

    '; $status.=$question_status; if (!$previous) { $status.=&add_request_another_attempt_button(); @@ -1322,7 +1339,7 @@ DONEBUTTON } } if (exists($Apache::lonhomework::results{'INTERNAL_store'})) { - # instance generation occured and hasn't yet been stored + # instance generation occurred and hasn't yet been stored &Apache::structuretags::finalize_storage(); } } elsif ($target eq 'webgrade') { @@ -1561,8 +1578,10 @@ sub show_queue { my $classlist = &get_limited_classlist(\@chosen_sections); if (!(grep(/^all$/,@chosen_sections))) { - $result.='

    Showing only sections '.join(', ',@chosen_sections). - '.

    '."\n"; + $result.='

    ' + .&mt('Showing only sections [_1].' + ,''.join(', ',@chosen_sections).'') + ."

    \n"; } my ($view,$view_section); @@ -1579,7 +1598,7 @@ sub show_queue { $result .= '

    '. &mt('Return to resource').'


    '. - "\n

    Current Queue - $queue

    "; + "\n

    ".&mt('Current Queue - [_1]',$queue)."

    "; my $regexp="^$symb\0"; my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); my ($tmp)=%queue; @@ -1596,8 +1615,8 @@ sub show_queue { $result.= &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(); - if ($with_selects) { $result.="
    Statususerdata'.&mt('Status').''.&mt('User').''.&mt('Data').'".$classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_FULLNAME()]. " ($uname:$udom) '.$slot_text.' End time: '. - &Apache::lonlocal::locallocaltime($end_time). - "'.$slot_text.' ' + .&mt('End time: [_1]' + ,&Apache::lonlocal::locallocaltime($end_time)) + .'$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()] ($student) Sec: $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()]
    - - - + + +
    Proctor's Username:
    Password:
    Proctor's Domain:
    $lt{'prus'}
    $lt{'pasw'}
    $lt{'prdo'}
    -
    +
    - - - - + + + + $url
    Student who should be logged in is:
    Name:$name
    Student ID:$env{'environment.id'}
    Usename$user:$domain
    $lt{'stui'}
    $lt{'name'}$name
    $lt{'sid'}$env{'environment.id'}
    $lt{'unam'}$user:$domain
    ENDCHECKOUT + return $result; }