--- loncom/xml/londefdef.pm 2002/05/16 00:56:46 1.61 +++ loncom/xml/londefdef.pm 2004/08/19 12:23:17 1.231.2.1 @@ -1,8 +1,7 @@ - # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.61 2002/05/16 00:56:46 albertel Exp $ +# $Id: londefdef.pm,v 1.231.2.1 2004/08/19 12:23:17 albertel Exp $ # # # Copyright Michigan State University Board of Trustees @@ -26,8 +25,7 @@ # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ -# -# Copyright for TtHfunc and TtMfunc by Ian Hutchinson. +## Copyright for TtHfunc and TtMfunc by Ian Hutchinson. # TtHfunc and TtMfunc (the "Code") may be compiled and linked into # binary executable programs or libraries distributed by the # Michigan State University (the "Licensee"), but any binaries so @@ -45,1609 +43,3721 @@ package Apache::londefdef; -use Apache::lonnet; +use Apache::lonnet(); use strict; use Apache::lonxml; use Apache::File(); +use Image::Magick; +use Apache::lonmenu(); +use Apache::lonmeta(); +use Apache::Constants qw(:common); + 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')); + &Apache::lonxml::register('Apache::londefdef',('a','abbr','acronym','accessrule','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','tthoption','u','ul','var','wbr','hideweboutput')); } +sub initialize_londefdef { + $Apache::londefdef::TD_redirection=0; + @Apache::londefdef::table = (); + $Apache::londefdef::select=0; + @Apache::londefdef::description=(); + $Apache::londefdef::DD_redirection=0; + $Apache::londefdef::DT_redirection=0; +} + #======================= TAG SUBROUTINES ===================== #-- sub start_output { - my ($target) = @_; - if ($target eq 'meta') { $Apache::lonxml::metamode--; } - return ''; + my ($target) = @_; + if ($target eq 'meta') { $Apache::lonxml::metamode--; } + return ''; } sub end_output { - my ($target) = @_; - if ($target eq 'meta') { $Apache::lonxml::metamode++; } - return ''; + my ($target) = @_; + if ($target eq 'meta') { $Apache::lonxml::metamode++; } + return ''; } #-- tag sub start_m { - my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $Apache::lonxml::prevent_entity_encode++; - my $inside = &Apache::lonxml::get_all_text("/m",$$parser[-1]); - $inside ='\\documentstyle{article}'.$inside; - &Apache::lonxml::debug("M is starting with:$inside:"); - my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); - if ($eval eq 'on') { - $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); - #&Apache::lonxml::debug("M is evaulated to:$inside:"); - } - $currentstring = &Apache::lontexconvert::converted(\$inside); - if ($Apache::lontexconvert::errorstring) { - &Apache::lonxml::warning("tth error: ". - $Apache::lontexconvert::errorstring); - $Apache::lontexconvert::errorstring=''; - } - #&Apache::lonxml::debug("M is ends with:$currentstring:"); - } elsif ($target eq 'tex') { - $currentstring = ""; - } - return $currentstring; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; + my $currentstring = ''; + my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); + if ($target eq 'web' || $target eq 'analyze') { + $inside ='\\documentstyle{article}'.$inside; + &Apache::lonxml::debug("M is starting with:$inside:"); + my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); + if ($eval eq 'on') { + $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); + #&Apache::lonxml::debug("M is evaulated to:$inside:"); + } + $currentstring = &Apache::lontexconvert::converted(\$inside); + if ($Apache::lontexconvert::errorstring) { + &Apache::lonxml::warning("tth error: ". + $Apache::lontexconvert::errorstring); + $Apache::lontexconvert::errorstring=''; + } + #&Apache::lonxml::debug("M is ends with:$currentstring:"); + $Apache::lonxml::post_evaluate=0; + } elsif ($target eq 'tex') { + $currentstring = $inside; + my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); + if ($eval eq 'on') { + $currentstring=&Apache::run::evaluate($currentstring,$safeeval,$$parstack[-1]); + } + if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';} + $Apache::lonxml::post_evaluate=0; + } + return $currentstring; } + sub end_m { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $Apache::lonxml::prevent_entity_encode--; - } elsif ($target eq 'tex') { - $currentstring = ""; - } elsif ($target eq 'meta') { - } - return $currentstring; -} -#-- tag - sub start_html { - my ($target,$token) = @_; - my $currentstring = ''; - if ($ENV{'browser.mathml'}) { - &tth::ttminit(); - } else { - &tth::tthinit(); - } - if ($target eq 'web') { - $currentstring = &Apache::lonxml::xmlbegin(). - &Apache::lonxml::fontsettings(); - } elsif ($target eq 'tex') { - @Apache::londefdef::table = (); - $currentstring .= '\documentclass[letterpaper]{article} - \newcommand{\keephidden}[1]{} - \usepackage[dvips]{graphicx} - \usepackage{epsfig}'; - } - return $currentstring; - } - sub end_html { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = &Apache::lonxml::xmlend(); - } - return $currentstring; - } -#-- tag - sub start_head { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[4]; - } - return $currentstring; - } - sub end_head { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = &Apache::lonxml::registerurl(undef,$target). - $token->[2]; - } - return $currentstring; - } -#-- tag - sub start_map { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[4]; - } - return $currentstring; - } - sub end_map { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[2]; - } - return $currentstring; - } -#-- tag - sub start_input { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[4]; - } - return $currentstring; - } - sub end_input { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[2]; - } - return $currentstring; - } -#--