--- loncom/homework/bridgetask.pm 2006/03/19 21:38:55 1.119 +++ loncom/homework/bridgetask.pm 2006/05/12 06:55:46 1.150 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: bridgetask.pm,v 1.119 2006/03/19 21:38:55 albertel Exp $ +# $Id: bridgetask.pm,v 1.150 2006/05/12 06:55:46 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -66,7 +66,7 @@ sub proctor_check_auth { my @allowed=split(",",$slot->{'proctor'}); foreach my $possible (@allowed) { - my ($puser,$pdom)=(split('@',$possible)); + my ($puser,$pdom)=(split(':',$possible)); if ($puser eq $user && $pdom eq $domain) { my $authenticated=0; if ( $slot->{'secret'} =~ /\S/ && @@ -79,39 +79,53 @@ sub proctor_check_auth { $authenticated=1; } } - if ($authenticated && $type eq 'Task') { - # increment version - my $version= - $Apache::lonhomework::history{'resource.0.version'}; - $version++; - - #clean out all current results - foreach my $key (keys(%Apache::lonhomework::history)) { - if ($key=~/^resource\.0\./) { - $Apache::lonhomework::results{$key}=''; - } - } - - #setup new version and who did it - $Apache::lonhomework::results{'resource.0.version'}=$version; - $Apache::lonhomework::results{"resource.$version.0.checkedin"}= - $user.'@'.$domain; - $Apache::lonhomework::results{"resource.$version.0.checkedin.slot"}= - $slot_name; - + if ($authenticated) { + &create_new_version($type,$user,$domain,$slot_name); return 1; - } elsif ($authenticated && $type eq 'problem') { - &Apache::lonxml::debug("authed $slot_name"); - $Apache::lonhomework::results{"resource.0.checkedin"}= - $user.'@'.$domain; - $Apache::lonhomework::results{"resource.0.checkedin.slot"}= - $slot_name; } } } return 0; } +sub create_new_version { + my ($type,$user,$domain,$slot_name) = @_; + if ($type eq 'Task') { + # increment version + my $version= + $Apache::lonhomework::history{'resource.0.version'}; + $version++; + + #clean out all current results + foreach my $key (keys(%Apache::lonhomework::history)) { + if ($key=~/^resource\.0\./) { + $Apache::lonhomework::results{$key}=''; + } + } + + #setup new version and who did it + $Apache::lonhomework::results{'resource.0.version'}=$version; + if (defined($user) && defined($domain)) { + $Apache::lonhomework::results{"resource.$version.0.checkedin"}= + $user.':'.$domain; + } + if (defined($slot_name)) { + $Apache::lonhomework::results{"resource.$version.0.checkedin.slot"}= + $slot_name; + } + } elsif ($type eq 'problem') { + &Apache::lonxml::debug("authed $slot_name"); + if (defined($user) && defined($domain)) { + $Apache::lonhomework::results{"resource.0.checkedin"}= + $user.':'.$domain; + } + if (defined($slot_name)) { + $Apache::lonhomework::results{"resource.0.checkedin.slot"}= + $slot_name; + } + } +} + sub get_version { my ($version,$previous); if ($env{'form.previousversion'} && @@ -120,7 +134,11 @@ sub get_version { $version=$env{'form.previousversion'}; $previous=1; } else { - $version=$Apache::lonhomework::history{'resource.0.version'}; + if (defined($Apache::lonhomework::results{'resource.0.version'})) { + $version=$Apache::lonhomework::results{'resource.0.version'}; + } elsif (defined($Apache::lonhomework::history{'resource.0.version'})) { + $version=$Apache::lonhomework::history{'resource.0.version'}; + } $previous=0; } if (wantarray) { @@ -170,16 +188,16 @@ sub add_grading_button { my (undef,$cid)=&Apache::lonxml::whichuser(); my $cnum=$env{'course.'.$cid.'.num'}; my $cdom=$env{'course.'.$cid.'.domain'}; - my %sections; - my $numsections=&Apache::loncommon::get_sections($cdom,$cnum,\%sections); + my %sections = &Apache::loncommon::get_sections($cdom,$cnum); + my $size=5; if (scalar(keys(%sections)) < 3) { $size=scalar(keys(%sections))+2; } - my $sec_select = '
'; + } return $result; } @@ -222,6 +241,12 @@ sub add_request_another_attempt_button { if (!$text) { $text="Request another attempt"; } my $result; my $symb=&Apache::lonnet::symbread(); + # not a slot access based resource + my $useslots = &Apache::lonnet::EXT("resource.0.useslots",$symb); + if ($useslots =~ /^\s*no\s*$/i) { + return ''; + } + my ($slot_name,$slot)=&Apache::slotrequest::check_for_reservation($symb); my $action='get_reservation'; if ($slot_name) { @@ -258,64 +283,14 @@ sub preserve_grade_info { } sub style { - return (< + my ($target) = @_; + if ($target eq 'web' + || $target eq 'webgrade') { + return (< STYLE - + } + return; } sub show_task { @@ -327,7 +302,8 @@ sub show_task { ( $status eq 'NOT_IN_A_SLOT') || ( $status eq 'NEEDS_CHECKIN') || ( $status eq 'WAITING_FOR_GRADE') || - ( $status eq 'INVALID_ACCESS') )) { + ( $status eq 'INVALID_ACCESS') || + ( &get_version() eq ''))) { return 0; } if ($env{'form.donescreen'}) { return 0; } @@ -378,7 +354,7 @@ sub file_list { } my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio/'; - my $file_list="