--- loncom/interface/loncommon.pm 2007/09/05 05:09:53 1.579
+++ loncom/interface/loncommon.pm 2007/09/11 20:36:30 1.582
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.579 2007/09/05 05:09:53 raeburn Exp $
+# $Id: loncommon.pm,v 1.582 2007/09/11 20:36:30 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2563,6 +2563,29 @@ sub preferred_languages {
return @genlanguages;
}
+sub languages {
+ my ($possible_langs) = @_;
+ my @preferred_langs = &preferred_languages();
+ if (!ref($possible_langs)) {
+ if( wantarray ) {
+ return @preferred_langs;
+ } else {
+ return $preferred_langs[0];
+ }
+ }
+ my %possibilities = map { $_ => 1 } (@$possible_langs);
+ my @preferred_possibilities;
+ foreach my $preferred_lang (@preferred_langs) {
+ if (exists($possibilities{$preferred_lang})) {
+ push(@preferred_possibilities, $preferred_lang);
+ }
+ }
+ if( wantarray ) {
+ return @preferred_possibilities;
+ }
+ return $preferred_possibilities[0];
+}
+
###############################################################
## Student Answer Attempts ##
###############################################################
@@ -2637,25 +2660,15 @@ sub get_previous_attempt {
for ($version=1;$version<=$returnhash{'version'};$version++) {
$prevattempts.='
Transaction '.$version.' | ';
foreach my $key (sort(keys(%lasthash))) {
- my $value;
- if ($key =~ /timestamp/) {
- $value=scalar(localtime($returnhash{$version.':'.$key}));
- } else {
- $value=$returnhash{$version.':'.$key};
- }
- $prevattempts.=''.&unescape($value).' | ';
+ my $value = &format_previous_attempt_value($key,
+ $returnhash{$version.':'.$key});
+ $prevattempts.=''.$value.' | ';
}
}
}
$prevattempts.='
Current | ';
foreach my $key (sort(keys(%lasthash))) {
- my $value;
- if ($key =~ /timestamp/) {
- $value=scalar(localtime($lasthash{$key}));
- } else {
- $value=$lasthash{$key};
- }
- $value=&unescape($value);
+ my $value = &format_previous_attempt_value($key,$lasthash{$key});
if ($key =~/$regexp$/ && (defined &$gradesub)) {$value = &$gradesub($value)}
$prevattempts.=''.$value.' | ';
}
@@ -2668,6 +2681,19 @@ sub get_previous_attempt {
}
}
+sub format_previous_attempt_value {
+ my ($key,$value) = @_;
+ if ($key =~ /timestamp/) {
+ $value = &Apache::lonlocal::locallocaltime($value);
+ } elsif (ref($value) eq 'ARRAY') {
+ $value = '('.join(', ', @{ $value }).')';
+ } else {
+ $value = &unescape($value);
+ }
+ return $value;
+}
+
+
sub relative_to_absolute {
my ($url,$output)=@_;
my $parser=HTML::TokeParser->new(\$output);
@@ -5651,7 +5677,7 @@ sub user_picker {
my $currdom = $dom;
my %curr_selected = (
srchin => 'dom',
- srchby => 'uname',
+ srchby => 'lastname',
);
my $srchterm;
if (ref($srch) eq 'HASH') {
@@ -5713,7 +5739,7 @@ sub user_picker {
$srchinsel .= "\n \n";
my $srchbysel = ' \n";
my $srchtypesel = '