--- loncom/xml/londefdef.pm 2002/08/01 19:47:29 1.82 +++ loncom/xml/londefdef.pm 2002/09/16 19:06:57 1.89 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.82 2002/08/01 19:47:29 sakharuk Exp $ +# $Id: londefdef.pm,v 1.89 2002/09/16 19:06:57 sakharuk Exp $ # # # Copyright Michigan State University Board of Trustees @@ -52,7 +52,7 @@ use Image::Magick; BEGIN { - &Apache::lonxml::register('Apache::londefdef',('m','html','head','map','select','option','input','textarea','form','meta','title','body','center','b','strong','dt','h1','h2','h3','h4','h5','h6','cite','i','address','dd','dl','dir','ol','ul','menu','dfn','kbd','tt','code','em','q','p','br','big','small','basefont','font','s','sub','strike','sup','hr','a','li','u','output','param','applet','img','embed','allow','frameset','pre','insert','externallink','table','tr','th','td','blankspace','bubble','bubbles','bubbleline')); + &Apache::lonxml::register('Apache::londefdef',('a','abbr','acronym','address','allow','applet','area','b','base','basefont','bgo','bgsound','big','blink','blockquote','blankspace','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','embed','externallink','fieldset','font','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','insert','isindex','kbd','keygen','label','layer','legend','li','link','m','map','marquee','menu','meta','multicol','nobr','noembed','noframes','nolayer','noscript','object','ol','optgroup','option','output','p','param','pre','q','s','samp','select','server','small','spacer','span','strike','strong','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','u','ul','var','wbr')); } @@ -91,7 +91,7 @@ sub start_m { #&Apache::lonxml::debug("M is ends with:$currentstring:"); } elsif ($target eq 'tex') { $currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); - if ($currentstring=~/\s*\\\\\s*/) {$currentstring = ' \vskip 0 mm ';} + if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';} } else { my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); } @@ -126,7 +126,8 @@ sub end_m { \newcommand{\keephidden}[1]{} \renewcommand{\deg}{$^{\circ}$} \usepackage[dvips]{graphicx} - \usepackage{epsfig}\usepackage{calc}'; + \usepackage{epsfig}\usepackage{calc} + \newenvironment{choicelist}{\begin{enumerate}}{\end{enumerate}}'; } return $currentstring; } @@ -466,7 +467,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf{'; + $currentstring .= '{\large \textbf{'; } elsif ($target eq 'meta') { $currentstring=''; &start_output(); @@ -493,7 +494,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf{'; + $currentstring .= '{\large \textbf{'; } return $currentstring; } @@ -514,7 +515,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf{'; + $currentstring .= '{\large \textbf{'; } return $currentstring; } @@ -535,7 +536,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf{'; + $currentstring .= '{\large \textbf{'; } return $currentstring; } @@ -556,7 +557,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf{'; + $currentstring .= '{\large \textbf{'; } return $currentstring; } @@ -577,7 +578,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf{'; + $currentstring .= '{\large \textbf{'; } return $currentstring; } @@ -1039,7 +1040,7 @@ EDITBUTTON if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth ][b]{\hrulefill}\vskip 0 mm '; + $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth/2 ][b]{\hrulefill}\vskip 0 mm '; } return $currentstring; } @@ -1052,6 +1053,23 @@ EDITBUTTON } return $currentstring; } +#--
tag + sub start_div { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring .= $token->[4]; + } + return $currentstring; + } + sub end_div { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring .= $token->[2]; + } + return $currentstring; + } #-- tag sub start_a { my ($target,$token) = @_; @@ -1071,7 +1089,6 @@ EDITBUTTON my $tempor_var = $stackref->[$#$stackref]; if (index($tempor_var,'name') != -1 ) { $tempor_var =~ s/name=([^,]*),/$1/g; -# $currentstring .= " \\label{$tempor_var}"; } elsif (index($tempor_var,'href') != -1 ) { $tempor_var =~ s/href=([^,]*),/$1/g; $currentstring .= " \\ref{$tempor_var}"; @@ -1532,57 +1549,21 @@ EDITBUTTON my $currentstring = ''; my $width_param = ''; my $height_param = ''; - my $scaling = .3; + my $scaling = .3; if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval); $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); - if (-e $src) { #new one + #if original gif/jpg file exist do following: + if (-e $src) { + #defines the default size of image my $image = Image::Magick->new; my $current_figure = $image->Read($src); $width_param = $image->Get('width') * $scaling;; $height_param = $image->Get('height') * $scaling;; undef $image; - my $epssrc = $src; - $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i; - if (not -e $epssrc) { - my $localfile = $epssrc; - $localfile =~ s/.*(\/res)/$1/; - my $file; - my $path; - if ($localfile =~ m!(.*)/([^/]*)$!) { - $file = $2; - $path = $1.'/'; - } - my $signal_eps = 0; - my @content_directory = &Apache::lonnet::dirlist($path); - for (my $iy=0;$iy<=$#content_directory;$iy++) { - my @tempo_array = split(/&/,$content_directory[$iy]); - $content_directory[$iy] = $tempo_array[0]; - if ($file eq $tempo_array[0]) { - $signal_eps = 1; - last; - } - } - if ($signal_eps) { - my $eps_file = &Apache::lonnet::getfile($localfile); - } else { - $localfile = $src; - $localfile =~ s/.*(\/res)/$1/; - my $as = &Apache::lonnet::getfile($src); - } - } - my $file; - my $path; - if ($src =~ m!(.*)/([^/]*)$!) { - $file = $2; - $path = $1.' /'; - } - my $newsrc = $src; - $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i; - $file=~s/(\.gif|\.jpg)$/\.eps/i; #do we have any specified size of the picture? my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); @@ -1594,24 +1575,47 @@ EDITBUTTON } elsif ($width ne '') { $width_param = $width*$scaling; } + my $file; + my $path; + if ($src =~ m!(.*)/([^/]*)$!) { + $file = $2; + $path = $1.'/'; + } + my $newsrc = $src; + $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i; + $file=~s/(\.gif|\.jpg)$/\.eps/i; #where can we find the picture? if (-e $newsrc) { + #eps counterpart for image exist if ($path) { $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; } } else { - my $temp_file; - my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; - $temp_file = Apache::File->new('>>'.$filename); - print $temp_file "$src\n"; - $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + #there is no eps counterpart for image - check for ps one + $newsrc =~ s/\.eps$/\.ps/; + if (-e $newsrc) { + #ps counterpart for image exist + $file =~ s/\.eps$/\.ps/; + if ($path) { + $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + } + } else { + #there aren't eps or ps - so create eps + my $temp_file; + my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; + $temp_file = Apache::File->new('>>'.$filename); + print $temp_file "$src\n"; + $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + } } } else { + #original image file doesn't exist so check the alt attribute my $alt = &Apache::lonxml::get_param('alt',$parstack,$safeeval); if ($alt) { $currentstring .= ' '.$alt.' '; } else { - $currentstring .= ' THE ORIGINAL PROBLEM CONTAINS EMPTY IMG TAG WITHOUT IMAGE '; + #there are no image and alt attribute + $currentstring .= ' THE ORIGINAL PROBLEM CONTAINS EMPTY IMG TAG WITHOUT IMAGE AND ALT ATTRIBUTE '; } } } @@ -1707,15 +1711,23 @@ sub start_embed { } return $currentstring; } - #-- tag - sub start_allow { - my ($target,$token) = @_; - + 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); + if (not -e '/home/httpd/html'.$src) { + #replicates image itself + &Apache::lonnet::repcopy($src); + #replicates eps or ps + my $newsrc = $src; + $newsrc =~ s/(.gif|.jpg)$/.eps/; + if (not-e $newsrc && &Apache::lonnet::repcopy($newsrc) ne 'OK') { + $newsrc =~ s/\.ps$/\.eps/; + &Apache::lonnet::repcopy($newsrc); + } + } return ''; } sub end_allow { @@ -1817,6 +1829,702 @@ sub start_embed { } return $currentstring; } - +#-- tag + sub start_abbr { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_abbr { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#-- tag + sub start_acronym { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_acronym { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#-- tag + sub start_area { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_area { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#-- tag + sub start_base { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_base { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#-- tag + sub start_bdo { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_bdo { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#-- tag + sub start_bgsound { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_bgsound { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#-- tag + sub start_blink { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_blink { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#--
tag + sub start_blockquote { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; + } + sub end_blockquote { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; + } +#--