--- loncom/interface/loncommon.pm 2007/09/05 05:09:53 1.579
+++ loncom/interface/loncommon.pm 2007/09/12 23:32:59 1.585
@@ -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.585 2007/09/12 23:32:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2531,9 +2531,11 @@ sub preferred_languages {
@languages=(@languages,
split(/\s*(\,|\;|\:)\s*/,$env{'environment.languages'}));
}
- my $browser=(split(/\;/,$ENV{'HTTP_ACCEPT_LANGUAGE'}))[0];
+ my $browser=$ENV{'HTTP_ACCEPT_LANGUAGE'};
if ($browser) {
- @languages=(@languages,split(/\s*(\,|\;|\:)\s*/,$browser));
+ my @browser =
+ map { (split(/\s*;\s*/,$_))[0] } (split(/\s*,\s*/,$browser));
+ push(@languages,@browser);
}
if (&Apache::lonnet::domain($env{'user.domain'},'lang_def')) {
@languages=(@languages,
@@ -2555,14 +2557,40 @@ sub preferred_languages {
my @genlanguages;
foreach my $lang (@languages) {
unless ($lang=~/\w/) { next; }
- push (@genlanguages,$lang);
+ push(@genlanguages,$lang);
if ($lang=~/(\-|\_)/) {
push(@genlanguages,(split(/(\-|\_)/,$lang))[0]);
}
}
+ #uniqueify the languages list
+ my %count;
+ @genlanguages = map { $count{$_}++ == 0 ? $_ : () } @genlanguages;
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 +2665,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 +2686,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);
@@ -4616,6 +4647,13 @@ table.LC_docs_adddocs th {
background: #DDDDDD;
}
+table.LC_sty_begin {
+ background: #BBFFBB;
+}
+table.LC_sty_end {
+ background: #FFBBBB;
+}
+
END
}
@@ -5651,7 +5689,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 +5751,7 @@ sub user_picker {
$srchinsel .= "\n \n";
my $srchbysel = ' \n";
my $srchtypesel = '