version 1.116, 2006/05/30 19:47:40
|
version 1.122, 2007/08/28 01:13:19
|
Line 108 sub processversionfile {
|
Line 108 sub processversionfile {
|
sub loadmap { |
sub loadmap { |
my $uri=shift; |
my $uri=shift; |
if ($hash{'map_pc_'.$uri}) { |
if ($hash{'map_pc_'.$uri}) { |
$errtext.=&mt('<br />Multiple use of sequence/page <tt>[_1]</tt>! The course will not function properly.',$uri); |
$errtext.='<p class="LC_error">'. |
|
&mt('Multiple use of sequence/page [_1]! The course will not function properly.','<tt>'.$uri.'</tt>'). |
|
'</p>'; |
return; |
return; |
} |
} |
$pc++; |
$pc++; |
Line 291 sub loadmap {
|
Line 293 sub loadmap {
|
} else { |
} else { |
$hash{'param_'.$referid}=''.$newparam; |
$hash{'param_'.$referid}=''.$newparam; |
} |
} |
if ($token->[2]->{'name'}=~/^parameter_(0_)*mapalias$/) { |
|
$hash{'mapalias_'.$token->[2]->{'value'}}=$referid; |
|
} |
|
if ($token->[2]->{'name'}=~/^parameter_(0_)*randompick$/) { |
if ($token->[2]->{'name'}=~/^parameter_(0_)*randompick$/) { |
$randompick{$referid}=$token->[2]->{'value'}; |
$randompick{$referid}=$token->[2]->{'value'}; |
} |
} |
if ($token->[2]->{'name'}=~/^parameter_(0_)*randompickseed$/) { |
if ($token->[2]->{'name'}=~/^parameter_(0_)*randompickseed$/) { |
$randompick{$referid}=$token->[2]->{'value'}; |
$randompickseed{$referid}=$token->[2]->{'value'}; |
} |
} |
if ($token->[2]->{'name'}=~/^parameter_(0_)*encrypturl$/) { |
if ($token->[2]->{'name'}=~/^parameter_(0_)*encrypturl$/) { |
if ($token->[2]->{'value'}=~/^yes$/i) { |
if ($token->[2]->{'value'}=~/^yes$/i) { |
Line 318 sub loadmap {
|
Line 317 sub loadmap {
|
} else { |
} else { |
$errtext.=&mt('<br />Map not loaded: The file <tt>[_1]</tt> does not exist.',$fn); |
$errtext.=&mt('<br />Map not loaded: The file <tt>[_1]</tt> does not exist.',$fn); |
} |
} |
|
|
|
my $parser = HTML::TokeParser->new(\$instr); |
|
$parser->attr_encoded(1); |
|
# last parse out the mapalias params so as to ignore anything |
|
# refering to non-existant resources |
|
while (my $token = $parser->get_token) { |
|
next if ($token->[0] ne 'S'); |
|
if ($token->[1] eq 'param') { |
|
&parse_mapalias_param($token,$lpc); |
|
} |
|
} |
|
} |
|
|
|
sub parse_mapalias_param { |
|
my ($token,$lpc) = @_; |
|
my $referid=$lpc.'.'.$token->[2]->{'to'}; |
|
return if (!exists($hash{'src_'.$referid})); |
|
|
|
if ($token->[2]->{'name'}=~/^parameter_(0_)*mapalias$/) { |
|
&count_mapalias($token->[2]->{'value'},$referid); |
|
$hash{'mapalias_'.$token->[2]->{'value'}}=$referid; |
|
} |
} |
} |
|
|
# --------------------------------------------------------- Simplify expression |
# --------------------------------------------------------- Simplify expression |
Line 348 sub simplify {
|
Line 369 sub simplify {
|
sub traceroute { |
sub traceroute { |
my ($sofar,$rid,$beenhere,$encflag,$hdnflag)=@_; |
my ($sofar,$rid,$beenhere,$encflag,$hdnflag)=@_; |
my $newsofar=$sofar=simplify($sofar); |
my $newsofar=$sofar=simplify($sofar); |
unless ($beenhere=~/\&$rid\&/) { |
unless ($beenhere=~/\&\Q$rid\E\&/) { |
$beenhere.=$rid.'&'; |
$beenhere.=$rid.'&'; |
my ($mapid,$resid)=split(/\./,$rid); |
my ($mapid,$resid)=split(/\./,$rid); |
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$hash{'src_'.$rid}); |
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$hash{'src_'.$rid}); |
Line 579 sub readmap {
|
Line 600 sub readmap {
|
%parmhash=(); |
%parmhash=(); |
$errtext=''; |
$errtext=''; |
$pc=0; |
$pc=0; |
|
&clear_mapalias_count(); |
&processversionfile(%cenv); |
&processversionfile(%cenv); |
my $furi=&Apache::lonnet::clutter($uri); |
my $furi=&Apache::lonnet::clutter($uri); |
$hash{'src_0.0'}=&versiontrack($furi); |
$hash{'src_0.0'}=&versiontrack($furi); |
Line 595 sub readmap {
|
Line 617 sub readmap {
|
&accinit($uri,$short,$fn); |
&accinit($uri,$short,$fn); |
&hiddenurls(); |
&hiddenurls(); |
} |
} |
|
$errtext .= &get_mapalias_errors(); |
# ------------------------------------------------------- Put versions into src |
# ------------------------------------------------------- Put versions into src |
foreach my $key (keys(%hash)) { |
foreach my $key (keys(%hash)) { |
if ($key=~/^src_/) { |
if ($key=~/^src_/) { |
Line 726 sub evalstate {
|
Line 749 sub evalstate {
|
return $state; |
return $state; |
} |
} |
|
|
|
{ |
|
my %mapalias_cache; |
|
sub count_mapalias { |
|
my ($value,$resid) = @_; |
|
push(@{ $mapalias_cache{$value} }, $resid); |
|
} |
|
|
|
sub get_mapalias_errors { |
|
my $error_text; |
|
foreach my $mapalias (sort(keys(%mapalias_cache))) { |
|
next if (scalar(@{ $mapalias_cache{$mapalias} } ) == 1); |
|
my $count; |
|
my $which = |
|
join('</li><li>', |
|
map { |
|
my $id = $_; |
|
if (exists($hash{'src_'.$id})) { |
|
$count++; |
|
} |
|
my ($mapid) = split(/\./,$id); |
|
&mt('[_1] in [_2]', $hash{'title_'.$id}, |
|
|
|
$hash{'title_'.$hash{'ids_'.$hash{'map_id_'.$mapid}}}); |
|
} (@{ $mapalias_cache{$mapalias} })); |
|
next if ($count < 2); |
|
$error_text .= '<div class="LC_error">'. |
|
&mt('Error: Found the mapalias "[_1]" defined multiple times.', |
|
$mapalias). |
|
'</div><ul><li>'.$which.'</li></ul>'; |
|
} |
|
&clear_mapalias_count(); |
|
return $error_text; |
|
} |
|
sub clear_mapalias_count { |
|
undef(%mapalias_cache); |
|
} |
|
} |
1; |
1; |
__END__ |
__END__ |
|
|