--- loncom/xml/londefdef.pm 2003/02/14 20:57:09 1.114 +++ loncom/xml/londefdef.pm 2003/02/28 21:06:42 1.120 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.114 2003/02/14 20:57:09 sakharuk Exp $ +# $Id: londefdef.pm,v 1.120 2003/02/28 21:06:42 albertel Exp $ # # # Copyright Michigan State University Board of Trustees @@ -44,12 +44,13 @@ package Apache::londefdef; -use Apache::lonnet; +use Apache::lonnet(); use strict; -use Apache::lonxml; +use Apache::lonxml(); use Apache::File(); use Image::Magick; -use Apache::lonmenu; +use Apache::lonmenu(); +use Apache::lonmeta(); BEGIN { @@ -122,6 +123,7 @@ sub start_tthoption { &tth::tthoptions($inside); } } + return $result; } sub end_tthoption { @@ -323,7 +325,7 @@ sub start_html { } #-- tag sub start_meta { - my ($target,$token,$tagstack,$parstack,$parser) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { my $args=''; @@ -335,13 +337,16 @@ sub start_html { } } if ($target eq 'meta') { - unless ($token->[2]->{'http-equiv'}) { + unless (&Apache::lonxml::get_param + ('http-equiv',$parstack,$safeeval,undef,1)) { my $name=$token->[2]->{'name'}; $name=~tr/A-Z/a-z/; - $name=~s/\s/\_/g; + $name=~s/\s/\_/gs; + $name=~s/\W//gs; if ($name) { $currentstring='<'.$name.'>'. - $token->[2]->{'content'}. + &Apache::lonxml::get_param + ('content',$parstack,$safeeval,undef,1). ''; } } @@ -400,7 +405,7 @@ sub start_html { EDITBUTTON } else { - $currentstring.=&Apache::lonmenu::menubuttons(undef,$target); + $currentstring.=&Apache::lonmenu::menubuttons(undef,$target,1); } } elsif ($target eq 'tex') { $currentstring = '\begin{document}'; @@ -1598,10 +1603,21 @@ sub start_table { my $scaling = .3; if ($target eq 'web') { - $currentstring = $token->[4]; + if ($ENV{'browser.imagesuppress'} ne 'on') { + $currentstring = $token->[4]; + } else { + my $alttag= &Apache::lonxml::get_param + ('alt',$parstack,$safeeval,undef,1); + unless ($alttag) { + $alttag=&Apache::lonmeta::alttag + ($Apache::lonxml::pwd[-1],$src); + } + $currentstring='[IMAGE: '.$alttag.']'; + } } elsif ($target eq 'tex') { - &image_replication($src); - $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + &image_replication($src); + #if original gif/jpg/png file exist do following: if (-e $src) { #defines the default size of image @@ -1661,7 +1677,13 @@ sub start_table { } } else { #original image file doesn't exist so check the alt attribute - my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval,undef,1); + my $alt = + &Apache::lonxml::get_param('alt',$parstack,$safeeval,undef,1); + unless ($alt) { + $alt=&Apache::lonmeta::alttag + ($Apache::lonxml::pwd[-1],$src); + } + if ($alt) { $currentstring .= ' '.$alt.' '; } else { @@ -1671,6 +1693,7 @@ sub start_table { } return $currentstring; } + sub end_img { my ($target,$token) = @_; my $currentstring = ''; @@ -1684,19 +1707,35 @@ sub start_table { #-- tag sub start_applet { - my ($target,$token) = @_; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'code'}; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'archive'}; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + + my $code=&Apache::lonxml::get_param + ('code',$parstack,$safeeval,undef,1); + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$code; + + my $archive=&Apache::lonxml::get_param + ('archive',$parstack,$safeeval,undef,1); + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$archive; + my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[4]; + if ($ENV{'browser.appletsuppress'} ne 'on') { + $currentstring = $token->[4]; + } else { + my $alttag= &Apache::lonxml::get_param + ('alt',$parstack,$safeeval,undef,1); + unless ($alttag) { + $alttag=&Apache::lonmeta::alttag($Apache::lonxml::pwd[-1], + $code); + } + $currentstring='[APPLET: '.$alttag.']'; + } } elsif ($target eq 'tex') { $currentstring = " \\begin{figure} "; } return $currentstring; } + sub end_applet { my ($target,$token) = @_; my $currentstring = ''; @@ -1711,17 +1750,27 @@ sub end_applet { #-- tag sub start_embed { - my ($target,$token) = @_; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'src'}; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + my $src=&Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[4]; + if ($ENV{'browser.embedsuppress'} ne 'on') { + $currentstring = $token->[4]; + } else { + my $alttag=&Apache::lonxml::get_param + ('alt',$parstack,$safeeval,undef,1); + unless ($alttag) { + $alttag=&Apache::lonmeta::alttag($Apache::lonxml::pwd[-1],$src); + } + $currentstring='[EMBED: '.$alttag.']'; + } } elsif ($target eq 'tex') { $currentstring = " \\begin{figure} "; } return $currentstring; } + sub end_embed { my ($target,$token) = @_; my $currentstring = ''; @@ -1736,13 +1785,16 @@ sub start_embed { #-- tag sub start_param { - my ($target,$token) = @_; - if ($token->[2]->{'name'} eq 'cabbase') { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + if (&Apache::lonxml::get_param + ('name',$parstack,$safeeval,undef,1)=~/^cabbase$/i) { $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'value'}; + &Apache::lonxml::get_param + ('value',$parstack,$safeeval,undef,1); } $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'src'}; + &Apache::lonxml::get_param + ('src',$parstack,$safeeval,undef,1); my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[4]; @@ -1764,9 +1816,9 @@ sub start_embed { #-- tag sub start_allow { my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'src'}; my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); + $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src; &image_replication($src); my $result; if ($target eq 'edit') { @@ -2582,15 +2634,17 @@ sub end_allow { sub image_replication { my $src = shift; - if (not -e '/home/httpd/html'.$src) { + if (not -e $src) { #replicates image itself - &Apache::lonnet::repcopy('/home/httpd/html'.$src); + &Apache::lonnet::repcopy($src); #replicates eps or ps my $newsrc = $src; - $newsrc =~ s/\.(gif|jpg|png)$/.eps/; - if (not-e $newsrc && &Apache::lonnet::repcopy('/home/httpd/html'.$newsrc) ne 'OK') { - $newsrc =~ s/\.eps$/\.ps/; - &Apache::lonnet::repcopy('/home/httpd/html'.$newsrc); + $newsrc =~ s/\.(gif|jpg|jpeg|png)$/.eps/i; + if (not -e $newsrc) { + if (&Apache::lonnet::repcopy($newsrc) ne 'OK') { + $newsrc =~ s/\.eps$/\.ps/; + &Apache::lonnet::repcopy($newsrc); + } } } return '';