--- loncom/homework/bridgetask.pm 2010/10/12 16:07:43 1.255 +++ loncom/homework/bridgetask.pm 2012/01/03 00:28:17 1.258 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.255 2010/10/12 16:07:43 raeburn Exp $ +# $Id: bridgetask.pm,v 1.258 2012/01/03 00:28:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,6 +37,7 @@ use Apache::lonmenu; use Apache::lonlocal; use Apache::lonxml; use Apache::slotrequest(); +use Apache::structuretags(); use Time::HiRes qw( gettimeofday tv_interval ); use LONCAPA; @@ -198,6 +199,10 @@ sub get_version { sub add_previous_version_button { my ($status)=@_; + my (undef,undef,$udom,$uname)=&Apache::lonnet::whichuser(); + if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { + return; + } my $result; if ($Apache::lonhomework::history{'resource.0.version'} eq '') { return ''; @@ -234,7 +239,10 @@ sub add_previous_version_button { } sub add_grading_button { - my (undef,$cid)=&Apache::lonnet::whichuser(); + my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser(); + if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { + return; + } my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; my %sections = &Apache::loncommon::get_sections($cdom,$cnum); @@ -249,10 +257,14 @@ sub add_grading_button { $sec_select .= "\t\n"; } $sec_select .= "\t\n\n"; - - my $result="\n\t".''; - $result.="\n\t".''; + + my $uri=$env{'request.uri'}; + if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } + my $result = + '
'."\n"; + return $result; +} + +sub add_slotlist_button { + my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser(); + if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { + return; + } + my $symb=&Apache::lonnet::symbread(); + my $result; + if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'}) || + &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { + $result = ''; + my $target_id = + &Apache::lonstathelpers::make_target_id({symb => $symb, + part => '0'}); + if (!§ion_restricted()) { + $result.=''; + } + } return $result; } sub add_request_another_attempt_button { my ($text)=@_; + my (undef,$cid,$udom,$uname)=&Apache::lonnet::whichuser(); + if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { + return; + } if (!$text) { $text=&mt('Request another attempt'); } my $result; my $symb=&Apache::lonnet::symbread(); @@ -380,6 +427,7 @@ sub show_task { ( $status eq 'BANNED') || ( $status eq 'UNAVAILABLE') || ( $status eq 'NOT_IN_A_SLOT') || + ( $status eq 'NOT_YET_VIEWED') || ( $status eq 'NEEDS_CHECKIN') || ( $status eq 'WAITING_FOR_GRADE') || ( $status eq 'INVALID_ACCESS') || @@ -627,35 +675,24 @@ sub start_Task { &Apache::structuretags::page_start($target,$token,$tagstack, $parstack,$parser,$safeeval, $name,&style($target)); + + } + if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || + $target eq 'tex') { + if ($env{'form.markaccess'}) { + my @interval=&Apache::lonnet::EXT("resource.0.interval"); + &Apache::lonnet::set_first_access($interval[1]); + } } if ($target eq 'web' && $env{'request.state'} ne 'construct') { if ($Apache::lonhomework::queuegrade || $Apache::lonhomework::modifygrades) { - $result.='\n"; + $result .= &add_grading_button(); my $symb=&Apache::lonnet::symbread(); if (&Apache::lonnet::allowed('mgq',$env{'request.course.id'}) || &Apache::lonnet::allowed('mgq',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { - $result.=''; - my $target_id = - &Apache::lonstathelpers::make_target_id({symb => $symb, - part => '0'}); - if (!§ion_restricted()) { - $result.=''; - } + $result .= &add_slotlist_button(); } } } @@ -669,8 +706,8 @@ sub start_Task { my ($version,$previous)=&get_version(); ($status,$accessmsg,my $slot_name,$slot) = &Apache::lonhomework::check_slot_access('0','Task'); - if ($status eq 'CAN_ANSWER' && $version eq '') { - # CAN_ANSWER mode, and no current version, unproctored access + if ((($status eq 'CAN_ANSWER') || ($status eq 'NOT_YET_VIEWED')) && ($version eq '')) { + # CAN_ANSWER or NOT_YET_VIEWED mode, and no current version, unproctored access # thus self-checkedin my $check = &check_in('Task',undef,undef,$slot_name); if ($check =~ /^error: /) { @@ -683,9 +720,12 @@ sub start_Task { ($version,$previous)=&get_version(); } - my $status_id = - ($previous || $status eq 'SHOW_ANSWER') ? 'LC_task_feedback' - : 'LC_task_take'; + my $status_id = 'LC_task_take'; + if ($previous && $target eq 'answer') { + $status_id = 'LC_task_answer'; + } elsif ($previous || $status eq 'SHOW_ANSWER') { + $status_id = 'LC_task_feedback'; + } $result .= ''.&Apache::lonhtmlcommon::start_pick_box(). + $result.="\n".'