--- loncom/xml/londefdef.pm 2010/11/18 17:42:15 1.426 +++ loncom/xml/londefdef.pm 2011/11/14 00:20:42 1.436 @@ -1,7 +1,8 @@ + # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.426 2010/11/18 17:42:15 raeburn Exp $ +# $Id: londefdef.pm,v 1.436 2011/11/14 00:20:42 raeburn Exp $ # # # Copyright Michigan State University Board of Trustees @@ -47,6 +48,7 @@ use Image::Magick; use Apache::lonmenu(); use Apache::lonmeta(); use Apache::lonlocal; +use Apache::loncommon(); use Apache::Constants qw(:common); use File::Basename; use LONCAPA(); @@ -382,6 +384,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)) { @@ -540,9 +545,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', @@ -588,7 +594,7 @@ sub start_body { sub edit_controls { my ($nochgview) = @_; my $result .= ' -
+
'; unless ($nochgview) { $result .= ' @@ -600,7 +606,12 @@ sub edit_controls { $result .= '
'; if (($env{'request.course.id'}) && ($env{'form.forceedit'})) { - $result .= (' ' x 3).''; + my $viewtext = &mt('Course View'); + if (&Apache::loncommon::course_type() eq 'Community') { + $viewtext = &mt('Community View'); + } + $result .= (' ' x 3).''; } $result .= '
@@ -2038,9 +2049,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); @@ -2057,15 +2065,23 @@ sub start_table { if ((defined $border) && ($border > 0)) { # &Apache::lonnet::logthis("Turning on table borders: $border"); $table->table_border(1); - if ($cell_border ne 'none') { - $table->cell_border(1); # html specs that border turns on both...unless rules='none'. + if (!defined $cell_border) { + $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) && ($cell_border ne 'none')) { - # &Apache::lonnet::logthis("Turning on cell borders: $cell_border"); - $table->cell_border(1); + if ((defined $cell_border)) { + if ($cell_border eq 'all') { + $table->cell_border(1); + } elsif ($cell_border eq 'rows') { + $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); + } } if (defined $theme) { $table->theme($theme); @@ -2094,88 +2110,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; } @@ -2188,8 +2122,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"); @@ -2954,10 +2886,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 @@ -3455,13 +3384,34 @@ sub end_col { return $currentstring; } -#-- tag (end tag optional) +#-- [4]; } + if ($target eq 'tex') { + # TODO: Ensure this tag is in a table: + + # Fetch the attributes and build the hash for the + # call to define_colgroup. + + my $span = &Apache::lonxml::get_param('span', $parstack, $safeeval); + my $halign = &Apache::lonxml::get_param('halign', $parstack, $safeeval); + + my %colgroup_params; + if ($span ne '') { + $colgroup_params{'span'} = $span; + } + if ($halign ne '') { + $colgroup_params{'halign'} = $halign; + } + + my $table = $Apache::londefdef::table[-1]; + $table->define_colgroup(\%colgroup_params); + + } return $currentstring; } @@ -3955,6 +3905,12 @@ sub start_tbody { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[4]; } + if ($target eq 'tex') { + # TODO: Ensure this tag is within a table: + + my $table = $Apache::londefdef::table[-1]; + $table->start_body(); + } return $currentstring; } @@ -3964,6 +3920,12 @@ sub end_tbody { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[2]; } + if($target eq 'tex') { + # TODO: Ensure this tag is within a table: + + my $table = $Apache::londefdef::table[-1]; + $table->end_body(); + } return $currentstring; } @@ -3974,6 +3936,11 @@ sub start_tfoot { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[4]; } + if ($target eq 'tex') { + # TODO: ensure this is within a table tag. + my $table = $Apache::londefdef::table[-1]; + $table->start_foot(); + } return $currentstring; } @@ -3983,6 +3950,11 @@ sub end_tfoot { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[2]; } + if ($target eq 'tex') { + # TODO: Ensure this is in side a table + my $table = $Apache::londefdef::table[-1]; + $table->end_foot(); + } return $currentstring; } @@ -3993,6 +3965,11 @@ sub start_thead { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[4]; } + if ($target eq 'tex') { + # Assume we're in a table... TODO: Verify that and ignore tag if not. + my $table = $Apache::londefdef::table[-1]; + $table->start_head(); + } return $currentstring; } @@ -4002,6 +3979,12 @@ sub end_thead { if ($target eq 'web' || $target eq 'webgrade') { $currentstring = $token->[2]; } + if ($target eq 'tex') { + # TODO: Verify we are in a table and ignore tag if not. + + my $table = $Apache::londefdef::table[-1]; + $table->end_head(); + } return $currentstring; } @@ -4212,7 +4195,7 @@ sub get_eps_image { close(FILE); } $src=~s|/home/httpd/html/res|/home/httpd/prtspool|; - $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|; + $src=~s|/home/httpd/html/priv/[^/]+/([^/]*)/|/home/httpd/prtspool/$1/|; if ($sext ne "") { # Put the ext. back in to uniquify. $src =~ s/\.eps$/$sext.eps/; } @@ -4231,7 +4214,7 @@ sub get_eps_image { print FILE "$src\n"; close FILE; $src=~s|/home/httpd/html/res|/home/httpd/prtspool|; - $src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|; + $src=~s|/home/httpd/html/priv/[^/]+/([^/]*)/|/home/httpd/prtspool/$1/|; } my ($path,$file)=($src=~m|(.*)/([^/]*)$|); $path =~ s/ /\_/g; @@ -4250,7 +4233,7 @@ sub eps_generation { my $newsrc = $src; $newsrc =~ s/(\.bmp|\.gif|\.jpg|\.jpeg)$/\.eps/i; $newsrc=~s{/home/httpd/html/res}{}; - $newsrc=~s{/home/($LONCAPA::username_re)/public_html/}{/$1/}; + $newsrc=~s{/home/httpd/html/priv/[^/]+/($LONCAPA::username_re)/}{/$1/}; $newsrc=~s{/\./}{/}; $newsrc=~s{/([^/]+)\.(ps|eps)}{/}; if ($newsrc=~m{/home/httpd/lonUsers/}) {