--- loncom/homework/structuretags.pm 2023/02/03 17:09:41 1.512.2.24.2.2
+++ loncom/homework/structuretags.pm 2016/09/14 02:42:43 1.550
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# definition of tags that give a structure to a document
#
-# $Id: structuretags.pm,v 1.512.2.24.2.2 2023/02/03 17:09:41 raeburn Exp $
+# $Id: structuretags.pm,v 1.550 2016/09/14 02:42:43 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -63,7 +63,6 @@ use Apache::londefdef;
use Apache::lonenc();
use Apache::loncommon();
use Time::HiRes qw( gettimeofday tv_interval );
-use HTML::Entities();
use lib '/home/httpd/lib/perl/';
use LONCAPA;
@@ -227,9 +226,11 @@ 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') {
+ my $crstype = &Apache::loncommon::course_type();
+ if ($crstype eq 'Community') {
$crstype = 'community';
+ } elsif ($crstype eq 'Placement') {
+ $crstype = 'placement';
} else {
if ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) {
$crstype = 'official';
@@ -271,7 +272,7 @@ sub homework_js {
$jstimeout = 1000 * $timeout;
}
return &Apache::loncommon::resize_textarea_js().
- &Apache::loncommon::colorfuleditor_js().
+ &Apache::loncommon::colorfuleditor_js().
&setmode_javascript().
<<"JS";
@@ -495,9 +496,9 @@ sub page_start {
}
}
if ($needs_upload) {
- $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js().
- '';
+ $extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js()
+ .'';
}
}
@@ -528,23 +529,25 @@ sub page_start {
} elsif (!defined($found{'body'})
&& $env{'request.state'} eq 'construct') {
if ($target eq 'web' || $target eq 'edit') {
- # Breadcrumbs for Authoring Space
- &Apache::lonhtmlcommon::clear_breadcrumbs();
- &Apache::lonhtmlcommon::add_breadcrumb({
- 'text' => 'Authoring Space',
- 'href' => &Apache::loncommon::authorspace($env{'request.uri'}),
- });
- # breadcrumbs (and tools) will be created
- # in start_page->bodytag->innerregister
+ unless ($env{'form.inhibitmenu'} eq 'yes') {
+ # Breadcrumbs for Authoring Space
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ &Apache::lonhtmlcommon::add_breadcrumb({
+ 'text' => 'Authoring Space',
+ 'href' => &Apache::loncommon::authorspace($env{'request.uri'}),
+ });
+ # breadcrumbs (and tools) will be created
+ # in start_page->bodytag->innerregister
# FIXME Where are we?
-# &Apache::lonhtmlcommon::add_breadcrumb({
-# 'text' => 'Problem Editing', # 'Problem Testing'
-# 'href' => '',
-# });
- $pageheader =&Apache::loncommon::head_subbox(
- &Apache::loncommon::CSTR_pageheader());
- }
+# &Apache::lonhtmlcommon::add_breadcrumb({
+# 'text' => 'Problem Editing', # 'Problem Testing'
+# 'href' => '',
+# });
+ $pageheader = &Apache::loncommon::head_subbox(
+ &Apache::loncommon::CSTR_pageheader());
+ }
+ }
} elsif (!defined($found{'body'})) {
my %add_entries;
my $background=&Apache::lonxml::get_param('background',$parstack,
@@ -644,43 +647,17 @@ sub get_resource_name {
sub setup_rndseed {
my ($safeeval,$target,$probpartlist)=@_;
my ($symb)=&Apache::lonnet::whichuser();
- my ($questiontype,$set_safespace,$rndseed,$numtries,$reqtries);
+ my ($questiontype,$set_safespace,$rndseed);
if ($target eq 'analyze') {
$questiontype = $env{'form.grade_questiontype'};
}
unless (defined($questiontype)) {
$questiontype = $Apache::lonhomework::type;
}
- if ($Apache::lonhomework::type eq 'randomizetry') {
- my $partfortries = $Apache::inputtags::part;
-#
-# Where question type is "randomizetry" for a problem containing
-# a single part (and unless type is explicitly set to not be
-# "randomizetry" for that part), the number of tries used to
-# determine randomization will be for that part, and randomization
-# from calls to &random() in a perl script block before the part tag,
-# will change based on the number of tries, and value of the
-# "randomizeontries" parameter in effect for the single part.
-#
- if (ref($probpartlist) eq 'ARRAY') {
- if ((@{$probpartlist} == 1) && ($probpartlist->[0] ne $partfortries)) {
- if (&Apache::lonnet::EXT('resource.'.$probpartlist->[0].'.type') eq 'randomizetry') {
- $partfortries = $probpartlist->[0];
- } else {
- $partfortries = '';
- }
- }
- }
- if ($partfortries ne '') {
- $numtries = $Apache::lonhomework::history{"resource.$partfortries.tries"};
- $reqtries = &Apache::lonnet::EXT("resource.$partfortries.randomizeontries");
- }
- }
- if (($env{'request.state'} eq "construct")
- || ($symb eq '')
- || ($Apache::lonhomework::type eq 'practice')
- || ($Apache::lonhomework::history{'resource.CODE'})
- || (($env{'form.code_for_randomlist'}) && ($target eq 'analyze'))) {
+ if ($env{'request.state'} eq "construct"
+ || $symb eq ''
+ || $Apache::lonhomework::type eq 'practice'
+ || $Apache::lonhomework::history{'resource.CODE'}) {
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['rndseed']);
$rndseed=$env{'form.rndseed'};
@@ -689,19 +666,13 @@ sub setup_rndseed {
if (!$rndseed) {
$rndseed=time;
}
- unless ($env{'form.code_for_randomlist'}) {
- $env{'form.rndseed'}=$rndseed;
- }
+ $env{'form.rndseed'}=$rndseed;
}
- if ((($env{'request.state'} eq "construct") || ($symb eq '')) &&
+ if (($env{'request.state'} eq "construct") &&
($Apache::lonhomework::type eq 'randomizetry')) {
- if ($numtries) {
- if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) {
- my $inc = int($numtries/$reqtries);
- $rndseed += $inc;
- } else {
- $rndseed += $numtries;
- }
+ my $tries = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.tries"};
+ if ($tries) {
+ $rndseed += $tries;
}
$env{'form.'.$Apache::inputtags::part.'.rndseed'}=$rndseed;
}
@@ -723,11 +694,7 @@ sub setup_rndseed {
$rndseed=join(':',&Apache::lonnet::digest($rndseed));
}
}
- if (($env{'form.code_for_randomlist'}) && ($target eq 'analyze')) {
- $env{'form.CODE'} = $env{'form.code_for_randomlist'};
- $rndseed=&Apache::lonnet::rndseed();
- undef($env{'form.CODE'});
- } elsif ($Apache::lonhomework::history{'resource.CODE'}) {
+ if ($Apache::lonhomework::history{'resource.CODE'}) {
$rndseed=&Apache::lonnet::rndseed();
}
$set_safespace = 1;
@@ -739,7 +706,13 @@ sub setup_rndseed {
}
unless (($target eq 'analyze') && (defined($rndseed))) {
$rndseed=&Apache::lonnet::rndseed();
- my $curr_try = $numtries;
+ my $partfortries = $Apache::inputtags::part;
+ if (ref($probpartlist) eq 'ARRAY') {
+ if ((@{$probpartlist} == 1) && ($probpartlist->[0] ne $Apache::inputtags::part)) {
+ $partfortries = $probpartlist->[0];
+ }
+ }
+ my $curr_try = $Apache::lonhomework::history{"resource.$partfortries.tries"};
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') {
$curr_try ++;
}
@@ -747,6 +720,7 @@ sub setup_rndseed {
$rndseed = $1;
}
if ($curr_try) {
+ my $reqtries = &Apache::lonnet::EXT("resource.$partfortries.randomizeontries");
if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) {
my $inc = int(($curr_try-1)/$reqtries);
$rndseed += $inc;
@@ -822,9 +796,9 @@ sub problem_edit_header {
' . &Apache::lonxml::message_location();
$return .= '
@@ -852,7 +826,6 @@ sub problem_edit_header {
return $return;
}
-
sub problem_edit_footer {
my $resource = $env{'request.ambiguous'};
return '
@@ -928,7 +901,7 @@ sub problem_web_to_edit_header {
".&mt("Problem Type:")."