version 1.10, 2005/04/11 21:51:43
|
version 1.11, 2005/04/18 20:35:07
|
Line 107 sub display_main_box {
|
Line 107 sub display_main_box {
|
<input type="submit" value="'.&mt('Change page to:').'" /> |
<input type="submit" value="'.&mt('Change page to:').'" /> |
<select name="command"> |
<select name="command"> |
<option value="info" '.$selinfo.'">'.&mt('Display Action Items').'</option> |
<option value="info" '.$selinfo.'">'.&mt('Display Action Items').'</option> |
<option value="" '.$selconfig.'">'.&mt('Configure Settings').'</option> |
<option value="config" '.$selconfig.'">'.&mt('Configure Settings').'</option> |
</select> |
</select> |
</nobr> |
</nobr> |
</form>'); |
</form>'); |
Line 164 sub display_actions_box() {
|
Line 164 sub display_actions_box() {
|
my %unread = (); |
my %unread = (); |
my %ungraded = (); |
my %ungraded = (); |
my %bombed = (); |
my %bombed = (); |
|
my %triggered = (); |
my @newmsgs = (); |
my @newmsgs = (); |
my @critmsgs = (); |
my @critmsgs = (); |
my @newdiscussions = (); |
my @newdiscussions = (); |
my @tograde = (); |
my @tograde = (); |
my @bombs = (); |
my @bombs = (); |
|
my @warnings = (); |
|
|
my $domain=&Apache::loncommon::determinedomain(); |
my $domain=&Apache::loncommon::determinedomain(); |
my $function; |
my $function; |
Line 182 sub display_actions_box() {
|
Line 184 sub display_actions_box() {
|
my $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain); |
my $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain); |
my $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); |
my $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); |
|
|
&getitems(\%unread,\%ungraded,\%bombed,\@newdiscussions,\@tograde,\@bombs); |
&getitems(\%unread,\%ungraded,\%bombed,\%triggered,\@newdiscussions,\@tograde,\@bombs,\@warnings,$rowColor1,$rowColor2); |
my ($msgcount,$critmsgcount) = &getmail(\@newmsgs,\@critmsgs); |
my ($msgcount,$critmsgcount) = &getmail(\@newmsgs,\@critmsgs); |
|
|
unless ($env{'request.course.id'}) { |
unless ($env{'request.course.id'}) { |
Line 192 sub display_actions_box() {
|
Line 194 sub display_actions_box() {
|
|
|
$r->print('<b>'.$picker.'</b><br /><hr width="100%" /><table border="0" width="100%" cellpadding="2" cellspacing="4"><tr><td align="left" valign="top" width="45%">'); |
$r->print('<b>'.$picker.'</b><br /><hr width="100%" /><table border="0" width="100%" cellpadding="2" cellspacing="4"><tr><td align="left" valign="top" width="45%">'); |
|
|
## UNREAD COURSE DISCUSSION POSTS ## |
|
$r->print(<<"END"); |
|
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
|
<tr><td> |
|
<table border="0" cellpadding="1" cellspacing="1" bgcolor="#000000" width="100%"> |
|
<tr> |
|
<td bgcolor="$tabbg"><b>Unread course discussion posts:</b></td> |
|
</tr> |
|
<tr> |
|
<td bgcolor="#ffffff"> |
|
<table cellpadding="2" cellspacing="0" border="0" width="100%"> |
|
END |
|
|
|
if (@newdiscussions > 0) { |
|
$r->print('<tr bgcolor="#cccccc"><td><b><small>Location</small></b></td><td><b><small>Type</small></b><td align="right"><b><small>Number of new posts</small></b></td></tr>'); |
|
# @newdiscussions = sort { &cmp_title($a,$b) } @newdiscussions; |
|
my $rowNum = 0; |
|
foreach my $ressymb (@newdiscussions) { |
|
my $forum_title = $unread{$ressymb}{'title'}; |
|
my $type = 'Resource'; |
|
my $feedurl=&Apache::lonfeedback::get_feedurl($ressymb); |
|
if ($feedurl =~ /bulletinboard/) { |
|
$type = 'Bulletin Board'; |
|
} |
|
my $unreadnum = keys(%{$unread{$ressymb}}); |
|
$unreadnum = $unreadnum - 2; |
|
if ($unreadnum > 0) { |
|
if ($rowNum %2 == 1) { |
|
$rowColor = $rowColor1; |
|
} else { |
|
$rowColor = $rowColor2; |
|
} |
|
$r->print('<tr bgcolor="'.$rowColor.'"><td><small><a href="'.$feedurl.'?symb='.$unread{$ressymb}{symb}.'">'.$forum_title.':</a> </td><td><small>'.$type.'</small></td><td align="right">'.$unreadnum.' </td></tr>'); |
|
$rowNum ++; |
|
} |
|
} |
|
} else { |
|
$r->print('<tr><td bgcolor="#ffffff"><br><center> <i><b><small>No unread posts in course discussions</small></b></i><br><br></td></tr>'); |
|
} |
|
$r->print('</table></td></tr></table></td></tr></table><br />'); |
|
|
|
## UNGRADED ITEMS ## |
## UNGRADED ITEMS ## |
$r->print(<<END); |
$r->print(<<END); |
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
<tr><td> |
<tr><td> |
<table border="0" cellpadding="1" cellspacing="1" bgcolor="#000000" width="100%"> |
<table border="0" cellpadding="1" cellspacing="1" bgcolor="#000000" width="100%"> |
<tr> |
<tr> |
<td bgcolor="$tabbg"><b>Problems requiring handgrading:</b></td></tr> |
<td bgcolor="$tabbg"><b>Problems requiring handgrading</b></td></tr> |
<tr> |
<tr> |
<td bgcolor="#ffffff"> |
<td bgcolor="#ffffff"> |
<table cellpadding="2" cellspacing="0" border="0" width="100%"> |
<table cellpadding="2" cellspacing="0" border="0" width="100%"> |
Line 296 END
|
Line 257 END
|
} |
} |
$r->print('</table></td></tr></table></td></tr></table><br />'); |
$r->print('</table></td></tr></table></td></tr></table><br />'); |
|
|
|
# DEGDIFF AND AV. TRIES TRIGGERS |
|
$r->print(<<"END"); |
|
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
|
<tr> |
|
<td> |
|
<table border="0" cellpadding="1" cellspacing="1" bgcolor="#000000" width="100%"> |
|
<tr> |
|
<td bgcolor="$tabbg"><b>Problems with average attempts > 0 or degree of difficulty > 0</b></td> |
|
</tr> |
|
<tr> |
|
<td bgcolor="#ffffff"> |
|
<table width="100%" cellspacing="0" cellpadding="0" border="0"> |
|
END |
|
my $warningnum = 0; |
|
if (@warnings > 0) { |
|
# @warnings = sort { &cmp_title($a,$b) } @warnings; |
|
$r->print('<tr bgcolor="#cccccc"><td><b><small>Resource</small></b></td><td align="right"><b><small>Part</small></b><td align="right"><b><small>Num. students</small></b></td><td align="right"><b><small>Av. Attempts</small></b></td><td align="right"><b><small>Deg. Diff</small></b></td></tr>'); |
|
foreach my $res (@warnings) { |
|
if ($warningnum %2 == 1) { |
|
$rowColor = $rowColor1; |
|
} else { |
|
$rowColor = $rowColor2; |
|
} |
|
my ($map,$id,$url)=&Apache::lonnet::decode_symb($res); |
|
my $linkurl=&Apache::lonnet::clutter($url); |
|
my $rowspan; |
|
if ($triggered{$res}{numparts} > 1) { |
|
$rowspan = 'rowspan="'.$triggered{$res}{numparts}.'"'; |
|
} |
|
$linkurl .= '?symb='.&Apache::lonnet::escape($res); |
|
$r->print('<tr bgcolor="'.$rowColor.'"><td '.$rowspan.'><a href="'.$linkurl.'"><small>'.$triggered{$res}{title}.'</small></a></td>'.$triggered{$res}{text}); |
|
$warningnum ++; |
|
} |
|
} else { |
|
$r->print('<tr><td bgcolor="#ffffff"><br /><center><b><i><small>No problems with av. attempts or degree of difficulty above thresholds</small></i></b></center><br /></td></tr>'); |
|
} |
|
$r->print('</table></td></tr></table></td></tr></table><br />'); |
|
|
$r->print('</td><td width="5%"> </td><td align="left" valign="top" width-"50%">'); |
$r->print('</td><td width="5%"> </td><td align="left" valign="top" width-"50%">'); |
|
|
|
## UNREAD COURSE DISCUSSION POSTS ## |
|
$r->print(<<"END"); |
|
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
|
<tr><td> |
|
<table border="0" cellpadding="1" cellspacing="1" bgcolor="#000000" width="100%"> |
|
<tr> |
|
<td bgcolor="$tabbg"><b>Unread course discussion posts</b></td> |
|
</tr> |
|
<tr> |
|
<td bgcolor="#ffffff"> |
|
<table cellpadding="2" cellspacing="0" border="0" width="100%"> |
|
END |
|
|
|
if (@newdiscussions > 0) { |
|
$r->print('<tr bgcolor="#cccccc"><td><b><small>Location</small></b></td><td><b><small>Type</small></b><td align="right"><b><small>Number of new posts</small></b></td></tr>'); |
|
# @newdiscussions = sort { &cmp_title($a,$b) } @newdiscussions; |
|
my $rowNum = 0; |
|
foreach my $ressymb (@newdiscussions) { |
|
my $forum_title = $unread{$ressymb}{'title'}; |
|
my $type = 'Resource'; |
|
my $feedurl=&Apache::lonfeedback::get_feedurl($ressymb); |
|
if ($feedurl =~ /bulletinboard/) { |
|
$type = 'Bulletin Board'; |
|
} |
|
my $unreadnum = keys(%{$unread{$ressymb}}); |
|
$unreadnum = $unreadnum - 2; |
|
if ($unreadnum > 0) { |
|
if ($rowNum %2 == 1) { |
|
$rowColor = $rowColor1; |
|
} else { |
|
$rowColor = $rowColor2; |
|
} |
|
$r->print('<tr bgcolor="'.$rowColor.'"><td><small><a href="'.$feedurl.'?symb='.$unread{$ressymb}{symb}.'">'.$forum_title.'</a> </td><td><small>'.$type.'</small></td><td align="right">'.$unreadnum.' </td></tr>'); |
|
$rowNum ++; |
|
} |
|
} |
|
} else { |
|
$r->print('<tr><td bgcolor="#ffffff"><br><center> <i><b><small>No unread posts in course discussions</small></b></i><br><br></td></tr>'); |
|
} |
|
$r->print('</table></td></tr></table></td></tr></table><br />'); |
|
|
## MESSAGES ## |
## MESSAGES ## |
$r->print(<<END); |
$r->print(<<END); |
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000" width="100%"> |
Line 371 END
|
Line 411 END
|
$r->print('</td></tr></table>'); |
$r->print('</td></tr></table>'); |
} |
} |
|
|
|
#------------------------------- |
|
# display_config_box |
|
# |
|
# Display the action items |
|
# |
|
#------------------------------- |
|
|
|
sub display_config_box() { |
|
my ($r,$picker) = @_; |
|
$r->print('<b>'.$picker.'</b><br /><hr width="100%" /><table border="0" width="100%" cellpadding="2" cellspacing="4"><tr><td align="left" valign="top" width="45%">'); |
|
} |
|
|
sub getitems { |
sub getitems { |
my ($unread,$ungraded,$bombed,$newdiscussions,$tograde,$bombs) = @_; |
my ($unread,$ungraded,$bombed,$triggered,$newdiscussions,$tograde,$bombs,$warnings,$rowColor1,$rowColor2) = @_; |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $navmap = Apache::lonnavmaps::navmap->new(); |
my @allres=$navmap->retrieveResources(); |
my @allres=$navmap->retrieveResources(); |
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
my %discussiontime = &Apache::lonnet::dump('discussiontimes', |
Line 383 sub getitems {
|
Line 435 sub getitems {
|
my @discussions = (); |
my @discussions = (); |
my ($classlist,$keylist) = &Apache::loncoursedata::get_classlist(); |
my ($classlist,$keylist) = &Apache::loncoursedata::get_classlist(); |
|
|
|
my %resourcetracker = &Apache::lonnet::dump('nohist_resourcetracker', |
|
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
|
$env{'course.'.$env{'request.course.id'}.'.num'}); |
|
|
|
my $diffcheck = 0; |
|
my $triescheck = 0; |
|
my $warningnum = 0; |
foreach my $key (keys(%lastread)) { |
foreach my $key (keys(%lastread)) { |
my $newkey = $key; |
my $newkey = $key; |
$newkey =~ s/_lastread$//; |
$newkey =~ s/_lastread$//; |
Line 394 sub getitems {
|
Line 453 sub getitems {
|
my $symb = $resource->symb(); |
my $symb = $resource->symb(); |
%{$$bombed{$symb}} = (); |
%{$$bombed{$symb}} = (); |
%{$$ungraded{$symb}} = (); |
%{$$ungraded{$symb}} = (); |
|
%{$$triggered{$symb}} = (); |
|
$$triggered{$symb}{numparts} = 0; |
my $title = $resource->compTitle(); |
my $title = $resource->compTitle(); |
my $ressymb = $resource->wrap_symb(); |
my $ressymb = $resource->wrap_symb(); |
# Check for unread discussion postings |
# Check for unread discussion postings |
Line 462 sub getitems {
|
Line 523 sub getitems {
|
$$bombed{$symb}{errorlink} = $errorlink; |
$$bombed{$symb}{errorlink} = $errorlink; |
push(@{$bombs}, $symb); |
push(@{$bombs}, $symb); |
} |
} |
|
# Compile maxtries and degree of difficulty for problem parts |
|
my @parts = @{$resource->parts()}; |
|
my %stats = (); |
|
my $warning = 0; |
|
my $rowColor; |
|
foreach (@parts) { |
|
%{$stats{$_}} = (); |
|
my ($attempts,$users,$corrects,$degdiff,$av_attempts); |
|
if (exists($resourcetracker{$symb.'_'.$_.'_attempts'})) { |
|
$attempts = $resourcetracker{$symb.'_'.$_.'_attempts'}; |
|
} |
|
if (exists($resourcetracker{$symb.'_'.$_.'_users'})) { |
|
$users = $resourcetracker{$symb.'_'.$_.'_users'}; |
|
} |
|
if (exists($resourcetracker{$symb.'_'.$_.'_correct'})) { |
|
$corrects = $resourcetracker{$symb.'_'.$_.'_correct'}; |
|
} |
|
if ($attempts > 0) { |
|
$degdiff = 1 - ($corrects/$attempts); |
|
$degdiff = sprintf("%.2f",$degdiff); |
|
} |
|
if ($users > 0) { |
|
$av_attempts = $attempts/$users; |
|
} |
|
if (($degdiff ne '' && $degdiff >= $diffcheck) || ($av_attempts ne '' && $av_attempts >= $triescheck)) { |
|
$stats{$_}{degdiff} = $degdiff; |
|
$stats{$_}{attempts} = $av_attempts; |
|
$stats{$_}{users} = $users; |
|
$warning = 1; |
|
} |
|
} |
|
if ($warning) { |
|
if ($warningnum %2 == 1) { |
|
$rowColor = $rowColor1; |
|
} else { |
|
$rowColor = $rowColor2; |
|
} |
|
$$triggered{$symb}{title} = $resource->title; |
|
foreach (@parts) { |
|
if (exists($stats{$_}{users})) { |
|
if ($$triggered{$symb}{numparts}) { |
|
$$triggered{$symb}{text} .= '<tr bgcolor="'.$rowColor.'">'."\n"; |
|
} |
|
if (@parts > 1) { |
|
$$triggered{$symb}{text} .= ' |
|
<td align="right"><small>part - '.$_.'<small></td>'; |
|
} else { |
|
$$triggered{$symb}{text} .= ' |
|
<td align="right"><small>single part</small></td>'; |
|
} |
|
$$triggered{$symb}{text} .= ' |
|
<td align="right"><small>'.$stats{$_}{users}.'</small></td> |
|
<td align="right"><small>'.$stats{$_}{attempts}.'</small></td> |
|
<td align="right"><small>'.$stats{$_}{degdiff}.'</small></td> |
|
</tr>'; |
|
$$triggered{$symb}{numparts} ++; |
|
} |
|
} |
|
push(@{$warnings},$symb); |
|
$warningnum ++; |
|
} |
} |
} |
# Compile maxtries and degree of difficulty. |
|
} |
} |
|
|
sub getmail { |
sub getmail { |