--- loncom/xml/londefdef.pm 2011/04/05 10:02:57 1.428 +++ loncom/xml/londefdef.pm 2012/02/05 22:53:42 1.437 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.428 2011/04/05 10:02:57 foxr Exp $ +# $Id: londefdef.pm,v 1.437 2012/02/05 22:53:42 raeburn Exp $ # # # Copyright Michigan State University Board of Trustees @@ -383,6 +383,9 @@ sub start_meta { } else { $currentstring = $token->[4]; } + if ($env{'form.grade_imsexport'}) { + $currentstring = ''; + } } elsif ($target eq 'meta') { unless (&Apache::lonxml::get_param ('http-equiv',$parstack,$safeeval,undef,1)) { @@ -541,9 +544,10 @@ sub start_body { # Breadcrumbs &Apache::lonhtmlcommon::clear_breadcrumbs(); if ($env{'request.state'} eq 'construct') { + my $url=&Apache::lonnet::hreflocation('',$env{'request.filename'}); &Apache::lonhtmlcommon::add_breadcrumb({ 'text' => 'Construction Space', - 'href' => &Apache::loncommon::authorspace(), + 'href' => &Apache::loncommon::authorspace($url), }); &Apache::lonhtmlcommon::add_breadcrumb({ 'text' => 'HTML Editor', @@ -2044,9 +2048,6 @@ sub start_table { } elsif ($target eq 'tex') { &disable_para(); # Can't have paras in a table. - - # New table code: - # Get the parameters that we can do something about: my $border = &Apache::lonxml::get_param('border', $parstack, $safeeval, undef, 0); @@ -2067,7 +2068,6 @@ sub start_table { $table->cell_border(1); # Default for rules is all if rules not defined. } } - # Only all or nothing for cell borders for now: if ((defined $cell_border)) { if ($cell_border eq 'all') { @@ -2076,6 +2076,8 @@ sub start_table { $table->cell_border(2); } elsif ($cell_border eq 'cols') { $table->cell_border(3); + } elsif($cell_border eq 'groups') { + $table->cell_border(4); } else { $table->cell_border(0); } @@ -2107,88 +2109,6 @@ sub start_table { push(@Apache::londefdef::table, $table); $currentstring.=' \keephidden{NEW TABLE ENTRY}'; - #-------------------------------------------------------- - # Old table code here. - #-------------------------------------------------------- - - - if (0) { - push(@Apache::londefdef::table, {}); - $Apache::londefdef::table[-1]{'row_number'} = -1; - #maximum table's width (default coincides with text line length) - if ($#Apache::londefdef::table==0) { - $textwidth=&recalc($env{'form.textwidth'}); #result is always in mm - $textwidth=~/(\d+\.?\d*)/; - $textwidth=0.85*$1; #accounts "internal" LaTeX space for table frame - } else { - if ($Apache::londefdef::table[-2]{'TeXlen'}[$Apache::londefdef::table[-2]{'row_number'}][$Apache::londefdef::table[-2]{'counter_columns'}]=~/\d/) { - #the maximum width of nested table is determined by LATeX width of parent cell - $textwidth=$Apache::londefdef::table[-2]{'TeXlen'}[$Apache::londefdef::table[-2]{'row_number'}][$Apache::londefdef::table[-2]{'counter_columns'}]; - } else { - #try to use all space not used before (minus 5% for LaTeX table internal) - rather silly - $textwidth=$Apache::londefdef::table[-2]{'width'}; - for (my $i=0;$i<$Apache::londefdef::table[-2]{'counter_columns'};$i++) { - $textwidth=$textwidth-$Apache::londefdef::table[-2]{'TeXlen'}[0][$i]; - } - } - } - - # width either comes forced from the TeXwidth or the width parameters. - # in either case it can be a percentage or absolute width. - # in the width case we ignore absolute width - my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval,undef,0); - if (!defined($TeXwidth)) { - my $htmlwidth = &Apache::lonxml::get_param('width',$parstack, - $safeeval,undef,1); - if ($htmlwidth =~ /%/) { - $TeXwidth = $htmlwidth; - } else { - $TeXwidth = $textwidth; - } - } - # if the width is specified as a % it is converted to an absolute width. - # otherwise.. just plugged right in the hash - - if ($TeXwidth=~/%/) { - $TeXwidth=~/(\d+)/; - $Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100; - } else { - $Apache::londefdef::table[-1]{'width'}=$TeXwidth; - } - # In the end, however the table width cannot be wider than $textwidth... - - if ($Apache::londefdef::table[-1]{'width'} > $textwidth) { - $Apache::londefdef::table[-1]{'width'} = $textwidth; - } - #table's border - my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval); - my $permission=&Apache::lonxml::get_param('TeXDropEmptyColumns',$parstack,$safeeval,undef,0); - unless (defined $border) { $border = 0; } - if ($border) { - $Apache::londefdef::table[-1]{'hinc'} = '\hline '; - $Apache::londefdef::table[-1]{'vinc'} = '&'; - $Apache::londefdef::table[-1]{'vvinc'} = '|'; - } else { - $Apache::londefdef::table[-1]{'hinc'} = ''; - $Apache::londefdef::table[-1]{'vinc'} = '&'; - $Apache::londefdef::table[-1]{'vvinc'} = ''; - } - if ($#Apache::londefdef::table==0) { - # Note that \newline seems to destroy the alignment envs. - # $Apache::londefdef::table[-1]{'output'}='\strut\newline\strut\setlength{\tabcolsep}{1 mm}'; - $Apache::londefdef::table[-1]{'output'}='\strut'.'\\\\'."\n".'\strut\setlength{\tabcolsep}{1 mm}'; - } - $Apache::londefdef::table[-1]{'output'}.=' \noindent \begin{tabular} '; - $Apache::londefdef::table[-1]{'TeXlen'}=[]; - $Apache::londefdef::table[-1]{'objectlen'}=[]; - $Apache::londefdef::table[-1]{'objectsignal'}=[]; - $Apache::londefdef::table[-1]{'maxlen'}=[]; - $Apache::londefdef::table[-1]{'minlen'}=[]; - $Apache::londefdef::table[-1]{'content'}=[]; - $Apache::londefdef::table[-1]{'align'}=[]; - $currentstring.=' \keephidden{NEW TABLE ENTRY}'; - } - } return $currentstring; } @@ -2201,8 +2121,6 @@ sub end_table { } elsif ($target eq 'tex') { - # New table code: - my $table = pop(@Apache::londefdef::table); my $t = $table->generate(); # &Apache::lonnet::logthis("Generating string"); @@ -2967,10 +2885,7 @@ sub start_applet { &Apache::lonxml::extlink($archive); my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { - $currentstring = &Apache::lonenc::encrypt_ref($token, - {'code'=>$code, - 'archive'=>$archive} - ); + $currentstring = $token->[4]; } elsif ($target eq 'tex') { # Turn off some stuff we can't be inside thank you LaTeX @@ -3056,22 +2971,47 @@ sub end_embed { #-- tag (end tag forbidden) sub start_param { my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; - if (&Apache::lonxml::get_param('name',$parstack, - $safeeval,undef,1)=~/^cabbase$/i) { + my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval, + undef,1); + if ($name =~/^cabbase$/i) { my $value=&Apache::lonxml::get_param('value',$parstack, $safeeval,undef,1); &Apache::lonxml::extlink($value); - } - + } elsif ($name eq 'flashvars') { + if (lc(&Apache::lonxml::get_param('type',$parstack,$safeeval,-2,1)) + eq 'application/x-shockwave-flash') { + my $launcher = + &Apache::lonxml::get_param('data',$parstack,$safeeval,-2,1); + if ($launcher) { + &Apache::lonxml::extlink($launcher); + } + my $flashvars=&Apache::lonxml::get_param('value',$parstack, + $safeeval,undef,1); + if ($flashvars ne '') { + foreach my $item (split(/\&/,$flashvars)) { + my ($key,$value)=split(/=/,$item,2); + if ($key eq 'content') { + if ($value ne '') { + my ($dir) = ($launcher =~ m{(.+/)[^/]+$}); + &Apache::lonxml::extlink($dir.$value); + } + } elsif ($key eq 'thumb') { + if ($value ne '') { + &Apache::lonxml::extlink($value); + } + } + } + } + } + } my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); - &Apache::lonxml::extlink($src); + if ($src ne '') { + &Apache::lonxml::extlink($src); + } my $currentstring = ''; if ($target eq 'web' || $target eq 'webgrade') { my %toconvert; - my $src=&Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); if ($src) { $toconvert{'src'}= $src; } - my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval, - undef,1); if ($name=~/^cabbase$/i) { $toconvert{'value'}=&Apache::lonxml::get_param('value',$parstack, $safeeval,undef,1); @@ -3468,13 +3408,34 @@ sub end_col { return $currentstring; } -#--