version 1.362, 2007/04/06 10:23:46
|
version 1.375, 2007/08/10 11:21:00
|
Line 448 sub start_meta {
|
Line 448 sub start_meta {
|
if ((not defined $content) && (not defined $name)) { |
if ((not defined $content) && (not defined $name)) { |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::startredirection(); |
} |
} |
|
} elsif ($target eq 'edit') { |
|
$currentstring .= &Apache::edit::tag_start($target,$token); |
|
$currentstring .= &Apache::edit::text_arg('Name:','name',$token,30); |
|
$currentstring .= &Apache::edit::text_arg('Content:','content',$token,70); |
|
$currentstring .= &Apache::edit::end_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag = |
|
&Apache::edit::get_new_args($token,$parstack,$safeeval, |
|
'name','content'); |
|
if ($constructtag) { $currentstring = &Apache::edit::rebuild_tag($token); } |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 471 sub end_meta {
|
Line 481 sub end_meta {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
sub insert_meta { |
|
return ' |
|
<meta />'; |
|
} |
|
|
# accessrule |
# accessrule |
sub start_accessrule { |
sub start_accessrule { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
my $eff=&Apache::lonxml::get_param |
my $eff =&Apache::lonxml::get_param('effect',$parstack,$safeeval,undef,1); |
('effect',$parstack,$safeeval,undef,1); |
my $realm=&Apache::lonxml::get_param('realm', $parstack,$safeeval,undef,1); |
my $realm=&Apache::lonxml::get_param |
my $role =&Apache::lonxml::get_param('role', $parstack,$safeeval,undef,1); |
('realm',$parstack,$safeeval,undef,1); |
my $type =&Apache::lonxml::get_param('type', $parstack,$safeeval,undef,1); |
my $role=&Apache::lonxml::get_param |
|
('role',$parstack,$safeeval,undef,1); |
my ($dom,$crs,$sec,$separator); |
$realm=~s/\s+//g; |
if ($type eq 'user') { |
$realm=~s/\//\_/g; |
($dom,$crs,$sec)=split(m{/},$realm); |
$realm=~s/^\_//; |
$crs = &LONCAPA::clean_username($crs); |
$realm=~s/\W/\;/g; |
$separator = '/'; |
$role=~s/\s+//g; |
} else { |
$role=~s/\//\_/g; |
($dom,$crs,$sec)=split(/\_/,$realm); |
$role=~s/\W/\;/g; |
$crs = &LONCAPA::clean_courseid($crs); |
|
$separator = '_'; |
|
} |
|
$dom = &LONCAPA::clean_domain($dom); |
|
|
|
$sec =~s/\W//; |
|
$realm = $dom; |
|
if ($crs =~ /\S/) { $realm .= $separator.$crs; } |
|
if ($sec =~ /\S/) { $realm .= $separator.$sec; } |
|
$role=~s/\W//g; |
|
|
if ($target eq 'web') { |
if ($target eq 'web') { |
my $args=''; |
my $args=''; |
if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; } |
if ( $#$parstack > -1 ) { $args=$$parstack[$#$parstack]; } |
Line 498 sub start_accessrule {
|
Line 523 sub start_accessrule {
|
} |
} |
} |
} |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$currentstring='<rule>'.$eff.':'.$realm.':'.$role.'</rule>'; |
$currentstring='<rule>'.$eff.':'.$realm.':'.$role.':'.$type.'</rule>'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 516 sub end_accessrule {
|
Line 541 sub end_accessrule {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
sub generate_css_links { |
|
my $links; |
|
my $css_href = &Apache::lonnet::EXT('resource.0.cssfile'); |
|
if ($css_href =~ /\S/) { |
|
&Apache::lonxml::extlink($css_href); |
|
$links .= |
|
'<link rel="stylesheet" type="text/css" href="'.$css_href.'" />'; |
|
} |
|
return $links; |
|
} |
|
|
#-- <body> tag (end tag required) |
#-- <body> tag (end tag required) |
sub start_body { |
sub start_body { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
Line 530 sub start_body {
|
Line 566 sub start_body {
|
if (&is_inside_of($tagstack, "head")) { |
if (&is_inside_of($tagstack, "head")) { |
&end_head(@_); |
&end_head(@_); |
} |
} |
|
|
|
my $extra_head = &generate_css_links(); |
|
|
$currentstring = |
$currentstring = |
&Apache::loncommon::start_page($Apache::londefdef::title, |
&Apache::loncommon::start_page($Apache::londefdef::title, |
$Apache::londefdef::head, |
$Apache::londefdef::head |
|
.$extra_head, |
{'add_entries' => $token->[2], |
{'add_entries' => $token->[2], |
'no_title' => 1, |
'no_title' => 1, |
'force_register' => 1}); |
'force_register' => 1}); |
Line 1228 sub start_br {
|
Line 1268 sub start_br {
|
$signal = 1; |
$signal = 1; |
} |
} |
} |
} |
if ($signal eq 1) { |
if ($signal != 1) { |
$currentstring .= ' \vskip 0 mm '; |
|
} else { |
|
$currentstring .= '\strut \\\\ \strut '; |
$currentstring .= '\strut \\\\ \strut '; |
} |
} |
|
|
Line 1609 sub end_a {
|
Line 1647 sub end_a {
|
&Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1); |
&Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1); |
if ($href =~ /\S/) { |
if ($href =~ /\S/) { |
$href =~ s/([^\\])%/$1\\\%/g; |
$href =~ s/([^\\])%/$1\\\%/g; |
$currentstring .= ' ({\tt URI:'.&Apache::lonxml::latex_special_symbols($href).'})'; |
# Substitute special symbols... and allow line breaks at each / |
|
# |
|
$href = &Apache::lonxml::latex_special_symbols($href); |
|
$href =~ s/\//\/\\-/g; # Map / to /\- to allow hyphenation. |
|
$currentstring .= ' ({\tt URI:'.$href.'})'; |
} elsif ($name =~ /\S/) { |
} elsif ($name =~ /\S/) { |
$currentstring .= ' ({\tt Anchor:'.&Apache::lonxml::latex_special_symbols($name).'})'; |
$currentstring .= ' ({\tt Anchor:'.&Apache::lonxml::latex_special_symbols($name).'})'; |
} else { |
} else { |
Line 1985 sub start_table {
|
Line 2027 sub start_table {
|
} else { |
} else { |
$TeXwidth = $textwidth; |
$TeXwidth = $textwidth; |
} |
} |
} else { |
} |
$Apache::londefdef::table[-1]{'forcedtablewidth'} = 1; |
# if the width is specified as a % it is converted to an absolute width. |
} |
# otherwise.. just plugged right in the hash |
# This stuff looks a bit hokey.. |
|
# Percentage width is actually given as an absolute width.. |
|
# but it appears that unless the 'percent' flag is set, |
|
# The table is just allowed to go to its natural width |
|
# for now let's always claim 'percent' is set.. |
|
# |
|
if ($TeXwidth=~/%/) { |
if ($TeXwidth=~/%/) { |
$Apache::londefdef::table[-1]{'percent'}=1; |
|
$TeXwidth=~/(\d+)/; |
$TeXwidth=~/(\d+)/; |
$Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100; |
$Apache::londefdef::table[-1]{'width'}=$1*$textwidth/100; |
} else { |
} else { |
$Apache::londefdef::table[-1]{'percent'} = 1; # kludge until we get the intent. |
|
$Apache::londefdef::table[-1]{'width'}=$TeXwidth; |
$Apache::londefdef::table[-1]{'width'}=$TeXwidth; |
} |
} |
# In the end, however the table width cannot be wider than $textwidth... |
# In the end, however the table width cannot be wider than $textwidth... |
Line 2046 sub end_table {
|
Line 2081 sub end_table {
|
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') { |
|
my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval); |
my $inmemory = ''; |
my $inmemory = ''; |
my $output = ''; |
my $output = ''; |
my $WARNING=''; |
my $WARNING=''; |
Line 2142 sub end_table {
|
Line 2178 sub end_table {
|
my @fwidth=@{$Apache::londefdef::table[-1]{'TeXlen'}[0]};#final width array |
my @fwidth=@{$Apache::londefdef::table[-1]{'TeXlen'}[0]};#final width array |
my @adjust=(); |
my @adjust=(); |
#step 1. adjustment by maximum value |
#step 1. adjustment by maximum value |
my $space_neeeded=0; |
my $space_needed=0; |
for (my $jn=0;$jn<=$#max_len;$jn++) { |
for (my $jn=0;$jn<=$#max_len;$jn++) { |
$space_neeeded=$space_neeeded+$max_len[$jn]; |
$space_needed=$space_needed+$max_len[$jn]; |
} |
} |
if ($space_neeeded<=$available_space) { |
if ($space_needed<=$available_space) { |
|
|
for (my $jn=0;$jn<=$#max_len;$jn++) { |
for (my $jn=0;$jn<=$#max_len;$jn++) { |
if ($fwidth[$jn]==0) { |
if ($fwidth[$jn]==0) { |
Line 2155 sub end_table {
|
Line 2191 sub end_table {
|
} |
} |
} else { |
} else { |
#step 2. adjustment by minimum value (estimation) |
#step 2. adjustment by minimum value (estimation) |
$space_neeeded=0; |
$space_needed=0; |
for (my $jn=0;$jn<=$#min_len;$jn++) { |
for (my $jn=0;$jn<=$#min_len;$jn++) { |
$space_neeeded+=$min_len[$jn]; |
$space_needed+=$min_len[$jn]; |
} |
} |
if ($space_neeeded>$available_space) { |
if ($space_needed>$available_space) { |
$WARNING=' \textbf{NOT ENOUGH SPACE FOR TABLE} '; |
$WARNING=' \textbf{NOT ENOUGH SPACE FOR TABLE} '; |
for (my $jn=0;$jn<=$#max_len;$jn++) { |
for (my $jn=0;$jn<=$#max_len;$jn++) { |
if ($fwidth[$jn]==0) { |
if ($fwidth[$jn]==0) { |
Line 2176 sub end_table {
|
Line 2212 sub end_table {
|
} |
} |
} |
} |
if ($how_many_to_scale>0) { |
if ($how_many_to_scale>0) { |
my $space_to_adjust=($space_neeeded-$available_space)/$how_many_to_scale; |
my $space_to_adjust=($space_needed-$available_space)/$how_many_to_scale; |
foreach my $jn (@to_scale) { |
foreach my $jn (@to_scale) { |
for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { |
for (my $in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { |
$Apache::londefdef::table[-1]{'content'}[$in][$jn]=~m/width\s*=\s*(\d+\.?\d*\s*(mm|cm|in|pc|pt)*)/; |
$Apache::londefdef::table[-1]{'content'}[$in][$jn]=~m/width\s*=\s*(\d+\.?\d*\s*(mm|cm|in|pc|pt)*)/; |
Line 2198 sub end_table {
|
Line 2234 sub end_table {
|
} |
} |
} else { |
} else { |
#step 3. adjustment over minimal + corrections |
#step 3. adjustment over minimal + corrections |
my $enlarge_coef=$available_space/$space_neeeded; |
my $enlarge_coef=$available_space/$space_needed; |
my $acsessive=0; |
my $acsessive=0; |
for (my $jn=0;$jn<=$#min_len;$jn++) { |
for (my $jn=0;$jn<=$#min_len;$jn++) { |
$adjust[$jn]=$min_len[$jn]*$enlarge_coef; |
$adjust[$jn]=$min_len[$jn]*$enlarge_coef; |
Line 2231 sub end_table {
|
Line 2267 sub end_table {
|
} |
} |
} |
} |
} |
} |
#use all available width if it is defined in % or as TeXwidth |
# use all available width or specified width as if not specified, |
if (($Apache::londefdef::table[-1]{'percent'}==1) || ($Apache::londefdef::table[-1]{'forcetablewidth'}==1)) { |
# the specified width gets defaulted to the available width. |
my $current=0; |
|
for (my $i=0;$i<=$#fwidth;$i++) { |
my $current=0; |
$current+=$fwidth[$i]; |
for (my $i=0;$i<=$#fwidth;$i++) { |
} |
$current+=$fwidth[$i]; |
my $coef=$Apache::londefdef::table[-1]{'width'}/$current; |
} |
for (my $i=0;$i<=$#fwidth;$i++) { |
if ($current == 0) { |
$fwidth[$i]*=$coef; |
$current = $Apache::londefdef::table[-1]{'width'}; |
} |
} |
|
my $coef=$Apache::londefdef::table[-1]{'width'}/$current; |
|
for (my $i=0;$i<=$#fwidth;$i++) { |
|
$fwidth[$i]*=$coef; |
} |
} |
#removing of empty columns if allowed |
#removing of empty columns if allowed |
my $permission=&Apache::lonxml::get_param('TeXDropEmptyColumns',$parstack,$safeeval,undef,0); |
my $permission=&Apache::lonxml::get_param('TeXDropEmptyColumns',$parstack,$safeeval,undef,0); |
Line 2290 sub end_table {
|
Line 2329 sub end_table {
|
# Do the appropriate magic if this has a colspan |
# Do the appropriate magic if this has a colspan |
# |
# |
|
|
|
my $border_char = ""; |
|
if ($border) { |
|
$border_char = "|"; |
|
} |
my $spanwidth = 0; |
my $spanwidth = 0; |
if ($colspan > 1) { |
if ($colspan > 1) { |
for (my $spancol = $jn; $spancol < $jn + $colspan; $spancol++) { |
for (my $spancol = $jn; $spancol < $jn + $colspan; $spancol++) { |
Line 2299 sub end_table {
|
Line 2342 sub end_table {
|
$colspan |
$colspan |
."}"; |
."}"; |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
$output .= '{|c|}{'; |
$output .= '{'.$border_char.'c'.$border_char.'}{'; |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
$output .= '{|r|}{'; |
$output .= '{'.$border_char.'r'.$border_char.'}{'; |
} |
} |
else { |
else { |
$output .= "{|p{$spanwidth mm}|}{"; |
$output .= '{'.$border_char."p{$spanwidth mm}".$border_char.'}{'; |
} |
} |
|
|
} else { |
} else { |
Line 2320 sub end_table {
|
Line 2363 sub end_table {
|
if ($rowspan > 1) { |
if ($rowspan > 1) { |
if ($colspan == 1) { |
if ($colspan == 1) { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
$output .= '\multicolumn{1}{|c|}{'; |
$output .= '\multicolumn{1}{'.$border_char.'c'.$border_char.'}{'; |
$multirow_aligned = 1; |
$multirow_aligned = 1; |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
$output .= '\multicolumn{1}{|r|}{'; |
$output .= '\multicolumn{1}{'.$border_char.'r'.$border_char.'}{'; |
$multirow_aligned = 1; |
$multirow_aligned = 1; |
} |
} |
} |
} |
Line 2360 sub end_table {
|
Line 2403 sub end_table {
|
# |
# |
if ($colspan == 1 && $rowspan == 1) { |
if ($colspan == 1 && $rowspan == 1) { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
if ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'c') { |
$output .= '\multicolumn{1}{|c|}{'; |
$output .= '\multicolumn{1}{'.$border_char.'c'.$border_char.'}{'; |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
} elsif ($Apache::londefdef::table[-1]{'align'}[$in][$jn] eq 'r') { |
$output .= '\multicolumn{1}{|r|}{'; |
$output .= '\multicolumn{1}{'.$border_char.'r'.$border_char.'}{'; |
} |
} |
} |
} |
|
|
Line 2989 sub start_img {
|
Line 3032 sub start_img {
|
# And here's where the semi-quote breaks down: allow the user |
# And here's where the semi-quote breaks down: allow the user |
# to edit the beast as well by rendering the problem for edit: |
# to edit the beast as well by rendering the problem for edit: |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
|
my $only = join(',',&Apache::loncommon::filecategorytypes('Pictures')); |
$currentstring .=&Apache::edit::tag_start($target,$token); |
$currentstring .=&Apache::edit::tag_start($target,$token); |
$currentstring .=&Apache::edit::text_arg('Image Url:','src',$token,70). |
$currentstring .=&Apache::edit::text_arg('Image Url:','src',$token,70). |
&Apache::edit::browse('src',undef,'alt').' '. |
&Apache::edit::browse('src',undef,'alt',$only).' '. |
&Apache::edit::search('src',undef,'alt').'<br />'; |
&Apache::edit::search('src',undef,'alt').'<br />'; |
$currentstring .=&Apache::edit::text_arg('Description:','alt',$token,70).'<br />'; |
$currentstring .=&Apache::edit::text_arg('Description:','alt',$token,70).'<br />'; |
$currentstring .=&Apache::edit::text_arg('width (pixel):','width',$token,5); |
$currentstring .=&Apache::edit::text_arg('width (pixel):','width',$token,5); |