--- loncom/homework/bridgetask.pm 2006/01/21 08:03:27 1.96 +++ loncom/homework/bridgetask.pm 2006/02/08 22:26:02 1.103 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.96 2006/01/21 08:03:27 albertel Exp $ +# $Id: bridgetask.pm,v 1.103 2006/02/08 22:26:02 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -777,7 +777,7 @@ DONEBUTTON my $opt_req=&Apache::lonxml::get_param('OptionalRequired', $parstack,$safeeval); if ($opt_req !~ /\S/) { $opt_req='0'; } - $status.="\n

".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you were required to pass [_4] on the bridge task.',$man_count,$opt_passed,$opt_count,$opt_req)."

\n"; + $status.="\n

".&mt('You needed to pass all of the [_1] mandatory components and [_2] of the [_3] optional components, of which you passed [_4].',$man_count,$opt_req,$opt_count,$opt_passed)."

\n"; my $internal_location=&internal_location(); $result=~s/\Q$internal_location\E/$status/; @@ -1101,32 +1101,30 @@ sub show_queue { if ($tmp=~/^error: 2 /) { return "\n

Current Queue - $queue

Empty
"; } - $result.="\n

Current Queue - $symb $queue

"; - if ($with_selects) { $result.=""; } - $result.=""; + my $title=&Apache::lonnet::gettitle($symb); + $result.="\n

Current Queue - $title $queue

resourceusertypedata
"; + if ($with_selects) { $result.=""; } + $result.=""; foreach my $key (sort(keys(%queue))) { my ($symb,$uname,$udom) = &decode_queue_key($key); if (!defined($classlist->{$uname.':'.$udom})) { next; } if ($key=~/locked$/ && !$with_selects) { - my $title=&Apache::lonnet::gettitle($symb); - $result.=""; - $result.=''; + $result.=""; + $result.=''; } elsif ($key=~/timestamp$/ && !$with_selects) { - my ($symb,undef) = split("\0",$key); - my $title=&Apache::lonnet::gettitle($symb); - $result.=""; - $result.='"; + $result.='"; } elsif ($key!~/(timestamp|locked)$/) { - my $title=&Apache::lonnet::gettitle($symb); $result.=""; my $slot=$queue{$key}->[0]; my %slot_data=&Apache::lonnet::get_slot($slot); if ($with_selects) { my $ekey=&Apache::lonnet::escape($key); - my ($action,$description)=('select',&mt('Select')); + my ($action,$description,$status)=('select',&mt('Select')); if (exists($queue{"$key\0locked"})) { 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')); } else { @@ -1140,8 +1138,9 @@ sub show_queue { } if (time > $slot_data{'endtime'}) { $result.=(<$status ' } } - $result.=""; - $result.='"; + $result.='"; } @@ -1231,6 +1230,7 @@ sub queue_key_locked { sub pick_from_queue_data { my ($queue,$check_section,$queuedata,$cdom,$cnum)=@_; + my @possible; # will hold queue entries that are valid to be selected foreach my $key (keys(%$queuedata)) { if ($key =~ /\0locked$/) { next; } if ($key =~ /\0timestamp$/) { next; } @@ -1248,11 +1248,18 @@ sub pick_from_queue_data { &Apache::lonxml::debug("not time"); next; } - if (&queue_key_locked($queue,$key,$cdom,$cnum)) { + if (exists($queuedata->{"$key\0locked"})) { &Apache::lonxml::debug("someone already has um."); next; } - return $key; + push(@possible,[$key,$slot_data{'endtime'}]); + } + if (@possible) { + # sort entries in order by slot end time + @possible = sort { $a->[1] <=> $b->[1] } @possible; + # pick one of the first ten entries + my $max=($#possible < 10) ? $#possible : 10; + return $possible[int(rand($max))][0]; } return undef; } @@ -1334,6 +1341,8 @@ sub get_from_queue { $cdom,$cnum); &Apache::lonxml::debug("$starttime"); my $regexp="^$symb\0queue\0"; + my $range= ($attempts < 1 ) ? '0-100' : '0-400'; + my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); #make a pass looking for a user _not_ in my section if ($env{'request.course.sec'}) { @@ -1346,8 +1355,7 @@ sub get_from_queue { # ready for grading if (!$todo) { &Apache::lonxml::debug("no sce"); - $todo=&pick_from_queue_data($queue,$env{'request.course.sec'}, - \%queue,$cdom,$cnum); + $todo=&pick_from_queue_data($queue,undef,\%queue,$cdom,$cnum); &Apache::lonxml::debug("no sce $todo"); } # no user to grade @@ -1434,10 +1442,12 @@ sub select_user { $seclist.=''; } + my $studentdis = $student; + $studentdis =~ tr/:/@/; $result.=< +
Statususerdata
$title$unamelock'.$queue{$key}.'
$uname'.$queue{$key}.'
$titlelast queue modification time'. + $result.="
'. &Apache::lonlocal::locallocaltime($queue{$key})."
-
+ @@ -1157,8 +1156,8 @@ FORM $result.='
'.&mt("In Progress").'$title$unamequeue entrySlot: '.$slot.' End time: '. + $result.="$unameSlot: '.$slot.' End time: '. &Apache::lonlocal::locallocaltime($slot_data{'endtime'}). "
- + @@ -1445,7 +1455,7 @@ sub select_user { $seclist - $fullname->{$student}$fullname->{$student} ($studentdis) RESULT } @@ -1465,6 +1475,9 @@ RESULT if ($status{'version'}) { $result .= ' '.&mt('Version').' '.$status{'version'}; } + if ($status{'grader'}) { + $result .= ' '.&mt('(Graded by [_1])',$status{'grader'}).' '; + } $result.= ''; if ($status{'reviewqueue'} eq 'enqueued') { $result .= &mt('Awaiting Review'); @@ -1668,7 +1681,7 @@ sub get_instance { $result.=&Apache::scripttag::xmlparse($dimension{$instance.'.criteria.'.$id}); $result.='

'.$status_display.'

'; if ($Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}) { - $result.='

'.$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}.'

'; + $result.='

'.&mt('Comment: [_1]',$Apache::lonhomework::history{"resource.$version.0.$dim.$instance.$id.comment"}).'

'; } $result.=''; }