--- loncom/xml/londefdef.pm	2003/02/07 22:03:21	1.112
+++ loncom/xml/londefdef.pm	2003/02/20 17:07:14	1.119
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.112 2003/02/07 22:03:21 albertel Exp $
+# $Id: londefdef.pm,v 1.119 2003/02/20 17:07:14 www Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -44,11 +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::lonmeta();
 
 BEGIN {
 
@@ -154,11 +156,12 @@ sub start_html {
     } elsif ($target eq 'tex') {
 	@Apache::londefdef::table = ();
 	$currentstring .= '\documentclass[letterpaper]{article}
-                                 \newcommand{\keephidden}[1]{}
-                                 \renewcommand{\deg}{$^{\circ}$}
-                                 \usepackage[dvips]{graphicx}
-                                 \usepackage{epsfig}\usepackage{calc}
-                                 \newenvironment{choicelist}{\begin{enumerate}}{\end{enumerate}}';
+                           \newcommand{\keephidden}[1]{}
+                           \renewcommand{\deg}{$^{\circ}$}
+                           \usepackage{textcomp}
+                           \usepackage[dvips]{graphicx}
+                           \usepackage{epsfig}\usepackage{calc}
+\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}';
     }
     return $currentstring;
 }
@@ -183,7 +186,7 @@ sub start_html {
 	    my ($target,$token) = @_;
             my $currentstring = '';
             if ($target eq 'web') {
-              $currentstring = &Apache::lonxml::registerurl(undef,$target).
+              $currentstring = &Apache::lonmenu::registerurl(undef,$target).
                                $token->[2];    
             } 
 	   return $currentstring;
@@ -321,7 +324,7 @@ sub start_html {
 	}
 #-- <meta> 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='';
@@ -333,13 +336,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).
 			              '</'.$name.'>';
 		    }
                 }
@@ -365,7 +371,7 @@ sub start_html {
             if ($target eq 'web') {
 	      if (!$Apache::lonxml::registered) {
 		$currentstring.='<head>'.
-		    &Apache::lonxml::registerurl(undef,$target).'</head>';
+		    &Apache::lonmenu::registerurl(undef,$target).'</head>';
 	      }
 	      my $onLoad='';
 	      foreach my $key (keys(%{$token->[2]})) {
@@ -374,7 +380,7 @@ sub start_html {
 		  delete($token->[2]->{$key});
 		}
 	      }
-	      $token->[2]->{'onload'}=&Apache::lonxml::loadevents().
+	      $token->[2]->{'onload'}=&Apache::lonmenu::loadevents().
 		                       ';'.$onLoad;
 	      my $onUnload='';
 	      foreach my $key (keys(%{$token->[2]})) {
@@ -383,7 +389,7 @@ sub start_html {
 		  delete($token->[2]->{$key});
 		}
 	      }
-	      $token->[2]->{'onunload'}=&Apache::lonxml::unloadevents().
+	      $token->[2]->{'onunload'}=&Apache::lonmenu::unloadevents().
 		                         ';'.$onUnload;
 
 	      $currentstring .= '<'.$token->[1];
@@ -397,7 +403,9 @@ sub start_html {
 		<input type="submit" name="editmode" value="Edit" />
 		</form>
 EDITBUTTON
-	      }
+              } else {
+		$currentstring.=&Apache::lonmenu::menubuttons(undef,$target,1);
+              }
        	    } elsif ($target eq 'tex') {
               $currentstring = '\begin{document}';  
 	    } 
@@ -1594,10 +1602,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
@@ -1657,7 +1676,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 {
@@ -1667,6 +1692,7 @@ sub start_table {
 	    }
 	    return $currentstring;
 	}
+
         sub end_img {
 	    my ($target,$token) = @_;
             my $currentstring = '';
@@ -1680,19 +1706,35 @@ sub start_table {
 #-- <applet> 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 = '';
@@ -1707,17 +1749,27 @@ sub end_applet {
 #-- <embed> 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 = '';
@@ -1732,13 +1784,16 @@ sub start_embed {
 #-- <param> 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];     
@@ -1760,9 +1815,9 @@ sub start_embed {
 #-- <allow> 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') {
@@ -1789,7 +1844,7 @@ sub end_allow {
 	  if ($target eq 'web') { 
 	    if (!$Apache::lonxml::registered) {
 	      $currentstring.='<head>'.
-		  &Apache::lonxml::registerurl(undef,$target).'</head>';
+		  &Apache::lonmenu::registerurl(undef,$target).'</head>';
 	    }
 	    $currentstring .= $token->[4];
 	  }
@@ -2578,15 +2633,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 '';