--- loncom/interface/loncommon.pm	2001/12/13 01:31:39	1.16
+++ loncom/interface/loncommon.pm	2001/12/21 17:06:56	1.19
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.16 2001/12/13 01:31:39 harris41 Exp $
+# $Id: loncommon.pm,v 1.19 2001/12/21 17:06:56 harris41 Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -27,7 +27,8 @@
 #
 # YEAR=2001
 # 2/13-12/7 Guy Albertelli
-# 12/11,12/12 Scott Harrison
+# 12/11,12/12,12/17 Scott Harrison
+# 12/21 Gerd Kortemeyer
 
 # Makes a table out of the previous attempts
 # Inputs result_from_symbread, user, domain, course_id
@@ -40,13 +41,14 @@ use POSIX qw(strftime);
 use Apache::Constants qw(:common);
 use Apache::lonmsg();
 
+
 my %language;
 my %cprtag;
 my %fe; my %fd;
 my %fc;
 
 # ----------------------------------------------------------------------- BEGIN
-sub BEGIN {
+BEGIN {
 # ------------------------------------------------------------------- languages
     {
 	my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}.
@@ -129,7 +131,7 @@ sub filecategories {
     return sort(keys(%fc));
 }
 
-# ------------------------------------------------------------- File Categories
+# -------------------------------------- File Types within a specified category
 sub filecategorytypes {
     return @{$fc{lc(shift(@_))}};
 }
@@ -165,9 +167,9 @@ sub get_previous_attempt {
       my %lasthash=();
       my $version;
       for ($version=1;$version<=$returnhash{'version'};$version++) {
-        map {
+        foreach (sort(split(/\:/,$returnhash{$version.':keys'}))) {
 	  $lasthash{$_}=$returnhash{$version.':'.$_};
-        } sort(split(/\:/,$returnhash{$version.':keys'}));
+        }
       }
       $prevattempts='<table border=2></tr><th>History</th>';
       foreach (sort(keys %lasthash)) {
@@ -282,3 +284,108 @@ sub no_cache {
 }
 1;
 __END__;
+
+
+=head1 NAME
+
+Apache::loncommon - pile of common routines
+
+=head1 SYNOPSIS
+
+Referenced by other mod_perl Apache modules.
+
+Invocation:
+ &Apache::loncommon::SUBROUTINENAME(ARGUMENTS);
+
+=head1 INTRODUCTION
+
+Common collection of used subroutines.  This collection helps remove
+redundancy from other modules and increase efficiency of memory usage.
+
+Current things done:
+
+ Makes a table out of the previous homework attempts
+ Inputs result_from_symbread, user, domain, course_id
+ Reads in non-network-related .tab files
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 HANDLER SUBROUTINE
+
+There is no handler subroutine.
+
+=head1 OTHER SUBROUTINES
+
+=over 4
+
+=item *
+
+BEGIN() : initialize values from language.tab, copyright.tab, filetypes.tab,
+and filecategories.tab.
+
+=item *
+
+languageids() : returns list of all language ids
+
+=item *
+
+languagedescription() : returns description of a specified language id
+
+=item *
+
+copyrightids() : returns list of all copyrights
+
+=item *
+
+copyrightdescription() : returns description of a specified copyright id
+
+=item *
+
+filecategories() : returns list of all file categories
+
+=item *
+
+filecategorytypes() : returns list of file types belonging to a given file
+category
+
+=item *
+
+fileembstyle() : returns embedding style for a specified file type
+
+=item *
+
+filedescription() : returns description for a specified file type
+
+=item *
+
+filedescriptionex() : returns description for a specified file type with
+extra formatting
+
+=item *
+
+get_previous_attempt() : return string with previous attempt on problem
+
+=item *
+
+get_student_view() : show a snapshot of what student was looking at
+
+=item *
+
+get_student_answers() : show a snapshot of how student was answering problem
+
+=item *
+
+get_unprocessed_cgi() : get unparsed CGI parameters
+
+=item *
+
+cacheheader() : returns cache-controlling header code
+
+=item *
+
+nocache() : specifies header code to not have cache
+
+=back
+
+=cut