version 1.440, 2007/02/23 00:39:35
|
version 1.446, 2007/05/17 21:00:59
|
Line 42 package Apache::lonxml;
|
Line 42 package Apache::lonxml;
|
use vars |
use vars |
qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace $errorcount $warningcount); |
qw(@pwd @outputstack $redirection $import @extlinks $metamode $evaluate %insertlist @namespace $errorcount $warningcount); |
use strict; |
use strict; |
|
use LONCAPA; |
use HTML::LCParser(); |
use HTML::LCParser(); |
use HTML::TreeBuilder(); |
use HTML::TreeBuilder(); |
use HTML::Entities(); |
use HTML::Entities(); |
Line 585 sub callsub {
|
Line 586 sub callsub {
|
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
$currentstring = &Apache::edit::tag_end($target,$token); |
$currentstring = &Apache::edit::tag_end($target,$token); |
} |
} |
} elsif ($target eq 'modified') { |
} |
|
} |
|
if ($target eq 'modified' && $nodefault eq '') { |
|
if ($currentstring eq '') { |
|
if ($token->[0] eq 'S') { |
|
$currentstring = $token->[4]; |
|
} elsif ($token->[0] eq 'E') { |
|
$currentstring = $token->[2]; |
|
} else { |
|
$currentstring = $token->[2]; |
|
} |
|
} |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
$currentstring = $token->[4]; |
|
$currentstring.=&Apache::edit::handle_insert(); |
$currentstring.=&Apache::edit::handle_insert(); |
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
$currentstring = $token->[2]; |
|
$currentstring.=&Apache::edit::handle_insertafter($token->[1]); |
$currentstring.=&Apache::edit::handle_insertafter($token->[1]); |
} else { |
|
$currentstring = $token->[2]; |
|
} |
} |
} |
|
} |
} |
} |
} |
use strict 'refs'; |
use strict 'refs'; |
Line 1202 sub writeallows {
|
Line 1209 sub writeallows {
|
my %httpref=(); |
my %httpref=(); |
foreach (@extlinks) { |
foreach (@extlinks) { |
$httpref{'httpref.'. |
$httpref{'httpref.'. |
&Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl; |
&Apache::lonnet::hreflocation($thisdir,&unescape($_))}=$thisurl; |
} |
} |
@extlinks=(); |
@extlinks=(); |
&Apache::lonnet::appenv(%httpref); |
&Apache::lonnet::appenv(%httpref); |
Line 1692 sub get_param_var {
|
Line 1699 sub get_param_var {
|
} |
} |
} |
} |
|
|
sub register_insert_tab { |
|
my @data = split /\n/, &Apache::lonnet::getfile('/home/httpd/lonTabs/insertlist.tab'); |
|
my $i; |
|
my $tagnum=0; |
|
my @order; |
|
for ($i=0;$i < $#data; $i++) { |
|
my $line = $data[$i]; |
|
if ( $line =~ /^\#/ || $line =~ /^\s*\n/) { next; } |
|
if ( $line =~ /TABLE/ ) { last; } |
|
my ($tag,$descrip,$color,$function,$show,$helpfile,$helpdesc) = split(/,/, $line); |
|
if ($tag) { |
|
$insertlist{"$tagnum.tag"} = $tag; |
|
$insertlist{"$tag.description"} = $descrip; |
|
$insertlist{"$tag.color"} = $color; |
|
$insertlist{"$tag.function"} = $function; |
|
if (!defined($show)) { $show='yes'; } |
|
$insertlist{"$tag.show"}= $show; |
|
$insertlist{"$tag.helpfile"} = $helpfile; |
|
$insertlist{"$tag.helpdesc"} = $helpdesc; |
|
$insertlist{"$tag.num"}=$tagnum; |
|
$tagnum++; |
|
} |
|
} |
|
$i++; #skipping TABLE line |
|
$tagnum = 0; |
|
for (;$i < $#data;$i++) { |
|
my $line = $data[$i]; |
|
my ($mnemonic,@which) = split(/ +/,$line); |
|
my $tag = $insertlist{"$tagnum.tag"}; |
|
for (my $j=0;$j <=$#which;$j++) { |
|
if ( $which[$j] eq 'Y' ) { |
|
if ($insertlist{"$j.show"} ne 'no') { |
|
push(@{ $insertlist{"$tag.which"} },$insertlist{"$j.tag"}); |
|
} |
|
} |
|
} |
|
$tagnum++; |
|
} |
|
} |
|
|
|
sub register_insert_xml { |
sub register_insert_xml { |
my $parser = HTML::LCParser->new($Apache::lonnet::perlvar{'lonTabDir'} |
my $parser = HTML::LCParser->new($Apache::lonnet::perlvar{'lonTabDir'} |
.'/insertlist.xml'); |
.'/insertlist.xml'); |
my ($tagnum,$in_help)=(0,0); |
my ($tagnum,$in_help)=(0,0); |
|
my @alltags; |
my $tag; |
my $tag; |
while (my $token = $parser->get_token()) { |
while (my $token = $parser->get_token()) { |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
Line 1744 sub register_insert_xml {
|
Line 1712 sub register_insert_xml {
|
$tag = $token->[2]{'name'}; |
$tag = $token->[2]{'name'}; |
$insertlist{"$tagnum.tag"} = $tag; |
$insertlist{"$tagnum.tag"} = $tag; |
$insertlist{"$tag.num"} = $tagnum; |
$insertlist{"$tag.num"} = $tagnum; |
|
push(@alltags,$tag); |
} elsif ($in_help && $token->[1] eq 'file') { |
} elsif ($in_help && $token->[1] eq 'file') { |
$key = $tag.'.helpfile'; |
$key = $tag.'.helpfile'; |
} elsif ($in_help && $token->[1] eq 'description') { |
} elsif ($in_help && $token->[1] eq 'description') { |
Line 1757 sub register_insert_xml {
|
Line 1726 sub register_insert_xml {
|
} elsif ($token->[1] eq 'help') { |
} elsif ($token->[1] eq 'help') { |
$in_help=1; |
$in_help=1; |
} elsif ($token->[1] eq 'allow') { |
} elsif ($token->[1] eq 'allow') { |
my $allow = $parser->get_text(); |
$key = $tag.'.allow'; |
foreach my $element (split(',',$allow)) { |
|
$element =~ s/(^\s*|\s*$ )//gx; |
|
push(@{ $insertlist{$tag.'.which'} },$element); |
|
} |
|
} |
} |
if (defined($key)) { |
if (defined($key)) { |
$insertlist{$key} = $parser->get_text(); |
$insertlist{$key} = $parser->get_text(); |
Line 1776 sub register_insert_xml {
|
Line 1741 sub register_insert_xml {
|
} |
} |
} |
} |
} |
} |
|
|
|
# parse the allows and ignore tags set to <show>no</show> |
|
foreach my $tag (@alltags) { |
|
next if (!exists($insertlist{"$tag.allow"})); |
|
my $allow = $insertlist{"$tag.allow"}; |
|
foreach my $element (split(',',$allow)) { |
|
$element =~ s/(^\s*|\s*$ )//gx; |
|
if (!exists($insertlist{"$element.show"}) |
|
|| $insertlist{"$element.show"} ne 'no') { |
|
push(@{ $insertlist{$tag.'.which'} },$element); |
|
} |
|
} |
|
} |
} |
} |
|
|
sub register_insert { |
sub register_insert { |
# ®ister_insert_tab(@_); |
|
# &dump_insertlist('1'); |
|
# undef(%insertlist); |
|
return ®ister_insert_xml(@_); |
return ®ister_insert_xml(@_); |
# &dump_insertlist('2'); |
# &dump_insertlist('2'); |
} |
} |