--- loncom/homework/structuretags.pm 2014/12/15 18:44:20 1.526
+++ loncom/homework/structuretags.pm 2015/04/17 12:33:56 1.535
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.526 2014/12/15 18:44:20 raeburn Exp $
+# $Id: structuretags.pm,v 1.535 2015/04/17 12:33:56 droeschl Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -224,9 +224,55 @@ sub end_tex {
}
sub homework_js {
+ my ($postsubmit,$timeout);
+ if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) {
+ my $crstype;
+ if (&Apache::loncommon::course_type() eq 'Community') {
+ $crstype = 'community';
+ } else {
+ if ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) {
+ $crstype = 'official';
+ } elsif ($env{'course.'.$env{'request.course.id'}.'.internal.textbook'}) {
+ $crstype = 'textbook';
+ } else {
+ $crstype = 'unofficial';
+ }
+ }
+ $postsubmit = $env{'course.'.$env{'request.course.id'}.'.internal.postsubmit'};
+ if ($postsubmit eq '') {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
+ $postsubmit = $domdefs{'postsubmit'};
+ unless ($postsubmit eq 'off') {
+ $timeout = $domdefs{$crstype.'postsubtimeout'};
+ }
+ } elsif ($postsubmit eq '0') {
+ $postsubmit = 'off';
+ } elsif ($postsubmit eq '1') {
+ $postsubmit = 'on';
+ $timeout = $env{'course.'.$env{'request.course.id'}.'.internal.postsubtimeout'};
+ if ($timeout eq '') {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
+ $timeout = $domdefs{$crstype.'postsubtimeout'};
+ }
+ }
+ if ($timeout eq '') {
+ $timeout = 60;
+ }
+ } else {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($env{'request.role.domain'});
+ $postsubmit = $domdefs{'postsubmit'};
+ unless ($postsubmit eq 'off') {
+ $timeout = 60;
+ }
+ }
+ my $jstimeout = 0;
+ if ($timeout) {
+ $jstimeout = 1000 * $timeout;
+ }
return &Apache::loncommon::resize_textarea_js().
+ &Apache::loncommon::colorfuleditor_js().
&setmode_javascript().
- <<'JS';
+ <<"JS";
';
+
+ $return .= '
+
+
';
+ return $return;
}
sub problem_edit_footer {
+ my $resource = $env{'request.ambiguous'};
return ' |
'.
"\n\n".&Apache::loncommon::end_page();
@@ -1280,6 +1405,8 @@ sub reset_problem_globals {
undef($Apache::inputtags::part);
if ($type eq 'Task') {
undef($Apache::inputtags::slot_name);
+ } elsif ($type eq 'problem') {
+ undef($Apache::lonhomework::rawrndseed);
}
#don't undef this, lonhomework.pm takes care of this, we use this to
#detect if we try to do 2 problems in one file
@@ -1381,7 +1508,7 @@ sub start_problem {
my $resource_due;
my $name= &get_resource_name($parstack,$safeeval);
- my ($result,$form_tag_start,$slot_name,$slot);
+ my ($result,$form_tag_start,$slot_name,$slot,$probpartlist);
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' ||
$target eq 'tex') {
@@ -1397,9 +1524,18 @@ sub start_problem {
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'tex'
|| $target eq 'edit') {
- ($result,$form_tag_start) =
+ ($result,$form_tag_start,$probpartlist) =
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval,
$name);
+ } elsif (($target eq 'grade') && ($Apache::lonhomework::type eq 'randomizetry')) {
+ my ($symb)= &Apache::lonnet::whichuser();
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (ref($navmap)) {
+ my $res = $navmap->getBySymb($symb);
+ if (ref($res)) {
+ $probpartlist = $res->parts();
+ }
+ }
}
if ($target eq 'tex' and $env{'request.symb'} =~ m/\.page_/) {$result='';}
@@ -1409,7 +1545,20 @@ sub start_problem {
$target eq 'tex') {
#handle rand seed in construction space
- my $rndseed=&setup_rndseed($safeeval,$target);
+ my $rndseed=&setup_rndseed($safeeval,$target,$probpartlist);
+ if (($target eq 'grade') && &Apache::response::submitted()) {
+ if ($Apache::lonhomework::type eq 'randomizetry') {
+ $Apache::lonhomework::results{'resource.0.rndseed'}=$rndseed;
+ } else {
+ my @parts;
+ if (ref($probpartlist) eq 'ARRAY') {
+ @parts = @{$probpartlist};
+ }
+ unless (@parts) {
+ $Apache::lonhomework::results{'resource.0.rndseed'}=$Apache::lonhomework::rawrndseed;
+ }
+ }
+ }
my ($symb)=&Apache::lonnet::whichuser();
if ($env{'request.state'} ne "construct" &&
@@ -2466,6 +2615,14 @@ sub start_part {
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part);
my $newtype=&Apache::lonnet::EXT("resource.$id.type");
if ($newtype) { $Apache::lonhomework::type=$newtype; }
+ if ($Apache::lonhomework::type eq 'randomizetry') {
+ my $rndseed=&setup_rndseed($safeeval,$target);
+ if (($target eq 'grade') && &Apache::response::submitted()) {
+ $Apache::lonhomework::results{"resource.$id.rndseed"}=$rndseed;
+ }
+ } elsif (($target eq 'grade') && &Apache::response::submitted()) {
+ $Apache::lonhomework::results{"resource.$id.rndseed"}=$Apache::lonhomework::rawrndseed;
+ }
my $in_order_show=&ordered_show_check();
my $expression='$external::part=\''.$Apache::inputtags::part.'\';';
$expression.='$external::type=\''.$Apache::lonhomework::type.'\';';
@@ -2764,7 +2921,8 @@ sub end_startouttext {
if ($target eq 'edit') {
my $areaid = 'homework_edit_'.$Apache::lonxml::curdepth;
$text=&Apache::lonxml::get_all_text("endouttext",$parser,$style);
- $result.=&Apache::edit::start_table($token)."".&mt('Text Block')." | "
+ $result.=&Apache::edit::start_table($token)."
".&Apache::loncommon::insert_folding_button()
+ ." ".&mt('Text Block')." | "
.''.&mt('Delete?').' '
.&Apache::edit::deletelist($target,$token)
.' | '