--- rat/lonsequence.pm 2007/01/16 21:19:11 1.30 +++ rat/lonsequence.pm 2010/02/23 05:00:16 1.40 @@ -2,7 +2,7 @@ # # Sequence Handler # -# $Id: lonsequence.pm,v 1.30 2007/01/16 21:19:11 albertel Exp $ +# $Id: lonsequence.pm,v 1.40 2010/02/23 05:00:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,6 +27,8 @@ # http://www.lon-capa.org/ # + + package Apache::lonsequence; use strict; @@ -36,6 +38,7 @@ use GDBM_File; use LONCAPA::map(); use Apache::lonpageflip(); use Apache::loncommon(); +use Apache::groupsort(); use Apache::lonlocal; use HTML::Entities(); @@ -45,10 +48,10 @@ my $successtied; # ----------------------------------------- Attempt to read from resource space sub attemptread { - my $fn=shift; + my ($fn,$unsorted)=@_; &Apache::lonnet::repcopy($fn); if (-e $fn) { - return &LONCAPA::map::attemptread($fn); + return &LONCAPA::map::attemptread($fn,$unsorted); } else { return (); } @@ -99,10 +102,10 @@ ENDSCRIPT '

'.$url.'

'); # ------------------ This is trying to select. Provide buttons and tie %selhash if ($env{'form.forceselect'}) { $r->print(< - - +
+ +
ENDSELECT my $diropendb = @@ -114,53 +117,18 @@ ENDSELECT $successtied=1; # - Evaluate actions from previous page (both cumulatively and chronologically) - if ($env{'form.catalogmode'} eq 'import') { - my $acts=$env{'form.acts'}; - my @Acts=split(/b/,$acts); - my %ahash; - my %achash; - my $ac=0; - # some initial hashes for working with data - foreach (@Acts) { - my ($state,$ref)=split(/a/); - $ahash{$ref}=$state; - $achash{$ref}=$ac; - $ac++; - } - # sorting through the actions and changing the tied database hash - foreach (sort {$achash{$a}<=>$achash{$b}} (keys %ahash)) { - my $key=$_; - if ($ahash{$key} eq '1') { - $selhash{'store_'.$selhash{'pre_'.$key.'_link'}}= - $selhash{'pre_'.$key.'_title'}; - $selhash{'storectr_'.$selhash{'pre_'.$key.'_link'}}= - $selhash{'storectr'}+0; - $selhash{'storectr'}++; - } - if ($ahash{$key} eq '0') { - if ($selhash{'store_'.$selhash{'pre_'.$key.'_link'}}) { - delete $selhash{'store_'.$selhash{'pre_'.$key.'_link'}}; - } - } - } - # deleting the previously cached listing - foreach (keys %selhash) { - if ($_ =~ /^pre_/ && $_ =~/link$/) { - my $key = $_; - $key =~ s/^pre_//; - $key =~ s/_[^_]*$//; - delete $selhash{'pre_'.$key.'_title'}; - delete $selhash{'pre_'.$key.'_link'}; - } + if ($env{'form.catalogmode'} eq 'import') { + &Apache::groupsort::update_actions_hash(\%selhash); } - } # - } } # ----------------------------- successtied is now '1' if in working selectmode my ($errtext,$fatal)=&mapread(&Apache::lonnet::filelocation('',$url),''); if ($fatal==1) { - $r->print('

'.&mt('Map contents are not shown in order.').'


'); + $r->print('

' + .&mt('Map contents are not shown in order.') + .'


'); } my $idx=0; foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) { @@ -183,7 +151,7 @@ ENDSELECT if ($successtied) { my $checked=''; if ($selhash{'store_'.$url}) { - $checked=" checked"; + $checked=' checked="checked"'; } $selhash{"pre_${idx}_link"}=$url; $selhash{"pre_${idx}_title"}=$title; @@ -202,7 +170,7 @@ ENDCHECKBOX if ($successtied) { $r->print(''); } else { - $r->print('
'); + $r->print('
'); } } } @@ -249,6 +217,7 @@ sub handler { my $dismapid=''; my $exitdisid = ''; my $arrow_dir = ''; + my $is_encrypted = ''; if (($env{'request.course.fn'}) && (!$env{'form.forceselect'})) { my $last; @@ -279,6 +248,9 @@ sub handler { if (!$env{'request.role.adv'}) { $randomout = $bighash{'randomout_'.$disid}; } + if (!$env{'request.role.adv'}) { + $is_encrypted = $bighash{'encrypted_'.$disid}; + } } elsif (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db', &GDBM_READER(),0640)) { $last=$hash{'last_known'}; @@ -298,6 +270,9 @@ sub handler { if (!$env{'request.role.adv'}) { $randomout = $bighash{'randomout_'.$disid}; } + if (!$env{'request.role.adv'}) { + $is_encrypted = $bighash{'encrypted_'.$disid}; + } } } $exitdisid = $disid; @@ -311,10 +286,15 @@ sub handler { # now either disurl is set (going to first page), or we need another display if ($disurl) { # -------------------------------------------------- Has first or last resource + my $showdisurl = $disurl; + if ($is_encrypted) { + $showdisurl = &Apache::lonenc::encrypted($disurl); + } &Apache::lonnet::symblist($requrl,$disurl => [$disurl,$dismapid], 'last_known' => [$disurl,$dismapid]); &Apache::loncommon::content_type($r,'text/html'); - $r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.$disurl); + $r->header_out(Location => &Apache::lonnet::absolute_url($ENV{'SERVER_NAME'}). + $showdisurl); return REDIRECT; } else { &Apache::loncommon::content_type($r,'text/html'); @@ -358,7 +338,35 @@ ENDNONE 1; __END__ +=head1 NAME + +Apache::lonsequence + +=head1 SYNOPSIS + +Handler for showing sequence objects of +educational resources. + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 SUBROUTINES + +=over + +=item handler() + +=item viewmap() + +=item attemptread() + +=item mapread() + +=item start_fresh_session() + +=back +=cut