version 1.16, 2005/06/30 17:56:28
|
version 1.20, 2006/05/30 12:46:09
|
Line 48 use Apache::lonmysql;
|
Line 48 use Apache::lonmysql;
|
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Time::HiRes; |
use Time::HiRes; |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
|
my $num_records=500; |
my $num_records=500; |
|
|
Line 63 sub get_data {
|
Line 65 sub get_data {
|
# |
# |
my $max_time = &get_max_time_in_db($r,$prog_state); |
my $max_time = &get_max_time_in_db($r,$prog_state); |
if (defined($max_time)) { |
if (defined($max_time)) { |
$r->print('<h3>'.&mt('Activity data goes to [_1]', |
$r->print('<h3>'.&mt('Activity data compiled up to [_1]', |
&Apache::lonlocal::locallocaltime($max_time)). |
&Apache::lonlocal::locallocaltime($max_time)). |
'</h3>'); |
'</h3>'.&mt('While data is processed, periodically reload this page for more recent activity').'<br />'); |
$r->rflush(); |
$r->rflush(); |
} else { |
} else { |
$r->print('<h3>'.&mt('Unable to retrieve any data. Please reload this page and try again.').'</h3>'); |
$r->print('<h3>'.&mt('Unable to retrieve any data. Please reload this page and try again.').'</h3>'); |
Line 183 sub get_max_time_in_db {
|
Line 185 sub get_max_time_in_db {
|
my $timestr = ''; |
my $timestr = ''; |
while (my $line = <TIMEDATA>) { |
while (my $line = <TIMEDATA>) { |
chomp($line); |
chomp($line); |
$timestr = &Apache::lonnet::unescape($line); |
$timestr = &unescape($line); |
} |
} |
close(TIMEDATA); |
close(TIMEDATA); |
return &Apache::lonmysql::unsqltime($timestr); |
return &Apache::lonmysql::unsqltime($timestr); |
Line 236 sub output_results {
|
Line 238 sub output_results {
|
## |
## |
if (! -s $results_file) { |
if (! -s $results_file) { |
# results file is empty, just let them know there is no data |
# results file is empty, just let them know there is no data |
$r->print('<h2>'.&mt('No data was returned for your request').'</h2>'); |
$r->print('<h2>'.&mt('So far, no data has been returned for your request').'</h2>'); |
return; |
return; |
} |
} |
if (! open(ACTIVITYDATA,$results_file)) { |
if (! open(ACTIVITYDATA,$results_file)) { |
Line 278 sub output_results {
|
Line 280 sub output_results {
|
while (my $line = <ACTIVITYDATA>) { |
while (my $line = <ACTIVITYDATA>) { |
# FIXME: does not pass symbs along :( |
# FIXME: does not pass symbs along :( |
chomp($line); |
chomp($line); |
$line = &Apache::lonnet::unescape($line); |
$line = &unescape($line); |
if (++$count % 50 == 0) { |
if (++$count % 50 == 0) { |
if ($count != 0) { |
if ($count != 0) { |
$r->print('</table>'.$/); |
$r->print('</table>'.$/); |
Line 293 sub output_results {
|
Line 295 sub output_results {
|
($symb,$timestamp,$action,$machine,$values) = split(',',$line,5); |
($symb,$timestamp,$action,$machine,$values) = split(',',$line,5); |
} |
} |
foreach ($symb,$timestamp,$student,$action,$machine) { |
foreach ($symb,$timestamp,$student,$action,$machine) { |
$_=&Apache::lonnet::unescape($_); |
$_=&unescape($_); |
} |
} |
my ($title,$src); |
my ($title,$src); |
if ($symb =~ m:^/adm/:) { |
if ($symb =~ m:^/adm/:) { |
Line 380 sub display_values {
|
Line 382 sub display_values {
|
my %values=map {split('=',$_,-1)} split(/\&/,$values); |
my %values=map {split('=',$_,-1)} split(/\&/,$values); |
foreach my $key (sort(keys(%values))) { |
foreach my $key (sort(keys(%values))) { |
$result.='<tr><td align="right">'. |
$result.='<tr><td align="right">'. |
&Apache::lonnet::unescape($key). |
&unescape($key). |
'</td><td>=</td><td align="left">'. |
'</td><td>=</td><td align="left">'. |
&Apache::lonnet::unescape($values{$key}).'</td></tr>'; |
&unescape($values{$key}).'</td></tr>'; |
} |
} |
$result.='</table>'; |
$result.='</table>'; |
} elsif ($action eq 'POST') { |
} elsif ($action eq 'POST') { |
my %values= |
my %values= |
map {split('=',&Apache::lonnet::unescape($_),-1)} split(/\&/,$values); |
map {split('=',&unescape($_),-1)} split(/\&/,$values); |
foreach my $key (sort(keys(%values))) { |
foreach my $key (sort(keys(%values))) { |
if ($key eq 'counter') { next; } |
if ($key eq 'counter') { next; } |
$result.='<tr><td align="right">'.$key.'</td>'. |
$result.='<tr><td align="right">'.$key.'</td>'. |
Line 395 sub display_values {
|
Line 397 sub display_values {
|
} |
} |
$result.='</table>'; |
$result.='</table>'; |
} else { |
} else { |
$result=&Apache::lonnet::unescape($values) |
$result=&unescape($values) |
} |
} |
return $result; |
return $result; |
} |
} |
Line 510 sub handler {
|
Line 512 sub handler {
|
bug=>'instructor interface'}); |
bug=>'instructor interface'}); |
# |
# |
# Give the LON-CAPA page header |
# Give the LON-CAPA page header |
my $html=&Apache::lonxml::xmlbegin(); |
$r->print(&Apache::loncommon::start_page('Student Activity',&styles()). |
$r->print($html.'<head>'.&styles().'<title>'. |
&Apache::lonhtmlcommon::breadcrumbs('Student Activity')); |
&mt('Student Activity'). |
|
"</title></head>\n". |
|
&Apache::loncommon::bodytag('Student Activity'). |
|
&Apache::lonhtmlcommon::breadcrumbs(undef,'Student Activity')); |
|
$r->rflush(); |
$r->rflush(); |
# |
# |
# Begin form output |
# Begin form output |
Line 545 sub handler {
|
Line 543 sub handler {
|
'</h2>'); |
'</h2>'); |
$r->print('<p>'.&mt(<<END).'</p>'); |
$r->print('<p>'.&mt(<<END).'</p>'); |
Compiling student activity data can take a long time. |
Compiling student activity data can take a long time. |
It may be necessary to reload this page to get the most current information. |
Your request continues to be processed while results are displayed. |
END |
END |
&get_data($r,\%prog_state,$navmap, |
&get_data($r,\%prog_state,$navmap, |
'student:'.$env{'form.selected_student'}); |
'student:'.$env{'form.selected_student'}); |
Line 562 END
|
Line 560 END
|
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
# |
# |
$r->print("</form>\n"); |
$r->print("</form>\n"); |
$r->print("</body>\n</html>\n"); |
$r->print(&Apache::loncommon::end_page()); |
$r->rflush(); |
$r->rflush(); |
# |
# |
return OK; |
return OK; |