[LON-CAPA-cvs] cvs: loncom /homework bridgetask.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 12 May 2006 06:55:49 -0000
albertel Fri May 12 02:55:49 2006 EDT
Modified files:
/loncom/homework bridgetask.pm
Log:
-when visiting a non-slotted (and thus non0proctored) resource need to create a new version on the frist viewing.
- if instance creation occurs when version is blank dont' store the resutls.
Index: loncom/homework/bridgetask.pm
diff -u loncom/homework/bridgetask.pm:1.149 loncom/homework/bridgetask.pm:1.150
--- loncom/homework/bridgetask.pm:1.149 Fri May 12 01:18:34 2006
+++ loncom/homework/bridgetask.pm Fri May 12 02:55:46 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: bridgetask.pm,v 1.149 2006/05/12 05:18:34 albertel Exp $
+# $Id: bridgetask.pm,v 1.150 2006/05/12 06:55:46 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -79,39 +79,53 @@
$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 @@
$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) {
@@ -284,7 +302,8 @@
( $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; }
@@ -435,6 +454,11 @@
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 '' && $slot_name eq '') {
+ &create_new_version('Task');
+ ($version,$previous)=&get_version();
+ }
+
push(@Apache::inputtags::status,$status);
$Apache::inputtags::slot_name=$slot_name;
my $expression='$external::datestatus="'.$status.'";';
@@ -1727,9 +1751,11 @@
}
@instances = &Math::Random::random_permutation(@instances);
$instance = $instances[($version-1)%scalar(@instances)];
- $Apache::lonhomework::results{"resource.$version.0.$dim.instance"} =
- $instance;
- $Apache::lonhomework::results{'INTERNAL_store'} = 1;
+ if ($version =~ /^\d$/) {
+ $Apache::lonhomework::results{"resource.$version.0.$dim.instance"} =
+ $instance;
+ $Apache::lonhomework::results{'INTERNAL_store'} = 1;
+ }
&Apache::response::poprandomnumber();
return $instance;
}