--- loncom/interface/loncommon.pm 2023/03/27 18:41:04 1.1402
+++ loncom/interface/loncommon.pm 2023/09/25 22:36:29 1.1412
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1402 2023/03/27 18:41:04 raeburn Exp $
+# $Id: loncommon.pm,v 1.1412 2023/09/25 22:36:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -71,6 +71,7 @@ use Apache::lonuserutils();
use Apache::lonuserstate();
use Apache::courseclassifier();
use LONCAPA qw(:DEFAULT :match);
+use LONCAPA::ltiutils;
use LONCAPA::LWPReq;
use LONCAPA::map();
use HTTP::Request;
@@ -2781,7 +2782,7 @@ sub display_filter {
my $onchange = "javascript:toggleHistoryOptions(this,'containingphrase','$context',
'$secondid','$thirdid')";
return ' '.
&mt('Filter: [_1]',
@@ -6369,6 +6370,8 @@ Input: (optional) filename from which br
If page header is being requested for use in a frameset, then
the second (option) argument -- frameset will be true, and
the target attribute set for links should be target="_parent".
+ If $title is supplied as the thitd arg, that will be used to
+ the left of the breadcrumbs tail for the current path.
Returns: HTML div with CSTR path and recent box
To be included on Authoring Space pages
@@ -6376,7 +6379,7 @@ Returns: HTML div with CSTR path and rec
=cut
sub CSTR_pageheader {
- my ($trailfile,$frameset) = @_;
+ my ($trailfile,$frameset,$title) = @_;
if ($trailfile eq '') {
$trailfile = $env{'request.filename'};
}
@@ -6399,13 +6402,15 @@ sub CSTR_pageheader {
$lastitem = $thisdisfn;
}
- my ($crsauthor,$title);
+ my $crsauthor;
if (($env{'request.course.id'}) &&
($env{'course.'.$env{'request.course.id'}.'.num'} eq $uname) &&
($env{'course.'.$env{'request.course.id'}.'.domain'} eq $udom)) {
$crsauthor = 1;
- $title = &mt('Course Authoring Space');
- } else {
+ if ($title eq '') {
+ $title = &mt('Course Authoring Space');
+ }
+ } elsif ($title eq '') {
$title = &mt('Authoring Space');
}
@@ -6844,6 +6849,9 @@ ENDJS
$endbodytag;
}
}
+ if ((ref($args) eq 'HASH') && ($args->{'dashjs'})) {
+ $endbodytag = &Apache::lonhtmlcommon::dash_to_minus_js().$endbodytag;
+ }
return $endbodytag;
}
@@ -8160,6 +8168,11 @@ fieldset {
/* overflow: hidden; */
}
+fieldset#LC_selectuser {
+ margin: 0;
+ padding: 0;
+}
+
article.geogebraweb div {
margin: 0;
}
@@ -9759,6 +9772,50 @@ sub symb_from_tinyurl {
}
}
+sub usable_exttools {
+ my %tooltypes;
+ if ($env{'request.course.id'}) {
+ if ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'}) {
+ if ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'} eq 'both') {
+ %tooltypes = (
+ crs => 1,
+ dom => 1,
+ );
+ } elsif ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'} eq 'crs') {
+ $tooltypes{'crs'} = 1;
+ } elsif ($env{'course.'.$env{'request.course.id'}.'.internal.exttool'} eq 'dom') {
+ $tooltypes{'dom'} = 1;
+ }
+ } else {
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my $crstype = lc($env{'course.'.$env{'request.course.id'}.'.type'});
+ if ($crstype eq '') {
+ $crstype = 'course';
+ }
+ if ($crstype eq 'course') {
+ if ($env{'course.'.$env{'request.course.id'}.'internal.coursecode'}) {
+ $crstype = 'official';
+ } elsif ($env{'course.'.$env{'request.course.id'}.'.internal.textbook'}) {
+ $crstype = 'textbook';
+ } elsif ($env{'course.'.$env{'request.course.id'}.'.internal.lti'}) {
+ $crstype = 'lti';
+ } else {
+ $crstype = 'unofficial';
+ }
+ }
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
+ if ($domdefaults{$crstype.'domexttool'}) {
+ $tooltypes{'dom'} = 1;
+ }
+ if ($domdefaults{$crstype.'exttool'}) {
+ $tooltypes{'crs'} = 1;
+ }
+ }
+ }
+ return %tooltypes;
+}
+
sub wishlist_window {
return(<<'ENDWISHLIST');