version 1.180, 2004/02/18 15:40:23
|
version 1.206, 2004/08/24 22:47:58
|
Line 74 my $readit;
|
Line 74 my $readit;
|
my %language; |
my %language; |
my %supported_language; |
my %supported_language; |
my %cprtag; |
my %cprtag; |
|
my %scprtag; |
my %fe; my %fd; |
my %fe; my %fd; |
my %category_extensions; |
my %category_extensions; |
|
|
Line 131 BEGIN {
|
Line 132 BEGIN {
|
close($fh); |
close($fh); |
} |
} |
} |
} |
|
# ------------------------------------------------------------------ source copyrights |
|
{ |
|
my $sourcecopyrightfile = $Apache::lonnet::perlvar{'lonIncludes'}. |
|
'/source_copyright.tab'; |
|
if ( open (my $fh,"<$sourcecopyrightfile") ) { |
|
while (<$fh>) { |
|
next if /^\#/; |
|
chomp; |
|
my ($key,$val)=(split(/\s+/,$_,2)); |
|
$scprtag{$key}=$val; |
|
} |
|
close($fh); |
|
} |
|
} |
|
|
# -------------------------------------------------------------- domain designs |
# -------------------------------------------------------------- domain designs |
|
|
Line 220 formname and elementname indicate the na
|
Line 235 formname and elementname indicate the na
|
the element that the results of the browsing selection are to be placed in. |
the element that the results of the browsing selection are to be placed in. |
|
|
Specifying 'only' will restrict the browser to displaying only files |
Specifying 'only' will restrict the browser to displaying only files |
with the given extension. Can be a comma seperated list. |
with the given extension. Can be a comma separated list. |
|
|
Specifying 'omit' will restrict the browser to NOT displaying files |
Specifying 'omit' will restrict the browser to NOT displaying files |
with the given extension. Can be a comma seperated list. |
with the given extension. Can be a comma separated list. |
|
|
=item * opensearcher(formname, elementname) [javascript] |
=item * opensearcher(formname, elementname) [javascript] |
|
|
Line 235 of the element the selection from the se
|
Line 250 of the element the selection from the se
|
=cut |
=cut |
|
|
sub browser_and_searcher_javascript { |
sub browser_and_searcher_javascript { |
|
my ($mode)=@_; |
|
if (!defined($mode)) { $mode='edit'; } |
my $resurl=&lastresurl(); |
my $resurl=&lastresurl(); |
return <<END; |
return <<END; |
var editbrowser = null; |
var editbrowser = null; |
Line 244 sub browser_and_searcher_javascript {
|
Line 261 sub browser_and_searcher_javascript {
|
url += 'launch=1&'; |
url += 'launch=1&'; |
} |
} |
url += 'catalogmode=interactive&'; |
url += 'catalogmode=interactive&'; |
url += 'mode=edit&'; |
url += 'mode=$mode&'; |
url += 'form=' + formname + '&'; |
url += 'form=' + formname + '&'; |
if (only != null) { |
if (only != null) { |
url += 'only=' + only + '&'; |
url += 'only=' + only + '&'; |
Line 269 sub browser_and_searcher_javascript {
|
Line 286 sub browser_and_searcher_javascript {
|
url += 'launch=1&'; |
url += 'launch=1&'; |
} |
} |
url += 'catalogmode=interactive&'; |
url += 'catalogmode=interactive&'; |
url += 'mode=edit&'; |
url += 'mode=$mode&'; |
url += 'form=' + formname + '&'; |
url += 'form=' + formname + '&'; |
if (titleelement != null) { |
if (titleelement != null) { |
url += 'titleelement=' + titleelement + '&'; |
url += 'titleelement=' + titleelement + '&'; |
Line 353 sub coursebrowser_javascript {
|
Line 370 sub coursebrowser_javascript {
|
return (<<ENDSTDBRW); |
return (<<ENDSTDBRW); |
<script type="text/javascript" language="Javascript" > |
<script type="text/javascript" language="Javascript" > |
var stdeditbrowser; |
var stdeditbrowser; |
function opencrsbrowser(formname,uname,udom) { |
function opencrsbrowser(formname,uname,udom,desc) { |
var url = '/adm/pickcourse?'; |
var url = '/adm/pickcourse?'; |
var filter; |
var filter; |
if (filter != null) { |
if (filter != null) { |
Line 368 sub coursebrowser_javascript {
|
Line 385 sub coursebrowser_javascript {
|
} |
} |
} |
} |
url += 'form=' + formname + '&cnumelement='+uname+ |
url += 'form=' + formname + '&cnumelement='+uname+ |
'&cdomelement='+udom; |
'&cdomelement='+udom+ |
|
'&cnameelement='+desc; |
var title = 'Course_Browser'; |
var title = 'Course_Browser'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
var options = 'scrollbars=1,resizable=1,menubar=0'; |
options += ',width=700,height=600'; |
options += ',width=700,height=600'; |
Line 380 ENDSTDBRW
|
Line 398 ENDSTDBRW
|
} |
} |
|
|
sub selectcourse_link { |
sub selectcourse_link { |
my ($form,$unameele,$udomele)=@_; |
my ($form,$unameele,$udomele,$desc)=@_; |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
'","'.$udomele.'");'."'>".&mt('Select Course')."</a>"; |
'","'.$udomele.'","'.$desc.'");'."'>".&mt('Select Course')."</a>"; |
} |
} |
|
|
=pod |
=pod |
Line 621 sub helpLatexCheatsheet {
|
Line 639 sub helpLatexCheatsheet {
|
.'</td></tr></table>'; |
.'</td></tr></table>'; |
} |
} |
|
|
|
sub help_open_menu { |
|
my ($color,$topic,$component_help,$function,$faq,$bug,$stayOnPage,$width,$height,$text) = @_; |
|
$text = "" if (not defined $text); |
|
$stayOnPage = 0 if (not defined $stayOnPage); |
|
if ($ENV{'browser.interface'} eq 'textual' || |
|
$ENV{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
|
} |
|
$width = 620 if (not defined $width); |
|
$height = 600 if (not defined $height); |
|
my $link=''; |
|
my $title = &mt('Get help'); |
|
my $origurl = $ENV{'REQUEST_URI'}; |
|
my $timestamp = time; |
|
foreach (\$color,\$function,\$topic,\$component_help,\$faq,\$bug,\$origurl) { |
|
$$_ = &Apache::lonnet::escape($$_); |
|
} |
|
|
|
if (!$stayOnPage) { |
|
$link = "javascript:helpMenu('open')"; |
|
} else { |
|
$link = "javascript:helpMenu('display')"; |
|
} |
|
my $banner_link = "/adm/helpmenu?page=banner&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; |
|
my $details_link = "/adm/helpmenu?page=body&color=$color&function=$function&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp"; |
|
my $template; |
|
if ($text ne "") { |
|
$template .= |
|
"<table bgcolor='#337733' cellspacing='1' cellpadding='1' border='0'><tr>". |
|
"<td bgcolor='#448844'><a href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; |
|
} |
|
$template .= <<"ENDTEMPLATE"; |
|
<script> |
|
function helpMenu(caller) { |
|
if (caller == 'open') { |
|
newWindow = window.open("","helpmenu","HEIGHT=$height,WIDTH=$width,resize=yes,scrollbars=yes" ) |
|
caller = newWindow.document |
|
} else { |
|
caller = this.document |
|
} |
|
caller.write("<html><head><title>LON-CAPA Help Menu</title><meta http-equiv='pragma' content='no-cache'></head>") |
|
caller.write("<frameset rows='105,*' border='0'><frame name='bannerframe' src='$banner_link'><frame name='bodyframe' src='$details_link'></frameset>") |
|
caller.write("</html>") |
|
caller.close() |
|
if (caller == newWindow.document) { |
|
caller.focus() |
|
} |
|
} |
|
</script> |
|
<a href="$link" title="$title"><image src="/adm/lonIcons/helpgateway.gif" border="0" alt="(Help Menu)" /></a> |
|
ENDTEMPLATE |
|
if ($component_help) { |
|
if (!$text) { |
|
$template=&help_open_topic($component_help,undef,$stayOnPage, |
|
$width,$height).' '.$template; |
|
} else { |
|
my $help_text; |
|
$help_text=&Apache::lonnet::unescape($topic); |
|
$template='<table><tr><td>'. |
|
&help_open_topic($component_help,$help_text,$stayOnPage, |
|
$width,$height).'</td><td>'.$template. |
|
'</td></tr></table>'; |
|
} |
|
} |
|
if ($text ne '') { $template.='</td></tr></table>' }; |
|
return $template; |
|
} |
|
|
sub help_open_bug { |
sub help_open_bug { |
my ($topic, $text, $stayOnPage, $width, $height) = @_; |
my ($topic, $text, $stayOnPage, $width, $height) = @_; |
unless ($ENV{'user.adv'}) { return ''; } |
unless ($ENV{'user.adv'}) { return ''; } |
Line 631 sub help_open_bug {
|
Line 717 sub help_open_bug {
|
$ENV{'environment.remote'} eq 'off' ) { |
$ENV{'environment.remote'} eq 'off' ) { |
$stayOnPage=1; |
$stayOnPage=1; |
} |
} |
$width = 350 if (not defined $width); |
$width = 600 if (not defined $width); |
$height = 400 if (not defined $height); |
$height = 600 if (not defined $height); |
|
|
$topic=~s/\W+/\+/g; |
$topic=~s/\W+/\+/g; |
my $link=''; |
my $link=''; |
Line 716 ENDTEMPLATE
|
Line 802 ENDTEMPLATE
|
|
|
=item * csv_translate($text) |
=item * csv_translate($text) |
|
|
Translate $text to allow it to be output as a 'comma seperated values' |
Translate $text to allow it to be output as a 'comma separated values' |
format. |
format. |
|
|
=cut |
=cut |
Line 906 sub domain_select {
|
Line 992 sub domain_select {
|
} &get_domains; |
} &get_domains; |
if ($multiple) { |
if ($multiple) { |
$domains{''}=&mt('Any domain'); |
$domains{''}=&mt('Any domain'); |
return &multiple_select_form($name,$value,%domains); |
return &multiple_select_form($name,$value,4,%domains); |
} else { |
} else { |
return &select_form($name,$value,%domains); |
return &select_form($name,$value,%domains); |
} |
} |
} |
} |
|
|
sub multiple_select_form { |
sub multiple_select_form { |
my ($name,$value,%hash)=@_; |
my ($name,$value,$size,%hash)=@_; |
my %selected = map { $_ => 1 } ref($value)?@{$value}:($value); |
my %selected = map { $_ => 1 } ref($value)?@{$value}:($value); |
my $output=''; |
my $output=''; |
my $size =(scalar keys %hash<4?scalar keys %hash:4); |
if (! defined($size)) { |
|
$size = 4; |
|
if (scalar(keys(%hash))<4) { |
|
$size = scalar(keys(%hash)); |
|
} |
|
} |
$output.="\n<select name='$name' size='$size' multiple='1'>"; |
$output.="\n<select name='$name' size='$size' multiple='1'>"; |
foreach (sort keys %hash) { |
foreach (sort(keys(%hash))) { |
$output.="<option name='$_'". |
$output.='<option value="'.$_.'" '; |
($selected{$_}?' selected="1"' :'').">$hash{$_}</option>\n"; |
$output.='selected ' if ($selected{$_}); |
|
$output.='>'.$hash{$_}."</option>\n"; |
} |
} |
$output.="</select>\n"; |
$output.="</select>\n"; |
return $output; |
return $output; |
Line 1650 sub plainname {
|
Line 1742 sub plainname {
|
$names{'lastname'}.' '.$names{'generation'}; |
$names{'lastname'}.' '.$names{'generation'}; |
$name=~s/\s+$//; |
$name=~s/\s+$//; |
$name=~s/\s+/ /g; |
$name=~s/\s+/ /g; |
|
if ($name !~ /\S/) { $name=$uname.'@'.$udom; } |
return $name; |
return $name; |
} |
} |
|
|
Line 1707 sub screenname {
|
Line 1800 sub screenname {
|
# ------------------------------------------------------------- Message Wrapper |
# ------------------------------------------------------------- Message Wrapper |
|
|
sub messagewrapper { |
sub messagewrapper { |
my ($link,$un,$do)=@_; |
my ($link,$username,$domain)=@_; |
return |
return |
"<a href='/adm/email?compose=individual&recname=$un&recdom=$do'>$link</a>"; |
'<a href="/adm/email?compose=individual&'. |
|
'recname='.$username.'&recdom='.$domain.'" '. |
|
'title="'.&mt('Send message').'">'.$link.'</a>'; |
} |
} |
# --------------------------------------------------------------- Notes Wrapper |
# --------------------------------------------------------------- Notes Wrapper |
|
|
Line 1722 sub noteswrapper {
|
Line 1817 sub noteswrapper {
|
|
|
sub aboutmewrapper { |
sub aboutmewrapper { |
my ($link,$username,$domain,$target)=@_; |
my ($link,$username,$domain,$target)=@_; |
return "<a href='/adm/$domain/$username/aboutme'". |
return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'. |
($target?" target='$target'":'').">$link</a>"; |
($target?' target="$target"':'').' title="'.&mt('View this users personal page').'">'.$link.'</a>'; |
} |
} |
|
|
# ------------------------------------------------------------ Syllabus Wrapper |
# ------------------------------------------------------------ Syllabus Wrapper |
Line 1806 sub copyrightdescription {
|
Line 1901 sub copyrightdescription {
|
|
|
=pod |
=pod |
|
|
|
=item * source_copyrightids() |
|
|
|
returns list of all source copyrights |
|
|
|
=cut |
|
|
|
sub source_copyrightids { |
|
return sort(keys(%scprtag)); |
|
} |
|
|
|
=pod |
|
|
|
=item * source_copyrightdescription() |
|
|
|
returns description of a specified source copyright id |
|
|
|
=cut |
|
|
|
sub source_copyrightdescription { |
|
return &mt($scprtag{shift(@_)}); |
|
} |
|
|
|
=pod |
|
|
=item * filecategories() |
=item * filecategories() |
|
|
returns list of all file categories |
returns list of all file categories |
Line 1844 sub fileembstyle {
|
Line 1963 sub fileembstyle {
|
|
|
sub filecategoryselect { |
sub filecategoryselect { |
my ($name,$value)=@_; |
my ($name,$value)=@_; |
return &select_form($name,$value, |
return &select_form($value,$name, |
'' => &mt('Any category'), |
'' => &mt('Any category'), |
map { $_,$_ } sort(keys(%category_extensions))); |
map { $_,$_ } sort(keys(%category_extensions))); |
} |
} |
Line 1858 returns description for a specified file
|
Line 1977 returns description for a specified file
|
=cut |
=cut |
|
|
sub filedescription { |
sub filedescription { |
return &mt($fd{lc(shift(@_))}); |
my $file_description = $fd{lc(shift())}; |
|
$file_description =~ s:([\[\]]):~$1:g; |
|
return &mt($file_description); |
} |
} |
|
|
=pod |
=pod |
Line 1872 extra formatting
|
Line 1993 extra formatting
|
|
|
sub filedescriptionex { |
sub filedescriptionex { |
my $ex=shift; |
my $ex=shift; |
return '.'.$ex.' '.&mt($fd{lc($ex)}); |
my $file_description = $fd{lc($ex)}; |
|
$file_description =~ s:([\[\]]):~$1:g; |
|
return '.'.$ex.' '.&mt($file_description); |
} |
} |
|
|
# End of .tab access |
# End of .tab access |
Line 2093 show a snapshot of what student was look
|
Line 2216 show a snapshot of what student was look
|
=cut |
=cut |
|
|
sub get_student_view { |
sub get_student_view { |
my ($symb,$username,$domain,$courseid,$target) = @_; |
my ($symb,$username,$domain,$courseid,$target,$moreenv) = @_; |
my ($map,$id,$feedurl) = &Apache::lonnet::decode_symb($symb); |
my ($map,$id,$feedurl) = &Apache::lonnet::decode_symb($symb); |
my (%old,%moreenv); |
my (%form); |
my @elements=('symb','courseid','domain','username'); |
my @elements=('symb','courseid','domain','username'); |
foreach my $element (@elements) { |
foreach my $element (@elements) { |
$old{$element}=$ENV{'form.grade_'.$element}; |
$form{'grade_'.$element}=eval '$'.$element #' |
$moreenv{'form.grade_'.$element}=eval '$'.$element #' |
|
} |
} |
if ($target eq 'tex') {$moreenv{'form.grade_target'} = 'tex';} |
if (defined($moreenv)) { |
&Apache::lonnet::appenv(%moreenv); |
%form=(%form,%{$moreenv}); |
$feedurl=&Apache::lonnet::clutter($feedurl); |
|
my $userview=&Apache::lonnet::ssi_body($feedurl); |
|
&Apache::lonnet::delenv('form.grade_'); |
|
foreach my $element (@elements) { |
|
$ENV{'form.grade_'.$element}=$old{$element}; |
|
} |
} |
|
if ($target eq 'tex') {$form{'grade_target'} = 'tex';} |
|
$feedurl=&Apache::lonnet::clutter($feedurl); |
|
my $userview=&Apache::lonnet::ssi_body($feedurl,%form); |
$userview=~s/\<body[^\>]*\>//gi; |
$userview=~s/\<body[^\>]*\>//gi; |
$userview=~s/\<\/body\>//gi; |
$userview=~s/\<\/body\>//gi; |
$userview=~s/\<html\>//gi; |
$userview=~s/\<html\>//gi; |
Line 2131 show a snapshot of how student was answe
|
Line 2251 show a snapshot of how student was answe
|
sub get_student_answers { |
sub get_student_answers { |
my ($symb,$username,$domain,$courseid,%form) = @_; |
my ($symb,$username,$domain,$courseid,%form) = @_; |
my ($map,$id,$feedurl) = &Apache::lonnet::decode_symb($symb); |
my ($map,$id,$feedurl) = &Apache::lonnet::decode_symb($symb); |
my (%old,%moreenv); |
my (%moreenv); |
my @elements=('symb','courseid','domain','username'); |
my @elements=('symb','courseid','domain','username'); |
foreach my $element (@elements) { |
foreach my $element (@elements) { |
$old{$element}=$ENV{'form.grade_'.$element}; |
$moreenv{'grade_'.$element}=eval '$'.$element #' |
$moreenv{'form.grade_'.$element}=eval '$'.$element #' |
|
} |
|
$moreenv{'form.grade_target'}='answer'; |
|
&Apache::lonnet::appenv(%moreenv); |
|
my $userview=&Apache::lonnet::ssi('/res/'.$feedurl,%form); |
|
&Apache::lonnet::delenv('form.grade_'); |
|
foreach my $element (@elements) { |
|
$ENV{'form.grade_'.$element}=$old{$element}; |
|
} |
} |
|
$moreenv{'grade_target'}='answer'; |
|
%moreenv=(%form,%moreenv); |
|
my $userview=&Apache::lonnet::ssi('/res/'.$feedurl,%moreenv); |
return $userview; |
return $userview; |
} |
} |
|
|
Line 2359 other decorations will be returned.
|
Line 2474 other decorations will be returned.
|
sub bodytag { |
sub bodytag { |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg)=@_; |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg)=@_; |
$title=&mt($title); |
$title=&mt($title); |
unless ($function) { |
$function = &get_users_function() if (!$function); |
$function='student'; |
|
if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) { |
|
$function='coordinator'; |
|
} |
|
if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) { |
|
$function='admin'; |
|
} |
|
if (($ENV{'request.role'}=~/^(au|ca)/) || |
|
($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { |
|
$function='author'; |
|
} |
|
} |
|
my $img=&designparm($function.'.img',$domain); |
my $img=&designparm($function.'.img',$domain); |
my $pgbg=&designparm($function.'.pgbg',$domain); |
my $pgbg=&designparm($function.'.pgbg',$domain); |
my $tabbg=&designparm($function.'.tabbg',$domain); |
my $tabbg=&designparm($function.'.tabbg',$domain); |
Line 2420 END
|
Line 2523 END
|
'<h1>LON-CAPA: '.$title.'</h1>'; |
'<h1>LON-CAPA: '.$title.'</h1>'; |
} elsif ($ENV{'environment.remote'} eq 'off') { |
} elsif ($ENV{'environment.remote'} eq 'off') { |
# No Remote |
# No Remote |
|
my $roleinfo=(<<ENDROLE); |
|
<td bgcolor="$tabbg" align="right"> |
|
<p> |
|
<font size="2" face="Arial, Helvetica, sans-serif"> |
|
$ENV{'environment.firstname'} |
|
$ENV{'environment.middlename'} |
|
$ENV{'environment.lastname'} |
|
$ENV{'environment.generation'} |
|
</font> |
|
<br /> |
|
<font size="2" face="Arial, Helvetica, sans-serif">$role</font> |
|
<br /> |
|
<font size="2" face="Arial, Helvetica, sans-serif">$realm</font> |
|
</p> |
|
</td> |
|
ENDROLE |
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 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.'"><font face="Arial, Helvetica, sans-serif" size="+3" color="'.$font.'"><b>'.$title. |
'</b></font></td></tr></table>'; |
'</b></font></td>'.$roleinfo.'</tr></table>'; |
} |
} |
|
|
# |
# |
Line 2453 $upperleft</td>
|
Line 2572 $upperleft</td>
|
</td></tr> |
</td></tr> |
<tr> |
<tr> |
<td bgcolor="$tabbg" align="right"><font size="2" face="Arial, Helvetica, sans-serif">$realm</font> </td></tr> |
<td bgcolor="$tabbg" align="right"><font size="2" face="Arial, Helvetica, sans-serif">$realm</font> </td></tr> |
</table><br> |
</table><br /> |
ENDBODY |
ENDBODY |
} |
} |
|
|
############################################### |
############################################### |
|
|
|
=pod |
|
|
|
=item get_users_function |
|
|
|
Used by &bodytag to determine the current users primary role. |
|
Returns either 'student','coordinator','admin', or 'author'. |
|
|
|
=cut |
|
|
|
############################################### |
|
sub get_users_function { |
|
my $function = 'student'; |
|
if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) { |
|
$function='coordinator'; |
|
} |
|
if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) { |
|
$function='admin'; |
|
} |
|
if (($ENV{'request.role'}=~/^(au|ca)/) || |
|
($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { |
|
$function='author'; |
|
} |
|
return $function; |
|
} |
|
|
|
############################################### |
|
|
sub get_posted_cgi { |
sub get_posted_cgi { |
my $r=shift; |
my $r=shift; |
|
|
Line 2593 sub no_cache {
|
Line 2739 sub no_cache {
|
} |
} |
|
|
sub content_type { |
sub content_type { |
my ($r,$type,$charset) = @_; |
my ($r,$type,$charset) = @_; |
unless ($charset) { |
unless ($charset) { |
$charset=&Apache::lonlocal::current_encoding; |
$charset=&Apache::lonlocal::current_encoding; |
} |
} |
$r->content_type($type.($charset?'; charset='.$charset:'')); |
if ($charset) { $type.='; charset='.$charset; } |
|
if ($r) { |
|
$r->content_type($type); |
|
} else { |
|
print("Content-type: $type\n\n"); |
|
} |
} |
} |
|
|
=pod |
=pod |
Line 3178 plotted in. If undefined, default value
|
Line 3329 plotted in. If undefined, default value
|
=item $Xlabels: Array ref containing the labels to be used for the X-axis. |
=item $Xlabels: Array ref containing the labels to be used for the X-axis. |
|
|
=item $Ydata: Array ref containing Array refs. |
=item $Ydata: Array ref containing Array refs. |
Each of the contained arrays will be plotted as a seperate curve. |
Each of the contained arrays will be plotted as a separate curve. |
|
|
=item %Values: hash indicating or overriding any default values which are |
=item %Values: hash indicating or overriding any default values which are |
passed to graph.png. |
passed to graph.png. |