version 1.298, 2005/11/22 00:01:41
|
version 1.308, 2006/03/16 21:14:30
|
Line 331 sub storeresurl {
|
Line 331 sub storeresurl {
|
sub studentbrowser_javascript { |
sub studentbrowser_javascript { |
unless ( |
unless ( |
(($env{'request.course.id'}) && |
(($env{'request.course.id'}) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'}) |
|
)) |
|| ($env{'request.role'}=~/^(au|dc|su)/) |
|| ($env{'request.role'}=~/^(au|dc|su)/) |
) { return ''; } |
) { return ''; } |
return (<<'ENDSTDBRW'); |
return (<<'ENDSTDBRW'); |
Line 362 ENDSTDBRW
|
Line 365 ENDSTDBRW
|
sub selectstudent_link { |
sub selectstudent_link { |
my ($form,$unameele,$udomele)=@_; |
my ($form,$unameele,$udomele)=@_; |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) { |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
&& !&Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})) { |
return ''; |
return ''; |
} |
} |
return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele. |
return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele. |
Line 2782 table.thinborder { border-collapse: coll
|
Line 2787 table.thinborder { border-collapse: coll
|
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
form, .inline { display: inline; } |
form, .inline { display: inline; } |
.center { text-align: center; } |
.center { text-align: center; } |
|
.filename {font-family: monospace;} |
</style> |
</style> |
<body bgcolor="$pgbg" text="$font" alink="$alink" vlink="$vlink" link="$link" |
<body bgcolor="$pgbg" text="$font" alink="$alink" vlink="$vlink" link="$link" |
style="margin-top: 0px;$addstyle" $addentries> |
style="margin-top: 0px;$addstyle" $addentries> |
Line 2887 ENDROLE
|
Line 2893 ENDROLE
|
$dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; |
$dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; |
$dc_info = '('.$dc_info.')'; |
$dc_info = '('.$dc_info.')'; |
} |
} |
|
# Explicit link to get inline menu |
|
my $menu='<br /><font size="2" face="Arial, Helvetica, sans-serif"> <a href="/adm/remote?action=collapse">'.&mt('Switch to Inline Menu Mode').'</a></font>'; |
# |
# |
return(<<ENDBODY); |
return(<<ENDBODY); |
$bodytag |
$bodytag |
Line 2897 $upperleft</td>
|
Line 2905 $upperleft</td>
|
</tr> |
</tr> |
<tr> |
<tr> |
<td rowspan="3" bgcolor="$tabbg"> |
<td rowspan="3" bgcolor="$tabbg"> |
$titleinfo $dc_info |
$titleinfo $dc_info $menu |
</td><td bgcolor="$tabbg" align="right"> |
</td><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 2923 ENDBODY
|
Line 2931 ENDBODY
|
|
|
=back |
=back |
|
|
=head1 HTTP Helpers |
=head1 HTML Helpers |
|
|
=over 4 |
=over 4 |
|
|
Line 2931 ENDBODY
|
Line 2939 ENDBODY
|
|
|
Returns a uniform footer for LON-CAPA web pages. |
Returns a uniform footer for LON-CAPA web pages. |
|
|
Inputs: |
Inputs: none |
|
|
=over 4 |
|
|
|
=back |
=back |
|
|
Returns: A uniform footer for LON-CAPA web pages. |
|
|
|
=cut |
=cut |
|
|
sub endbodytag { |
sub endbodytag { |
Line 2947 sub endbodytag {
|
Line 2951 sub endbodytag {
|
return $endbodytag; |
return $endbodytag; |
} |
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * &headtag() |
|
|
|
Returns a uniform footer for LON-CAPA web pages. |
|
|
|
Inputs: $title - optional title for the head |
|
$head_extra - optional extra HTML to put inside the <head> |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub headtag { |
|
my ($title,$head_extra) = @_; |
|
|
|
my $result = |
|
'<head>'. |
|
&Apache::lonxml::fontsettings(). |
|
&Apache::lonhtmlcommon::htmlareaheaders(); |
|
|
|
if (!defined($title)) { |
|
$title = 'The LearningOnline Network with CAPA'; |
|
} |
|
|
|
$result .= '<title>'.&mt($title).'</title>'.$head_extra; |
|
|
|
return $result; |
|
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * &endheadtag() |
|
|
|
Returns a uniform </head> for LON-CAPA web pages. |
|
|
|
Inputs: none |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub endheadtag { |
|
return '</head>'; |
|
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * &head() |
|
|
|
Returns a uniform complete <head>..</head> section for LON-CAPA web pages. |
|
|
|
Inputs: $title - optional title for the page |
|
$head_extra - optional extra HTML to put inside the <head> |
|
=back |
|
|
|
=cut |
|
|
|
sub head { |
|
my ($title,$head_extra) = @_; |
|
return &headtag($title,$head_extra).&endheadtag(); |
|
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * &start_page() |
|
|
|
Returns a complete <html> .. <body> section for LON-CAPA web pages. |
|
|
|
Inputs: $title - optional title for the page |
|
$head_extra - optional extra HTML to incude inside the <head> |
|
%args - additional optional args supported are: |
|
onlybody -> is true will set &bodytag() onlybodytag arg on |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub start_page { |
|
my ($title,$head_extra,%args) = @_; |
|
return |
|
&Apache::lonxml::xmlbegin(). |
|
&headtag($title,$head_extra).&endheadtag(). |
|
&bodytag($title,undef,undef,$args{'onlybody'}); |
|
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * &head() |
|
|
|
Returns a complete </body></html> section for LON-CAPA web pages. |
|
|
|
Inputs: None |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub end_page { |
|
return &endbodytag."\n</html>"; |
|
} |
############################################### |
############################################### |
|
|
=pod |
=pod |
|
|
|
=over 4 |
|
|
=item get_users_function |
=item get_users_function |
|
|
Used by &bodytag to determine the current users primary role. |
Used by &bodytag to determine the current users primary role. |
Line 3165 times for group members.
|
Line 3282 times for group members.
|
Outer hash key is functions. |
Outer hash key is functions. |
Inner hash keys are chat,discussion,email,files,homepage,roster. |
Inner hash keys are chat,discussion,email,files,homepage,roster. |
Corresponding values are either on or off, depending on |
Corresponding values are either on or off, depending on |
whther this type of functionality is available for the group. |
whether this type of functionality is available for the group. |
|
|
=cut |
=cut |
|
|
Line 3176 sub get_group_settings {
|
Line 3293 sub get_group_settings {
|
my $parser=HTML::TokeParser->new(\$groupinfo); |
my $parser=HTML::TokeParser->new(\$groupinfo); |
my $token; |
my $token; |
my $tool = ''; |
my $tool = ''; |
|
my $role = ''; |
my %content=(); |
my %content=(); |
while ($token=$parser->get_token) { |
while ($token=$parser->get_token) { |
if ($token->[0] eq 'S') { |
if ($token->[0] eq 'S') { |
my $entry=$token->[1]; |
my $entry=$token->[1]; |
if ($entry eq 'functions') { |
if ($entry eq 'functions' || $entry eq 'autosec') { |
%{$content{$entry}} = (); |
%{$content{$entry}} = (); |
$tool = $entry; |
$tool = $entry; |
|
} elsif ($entry eq 'role') { |
|
if ($tool eq 'autosec') { |
|
$role = $token->[2]{id}; |
|
} |
} else { |
} else { |
my $value=$parser->get_text('/'.$entry); |
my $value=$parser->get_text('/'.$entry); |
if ($entry eq 'name') { |
if ($entry eq 'name') { |
Line 3192 sub get_group_settings {
|
Line 3314 sub get_group_settings {
|
} |
} |
} elsif ($entry eq 'groupname') { |
} elsif ($entry eq 'groupname') { |
$content{$entry}=&Apache::lonnet::unescape($value); |
$content{$entry}=&Apache::lonnet::unescape($value); |
|
} elsif (($entry eq 'roles') || ($entry eq 'types') || |
|
($entry eq 'sectionpick') || ($entry eq 'defpriv')) { |
|
push(@{$content{$entry}},$value); |
|
} elsif ($entry eq 'section') { |
|
if ($tool eq 'autosec' && $role ne '') { |
|
push(@{$content{$tool}{$role}},$value); |
|
} |
} else { |
} else { |
$content{$entry}=$value; |
$content{$entry}=$value; |
} |
} |
} |
} |
} elsif ($token->[0] eq 'E') { |
} elsif ($token->[0] eq 'E') { |
if ($token->[1] eq 'functions') { |
if ($token->[1] eq 'functions' || $token->[1] eq 'autosec') { |
$tool = ''; |
$tool = ''; |
|
} elsif ($token->[1] eq 'role') { |
|
$role = ''; |
} |
} |
|
|
} |
} |
} |
} |
return %content; |
return %content; |
Line 3486 sub no_cache {
|
Line 3618 sub no_cache {
|
|
|
sub content_type { |
sub content_type { |
my ($r,$type,$charset) = @_; |
my ($r,$type,$charset) = @_; |
&no_cache($r); |
if ($r) { |
|
# Note that printout.pl calls this with undef for $r. |
|
&no_cache($r); |
|
} |
if ($env{'browser.mathml'} && $type eq 'text/html') { $type='text/xml'; } |
if ($env{'browser.mathml'} && $type eq 'text/html') { $type='text/xml'; } |
unless ($charset) { |
unless ($charset) { |
$charset=&Apache::lonlocal::current_encoding; |
$charset=&Apache::lonlocal::current_encoding; |
Line 3721 sub upfile_select_html {
|
Line 3856 sub upfile_select_html {
|
return $Str; |
return $Str; |
} |
} |
|
|
|
sub get_samples { |
|
my ($records,$toget) = @_; |
|
my @samples=({}); |
|
my $got=0; |
|
foreach my $rec (@$records) { |
|
my %temp = &record_sep($rec); |
|
if (! grep(/\S/, values(%temp))) { next; } |
|
if (%temp) { |
|
$samples[$got]=\%temp; |
|
$got++; |
|
if ($got == $toget) { last; } |
|
} |
|
} |
|
return \@samples; |
|
} |
|
|
###################################################### |
###################################################### |
###################################################### |
###################################################### |
|
|
Line 3738 Apache Request ref, $records is an array
|
Line 3889 Apache Request ref, $records is an array
|
###################################################### |
###################################################### |
sub csv_print_samples { |
sub csv_print_samples { |
my ($r,$records) = @_; |
my ($r,$records) = @_; |
my (%sone,%stwo,%sthree); |
my $samples = &get_samples($records,3); |
%sone=&record_sep($$records[0]); |
|
if (defined($$records[1])) {%stwo=&record_sep($$records[1]);} |
|
if (defined($$records[2])) {%sthree=&record_sep($$records[2]);} |
|
# |
|
$r->print(&mt('Samples').'<br /><table border="2"><tr>'); |
$r->print(&mt('Samples').'<br /><table border="2"><tr>'); |
foreach (sort({$a <=> $b} keys(%sone))) { |
foreach (sort({$a <=> $b} keys(%{ $samples->[0] }))) { |
$r->print('<th>'.&mt('Column [_1]',($_+1)).'</th>'); } |
$r->print('<th>'.&mt('Column [_1]',($_+1)).'</th>'); } |
$r->print('</tr>'); |
$r->print('</tr>'); |
foreach my $hash (\%sone,\%stwo,\%sthree) { |
foreach my $hash (@$samples) { |
$r->print('<tr>'); |
$r->print('<tr>'); |
foreach (sort({$a <=> $b} keys(%sone))) { |
foreach (sort({$a <=> $b} keys(%{ $samples->[0] }))) { |
$r->print('<td>'); |
$r->print('<td>'); |
if (defined($$hash{$_})) { $r->print($$hash{$_}); } |
if (defined($$hash{$_})) { $r->print($$hash{$_}); } |
$r->print('</td>'); |
$r->print('</td>'); |
Line 3778 $d is an array of 2 element arrays (inte
|
Line 3926 $d is an array of 2 element arrays (inte
|
###################################################### |
###################################################### |
sub csv_print_select_table { |
sub csv_print_select_table { |
my ($r,$records,$d) = @_; |
my ($r,$records,$d) = @_; |
my $i=0;my %sone; |
my $i=0; |
%sone=&record_sep($$records[0]); |
my $samples = &get_samples($records,1); |
$r->print(&mt('Associate columns with student attributes.')."\n". |
$r->print(&mt('Associate columns with student attributes.')."\n". |
'<table border="2"><tr>'. |
'<table border="2"><tr>'. |
'<th>'.&mt('Attribute').'</th>'. |
'<th>'.&mt('Attribute').'</th>'. |
Line 3791 sub csv_print_select_table {
|
Line 3939 sub csv_print_select_table {
|
$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(%{ $samples->[0] }))) { |
$r->print('<option value="'.$_.'"'. |
$r->print('<option value="'.$_.'"'. |
($_ eq $defaultcol ? ' selected="selected" ' : ''). |
($_ eq $defaultcol ? ' selected="selected" ' : ''). |
'>Column '.($_+1).'</option>'); |
'>Column '.($_+1).'</option>'); |
Line 3822 $d is an array of 2 element arrays (inte
|
Line 3970 $d is an array of 2 element arrays (inte
|
###################################################### |
###################################################### |
sub csv_samples_select_table { |
sub csv_samples_select_table { |
my ($r,$records,$d) = @_; |
my ($r,$records,$d) = @_; |
my %sone; my %stwo; my %sthree; |
|
my $i=0; |
my $i=0; |
# |
# |
|
my $samples = &get_samples($records,3); |
$r->print('<table border=2><tr><th>'. |
$r->print('<table border=2><tr><th>'. |
&mt('Field').'</th><th>'.&mt('Samples').'</th></tr>'); |
&mt('Field').'</th><th>'.&mt('Samples').'</th></tr>'); |
%sone=&record_sep($$records[0]); |
|
if (defined($$records[1])) {%stwo=&record_sep($$records[1]);} |
foreach my $key (sort(keys(%{ $samples->[0] }))) { |
if (defined($$records[2])) {%sthree=&record_sep($$records[2]);} |
|
# |
|
foreach (sort keys %sone) { |
|
$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 my $option (@$d) { |
my ($value,$display,$defaultcol)=@{ $_ }; |
my ($value,$display,$defaultcol)=@{ $option }; |
$r->print('<option value="'.$value.'"'. |
$r->print('<option value="'.$value.'"'. |
($i eq $defaultcol ? ' selected="selected" ':'').'>'. |
($i eq $defaultcol ? ' selected="selected" ':'').'>'. |
$display.'</option>'); |
$display.'</option>'); |
} |
} |
$r->print('</select></td><td>'); |
$r->print('</select></td><td>'); |
if (defined($sone{$_})) { $r->print($sone{$_}."<br />\n"); } |
foreach my $line (0..2) { |
if (defined($stwo{$_})) { $r->print($stwo{$_}."<br />\n"); } |
if (defined($samples->[$line]{$key})) { |
if (defined($sthree{$_})) { $r->print($sthree{$_}."<br />\n"); } |
$r->print($samples->[$line]{$key}."<br />\n"); |
|
} |
|
} |
$r->print('</td></tr>'); |
$r->print('</td></tr>'); |
$i++; |
$i++; |
} |
} |
Line 4352 sub store_course_settings {
|
Line 4499 sub store_course_settings {
|
# save to the environment |
# save to the environment |
# appenv the same items, just to be safe |
# appenv the same items, just to be safe |
my $courseid = $env{'request.course.id'}; |
my $courseid = $env{'request.course.id'}; |
my $coursedom = $env{'course.'.$courseid.'.domain'}; |
my $udom = $env{'user.domain'}; |
|
my $uname = $env{'user.name'}; |
my ($prefix,$Settings) = @_; |
my ($prefix,$Settings) = @_; |
my %SaveHash; |
my %SaveHash; |
my %AppHash; |
my %AppHash; |
while (my ($setting,$type) = each(%$Settings)) { |
while (my ($setting,$type) = each(%$Settings)) { |
my $basename = 'internal.'.$prefix.'.'.$setting; |
my $basename = join('.','internal',$courseid,$prefix,$setting); |
my $envname = 'course.'.$courseid.'.'.$basename; |
my $envname = 'environment.'.$basename; |
if (exists($env{'form.'.$setting})) { |
if (exists($env{'form.'.$setting})) { |
# Save this value away |
# Save this value away |
if ($type eq 'scalar' && |
if ($type eq 'scalar' && |
Line 4386 sub store_course_settings {
|
Line 4534 sub store_course_settings {
|
} |
} |
} |
} |
my $put_result = &Apache::lonnet::put('environment',\%SaveHash, |
my $put_result = &Apache::lonnet::put('environment',\%SaveHash, |
$coursedom, |
$udom,$uname); |
$env{'course.'.$courseid.'.num'}); |
|
if ($put_result !~ /^(ok|delayed)/) { |
if ($put_result !~ /^(ok|delayed)/) { |
&Apache::lonnet::logthis('unable to save form parameters, '. |
&Apache::lonnet::logthis('unable to save form parameters, '. |
'got error:'.$put_result); |
'got error:'.$put_result); |
Line 4402 sub restore_course_settings {
|
Line 4549 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.'.internal.'.$prefix. |
my $envname = 'environment.internal.'.$courseid.'.'.$prefix. |
'.'.$setting; |
'.'.$setting; |
if (exists($env{$envname})) { |
if (exists($env{$envname})) { |
if ($type eq 'scalar') { |
if ($type eq 'scalar') { |