[LON-CAPA-cvs] cvs: loncom /interface lonchart.pm
minaeibi
lon-capa-cvs@mail.lon-capa.org
Thu, 28 Feb 2002 23:14:57 -0000
minaeibi Thu Feb 28 18:14:57 2002 EDT
Modified files:
/loncom/interface lonchart.pm
Log:
Added button for showing all students active or non-active
Index: loncom/interface/lonchart.pm
diff -u loncom/interface/lonchart.pm:1.32 loncom/interface/lonchart.pm:1.33
--- loncom/interface/lonchart.pm:1.32 Wed Feb 27 20:49:33 2002
+++ loncom/interface/lonchart.pm Thu Feb 28 18:14:57 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# (Publication Handler
#
-# $Id: lonchart.pm,v 1.32 2002/02/28 01:49:33 albertel Exp $
+# $Id: lonchart.pm,v 1.33 2002/02/28 23:14:57 minaeibi Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -43,7 +43,7 @@
# 9/8 Gerd Kortemeyer
# 10/1, 10/19, 11/17, 11/22, 11/24, 11/28 12/18 Behrouz Minaei
# YEAR=2002
-# 2/1, 2/6, 2/19 Behrouz Minaei
+# 2/1, 2/6, 2/19, 2/28 Behrouz Minaei
#
###
@@ -64,7 +64,7 @@
my @students;
my @PreCol;
my $r;
-
+
# ------------------------------------------------------------- Find out status
sub ExtractStudentData {
@@ -225,6 +225,55 @@
}
+sub usection2 {
+ my ($udom,$unam,$courseid,$ActiveFlag)=@_;
+ $courseid=~s/\_/\//g;
+ $courseid=~s/^(\w)/\/$1/;
+ foreach my $elem(split(/\&/,&Apache::lonnet::reply('dump:'.$udom.':'.$unam.':roles',
+ &Apache::lonnet::homeserver($unam,$udom)))) {
+ my ($key,$value)=split(/\=/,$elem);
+ $key=&Apache::lonnet::unescape($key);
+ if ($key=~/^$courseid(?:\/)*(\w+)*\_st$/) {
+ my $section=$1;
+ if ($key eq $courseid.'_st') { $section=''; }
+ my ($dummy,$end,$start)=split(/\_/,&Apache::lonnet::unescape($value));
+ my $now=time;
+ my $notactive=0;
+ if ($start) {
+ if ($now<$start) { $notactive=1; }
+ }
+ if ($end) {
+ if ($now>$end) { $notactive=1; }
+ }
+ if ($ActiveFlag == 1) { $notactive=0; }
+ unless ($notactive) { return $section; }
+ }
+ }
+ return '-1';
+}
+
+
+sub usection {
+ my ($udom,$unam,$courseid)=@_;
+ $courseid=~s/\_/\//g;
+ $courseid=~s/^(\w)/\/$1/;
+ map {
+ my ($key,$value)=split(/\=/,$_);
+ $key=&Apache::lonnet::unescape($key);
+ if ($key=~/^$courseid(?:\/)*(\w+)*\_st$/) {
+ my $section=$1;
+ if ($key eq $courseid.'_st') { $section=''; }
+ my ($dummy,$end,$start)=split(/\_/,&Apache::lonnet::unescape($value));
+# $section=($section) ? $section : '(none)';
+# $section=(int($section)) ? int($section) : $section;
+# $r->print($unam.'...'.$section.'<br>');
+ return $section;
+ }
+ } split(/\&/,&Apache::lonnet::reply('dump:'.$udom.':'.$unam.':roles',
+ &Apache::lonnet::homeserver($unam,$udom)));
+ return '';
+}
+
sub BuildChart {
# ----------------------- Get first and last resource, see if there is anything
my $firstres=$hash{'map_start_/res/'.$ENV{'request.course.uri'}};
@@ -244,21 +293,26 @@
my ($end,$start)=split(/\:/,&Apache::lonnet::unescape($value));
my $active=1;
if (($end) && ($now>$end)) { $active=0; }
+
+ if ($ENV{'form.active'} eq 'All Students') { $active=1; }
+
if ($active) {
my $thisindex=$#students+1;
$name=&Apache::lonnet::unescape($name);
$students[$thisindex]=$name;
my ($sname,$sdom)=split(/\:/,$name);
$PreCol[$thisindex]=$sname.':';
- my $ssec=&Apache::lonnet::usection($sdom,$sname,$cid);
+
+ my $ssec=&usection($sdom,$sname,$cid);#,$active);
+
if ($ssec==-1) {
$rowlabels[$thisindex]=
'Data not available: '.$name;
} else {
my %reply=&Apache::lonnet::idrget($sdom,$sname);
my $reply=&Apache::lonnet::reply('get:'.$sdom.':'.$sname.
- ':environment:lastname&generation&firstname&middlename',
- &Apache::lonnet::homeserver($sname,$sdom));
+ ':environment:lastname&generation&firstname&middlename',
+ &Apache::lonnet::homeserver($sname,$sdom));
#$ssec=(int($ssec)) ? int($ssec) : $ssec;
my $sec=sprintf('%3s',$ssec);
$rowlabels[$thisindex]=$sec.' '.$reply{$sname}.' ';
@@ -306,22 +360,31 @@
}
sub CreateForm {
+ my $OpSel1='';
+ my $OpSel2='';
+ if ( $ENV{'form.active'} eq 'All Students' ) { $OpSel2='selected'; }
+ else { $OpSel1 = 'selected'; }
+
my $Ptr = '<form name=stat method=post action="/adm/chart" >'."\n";
$Ptr .= '<b> Sort by: </b>'."\n";
$Ptr .= ' ';
- $Ptr .= '<input type=submit name=sort value="Email Name" />'."\n";
+ $Ptr .= '<input type=submit name=sort value="User Name" />'."\n";
$Ptr .= ' ';
$Ptr .= '<input type=submit name=sort value="Last Name" />'."\n";
$Ptr .= ' ';
$Ptr .= '<input type=submit name=sort value="Section"/>'."\n";
- $Ptr .= '<br>';
+ $Ptr .= '<br><br>';
+ $Ptr .= '<b> Activation Area: </b>'."\n".
+ '<select name="active"> <option '.$OpSel1.' >Active Students</option>'."\n".
+ '<option '.$OpSel2.'>All Students</option> </select> '."\n";
+ $Ptr .= ' ';
$Ptr .= '<input type=submit name=sort value="Recalculate Chart"/>'."\n";
$Ptr .= '</form>'."\n";
$r->print( $Ptr );
}
sub CacheChart {
- my %list = ();
+ my @list = ();
my $count=0;
my $Pos = $ENV{'form.sort'};
@@ -332,11 +395,11 @@
foreach my $key( keys %CachData) {
my @Temp=split(/\:/,$key);
my $Use = $Temp[$Pos];
- $list{$Use.$key}=$key;
+ $list[$count]=$Use.$key.'*'.$CachData{$key};
$count++;
}
- my @order = sort(keys(%list));
+ @list = sort (@list);
$r->print('<h3>'.$count.' students</h3>');
&CreateForm();
@@ -344,7 +407,8 @@
$r->print('<p><pre>');
for ( my $n; $n < $count; $n++) {
- $r->print($CachData{$list{$order[$n]}}.'<br>');
+ my ($dummy, $Line) = split(/\*/,$list[$n]);
+ $r->print($Line.'<br>');
}
$r->print('</pre>');
}