version 1.118.2.1, 2007/06/08 19:33:06
|
version 1.118.2.2, 2007/06/28 23:26:38
|
Line 56 my $retfrid; # variable with the very fi
|
Line 56 my $retfrid; # variable with the very fi
|
my $retfurl; # first URL |
my $retfurl; # first URL |
my %randompick; # randomly picked resources |
my %randompick; # randomly picked resources |
my %randompickseed; # optional seed for randomly picking resources |
my %randompickseed; # optional seed for randomly picking resources |
|
my %randomorder; # maps to order contents randomly |
my %encurl; # URLs in this folder are supposed to be encrypted |
my %encurl; # URLs in this folder are supposed to be encrypted |
my %hiddenurl; # this URL (or complete folder) is supposed to be hidden |
my %hiddenurl; # this URL (or complete folder) is supposed to be hidden |
|
|
Line 106 sub processversionfile {
|
Line 107 sub processversionfile {
|
# --------------------------------------------------------- Loads map from disk |
# --------------------------------------------------------- Loads map from disk |
|
|
sub loadmap { |
sub loadmap { |
my $uri=shift; |
my ($uri,$parent_rid)=@_; |
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.=&mt('<br />Multiple use of sequence/page <tt>[_1]</tt>! The course will not function properly.',$uri); |
return; |
return; |
Line 138 sub loadmap {
|
Line 139 sub loadmap {
|
|
|
my $parser = HTML::TokeParser->new(\$instr); |
my $parser = HTML::TokeParser->new(\$instr); |
$parser->attr_encoded(1); |
$parser->attr_encoded(1); |
|
# first get all parameters |
|
while (my $token = $parser->get_token) { |
|
next if ($token->[0] ne 'S'); |
|
if ($token->[1] eq 'param') { |
|
&parse_param($token,$lpc); |
|
} |
|
} |
|
#reset parser |
|
$parser = HTML::TokeParser->new(\$instr); |
|
$parser->attr_encoded(1); |
|
|
my $linkpc=0; |
my $linkpc=0; |
|
|
Line 145 sub loadmap {
|
Line 156 sub loadmap {
|
|
|
$hash{'map_type_'.$lpc}=$1; |
$hash{'map_type_'.$lpc}=$1; |
|
|
my $randomize=1; |
my $randomize = ($randomorder{$parent_rid} =~ /^yes$/i); |
|
|
my @map_ids; |
my @map_ids; |
while (my $token = $parser->get_token) { |
while (my $token = $parser->get_token) { |
next if ($token->[0] ne 'S'); |
next if ($token->[0] ne 'S'); |
Line 158 sub loadmap {
|
Line 170 sub loadmap {
|
$token->[2]->{'condition'}); |
$token->[2]->{'condition'}); |
} elsif ($token->[1] eq 'condition' && !$randomize) { |
} elsif ($token->[1] eq 'condition' && !$randomize) { |
&parse_condition($token,$lpc); |
&parse_condition($token,$lpc); |
} elsif ($token->[1] eq 'param') { |
} |
&parse_param($token,$lpc); |
|
} |
|
} |
} |
|
|
if ($randomize) { |
if ($randomize) { |
|
my $seed = (split(/\./,$parent_rid))[1]; |
|
if ($randompickseed{$parent_rid}) { |
|
$seed = $randompickseed{$parent_rid}; |
|
} |
|
my $rndseed=&Apache::lonnet::rndseed($seed); |
|
&Apache::lonnet::setup_random_from_rndseed($rndseed); |
my @map_ids=&Math::Random::random_permutation(@map_ids); |
my @map_ids=&Math::Random::random_permutation(@map_ids); |
my $from = shift(@map_ids); |
my $from = shift(@map_ids); |
my $from_rid = $lpc.'.'.$from; |
my $from_rid = $lpc.'.'.$from; |
Line 265 sub parse_resource {
|
Line 281 sub parse_resource {
|
if (($turi=~/\.sequence$/) || |
if (($turi=~/\.sequence$/) || |
($turi=~/\.page$/)) { |
($turi=~/\.page$/)) { |
$hash{'is_map_'.$rid}=1; |
$hash{'is_map_'.$rid}=1; |
&loadmap($turi); |
&loadmap($turi,$rid); |
} |
} |
return $token->[2]->{'id'}; |
return $token->[2]->{'id'}; |
} |
} |
Line 342 sub parse_param {
|
Line 358 sub parse_param {
|
$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_)*randomorder$/) { |
|
$randomorder{$referid}=$token->[2]->{'value'}; |
|
&Apache::lonnet::logthis("roing $referid ".$randomorder{$referid}); |
} |
} |
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 621 sub readmap {
|
Line 641 sub readmap {
|
$hash{'title_0.0'}=&Apache::lonnet::metadata($uri,'title'); |
$hash{'title_0.0'}=&Apache::lonnet::metadata($uri,'title'); |
$hash{'ids_'.$furi}='0.0'; |
$hash{'ids_'.$furi}='0.0'; |
$hash{'is_map_0.0'}=1; |
$hash{'is_map_0.0'}=1; |
loadmap($uri); |
loadmap($uri,'0.0'); |
if (defined($hash{'map_start_'.$uri})) { |
if (defined($hash{'map_start_'.$uri})) { |
&Apache::lonnet::appenv("request.course.id" => $short, |
&Apache::lonnet::appenv("request.course.id" => $short, |
"request.course.fn" => $fn, |
"request.course.fn" => $fn, |