version 1.282, 2010/08/08 02:00:38
|
version 1.287, 2011/01/16 22:45:05
|
Line 60 use Time::Local;
|
Line 60 use Time::Local;
|
use Time::HiRes; |
use Time::HiRes; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use HTML::Entities(); |
use LONCAPA; |
use LONCAPA; |
|
|
|
sub java_not_enabled { |
|
return "\n".'<span class="LC_error">'. |
|
&mt('The required Java applet could not be started. Please make sure to have Java installed and active in your browser.'). |
|
"</span>\n"; |
|
} |
|
|
sub coursepreflink { |
sub coursepreflink { |
my ($text,$category)=@_; |
my ($text,$category)=@_; |
Line 78 sub raw_href_to_link {
|
Line 84 sub raw_href_to_link {
|
return $message; |
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 "<a href='/adm/parmset?symb=$symb&filter=$filter&part=$part'>$linktext</a>"; |
|
} else { |
|
return $linktext; |
|
} |
|
} |
############################################## |
############################################## |
############################################## |
############################################## |
|
|
Line 1402 sub htmlareabrowser {
|
Line 1424 sub htmlareabrowser {
|
return 1; |
return 1; |
} |
} |
|
|
|
# |
|
# Should the "return to content" link be shown? |
|
# |
|
|
|
sub show_return_link { |
|
if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)}) |
|
|| ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) { |
|
|
|
return if ($env{'form.register'}); |
|
} |
|
return (($env{'request.noversionuri'}=~m{^/(res|public)/} && |
|
$env{'request.symb'} eq '') |
|
|| |
|
($env{'request.noversionuri'}=~ m{^/cgi-bin/printout.pl}) |
|
|| |
|
(($env{'request.noversionuri'}=~/^\/adm\//) && |
|
($env{'request.noversionuri'}!~/^\/adm\/wrapper\//) && |
|
($env{'request.noversionuri'}!~ |
|
m{^/adm/.*/(smppg|bulletinboard)($|\?)}) |
|
)); |
|
} |
|
|
|
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
Line 1487 returns: nothing
|
Line 1532 returns: nothing
|
$last = $menulink; |
$last = $menulink; |
} |
} |
} |
} |
my $links = join "", |
my $links; |
|
if ((&show_return_link) && (!$CourseBreadcrumbs)) { |
|
$links=&htmltag( 'a',"<img src='/res/adm/pages/reload.png' border='0' style='vertical-align:middle;' />", |
|
{ href => '/adm/flip?postdata=return:', |
|
title => &mt("Back to most recent content resource") }); |
|
} |
|
$links.= join "", |
map { |
map { |
$faq = $_->{'faq'} if (exists($_->{'faq'})); |
$faq = $_->{'faq'} if (exists($_->{'faq'})); |
$bug = $_->{'bug'} if (exists($_->{'bug'})); |
$bug = $_->{'bug'} if (exists($_->{'bug'})); |
$help = $_->{'help'} if (exists($_->{'help'})); |
$help = $_->{'help'} if (exists($_->{'help'})); |
|
|
my $result = $_->{no_mt} ? $_->{text} : mt($_->{text}); |
my $result = $_->{no_mt} ? $_->{text} : &mt($_->{text}); |
|
|
if ($_->{href}){ |
if ($_->{href}){ |
$result = htmltag( 'a', $result, |
$result = &htmltag( 'a', $result, |
{ href => $_->{href}, |
{ href => $_->{href}, |
title => $_->{no_mt} ? $_->{title} : mt($_->{title}), |
title => $_->{no_mt} ? $_->{title} : &mt($_->{title}), |
target => $_->{target}, }); |
target => $_->{target}, }); |
} |
} |
|
|
$result = htmltag( 'li', "$result $crumbsymbol"); |
$result = &htmltag( 'li', "$result $crumbsymbol"); |
} @Crumbs; |
} @Crumbs; |
|
|
#should the last Element be translated? |
#should the last Element be translated? |
Line 1512 returns: nothing
|
Line 1563 returns: nothing
|
|
|
# last breadcrumb is the first order heading of a page |
# last breadcrumb is the first order heading of a page |
# for course breadcrumbs it's just bold |
# for course breadcrumbs it's just bold |
$links .= htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', |
$links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', |
$lasttext), {title => $lasttext}); |
$lasttext), {title => $lasttext}); |
|
|
my $icons = ''; |
my $icons = ''; |
Line 1535 returns: nothing
|
Line 1586 returns: nothing
|
|
|
|
|
unless ($CourseBreadcrumbs) { |
unless ($CourseBreadcrumbs) { |
$links = htmltag('ol', $links, { id => "LC_MenuBreadcrumbs" }); |
$links = &htmltag('ol', $links, { id => "LC_MenuBreadcrumbs" }); |
} else { |
} else { |
$links = htmltag('ul', $links, { class => "LC_CourseBreadcrumbs" }); |
$links = &htmltag('ul', $links, { class => "LC_CourseBreadcrumbs" }); |
} |
} |
|
|
if ($component) { |
if ($component) { |
$links = htmltag('span', |
$links = &htmltag('span', |
( $no_mt ? $component : mt($component) ). |
( $no_mt ? $component : mt($component) ). |
( $icons ? $icons : '' ), |
( $icons ? $icons : '' ), |
{ class => 'LC_breadcrumbs_component' } ) |
{ class => 'LC_breadcrumbs_component' } ) |
.$links; |
.$links; |
} |
} |
|
|
render_tools(\$links); |
&render_tools(\$links); |
$links = htmltag('div', $links, |
$links = &htmltag('div', $links, |
{ id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ; |
{ id => "LC_breadcrumbs" }) unless ($CourseBreadcrumbs) ; |
render_advtools(\$links); |
&render_advtools(\$links); |
|
|
# Return the @Crumbs stack to what we started with |
# Return the @Crumbs stack to what we started with |
push(@Crumbs,$last); |
push(@Crumbs,$last); |
Line 1598 returns: nothing
|
Line 1649 returns: nothing
|
sub add_breadcrumb_tool { |
sub add_breadcrumb_tool { |
my ($category, @html) = @_; |
my ($category, @html) = @_; |
return unless @html; |
return unless @html; |
if (!defined(%tools)) { |
if (!keys(%tools)) { |
%tools = ( navigation => [], tools => [], advtools => []); |
%tools = ( navigation => [], tools => [], advtools => []); |
} |
} |
|
|
Line 1638 returns: nothing
|
Line 1689 returns: nothing
|
#TODO might split this in separate functions for each category |
#TODO might split this in separate functions for each category |
sub render_tools { |
sub render_tools { |
my ($breadcrumbs) = @_; |
my ($breadcrumbs) = @_; |
return unless defined %tools; |
return unless (keys(%tools)); |
|
|
my $navigation = list_from_array($tools{navigation}, |
my $navigation = list_from_array($tools{navigation}, |
{ listattr => { class=>"LC_breadcrumb_tools_navigation" } }); |
{ listattr => { class=>"LC_breadcrumb_tools_navigation" } }); |
Line 2100 sub echo_form_input {
|
Line 2151 sub echo_form_input {
|
if ($key =~ /^form\.(.+)$/) { |
if ($key =~ /^form\.(.+)$/) { |
my $name = $1; |
my $name = $1; |
my $match = 0; |
my $match = 0; |
if ((!@{$excluded}) || (!grep/^$name$/,@{$excluded})) { |
if (ref($excluded) eq 'ARRAY') { |
if (defined($regexps)) { |
next if (grep(/^\Q$name\E$/,@{$excluded})); |
if (@{$regexps} > 0) { |
} |
foreach my $regexp (@{$regexps}) { |
if (ref($regexps) eq 'ARRAY') { |
if ($name =~ /\Q$regexp\E/) { |
if (@{$regexps} > 0) { |
$match = 1; |
foreach my $regexp (@{$regexps}) { |
last; |
if ($name =~ /$regexp/) { |
} |
$match = 1; |
|
last; |
} |
} |
} |
} |
} |
} |
if (!$match) { |
} |
if (ref($env{$key})) { |
next if ($match); |
foreach my $value (@{$env{$key}}) { |
if (ref($env{$key}) eq 'ARRAY') { |
$value = &HTML::Entities::encode($value,'<>&"'); |
foreach my $value (@{$env{$key}}) { |
$output .= '<input type="hidden" name="'.$name. |
$value = &HTML::Entities::encode($value,'<>&"'); |
'" value="'.$value.'" />'."\n"; |
$output .= '<input type="hidden" name="'.$name. |
} |
'" value="'.$value.'" />'."\n"; |
} else { |
|
my $value = &HTML::Entities::encode($env{$key},'<>&"'); |
|
$output .= '<input type="hidden" name="'.$name. |
|
'" value="'.$value.'" />'."\n"; |
|
} |
|
} |
} |
|
} else { |
|
my $value = &HTML::Entities::encode($env{$key},'<>&"'); |
|
$output .= '<input type="hidden" name="'.$name. |
|
'" value="'.$value.'" />'."\n"; |
} |
} |
} |
} |
} |
} |
Line 2424 returns: XHTML list as String.
|
Line 2475 returns: XHTML list as String.
|
# \@items, {listattr => { class => 'abc', id => 'xyx' }, itemattr => {class => 'abc', id => 'xyx'}} |
# \@items, {listattr => { class => 'abc', id => 'xyx' }, itemattr => {class => 'abc', id => 'xyx'}} |
sub list_from_array { |
sub list_from_array { |
my ($items, $args) = @_; |
my ($items, $args) = @_; |
|
return unless (ref($items) eq 'ARRAY'); |
return unless scalar @$items; |
return unless scalar @$items; |
my ($ul, $li) = inittags( qw(ul li) ); |
my ($ul, $li) = inittags( qw(ul li) ); |
my $listitems = join '', map { $li->($_, $args->{itemattr}) } @$items; |
my $listitems = join '', map { $li->($_, $args->{itemattr}) } @$items; |
Line 2475 sub generate_menu {
|
Line 2527 sub generate_menu {
|
# create the markup for the current $link and push it into @links. |
# create the markup for the current $link and push it into @links. |
# each entry consists of an image and a text optionally followed |
# each entry consists of an image and a text optionally followed |
# by a help link. |
# by a help link. |
|
my $src; |
|
if ($$link{icon} ne '') { |
|
$src = '/res/adm/pages/'.$$link{icon}; |
|
} |
push(@links,$li->( |
push(@links,$li->( |
$a->( |
$a->( |
$img->("", { |
$img->("", { |
class => "LC_noBorder LC_middle", |
class => "LC_noBorder LC_middle", |
src => "/res/adm/pages/$$link{icon}", |
src => $src, |
alt => mt(defined($$link{alttext}) ? |
alt => mt(defined($$link{alttext}) ? |
$$link{alttext} : $$link{linktext}) |
$$link{alttext} : $$link{linktext}) |
}), { |
}), { |
Line 2632 returns: XHTML list as string.
|
Line 2688 returns: XHTML list as string.
|
|
|
sub funclist_from_array { |
sub funclist_from_array { |
my ($items, $args) = @_; |
my ($items, $args) = @_; |
|
return unless(ref($items) eq 'ARRAY'); |
$args->{legend} ||= mt('Functions'); |
$args->{legend} ||= mt('Functions'); |
return list_from_array( [$args->{legend}, @$items], |
return list_from_array( [$args->{legend}, @$items], |
{ listattr => {class => 'LC_funclist'} }); |
{ listattr => {class => 'LC_funclist'} }); |