version 1.96, 2004/06/28 16:41:08
|
version 1.99.2.11, 2004/10/11 18:02:40
|
Line 36 use Apache::loncommon();
|
Line 36 use Apache::loncommon();
|
use Apache::lontexconvert(); |
use Apache::lontexconvert(); |
use Apache::lonlocal; # must not have () |
use Apache::lonlocal; # must not have () |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
|
use Apache::lonnavmaps(); |
|
|
sub discussion_open { |
sub discussion_open { |
my ($status)=@_; |
my ($status)=@_; |
Line 92 sub list_discussion {
|
Line 93 sub list_discussion {
|
# Get discussion display settings for this discussion |
# Get discussion display settings for this discussion |
my $lastkey = $ressymb.'_lastread'; |
my $lastkey = $ressymb.'_lastread'; |
my $showkey = $ressymb.'_showonlyunread'; |
my $showkey = $ressymb.'_showonlyunread'; |
my $visitkey = $ressymb.'_visit'; |
|
my $ondispkey = $ressymb.'_markondisp'; |
my $ondispkey = $ressymb.'_markondisp'; |
my %dischash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$lastkey,$showkey,$visitkey,$ondispkey],$ENV{'user.domain'},$ENV{'user.name'}); |
my %dischash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$lastkey,$showkey,$ondispkey],$ENV{'user.domain'},$ENV{'user.name'}); |
my %discinfo = (); |
my %discinfo = (); |
my $showonlyunread = 0; |
my $showonlyunread = 0; |
my $markondisp = 0; |
my $markondisp = 0; |
my $prevread = 0; |
my $prevread = 0; |
my $previous = 0; |
my $previous = 0; |
my $visit = 0; |
|
my $newpostsflag = 0; |
my $newpostsflag = 0; |
|
|
# Retain identification of "NEW" posts identified in last display, if continuing 'previous' browsing of posts. |
# Retain identification of "NEW" posts identified in last display, if continuing 'previous' browsing of posts. |
Line 115 sub list_discussion {
|
Line 114 sub list_discussion {
|
} |
} |
|
|
# Get discussion display default settings for user |
# Get discussion display default settings for user |
my %userenv = &Apache::lonnet::get('environment',['discdisplay','discmarkread'],$ENV{'user.domain'},$ENV{'user.name'}); |
if ($ENV{'environment.discdisplay'} eq 'unread') { |
my $discdisplay=$userenv{'discdisplay'}; |
|
if ($discdisplay eq 'unread') { |
|
$showonlyunread = 1; |
$showonlyunread = 1; |
} |
} |
my $discmarkread=$userenv{'discmarkread'}; |
if ($ENV{'environment.discmarkread'} eq 'ondisp') { |
if ($discmarkread eq 'ondisp') { |
|
$markondisp = 1; |
$markondisp = 1; |
} |
} |
|
|
# Override user's default if user specified display setting for this discussion |
# Override user's default if user specified display setting for this discussion |
if (defined($dischash{$ondispkey})) { |
if (defined($dischash{$ondispkey})) { |
$markondisp = $dischash{$ondispkey}; |
unless ($dischash{$showkey} eq '') { |
|
$markondisp = $dischash{$ondispkey}; |
|
} |
} |
} |
if ($markondisp) { |
if ($markondisp) { |
$discinfo{$lastkey} = time; |
$discinfo{$lastkey} = time; |
} |
} |
|
|
if (defined($dischash{$showkey})) { |
if (defined($dischash{$showkey})) { |
$showonlyunread = $dischash{$showkey}; |
unless ($dischash{$showkey} eq '') { |
} |
$showonlyunread = $dischash{$showkey}; |
|
} |
if (defined($dischash{$visitkey})) { |
|
$visit = $dischash{$visitkey}; |
|
} |
} |
$visit ++; |
|
|
|
my $seeid=&Apache::lonnet::allowed('rin',$crs); |
my $seeid=&Apache::lonnet::allowed('rin',$crs); |
my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs) |
my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs) |
Line 166 sub list_discussion {
|
Line 161 sub list_discussion {
|
} |
} |
|
|
my $now = time; |
my $now = time; |
$discinfo{$visitkey} = $visit; |
if (%discinfo) { |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
} |
|
|
if ($contrib{'version'}) { |
if ($contrib{'version'}) { |
my $oldest = $contrib{'1:timestamp'}; |
my $oldest = $contrib{'1:timestamp'}; |
Line 223 sub list_discussion {
|
Line 218 sub list_discussion {
|
if ($hidden) { |
if ($hidden) { |
$message='<font color="#888888">'.$message.'</font>'; |
$message='<font color="#888888">'.$message.'</font>'; |
} |
} |
my $screenname=&Apache::loncommon::screenname( |
# my $screenname=&Apache::loncommon::screenname( |
$contrib{$idx.':sendername'}, |
# $contrib{$idx.':sendername'}, |
$contrib{$idx.':senderdomain'}); |
# $contrib{$idx.':senderdomain'}); |
my $plainname=&Apache::loncommon::nickname( |
# my $plainname=&Apache::loncommon::nickname( |
$contrib{$idx.':sendername'}, |
# $contrib{$idx.':sendername'}, |
$contrib{$idx.':senderdomain'}); |
# $contrib{$idx.':senderdomain'}); |
|
my ($screenname,$plainname)=($contrib{$idx.':screenname'}, |
|
$contrib{$idx.':plainname'}); |
my $sender=&mt('Anonymous'); |
my $sender=&mt('Anonymous'); |
if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { |
if ((!$contrib{$idx.':anonymous'}) || ($seeid)) { |
$sender=&Apache::loncommon::aboutmewrapper( |
$sender=&Apache::loncommon::aboutmewrapper( |
Line 325 sub list_discussion {
|
Line 321 sub list_discussion {
|
my $color = &Apache::loncommon::designparm($function.'.tabbg', |
my $color = &Apache::loncommon::designparm($function.'.tabbg', |
$ENV{'user.domain'}); |
$ENV{'user.domain'}); |
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
'cuse' => 'Current settings for this discussion', |
'cuse' => 'Current discussion settings', |
'allposts' => 'All posts', |
'allposts' => 'All posts', |
'unread' => 'New posts only', |
'unread' => 'New posts only', |
'ondisp' => 'Once displayed', |
'ondisp' => 'Once displayed', |
'onmark' => 'Once marked read', |
'onmark' => 'Once marked read', |
'disa' => 'Posts to be displayed', |
'disa' => 'Posts to be displayed', |
'npce' => 'Posts cease to be marked "NEW"', |
'npce' => 'Posts cease to be marked "NEW"', |
'chgt' => 'Change to ', |
'chgt' => 'Change', |
|
'disp' => 'Display', |
|
'nolo' => 'Not new', |
); |
); |
|
|
my $currdisp = $lt{'allposts'}; |
my $currdisp = $lt{'allposts'}; |
my $currmark = $lt{'onmark'}; |
my $currmark = $lt{'onmark'}; |
my $dispchange = $lt{'unread'}; |
my $dispchange = $lt{'unread'}; |
my $markchange = $lt{'ondisp'}; |
my $markchange = $lt{'ondisp'}; |
my $displink = '/adm/feedback?onlyunread='.$ressymb; |
my $chglink = '/adm/feedback?modifydisp='.$ressymb; |
my $marklink = '/adm/feedback?markondisp='.$ressymb; |
my $displink = 'onlyunread'; |
|
my $marklink = 'markondisp'; |
|
|
if ($markondisp) { |
if ($markondisp) { |
$currmark = $lt{'ondisp'}; |
$currmark = $lt{'ondisp'}; |
$markchange = $lt{'onmark'}; |
$markchange = $lt{'onmark'}; |
$marklink = '/adm/feedback?markonread='.$ressymb; |
$marklink = 'markonread'; |
if ($newpostsflag) { |
|
$marklink .= '&previous='.$prevread; |
|
} |
|
} |
} |
|
|
if ($showonlyunread) { |
if ($showonlyunread) { |
$currdisp = $lt{'unread'}; |
$currdisp = $lt{'unread'}; |
$dispchange = $lt{'allposts'}; |
$dispchange = $lt{'allposts'}; |
$displink = '/adm/feedback?allposts='.$ressymb; |
$displink = 'allposts'; |
} |
} |
|
|
|
$chglink .= '&changes='.$displink.'_'.$marklink; |
|
|
if ($newpostsflag) { |
if ($newpostsflag) { |
$displink .= '&previous='.$prevread; |
$chglink .= '&previous='.$prevread; |
} |
} |
|
|
if ($visible) { |
if ($visible) { |
# Print the discusssion |
# Print the discusssion |
if ($outputtarget ne 'tex') { |
if ($outputtarget ne 'tex') { |
|
my $colspan=$maxdepth+1; |
$discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">'; |
$discussion.='<table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">'; |
my $colspan=$maxdepth+1; |
$discussion .='<tr><td bgcolor="#DDDDBB" colspan="'.$colspan.'">'. |
$discussion .= '<tr bgcolor="#FFFFFF"><td colspan="'.$colspan.'" valign="top">'. |
|
'<table border="0" bgcolor="#FFFFFF" width="100%" cellspacing="2" cellpadding="2">'. |
|
'<tr><td align="left"><b>'.$lt{'cuse'}.'</b></td><td> </td><td align="right"><b>'.$lt{'chgt'}.'</b></td></tr>'. |
|
'<tr><td>'.$lt{'disa'}.': <i>'.$currdisp.'</i></td><td> </td><td align="right"><a href="'.$displink.'">'.$dispchange.'</a></td></tr>'. |
|
'<tr><td>'.$lt{'npce'}.': <i>'.$currmark.'</i></td><td> </td><td align="right"><a href="'.$marklink.'">'.$markchange.'</a></td></tr>'. |
|
'</table></td></tr>'. |
|
'<tr><td bgcolor="#DDDDBB" colspan="'.$colspan.'">'. |
|
'<table border="0" width="100%" bgcolor="#DDDDBB"><tr>'; |
'<table border="0" width="100%" bgcolor="#DDDDBB"><tr>'; |
if ($visible>2) { |
if ($visible>2) { |
$discussion.='<td align="left">'. |
$discussion.='<td align="left">'. |
Line 386 sub list_discussion {
|
Line 378 sub list_discussion {
|
$discussion .= '&previous='.$prevread; |
$discussion .= '&previous='.$prevread; |
} |
} |
$discussion .='">'.&mt('Chronological View').'</a> </td>'; |
$discussion .='">'.&mt('Chronological View').'</a> </td>'; |
} |
} |
if ($newpostsflag) { |
if ($newpostsflag) { |
if (!$markondisp) { |
if (!$markondisp) { |
$discussion .='<td align="right"><a href="/adm/feedback?markread='.$ressymb.'">'.&mt('Mark new posts as read').'</a> '; |
$discussion .='<td align="right"><a href="/adm/feedback?markread='.$ressymb.'">'.&mt('Mark new posts as read').'</a> '; |
Line 456 sub list_discussion {
|
Line 448 sub list_discussion {
|
} |
} |
} |
} |
if ($outputtarget ne 'tex') { |
if ($outputtarget ne 'tex') { |
$discussion.='</table><br /><br />'; |
my $colspan=$maxdepth+1; |
|
$discussion .= <<END; |
|
<tr bgcolor="#FFFFFF"> |
|
<td colspan="$colspan" valign="top"> |
|
<table border="0" bgcolor="#FFFFFF" width="100%" cellspacing="2" cellpadding="2"> |
|
<tr> |
|
<td align="left"> |
|
<table border="0" cellpadding="0" cellspacing="4"> |
|
<tr> |
|
<td> |
|
<font size="-1"><b>$lt{'cuse'}</b>:</td> |
|
<td> </td> |
|
END |
|
if ($newpostsflag) { |
|
$discussion .= |
|
'<td><font size="-1">1. '.$lt{'disp'}.' - <i>'.$currdisp.'</i> 2. '.$lt{'nolo'}.' - <i>'.$currmark.'</i></font></td>'; |
|
} else { |
|
$discussion .= |
|
'<td><font size="-1">'.$lt{'disp'}.' - <i>'.$currdisp.'</i></font></td>'; |
|
} |
|
$discussion .= <<END; |
|
<td> </td> |
|
<td> |
|
<font size="-1"><b><a href="$chglink">$lt{'chgt'}</a>?</font></b></td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
<br /><br /> |
|
END |
} |
} |
} |
} |
if ($discussiononly) { |
if ($discussiononly) { |
Line 523 sub mail_screen {
|
Line 548 sub mail_screen {
|
} |
} |
my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(); |
my $latexHelp=&Apache::loncommon::helpLatexCheatsheet(); |
my $htmlheader=&Apache::lonhtmlcommon::htmlareaheaders(); |
my $htmlheader=&Apache::lonhtmlcommon::htmlareaheaders(); |
my $onsubmit=''; |
|
if ((&Apache::lonhtmlcommon::htmlareabrowser()) && |
|
(!&Apache::lonhtmlcommon::htmlareablocked())) { |
|
$onsubmit='document.mailform.onsubmit();'; |
|
} |
|
my $send=&mt('Send'); |
my $send=&mt('Send'); |
$r->print(<<ENDDOCUMENT); |
$r->print(<<ENDDOCUMENT); |
<html> |
<html> |
Line 571 $htmlheader
|
Line 591 $htmlheader
|
} |
} |
|
|
if (rec) { |
if (rec) { |
$onsubmit |
if (typeof(document.mailform.onsubmit)=='function') { |
|
document.mailform.onsubmit(); |
|
} |
document.mailform.submit(); |
document.mailform.submit(); |
} else { |
} else { |
alert('Please check a feedback type.'); |
alert('Please check a feedback type.'); |
Line 611 $r->print(&generate_preview_button().
|
Line 633 $r->print(&generate_preview_button().
|
'</body></html>'); |
'</body></html>'); |
} |
} |
|
|
|
sub print_display_options { |
|
my ($r,$symb,$previous,$dispchg,$markchg,$feedurl) = @_; |
|
# backward compatibility (bulletin boards used to be 'wrapped') |
|
if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) { |
|
$feedurl=~s|^/adm/wrapper||; |
|
} |
|
|
|
my $function = &Apache::loncommon::get_users_function(); |
|
my $tabcolor = &Apache::loncommon::designparm($function.'.tabbg', |
|
$ENV{'user.domain'}); |
|
my $bodytag=&Apache::loncommon::bodytag('Discussion options', |
|
'',''); |
|
|
|
my %lt = &Apache::lonlocal::texthash( |
|
'dido' => 'Discussion display options', |
|
'pref' => 'Display Preference', |
|
'curr' => 'Current setting ', |
|
'actn' => 'Action', |
|
'deff' => 'Default for all discussions', |
|
'prca' => 'Preferences can be set for this discussion that determine ....', |
|
'whpo' => 'Which posts are displayed when you display this bulletin board or resource, and', |
|
'unwh' => 'Under what circumstances posts are identfied as "New."', |
|
'allposts' => 'All posts', |
|
'unread' => 'New posts only', |
|
'ondisp' => 'Once displayed', |
|
'onmark' => 'Once marked as read', |
|
'disa' => 'Posts displayed?', |
|
'npmr' => 'New posts cease to be identified as "New"?', |
|
'chgt' => 'Change to ', |
|
'mkdf' => 'Set to ', |
|
'yhni' => 'You have not indicated that you wish to change either of the discussion settings', |
|
'ywbr' => 'You will be returned to the previous page if you click OK.' |
|
); |
|
|
|
my $dispchange = $lt{'unread'}; |
|
my $markchange = $lt{'ondisp'}; |
|
my $currdisp = $lt{'allposts'}; |
|
my $currmark = $lt{'onmark'}; |
|
my $discdisp = 'allposts'; |
|
my $discmark = 'onmark'; |
|
|
|
if ($dispchg eq 'allposts') { |
|
$dispchange = $lt{'allposts'}; |
|
$currdisp = $lt{'unread'}; |
|
$discdisp = 'unread'; |
|
} |
|
|
|
if ($markchg eq 'markonread') { |
|
$markchange = $lt{'onmark'}; |
|
$currmark = $lt{'ondisp'}; |
|
$discmark = 'ondisp'; |
|
} |
|
$r->print(<<END); |
|
<html> |
|
<head> |
|
<title>$lt{'dido'}</title> |
|
<meta http-equiv="pragma" content="no-cache" /> |
|
<script> |
|
function setDisp() { |
|
var prev = "$previous" |
|
var chktotal = 0 |
|
if (document.modifydisp.discdisp.checked == true) { |
|
document.modifydisp.$dispchg.value = "$symb" |
|
chktotal ++ |
|
} |
|
if (document.modifydisp.discmark.checked == true) { |
|
document.modifydisp.$markchg.value = "$symb" |
|
chktotal ++ |
|
} |
|
if (chktotal > 0) { |
|
document.modifydisp.submit() |
|
} else { |
|
if(confirm("$lt{'yhni'}. \\n$lt{'ywbr'}")) { |
|
if (prev > 0) { |
|
location.href = "$feedurl?previous=$previous" |
|
} else { |
|
location.href = "$feedurl" |
|
} |
|
} |
|
} |
|
} |
|
</script> |
|
</head> |
|
$bodytag |
|
<form name="modifydisp" method="post" action="/adm/feedback"> |
|
$lt{'sdpf'}<br/> $lt{'prca'} <ol><li>$lt{'whpo'}</li><li>$lt{'unwh'}</li></ol> |
|
<br /> |
|
<table border="0" cellpadding="0" cellspacing="0"> |
|
<tr> |
|
<td width="100%" bgcolor="#000000"> |
|
<table width="100%" border="0" cellpadding="1" cellspacing="0"> |
|
<tr> |
|
<td width="100%" bgcolor="#000000"> |
|
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> |
|
<tr bgcolor="$tabcolor"> |
|
<td><b>$lt{'pref'}</b></td> |
|
<td><b>$lt{'curr'}</b></td> |
|
<td><b>$lt{'actn'}?</b></td> |
|
</tr> |
|
<tr bgcolor="#dddddd"> |
|
<td>$lt{'disa'}</td> |
|
<td>$lt{$discdisp}</td> |
|
<td><input type="checkbox" name="discdisp" /> $lt{'chgt'} "$dispchange"</td> |
|
</tr><tr bgcolor="#eeeeee"> |
|
<td>$lt{'npmr'}</td> |
|
<td>$lt{$discmark}</td> |
|
<td><input type="checkbox" name="discmark" />$lt{'chgt'} "$markchange"</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
</td> |
|
</tr> |
|
</table> |
|
<br /> |
|
<br /> |
|
<input type="hidden" name="previous" value="$previous" /> |
|
<input type="hidden" name="$dispchg" value=""/> |
|
<input type="hidden" name="$markchg" value=""/> |
|
<input type="button" name="sub" value="Store Changes" onClick="javascript:setDisp()" /> |
|
<br /> |
|
<br /> |
|
</form> |
|
</body> |
|
</html> |
|
END |
|
return; |
|
} |
|
|
sub fail_redirect { |
sub fail_redirect { |
my ($r,$feedurl) = @_; |
my ($r,$feedurl) = @_; |
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' }; |
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' }; |
Line 623 sub fail_redirect {
|
Line 775 sub fail_redirect {
|
<body bgcolor="#FFFFFF"> |
<body bgcolor="#FFFFFF"> |
<img align="right" src="/adm/lonIcons/lonlogos.gif" /> |
<img align="right" src="/adm/lonIcons/lonlogos.gif" /> |
<b>Sorry, no recipients ...</b> |
<b>Sorry, no recipients ...</b> |
|
<br /><a href="$feedurl">Continue</a> |
</body> |
</body> |
</html> |
</html> |
ENDFAILREDIR |
ENDFAILREDIR |
Line 632 sub redirect_back {
|
Line 785 sub redirect_back {
|
my ($r,$feedurl,$typestyle,$sendsomething,$sendposts,$status,$previous) = @_; |
my ($r,$feedurl,$typestyle,$sendsomething,$sendposts,$status,$previous) = @_; |
my $prevtag = ''; |
my $prevtag = ''; |
my $qrystr = ''; |
my $qrystr = ''; |
|
# backward compatibility (bulletin boards used to be 'wrapped') |
|
if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) { |
|
$feedurl=~s|^/adm/wrapper||; |
|
} |
|
|
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' }; |
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' }; |
if ($previous > 0) { |
if ($previous > 0) { |
$qrystr = 'previous='.$previous; |
$qrystr = 'previous='.$previous; |
Line 657 $typestyle
|
Line 815 $typestyle
|
<form name="reldt" action="$feedurl" target="loncapaclient"> |
<form name="reldt" action="$feedurl" target="loncapaclient"> |
$prevtag |
$prevtag |
</form> |
</form> |
|
<br /><a href="$feedurl">Continue</a> |
</body> |
</body> |
</html> |
</html> |
ENDREDIR |
ENDREDIR |
Line 679 ENDNOREDIR
|
Line 838 ENDNOREDIR
|
<body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { self.close(); }'> |
<body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { self.close(); }'> |
<img align="right" src="/adm/lonIcons/lonlogos.gif" /> |
<img align="right" src="/adm/lonIcons/lonlogos.gif" /> |
<b>Sorry, no feedback possible on this resource ...</b> |
<b>Sorry, no feedback possible on this resource ...</b> |
|
<br /><a href="$feedurl">Continue</a> |
</body> |
</body> |
</html> |
</html> |
ENDNOREDIRTWO |
ENDNOREDIRTWO |
Line 956 sub generate_preview_button {
|
Line 1116 sub generate_preview_button {
|
<input type="hidden" name="subject"> |
<input type="hidden" name="subject"> |
<input type="hidden" name="comment" /> |
<input type="hidden" name="comment" /> |
<input type="button" value="$pre" |
<input type="button" value="$pre" |
onClick="document.mailform.onsubmit();this.form.comment.value=document.mailform.comment.value;this.form.subject.value=document.mailform.subject.value;this.form.submit();" /> |
onClick="if (typeof(document.mailform.onsubmit)=='function') {document.mailform.onsubmit();};this.form.comment.value=document.mailform.comment.value;this.form.subject.value=document.mailform.subject.value;this.form.submit();" /> |
</form> |
</form> |
ENDPREVIEW |
ENDPREVIEW |
} |
} |
|
|
|
sub has_discussion { |
|
my $resourcesref = shift; |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
my @allres=$navmap->retrieveResources(); |
|
foreach my $resource (@allres) { |
|
if ($resource->hasDiscussion()) { |
|
my $ressymb; |
|
if ($resource->symb() =~ m-(___adm/\w+/\w+)/(\d+)/bulletinboard$-) { |
|
$ressymb = 'bulletin___'.$2.$1.'/'.$2.'/bulletinboard'; |
|
} else { |
|
$ressymb = $resource->symb(); |
|
} |
|
push @{$resourcesref}, $ressymb; |
|
} |
|
} |
|
$navmap->untieHashes(); |
|
return; |
|
} |
|
|
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
if ($r->header_only) { |
if ($r->header_only) { |
Line 971 sub handler {
|
Line 1150 sub handler {
|
|
|
# --------------------------- Get query string for limited number of parameters |
# --------------------------- Get query string for limited number of parameters |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['hide','unhide','deldisc','postdata','preview','replydisc','threadedon','threadedoff','onlyunread','allposts','previous','markread','markonread','markondisp']); |
['hide','unhide','deldisc','postdata','preview','replydisc','threadedon','threadedoff','onlyunread','allposts','previous','markread','markonread','markondisp','modifydisp','changes','navtime','navurl']); |
|
if ($ENV{'form.navtime'}) { |
if (($ENV{'form.markondisp'}) || ($ENV{'form.markonread'})) { |
|
# ---------------------- Modify setting for identification of 'NEW' posts in this discussion |
|
|
|
&Apache::loncommon::content_type($r,'text/html'); |
|
$r->send_http_header; |
|
my $symb=$ENV{'form.markondisp'}?$ENV{'form.markondisp'}:$ENV{'form.markonread'}; |
|
my $ressymb = $symb; |
|
my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
|
unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) { |
|
$ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|; |
|
} |
|
|
|
my %discinfo = (); |
my %discinfo = (); |
my $lastkey = $ressymb.'_lastread'; |
my @resources = (); |
my $ondispkey = $ressymb.'_markondisp'; |
&has_discussion(\@resources); |
if ($ENV{'form.markondisp'}) { |
my $numitems = @resources; |
$discinfo{$lastkey} = time; |
my $feedurl = '/adm/navmaps'; |
$discinfo{$ondispkey} = 1; |
if ($ENV{'form.navurl'}) { |
} elsif ($ENV{'form.markonread'}) { |
$feedurl .= '?'.$ENV{'form.navurl'}; |
if ( defined($ENV{'previous'}) ) { |
} |
$discinfo{$lastkey} = $ENV{'previous'}; |
my %lt = &Apache::lonlocal::texthash( |
|
'mnpa' => 'Marked "New" posts as read in a total of', |
|
'robb' => 'resources/bulletin boards.', |
|
'twnp' => 'There are currently no resources or bulletin boards with unread discussion postings.' |
|
); |
|
foreach (@resources) { |
|
# backward compatibility (bulletin boards used to be 'wrapped') |
|
my $ressymb=$_; |
|
if ($ressymb =~ m/bulletin___\d+___/) { |
|
unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) { |
|
$ressymb=~s|(bulletin___\d+___)|$1adm/wrapper/|; |
|
} |
} |
} |
$discinfo{$ondispkey} = 0; |
my $lastkey = $ressymb.'_lastread'; |
|
$discinfo{$lastkey} = $ENV{'form.navtime'}; |
} |
} |
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
my $textline = "<b>$lt{'mnpa'} $numitems $lt{'robb'}</b>"; |
if ($ENV{'form.markondisp'}) { |
if ($numitems > 0) { |
&redirect_back($r,&Apache::lonnet::clutter($url),&mt('Changed display status').'<br />','0','0'); |
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
} else { |
} else { |
&redirect_back($r,&Apache::lonnet::clutter($url),&mt('Changed display status').'<br />','0','0','',$ENV{'form.previous'}); |
$textline = "<b>$lt{'twnp'}</b>"; |
} |
} |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
$r->send_http_header; |
|
$r->print (<<ENDREDIR); |
|
<html> |
|
<head> |
|
<title>New posts marked as read</title> |
|
<meta http-equiv="pragma" content="no-cache" /> |
|
<meta HTTP-EQUIV="Refresh" CONTENT="2; url=$feedurl" /> |
|
</head> |
|
<body bgcolor="#FFFFFF" onLoad='if (window.name!="loncapaclient") { this.document.reldt.submit(); self.close(); }'> |
|
<img align="right" src="/adm/lonIcons/lonlogos.gif" /> |
|
$textline |
|
<form name="reldt" action="$feedurl" target="loncapaclient"> |
|
</form> |
|
<br /><a href="$feedurl">Continue</a> |
|
</body> |
|
</html> |
|
ENDREDIR |
return OK; |
return OK; |
} elsif (($ENV{'form.allposts'}) || ($ENV{'form.onlyunread'})) { |
} elsif ($ENV{'form.modifydisp'}) { |
# ----------------------------------------------------------------- Modify display setting for this discussion |
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
my $symb=$ENV{'form.allposts'}?$ENV{'form.allposts'}:$ENV{'form.onlyunread'}; |
my $symb=$ENV{'form.modifydisp'}; |
my $ressymb = $symb; |
|
my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) { |
my $previous=$ENV{'form.previous'}; |
$ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|; |
my ($dispchg,$markchg) = split/_/,$ENV{'form.changes'}; |
|
my $feedurl = &Apache::lonnet::clutter($url); |
|
# backward compatibility (bulletin boards used to be 'wrapped') |
|
if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) { |
|
$feedurl=~s|^/adm/wrapper||; |
} |
} |
my %discinfo = (); |
&print_display_options($r,$symb,$previous,$dispchg,$markchg,$feedurl); |
if ($ENV{'form.allposts'}) { |
return OK; |
$discinfo{$ressymb.'_showonlyunread'} = 0; |
} elsif (($ENV{'form.markondisp'}) || ($ENV{'form.markonread'}) || ($ENV{'form.allposts'}) || ($ENV{'form.onlyunread'}) ) { |
} elsif ($ENV{'form.onlyunread'}) { |
&Apache::loncommon::content_type($r,'text/html'); |
$discinfo{$ressymb.'_showonlyunread'} = 1; |
$r->send_http_header; |
|
my $previous=$ENV{'form.previous'}; |
|
my ($map,$ind,$url); |
|
if (($ENV{'form.markondisp'}) || ($ENV{'form.markonread'})) { |
|
# ---------------------- Modify setting for identification of 'NEW' posts in this discussion |
|
my $symb=$ENV{'form.markondisp'}?$ENV{'form.markondisp'}:$ENV{'form.markonread'}; |
|
my $ressymb = $symb; |
|
($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
|
unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) { |
|
$ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|; |
|
} |
|
my %discinfo = (); |
|
my $lastkey = $ressymb.'_lastread'; |
|
my $ondispkey = $ressymb.'_markondisp'; |
|
if ($ENV{'form.markondisp'}) { |
|
$discinfo{$lastkey} = time; |
|
$discinfo{$ondispkey} = 1; |
|
} elsif ($ENV{'form.markonread'}) { |
|
if ( $previous > 0 ) { |
|
$discinfo{$lastkey} = $previous; |
|
} |
|
$discinfo{$ondispkey} = 0; |
|
} |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
|
} |
|
if (($ENV{'form.allposts'}) || ($ENV{'form.onlyunread'})) { |
|
# ----------------------------------------------------------------- Modify display setting for this discussion |
|
my $symb=$ENV{'form.allposts'}?$ENV{'form.allposts'}:$ENV{'form.onlyunread'}; |
|
my $ressymb = $symb; |
|
($map,$ind,$url)=&Apache::lonnet::decode_symb($symb); |
|
unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) { |
|
$ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|; |
|
} |
|
my %discinfo = (); |
|
if ($ENV{'form.allposts'}) { |
|
$discinfo{$ressymb.'_showonlyunread'} = 0; |
|
} elsif ($ENV{'form.onlyunread'}) { |
|
$discinfo{$ressymb.'_showonlyunread'} = 1; |
|
} |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
|
} |
|
if (($ENV{'form.markonread'}) || ($ENV{'form.allposts'}) || ($ENV{'form.onlyunread'}) ) { |
|
&redirect_back($r,&Apache::lonnet::clutter($url),&mt('Changed display status').'<br />','0','0','',$previous); |
|
} else { |
|
&redirect_back($r,&Apache::lonnet::clutter($url),&mt('Changed display status').'<br />','0','0'); |
} |
} |
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
|
&redirect_back($r,&Apache::lonnet::clutter($url),&mt('Changed display status').'<br />','0','0','',$ENV{'form.previous'}); |
|
return OK; |
return OK; |
} elsif ($ENV{'form.markread'}) { |
} elsif ($ENV{'form.markread'}) { |
# ----------------------------------------------------------------- Mark new posts as read |
# ----------------------------------------------------------------- Mark new posts as read |
Line 1143 sub handler {
|
Line 1384 sub handler {
|
if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form)$/) { |
unless ($symb) { $goahead=0; } |
unless ($symb) { $goahead=0; } |
} |
} |
# backward compatibility (bulltin boards used to be 'wrapped') |
# backward compatibility (bulletin boards used to be 'wrapped') |
if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) { |
if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) { |
$feedurl=~s|^/adm/wrapper||; |
$feedurl=~s|^/adm/wrapper||; |
} |
} |