--- loncom/homework/bridgetask.pm 2007/04/07 00:12:43 1.231 +++ loncom/homework/bridgetask.pm 2008/08/13 09:10:44 1.239 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.231 2007/04/07 00:12:43 albertel Exp $ +# $Id: bridgetask.pm,v 1.239 2008/08/13 09:10:44 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -244,11 +244,20 @@ sub add_grading_button { my $result="\n\t".''; $result.="\n\t".''; - if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'})) { + my $see_all = &Apache::lonnet::allowed('mgq',$env{'request.course.id'}); + my $see_sec = &Apache::lonnet::allowed('mgq',$env{'request.course.id'}. + '/'.$env{'request.course.sec'}); + + if ($see_all || $see_sec) { my ($entries,$ready,$locks)=&get_queue_counts('gradingqueue'); $result.="\n\t".'
Specify a section: | '. - "\n\t\t\t".''.$sec_select."\n\t\t\t".' | '; + if ($see_all || (!§ion_restricted())) { + $result.="\n\t\t\t".''.&mt('Specify a section:').' | '. + "\n\t\t\t".''.$sec_select."\n\t\t\t".' | '; + } else { + $result.="\n\t\t\t".''.&mt('Grading section:').' | '. + "\n\t\t\t".''.$env{'request.course.sec'}."\n\t\t\t".' | '; + } $result.="\n\t\t\t".''.' ';
@@ -285,7 +294,7 @@ sub add_grading_button {
sub add_request_another_attempt_button {
my ($text)=@_;
- if (!$text) { $text="Request another attempt"; }
+ if (!$text) { $text=&mt('Request another attempt'); }
my $result;
my $symb=&Apache::lonnet::symbread();
# not a slot access based resource
@@ -297,13 +306,14 @@ sub add_request_another_attempt_button {
my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb);
my $action='get_reservation';
if ($slot_name) {
- $text="Change reservation.";
+ $text=&mt('Change reservation.');
$action='change_reservation';
my $description=&Apache::slotrequest::get_description($slot_name,
$slot);
- $result.=(< ' + .&mt('Will be next available:') + .' '.$description + .' '; } if ($env{'request.enc'}) { $symb=&Apache::lonenc::encrypted($symb); } @@ -313,7 +323,7 @@ STUFF ''."\n\t\t". ''."\n\t\t". ''."\n\t". + $text.'" />'."\n\t". ''."\n"; return $result; } @@ -531,17 +541,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-existant file [_1]',$file)." \n"; } else { $file = ''.$file.''; - $msg .= "Submitted file $file \n"; + $msg .= "".&mt('Submitted file [_1]',$file)." \n"; } $files .= ''.&mt('Message sent to instructor: [_1]', $comment_status).' '; } - return <Files submitted: $files -You are now done with this Bridge Task -- - -$message_status -$comment_status -DONESCREEN + return " $title" + .''.&mt('Files submitted: [_1]',$files).' ' + .''.&mt('You are now done with this Bridge Task').' ' + .'' + .'' +.' '.&mt('Change to a different course').' ' +.$message_status +.$comment_status } @@ -610,7 +620,8 @@ sub start_Task { if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } $result.=$uri.'">'.&add_grading_button()."\n"; my $symb=&Apache::lonnet::symbread(); - 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'})) { $result.=''; + if (!§ion_restricted()) { + $result.=''; + } } } } @@ -804,9 +817,8 @@ sub start_Task { $result.=''; } - if ($env{'form.chosensections'}) { - my @chosen_sections= - &Apache::loncommon::get_env_multiple('form.chosensections'); + if ($env{'form.chosensections'} || §ion_restricted()) { + my @chosen_sections = &get_allowed_sections(); foreach my $sec (@chosen_sections) { $result.=''; @@ -902,7 +914,14 @@ sub get_key_todo { my $cdom = $env{'course.'.$cid.'.domain'}; my $uname = &LONCAPA::clean_username($env{'form.gradinguser'}); my $udom = &LONCAPA::clean_domain($env{'form.gradingdomain'}); - + + if (§ion_restricted()) { + my $classlist=&get_limited_classlist(); + if (!&allow_grade_user($classlist->{$uname.':'.$udom})) { + return (undef,'not_allowed', + &mt('Requested student ([_1]) is in a section you aren\'t allowed to grade.',$uname.':'.$udom)); + } + } my $gradingkey=&encode_queue_key($symb,$udom,$uname); my $queue; @@ -1064,7 +1083,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.=''; @@ -1108,13 +1127,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(); @@ -1518,11 +1539,11 @@ sub get_limited_classlist { } } - if (ref($sections) && !grep('all',@{ $sections })) { + if (ref($sections) && !grep {$_ eq 'all'} (@{ $sections })) { foreach my $student (keys(%$classlist)) { my $section = $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()]; - if (! grep($section,@{ $sections })) { + if (! grep {$_ eq $section} (@{ $sections })) { delete($classlist->{$student}); } } @@ -1538,14 +1559,15 @@ sub show_queue { my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; - my @chosen_sections= - &Apache::loncommon::get_env_multiple('form.chosensections'); + my @chosen_sections = &get_allowed_sections(); 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); @@ -1559,27 +1581,33 @@ sub show_queue { } } + $result .= + ''. + &mt('Return to resource').' '. + "\n ".&mt('Current Queue - [_1]',$queue).""; my $regexp="^$symb\0"; my %queue=&Apache::lonnet::dump($queue,$cdom,$cnum,$regexp); my ($tmp)=%queue; if ($tmp=~/^error: 2 /) { - return "\nCurrent 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.="\nCurrent Queue - $title $queue". + $result.= &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(); - if ($with_selects) { $result.="Status | "; }
- $result.=" | user | data | ".
+ if ($with_selects) { $result.=''.&mt('Status').' | '; }
+ $result.=' | '.&mt('User').' | '.&mt('Data').' | '.
&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 (!&allow_grade_user($classlist->{$uname.':'.$udom}));
my $section = $classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_SECTION()];
@@ -1621,7 +1649,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 {
@@ -1656,15 +1684,46 @@ FORM
}
$result.= "".$classlist->{$uname.':'.$udom}[&Apache::loncoursedata::CL_FULLNAME()].
" ($uname:$udom) | ";
- $result.=''.$slot_text.' End time: '.
- &Apache::lonlocal::locallocaltime($end_time).
- " | ".&Apache::loncommon::end_data_table_row();
+ $result.=''.$slot_text.' '
+ .&mt('End time: [_1]'
+ ,&Apache::lonlocal::locallocaltime($end_time))
+ .' | '
+ .&Apache::loncommon::end_data_table_row();
}
}
$result.= &Apache::loncommon::end_data_table()."\n"; return $result; } +sub get_allowed_sections { + my @chosen_sections; + if (§ion_restricted()) { + @chosen_sections = ($env{'request.course.sec'}); + } else { + @chosen_sections = + &Apache::loncommon::get_env_multiple('form.chosensections'); + } + + return @chosen_sections; +} + +sub section_restricted { + my $cid =(&Apache::lonnet::whichuser())[1]; + return (lc($env{'course.'.$cid.'.task_grading'}) eq 'section' + && $env{'request.course.sec'} ne '' ); +} + +sub allow_grade_user { + my ($classlist_entry) = @_; + + if (§ion_restricted() + && $env{'request.course.sec'} ne + $classlist_entry->[&Apache::loncoursedata::CL_SECTION()]) { + return 0; + } + return 1; +} + sub get_queue_counts { my ($queue)=@_; my $result; @@ -1680,11 +1739,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 (!&allow_grade_user($classlist->{$uname.':'.$udom})); + if ($key=~/locked$/) { $locks++; } elsif ($key=~/timestamp$/) { @@ -1761,7 +1823,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 (!&allow_grade_user($classlist->{$uname.':'.$udom})); if ($check_section) { my $section = @@ -1870,7 +1933,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'}; } @@ -1886,6 +1949,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 (!&allow_grade_user($classlist->{$uname.':'.$udom})); push(@users,"$uname:$udom"); } return @users; @@ -1972,15 +2036,15 @@ sub get_from_queue { sub select_user { my ($symb,$cid)=&Apache::lonnet::whichuser(); - my @chosen_sections= - &Apache::loncommon::get_env_multiple('form.chosensections'); - + my @chosen_sections = &get_allowed_sections(); my $classlist = &get_limited_classlist(\@chosen_sections); 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(); @@ -2027,7 +2091,7 @@ sub select_user { $seclist -$classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()] ($student) |
+ $classlist->{$student}[&Apache::loncoursedata::CL_FULLNAME()] ($student) Sec: $classlist->{$student}[&Apache::loncoursedata::CL_SECTION()] |
RESULT
}
@@ -2134,9 +2198,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 {
@@ -2224,8 +2286,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). @@ -2379,10 +2441,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); @@ -2581,6 +2647,7 @@ sub question_status_message { } $status .= '.'; if ($counts->{'opt'}) { + # FIXME &mt() missing! $status .= ' You were required to pass '.$counts->{'opt_req'}. ' optional '; if ($counts->{'opt_dim'} + $counts->{'man_dim'} < 1) { @@ -2689,7 +2756,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); @@ -2867,8 +2935,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(); @@ -3064,13 +3132,14 @@ 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,'<>&"'); + # FIXME &mt() missing! my $result= (<Your room's proctor needs to validate your access to this resource. |