--- loncom/homework/structuretags.pm 2014/11/28 18:23:04 1.525
+++ loncom/homework/structuretags.pm 2015/02/22 01:34:48 1.528
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.525 2014/11/28 18:23:04 raeburn Exp $
+# $Id: structuretags.pm,v 1.528 2015/02/22 01:34:48 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -225,6 +225,7 @@ sub end_tex {
sub homework_js {
return &Apache::loncommon::resize_textarea_js().
+ &Apache::loncommon::colorfuleditor_js().
&setmode_javascript().
<<'JS';
';
+
+ $return .= '
+
+
';
+ return $return;
}
sub problem_edit_footer {
+ my $resource = $env{'request.ambiguous'};
return ' |
'.
"\n\n".&Apache::loncommon::end_page();
@@ -884,7 +1138,7 @@ sub initialize_storage {
}
%Apache::lonhomework::history=
&Apache::lonnet::tmprestore($namespace,'',$domain,$name);
- my ($temp)=keys %Apache::lonhomework::history ;
+ my ($temp)=keys(%Apache::lonhomework::history) ;
&Apache::lonxml::debug("Return message of $temp");
} else {
%Apache::lonhomework::history=
@@ -892,7 +1146,7 @@ sub initialize_storage {
}
#ignore error conditions
- my ($temp)=keys %Apache::lonhomework::history ;
+ my ($temp)=keys(%Apache::lonhomework::history);
if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); }
}
@@ -1166,7 +1420,7 @@ sub store_aggregates {
}
}
}
- if (keys (%aggregate) > 0) {
+ if (keys(%aggregate) > 0) {
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate,
$cdomain,$cname);
}
@@ -1280,6 +1534,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 +1637,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 +1653,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 +1674,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.rawrndseed'}=$rndseed;
+ } else {
+ my @parts;
+ if (ref($probpartlist) eq 'ARRAY') {
+ @parts = @{$probpartlist};
+ }
+ unless (@parts) {
+ $Apache::lonhomework::results{'resource.0.rawrndseed'}=$Apache::lonhomework::rawrndseed;
+ }
+ }
+ }
my ($symb)=&Apache::lonnet::whichuser();
if ($env{'request.state'} ne "construct" &&
@@ -1617,7 +1895,7 @@ sub end_problem {
my $id = $Apache::inputtags::part;
my $weight = &Apache::lonnet::EXT("resource.$id.weight");
my $packages=&Apache::lonnet::metadata($env{'request.uri'},'packages');
- my @packages = split /,/,$packages;
+ my @packages = split(/,/,$packages);
my $allow_print_points = 0;
foreach my $partial_key (@packages) {
if ($partial_key=~m/^part_0$/) {
@@ -2351,8 +2629,8 @@ sub start_randomlist {
}
}
}
- for(0 .. $show) {
- $bodytext .= "$randomlist[ $idx_arr[$_] ]";
+ for my $i (0 .. $show) {
+ $bodytext .= "$randomlist[ $idx_arr[$i] ]";
}
&Apache::lonxml::newparser($parser,\$bodytext);
}
@@ -2466,6 +2744,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.rawrndseed"}=$rndseed;
+ }
+ } elsif (($target eq 'grade') && &Apache::response::submitted()) {
+ $Apache::lonhomework::results{"resource.$id.rawrndseed"}=$Apache::lonhomework::rawrndseed;
+ }
my $in_order_show=&ordered_show_check();
my $expression='$external::part=\''.$Apache::inputtags::part.'\';';
$expression.='$external::type=\''.$Apache::lonhomework::type.'\';';
@@ -2516,7 +2802,7 @@ sub start_part {
}
my $weight = &Apache::lonnet::EXT("resource.$id.weight");
my $allkeys=&Apache::lonnet::metadata($env{'request.uri'},'packages');
- my @allkeys = split /,/,$allkeys;
+ my @allkeys = split(/,/,$allkeys);
my $allow_print_points = 0;
foreach my $partial_key (@allkeys) {
if ($partial_key=~m/^part_(.*)$/) {
@@ -2764,7 +3050,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)
.' | '