--- loncom/interface/loncommon.pm 2001/12/11 23:38:28 1.15 +++ loncom/interface/loncommon.pm 2001/12/13 01:31:39 1.16 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.15 2001/12/11 23:38:28 harris41 Exp $ +# $Id: loncommon.pm,v 1.16 2001/12/13 01:31:39 harris41 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,10 +27,11 @@ # # YEAR=2001 # 2/13-12/7 Guy Albertelli -# 12/11 Scott Harrison +# 12/11,12/12 Scott Harrison # Makes a table out of the previous attempts # Inputs result_from_symbread, user, domain, course_id +# Reads in non-network-related .tab files package Apache::loncommon; @@ -50,45 +51,54 @@ sub BEGIN { { my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. '/language.tab'); - while (<$fh>) { - next if /^\#/; - chomp; - my ($key,$val)=(split(/\s+/,$_,2)); - $language{$key}=$val; + if ($fh) { + while (<$fh>) { + next if /^\#/; + chomp; + my ($key,$val)=(split(/\s+/,$_,2)); + $language{$key}=$val; + } } } # ------------------------------------------------------------------ copyrights { - my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. - '/copyright.tab'); - while (<$fh>) { - next if /^\#/; - chomp; - my ($key,$val)=(split(/\s+/,$_,2)); - $cprtag{$key}=$val; + my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonIncludes'}. + '/copyright.tab'); + if ($fh) { + while (<$fh>) { + next if /^\#/; + chomp; + my ($key,$val)=(split(/\s+/,$_,2)); + $cprtag{$key}=$val; + } } } # ------------------------------------------------------------- file categories { my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. - '/filecategories.tab'); - while (<$fh>) { - next if /^\#/; - chomp; - my ($key,$val)=(split(/\s+/,$_,2)); - push @{$fc{$key}},$val; + '/filecategories.tab'); + if ($fh) { + while (<$fh>) { + next if /^\#/; + chomp; + my ($key,$val)=(split(/\s+/,$_,2)); + push @{$fc{$key}},$val; + } } } # ------------------------------------------------------------------ file types { - my $fh=Apache::File->new("$perlvar{'lonTabDir'}/filetypes.tab"); - while (<$fh>) { - next if (/^\#/); - chomp; - my ($ending,$emb,$descr)=split(/\s+/,$_,3); - if ($descr ne '') { - $fe{$ending}=lc($emb); - $fd{$ending}=join(' ',@descr); + my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. + '/filetypes.tab'); + if ($fh) { + while (<$fh>) { + next if (/^\#/); + chomp; + my ($ending,$emb,$descr)=split(/\s+/,$_,3); + if ($descr ne '') { + $fe{$ending}=lc($emb); + $fd{$ending}=$descr; + } } } } @@ -96,47 +106,53 @@ sub BEGIN { # ---------------------------------------------------------------- Language IDs sub languageids { - return keys(%language); + return sort(keys(%language)); } # -------------------------------------------------------- Language Description sub languagedescription { - return $language{shift}; + return $language{shift(@_)}; } # --------------------------------------------------------------- Copyright IDs sub copyrightids { - return keys(%cprtag); + return sort(keys(%cprtag)); } # ------------------------------------------------------- Copyright Description sub copyrightdescription { - return $cprtag{shift}; + return $cprtag{shift(@_)}; } # ------------------------------------------------------------- File Categories sub filecategories { - return keys(%fc); + return sort(keys(%fc)); } # ------------------------------------------------------------- File Categories sub filecategorytypes { - return @{$fc{lc(shift)}}; + return @{$fc{lc(shift(@_))}}; } # ------------------------------------------------------------------ File Types sub fileextensions { - return keys(%fe); + return sort(keys(%fe)); } # ------------------------------------------------------------- Embedding Style sub fileembstyle { - return $fe{lc(shift)}; + return $fe{lc(shift(@_))}; } # ------------------------------------------------------------ Description Text sub filedescription { - return $fd{lc(shift)}; + return $fd{lc(shift(@_))}; +} + +# ------------------------------------------------------------ Description Text +sub filedescriptionex { + my $ex=shift; + return '.'.$ex.' '.$fd{lc($ex)}; } sub get_previous_attempt { @@ -154,12 +170,12 @@ sub get_previous_attempt { } sort(split(/\:/,$returnhash{$version.':keys'})); } $prevattempts=''; - map { + foreach (sort(keys %lasthash)) { $prevattempts.=''; - } sort(keys %lasthash); + } for ($version=1;$version<=$returnhash{'version'};$version++) { $prevattempts.=''; - map { + foreach (sort(keys %lasthash)) { my $value; if ($_ =~ /timestamp/) { $value=scalar(localtime($returnhash{$version.':'.$_})); @@ -167,10 +183,10 @@ sub get_previous_attempt { $value=$returnhash{$version.':'.$_}; } $prevattempts.=''; - } sort(keys %lasthash); + } } $prevattempts.=''; - map { + foreach (sort(keys %lasthash)) { my $value; if ($_ =~ /timestamp/) { $value=scalar(localtime($lasthash{$_})); @@ -178,7 +194,7 @@ sub get_previous_attempt { $value=$lasthash{$_}; } $prevattempts.=''; - } sort(keys %lasthash); + } $prevattempts.='
History'.$_.'
Attempt '.$version.''.$value.'
Current'.$value.'
'; } else { $prevattempts='Nothing submitted - no attempts.'; @@ -241,12 +257,12 @@ sub get_student_answers { sub get_unprocessed_cgi { my ($query)= @_; - map { + 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; } - } (split(/&/,$query)); + } } sub cacheheader {