version 1.21, 2002/04/11 18:19:46
|
version 1.22, 2002/04/11 19:21:52
|
Line 203 sub handler {
|
Line 203 sub handler {
|
my $position; |
my $position; |
if ($position=Apache::lonnet::symbread($currenturl)) { |
if ($position=Apache::lonnet::symbread($currenturl)) { |
# ------------------------------------------------------------------------- Yes |
# ------------------------------------------------------------------------- Yes |
my ($mapurl,$mapnum,$thisurl)=split(/\_\_\_/,$position); |
my ($startoutmap,$mapnum,$thisurl)=split(/\_\_\_/,$position); |
$cachehash{$mapurl}{$thisurl}=$mapnum; |
$cachehash{$startoutmap}{$thisurl}=$mapnum; |
$cachehash{$mapurl}{'last_known'}=&Apache::lonnet::declutter($currenturl); |
$cachehash{$startoutmap}{'last_known'}=&Apache::lonnet::declutter($currenturl); |
my $startoutmap=$mapurl; |
|
|
|
# ============================================================ 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', |
&GDBM_READER,0640)) { |
&GDBM_READER,0640)) { |
my $rid=$hash{'map_pc_/res/'.$mapurl}.'.'.$mapnum; |
my $rid=$hash{'map_pc_/res/'.$startoutmap}.'.'.$mapnum; |
|
|
# ------------------------------------------------- Move forward, backward, etc |
# ------------------------------------------------- Move forward, backward, etc |
|
my $endupmap; |
($next,$mapurl)=&move($rid,$mapurl,$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!~/\,/) && (!$hash{'src_'.$next}) |
&& ($safecount<25)) { |
&& ($safecount<25)) { |
($next,$mapurl)=&move($next,$mapurl,$direction); |
($next,$endupmap)=&move($next,$endupmap,$direction); |
$safecount++; |
$safecount++; |
} |
} |
|
# We are now at at least one non-empty URL |
# ----------------------------------------------------- Check out possibilities |
# ----------------------------------------------------- Check out possibilities |
if ($next) { |
if ($next) { |
@possibilities=split(/\,/,$next); |
@possibilities=split(/\,/,$next); |
if ($#possibilities==0) { |
if ($#possibilities==0) { |
# ---------------------------------------------- Only one possibility, redirect |
# ---------------------------------------------- Only one possibility, redirect |
$redirecturl=$hash{'src_'.$next}; |
$redirecturl=$hash{'src_'.$next}; |
$cachehash{$mapurl} |
$cachehash{$endupmap} |
{&Apache::lonnet::declutter($redirecturl)} |
{&Apache::lonnet::declutter($redirecturl)} |
=(split(/\./,$next))[1]; |
=(split(/\./,$next))[1]; |
} else { |
} else { |
Line 239 sub handler {
|
Line 239 sub handler {
|
$multichoicehash{'src_'.$_}=$hash{'src_'.$_}; |
$multichoicehash{'src_'.$_}=$hash{'src_'.$_}; |
$multichoicehash{'title_'.$_}=$hash{'title_'.$_}; |
$multichoicehash{'title_'.$_}=$hash{'title_'.$_}; |
$multichoicehash{'type_'.$_}=$hash{'type_'.$_}; |
$multichoicehash{'type_'.$_}=$hash{'type_'.$_}; |
$cachehash{$mapurl} |
my ($choicemap,$choiceres)=split(/\./,$_); |
{&Apache::lonnet::declutter( |
$cachehash |
|
{&Apache::lonnet::declutter($hash{'src_'.$choicemap})} |
|
{&Apache::lonnet::declutter( |
$multichoicehash |
$multichoicehash |
{'src_'.$_} |
{'src_'.$_} |
)} |
)} |
=(split(/\./,$_))[1]; |
=$choiceres; |
} @possibilities; |
} @possibilities; |
} |
} |
} else { |
} else { |
Line 254 sub handler {
|
Line 256 sub handler {
|
# ----------------- The program must come past this point to untie the big hash |
# ----------------- The program must come past this point to untie the big hash |
untie(%hash); |
untie(%hash); |
# --------------------------------------------------------- Store position info |
# --------------------------------------------------------- Store position info |
$cachehash{$mapurl}{'last_direction'}=$direction; |
$cachehash{$startoutmap}{'last_direction'}=$direction; |
foreach my $thismap (keys %cachehash) { |
foreach my $thismap (keys %cachehash) { |
&Apache::lonnet::symblist($thismap,%{$cachehash{$thismap}}); |
&Apache::lonnet::symblist($thismap,%{$cachehash{$thismap}}); |
} |
} |