version 1.390, 2017/11/16 13:31:29
|
version 1.394, 2018/12/27 20:10:31
|
Line 78 sub java_not_enabled {
|
Line 78 sub java_not_enabled {
|
sub coursepreflink { |
sub coursepreflink { |
my ($text,$category)=@_; |
my ($text,$category)=@_; |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
return '<a target="_top" href="'.&HTML::Entities::encode("/adm/courseprefs?phase=display&actions=$category",'<>&"').'"><span class="LC_setting">'.$text.'</span></a>'; |
my $target =' target="_top"'; |
|
if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { |
|
$target =''; |
|
} |
|
return '<a'.$target.' href="'.&HTML::Entities::encode("/adm/courseprefs?phase=display&actions=$category",'<>&"').'"><span class="LC_setting">'.$text.'</span></a>'; |
} else { |
} else { |
return ''; |
return ''; |
} |
} |
Line 101 sub direct_parm_link {
|
Line 105 sub direct_parm_link {
|
$filter=&entity_encode($filter); |
$filter=&entity_encode($filter); |
$part=&entity_encode($part); |
$part=&entity_encode($part); |
if (($symb) && (&Apache::lonnet::allowed('opa')) && ($target ne 'tex')) { |
if (($symb) && (&Apache::lonnet::allowed('opa')) && ($target ne 'tex')) { |
return "<a target='_top' href='/adm/parmset?symb=$symb&filter=$filter&part=$part'><span class='LC_setting'>$linktext</span></a>"; |
my $target=' target="_top"'; |
|
if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { |
|
$target=''; |
|
} |
|
return "<a".$target." href=\"/adm/parmset?symb=$symb&filter=$filter&part=$part\"><span class=\"LC_setting\">$linktext</span></a>"; |
} else { |
} else { |
return $linktext; |
return $linktext; |
} |
} |
} |
} |
############################################## |
############################################## |
Line 1344 $(document).ready(function(){
|
Line 1352 $(document).ready(function(){
|
});'; |
});'; |
} |
} |
|
|
|
sub countdown { |
|
|
|
# Code to put a due date countdown in 'duedatecountdown' span. |
|
# This is currently located in the breadcrumb headers. |
|
# note that the dueDateLayout is internatinoalized below. |
|
# Here document is used to support the substitution into the javascript below. |
|
# ..which unforunately necessitates escaping the $'s in the javascript. |
|
# There are several times of importance |
|
# |
|
# serverDueDate - The absolute time at which the problem expires. |
|
# serverTime - The server's time when the problem finished computing. |
|
# clientTime - The client's time...as close to serverTime as possible. |
|
# The clientTime will be slightly later due to |
|
# 1. The latency between problem computation and |
|
# the first network action. |
|
# 2. The time required between the page load-start and the actual |
|
# initial javascript execution that got clientTime. |
|
# These are used as follows: |
|
# The difference between clientTime and serverTime are used to |
|
# correct for differences in clock settings between the browser's system and the |
|
# server's. |
|
# |
|
# The difference between clientTime and the time at which the ready() method |
|
# starts executing is used to estimate latencies for page load and submission. |
|
# Since this is an estimate, it is doubled. The latency estimate + one minute |
|
# is used to determine when the countdown timer turns red to warn the user |
|
# to think about submitting. |
|
|
|
|
|
my $dueDateLayout = &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn} [_1]', |
|
"<span id='submitearly'></span>"); |
|
my $early = '- <b>'.&mt('Submit Early').'</b>'; |
|
my $pastdue = '- <b>'.&mt('Past Due').'</b>'; |
|
return <<"JAVASCRIPT"; |
|
|
|
var documentReadyTime; |
|
|
|
\$(document).ready(function() { |
|
if (typeof(dueDate) != "undefined") { |
|
documentReadyTime = (new Date()).getTime(); |
|
\$("#duedatecountdown").countdown({until: dueDate, compact: true, |
|
layout: "$dueDateLayout", |
|
onTick: function (periods) { |
|
var latencyEstimate = (documentReadyTime - clientTime) * 2; |
|
if(\$.countdown.periodsToSeconds(periods) < (300 + latencyEstimate)) { |
|
\$("#submitearly").html("$early"); |
|
if (\$.countdown.periodsToSeconds(periods) < 1) { |
|
\$("#submitearly").html("$pastdue"); |
|
} |
|
} |
|
if(\$.countdown.periodsToSeconds(periods) < (60 + latencyEstimate)) { |
|
\$(this).css("color", "red"); //Highlight last minute. |
|
} |
|
} |
|
}); |
|
} |
|
}); |
|
|
|
JAVASCRIPT |
|
|
|
} |
|
|
# ----------------------------------------- Script to activate only some fields |
# ----------------------------------------- Script to activate only some fields |
|
|
sub htmlareaselectactive { |
sub htmlareaselectactive { |
Line 1567 sub htmlareaselectactive {
|
Line 1637 sub htmlareaselectactive {
|
|
|
}); |
}); |
'; |
'; |
$output .= &color_picker; |
$output .= &color_picker(); |
|
|
# Code to put a due date countdown in 'duedatecountdown' span. |
$output .= &countdown(); |
# This is currently located in the breadcrumb headers. |
|
# note that the dueDateLayout is internatinoalized below. |
|
# Here document is used to support the substitution into the javascript below. |
|
# ..which unforunately necessitates escaping the $'s in the javascript. |
|
# There are several times of importance |
|
# |
|
# serverDueDate - The absolute time at which the problem expires. |
|
# serverTime - The server's time when the problem finished computing. |
|
# clientTime - The client's time...as close to serverTime as possible. |
|
# The clientTime will be slightly later due to |
|
# 1. The latency between problem computation and |
|
# the first network action. |
|
# 2. The time required between the page load-start and the actual |
|
# initial javascript execution that got clientTime. |
|
# These are used as follows: |
|
# The difference between clientTime and serverTime are used to |
|
# correct for differences in clock settings between the browser's system and the |
|
# server's. |
|
# |
|
# The difference between clientTime and the time at which the ready() method |
|
# starts executing is used to estimate latencies for page load and submission. |
|
# Since this is an estimate, it is doubled. The latency estimate + one minute |
|
# is used to determine when the countdown timer turns red to warn the user |
|
# to think about submitting. |
|
|
|
my $dueDateLayout = &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn} [_1]', |
$output .= <<"JAVASCRIPT"; |
"<span id='submitearly'></span>"); |
|
my $early = '- <b>'.&mt('Submit Early').'</b>'; |
|
my $pastdue = '- <b>'.&mt('Past Due').'</b>'; |
|
$output .= <<JAVASCRIPT; |
|
|
|
var documentReadyTime; |
|
|
|
\$(document).ready(function() { |
|
if (typeof(dueDate) != "undefined") { |
|
documentReadyTime = (new Date()).getTime(); |
|
\$("#duedatecountdown").countdown({until: dueDate, compact: true, |
|
layout: "$dueDateLayout", |
|
onTick: function (periods) { |
|
var latencyEstimate = (documentReadyTime - clientTime) * 2; |
|
if(\$.countdown.periodsToSeconds(periods) < (300 + latencyEstimate)) { |
|
\$("#submitearly").html("$early"); |
|
if (\$.countdown.periodsToSeconds(periods) < 1) { |
|
\$("#submitearly").html("$pastdue"); |
|
} |
|
} |
|
if(\$.countdown.periodsToSeconds(periods) < (60 + latencyEstimate)) { |
|
\$(this).css("color", "red"); //Highlight last minute. |
|
} |
|
} |
|
}); |
|
} |
|
}); |
|
|
|
/* This code describes the spellcheck options that will be used for |
/* This code describes the spellcheck options that will be used for |
items with class 'spellchecked'. It is necessary for those objects' |
items with class 'spellchecked'. It is necessary for those objects' |
Line 1914 returns: nothing
|
Line 1933 returns: nothing
|
} |
} |
} |
} |
} |
} |
|
my $target = '_top'; |
|
if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { |
|
$target=''; |
|
} |
$menulink = { href =>'/adm/menu', |
$menulink = { href =>'/adm/menu', |
title =>'Go to main menu', |
title =>'Go to main menu', |
target =>'_top', |
target =>$target, |
text =>$description, |
text =>$description, |
no_mt =>$no_mt_descr, }; |
no_mt =>$no_mt_descr, }; |
if($last) { |
if($last) { |
Line 1935 returns: nothing
|
Line 1958 returns: nothing
|
class => 'LC_menubuttons_link', |
class => 'LC_menubuttons_link', |
}; |
}; |
if ($env{'request.noversionuri'} eq '/adm/searchcat') { |
if ($env{'request.noversionuri'} eq '/adm/searchcat') { |
$hashref->{'target'} = '_top'; |
$hashref->{'target'} = '_top'; |
|
if (($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) { |
|
$hashref->{'target'} = ''; |
|
} |
} |
} |
$links=&htmltag( 'a','<img src="/res/adm/pages/tolastloc.png" alt="'.$alttext.'" class="LC_icon" />', |
$links=&htmltag( 'a','<img src="/res/adm/pages/tolastloc.png" alt="'.$alttext.'" class="LC_icon" />', |
$hashref); |
$hashref); |
Line 3482 function go(url) {
|
Line 3508 function go(url) {
|
currentURL = null; |
currentURL = null; |
currentSymb= null; |
currentSymb= null; |
var lcHostname = setLCHost(); |
var lcHostname = setLCHost(); |
window.location.href=lcHostname+url; |
if (lcHostname!='' && lcHostname!= null) { |
|
var RegExp = /^https?\:/; |
|
if (RegExp.test(url)) { |
|
window.location.href=url; |
|
} else { |
|
window.location.href=lcHostname+url; |
|
} |
|
} else { |
|
window.location.href=url; |
|
} |
} |
} |
} |
} |
|
|
Line 3528 sub jump_to_editres {
|
Line 3563 sub jump_to_editres {
|
$anchor = $3; |
$anchor = $3; |
$is_ext = 1; |
$is_ext = 1; |
if (($extlink !~ /^https:/) && ($ENV{'SERVER_PORT'} == 443)) { |
if (($extlink !~ /^https:/) && ($ENV{'SERVER_PORT'} == 443)) { |
$usehttp = 1; |
unless (&Apache::lonnet::uses_sts()) { |
|
$usehttp = 1; |
|
} |
} elsif ($env{'request.use_absolute'}) { |
} elsif ($env{'request.use_absolute'}) { |
if ($env{'request.use_absolute'} =~ m{^https://}) { |
if ($env{'request.use_absolute'} =~ m{^https://}) { |
$usehttps = 1; |
$usehttps = 1; |
Line 3541 sub jump_to_editres {
|
Line 3578 sub jump_to_editres {
|
($env{'course.'.$env{'request.course.id'}.'.num'} eq $cnum) && |
($env{'course.'.$env{'request.course.id'}.'.num'} eq $cnum) && |
($env{'course.'.$env{'request.course.id'}.'.domain'} eq $cdom)) { |
($env{'course.'.$env{'request.course.id'}.'.domain'} eq $cdom)) { |
if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://}) { |
if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://}) { |
$usehttp = 1; |
unless (&Apache::lonnet::uses_sts()) { |
|
$usehttp = 1; |
|
} |
} |
} |
} |
} |
} elsif ($env{'request.use_absolute'}) { |
} elsif ($env{'request.use_absolute'}) { |