--- loncom/interface/lonhtmlcommon.pm 2010/08/08 02:00:38 1.282
+++ loncom/interface/lonhtmlcommon.pm 2011/01/13 17:44:30 1.286
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.282 2010/08/08 02:00:38 raeburn Exp $
+# $Id: lonhtmlcommon.pm,v 1.286 2011/01/13 17:44:30 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -60,8 +60,14 @@ use Time::Local;
use Time::HiRes;
use Apache::lonlocal;
use Apache::lonnet;
+use HTML::Entities();
use LONCAPA;
+sub java_not_enabled {
+ return "\n".''.
+ &mt('The required Java applet could not be started. Please make sure to have Java installed and active in your browser.').
+ "\n";
+}
sub coursepreflink {
my ($text,$category)=@_;
@@ -78,6 +84,22 @@ sub raw_href_to_link {
return $message;
}
+sub entity_encode {
+ my ($text)=@_;
+ return &HTML::Entities::encode($text, '<>&"');
+}
+
+sub direct_parm_link {
+ my ($linktext,$symb,$filter,$part,$target)=@_;
+ $symb=&entity_encode($symb);
+ $filter=&entity_encode($filter);
+ $part=&entity_encode($part);
+ if (($symb) && (&Apache::lonnet::allowed('opa')) && ($target ne 'tex')) {
+ return "$linktext";
+ } else {
+ return $linktext;
+ }
+}
##############################################
##############################################
@@ -1598,7 +1620,7 @@ returns: nothing
sub add_breadcrumb_tool {
my ($category, @html) = @_;
return unless @html;
- if (!defined(%tools)) {
+ if (!keys(%tools)) {
%tools = ( navigation => [], tools => [], advtools => []);
}
@@ -1638,7 +1660,7 @@ returns: nothing
#TODO might split this in separate functions for each category
sub render_tools {
my ($breadcrumbs) = @_;
- return unless defined %tools;
+ return unless (keys(%tools));
my $navigation = list_from_array($tools{navigation},
{ listattr => { class=>"LC_breadcrumb_tools_navigation" } });
@@ -2100,30 +2122,30 @@ sub echo_form_input {
if ($key =~ /^form\.(.+)$/) {
my $name = $1;
my $match = 0;
- if ((!@{$excluded}) || (!grep/^$name$/,@{$excluded})) {
- if (defined($regexps)) {
- if (@{$regexps} > 0) {
- foreach my $regexp (@{$regexps}) {
- if ($name =~ /\Q$regexp\E/) {
- $match = 1;
- last;
- }
+ if (ref($excluded) eq 'ARRAY') {
+ next if (grep(/^\Q$name\E$/,@{$excluded}));
+ }
+ if (ref($regexps) eq 'ARRAY') {
+ if (@{$regexps} > 0) {
+ foreach my $regexp (@{$regexps}) {
+ if ($name =~ /$regexp/) {
+ $match = 1;
+ last;
}
}
}
- if (!$match) {
- if (ref($env{$key})) {
- foreach my $value (@{$env{$key}}) {
- $value = &HTML::Entities::encode($value,'<>&"');
- $output .= ''."\n";
- }
- } else {
- my $value = &HTML::Entities::encode($env{$key},'<>&"');
- $output .= ''."\n";
- }
+ }
+ next if ($match);
+ if (ref($env{$key}) eq 'ARRAY') {
+ foreach my $value (@{$env{$key}}) {
+ $value = &HTML::Entities::encode($value,'<>&"');
+ $output .= ''."\n";
}
+ } else {
+ my $value = &HTML::Entities::encode($env{$key},'<>&"');
+ $output .= ''."\n";
}
}
}
@@ -2424,6 +2446,7 @@ returns: XHTML list as String.
# \@items, {listattr => { class => 'abc', id => 'xyx' }, itemattr => {class => 'abc', id => 'xyx'}}
sub list_from_array {
my ($items, $args) = @_;
+ return unless (ref($items) eq 'ARRAY');
return unless scalar @$items;
my ($ul, $li) = inittags( qw(ul li) );
my $listitems = join '', map { $li->($_, $args->{itemattr}) } @$items;
@@ -2475,11 +2498,15 @@ sub generate_menu {
# create the markup for the current $link and push it into @links.
# each entry consists of an image and a text optionally followed
# by a help link.
+ my $src;
+ if ($$link{icon} ne '') {
+ $src = '/res/adm/pages/'.$$link{icon};
+ }
push(@links,$li->(
$a->(
$img->("", {
class => "LC_noBorder LC_middle",
- src => "/res/adm/pages/$$link{icon}",
+ src => $src,
alt => mt(defined($$link{alttext}) ?
$$link{alttext} : $$link{linktext})
}), {
@@ -2632,6 +2659,7 @@ returns: XHTML list as string.
sub funclist_from_array {
my ($items, $args) = @_;
+ return unless(ref($items) eq 'ARRAY');
$args->{legend} ||= mt('Functions');
return list_from_array( [$args->{legend}, @$items],
{ listattr => {class => 'LC_funclist'} });