--- loncom/xml/scripttag.pm 2010/08/08 03:00:56 1.157 +++ loncom/xml/scripttag.pm 2013/10/01 00:52:58 1.169 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # ".&mt('Script Vars')."
"; - &Apache::lonxml::add_script_result($script_var); + &Apache::lonxml::add_script_result( + &Apache::loncommon::modal_adhoc_window($function_name,500,500, + '
'.
+                            &Apache::run::dump($target,$safeeval).'
', + &mt('Script Vars'))."
"); } } elsif ($target eq "edit" ) { #&Apache::run::run($bodytext,$safeeval); @@ -142,6 +129,68 @@ sub start_script { if ($target ne "meta" && $target ne 'tex' && $target ne 'answer') { $result = $token->[4]; $result.=$bodytext; + my $src=&Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); + my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'}); + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; + if ($src ne '') { + if ($src !~ m{^(/|https?://)}) { + my $cleanhref = &Apache::londefdef::clean_docs_httpref($src,$url,$cdom,$cnum); + if ($cleanhref) { + &Apache::lonxml::extlink($cleanhref); + } + } + } elsif (($type eq 'text/javascript') && ($bodytext ne '')) { + if ($url =~ m{^\Q/uploaded/$cdom/$cnum/docs/\E}) { + if ($bodytext =~ m{\.set\w+(Src|Swf)\(["']}i) { + my @srcs = split(/\.set/,$bodytext); + if (scalar(@srcs) > 1) { + foreach my $item (@srcs) { + 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); + 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); + } + } + } 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); + } + } + } + } + } + } + } + } + } + } } } return $result; @@ -303,19 +352,24 @@ sub start_window { if ($target eq 'web' || $target eq 'webgrade') { &Apache::lonxml::startredirection; } elsif ($target eq 'tex') { - $result = '\unskip\footnote{'; + my $printtext=&Apache::lonxml::get_param('printtext',$parstack,$safeeval); + if ($printtext=~/\w/) { +# If printtext is given, do not output any intervening information + &Apache::lonxml::startredirection; + } else { + $result = '\unskip\footnote{'; + } } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_start($target,$token); $result.=&Apache::edit::text_arg('Text of Link:','linktext',$token,70); $result.=&Apache::edit::text_arg('Height:','height',$token,5); $result.=&Apache::edit::text_arg('Width:','width',$token,5); - $result.=&Apache::edit::text_arg('Mime Type:','mimetype',$token,5); + $result.=&Apache::edit::text_arg('Printed text (optional):','printtext',$token,20); $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, $safeeval,'linktext', - 'width','height', - 'mimetype'); + 'width','height'); if ($constructtag) { $result=&Apache::edit::rebuild_tag($token); } } return $result; @@ -326,47 +380,117 @@ sub end_window { my $result; if ($target eq 'web' || $target eq 'webgrade') { my $output=&Apache::lonxml::endredirection; - $output =~ s/[\n\r]/ /g; -# $output = &HTML::Entities::encode($output,'<>&"\''); - $output =~ s/\'/\\\'/g; my $linktext= &Apache::lonxml::get_param('linktext',$parstack,$safeeval); if (!$linktext) { $linktext='*'; } my $width= &Apache::lonxml::get_param('width',$parstack,$safeeval); if (!$width) { $width='500'; } my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval); if (!$height) { $height='200'; } - my $mimetype= &Apache::lonxml::get_param('mimetype',$parstack,$safeeval) - || 'text/html'; + $result=&Apache::loncommon::modal_adhoc_window + ("LONCAPA_newwindow_$Apache::lonxml::curdepth",$width,$height,$output,$linktext); + } elsif ($target eq 'tex') { + my $printtext=&Apache::lonxml::get_param('printtext',$parstack,$safeeval); + if ($printtext=~/\w/) { +# If a "printtext" is given, proceed to retrieve all intervening information and trash it + my $output=&Apache::lonxml::endredirection; +# Use printtext instead + $result=$printtext; + } else { + $result='}'; + } + } else { + $result = ''; + } + return $result; +} - my ($start_page,$end_page); - if ($mimetype eq 'text/html') { - $start_page = - &Apache::loncommon::start_page($linktext, undef, - {'only_body' => 1, - 'bgcolor' => '#FFFFFF', - 'js_ready' => 1,}); - $end_page = - &Apache::loncommon::end_page({'js_ready' => 1,}); + +sub start_windowlink { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result = ''; + if ($target eq 'web' || $target eq 'webgrade') { + &Apache::lonxml::startredirection; + } elsif ($target eq 'edit') { + $result.=&Apache::edit::tag_start($target,$token); + $result.=&Apache::edit::text_arg('Link:','href',$token,70); + $result.=&Apache::edit::text_arg('Height:','height',$token,5); + $result.=&Apache::edit::text_arg('Width:','width',$token,5); + $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); + } elsif ($target eq 'modified') { + my $constructtag=&Apache::edit::get_new_args($token,$parstack, + $safeeval,'href', + 'width','height'); + if ($constructtag) { $result=&Apache::edit::rebuild_tag($token); } } - $result = "$linktext"; + return $result; +} + +sub end_windowlink { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result; + if ($target eq 'web' || $target eq 'webgrade') { + my $output=&Apache::lonxml::endredirection; + my $href= &Apache::lonxml::get_param('href',$parstack,$safeeval); + if (!$href) { $href='/adm/rat/empty.html'; } + my $width= &Apache::lonxml::get_param('width',$parstack,$safeeval); + if (!$width) { $width='500'; } + my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval); + if (!$height) { $height='200'; } + $result=&Apache::loncommon::modal_link($href,$output,$width,$height); + } else { + $result = ''; + } + return $result; +} + + +sub start_togglebox { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result = ''; + if ($target eq 'web' || $target eq 'webgrade') { + my $id="LONCAPA_togglebox_$Apache::lonxml::curdepth"; + my $heading=&Apache::lonxml::get_param('heading',$parstack,$safeeval); + unless ($heading) { $heading=''; } else { $heading.=' '; } + my $showtext=&Apache::lonxml::get_param('showtext',$parstack,$safeeval); + my $hidetext=&Apache::lonxml::get_param('hidetext',$parstack,$safeeval); + my $headerbg=&Apache::lonxml::get_param('headerbg',$parstack,$safeeval); + $result=&Apache::loncommon::start_togglebox($id,$heading,$headerbg,$hidetext,$showtext); + } elsif ($target eq 'tex') { + my $heading=&Apache::lonxml::get_param('heading',$parstack,$safeeval); + unless ($heading) { $heading=''; } else { $heading.=' '; } + $result = "\n\n".'\fbox{{\bf '.$heading.'} \qquad '."\n"; + } elsif ($target eq 'edit') { + $result.=&Apache::edit::tag_start($target,$token); + $result.=&Apache::edit::text_arg('Heading:','heading',$token,70); + $result.=&Apache::edit::text_arg('Header Background:','headerbg',$token,7); + $result.=&Apache::edit::text_arg('Show text:','showtext',$token,10); + $result.=&Apache::edit::text_arg('Hide text:','hidetext',$token,10); + $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); + } elsif ($target eq 'modified') { + my $constructtag=&Apache::edit::get_new_args($token,$parstack, + $safeeval,'heading', + 'showtext','hidetext', + 'headerbg','textbg'); + if ($constructtag) { $result=&Apache::edit::rebuild_tag($token); } + } + return $result; +} + +sub end_togglebox { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + my $result; + if ($target eq 'web' || $target eq 'webgrade') { + $result=&Apache::loncommon::end_togglebox(); } elsif ($target eq 'tex') { - $result = '}'; + $result = "}\n\n"; } else { $result = ''; } - return $result; + return $result; } + + sub start_import { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $bodytext=$$parser[$#$parser]->get_text("/import"); 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.