--- loncom/interface/loncommon.pm 2001/12/25 21:57:54 1.21
+++ loncom/interface/loncommon.pm 2002/03/21 20:24:21 1.27
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.21 2001/12/25 21:57:54 www Exp $
+# $Id: loncommon.pm,v 1.27 2002/03/21 20:24:21 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -30,7 +30,9 @@
# 12/11,12/12,12/17 Scott Harrison
# 12/21 Gerd Kortemeyer
# 12/21 Scott Harrison
-# 12/25 Gerd Kortemeyer
+# 12/25,12/28 Gerd Kortemeyer
+# YEAR=2002
+# 1/4 Gerd Kortemeyer
# Makes a table out of the previous attempts
# Inputs result_from_symbread, user, domain, course_id
@@ -39,10 +41,13 @@
package Apache::loncommon;
use strict;
+use Apache::lonnet();
use POSIX qw(strftime);
use Apache::Constants qw(:common);
use Apache::lonmsg();
+my $readit;
+
# ----------------------------------------------- Filetypes/Languages/Copyright
my %language;
my %cprtag;
@@ -61,6 +66,8 @@ my $theavecount;
# ----------------------------------------------------------------------- BEGIN
BEGIN {
+
+ unless ($readit) {
# ------------------------------------------------------------------- languages
{
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
@@ -132,6 +139,11 @@ BEGIN {
}
$theavecount=$thetotalcount/$#thecount;
}
+ &Apache::lonnet::logthis(
+ "INFO: Read file types and thesaurus");
+ $readit=1;
+}
+
}
# ============================================================= END BEGIN BLOCK
@@ -346,16 +358,22 @@ sub get_student_answers {
}
sub get_unprocessed_cgi {
- my ($query)= @_;
+ my ($query,$possible_names)= @_;
+ # $Apache::lonxml::debug=1;
foreach (split(/&/,$query)) {
my ($name, $value) = split(/=/,$_);
- $value =~ tr/+/ /;
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
- if (!defined($ENV{'form.'.$name})) { $ENV{'form.'.$name}=$value; }
+ $name = &Apache::lonnet::unescape($name);
+ if (!defined($possible_names) || (grep {$_ eq $name} @$possible_names)) {
+ $value =~ tr/+/ /;
+ $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
+ &Apache::lonxml::debug("Seting :$name: to :$value:");
+ &add_to_env('form.'.$name,$value);
+ }
}
}
sub cacheheader {
+ unless ($ENV{'request.method'} eq 'GET') { return ''; }
my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
my $output .='
@@ -365,10 +383,28 @@ sub cacheheader {
sub no_cache {
my ($r) = @_;
- my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
+ unless ($ENV{'request.method'} eq 'GET') { return ''; }
+ #my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
$r->no_cache(1);
$r->header_out("Pragma" => "no-cache");
- $r->header_out("Expires" => $date);
+ #$r->header_out("Expires" => $date);
+}
+
+sub add_to_env {
+ my ($name,$value)=@_;
+ if ($ENV{$name}) {
+ if (ref($ENV{$name})) {
+ #already have multiple values
+ push(@{ $ENV{$name} },$value);
+ } else {
+ #first time seeing multiple values, convert hash entry to an arrayref
+ my $first=$ENV{$name};
+ undef($ENV{$name});
+ push(@{ $ENV{$name} },$first,$value);
+ }
+ } else {
+ $ENV{$name}=$value;
+ }
}
1;
__END__;
@@ -474,6 +510,12 @@ cacheheader() : returns cache-controllin
nocache() : specifies header code to not have cache
+=item *
+
+add_to_env($name,$value) : adds $name to the %ENV hash with value
+$value, if $name already exists, the entry is converted to an array
+reference and $value is added to the array.
+
=back
=cut