--- loncom/xml/londefdef.pm 2009/05/26 14:06:23 1.406 +++ loncom/xml/londefdef.pm 2010/12/25 00:10:16 1.415.4.3 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.406 2009/05/26 14:06:23 bisitz Exp $ +# $Id: londefdef.pm,v 1.415.4.3 2010/12/25 00:10:16 raeburn Exp $ # # # Copyright Michigan State University Board of Trustees @@ -48,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(); @@ -540,14 +541,20 @@ sub start_body { # Breadcrumbs &Apache::lonhtmlcommon::clear_breadcrumbs(); - &Apache::lonhtmlcommon::add_breadcrumb({ - 'text' => 'Construction Space', - 'href' => '', # FIXME Add link to /priv/[user] - }); - &Apache::lonhtmlcommon::add_breadcrumb({ - 'text' => 'HTML Editor', - 'href' => '', - }); + if ($env{'request.state'} eq 'construct') { + &Apache::lonhtmlcommon::add_breadcrumb({ + 'text' => 'Construction Space', + 'href' => &Apache::loncommon::authorspace(), + }); + &Apache::lonhtmlcommon::add_breadcrumb({ + 'text' => 'HTML Editor', + 'href' => '', + }); + # breadcrumbs (and tools) will be created + # in start_page->bodytag->innerregister + } else { + # FIXME Where are we? + } $currentstring = &Apache::loncommon::start_page($Apache::londefdef::title, @@ -557,25 +564,33 @@ sub start_body { # 'no_title' => 1, 'force_register' => 1}); - $currentstring .= &Apache::lonhtmlcommon::breadcrumbs() - .&Apache::loncommon::head_subbox( - &Apache::loncommon::CSTR_pageheader()); - - if ($env{'request.state'} ne 'published') { - $currentstring.=&Apache::lonmenu::constspaceform(); - $currentstring.=&Apache::londefdef::edit_controls(); - } - $currentstring.=&Apache::lonxml::message_location(); + my $header = ''; + if ($env{'request.state'} ne 'published' && + $env{'request.state'} ne 'construct') { + $header=&Apache::lonmenu::constspaceform(); + } + if ($env{'request.state'} ne 'published') { + $header.=&Apache::londefdef::edit_controls(); + } + if ($env{'request.state'} eq 'construct') { + $currentstring.=&Apache::loncommon::head_subbox( + &Apache::loncommon::CSTR_pageheader() + .$header); + } elsif ($env{'request.state'} eq 'edit') { + $currentstring.=&Apache::loncommon::head_subbox($header); + } + $currentstring.=&Apache::lonxml::message_location(); } elsif ($target eq 'tex') { - $currentstring = ''; # '\begin{document}' is in header. - } + $currentstring = ''; # '\begin{document}' is in header. + } + return $currentstring; } sub edit_controls { my ($nochgview) = @_; my $result .= ' -
+
'; unless ($nochgview) { $result .= ' @@ -585,9 +600,19 @@ sub edit_controls {
'; } $result .= ' -
+
'; + if (($env{'request.course.id'}) && ($env{'form.forceedit'})) { + my $viewtext = &mt('Course View'); + if (&Apache::loncommon::course_type() eq 'Community') { + $viewtext = &mt('Community View'); + } + $result .= (' ' x 3).''; + } + $result .= '
+
-
'; +'; return $result; } @@ -2029,26 +2054,36 @@ sub start_table { my $width = &Apache::lonxml::get_param('TeXwidth', $parstack, $safeeval, undef, 0); my $theme = &Apache::lonxml::get_param('TeXtheme', $parstack, $safeeval, undef, 0); my $align = &Apache::lonxml::get_param('align', $parstack, $safeeval, undef, 0); + my $cell_border = &Apache::lonxml::get_param('rules', $parstack, $safeeval, undef, 0); # The only thing that needs any figuring out is the width.. and then only if it is # a percent. If not it's assumed to be some valid TeX measurement unit e.g. 3.0cm # my $table = new Apache::lontable(); - if ($border ne '') { - $table->table_border(1); + 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'. + } + } + # 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 ($theme ne '') { + if (defined $theme) { $table->theme($theme); } - if ($align ne '') { + if (defined $align) { $table->alignment($align); } # Missing width is most of page width - if ($width eq "") { + if (!(defined $width)) { $width = '70%'; } @@ -2703,17 +2738,26 @@ sub tag_check { # sub cell_config_hash { - my ($align, $rowspan, $colspan) = @_; + my ($align, $rowspan, $colspan, $width) = @_; + if ($rowspan ne '') { + $rowspan =~ s/^\s+|\s+$//g; + } + if ($colspan ne '') { + $colspan =~ s/^\s+|\s+$//g; + } my %config; if ($align ne '') { $config{'halign'} = $align; } - if ($colspan ne "") { + if (($colspan =~ /^\d+$/) && ($colspan > 0)) { $config{'colspan'} = $colspan; } - if ($rowspan ne '') { + if (($rowspan =~ /^\d+$/) && ($rowspan > 0)) { $config{'rowspan'} = $rowspan; } + if ($width ne '') { + $config{'width'} = $width; + } return \%config; } @@ -2725,11 +2769,11 @@ sub start_td_tex { # attributes, but empty of text. end_td_tex will # fetch the contents from the recursive parse and # fill the cell with them: - my $align = &Apache::lonxml::get_param('align', $parstack, $safeeval, undef, 1); - my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval, undef, 1); - my $colspan = &Apache::lonxml::get_param('colspan', $parstack, $safeeval, undef, 1); - - my $config = &cell_config_hash($align, $rowspan, $colspan); + my $align = &Apache::lonxml::get_param('align', $parstack, $safeeval); + my $rowspan = &Apache::lonxml::get_param('rowspan', $parstack, $safeeval); + my $colspan = &Apache::lonxml::get_param('colspan', $parstack, $safeeval); + my $width = &Apache::lonxml::get_param('TeXwidth', $parstack, $safeeval); + my $config = &cell_config_hash($align, $rowspan, $colspan, $width); my $table = $Apache::londefdef::table[-1]; $table->add_cell('', $config); @@ -3256,21 +3300,28 @@ sub start_img { ['','bottom','middle','top','left','right'],$token,5); $currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap', ['', 'none','parbox', 'parpic', 'wrapfigure'], $token, 2); + my $alt= &Apache::lonxml::get_param('alt',$parstack,$safeeval); + my $enc= &Apache::lonxml::get_param('encrypturl',$parstack,$safeeval); + $currentstring .=&Apache::edit::select_arg('Encrypt URL:','encrypturl', ['no','yes'], $token, 2); + if (($alt=~/\S/) && (lc($enc) eq 'yes')) { + $currentstring.='
'.&mt('Warning: the description "[_1]" will be available, even for encrypted URL',$alt).'
'; + } $currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); my $src= &Apache::lonxml::get_param('src',$parstack,$safeeval); - my $alt= &Apache::lonxml::get_param('alt',$parstack,$safeeval); my $width= &Apache::lonxml::get_param('width',$parstack,$safeeval); my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval); if ($token->[2]{'src'}=~/\$/) { - $currentstring.='Variable image source'; + $currentstring.=&mt('Variable image source'); + } elsif ($token->[2]{'src'}=~/\S/) { + $currentstring .= '