--- 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