Annotation of loncom/interface/loncommon.pm, revision 1.9
1.1 albertel 1: # The LearningOnline Network
2: # a pile of common routines
3: # 2/13 Guy Albertelli
4:
5: # Makes a table out of the previous attempts
1.2 albertel 6: # Inputs result_from_symbread, user, domain, course_id
1.1 albertel 7:
8: package Apache::loncommon;
9:
10: use strict;
1.8 albertel 11: use POSIX qw(strftime);
1.1 albertel 12: use Apache::Constants qw(:common);
13: use Apache::lonmsg();
14:
15: sub get_previous_attempt {
1.2 albertel 16: my ($symb,$username,$domain,$course)=@_;
1.1 albertel 17: my $prevattempts='';
18: if ($symb) {
1.3 albertel 19: my (%returnhash)=
20: &Apache::lonnet::restore($symb,$course,$domain,$username);
1.1 albertel 21: if ($returnhash{'version'}) {
22: my %lasthash=();
23: my $version;
24: for ($version=1;$version<=$returnhash{'version'};$version++) {
25: map {
26: $lasthash{$_}=$returnhash{$version.':'.$_};
1.4 albertel 27: } sort(split(/\:/,$returnhash{$version.':keys'}));
1.1 albertel 28: }
29: $prevattempts='<table border=2></tr><th>History</th>';
30: map {
31: $prevattempts.='<th>'.$_.'</th>';
1.4 albertel 32: } sort(keys %lasthash);
1.1 albertel 33: for ($version=1;$version<=$returnhash{'version'};$version++) {
34: $prevattempts.='</tr><tr><th>Attempt '.$version.'</th>';
35: map {
1.5 albertel 36: my $value;
37: if ($_ =~ /timestamp/) {
38: $value=scalar(localtime($returnhash{$version.':'.$_}));
39: } else {
40: $value=$returnhash{$version.':'.$_};
41: }
42: $prevattempts.='<td>'.$value.'</td>';
1.4 albertel 43: } sort(keys %lasthash);
1.1 albertel 44: }
45: $prevattempts.='</tr><tr><th>Current</th>';
46: map {
1.5 albertel 47: my $value;
48: if ($_ =~ /timestamp/) {
49: $value=scalar(localtime($lasthash{$_}));
50: } else {
51: $value=$lasthash{$_};
52: }
53: $prevattempts.='<td>'.$value.'</td>';
1.4 albertel 54: } sort(keys %lasthash);
1.1 albertel 55: $prevattempts.='</tr></table>';
56: } else {
57: $prevattempts='Nothing submitted - no attempts.';
58: }
59: } else {
60: $prevattempts='No data.';
61: }
62: }
63:
1.6 albertel 64: sub get_unprocessed_cgi {
65: my ($query)= @_;
66: map {
67: my ($name, $value) = split(/=/,$_);
68: $value =~ tr/+/ /;
69: $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
70: if (!defined($ENV{'form.'.$name})) { $ENV{'form.'.$name}=$value; }
71: } (split(/&/,$query));
72: }
73:
1.7 albertel 74: sub cacheheader {
1.8 albertel 75: my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
1.7 albertel 76: my $output .='<meta HTTP-EQUIV="Expires" CONTENT="'.$date.'" />
77: <meta HTTP-EQUIV="Cache-control" CONTENT="no-cache" />
78: <meta HTTP-EQUIV="Pragma" CONTENT="no-cache" />';
79: return $output;
80: }
81:
1.9 ! albertel 82: sub no_cache {
! 83: my ($r) = @_;
! 84: my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime);
! 85: $r->no_cache(1);
! 86: $r->header_out("Pragma" => "no-cache");
! 87: $r->header_out("Expires" => $date);
! 88: }
1.1 albertel 89: 1;
90: __END__;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>