--- loncom/interface/Attic/lonchart.pm 2002/05/29 17:57:52 1.39 +++ loncom/interface/Attic/lonchart.pm 2002/06/03 19:28:17 1.41 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # (Publication Handler # -# $Id: lonchart.pm,v 1.39 2002/05/29 17:57:52 stredwic Exp $ +# $Id: lonchart.pm,v 1.41 2002/06/03 19:28:17 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -85,6 +85,14 @@ sub ExtractStudentData { substr($rowlabels[$index]. ' ',0,45).' ! '; + my($checkForError)=keys (%result); + if($checkForError =~ /^(con_lost|error|no_such_host)/i) { + my $PrTot = sprintf( "%5d", $ProbTotal ); + my $PrSvd = sprintf( "%5d", $ProbSolved ); + $Str .= ' '.''.$PrSvd.' /'.$PrTot.' '; + return $Str; + } + $ProbNo = 0; $ProbTotal = 0; $ProbSolved = 0; @@ -229,30 +237,36 @@ sub usection { $courseid=~s/^(\w)/\/$1/; my %result=&Apache::lonnet::dump('roles',$udom,$unam); + + my($checkForError)=keys (%result); + if($checkForError =~ /^(con_lost|error|no_such_host)/i) { + return -1; + } + my $cursection='-1'; + my $oldsection='-1'; + my $status='Expired'; foreach my $key (keys (%result)) { my $value = $result{$key}; if ($key=~/^$courseid(?:\/)*(\w+)*\_st$/) { my $section=$1; if ($key eq $courseid.'_st') { $section=''; } my ($dummy,$end,$start)=split(/\_/,$value); - if ( $ActiveFlag ne 'Any' ) { - my $now=time; - my $notactive=0; - if ($start) { - if ($now<$start) { $notactive=1; } - } - if ($end) { - if ($now>$end) { $notactive=1; } - } - if ((($ActiveFlag eq 'Expired') && $notactive == 1) || - (($ActiveFlag eq 'Active') && $notactive == 0 ) ) { - return $section; - } - else { return '-1'; } - } - return $section; + my $now=time; + my $notactive=0; + if ($start) { if ($now<$start) { $notactive=1; } } + if ($end) { if ($now>$end) { $notactive=1; } } + if ($notactive == 0) { $status='Active';$cursection=$section;} + if ($notactive == 1) { $oldsection=$section;} } } + if ($status eq $ActiveFlag) { + if ($cursection eq '-1') { return $oldsection; } + return $cursection; + } + if ($ActiveFlag eq 'Any') { + if ($cursection eq '-1') { return $oldsection; } + return $cursection; + } return '-1'; } @@ -267,45 +281,49 @@ sub BuildChart { my ($cdom,$cnum)=split(/\_/,$cid); # ---------------------------------------------- Read class list and row labels my %classlist=&Apache::lonnet::dump('classlist',$cdom,$cnum); - my $now=time; - foreach my $name (keys (%classlist)) { - my $value=$classlist{$name}; - my ($end,$start)=split(/\:/,$value); - my $active=1; - my $Status=$ENV{'form.status'}; - $Status = ($Status) ? $Status : 'Active'; - if ( ( ($end) && $now > $end ) && - ( ($Status eq 'Active') ) ) { $active=0; } - if ( ($Status eq 'Expired') && - ($end == 0 || $now < $end) ) { $active=0; } - if ($active) { - my $thisindex=$#students+1; - $students[$thisindex]=$name; - my ($sname,$sdom)=split(/\:/,$name); - $PreCol[$thisindex]=$sname.':'; - my $ssec=&usection($sdom,$sname,$cid,$Status); - if ($ssec==-1) { - $rowlabels[$thisindex]= - 'Data not available: '.$name; - } else { - my %reply=&Apache::lonnet::idrget($sdom,$sname); - my $reply=&Apache::lonnet::get('environment', - ['lastname','generation','firstname','middlename'], - $sdom,$sname); - #$ssec=(int($ssec)) ? int($ssec) : $ssec; - my $sec=sprintf('%3s',$ssec); - $rowlabels[$thisindex]=$sec.' '.$reply{$sname}.' '; - $PreCol[$thisindex] .= $reply.':'.$sec; - my $i=0; - foreach (split(/\&/,$reply)) { - $i++; - if ( $_ ne '') { - $rowlabels[$thisindex].=&Apache::lonnet::unescape($_).' '; - } - if ($i == 2) { - chop($rowlabels[$thisindex]); - $rowlabels[$thisindex].=', '; - } + + my($checkForError)=keys (%classlist); + if($checkForError =~ /^(con_lost|error|no_such_host)/i) { + $r->print('

Could not access course data

'); + } else { + my $now=time; + foreach my $name (sort(keys(%classlist))) { + my $value=$classlist{$name}; + my ($end,$start)=split(/\:/,$value); + my $active=1; + my $Status=$ENV{'form.status'}; + $Status = ($Status) ? $Status : 'Active'; + if ( ( ($end) && $now > $end ) && + ( ($Status eq 'Active') ) ) { $active=0; } + if ( ($Status eq 'Expired') && + ($end == 0 || $now < $end) ) { $active=0; } + if ($active) { + my $thisindex=$#students+1; + $students[$thisindex]=$name; + my ($sname,$sdom)=split(/\:/,$name); + $PreCol[$thisindex]=$sname.':'; + my $ssec=&usection($sdom,$sname,$cid,$Status); + if ($ssec==-1) { + $rowlabels[$thisindex]= + 'Data not available: '.$name; + } else { + my %reply=&Apache::lonnet::idrget($sdom,$sname); + my %name=&Apache::lonnet::get('environment', + ['lastname','generation' + ,'firstname' + ,'middlename'], + $sdom,$sname); + my $name=$name{lastname}; + if ($name{generation}) {$name.=" $name{generation}";} + $name.=','; + if ($name{firstname}) {$name.=" $name{firstname}";} + if ($name{middlename}) {$name.=" $name{middlename}";} + if ($name eq ',') {$name='';} + #$ssec=(int($ssec)) ? int($ssec) : $ssec; + my $sec=sprintf('%3s',$ssec); + $rowlabels[$thisindex]=$sec.' '.$reply{$sname}.' '; + $PreCol[$thisindex] .= $name.':'.$sec; + $rowlabels[$thisindex].=$name.' '; } } }