version 1.173, 2004/01/15 18:12:59
|
version 1.186, 2004/03/15 22:32:37
|
Line 220 formname and elementname indicate the na
|
Line 220 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 592 sub help_open_topic {
|
Line 592 sub help_open_topic {
|
} |
} |
|
|
# Add the graphic |
# Add the graphic |
|
my $title = &mt('Online Help'); |
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<a href="$link"><image src="/adm/help/gif/smallHelp.gif" border="0" alt="(Help: $topic)" /></a> |
<a href="$link" title="$title"><image src="/adm/help/gif/smallHelp.gif" border="0" alt="(Help: $topic)" /></a> |
ENDTEMPLATE |
ENDTEMPLATE |
if ($text ne '') { $template.='</td></tr></table>' }; |
if ($text ne '') { $template.='</td></tr></table>' }; |
return $template; |
return $template; |
Line 630 sub help_open_bug {
|
Line 631 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 646 sub help_open_bug {
|
Line 647 sub help_open_bug {
|
{ |
{ |
$link = $url; |
$link = $url; |
} |
} |
|
|
# Add the text |
# Add the text |
if ($text ne "") |
if ($text ne "") |
{ |
{ |
Line 656 sub help_open_bug {
|
Line 656 sub help_open_bug {
|
} |
} |
|
|
# Add the graphic |
# Add the graphic |
|
my $title = &mt('Report a Bug'); |
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<a href="$link"><image src="/adm/lonMisc/smallBug.gif" border="0" alt="(Bug: $topic)" /></a> |
<a href="$link" title="$title"><image src="/adm/lonMisc/smallBug.gif" border="0" alt="(Bug: $topic)" /></a> |
ENDTEMPLATE |
ENDTEMPLATE |
if ($text ne '') { $template.='</td></tr></table>' }; |
if ($text ne '') { $template.='</td></tr></table>' }; |
return $template; |
return $template; |
Line 699 sub help_open_faq {
|
Line 700 sub help_open_faq {
|
} |
} |
|
|
# Add the graphic |
# Add the graphic |
|
my $title = &mt('View the FAQ'); |
$template .= <<"ENDTEMPLATE"; |
$template .= <<"ENDTEMPLATE"; |
<a href="$link"><image src="/adm/lonMisc/smallFAQ.gif" border="0" alt="(FAQ: $topic)" /></a> |
<a href="$link" title="$title"><image src="/adm/lonMisc/smallFAQ.gif" border="0" alt="(FAQ: $topic)" /></a> |
ENDTEMPLATE |
ENDTEMPLATE |
if ($text ne '') { $template.='</td></tr></table>' }; |
if ($text ne '') { $template.='</td></tr></table>' }; |
return $template; |
return $template; |
|
|
} |
} |
|
|
|
############################################################### |
|
############################################################### |
|
|
=pod |
=pod |
|
|
=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 |
|
|
|
############################################################### |
|
############################################################### |
sub csv_translate { |
sub csv_translate { |
my $text = shift; |
my $text = shift; |
$text =~ s/\"/\"\"/g; |
$text =~ s/\"/\"\"/g; |
Line 723 sub csv_translate {
|
Line 730 sub csv_translate {
|
return $text; |
return $text; |
} |
} |
|
|
|
|
|
############################################################### |
|
############################################################### |
|
|
|
=pod |
|
|
|
=item * define_excel_formats |
|
|
|
Define some commonly used Excel cell formats. |
|
|
|
Currently supported formats: |
|
|
|
=over 4 |
|
|
|
=item header |
|
|
|
=item bold |
|
|
|
=item h1 |
|
|
|
=item h2 |
|
|
|
=item h3 |
|
|
|
=item date |
|
|
|
=back |
|
|
|
Inputs: $workbook |
|
|
|
Returns: $format, a hash reference. |
|
|
|
=cut |
|
|
|
############################################################### |
|
############################################################### |
|
sub define_excel_formats { |
|
my ($workbook) = @_; |
|
my $format; |
|
$format->{'header'} = $workbook->add_format(bold => 1, |
|
bottom => 1, |
|
align => 'center'); |
|
$format->{'bold'} = $workbook->add_format(bold=>1); |
|
$format->{'h1'} = $workbook->add_format(bold=>1, size=>18); |
|
$format->{'h2'} = $workbook->add_format(bold=>1, size=>16); |
|
$format->{'h3'} = $workbook->add_format(bold=>1, size=>14); |
|
$format->{'date'} = $workbook->add_format(num_format=> |
|
'mmm d yyyy hh:mm AM/PM'); |
|
return $format; |
|
} |
|
|
|
############################################################### |
|
############################################################### |
|
|
=pod |
=pod |
|
|
=item * change_content_javascript(): |
=item * change_content_javascript(): |
Line 1158 END
|
Line 1219 END
|
} |
} |
|
|
my $radioval = "'nochange'"; |
my $radioval = "'nochange'"; |
|
if (exists($in{'curr_authtype'}) && |
|
defined($in{'curr_authtype'}) && |
|
$in{'curr_authtype'} ne '') { |
|
$radioval = "'$in{'curr_authtype'}arg'"; |
|
} |
my $argfield = 'null'; |
my $argfield = 'null'; |
if ( grep/^mode$/,(keys %in) ) { |
if ( grep/^mode$/,(keys %in) ) { |
if ($in{'mode'} eq 'modifycourse') { |
if ($in{'mode'} eq 'modifycourse') { |
Line 1841 sub display_languages {
|
Line 1907 sub display_languages {
|
|
|
sub preferred_languages { |
sub preferred_languages { |
my @languages=(); |
my @languages=(); |
if ($ENV{'environment.languages'}) { |
|
@languages=split(/\s*(\,|\;|\:)\s*/,$ENV{'environment.languages'}); |
|
} |
|
if ($ENV{'course.'.$ENV{'request.course.id'}.'.languages'}) { |
if ($ENV{'course.'.$ENV{'request.course.id'}.'.languages'}) { |
@languages=(@languages,split(/\s*(\,|\;|\:)\s*/, |
@languages=(@languages,split(/\s*(\,|\;|\:)\s*/, |
$ENV{'course.'.$ENV{'request.course.id'}.'.languages'})); |
$ENV{'course.'.$ENV{'request.course.id'}.'.languages'})); |
} |
} |
|
if ($ENV{'environment.languages'}) { |
|
@languages=split(/\s*(\,|\;|\:)\s*/,$ENV{'environment.languages'}); |
|
} |
my $browser=(split(/\;/,$ENV{'HTTP_ACCEPT_LANGUAGE'}))[0]; |
my $browser=(split(/\;/,$ENV{'HTTP_ACCEPT_LANGUAGE'}))[0]; |
if ($browser) { |
if ($browser) { |
@languages=(@languages,split(/\s*(\,|\;|\:)\s*/,$browser)); |
@languages=(@languages,split(/\s*(\,|\;|\:)\s*/,$browser)); |
Line 2027 show a snapshot of what student was look
|
Line 2093 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 2065 show a snapshot of how student was answe
|
Line 2128 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 2293 other decorations will be returned.
|
Line 2351 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 2393 ENDBODY
|
Line 2439 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 2527 sub no_cache {
|
Line 2600 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 2795 Prints a table to create associations be
|
Line 2873 Prints a table to create associations be
|
|
|
$r is an Apache Request ref, |
$r is an Apache Request ref, |
$records is an arrayref from &Apache::loncommon::upfile_record_sep, |
$records is an arrayref from &Apache::loncommon::upfile_record_sep, |
$d is an array of 2 element arrays (internal name, displayed name) |
$d is an array of 2 element arrays (internal name, displayed name,defaultcol) |
|
|
=cut |
=cut |
|
|
Line 2810 sub csv_print_select_table {
|
Line 2888 sub csv_print_select_table {
|
'<th>'.&mt('Attribute').'</th>'. |
'<th>'.&mt('Attribute').'</th>'. |
'<th>'.&mt('Column').'</th></tr>'."\n"); |
'<th>'.&mt('Column').'</th></tr>'."\n"); |
foreach (@$d) { |
foreach (@$d) { |
my ($value,$display)=@{ $_ }; |
my ($value,$display,$defaultcol)=@{ $_ }; |
$r->print('<tr><td>'.$display.'</td>'); |
$r->print('<tr><td>'.$display.'</td>'); |
|
|
$r->print('<td><select name=f'.$i. |
$r->print('<td><select name=f'.$i. |
' onchange="javascript:flip(this.form,'.$i.');">'); |
' onchange="javascript:flip(this.form,'.$i.');">'); |
$r->print('<option value="none"></option>'); |
$r->print('<option value="none"></option>'); |
foreach (sort({$a <=> $b} keys(%sone))) { |
foreach (sort({$a <=> $b} keys(%sone))) { |
$r->print('<option value="'.$_.'">Column '.($_+1).'</option>'); |
$r->print('<option value="'.$_.'"'. |
|
($_ eq $defaultcol ? ' selected ' : ''). |
|
'>Column '.($_+1).'</option>'); |
} |
} |
$r->print('</select></td></tr>'."\n"); |
$r->print('</select></td></tr>'."\n"); |
$i++; |
$i++; |
Line 2858 sub csv_samples_select_table {
|
Line 2938 sub csv_samples_select_table {
|
$r->print('<tr><td><select name="f'.$i.'"'. |
$r->print('<tr><td><select name="f'.$i.'"'. |
' onchange="javascript:flip(this.form,'.$i.');">'); |
' onchange="javascript:flip(this.form,'.$i.');">'); |
foreach (@$d) { |
foreach (@$d) { |
my ($value,$display)=@{ $_ }; |
my ($value,$display,$defaultcol)=@{ $_ }; |
$r->print('<option value="'.$value.'">'.$display.'</option>'); |
$r->print('<option value="'.$value.'"'. |
|
($i eq $defaultcol ? ' selected ':'').'>'. |
|
$display.'</option>'); |
} |
} |
$r->print('</select></td><td>'); |
$r->print('</select></td><td>'); |
if (defined($sone{$_})) { $r->print($sone{$_}."</br>\n"); } |
if (defined($sone{$_})) { $r->print($sone{$_}."</br>\n"); } |
Line 2984 If $Max is < any data point, the graph w
|
Line 3066 If $Max is < any data point, the graph w
|
=item $colors: array ref holding the colors to be used for the data sets when |
=item $colors: array ref holding the colors to be used for the data sets when |
they are plotted. If undefined, default values will be used. |
they are plotted. If undefined, default values will be used. |
|
|
|
=item $labels: array ref holding the labels to use on the x-axis for the bars. |
|
|
=item @Values: An array of array references. Each array reference holds data |
=item @Values: An array of array references. Each array reference holds data |
to be plotted in a stacked bar chart. |
to be plotted in a stacked bar chart. |
|
|
Line 2999 information for the plot.
|
Line 3083 information for the plot.
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
sub DrawBarGraph { |
sub DrawBarGraph { |
my ($Title,$xlabel,$ylabel,$Max,$colors,@Values)=@_; |
my ($Title,$xlabel,$ylabel,$Max,$colors,$labels,@Values)=@_; |
# |
# |
if (! defined($colors)) { |
if (! defined($colors)) { |
$colors = ['#33ff00', |
$colors = ['#33ff00', |
Line 3042 sub DrawBarGraph {
|
Line 3126 sub DrawBarGraph {
|
} |
} |
# |
# |
my @Labels; |
my @Labels; |
for (my $i=0;$i<@{$Values[0]};$i++) { |
if (defined($labels)) { |
push (@Labels,$i+1); |
@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); |
Line 3102 plotted in. If undefined, default value
|
Line 3190 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. |
Line 3350 sub store_course_settings {
|
Line 3438 sub store_course_settings {
|
my %SaveHash; |
my %SaveHash; |
my %AppHash; |
my %AppHash; |
while (my ($setting,$type) = each(%$Settings)) { |
while (my ($setting,$type) = each(%$Settings)) { |
my $basename = 'env.internal.'.$prefix.'.'.$setting; |
my $basename = 'internal.'.$prefix.'.'.$setting; |
my $envname = 'course.'.$courseid.'.'.$basename; |
my $envname = 'course.'.$courseid.'.'.$basename; |
if (exists($ENV{'form.'.$setting})) { |
if (exists($ENV{'form.'.$setting})) { |
# Save this value away |
# Save this value away |
Line 3395 sub restore_course_settings {
|
Line 3483 sub restore_course_settings {
|
my ($prefix,$Settings) = @_; |
my ($prefix,$Settings) = @_; |
while (my ($setting,$type) = each(%$Settings)) { |
while (my ($setting,$type) = each(%$Settings)) { |
next if (exists($ENV{'form.'.$setting})); |
next if (exists($ENV{'form.'.$setting})); |
my $envname = 'course.'.$courseid.'.env.internal.'.$prefix. |
my $envname = 'course.'.$courseid.'.internal.'.$prefix. |
'.'.$setting; |
'.'.$setting; |
if (exists($ENV{$envname})) { |
if (exists($ENV{$envname})) { |
if ($type eq 'scalar') { |
if ($type eq 'scalar') { |