version 1.408, 2009/05/28 12:39:12
|
version 1.423, 2010/09/14 03:48:36
|
Line 540 sub start_body {
|
Line 540 sub start_body {
|
|
|
# Breadcrumbs |
# Breadcrumbs |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::add_breadcrumb({ |
if ($env{'request.state'} eq 'construct') { |
'text' => 'Construction Space', |
&Apache::lonhtmlcommon::add_breadcrumb({ |
'href' => '', # FIXME Add link to /priv/[user] |
'text' => 'Construction Space', |
}); |
'href' => &Apache::loncommon::authorspace(), |
&Apache::lonhtmlcommon::add_breadcrumb({ |
}); |
'text' => 'HTML Editor', |
&Apache::lonhtmlcommon::add_breadcrumb({ |
'href' => '', |
'text' => 'HTML Editor', |
}); |
'href' => '', |
|
}); |
|
# breadcrumbs (and tools) will be created |
|
# in start_page->bodytag->innerregister |
|
} else { |
|
# FIXME Where are we? |
|
} |
|
|
$currentstring = |
$currentstring = |
&Apache::loncommon::start_page($Apache::londefdef::title, |
&Apache::loncommon::start_page($Apache::londefdef::title, |
Line 557 sub start_body {
|
Line 563 sub start_body {
|
# 'no_title' => 1, |
# 'no_title' => 1, |
'force_register' => 1}); |
'force_register' => 1}); |
|
|
$currentstring .= &Apache::lonhtmlcommon::breadcrumbs(); |
|
|
|
my $header = ''; |
my $header = ''; |
|
if ($env{'request.state'} ne 'published' && |
|
$env{'request.state'} ne 'construct') { |
|
$header=&Apache::lonmenu::constspaceform(); |
|
} |
if ($env{'request.state'} ne 'published') { |
if ($env{'request.state'} ne 'published') { |
$header=&Apache::lonmenu::constspaceform() |
$header.=&Apache::londefdef::edit_controls(); |
.&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::loncommon::head_subbox( |
|
&Apache::loncommon::CSTR_pageheader() |
|
.$header); |
|
$currentstring.=&Apache::lonxml::message_location(); |
$currentstring.=&Apache::lonxml::message_location(); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = ''; # '\begin{document}' is in header. |
$currentstring = ''; # '\begin{document}' is in header. |
Line 588 sub edit_controls {
|
Line 599 sub edit_controls {
|
</div>'; |
</div>'; |
} |
} |
$result .= ' |
$result .= ' |
<div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" /></div> |
<div><input type="submit" name="editmode" accesskey="e" value="'.&mt('Edit').'" />'; |
|
if (($env{'request.course.id'}) && ($env{'form.forceedit'})) { |
|
$result .= (' ' x 3).'<input type="button" value="'.&mt('Course View').'" onclick="javascript:location.href=currentURL" />'; |
|
} |
|
$result .= '</div> |
</div> |
</div> |
</form> |
</form> |
'; |
'; |
Line 2033 sub start_table {
|
Line 2048 sub start_table {
|
my $width = &Apache::lonxml::get_param('TeXwidth', $parstack, $safeeval, undef, 0); |
my $width = &Apache::lonxml::get_param('TeXwidth', $parstack, $safeeval, undef, 0); |
my $theme = &Apache::lonxml::get_param('TeXtheme', $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 $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 |
# 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 |
# a percent. If not it's assumed to be some valid TeX measurement unit e.g. 3.0cm |
# |
# |
|
|
my $table = new Apache::lontable(); |
my $table = new Apache::lontable(); |
if ($border ne '') { |
if ((defined $border) && ($border > 0)) { |
|
# &Apache::lonnet::logthis("Turning on table borders: $border"); |
$table->table_border(1); |
$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); |
$table->cell_border(1); |
} |
} |
if ($theme ne '') { |
if (defined $theme) { |
$table->theme($theme); |
$table->theme($theme); |
} |
} |
if ($align ne '') { |
if (defined $align) { |
$table->alignment($align); |
$table->alignment($align); |
} |
} |
|
|
# Missing width is most of page width |
# Missing width is most of page width |
|
|
if ($width eq "") { |
if (!(defined $width)) { |
$width = '70%'; |
$width = '70%'; |
} |
} |
|
|
# If a percentage, need to calculate what this means in terms of |
# If a percentage, need to calculate what this means in terms of |
# page width: |
# page width: |
|
|
Line 2168 sub end_table {
|
Line 2193 sub end_table {
|
|
|
my $table = pop(@Apache::londefdef::table); |
my $table = pop(@Apache::londefdef::table); |
my $t = $table->generate(); |
my $t = $table->generate(); |
|
# &Apache::lonnet::logthis("Generating string"); |
$currentstring = $t->generate_string(); |
$currentstring = $t->generate_string(); |
|
# &Apache::lonnet::logthis("Generated: $currentstring"); |
&enable_para(); |
&enable_para(); |
#-------------------------------------------------------------- |
#-------------------------------------------------------------- |
# Old table code: |
# Old table code: |
Line 3144 sub start_img {
|
Line 3171 sub start_img {
|
# Render unto browsers that which are the browser's... |
# Render unto browsers that which are the browser's... |
|
|
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($env{'browser.imagesuppress'} ne 'on') { |
my $enc = ('yes' eq |
my $enc = ('yes' eq |
lc(&Apache::lonxml::get_param('encrypturl',$parstack, |
lc(&Apache::lonxml::get_param('encrypturl',$parstack, |
$safeeval))); |
$safeeval))); |
$currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}, |
$currentstring.=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}, |
$enc); |
$enc); |
|
} else { |
|
my $alttag = &Apache::lonxml::get_param('alt',$parstack,$safeeval, |
|
undef,1); |
|
if (!$alttag) { |
|
$alttag = &Apache::lonmeta::alttag($Apache::lonxml::pwd[-1], |
|
$src); |
|
} |
|
$currentstring.='[IMAGE: '.$alttag.']'; |
|
} |
|
|
|
# and render unto TeX that which is LaTeX |
|
|
|
|
# and render unto TeX that which is LaTeX |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
# |
# |
# The alignment will require some superstructure to be put around |
# The alignment will require some superstructure to be put around |
Line 3260 sub start_img {
|
Line 3276 sub start_img {
|
['','bottom','middle','top','left','right'],$token,5); |
['','bottom','middle','top','left','right'],$token,5); |
$currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap', |
$currentstring .=&Apache::edit::select_arg('TeXwrap:', 'TeXwrap', |
['', 'none','parbox', 'parpic', 'wrapfigure'], $token, 2); |
['', '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', |
$currentstring .=&Apache::edit::select_arg('Encrypt URL:','encrypturl', |
['no','yes'], $token, 2); |
['no','yes'], $token, 2); |
|
if (($alt=~/\S/) && (lc($enc) eq 'yes')) { |
|
$currentstring.='<br /><span class="LC_warning">'.&mt('Warning: the description "[_1]" will be available, even for encrypted URL',$alt).'</span><br />'; |
|
} |
$currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
$currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
my $src= &Apache::lonxml::get_param('src',$parstack,$safeeval); |
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 $width= &Apache::lonxml::get_param('width',$parstack,$safeeval); |
my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval); |
my $height= &Apache::lonxml::get_param('height',$parstack,$safeeval); |
|
|
if ($token->[2]{'src'}=~/\$/) { |
if ($token->[2]{'src'}=~/\$/) { |
$currentstring.='Variable image source'; |
$currentstring.=&mt('Variable image source'); |
} else { |
} elsif ($token->[2]{'src'}=~/\S/) { |
$currentstring .= '<img src="'.$src.'" alt="'.$alt.'" '; |
$currentstring .= '<img src="'.$src.'" alt="'.$alt.'" '; |
if ($width) { $currentstring.=' width="'.$width.'" '; } |
if ($width) { $currentstring.=' width="'.$width.'" '; } |
if ($height) { $currentstring.=' height="'.$height.'" '; } |
if ($height) { $currentstring.=' height="'.$height.'" '; } |
$currentstring .= ' />'; |
$currentstring .= ' />'; |
|
} else { |
|
$currentstring.=&mt("No image source specified"); |
} |
} |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my ($osrc,$owidth,$oheight)= |
my ($osrc,$owidth,$oheight)= |
Line 3343 sub start_applet {
|
Line 3366 sub start_applet {
|
&Apache::lonxml::extlink($archive); |
&Apache::lonxml::extlink($archive); |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($env{'browser.appletsuppress'} ne 'on') { |
$currentstring = &Apache::lonenc::encrypt_ref($token, |
$currentstring = &Apache::lonenc::encrypt_ref($token, |
{'code'=>$code, |
{'code'=>$code, |
'archive'=>$archive} |
'archive'=>$archive} |
); |
); |
|
} 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') { |
} elsif ($target eq 'tex') { |
# Turn off some stuff we can't be inside thank you LaTeX |
# Turn off some stuff we can't be inside thank you LaTeX |
|
|
|
|
my $restart_sub = 0; |
my $restart_sub = 0; |
my $restart_sup = 0; |
my $restart_sup = 0; |
Line 3423 sub start_embed {
|
Line 3435 sub start_embed {
|
&Apache::lonxml::extlink($src); |
&Apache::lonxml::extlink($src); |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($env{'browser.embedsuppress'} ne 'on') { |
$currentstring=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}); |
$currentstring=&Apache::lonenc::encrypt_ref($token,{'src'=>$src}); |
|
} 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') { |
} elsif ($target eq 'tex') { |
} |
} |
return $currentstring; |
return $currentstring; |
Line 3442 sub end_embed {
|
Line 3445 sub end_embed {
|
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
} |
# ./. |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 3882 sub end_colgroup {
|
Line 3886 sub end_colgroup {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
|
#-- <del> tag (end tag required) |
#-- <del> tag (end tag required) |
sub start_del { |
sub start_del { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
|
} elsif ($target eq 'tex') { |
|
&disable_para(); |
|
$currentstring .= '\st{'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 3896 sub end_del {
|
Line 3904 sub end_del {
|
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web' || $target eq 'webgrade') { |
if ($target eq 'web' || $target eq 'webgrade') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
|
} elsif ($target eq 'tex') { |
|
&enable_para(); |
|
$currentstring = '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 4736 sub align_latex_image {
|
Line 4747 sub align_latex_image {
|
# Even though we set a default alignment value, the user |
# Even though we set a default alignment value, the user |
# could have given us an illegal value. In that case we |
# could have given us an illegal value. In that case we |
# just use the default alignment of bottom.. |
# just use the default alignment of bottom.. |
$currentstring = "\n% figurewrapping \n"; |
$currentstring = ''; |
if ($align eq "top") { |
if ($align eq "top") { |
$currentstring .= '\raisebox{-'.$height.'mm}{'.$image; |
$currentstring .= '\raisebox{-'.$height.'mm}{'.$image; |
$closure = '}'; |
$closure = '}'; |
Line 4779 sub align_latex_image {
|
Line 4790 sub align_latex_image {
|
$currentstring .= "{$image"; |
$currentstring .= "{$image"; |
$closure = '}'; |
$closure = '}'; |
} |
} |
$currentstring .= "\n% end wrappage\n"; |
|
$closure = "\n% Begin closure\n".$closure."\n% End closure\n"; |
|
return ($currentstring, $closure); |
return ($currentstring, $closure); |
} |
} |
|
|
Line 4800 sub is_inside_of {
|
Line 4809 sub is_inside_of {
|
# |
# |
# This sub provides the typical LaTeX prefix matter for tex output: |
# This sub provides the typical LaTeX prefix matter for tex output: |
# |
# |
sub latex_header |
sub latex_header { |
{ |
|
my ($mode) = @_; |
my ($mode) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
|
|
Line 4835 sub latex_header
|
Line 4843 sub latex_header
|
"\\usepackage{xcolor}\n". |
"\\usepackage{xcolor}\n". |
'\usepackage{calc}'. |
'\usepackage{calc}'. |
'\usepackage{amsmath}'. |
'\usepackage{amsmath}'. |
|
'\usepackage{soul}', |
'\usepackage{amssymb}'. |
'\usepackage{amssymb}'. |
'\usepackage{amsfonts}'. |
'\usepackage{amsfonts}'. |
'\usepackage{amsthm}'. |
'\usepackage{amsthm}'. |