--- loncom/xml/scripttag.pm 2013/09/30 13:44:16 1.168
+++ loncom/xml/scripttag.pm 2023/11/07 12:26:01 1.176
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# ';
+ }
+
+
} elsif ($target eq 'meta') {
my $bodytext=&Apache::lonxml::get_all_text_unbalanced("/script",$parser);
}
@@ -141,7 +177,18 @@ sub start_script {
}
}
} elsif (($type eq 'text/javascript') && ($bodytext ne '')) {
- if ($url =~ m{^\Q/uploaded/$cdom/$cnum/docs/\E}) {
+ if ($url =~ m{^\Q/uploaded/$cdom/$cnum/\E(docs|supplemental)/}) {
+ if ($bodytext =~ m{\.addMediaSrc\((["'])((?!\1).)+\1\);}) {
+ my $quote = $1;
+ if ($bodytext =~ m{\Q.addMediaSrc($quote\E([^$quote]+)\Q$quote)\E}) {
+ my $fname = $1;
+ my $cleanhref =
+ &Apache::londefdef::clean_docs_httpref($fname,$url,$cdom,$cnum);
+ if ($cleanhref) {
+ &Apache::lonxml::extlink($cleanhref);
+ }
+ }
+ }
if ($bodytext =~ m{\.set\w+(Src|Swf)\(["']}i) {
my @srcs = split(/\.set/,$bodytext);
if (scalar(@srcs) > 1) {
@@ -149,16 +196,81 @@ sub start_script {
if ($item =~ m{^(FlashPlayerSwf|MediaSrc|XMPSrc|ConfigurationSrc|PosterImageSrc)\((['"])(?:(?!\2).)+\2\)}is) {
my $srctype = $1;
my $quote = $2;
-
my ($fname) = ($item =~ m{^\Q$srctype($quote\E([^$quote]+)\Q$quote)\E});
- my $cleanhref = &Apache::londefdef::clean_docs_httpref($fname,$url,$cdom,$cnum);
+ my $cleanhref =
+ &Apache::londefdef::clean_docs_httpref($fname,$url,$cdom,$cnum);
if ($cleanhref) {
&Apache::lonxml::extlink($cleanhref);
+ if ($srctype eq 'ConfigurationSrc') {
+ if ($cleanhref =~ m{^(.+/)configuration_express\.xml$}) {
+#
+# Camtasia 8.1: express_show/spritesheet.png needed, and included in zip archive.
+# Not referenced directly in .html or _player.html files,
+# so call lonxml::extlink() here to include httpref for the uploaded file.
+# (where is name user gave to file/archive).
+#
+
+ my $spritesheet = $1.'express_show/spritesheet.png';
+ if (&Apache::lonnet::repcopy_userfile($spritesheet) eq 'ok') {
+ &Apache::lonxml::extlink($spritesheet);
+ }
+ }
+#
+# Camtasia 8.4: express_show/spritesheet.min.css needed, and included in zip archive.
+# Not referenced directly in .html or _player.html files,
+# so call lonxml::extlink() here to include httpref for the uploaded file.
+# (where is name user gave to file/archive).
+#
+ my $spritesheet_css = $1.'express_show/spritesheet.min.css';
+ if (&Apache::lonnet::repcopy_userfile($spritesheet_css) eq 'ok') {
+ &Apache::lonxml::extlink($spritesheet_css);
+ }
+ } elsif ($srctype eq 'PosterImageSrc') {
+ if ($fname =~ m{^(.+)_First_Frame\.png$}) {
+ my $prefix = $1;
+ my ($path) = ($cleanhref =~ m{^(.+/)\Q$fname\E});
+#
+# Camtasia 8.1: _Thumbnails.png needed, and included in zip archive.
+# Not referenced directly in .html or _player.html files,
+# so call lonxml::extlink() here to include httpref for the uploaded file
+# (where is name user gave to file/archive).
+#
+ my $thumbnail = $path.$prefix.'_Thumbnails.png';
+ if (&Apache::lonnet::repcopy_userfile($thumbnail) eq 'ok') {
+ &Apache::lonxml::extlink($thumbnail);
+ }
+ }
+ }
}
}
}
}
}
+ if ($bodytext =~ /\(document,\s*(['"])script\1,\s*\[([^\]]+)\]\);/s) {
+ my $scriptslist = $2;
+ my @srcs = split(/\s*,\s*/,$scriptslist);
+ foreach my $src (@srcs) {
+ if ($src =~ /(["'])(?:(?!\1).)+\.js\1/) {
+ my $quote = $1;
+ my ($fname) = ($src =~ m/\Q$quote\E([^$quote]+)\Q$quote\E/);
+ my $cleanhref =
+ &Apache::londefdef::clean_docs_httpref($fname,$url,$cdom,$cnum);
+ if ($cleanhref) {
+ &Apache::lonxml::extlink($cleanhref);
+ }
+ }
+ }
+ }
+ if ($bodytext =~ m{loadScript\(\s*(['"])((?:(?!\1).)+\.js)\1,\s*function}is) {
+ my $fname = $2;
+ if ($fname) {
+ my $cleanhref =
+ &Apache::londefdef::clean_docs_httpref($fname,$url,$cdom,$cnum);
+ if ($cleanhref) {
+ &Apache::lonxml::extlink($cleanhref);
+ }
+ }
+ }
}
}
}
@@ -254,7 +366,7 @@ sub start_scriptlib {
$result=
&Apache::edit::tag_start($target,$token,'New Script Functions').
&Apache::edit::editline($token->[1],$bodytext,'scriptlib',40).
- &Apache::edit::browse(undef,'textnode').
+ &Apache::edit::browse_or_search(undef,'textnode').
$error.''.
&Apache::edit::end_table();
}
@@ -506,9 +618,11 @@ sub start_import {
my $location=$token->[1];
$location=~s/^\s*//s;
$location=~s/\s*$//s;
+ my $crsonly = join(',',(&Apache::loncommon::filecategorytypes('Problem'),
+ &Apache::loncommon::filecategorytypes('Library')));
$result.=&Apache::edit::editline($location,$bodytext,'',40);
- $result.=&Apache::edit::browse(undef,'textnode');
- $result.= ' ';
#FIXME this need to convert $bodytext to be a contruction space reference
#my $location=&Apache::lonnet::filelocation($Apache::lonxml::pwd['-1'],$bodytext);
#$result.="Clickhere to edit "
@@ -569,12 +683,14 @@ sub end_storetc {
sub start_physnet {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
- my $bodytext = '/adm/includes/physnet.sty';
+ my $bodytext = '/res/adm/includes/physnet.sty';
my $location=&Apache::lonnet::filelocation($Apache::lonxml::pwd['-1'],$bodytext);
my $cbistyletext=&Apache::lonnet::getfile($location);
%$style = (%$style,&Apache::style::styleparser($target,$cbistyletext));
- $$parser['-1']->unget_token($token);
+ if (keys(%$style) && (($target eq 'web') || ($target eq 'tex'))) {
+ $$parser['-1']->unget_token($token);
+ }
# if ( defined($$style{'physnet'}) ) {
# &Apache::lonxml::newparser($parser,\$$style{'physnet'});
# }