[LON-CAPA-cvs] cvs: loncom /homework bridgetask.pm lonhomework.pm structuretags.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Tue, 20 Jun 2006 03:33:56 -0000
albertel Mon Jun 19 23:33:56 2006 EDT
Modified files:
/loncom/homework lonhomework.pm structuretags.pm bridgetask.pm
Log:
- supporting checking of a sequence of resource in one swoop
Index: loncom/homework/lonhomework.pm
diff -u loncom/homework/lonhomework.pm:1.250 loncom/homework/lonhomework.pm:1.251
--- loncom/homework/lonhomework.pm:1.250 Mon Jun 12 14:45:35 2006
+++ loncom/homework/lonhomework.pm Mon Jun 19 23:33:55 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Homework handler
#
-# $Id: lonhomework.pm,v 1.250 2006/06/12 18:45:35 albertel Exp $
+# $Id: lonhomework.pm,v 1.251 2006/06/20 03:33:55 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -245,7 +245,8 @@
my ($status,$datemsg)=&check_access($id);
my $useslots = &Apache::lonnet::EXT("resource.$id.useslots");
- if ($useslots ne 'resource' && $useslots ne 'map') {
+ if ($useslots ne 'resource' && $useslots ne 'map'
+ && $useslots ne 'map_map') {
return ($status,$datemsg);
}
Index: loncom/homework/structuretags.pm
diff -u loncom/homework/structuretags.pm:1.356 loncom/homework/structuretags.pm:1.357
--- loncom/homework/structuretags.pm:1.356 Tue May 30 08:45:37 2006
+++ loncom/homework/structuretags.pm Mon Jun 19 23:33:55 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.356 2006/05/30 12:45:37 www Exp $
+# $Id: structuretags.pm,v 1.357 2006/06/20 03:33:55 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -342,9 +342,11 @@
}
sub initialize_storage {
+ my ($given_symb) = @_;
undef(%Apache::lonhomework::results);
undef(%Apache::lonhomework::history);
- my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+ my ($symb,$courseid,$domain,$name) =
+ &Apache::lonxml::whichuser($given_symb);
# anonymous users (CODEd exams) have no data
if ($name eq 'anonymous'
@@ -384,11 +386,13 @@
# Will increment totals for attempts, students, and corrects
# if running user has student role.
sub finalize_storage {
+ my ($given_symb) = @_;
my $result;
if (%Apache::lonhomework::results) {
my @remove = grep(/^INTERNAL_/,keys(%Apache::lonhomework::results));
delete(@Apache::lonhomework::results{@remove});
- my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser();
+ my ($symb,$courseid,$domain,$name) =
+ &Apache::lonxml::whichuser($given_symb);
if ($env{'request.state'} eq 'construct'
|| $symb eq ''
|| $Apache::lonhomework::type eq 'practice') {
Index: loncom/homework/bridgetask.pm
diff -u loncom/homework/bridgetask.pm:1.173 loncom/homework/bridgetask.pm:1.174
--- loncom/homework/bridgetask.pm:1.173 Fri Jun 16 05:27:38 2006
+++ loncom/homework/bridgetask.pm Mon Jun 19 23:33:55 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.173 2006/06/16 09:27:38 albertel Exp $
+# $Id: bridgetask.pm,v 1.174 2006/06/20 03:33:55 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -83,7 +83,12 @@
}
}
if ($authenticated) {
- &create_new_version($type,$user,$domain,$slot_name);
+ my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
+ if ( $useslots eq 'map_map') {
+ &checkin_resource($user,$domain,$slot_name);
+ } else {
+ &create_new_version($type,$user,$domain,$slot_name);
+ }
return 1;
}
}
@@ -91,8 +96,42 @@
return 0;
}
+sub check_in {
+ my ($type,$user,$domain,$slot_name) = @_;
+ my $useslots = &Apache::lonnet::EXT("resource.0.useslots");
+ if ( $useslots eq 'map_map') {
+ &check_in_sequence($user,$domain,$slot_name);
+ } else {
+ &create_new_version($type,$user,$domain,$slot_name);
+ }
+ return 1;
+}
+
+sub check_in_sequence {
+ my ($user,$domain,$slot_name) = @_;
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ my ($symb) = &Apache::lonxml::whichuser();
+ my ($map) = &Apache::lonnet::decode_symb($symb);
+ my @resources = $navmap->retrieveResources($map,undef,1,0);
+ my %old_history = %Apache::lonhomework::history;
+ my %old_results = %Apache::lonhomework::results;
+
+ foreach my $res (@resources) {
+ &Apache::lonxml::debug("doing ".$res->src);
+ &Apache::structuretags::initialize_storage($res->symb);
+ my $type = ($res->is_task()) ? 'Task' : 'problem';
+ &create_new_version($type,$user,$domain,$slot_name);
+ &Apache::structuretags::finalize_storage($res->symb);
+ }
+
+ %Apache::lonhomework::history = %old_history;
+ %Apache::lonhomework::results = %old_results;
+}
+
sub create_new_version {
my ($type,$user,$domain,$slot_name) = @_;
+
+ my $id = '0';
if ($type eq 'Task') {
# increment version
my $version=
@@ -107,28 +146,24 @@
}
#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;
- } else {
- $Apache::lonhomework::results{"resource.$version.0.checkedin"}=
- $env{'user.name'}.':'.$env{'user.domain'};
- }
- if (defined($slot_name)) {
- $Apache::lonhomework::results{"resource.$version.0.checkedin.slot"}=
- $slot_name;
+ $Apache::lonhomework::results{'resource.0.version'}=$version;
+ $id = "$version.0";
+ if (!defined($user) || defined($domain)) {
+ $user = $env{'user.name'};
+ $domain = $env{'user.domain'};
}
+
} 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;
- }
+ }
+
+ if (defined($user) && defined($domain)) {
+ $Apache::lonhomework::results{"resource.$id.checkedin"}=
+ $user.':'.$domain;
+ }
+ if (defined($slot_name)) {
+ $Apache::lonhomework::results{"resource.$id.checkedin.slot"}=
+ $slot_name;
}
}
@@ -563,7 +598,9 @@
($status,$accessmsg,my $slot_name,$slot) =
&Apache::lonhomework::check_slot_access('0','Task');
if ($status eq 'CAN_ANSWER' && $version eq '') {
- &create_new_version('Task',undef,undef,$slot_name);
+ # CAN_ANSWR mode, and no current version, unproctored access
+ # thus self-checkedin
+ &check_in('Task',undef,undef,$slot_name);
&add_to_queue('gradingqueue',{'type' => 'Task',
'time' => time,
'slot' => $slot_name});