[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm
ng
lon-capa-cvs@mail.lon-capa.org
Tue, 25 Jun 2002 17:09:38 -0000
This is a MIME encoded message
--ng1025024978
Content-Type: text/plain
ng Tue Jun 25 13:09:38 2002 EDT
Modified files:
/loncom/interface loncommon.pm
Log:
- recommiting changes made in 1.38 and 1.39
--ng1025024978
Content-Type: text/plain
Content-Disposition: attachment; filename="ng-20020625130938.txt"
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.40 loncom/interface/loncommon.pm:1.41
--- loncom/interface/loncommon.pm:1.40 Tue Jun 25 12:31:51 2002
+++ loncom/interface/loncommon.pm Tue Jun 25 13:09:38 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.40 2002/06/25 16:31:51 ng Exp $
+# $Id: loncommon.pm,v 1.41 2002/06/25 17:09:38 ng Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -65,7 +65,7 @@
This is part of the LearningOnline Network with CAPA project
described at http://www.lon-capa.org.
-=head2 Subroutines
+=head2 General Subroutines
=over 4
@@ -79,14 +79,13 @@
use POSIX qw(strftime);
use Apache::Constants qw(:common);
use Apache::lonmsg();
-
my $readit;
# ----------------------------------------------- Filetypes/Languages/Copyright
my %language;
my %cprtag;
my %fe; my %fd;
-my %fc;
+my %category_extensions;
# -------------------------------------------------------------- Thesaurus data
my @therelated;
@@ -99,6 +98,9 @@
my $theavecount;
# ----------------------------------------------------------------------- BEGIN
+
+=pod
+
=item BEGIN()
Initialize values from language.tab, copyright.tab, filetypes.tab,
@@ -144,8 +146,8 @@
while (<$fh>) {
next if /^\#/;
chomp;
- my ($key,$val)=(split(/\s+/,$_,2));
- push @{$fc{$key}},$val;
+ my ($extension,$category)=(split(/\s+/,$_,2));
+ push @{$category_extensions{lc($category)}},$extension;
}
}
}
@@ -213,14 +215,16 @@
=item $hashref, a reference to a hash containing the data for the menus.
+=back
+
Below is an example of such a hash. Only the 'text', 'default', and
'select2' keys must appear as stated. keys(%menu) are the possible
values for the first select menu. The text that coincides with the
-first menu values is given in $menu{$choice1}->{'text'}. The values
+first menu value is given in $menu{$choice1}->{'text'}. The values
and text for the second menu are given in the hash pointed to by
$menu{$choice1}->{'select2'}.
- my %menu = ( A1 => { text =>"Choice A1" ,
+my %menu = ( A1 => { text =>"Choice A1" ,
default => "B3",
select2 => {
B1 => "Choice B1",
@@ -739,12 +743,12 @@
# ------------------------------------------------------------- File Categories
sub filecategories {
- return sort(keys(%fc));
+ return sort(keys(%category_extensions));
}
# -------------------------------------- File Types within a specified category
sub filecategorytypes {
- return @{$fc{lc(shift(@_))}};
+ return @{$category_extensions{lc($_[0])}};
}
# ------------------------------------------------------------------ File Types
@@ -796,12 +800,16 @@
$prevattempts.='<table border="0" width="100%"><tr bgcolor="#e6ffff"><td>History</td>';
foreach (sort(keys %lasthash)) {
my ($ign,@parts) = split(/\./,$_);
- if (@parts) {
+ if ($#parts > 0) {
my $data=$parts[-1];
pop(@parts);
$prevattempts.='<td>Part '.join('.',@parts).'<br />'.$data.' </td>';
} else {
- $prevattempts.='<td>'.$ign.' </td>';
+ if ($#parts == 0) {
+ $prevattempts.='<th>'.$parts[0].'</th>';
+ } else {
+ $prevattempts.='<th>'.$ign.'</th>';
+ }
}
}
if ($getattempt eq '') {
@@ -878,31 +886,11 @@
foreach my $element (@elements) {
$ENV{'form.grade_'.$element}=$old{$element};
}
- $userview=~s/\<body[^\>]*\>//gi;
- $userview=~s/\<\/body\>//gi;
- $userview=~s/\<html\>//gi;
- $userview=~s/\<\/html\>//gi;
- $userview=~s/\<head\>//gi;
- $userview=~s/\<\/head\>//gi;
- $userview=~s/action\s*\=/would_be_action\=/gi;
return $userview;
}
###############################################
-=item get_unprocessed_cgi($query,$possible_names)
-
-Modify the %ENV hash to contain unprocessed CGI form parameters held in
-$query. The parameters listed in $possible_names (an array reference),
-will be set in $ENV{'form.name'} if they do not already exist.
-
-Typically called with $ENV{'QUERY_STRING'} as the first parameter.
-$possible_names is an ref to an array of form element names. As an example:
-get_unprocessed_cgi($ENV{'QUERY_STRING'},['uname','udom']);
-will result in $ENV{'form.uname'} and $ENV{'form.udom'} being set.
-
-=cut
-
###############################################
sub get_unprocessed_cgi {
@@ -955,11 +943,19 @@
}
}
-#---CSV Upload/Handling functions
+=pod
+
+=head2 CSV Upload/Handling functions
-# ========================================================= Store uploaded file
-# needs $ENV{'form.upfile'}
-# return $datatoken to be put into hidden field
+=over 4
+
+=item upfile_store($r)
+
+Store uploaded file, $r should be the HTTP Request object,
+needs $ENV{'form.upfile'}
+returns $datatoken to be put into hidden field
+
+=cut
sub upfile_store {
my $r=shift;
@@ -978,9 +974,13 @@
return $datatoken;
}
-# ================================================= Load uploaded file from tmp
-# needs $ENV{'form.datatoken'}
-# sets $ENV{'form.upfile'} to the contents of the file
+=item load_tmp_file($r)
+
+Load uploaded file from tmp, $r should be the HTTP Request object,
+needs $ENV{'form.datatoken'},
+sets $ENV{'form.upfile'} to the contents of the file
+
+=cut
sub load_tmp_file {
my $r=shift;
@@ -995,10 +995,13 @@
$ENV{'form.upfile'}=join('',@studentdata);
}
-# ========================================= Separate uploaded file into records
-# returns array of records
-# needs $ENV{'form.upfile'}
-# needs $ENV{'form.upfiletype'}
+=item upfile_record_sep()
+
+Separate uploaded file into records
+returns array of records,
+needs $ENV{'form.upfile'} and $ENV{'form.upfiletype'}
+
+=cut
sub upfile_record_sep {
if ($ENV{'form.upfiletype'} eq 'xml') {
@@ -1007,9 +1010,12 @@
}
}
-# =============================================== Separate a record into fields
-# needs $ENV{'form.upfiletype'}
-# takes $record as arg
+=item record_sep($record)
+
+Separate a record into fields $record should be an item from the upfile_record_sep(), needs $ENV{'form.upfiletype'}
+
+=cut
+
sub record_sep {
my $record=shift;
my %components=();
@@ -1054,7 +1060,12 @@
return %components;
}
-# =============================== HTML code to select file and specify its type
+=item upfile_select_html()
+
+return HTML code to select file and specify its type
+
+=cut
+
sub upfile_select_html {
return (<<'ENDUPFORM');
<input type="file" name="upfile" size="50">
@@ -1067,9 +1078,14 @@
ENDUPFORM
}
-# ===================Prints a table of sample values from each column uploaded
-# $r is an Apache Request ref
-# $records is an arrayref from &Apache::loncommon::upfile_record_sep
+=item csv_print_samples($r,$records)
+
+Prints a table of sample values from each column uploaded $r is an
+Apache Request ref, $records is an arrayref from
+&Apache::loncommon::upfile_record_sep
+
+=cut
+
sub csv_print_samples {
my ($r,$records) = @_;
my (%sone,%stwo,%sthree);
@@ -1092,10 +1108,15 @@
$r->print('</tr></table><br />'."\n");
}
-# ======Prints a table to create associations between values and table columns
-# $r is an Apache Request ref
-# $records is an arrayref from &Apache::loncommon::upfile_record_sep
-# $d is an array of 2 element arrays (internal name, displayed name)
+=item csv_print_select_table($r,$records,$d)
+
+Prints a table to create associations between values and table columns.
+$r is an Apache Request ref,
+$records is an arrayref from &Apache::loncommon::upfile_record_sep,
+$d is an array of 2 element arrays (internal name, displayed name)
+
+=cut
+
sub csv_print_select_table {
my ($r,$records,$d) = @_;
my $i=0;my %sone;
@@ -1119,11 +1140,16 @@
return $i;
}
-# ===================Prints a table of sample values from the upload and
-# can make associate samples to internal names
-# $r is an Apache Request ref
-# $records is an arrayref from &Apache::loncommon::upfile_record_sep
-# $d is an array of 2 element arrays (internal name, displayed name)
+=item csv_samples_select_table($r,$records,$d)
+
+Prints a table of sample values from the upload and can make associate samples to internal names.
+
+$r is an Apache Request ref,
+$records is an arrayref from &Apache::loncommon::upfile_record_sep,
+$d is an array of 2 element arrays (internal name, displayed name)
+
+=cut
+
sub csv_samples_select_table {
my ($r,$records,$d) = @_;
my %sone; my %stwo; my %sthree;
@@ -1154,6 +1180,14 @@
1;
__END__;
+=pod
+
+=back
+
+=head2 Access .tab File Data
+
+=over 4
+
=item languageids()
returns list of all language ids
@@ -1192,6 +1226,12 @@
returns description for a specified file type with
extra formatting
+=back
+
+=head2 Alternate Problem Views
+
+=over 4
+
=item get_previous_attempt()
return string with previous attempt on problem
@@ -1204,9 +1244,22 @@
show a snapshot of how student was answering problem
-=item get_unprocessed_cgi()
+=back
+
+=head2 HTTP Helper
+
+=over 4
+
+=item get_unprocessed_cgi($query,$possible_names)
+
+Modify the %ENV hash to contain unprocessed CGI form parameters held in
+$query. The parameters listed in $possible_names (an array reference),
+will be set in $ENV{'form.name'} if they do not already exist.
-get unparsed CGI parameters
+Typically called with $ENV{'QUERY_STRING'} as the first parameter.
+$possible_names is an ref to an array of form element names. As an example:
+get_unprocessed_cgi($ENV{'QUERY_STRING'},['uname','udom']);
+will result in $ENV{'form.uname'} and $ENV{'form.udom'} being set.
=item cacheheader()
--ng1025024978--