version 1.512.2.24.2.6, 2023/09/11 12:08:18
|
version 1.512.2.24.2.13, 2024/02/28 00:19:04
|
Line 273 sub homework_js {
|
Line 273 sub homework_js {
|
} |
} |
return &Apache::loncommon::resize_textarea_js(). |
return &Apache::loncommon::resize_textarea_js(). |
&Apache::loncommon::colorfuleditor_js(). |
&Apache::loncommon::colorfuleditor_js(). |
&setmode_javascript(). |
&Apache::lonxml::setmode_javascript(). |
<<"JS"; |
<<"JS"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 385 var postsubmit = '$postsubmit';
|
Line 385 var postsubmit = '$postsubmit';
|
JS |
JS |
} |
} |
|
|
sub setmode_javascript { |
|
return <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
function setmode(form,probmode) { |
|
var initial = form.problemmode.value; |
|
form.problemmode.value = probmode; |
|
form.submit(); |
|
form.problemmode.value = initial; |
|
} |
|
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
|
|
sub page_start { |
sub page_start { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name, |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name, |
$extra_head)=@_; |
$extra_head)=@_; |
Line 421 sub page_start {
|
Line 406 sub page_start {
|
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
if (&Apache::lonhtmlcommon::htmlareabrowser()) { |
my %textarea_args; |
my %textarea_args; |
if (($env{'request.state'} ne 'construct') || |
if (($env{'request.state'} ne 'construct') || |
($env{'environment.nocodemirror'})) { |
(&Apache::loncommon::nocodemirror())) { |
%textarea_args = ( |
%textarea_args = ( |
dragmath => 'math', |
dragmath => 'math', |
); |
); |
Line 708 sub setup_rndseed {
|
Line 693 sub setup_rndseed {
|
} |
} |
$env{'form.'.$Apache::inputtags::part.'.rndseed'}=$rndseed; |
$env{'form.'.$Apache::inputtags::part.'.rndseed'}=$rndseed; |
} |
} |
if ( ($env{'form.resetdata'} eq &mt('New Problem Variation') |
if ( ($env{'form.resetdata'} eq 'new_problem_variation' |
&& $env{'form.submitted'} eq 'yes') || |
&& $env{'form.submitted'} eq 'yes') || |
$env{'form.newrandomization'} eq &mt('New Randomization')) { |
$env{'form.newrandomization'} eq &mt('New Randomization')) { |
srand(time); |
srand(time); |
Line 791 sub problem_edit_action_button {
|
Line 776 sub problem_edit_action_button {
|
|
|
sub problem_edit_buttons { |
sub problem_edit_buttons { |
my ($mode)=@_; |
my ($mode)=@_; |
|
my %editors = &Apache::loncommon::permitted_editors(); |
# Buttons that save |
# Buttons that save |
my $result = '<div style="float:right">'; |
my $result = '<div style="float:right">'; |
if ($mode eq 'editxml') { |
if ($mode eq 'editxml') { |
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
if ($editors{'xml'}) { |
|
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
|
} |
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
} else { |
} else { |
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
if ($editors{'edit'}) { |
|
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
|
} |
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
} |
} |
$result.="\n</div>\n"; |
$result.="\n</div>\n"; |
Line 805 sub problem_edit_buttons {
|
Line 795 sub problem_edit_buttons {
|
$result .= '<div>'. |
$result .= '<div>'. |
&problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1); |
&problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1); |
if ($mode eq 'editxml') { |
if ($mode eq 'editxml') { |
$result.=&problem_edit_action_button('subedit','edit','e','Edit',1); |
if ($editors{'edit'}) { |
|
$result.=&problem_edit_action_button('subedit','edit','e','Edit',1); |
|
} |
|
if ($editors{'daxe'}) { |
|
$result.=&problem_edit_action_button('subdaxe','daxe','w','Edit with Daxe',1); |
|
} |
$result.=&problem_edit_action_button('subundo','undoxml','u','Undo',1); |
$result.=&problem_edit_action_button('subundo','undoxml','u','Undo',1); |
if ($env{'environment.nocodemirror'}) { |
if (&Apache::loncommon::nocodemirror()) { |
$result.=&Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1); |
$result.=&Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1); |
} |
} |
} else { |
} else { |
$result.=&problem_edit_action_button('subeditxml','editxml','x','EditXML',1); |
if ($editors{'xml'}) { |
|
$result.=&problem_edit_action_button('subeditxml','editxml','x','EditXML',1); |
|
} |
|
if ($editors{'daxe'}) { |
|
$result.=&problem_edit_action_button('subdaxe','daxe','w','Edit with Daxe',1); |
|
} |
$result.=&problem_edit_action_button('subundo','undo','u','Undo',1); |
$result.=&problem_edit_action_button('subundo','undo','u','Undo',1); |
} |
} |
$result.="\n</div>"; |
$result.="\n</div>"; |
Line 825 sub problem_edit_header {
|
Line 825 sub problem_edit_header {
|
<div class="LC_edit_problem_header"> |
<div class="LC_edit_problem_header"> |
<div class="LC_edit_problem_header_title"> |
<div class="LC_edit_problem_header_title"> |
'.&mt('Problem Editing').$mode.&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').' |
'.&mt('Problem Editing').$mode.&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').' |
</div><div class="LC_edit_actionbar" id="actionbar">'. |
</div><div class="LC_edit_actionbar" id="actionbar">'. |
'<input type="hidden" name="problemmode" value="saveedit" />'. |
'<input type="hidden" name="problemmode" value="saveedit" />'. |
&problem_edit_buttons(); |
&problem_edit_buttons(); |
|
|
$return .= '</div></div>' . &Apache::lonxml::message_location(); |
$return .= '</div></div>' . &Apache::lonxml::message_location(); |
$return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" /> |
$return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" /> |
Line 884 sub option {
|
Line 884 sub option {
|
|
|
sub problem_web_to_edit_header { |
sub problem_web_to_edit_header { |
my ($rndseed)=@_; |
my ($rndseed)=@_; |
|
my %editors = &Apache::loncommon::permitted_editors(); |
my $result .= '<div class="LC_edit_problem_header">'; |
my $result .= '<div class="LC_edit_problem_header">'; |
|
|
if (!$Apache::lonhomework::parsing_a_task) { |
if (!$Apache::lonhomework::parsing_a_task) { |
Line 983 $show_all
|
Line 984 $show_all
|
</div> |
</div> |
<input type="submit" name="changeproblemmode" value="'.&mt("Change View").'" /> |
<input type="submit" name="changeproblemmode" value="'.&mt("Change View").'" /> |
<input type="submit" name="clear_style_file" accesskey="d" value="'.&mt('Show Default View').'" /> |
<input type="submit" name="clear_style_file" accesskey="d" value="'.&mt('Show Default View').'" /> |
<input type="submit" name="resetdata" accesskey="r" value="'.&mt('Reset Submissions').'" /> |
<button type="submit" name="resetdata" accesskey="r" value="reset_submissions"> |
|
'.&mt('Reset Submissions').'</button> |
</div> |
</div> |
<hr /> |
<hr /> |
<div class="LC_edit_problem_header_randomize_row"> |
<div class="LC_edit_problem_header_randomize_row"> |
Line 1012 $show_all
|
Line 1014 $show_all
|
<hr /> |
<hr /> |
<div>'; |
<div>'; |
$result.='<input type="hidden" name="problemmode" value="view" />'; |
$result.='<input type="hidden" name="problemmode" value="view" />'; |
$result .= '<input type="button" name="submitmode" accesskey="e" value="'.&mt('Edit').'" '. |
if ($editors{'edit'}) { |
'onclick="javascript:setmode(this.form,'."'edit'".')" />'; |
$result .= '<input type="button" name="submitmode" accesskey="e" value="'.&mt('Edit').'" '. |
$result .= '<input type="button" name="submitmode" accesskey="x" value="'.&mt('EditXML').'" '. |
'onclick="javascript:setmode(this.form,'."'edit'".')" />'; |
'onclick="javascript:setmode(this.form,'."'editxml'".')" />'; |
} |
|
if ($editors{'xml'}) { |
|
$result .= '<input type="button" name="submitmode" accesskey="x" value="'.&mt('EditXML').'" '. |
|
'onclick="javascript:setmode(this.form,'."'editxml'".')" />'; |
|
} |
|
if (($editors{'daxe'}) && |
|
($env{'browser.type'} ne 'explorer' || $env{'browser.version'} > 9)) { |
|
my $uri = $env{'request.uri'}; |
|
my $daxeurl = '/daxepage'.$uri; |
|
$result .= '<input type="button" accesskey="w" value="'.&mt('Edit with Daxe').'" '. |
|
'onclick="javascript:setmode(this.form,'."'daxe'".')" />'; |
|
} |
$result.=' |
$result.=' |
</div> |
</div> |
<hr /> |
<hr /> |
Line 1042 sub initialize_storage {
|
Line 1055 sub initialize_storage {
|
|| $Apache::lonhomework::type eq 'practice') { |
|| $Apache::lonhomework::type eq 'practice') { |
|
|
my $namespace = $symb || $env{'request.uri'}; |
my $namespace = $symb || $env{'request.uri'}; |
if ($env{'form.resetdata'} eq &mt('Reset Submissions') || |
if ($env{'form.resetdata'} eq 'reset_submissions' || |
($env{'form.resetdata'} eq &mt('New Problem Variation') |
($env{'form.resetdata'} eq 'new_problem_variation' |
&& $env{'form.submitted'} eq 'yes') || |
&& $env{'form.submitted'} eq 'yes') || |
$env{'form.newrandomization'} eq &mt('New Randomization')) { |
$env{'form.newrandomization'} eq &mt('New Randomization')) { |
&Apache::lonnet::tmpreset($namespace,'',$domain,$name); |
&Apache::lonnet::tmpreset($namespace,'',$domain,$name); |
Line 1383 sub needs_linkprot_passback {
|
Line 1396 sub needs_linkprot_passback {
|
$lti_in_use = $domlti{$itemnum}; |
$lti_in_use = $domlti{$itemnum}; |
} |
} |
my ($state,$others,$listed,$scope,$protect,$display,$target,$exit) = split(/,/,$deeplink); |
my ($state,$others,$listed,$scope,$protect,$display,$target,$exit) = split(/,/,$deeplink); |
my $passback; |
my ($passback,$pbscope); |
if ($scope eq 'resource') { |
if ($scope eq 'res') { |
if ($deeplink_symb eq $symb) { |
if ($deeplink_symb eq $symb) { |
$passback = 1; |
$passback = 1; |
|
$pbscope = 'resource'; |
} |
} |
} elsif ($scope eq 'map') { |
} elsif ($scope eq 'map') { |
if (&Apache::lonnet::clutter($deeplink_map) eq $map) { |
if (&Apache::lonnet::clutter($deeplink_map) eq $map) { |
$passback = 1; |
$passback = 1; |
|
$pbscope = 'nonrec'; |
|
} |
|
} elsif ($scope eq 'rec') { |
|
if (&Apache::lonnet::clutter($deeplink_map) eq $map) { |
|
$passback = 1; |
|
$pbscope = 'map'; |
|
} else { |
|
my @recurseup = &Apache::lonnet::get_map_hierarchy($map,$env{'request.course.id'}); |
|
if (grep(/^\Q$deeplink_map\E$/,@recurseup)) { |
|
$passback = 1; |
|
$pbscope = 'map'; |
|
} |
} |
} |
} elsif ($scope eq 'recurse') { |
|
#FIXME check if $deeplink_map contains $map |
|
$passback = 1; |
|
} |
} |
return ($passback,$scope,$deeplink_map,$deeplink_symb,$crsdef,$itemnum,$lti_in_use); |
return ($passback,$pbscope,$deeplink_map,$deeplink_symb,$crsdef,$itemnum,$lti_in_use); |
} |
} |
} |
} |
} |
} |
Line 1538 sub store_aggregates {
|
Line 1561 sub store_aggregates {
|
} |
} |
} |
} |
|
|
|
sub access_status_msg { |
|
my ($mode,$status,$symb,$target,$ipused,$accessmsg) = @_; |
|
my $msg; |
|
if ($target eq 'web') { |
|
if ($status eq 'UNAVAILABLE') { |
|
$msg.='<p class="LC_error">'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</p>'; |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.='<p class="LC_warning">'.&mt('You are not currently signed up to work at this time and/or place.').'</p>'; |
|
} elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || |
|
($status eq 'NOTRESERVABLE')) { |
|
$msg.='<p class="LC_warning">'.&mt('Access requires reservation to work at specific time/place.').'</p>'; |
|
} elsif ($status ne 'NOT_YET_VIEWED') { |
|
$msg.='<p class="LC_warning">'.&mt('Not open to be viewed').'</p>'; |
|
} |
|
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
|
$msg.=&mt('The problem ').$accessmsg; |
|
} elsif ($status eq 'UNCHECKEDOUT') { |
|
$msg.=&checkout_msg(); |
|
} elsif ($status eq 'NOT_YET_VIEWED') { |
|
$msg.=&firstaccess_msg($accessmsg,$symb); |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE') { |
|
$msg.=&mt('Available to make a reservation.').' '.&mt('Reservation window closes [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'end')). |
|
'<br />'. |
|
&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE_LATER') { |
|
$msg.=&mt('Window to make a reservation will open [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'start')); |
|
} elsif ($status eq 'NOTRESERVABLE') { |
|
$msg.=&mt('Not available to make a reservation.'); |
|
} |
|
$msg.='<br />'; |
|
} elsif ($target eq 'tex') { |
|
my $startminipage = ($env{'form.problem_split'}=~/yes/i)? '' |
|
: '\begin{minipage}{\textwidth}'; |
|
|
|
$msg ='\noindent \vskip 1 mm '. |
|
$startminipage.'\vskip 0 mm'; |
|
if ($status eq 'UNAVAILABLE') { |
|
$msg.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.'); |
|
} elsif ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
|
$msg.=&mt('Problem is not open to be viewed. It')." $accessmsg"; |
|
} else { |
|
$msg.=&mt('Problem is not open to be viewed.'); |
|
} |
|
$msg .= " \\vskip 0 mm "; |
|
} |
|
return $msg; |
|
} |
|
|
|
sub checkin_prompt { |
|
my ($target,$slot_name,$slot,$type) = @_; |
|
my $result; |
|
if ($target eq 'web') { |
|
$result = &Apache::bridgetask::proctor_validation_screen($slot); |
|
} elsif ($target eq 'grade') { |
|
if (!&Apache::bridgetask::proctor_check_auth($slot_name,$slot,$type)) { |
|
$result = &mt('An error occurred during check-in'); |
|
} |
|
} |
|
return $result; |
|
} |
|
|
|
sub selfcheckin_resource { |
|
my ($resource_due,$slot_name,$slot,$symb) = @_; |
|
if ($slot_name ne '') { |
|
my $checked_in = |
|
$Apache::lonhomework::history{'resource.0.checkedin'}; |
|
if ($checked_in eq '') { |
|
# unproctored slot access, self checkin |
|
my $check = &Apache::bridgetask::check_in('problem',undef,undef, |
|
$slot_name); |
|
if ($check =~ /^error: /) { |
|
&Apache::lonnet::logthis("Error during self-checkin of problem (symb: $symb) using slot: $slot_name"); |
|
} else { |
|
$checked_in = $Apache::lonhomework::results{"resource.0.checkedin"}; |
|
} |
|
} |
|
if ((ref($slot) eq 'HASH') && ($checked_in ne '')) { |
|
if ($slot->{'starttime'} < time()) { |
|
if (!$resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} elsif ($slot->{'endtime'} < $resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} |
|
} |
|
} |
|
} |
|
return $resource_due; |
|
} |
|
|
sub checkout_msg { |
sub checkout_msg { |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'resource'=>'The resource needs to be checked out', |
'resource'=>'The resource needs to be checked out', |
Line 1831 sub start_problem {
|
Line 1947 sub start_problem {
|
} |
} |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$rndseedval.'" />'. |
$rndseedval.'" />'. |
'<input type="submit" name="resetdata" |
'<button type="submit" name="resetdata" |
value="'.&mt('New Problem Variation').'" />'; |
value="new_problem_variation">'.&mt('New Problem Variation').'</button>'; |
if (exists($env{'form.username'})) { |
if (exists($env{'form.username'})) { |
$form_tag_start.= |
$form_tag_start.= |
'<input type="hidden" name="username" |
'<input type="hidden" name="username" |
Line 1884 sub start_problem {
|
Line 2000 sub start_problem {
|
( $status eq 'INVALID_ACCESS')) { |
( $status eq 'INVALID_ACCESS')) { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
if ( $target eq "web" ) { |
if (($status eq 'NOT_YET_VIEWED') && ($firstaccres)) { |
my $msg; |
$result .= '<p class="LC_error">'. |
if ($status eq 'UNAVAILABLE') { |
&mt('A problem occurred when trying to start the timer.').'</p>'; |
$msg.='<p class="LC_error">'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</p>'; |
} |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
$result .= &access_status_msg('problem',$status,$symb,$target,'',$accessmsg); |
$msg.='<p class="LC_warning">'.&mt('You are not currently signed up to work at this time and/or place.').'</p>'; |
|
} elsif (($status eq 'RESERVABLE') || ($status eq 'RESERVABLE_LATER') || |
|
($status eq 'NOTRESERVABLE')) { |
|
$msg.='<p class="LC_warning">'.&mt('Access requires reservation to work at specific time/place.').'</p>'; |
|
} elsif ($status ne 'NOT_YET_VIEWED') { |
|
$msg.='<p class="LC_warning">'.&mt('Not open to be viewed').'</p>'; |
|
} |
|
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
|
$msg.=&mt('The problem ').$accessmsg; |
|
} elsif ($status eq 'UNCHECKEDOUT') { |
|
$msg.=&checkout_msg(); |
|
} elsif ($status eq 'NOT_YET_VIEWED') { |
|
if ($firstaccres) { |
|
$msg .= '<p class="LC_error">'. |
|
&mt('A problem occurred when trying to start the timer.').'</p>'; |
|
} |
|
$msg.=&firstaccess_msg($accessmsg,$symb); |
|
} elsif ($status eq 'NOT_IN_A_SLOT') { |
|
$msg.=&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE') { |
|
$msg.=&mt('Available to make a reservation.').' '.&mt('Reservation window closes [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'end')). |
|
'<br />'. |
|
&Apache::bridgetask::add_request_another_attempt_button("Sign up for time to work"); |
|
} elsif ($status eq 'RESERVABLE_LATER') { |
|
$msg.=&mt('Window to make a reservation will open [_1].', |
|
&Apache::lonnavmaps::timeToHumanString($accessmsg,'start')); |
|
} elsif ($status eq 'NOTRESERVABLE') { |
|
$msg.=&mt('Not available to make a reservation.'); |
|
} |
|
$result.=$msg.'<br />'; |
|
} elsif ($target eq 'tex') { |
|
my $startminipage = ($env{'form.problem_split'}=~/yes/i)? '' |
|
: '\begin{minipage}{\textwidth}'; |
|
$result.='\noindent \vskip 1 mm '. |
|
$startminipage.'\vskip 0 mm'; |
|
if ($status eq 'UNAVAILABLE') { |
|
$result.=&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'\vskip 0 mm '; |
|
} else { |
|
$result.=&mt('Problem is not open to be viewed. It')." $accessmsg \\vskip 0 mm "; |
|
} |
|
} |
|
} elsif ($status eq 'NEEDS_CHECKIN') { |
} elsif ($status eq 'NEEDS_CHECKIN') { |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
if ($target eq 'web') { |
$result .= &checkin_prompt($target,$slot_name,$slot,'problem'); |
$result .= |
|
&Apache::bridgetask::proctor_validation_screen($slot); |
|
} elsif ($target eq 'grade') { |
|
&Apache::bridgetask::proctor_check_auth($slot_name,$slot, |
|
'problem'); |
|
} |
|
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
$resource_due = &Apache::lonhomework::due_date(0, $env{'request.symb'}); |
$resource_due = &Apache::lonhomework::due_date(0, $env{'request.symb'}); |
if ($slot_name ne '') { |
if ($slot_name ne '') { |
my $checked_in = |
$resource_due = &selfcheckin_resource($resource_due,$slot_name,$slot, |
$Apache::lonhomework::history{'resource.0.checkedin'}; |
$env{'request.symb'}); |
if ($checked_in eq '') { |
|
# unproctored slot access, self checkin |
|
&Apache::bridgetask::check_in('problem',undef,undef, |
|
$slot_name); |
|
$checked_in = |
|
$Apache::lonhomework::results{"resource.0.checkedin"}; |
|
} |
|
if ((ref($slot) eq 'HASH') && ($checked_in ne '')) { |
|
if ($slot->{'starttime'} < time()) { |
|
if (!$resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} elsif ($slot->{'endtime'} < $resource_due) { |
|
$resource_due = $slot->{'endtime'}; |
|
} |
|
} |
|
} |
|
} |
} |
if ($resource_due) { |
if ($resource_due) { |
my $time_left = $resource_due - time(); |
my $time_left = $resource_due - time(); |
Line 1977 sub start_problem {
|
Line 2029 sub start_problem {
|
if ($env{'request.state'} eq "construct") { |
if ($env{'request.state'} eq "construct") { |
$result.= &problem_web_to_edit_header($env{'form.rndseed'}); |
$result.= &problem_web_to_edit_header($env{'form.rndseed'}); |
if ($Apache::lonhomework::type eq 'practice') { |
if ($Apache::lonhomework::type eq 'practice') { |
$result.= '<input type="submit" name="resetdata" '. |
$result.= '<button type="submit" name="resetdata" '. |
'value="'.&mt('New Problem Variation').'" />'. |
'value="new_problem_variation">'.&mt('New Problem Variation').'</button>'. |
&practice_problem_header().'<hr />'; |
&practice_problem_header().'<hr />'; |
} elsif ($Apache::lonhomework::type eq 'randomizetry') { |
} elsif ($Apache::lonhomework::type eq 'randomizetry') { |
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
Line 2005 sub start_problem {
|
Line 2057 sub start_problem {
|
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
$result .= &select_metadata_hyphenation(); |
$result .= &select_metadata_hyphenation(); |
|
|
|
|
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result .= $form_tag_start.&problem_edit_header(); |
$result .= $form_tag_start.&problem_edit_header(); |
Line 2286 sub start_library {
|
Line 2336 sub start_library {
|
'<input type="hidden" name="submitted" value="yes" />'; |
'<input type="hidden" name="submitted" value="yes" />'; |
$result.=&problem_web_to_edit_header($rndseed); |
$result.=&problem_web_to_edit_header($rndseed); |
if ($Apache::lonhomework::type eq 'practice') { |
if ($Apache::lonhomework::type eq 'practice') { |
$result.= '<input type="submit" name="resetdata" '. |
$result.= '<button type="submit" name="resetdata" '. |
'value="'.&mt('New Problem Variation').'" />'. |
'value="new_problem_variation">'.&mt('New Problem Variation').'</button>'. |
&practice_problem_header().'<hr />'; |
&practice_problem_header().'<hr />'; |
} |
} |
} |
} |
Line 3239 sub end_startouttext {
|
Line 3289 sub end_startouttext {
|
.&Apache::edit::deletelist($target,$token) |
.&Apache::edit::deletelist($target,$token) |
.'</span></td>' |
.'</span></td>' |
.'<td><span id="math_'.$areaid.'">'; |
.'<td><span id="math_'.$areaid.'">'; |
if ($env{'environment.nocodemirror'}) { |
if (&Apache::loncommon::nocodemirror()) { |
$result.=&Apache::lonhtmlcommon::dragmath_button($areaid,1); |
$result.=&Apache::lonhtmlcommon::dragmath_button($areaid,1); |
} else { |
} else { |
$result.=' '; |
$result.=' '; |