version 1.410, 2023/09/27 14:52:26
|
version 1.421, 2025/03/06 16:51:36
|
Line 231 sub dependencycheck_js {
|
Line 231 sub dependencycheck_js {
|
$link = '/adm/dependencies?symb='.&HTML::Entities::encode($symb,'<>&"'); |
$link = '/adm/dependencies?symb='.&HTML::Entities::encode($symb,'<>&"'); |
} elsif ($folderpath) { |
} elsif ($folderpath) { |
$link = '/adm/dependencies?folderpath='.&HTML::Entities::encode($folderpath,'<>&"'); |
$link = '/adm/dependencies?folderpath='.&HTML::Entities::encode($folderpath,'<>&"'); |
$url = $uri; |
$url = $uri; |
} elsif ($uri =~ m{^/public/$match_domain/$match_courseid/syllabus$}) { |
} elsif ($uri =~ m{^/public/$match_domain/$match_courseid/syllabus$}) { |
$link = '/adm/dependencies'; |
$link = '/adm/dependencies'; |
} |
} |
$link .= (($link=~/\?/)?'&':'?').'title='. |
$link .= (($link=~/\?/)?'&':'?').'title='. |
&HTML::Entities::encode($title,'<>&"'); |
&HTML::Entities::encode($title,'<>&"'); |
if ($url) { |
if ($url) { |
$link .= '&url='.&HTML::Entities::encode($url,'<>&"'); |
$link .= '&url='.&HTML::Entities::encode($url,'<>&"'); |
} |
} |
|
&js_escape(\$link); |
return <<ENDJS; |
return <<ENDJS; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 541 sub date_setter {
|
Line 542 sub date_setter {
|
my ($formname,$dname,$currentvalue,$special,$includeempty,$state, |
my ($formname,$dname,$currentvalue,$special,$includeempty,$state, |
$no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink,$no_mm_ss,$no_ss) = @_; |
$no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink,$no_mm_ss,$no_ss) = @_; |
my $now = time; |
my $now = time; |
|
my %labels = &Apache::lonlocal::texthash( |
|
day => 'day', |
|
month => 'month', |
|
year => 'year', |
|
sec => 'seconds', |
|
min => 'minutes', |
|
hour => 'hours', |
|
); |
my $tzname; |
my $tzname; |
my ($sec,$min,$hour,$mday,$month,$year) = ('', '', undef,''.''.''); |
my ($sec,$min,$hour,$mday,$month,$year) = ('', '', undef,''.''.''); |
#other potentially useful values: wkday,yrday,is_daylight_savings |
#other potentially useful values: wkday,yrday,is_daylight_savings |
Line 642 document.$formname.$dname\_year.value,
|
Line 650 document.$formname.$dname\_year.value,
|
</script> |
</script> |
ENDJS |
ENDJS |
$result .= ' <span class="LC_nobreak">'; |
$result .= ' <span class="LC_nobreak">'; |
my $monthselector = qq{<select name="$dname\_month" $special $state onchange="javascript:$dname\_checkday()" >}; |
my $monthselector = qq{<select name="$dname\_month" $special $state onchange="javascript:$dname\_checkday()" aria-label="$labels{'month'}">}; |
# Month |
# Month |
my @Months = qw/January February March April May June |
my @Months = qw/January February March April May June |
July August September October November December/; |
July August September October November December/; |
Line 656 ENDJS
|
Line 664 ENDJS
|
} |
} |
$monthselector.= ' </select>'; |
$monthselector.= ' </select>'; |
# Day |
# Day |
my $dayselector = qq{<input type="text" name="$dname\_day" $state value="$mday" size="3" $special onchange="javascript:$dname\_checkday()" />}; |
my $dayselector = qq{<input type="text" name="$dname\_day" $state value="$mday" size="3" $special onchange="javascript:$dname\_checkday()" aria-label="$labels{'day'}" />}; |
# Year |
# Year |
my $yearselector = qq{<input type="text" name="$dname\_year" $state value="$year" size="5" $special onchange="javascript:$dname\_checkday()" />}; |
my $yearselector = qq{<input type="text" name="$dname\_year" $state value="$year" size="5" $special onchange="javascript:$dname\_checkday()" aria-label="$labels{'year'}" />}; |
# |
# |
my $hourselector = qq{<select name="$dname\_hour" $special $state >}; |
my $hourselector = qq{<select name="$dname\_hour" $special $state aria-label="$labels{'hour'}">}; |
if ($includeempty) { |
if ($includeempty) { |
$hourselector.=qq{<option value=''></option>}; |
$hourselector.=qq{<option value=''></option>}; |
} |
} |
Line 682 ENDJS
|
Line 690 ENDJS
|
$hourselector .= $timest." </option>\n"; |
$hourselector .= $timest." </option>\n"; |
} |
} |
$hourselector .= " </select>\n"; |
$hourselector .= " </select>\n"; |
my $minuteselector = qq{<input type="text" name="$dname\_minute" $special $state value="$min" size="3" />}; |
my $minuteselector = qq{<input type="text" name="$dname\_minute" $special $state value="$min" size="3" aria-label="$labels{'min'}" />}; |
my $secondselector= qq{<input type="text" name="$dname\_second" $special $state value="$sec" size="3" />}; |
my $secondselector= qq{<input type="text" name="$dname\_second" $special $state value="$sec" size="3" aria-label="$labels{'sec'}" />}; |
my $cal_link; |
my $cal_link; |
unless (($nolink) || ($state eq 'disabled')) { |
unless (($nolink) || ($state eq 'disabled')) { |
$cal_link = qq{<a href="javascript:$dname\_opencalendar()">}; |
$cal_link = qq{<a href="javascript:$dname\_opencalendar()">}; |
Line 1316 sub htmlareaheaders {
|
Line 1324 sub htmlareaheaders {
|
ENDEDITOR |
ENDEDITOR |
} |
} |
$s.=(<<ENDJQUERY); |
$s.=(<<ENDJQUERY); |
<script type="text/javascript" src="/adm/jQuery/js/jquery-3.2.1.min.js"></script> |
<script type="text/javascript" src="/adm/jQuery/js/jquery-3.7.1.min.js"></script> |
<script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.12.1.custom.min.js"></script> |
<script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.13.3.custom.min.js"></script> |
<link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.12.1.custom.min.css" /> |
<link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.13.3.custom.min.css" /> |
<script type="text/javascript" src="/adm/jpicker/js/jpicker-1.1.6.min.js" > |
<script type="text/javascript" src="/adm/jpicker/js/jpicker-1.1.6.min.js" > |
</script> |
</script> |
<link rel="stylesheet" type="text/css" href="/adm/jpicker/css/jPicker-1.1.6.min.css" /> |
<link rel="stylesheet" type="text/css" href="/adm/jpicker/css/jPicker-1.1.6.min.css" /> |
Line 1849 sub dash_to_minus_js {
|
Line 1857 sub dash_to_minus_js {
|
document.addEventListener("DOMContentLoaded", (event) => { |
document.addEventListener("DOMContentLoaded", (event) => { |
const numresp = document.querySelectorAll("input.LC_numresponse_text"); |
const numresp = document.querySelectorAll("input.LC_numresponse_text"); |
if (numresp.length > 0) { |
if (numresp.length > 0) { |
numresp.forEach((el) => { |
Array.from(numresp).forEach((el) => { |
el.addEventListener("paste", (e) => { |
el.addEventListener("paste", (e) => { |
e.preventDefault(); |
e.preventDefault(); |
e.stopPropagation(); |
e.stopPropagation(); |
let p = (e.clipboardData || window.clipboardData).getData("text"); |
let p = (e.clipboardData || window.clipboardData).getData("text"); |
p.toString(); |
p.toString(); |
p = p.replace(/\p{Dash}/gu, '-'); |
var regex; |
|
try |
|
{ |
|
regex = new RegExp ("\\p{Dash}", "gu"); |
|
} |
|
catch (e) { regex = new RegExp ("[\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2212\\u2E3A\\u2E3B\\u2E5D\\u301C\\uFE58\\uFE63\\uFF0D]","g"); } |
|
p = p.replace(regex,'-'); |
putInText(p); |
putInText(p); |
}); |
}); |
}); |
}); |
Line 1908 boolean, controls whether to include a l
|
Line 1922 boolean, controls whether to include a l
|
|
|
if 'nohelp' don't include the orange help link |
if 'nohelp' don't include the orange help link |
|
|
=item $css_class |
=item $crumbs_style |
|
|
optional name for the class to apply to the table for CSS |
optional style attribute for div containing breadcrumbs |
|
unless called from docs_breadcrumbs |
|
|
=item $no_mt |
=item $no_mt |
|
|
Line 1968 returns: nothing
|
Line 1983 returns: nothing
|
my %tools = (); |
my %tools = (); |
|
|
sub breadcrumbs { |
sub breadcrumbs { |
my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt, |
my ($component,$component_help,$menulink,$helplink,$crumbs_style,$no_mt, |
$CourseBreadcrumbs,$topic_help,$topic_help_text,$links_target) = @_; |
$CourseBreadcrumbs,$topic_help,$topic_help_text,$links_target) = @_; |
# |
# |
$css_class ||= 'LC_breadcrumbs'; |
|
|
|
# Make the faq and bug data cascade |
# Make the faq and bug data cascade |
my $faq = ''; |
my $faq = ''; |
my $bug = ''; |
my $bug = ''; |
Line 2074 returns: nothing
|
Line 2087 returns: nothing
|
|
|
if ($lasttext ne '') { |
if ($lasttext ne '') { |
$links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', |
$links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', |
$lasttext), {title => $lasttext}); |
$lasttext)); |
} |
} |
|
|
my $icons = ''; |
my $icons = ''; |
Line 2126 returns: nothing
|
Line 2139 returns: nothing
|
} |
} |
if (($links ne '') || ($nav_and_tools)) { |
if (($links ne '') || ($nav_and_tools)) { |
&render_tools(\$links); |
&render_tools(\$links); |
$links = &htmltag('div', $links, |
unless ($CourseBreadcrumbs) { |
{ id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ; |
my $args = { id => 'LC_breadcrumbs' }; |
|
if ($crumbs_style ne '') { |
|
$args->{'style'} = $crumbs_style; |
|
} |
|
$links = &htmltag('div', $links, $args); |
|
} |
} |
} |
my $adv_tools = 0; |
my $adv_tools = 0; |
if (ref($tools{'advtools'}) eq 'ARRAY') { |
if (ref($tools{'advtools'}) eq 'ARRAY') { |
Line 2144 returns: nothing
|
Line 2162 returns: nothing
|
|
|
# Return the breadcrumb's line |
# Return the breadcrumb's line |
|
|
|
my $labeltext = &HTML::Entities::encode(&mt('Links for navigation and information')); |
|
return '<div class="LC_landmark" role="navigation" aria-label="'.$labeltext.'">'.$links.'</div>'; |
return "$links"; |
|
} |
} |
|
|
sub clear_breadcrumbs { |
sub clear_breadcrumbs { |
Line 2446 sub docs_breadcrumbs {
|
Line 2463 sub docs_breadcrumbs {
|
my @row_count; |
my @row_count; |
|
|
sub start_pick_box { |
sub start_pick_box { |
my ($css_class,$id) = @_; |
my ($css_class,$id,$caption,$caption_class) = @_; |
if (defined($css_class)) { |
if (defined($css_class)) { |
$css_class = 'class="'.$css_class.'"'; |
$css_class = 'class="'.$css_class.'"'; |
} else { |
} else { |
Line 2460 sub start_pick_box {
|
Line 2477 sub start_pick_box {
|
my $output = <<"END"; |
my $output = <<"END"; |
<table $css_class $table_id> |
<table $css_class $table_id> |
END |
END |
|
if (defined($caption)) { |
|
if (defined($caption_class)) { |
|
$caption_class = 'class="'.$caption_class.'"'; |
|
} else { |
|
$caption_class = 'class="LC_caption"'; |
|
} |
|
$output .= <<"END"; |
|
<caption $caption_class>$caption</caption> |
|
END |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 2479 END
|
Line 2506 END
|
} |
} |
|
|
sub row_title { |
sub row_title { |
my ($title,$css_title_class,$css_value_class, $css_value_furtherAttributes) = @_; |
my ($title,$css_title_class,$css_value_class,$css_value_furtherAttributes,$nocolon) = @_; |
$row_count[0]++; |
$row_count[0]++; |
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row'; |
$css_title_class ||= 'LC_pick_box_title'; |
$css_title_class ||= 'LC_pick_box_title'; |
Line 2487 sub row_title {
|
Line 2514 sub row_title {
|
|
|
$css_value_class ||= 'LC_pick_box_value'; |
$css_value_class ||= 'LC_pick_box_value'; |
|
|
if ($title ne '') { |
if (($title ne '') && (!$nocolon)) { |
$title .= ':'; |
$title .= ':'; |
} |
} |
my $output = <<"ENDONE"; |
my $output = <<"ENDONE"; |
<tr class="LC_pick_box_row" $css_value_furtherAttributes> |
<tr class="LC_pick_box_row" $css_value_furtherAttributes> |
<td $css_title_class> |
<th $css_title_class> |
$title |
$title |
</td> |
</th> |
<td class="$css_value_class $css_class"> |
<td class="$css_value_class $css_class"> |
ENDONE |
ENDONE |
return $output; |
return $output; |
Line 3959 sub list_from_array {
|
Line 3986 sub list_from_array {
|
sub generate_menu { |
sub generate_menu { |
my @menu = @_; |
my @menu = @_; |
# subs for specific html elements |
# subs for specific html elements |
my ($h3, $div, $ul, $li, $a, $img) = inittags( qw(h3 div ul li a img) ); |
my ($h2, $div, $ul, $li, $a, $img) = inittags( qw(h2 div ul li a img) ); |
|
|
my @categories; # each element represents the entire markup for a category |
my @categories; # each element represents the entire markup for a category |
|
|
Line 3982 sub generate_menu {
|
Line 4009 sub generate_menu {
|
src => $src, |
src => $src, |
alt => mt(defined($$link{alttext}) ? |
alt => mt(defined($$link{alttext}) ? |
$$link{alttext} : $$link{linktext}) |
$$link{alttext} : $$link{linktext}) |
}), { |
}).mt($$link{linktext}), { |
href => $$link{url}, |
|
title => mt($$link{linktitle}), |
|
class => 'LC_menubuttons_link' |
|
}). |
|
$a->(mt($$link{linktext}), { |
|
href => $$link{url}, |
href => $$link{url}, |
title => mt($$link{linktitle}), |
title => mt($$link{linktitle}), |
class => "LC_menubuttons_link" |
class => "LC_menubuttons_link" |
}). |
}). |
(defined($$link{help}) ? |
(defined($$link{help}) ? |
Apache::loncommon::help_open_topic($$link{help}) : ''), |
Apache::loncommon::help_open_topic($$link{help}) : ''), |
{class => "LC_menubuttons_inline_text"})); |
{class => "LC_menubuttons_inline_text"})); |
} |
} |
|
|
# wrap categorytitle in <h3>, concatenate with |
# wrap categorytitle in <h2>, concatenate with |
# joined and in <ul> tags wrapped @links |
# joined and in <ul> tags wrapped @links |
# and wrap everything in an enclosing <div> and push it into |
# and wrap everything in an enclosing <div> and push it into |
# @categories |
# @categories |
# such that each element looks like: |
# such that each element looks like: |
# <div><h3>title</h3><ul><li>...</li>...</ul></div> |
# <div><h2>title</h2><ul><li>...</li>...</ul></div> |
# the category won't be added if there aren't any links |
# the category won't be added if there aren't any links |
push(@categories, |
push(@categories, |
$div->($h3->(mt($$category{categorytitle}), {class=>"LC_hcell"}). |
$div->($h2->(mt($$category{categorytitle}), {class=>'LC_hcell LC_heading_2'}). |
$ul->(join('' ,@links), {class =>"LC_ListStyleNormal" }), |
$ul->(join('' ,@links), {class =>"LC_ListStyleNormal" }), |
{class=>"LC_Box LC_400Box"})) if scalar(@links); |
{class=>"LC_Box LC_400Box"})) if scalar(@links); |
} |
} |