version 1.222, 2004/10/21 11:17:00
|
version 1.228, 2004/11/09 19:51:43
|
Line 59 use Apache::lonnet();
|
Line 59 use Apache::lonnet();
|
use GDBM_File; |
use GDBM_File; |
use POSIX qw(strftime mktime); |
use POSIX qw(strftime mktime); |
use Apache::Constants qw(:common :http :methods); |
use Apache::Constants qw(:common :http :methods); |
use Apache::lonmsg(); |
|
use Apache::lonmenu(); |
use Apache::lonmenu(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use HTML::Entities; |
use HTML::Entities; |
Line 663 sub help_open_menu {
|
Line 662 sub help_open_menu {
|
my $link=''; |
my $link=''; |
my $title = &mt('Get help'); |
my $title = &mt('Get help'); |
my $origurl = $ENV{'REQUEST_URI'}; |
my $origurl = $ENV{'REQUEST_URI'}; |
|
$origurl=~s|^/~|/priv/|; |
my $timestamp = time; |
my $timestamp = time; |
foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
$$_ = &Apache::lonnet::escape($$_); |
$$_ = &Apache::lonnet::escape($$_); |
Line 1741 sub get_related_words {
|
Line 1741 sub get_related_words {
|
|
|
=over 4 |
=over 4 |
|
|
=item * plainname($uname,$udom) |
=item * plainname($uname,$udom,$first) |
|
|
Takes a users logon name and returns it as a string in |
Takes a users logon name and returns it as a string in |
"first middle last generation" form |
"first middle last generation" form |
|
if $first is set to 'lastname' then it returns it as |
|
'lastname generation, firstname middlename' if their is a lastname |
|
|
=cut |
=cut |
|
|
############################################################### |
############################################################### |
sub plainname { |
sub plainname { |
my ($uname,$udom)=@_; |
my ($uname,$udom,$first)=@_; |
my %names=&Apache::lonnet::get('environment', |
my %names=&Apache::lonnet::get('environment', |
['firstname','middlename','lastname','generation'], |
['firstname','middlename','lastname','generation'], |
$udom,$uname); |
$udom,$uname); |
my $name=$names{'firstname'}.' '.$names{'middlename'}.' '. |
my $name=&Apache::lonnet::format_name($names{'firstname'}, |
$names{'lastname'}.' '.$names{'generation'}; |
$names{'middlename'}, |
|
$names{'lastname'}, |
|
$names{'generation'},$first); |
|
$name=~s/^\s+//; |
$name=~s/\s+$//; |
$name=~s/\s+$//; |
$name=~s/\s+/ /g; |
$name=~s/\s+/ /g; |
if ($name !~ /\S/) { $name=$uname.'@'.$udom; } |
if ($name !~ /\S/) { $name=$uname.'@'.$udom; } |
Line 2518 other decorations will be returned.
|
Line 2523 other decorations will be returned.
|
=cut |
=cut |
|
|
sub bodytag { |
sub bodytag { |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg)=@_; |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle)=@_; |
$title=&mt($title); |
$title=&mt($title); |
$function = &get_users_function() if (!$function); |
$function = &get_users_function() if (!$function); |
my $img=&designparm($function.'.img',$domain); |
my $img=&designparm($function.'.img',$domain); |
Line 2564 END
|
Line 2569 END
|
return $bodytag; |
return $bodytag; |
} elsif ($ENV{'browser.interface'} eq 'textual') { |
} elsif ($ENV{'browser.interface'} eq 'textual') { |
# Accessibility |
# Accessibility |
|
|
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', |
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', |
$forcereg). |
$forcereg). |
'<h1>LON-CAPA: '.$title.'</h1>'; |
'<h1>LON-CAPA: '.$title.'</h1>'; |
Line 2585 END
|
Line 2591 END
|
</p> |
</p> |
</td> |
</td> |
ENDROLE |
ENDROLE |
|
my $titleinfo = '<font face="Arial, Helvetica, sans-serif" size="+3" color="'. |
|
$font.'"><b>'.$title.'</b></font>'; |
|
if ($customtitle) { |
|
$titleinfo = $customtitle; |
|
} |
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', |
return $bodytag.&Apache::lonmenu::menubuttons($forcereg,'web', |
$forcereg). |
$forcereg). |
'<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'"><font face="Arial, Helvetica, sans-serif" size="+3" color="'.$font.'"><b>'.$title. |
'<table bgcolor="'.$pgbg.'" width="100%" border="0" cellspacing="3" cellpadding="3"><tr><td rowspan="3" bgcolor="'.$tabbg.'">'.$titleinfo.'</td>'.$roleinfo.'</tr></table>'; |
'</b></font></td>'.$roleinfo.'</tr></table>'; |
|
} |
} |
|
|
# |
# |
# Top frame rendering, Remote is up |
# Top frame rendering, Remote is up |
# |
# |
|
my $titleinfo = ' <font size="5" face="Arial, Helvetica, sans-serif"><b>'.$title.'</b></font>'; |
|
if ($customtitle) { |
|
$titleinfo = $customtitle; |
|
} |
return(<<ENDBODY); |
return(<<ENDBODY); |
$bodytag |
$bodytag |
<table width="100%" cellspacing="0" border="0" cellpadding="0"> |
<table width="100%" cellspacing="0" border="0" cellpadding="0"> |
Line 2603 $upperleft</td>
|
Line 2617 $upperleft</td>
|
</tr> |
</tr> |
<tr> |
<tr> |
<td rowspan="3" bgcolor="$tabbg"> |
<td rowspan="3" bgcolor="$tabbg"> |
<font size="5" face="Arial, Helvetica, sans-serif"><b>$title</b></font> |
$titleinfo |
<td bgcolor="$tabbg" align="right"> |
<td bgcolor="$tabbg" align="right"> |
<font size="2" face="Arial, Helvetica, sans-serif"> |
<font size="2" face="Arial, Helvetica, sans-serif"> |
$ENV{'environment.firstname'} |
$ENV{'environment.firstname'} |
Line 3277 sub DrawBarGraph {
|
Line 3291 sub DrawBarGraph {
|
'#66ccff', '#ff9999', '#cccc33', '#660000', '#33cc66', |
'#66ccff', '#ff9999', '#cccc33', '#660000', '#33cc66', |
]; |
]; |
} |
} |
|
my $extra_settings = {}; |
|
if (ref($Values[-1]) eq 'HASH') { |
|
$extra_settings = pop(@Values); |
|
} |
# |
# |
my $identifier = &get_cgi_id(); |
my $identifier = &get_cgi_id(); |
my $id = 'cgi.'.$identifier; |
my $id = 'cgi.'.$identifier; |
if (! @Values || ref($Values[0]) ne 'ARRAY') { |
if (! @Values || ref($Values[0]) ne 'ARRAY') { |
return ''; |
return ''; |
} |
} |
|
# |
|
my @Labels; |
|
if (defined($labels)) { |
|
@Labels = @$labels; |
|
} else { |
|
for (my $i=0;$i<@{$Values[0]};$i++) { |
|
push (@Labels,$i+1); |
|
} |
|
} |
|
# |
my $NumBars = scalar(@{$Values[0]}); |
my $NumBars = scalar(@{$Values[0]}); |
|
if ($NumBars < scalar(@Labels)) { $NumBars = scalar(@Labels); } |
my %ValuesHash; |
my %ValuesHash; |
my $NumSets=1; |
my $NumSets=1; |
foreach my $array (@Values) { |
foreach my $array (@Values) { |
Line 3293 sub DrawBarGraph {
|
Line 3322 sub DrawBarGraph {
|
} |
} |
# |
# |
my ($height,$width,$xskip,$bar_width) = (200,120,1,15); |
my ($height,$width,$xskip,$bar_width) = (200,120,1,15); |
if ($NumBars < 5) { |
if ($NumBars < 3) { |
$width = 120+$NumBars*25; |
$width = 120+$NumBars*32; |
|
$xskip = 1; |
|
$bar_width = 30; |
|
} elsif ($NumBars < 5) { |
|
$width = 120+$NumBars*20; |
$xskip = 1; |
$xskip = 1; |
$bar_width = 25; |
$bar_width = 20; |
} elsif ($NumBars < 10) { |
} elsif ($NumBars < 10) { |
$width = 120+$NumBars*15; |
$width = 120+$NumBars*15; |
$xskip = 1; |
$xskip = 1; |
Line 3315 sub DrawBarGraph {
|
Line 3348 sub DrawBarGraph {
|
$bar_width = 4; |
$bar_width = 4; |
} |
} |
# |
# |
my @Labels; |
|
if (defined($labels)) { |
|
@Labels = @$labels; |
|
} else { |
|
for (my $i=0;$i<@{$Values[0]};$i++) { |
|
push (@Labels,$i+1); |
|
} |
|
} |
|
# |
|
$Max = 1 if ($Max < 1); |
$Max = 1 if ($Max < 1); |
if ( int($Max) < $Max ) { |
if ( int($Max) < $Max ) { |
$Max++; |
$Max++; |
Line 3346 sub DrawBarGraph {
|
Line 3370 sub DrawBarGraph {
|
$ValuesHash{$id.'.bar_width'} = $bar_width; |
$ValuesHash{$id.'.bar_width'} = $bar_width; |
$ValuesHash{$id.'.labels'} = join(',',@Labels); |
$ValuesHash{$id.'.labels'} = join(',',@Labels); |
# |
# |
|
# Deal with other parameters |
|
while (my ($key,$value) = each(%$extra_settings)) { |
|
$ValuesHash{$id.'.'.$key} = $value; |
|
} |
|
# |
&Apache::lonnet::appenv(%ValuesHash); |
&Apache::lonnet::appenv(%ValuesHash); |
return '<img src="/cgi-bin/graph.png?'.$identifier.'" border="1" />'; |
return '<img src="/cgi-bin/graph.png?'.$identifier.'" border="1" />'; |
} |
} |
Line 3732 sub connection_aborted {
|
Line 3761 sub connection_aborted {
|
return $c->aborted(); |
return $c->aborted(); |
} |
} |
|
|
# |
|
# Escapes strings that may have embedded 's that will be put into |
# Escapes strings that may have embedded 's that will be put into |
# strings as 'strings'. |
# strings as 'strings'. |
# The assumptions are: |
|
# There has been no effort to escape ' with \' |
|
# Any \'s in the string are intended to be there as part of the URL |
|
# and must also be escaped. |
|
# Parameters: |
|
# input - The string to escape. |
|
# Returns: |
|
# The escaped string (' replaced by \' and \ replaced by \\). |
|
# |
|
sub escape_single { |
sub escape_single { |
my ($input) = @_; |
my ($input) = @_; |
|
$input =~ s/\\/\\\\/g; # Escape the \'s..(must be first)> |
# I imagine a regexp wizard could combine the two expressions below. |
|
# If you do you might want to comment the result. |
|
|
|
$input =~ s/\\/\\\\/g; # Escape the /'s..(must be first)> |
|
$input =~ s/\'/\\\'/g; # Esacpe the 's.... |
$input =~ s/\'/\\\'/g; # Esacpe the 's.... |
|
|
return $input; |
return $input; |
} |
} |
|
|
# Same as escape_single, but escape's "'s This |
# Same as escape_single, but escape's "'s This |
# can be used for "strings" |
# can be used for "strings" |
# |
|
# Parameters: |
|
# input - The string to escape. |
|
# Returns: |
|
# The escaped string (" replaced by \" and \ replaced by \\). |
|
# |
|
sub escape_double { |
sub escape_double { |
my ($input) = @_; |
my ($input) = @_; |
|
|
# I imagine a regexp wizard could combine the two expressions below. |
|
# If you do you might want to comment the result. |
|
|
|
$input =~ s/\\/\\\\/g; # Escape the /'s..(must be first)> |
$input =~ s/\\/\\\\/g; # Escape the /'s..(must be first)> |
$input =~ s/\"/\\\"/g; # Esacpe the "s.... |
$input =~ s/\"/\\\"/g; # Esacpe the "s.... |
|
|
return $input; |
return $input; |
} |
} |
# |
|
# Escapes the last element of a full URL. |
# Escapes the last element of a full URL. |
# |
|
# Parameters: |
|
# url - The url to escape. |
|
# Returns: |
|
# The url with the last element escaped via lonnet::escape. |
|
# |
|
sub escape_url { |
sub escape_url { |
my ($url) = @_; |
my ($url) = @_; |
my @urlslices = split(/\//, $url); |
my @urlslices = split(/\//, $url); |
|
my $lastitem = &Apache::lonnet::escape(pop(@urlslices)); |
my $lastitem = $urlslices[scalar(@urlslices) -1]; |
return join('/',@urlslices).'/'.$lastitem; |
$lastitem = &Apache::lonnet::escape($lastitem); |
|
|
|
my $escaped_url; |
|
for (my $i = 0; $i < scalar(@urlslices) -1; $i++) { |
|
$escaped_url .= $urlslices[$i] .'/'; |
|
} |
|
$escaped_url .= $lastitem ; |
|
|
|
return $escaped_url; |
|
} |
} |
=pod |
=pod |
|
|