--- loncom/interface/loncommon.pm 2001/02/13 18:18:40 1.1 +++ loncom/interface/loncommon.pm 2001/12/13 01:31:39 1.16 @@ -1,52 +1,200 @@ -# The LearningOnline Network +# The LearningOnline Network with CAPA # a pile of common routines -# 2/13 Guy Albertelli +# +# $Id: loncommon.pm,v 1.16 2001/12/13 01:31:39 harris41 Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# +# YEAR=2001 +# 2/13-12/7 Guy Albertelli +# 12/11,12/12 Scott Harrison # Makes a table out of the previous attempts -# Inputs result_from_symbread, user, domain, home_server, course_id +# Inputs result_from_symbread, user, domain, course_id +# Reads in non-network-related .tab files package Apache::loncommon; use strict; +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 { +# ------------------------------------------------------------------- languages + { + my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. + '/language.tab'); + 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{'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'); + if ($fh) { + while (<$fh>) { + next if /^\#/; + chomp; + my ($key,$val)=(split(/\s+/,$_,2)); + push @{$fc{$key}},$val; + } + } + } +# ------------------------------------------------------------------ file types + { + 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; + } + } + } + } +} + +# ---------------------------------------------------------------- Language IDs +sub languageids { + return sort(keys(%language)); +} + +# -------------------------------------------------------- Language Description +sub languagedescription { + return $language{shift(@_)}; +} + +# --------------------------------------------------------------- Copyright IDs +sub copyrightids { + return sort(keys(%cprtag)); +} + +# ------------------------------------------------------- Copyright Description +sub copyrightdescription { + return $cprtag{shift(@_)}; +} + +# ------------------------------------------------------------- File Categories +sub filecategories { + return sort(keys(%fc)); +} + +# ------------------------------------------------------------- File Categories +sub filecategorytypes { + return @{$fc{lc(shift(@_))}}; +} + +# ------------------------------------------------------------------ File Types +sub fileextensions { + return sort(keys(%fe)); +} + +# ------------------------------------------------------------- Embedding Style +sub fileembstyle { + return $fe{lc(shift(@_))}; +} + +# ------------------------------------------------------------ Description Text +sub filedescription { + return $fd{lc(shift(@_))}; +} + +# ------------------------------------------------------------ Description Text +sub filedescriptionex { + my $ex=shift; + return '.'.$ex.' '.$fd{lc($ex)}; +} + sub get_previous_attempt { - my ($symb,$username,$domain,$home,$course)=@_; + my ($symb,$username,$domain,$course)=@_; my $prevattempts=''; if ($symb) { - my $answer=&Apache::lonnet::reply( - "restore:".$domain.':'.$username.':'.$course.':'. - &Apache::lonnet::escape($symb), - $home); - my %returnhash=(); - map { - my ($name,$value)=split(/\=/,$_); - $returnhash{&Apache::lonnet::unescape($name)}= - &Apache::lonnet::unescape($value); - } split(/\&/,$answer); + my (%returnhash)= + &Apache::lonnet::restore($symb,$course,$domain,$username); if ($returnhash{'version'}) { my %lasthash=(); my $version; for ($version=1;$version<=$returnhash{'version'};$version++) { map { $lasthash{$_}=$returnhash{$version.':'.$_}; - } split(/\:/,$returnhash{$version.':keys'}); + } sort(split(/\:/,$returnhash{$version.':keys'})); } $prevattempts='
History | '; - map { + foreach (sort(keys %lasthash)) { $prevattempts.=''.$_.' | '; - } keys %lasthash; + } for ($version=1;$version<=$returnhash{'version'};$version++) { $prevattempts.='|
---|---|---|
Attempt '.$version.' | '; - map { - $prevattempts.=''.$returnhash{$version.':'.$_}.' | '; - } keys %lasthash; + foreach (sort(keys %lasthash)) { + my $value; + if ($_ =~ /timestamp/) { + $value=scalar(localtime($returnhash{$version.':'.$_})); + } else { + $value=$returnhash{$version.':'.$_}; + } + $prevattempts.=''.$value.' | '; + } } $prevattempts.='
Current | '; - map { - $prevattempts.=''.$lasthash{$_}.' | '; - } keys %lasthash; + foreach (sort(keys %lasthash)) { + my $value; + if ($_ =~ /timestamp/) { + $value=scalar(localtime($lasthash{$_})); + } else { + $value=$lasthash{$_}; + } + $prevattempts.=''.$value.' | '; + } $prevattempts.='