--- loncom/interface/loncommon.pm 2001/11/29 23:16:29 1.10 +++ loncom/interface/loncommon.pm 2001/12/11 23:38:28 1.15 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.10 2001/11/29 23:16:29 albertel Exp $ +# $Id: loncommon.pm,v 1.15 2001/12/11 23:38:28 harris41 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,7 +25,9 @@ # # http://www.lon-capa.org/ # -# 2/13 Guy Albertelli +# YEAR=2001 +# 2/13-12/7 Guy Albertelli +# 12/11 Scott Harrison # Makes a table out of the previous attempts # Inputs result_from_symbread, user, domain, course_id @@ -37,6 +39,106 @@ 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'); + 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; + } + } +# ------------------------------------------------------------- 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; + } + } +# ------------------------------------------------------------------ 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); + } + } + } +} + +# ---------------------------------------------------------------- Language IDs +sub languageids { + return keys(%language); +} + +# -------------------------------------------------------- Language Description +sub languagedescription { + return $language{shift}; +} + +# --------------------------------------------------------------- Copyright IDs +sub copyrightids { + return keys(%cprtag); +} + +# ------------------------------------------------------- Copyright Description +sub copyrightdescription { + return $cprtag{shift}; +} + +# ------------------------------------------------------------- File Categories +sub filecategories { + return keys(%fc); +} + +# ------------------------------------------------------------- File Categories +sub filecategorytypes { + return @{$fc{lc(shift)}}; +} + +# ------------------------------------------------------------------ File Types +sub fileextensions { + return keys(%fe); +} + +# ------------------------------------------------------------- Embedding Style +sub fileembstyle { + return $fe{lc(shift)}; +} + +# ------------------------------------------------------------ Description Text +sub filedescription { + return $fd{lc(shift)}; +} + sub get_previous_attempt { my ($symb,$username,$domain,$course)=@_; my $prevattempts=''; @@ -98,6 +200,32 @@ sub get_student_view { &Apache::lonnet::appenv(%moreenv); my $userview=&Apache::lonnet::ssi('/res/'.$feedurl); &Apache::lonnet::delenv('form.grade_'); + foreach my $element (@elements) { + $ENV{'form.grade_'.$element}=$old{$element}; + } + $userview=~s/\]*\>//gi; + $userview=~s/\<\/body\>//gi; + $userview=~s/\//gi; + $userview=~s/\<\/html\>//gi; + $userview=~s/\//gi; + $userview=~s/\<\/head\>//gi; + $userview=~s/action\s*\=/would_be_action\=/gi; + return $userview; +} + +sub get_student_answers { + my ($symb,$username,$domain,$courseid) = @_; + my ($map,$id,$feedurl) = split(/___/,$symb); + my (%old,%moreenv); + my @elements=('symb','courseid','domain','username'); + foreach my $element (@elements) { + $old{$element}=$ENV{'form.grade_'.$element}; + $moreenv{'form.grade_'.$element}=eval '$'.$element #' + } + $moreenv{'form.grade_target'}='answer'; + &Apache::lonnet::appenv(%moreenv); + my $userview=&Apache::lonnet::ssi('/res/'.$feedurl); + &Apache::lonnet::delenv('form.grade_'); foreach my $element (@elements) { $ENV{'form.grade_'.$element}=$old{$element}; }