--- loncom/homework/bridgetask.pm 2007/04/06 21:22:24 1.230 +++ loncom/homework/bridgetask.pm 2007/08/03 23:29:57 1.236 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.230 2007/04/06 21:22:24 albertel Exp $ +# $Id: bridgetask.pm,v 1.236 2007/08/03 23:29:57 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -244,7 +244,9 @@ sub add_grading_button { my $result="\n\t".''; $result.="\n\t".''; - if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { + if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'}) + || &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'}) + ) { my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue'); $result.="\n\t".''."\n\t\t".''; $result.="\n\t\t\t".''. @@ -487,6 +489,7 @@ sub webgrade_standard_info { 'stop' => 'Quit Grading', 'fail' => 'Fail Rest', 'cancel' => 'Cancel', + 'submit' => 'Submit Grades', ); %lt=&Apache::lonlocal::texthash(%lt); @@ -494,26 +497,35 @@ sub webgrade_standard_info {
INFO - if (&grade_mode() eq 'regrade') { + if ($env{'request.state'} eq 'construct') { $result.=< +INFO + } else { + if (&grade_mode() eq 'regrade' && $env{'request.state'} ne 'construct') { + $result.=< INFO - } + } - $result.=< +INFO + } + $result.=<
$file_list INFO return $result; + } sub done_screen { my ($version) = @_; - my $title=&Apache::lonnet::gettitle(); + my $title=&Apache::lonnet::gettitle($env{'request.uri'}); my @files=split(',',$Apache::lonhomework::history{'resource.'.$version.'.0.bridgetask.portfiles'}); my (undef,undef,$domain,$user)= &Apache::lonnet::whichuser(); my $files = '
Specify a section:
Found '. - &Apache::lonnet::gettitle($symb).' for '.$uname.' at '.$udom.'
'; + if ($env{'request.state'} eq 'construct') { + $symb = $env{'request.uri'}; + } + $result.="\n".'

'. + &mt('Grading [_1] for [_2] at [_3]', + &Apache::lonnet::gettitle($symb),$uname,$udom).'

'; $form_tag_start.= ''; @@ -799,6 +816,12 @@ sub start_Task { } } if ($webgrade eq 'yes') { $result.=&webgrade_standard_info(); } + } elsif ($target eq 'webgrade' + && $env{'request.state'} eq 'construct') { + $result.=$form_tag_start; + $result.=''; + $result.=&webgrade_standard_info(); } if ($target eq 'webgrade') { $result.="\n".'
'; @@ -846,6 +869,12 @@ sub get_key_todo { my ($target)=@_; my $todo; + if ($env{'request.state'} eq 'construct') { + my ($symb,$cid,$udom,$uname) = &Apache::lonnet::whichuser(); + my $gradingkey=&encode_queue_key($symb,$udom,$uname); + return ($gradingkey); + } + if (defined($env{'form.reviewasubmission'})) { &Apache::lonxml::debug("review a submission...."); $env{'form.queue'}='reviewqueue'; @@ -1038,7 +1067,7 @@ sub end_Task { } if (!$previous && $status ne 'SHOW_ANSWER' && &show_task($status,$previous)) { - $result.=&Apache::inputtags::gradestatus('0'); + $result.=&Apache::inputtags::gradestatus('0',$target,1); } $result.=''; @@ -1056,8 +1085,7 @@ DONEBUTTON if (&show_task($status,$previous) && $Apache::lonhomework::history{"resource.$version.0.status"} =~ /^(pass|fail)$/) { my $bt_status=$Apache::lonhomework::history{"resource.$version.0.status"}; - my $title=&Apache::lonnet::gettitle(); - + my $title=&Apache::lonnet::gettitle($env{'request.uri'}); my $start_time; my $slot_name= @@ -1534,19 +1562,25 @@ sub show_queue { } } + $result .= + '

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


'. + "\n

Current Queue - $queue

"; my $regexp="^$symb\0"; my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); my ($tmp)=%queue; if ($tmp=~/^error: 2 /) { - return "\n

Current Queue - $queue

". + $result.= + &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_row(). ''.&mt('Empty').''. &Apache::loncommon::end_data_table_row(). &Apache::loncommon::end_data_table(); + return $result; } my $title=&Apache::lonnet::gettitle($symb); - $result.="\n

Current Queue - $title $queue

". + $result.= &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(); if ($with_selects) { $result.="Status"; } @@ -1554,7 +1588,8 @@ sub show_queue { &Apache::loncommon::end_data_table_header_row(); foreach my $key (sort(keys(%queue))) { my ($symb,$uname,$udom) = &decode_queue_key($key); - if (!defined($classlist->{$uname.':'.$udom})) { next; } + next if (!defined($classlist->{$uname.':'.$udom})); + next if (§ion_restricted($classlist->{$uname.':'.$udom})); my $section = $classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_SECTION()]; @@ -1640,6 +1675,18 @@ FORM return $result; } +sub section_restricted { + my ($classlist_entry) = @_; + my $cid =(&Apache::lonnet::whichuser())[1]; + if (lc($env{'course.'.$cid.'.task_grading'}) eq 'section' + && $env{'request.course.sec'} + && $env{'request.course.sec'} ne + $classlist_entry->[&Apache::loncoursedata::CL_SECTION()]) { + return 1; + } + return 0; +} + sub get_queue_counts { my ($queue)=@_; my $result; @@ -1655,11 +1702,14 @@ sub get_queue_counts { if ($tmp=~/^error: 2 /) { return (0,0,0); } + my ($entries,$ready_to_grade,$locks)=(0,0,0); my %slot_cache; foreach my $key (sort(keys(%queue))) { my ($symb,$uname,$udom) = &decode_queue_key($key); - if (!defined($classlist->{$uname.':'.$udom})) { next; } + next if (!defined($classlist->{$uname.':'.$udom})); + next if (§ion_restricted($classlist->{$uname.':'.$udom})); + if ($key=~/locked$/) { $locks++; } elsif ($key=~/timestamp$/) { @@ -1736,7 +1786,8 @@ sub pick_from_queue_data { if ($key =~ /\0timestamp$/) { next; } my ($symb,$uname,$udom)=&decode_queue_key($key); - if (!defined($classlist->{$uname.':'.$udom})) { next; } + next if (!defined($classlist->{$uname.':'.$udom})); + next if (§ion_restricted($classlist->{$uname.':'.$udom})); if ($check_section) { my $section = @@ -1845,7 +1896,7 @@ sub lock_key { sub get_queue_symb_status { my ($queue,$symb,$cdom,$cnum) = @_; if (!defined($cdom) || !defined($cnum)) { - my (undef,$cid)=&Apache::lonnet::whichuser(); + my (undef,$cid) =&Apache::lonnet::whichuser(); $cnum=$env{'course.'.$cid.'.num'}; $cdom=$env{'course.'.$cid.'.domain'}; } @@ -1861,6 +1912,7 @@ sub get_queue_symb_status { next if ($key=~/timestamp$/); my ($symb,$uname,$udom) = &decode_queue_key($key); next if (!defined($classlist->{$uname.':'.$udom})); + next if (§ion_restricted($classlist->{$uname.':'.$udom})); push(@users,"$uname:$udom"); } return @users; @@ -2109,9 +2161,7 @@ sub get_dim_id { sub get_id { my ($parstack,$safeeval)=@_; - my $id=&Apache::lonxml::get_param('id',$parstack,$safeeval); - if (!$id) { $id=$Apache::lonxml::curdepth; } - return $id; + return &Apache::lonxml::get_id($parstack,$safeeval); } sub start_Setup { @@ -2199,8 +2249,8 @@ sub start_Dimension { $result.= &Apache::edit::text_arg('Id:','id',$token,10).' '. &Apache::edit::select_arg('Passing is Mandatory:','Mandatory', - [['yes', 'Yes'], - ['no','No'],], + [['Y', 'Yes'], + ['N','No'],], $token).'
'. &Apache::edit::text_arg('Required number of passed optional elements to pass the '.$token->[1].':', 'OptionalRequired',$token,4). @@ -2664,7 +2714,8 @@ sub end_Setup { sub grading_history { my ($version,$dim,$id) = @_; - if (!&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { + if (!&Apache::lonnet::allowed('mgq',$env{'request.course.id'}) + && !&Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { return ''; } my ($result,$grader); @@ -2842,8 +2893,8 @@ sub start_Criteria { $result.= &Apache::edit::text_arg('Id:','id',$token,10).' '. &Apache::edit::select_arg('Passing is Mandatory:','Mandatory', - [['yes', 'Yes'], - ['no','No'],], + [['Y', 'Yes'], + ['N','No'],], $token) .'
'.&Apache::edit::end_row(). &Apache::edit::start_spanning_row();