version 1.22, 2002/04/11 19:21:52
|
version 1.27, 2002/07/08 20:10:40
|
Line 53 my %hash;
|
Line 53 my %hash;
|
sub addrid { |
sub addrid { |
my ($current,$new,$condid)=@_; |
my ($current,$new,$condid)=@_; |
unless ($condid) { $condid=0; } |
unless ($condid) { $condid=0; } |
if (&Apache::lonnet::allowed('bre',$hash{'src_'.$new})) { |
|
if ($current) { |
if ($current) { |
$current.=','.$new; |
$current.=','.$new; |
} else { |
} else { |
$current=''.$new; |
$current=''.$new; |
} |
} |
} |
|
return $current; |
return $current; |
} |
} |
|
|
|
sub fullmove { |
|
my ($rid,$mapurl,$direction)=@_; |
|
if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'.db', |
|
&GDBM_READER,0640)) { |
|
($rid,$mapurl)=&move($rid,$mapurl,$direction); |
|
untie(%hash); |
|
} |
|
return($rid,$mapurl); |
|
} |
|
|
sub move { |
sub move { |
my ($rid,$mapurl,$direction)=@_; |
my ($rid,$mapurl,$direction)=@_; |
|
my $startoutrid=$rid; |
|
|
my $next=''; |
my $next=''; |
|
|
Line 95 sub move {
|
Line 106 sub move {
|
} |
} |
} split(/\,/,$posnext); |
} split(/\,/,$posnext); |
if ($hash{'is_map_'.$next}) { |
if ($hash{'is_map_'.$next}) { |
|
# This jumps to the beginning of a new map (going down level) |
if ( |
if ( |
$hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') { |
$hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') { |
$mapurl=$hash{'src_'.$next}; |
$mapurl=$hash{'src_'.$next}; |
$next=$hash{'map_start_'.$hash{'src_'.$next}}; |
$next=$hash{'map_start_'.$hash{'src_'.$next}}; |
} |
} |
|
} elsif |
|
((split(/\./,$startoutrid))[0]!=(split(/\./,$next))[0]) { |
|
# This comes up from a map (coming up one level); |
|
$mapurl=$hash{'map_id_'.(split(/\./,$next))[0]}; |
} |
} |
} elsif ($direction eq 'back') { |
} elsif ($direction eq 'back') { |
# ------------------------------------------------------------------- Backwards |
# ------------------------------------------------------------------- Backwards |
Line 126 sub move {
|
Line 142 sub move {
|
} |
} |
} split(/\,/,$posnext); |
} split(/\,/,$posnext); |
if ($hash{'is_map_'.$next}) { |
if ($hash{'is_map_'.$next}) { |
|
# This jumps to the end of a new map (going down one level) |
if ( |
if ( |
$hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') { |
$hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') { |
$mapurl=$hash{'src_'.$next}; |
$mapurl=$hash{'src_'.$next}; |
$next=$hash{'map_finish_'.$hash{'src_'.$next}}; |
$next=$hash{'map_finish_'.$hash{'src_'.$next}}; |
} |
} |
|
} elsif |
|
((split(/\./,$startoutrid))[0]!=(split(/\./,$next))[0]) { |
|
# This comes back up from a map (going up one level); |
|
$mapurl=$hash{'map_id_'.(split(/\./,$next))[0]}; |
} |
} |
} |
} |
|
|
return ($next,$mapurl); |
return ($next,$mapurl); |
} |
} |
|
|
Line 205 sub handler {
|
Line 225 sub handler {
|
# ------------------------------------------------------------------------- Yes |
# ------------------------------------------------------------------------- Yes |
my ($startoutmap,$mapnum,$thisurl)=split(/\_\_\_/,$position); |
my ($startoutmap,$mapnum,$thisurl)=split(/\_\_\_/,$position); |
$cachehash{$startoutmap}{$thisurl}=$mapnum; |
$cachehash{$startoutmap}{$thisurl}=$mapnum; |
$cachehash{$startoutmap}{'last_known'}=&Apache::lonnet::declutter($currenturl); |
$cachehash{$startoutmap}{'last_known'}= |
|
&Apache::lonnet::declutter($currenturl); |
|
|
# ============================================================ Tie the big hash |
# ============================================================ Tie the big hash |
if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'.db', |
if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'.db', |
Line 217 sub handler {
|
Line 238 sub handler {
|
($next,$endupmap)=&move($rid,$startoutmap,$direction); |
($next,$endupmap)=&move($rid,$startoutmap,$direction); |
# -------------------------------------- Do we have one and only one empty URL? |
# -------------------------------------- Do we have one and only one empty URL? |
my $safecount=0; |
my $safecount=0; |
while (($next) && ($next!~/\,/) && (!$hash{'src_'.$next}) |
while (($next) && ($next!~/\,/) && |
&& ($safecount<25)) { |
((!$hash{'src_'.$next}) || ($hash{'randomout_'.$next})) |
|
&& ($safecount<10000)) { |
($next,$endupmap)=&move($next,$endupmap,$direction); |
($next,$endupmap)=&move($next,$endupmap,$direction); |
$safecount++; |
$safecount++; |
} |
} |
Line 283 Please click on the the resource you int
|
Line 305 Please click on the the resource you int
|
<table border=2> |
<table border=2> |
<tr><th>Title</th><th>Type</th></tr> |
<tr><th>Title</th><th>Type</th></tr> |
ENDSTART |
ENDSTART |
map { |
foreach (@possibilities) { |
$r->print( |
$r->print( |
'<tr><td><a href="'. |
'<tr><td><a href="'. |
$multichoicehash{'src_'.$_}.'">'. |
$multichoicehash{'src_'.$_}.'">'. |
$multichoicehash{'title_'.$_}. |
$multichoicehash{'title_'.$_}. |
'</a></td><td>'.$multichoicehash{'type_'.$_}. |
'</a></td><td>'.$multichoicehash{'type_'.$_}. |
'</td></tr>'); |
'</td></tr>'); |
} @possibilities; |
} |
$r->print('</table></body></html>'); |
$r->print('</table></body></html>'); |
return OK; |
return OK; |
} else { |
} else { |