--- loncom/interface/lonhtmlcommon.pm 2023/09/27 14:52:26 1.410
+++ loncom/interface/lonhtmlcommon.pm 2025/02/18 02:51:32 1.417
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.410 2023/09/27 14:52:26 raeburn Exp $
+# $Id: lonhtmlcommon.pm,v 1.417 2025/02/18 02:51:32 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -231,15 +231,16 @@ sub dependencycheck_js {
$link = '/adm/dependencies?symb='.&HTML::Entities::encode($symb,'<>&"');
} elsif ($folderpath) {
$link = '/adm/dependencies?folderpath='.&HTML::Entities::encode($folderpath,'<>&"');
- $url = $uri;
+ $url = $uri;
} elsif ($uri =~ m{^/public/$match_domain/$match_courseid/syllabus$}) {
$link = '/adm/dependencies';
}
- $link .= (($link=~/\?/)?'&':'?').'title='.
+ $link .= (($link=~/\?/)?'&':'?').'title='.
&HTML::Entities::encode($title,'<>&"');
if ($url) {
$link .= '&url='.&HTML::Entities::encode($url,'<>&"');
}
+ &js_escape(\$link);
return <
//
-
-
+
+
+
@@ -1849,13 +1850,19 @@ sub dash_to_minus_js {
document.addEventListener("DOMContentLoaded", (event) => {
const numresp = document.querySelectorAll("input.LC_numresponse_text");
if (numresp.length > 0) {
- numresp.forEach((el) => {
+ Array.from(numresp).forEach((el) => {
el.addEventListener("paste", (e) => {
e.preventDefault();
e.stopPropagation();
let p = (e.clipboardData || window.clipboardData).getData("text");
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);
});
});
@@ -1908,9 +1915,10 @@ boolean, controls whether to include a l
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
@@ -1968,11 +1976,9 @@ returns: nothing
my %tools = ();
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) = @_;
#
- $css_class ||= 'LC_breadcrumbs';
-
# Make the faq and bug data cascade
my $faq = '';
my $bug = '';
@@ -2074,7 +2080,7 @@ returns: nothing
if ($lasttext ne '') {
$links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1',
- $lasttext), {title => $lasttext});
+ $lasttext));
}
my $icons = '';
@@ -2126,8 +2132,13 @@ returns: nothing
}
if (($links ne '') || ($nav_and_tools)) {
&render_tools(\$links);
- $links = &htmltag('div', $links,
- { id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ;
+ unless ($CourseBreadcrumbs) {
+ my $args = { id => 'LC_breadcrumbs' };
+ if ($crumbs_style ne '') {
+ $args->{'style'} = $crumbs_style;
+ }
+ $links = &htmltag('div', $links, $args);
+ }
}
my $adv_tools = 0;
if (ref($tools{'advtools'}) eq 'ARRAY') {
@@ -2144,9 +2155,8 @@ returns: nothing
# Return the breadcrumb's line
-
-
- return "$links";
+ my $labeltext = &HTML::Entities::encode(&mt('Links for navigation and information'));
+ return ''.$links.'
';
}
sub clear_breadcrumbs {
@@ -2479,7 +2489,7 @@ END
}
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]++;
my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
$css_title_class ||= 'LC_pick_box_title';
@@ -2487,14 +2497,14 @@ sub row_title {
$css_value_class ||= 'LC_pick_box_value';
- if ($title ne '') {
+ if (($title ne '') && (!$nocolon)) {
$title .= ':';
}
my $output = <<"ENDONE";
-
+ |
$title
-
+ |
ENDONE
return $output;
|