version 1.135, 2004/11/15 22:16:59
|
version 1.139, 2004/11/17 16:42:39
|
Line 106 sub list_discussion {
|
Line 106 sub list_discussion {
|
my $userpickkey = $ressymb.'_userpick'; |
my $userpickkey = $ressymb.'_userpick'; |
my $toggkey = $ressymb.'_readtoggle'; |
my $toggkey = $ressymb.'_readtoggle'; |
my $readkey = $ressymb.'_read'; |
my $readkey = $ressymb.'_read'; |
|
$ressymb=$encsymb; |
my %dischash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$lastkey,$showkey,$markkey,$visitkey,$ondispkey,$userpickkey,$toggkey,$readkey],$ENV{'user.domain'},$ENV{'user.name'}); |
my %dischash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$lastkey,$showkey,$markkey,$visitkey,$ondispkey,$userpickkey,$toggkey,$readkey],$ENV{'user.domain'},$ENV{'user.name'}); |
my %discinfo = (); |
my %discinfo = (); |
my $showonlyunread = 0; |
my $showonlyunread = 0; |
Line 132 sub list_discussion {
|
Line 132 sub list_discussion {
|
$prevread = $dischash{$lastkey}; |
$prevread = $dischash{$lastkey}; |
} |
} |
} |
} |
&Apache::lonnet::logthis("\n last read r symb ".$lastkey); |
|
|
|
# Get information about students and non-students in course for filtering display of posts |
# Get information about students and non-students in course for filtering display of posts |
my %roleshash = (); |
my %roleshash = (); |
Line 360 imscp_v1p1.xsd http://www.imsglobal.org/
|
Line 359 imscp_v1p1.xsd http://www.imsglobal.org/
|
'<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">'. |
'<a href="/adm/feedback?threadedon='.$ressymb; |
'<a href="/adm/feedback?cmd=threadedon&symb='.$ressymb; |
if ($newpostsflag) { |
if ($newpostsflag) { |
$discussion .= '&previous='.$prevread; |
$discussion .= '&previous='.$prevread; |
} |
} |
$discussion .='">'.&mt('Threaded View').'</a> '. |
$discussion .='">'.&mt('Threaded View').'</a> '. |
'<a href="/adm/feedback?threadedoff='.$ressymb; |
'<a href="/adm/feedback?cmd=threadedoff&symb='.$ressymb; |
if ($newpostsflag) { |
if ($newpostsflag) { |
$discussion .= '&previous='.$prevread; |
$discussion .= '&previous='.$prevread; |
} |
} |
$discussion .='">'.&mt('Chronological View').'</a> |
$discussion .='">'.&mt('Chronological View').'</a> |
<a href= "/adm/feedback?sortfilter='.$ressymb; |
<a href= "/adm/feedback?cmd=sortfilter&symb='.$ressymb; |
if ($newpostsflag) { |
if ($newpostsflag) { |
$discussion .= '&previous='.$prevread; |
$discussion .= '&previous='.$prevread; |
} |
} |
Line 385 imscp_v1p1.xsd http://www.imsglobal.org/
|
Line 384 imscp_v1p1.xsd http://www.imsglobal.org/
|
$discussion .= '">'.&mt('Export').'?</a> </td>'; |
$discussion .= '">'.&mt('Export').'?</a> </td>'; |
if ($newpostsflag) { |
if ($newpostsflag) { |
if (!$markondisp) { |
if (!$markondisp) { |
$discussion .='<td align="right"><a href="/adm/feedback?markread='.$ressymb.'">'.&mt('Mark NEW posts no longer new').'</a> '; |
$discussion .='<td align="right"><a href="/adm/feedback?markread=1&symb='.$ressymb.'">'.&mt('Mark NEW posts no longer new').'</a> '; |
} else { |
} else { |
$discussion .= '<td> </td>'; |
$discussion .= '<td> </td>'; |
} |
} |
Line 980 sub build_posting_display {
|
Line 979 sub build_posting_display {
|
$$shown{$idx} = 1; |
$$shown{$idx} = 1; |
} else { |
} else { |
foreach my $role (@{$$roleinfo{$poster}}) { |
foreach my $role (@{$$roleinfo{$poster}}) { |
&Apache::lonnet::logthis("\n rolematch $rolematch\nrole $role"); |
|
if ($role =~ m/^$rolematch$/) { |
if ($role =~ m/^$rolematch$/) { |
$$shown{$idx} = 1; |
$$shown{$idx} = 1; |
last; |
last; |
Line 1657 $lt{'sdpf'}<br/> $lt{'prca'} <ol><li>$l
|
Line 1655 $lt{'sdpf'}<br/> $lt{'prca'} <ol><li>$l
|
</table> |
</table> |
<br /> |
<br /> |
<br /> |
<br /> |
|
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="previous" value="$previous" /> |
<input type="hidden" name="previous" value="$previous" /> |
<input type="hidden" name="$dispchgA" value=""/> |
<input type="hidden" name="$dispchgA" value=""/> |
<input type="hidden" name="$dispchgB" value=""/> |
<input type="hidden" name="$dispchgB" value=""/> |
Line 1678 sub print_sortfilter_options {
|
Line 1677 sub print_sortfilter_options {
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
|
|
|
&Apache::lonenc::check_encrypt(\$symb); |
my @sections = (); |
my @sections = (); |
my $section_sel = ''; |
my $section_sel = ''; |
my $numsections = 0; |
my $numsections = 0; |
Line 1814 END
|
Line 1814 END
|
sub print_showposters { |
sub print_showposters { |
my ($r,$symb,$previous,$feedurl,$sortposts) = @_; |
my ($r,$symb,$previous,$feedurl,$sortposts) = @_; |
|
|
# backward compatibility (bulletin boards used to be 'wrapped') |
&Apache::lonenc::check_encrypt(\$symb); |
my $ressymb=&wrap_symb($symb); |
|
my $crs='/'.$ENV{'request.course.id'}; |
my $crs='/'.$ENV{'request.course.id'}; |
if ($ENV{'request.course.sec'}) { |
if ($ENV{'request.course.sec'}) { |
$crs.='_'.$ENV{'request.course.sec'}; |
$crs.='_'.$ENV{'request.course.sec'}; |
} |
} |
$crs=~s/\_/\//g; |
$crs=~s/\_/\//g; |
my $seeid=&Apache::lonnet::allowed('rin',$crs); |
my $seeid=&Apache::lonnet::allowed('rin',$crs); |
my %contrib=&Apache::lonnet::restore($ressymb,$ENV{'request.course.id'}, |
my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'}, |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
my %namesort = (); |
my %namesort = (); |
Line 2444 sub modify_attachments {
|
Line 2443 sub modify_attachments {
|
if ($idx) { |
if ($idx) { |
&extract_attachments($attachmenturls,$idx,$numoldver,\$msg,\%attachments,\%currattach,$currdelold); |
&extract_attachments($attachmenturls,$idx,$numoldver,\$msg,\%attachments,\%currattach,$currdelold); |
} |
} |
|
&Apache::lonenc::check_encrypt(\$symb); |
$r->print(<<END); |
$r->print(<<END); |
<html> |
<html> |
<head> |
<head> |
Line 2737 sub handler {
|
Line 2737 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','editdisc','threadedon','threadedoff','onlyunread','allposts','onlyunmark','previous','markread','markonread','markondisp','toggoff','toggon','modifydisp','changes','navtime','navmaps','navurl','sortfilter','sortposts','applysort','rolefilter','statusfilter','sectionpick','posterlist','userpick','attach','origpage','currnewattach','deloldattach','keepold','allversions','export']); |
['hide','unhide','deldisc','postdata','preview','replydisc','editdisc','cmd','symb','onlyunread','allposts','onlyunmark','previous','markread','markonread','markondisp','toggoff','toggon','modifydisp','changes','navtime','navmaps','navurl','sortposts','applysort','rolefilter','statusfilter','sectionpick','posterlist','userpick','attach','origpage','currnewattach','deloldattach','keepold','allversions','export']); |
if ($ENV{'form.discsymb'}) { |
if ($ENV{'form.discsymb'}) { |
my ($symb,$feedurl) = &get_feedurl_and_clean_symb($ENV{'form.discsymb'}); |
my ($symb,$feedurl) = &get_feedurl_and_clean_symb($ENV{'form.discsymb'}); |
my $readkey = $symb.'_read'; |
my $readkey = $symb.'_read'; |
Line 2824 END
|
Line 2824 END
|
$ENV{'form.rolefilter'},$ENV{'form.statusfilter'}, |
$ENV{'form.rolefilter'},$ENV{'form.statusfilter'}, |
$ENV{'form.secpick'}); |
$ENV{'form.secpick'}); |
return OK; |
return OK; |
} elsif ($ENV{'form.sortfilter'}) { |
} elsif ($ENV{'form.cmd'} eq 'sortfilter') { |
my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.sortfilter'}); |
my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.symb'}); |
&print_sortfilter_options($r,$symb,$ENV{'form.previous'},$feedurl); |
&print_sortfilter_options($r,$symb,$ENV{'form.previous'},$feedurl); |
return OK; |
return OK; |
} elsif ($ENV{'form.navtime'}) { |
} elsif ($ENV{'form.navtime'}) { |
Line 2896 ENDREDIR
|
Line 2896 ENDREDIR
|
} elsif ($ENV{'form.markondisp'} || $ENV{'form.markonread'} || |
} elsif ($ENV{'form.markondisp'} || $ENV{'form.markonread'} || |
$ENV{'form.allposts'} || $ENV{'form.onlyunread'} || |
$ENV{'form.allposts'} || $ENV{'form.onlyunread'} || |
$ENV{'form.onlyunmark'} || $ENV{'form.toggoff'} || |
$ENV{'form.onlyunmark'} || $ENV{'form.toggoff'} || |
$ENV{'form.toggon'} ) { |
$ENV{'form.toggon'} || $ENV{'form.markread'}) { |
my $feedurl; |
my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.symb'}); |
if ( ($ENV{'form.toggoff'}) || ($ENV{'form.toggon'}) ) { |
my %discinfo; |
# ------------------------ Modify setting for read/unread toggle for each post |
# ------------------------ Modify setting for read/unread toggle for each post |
my $symb=$ENV{'form.toggoff'}?$ENV{'form.toggoff'}:$ENV{'form.toggon'}; |
if ($ENV{'form.toggoff'}) { $discinfo{$symb.'_readtoggle'}=0; } |
($symb,$feedurl)=&get_feedurl_and_clean_symb($symb); |
if ($ENV{'form.toggon'}) { $discinfo{$symb.'_readtoggle'}=1; } |
my %discinfo; |
|
$discinfo{$symb.'_readtoggle'}=1; |
|
if ($ENV{'form.toggoff'}) { $discinfo{$symb.'_readtoggle'}=0; } |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss', |
|
\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
|
} |
|
if (($ENV{'form.markondisp'}) || ($ENV{'form.markonread'})) { |
|
# --------- Modify setting for identification of 'NEW' posts in this discussion |
# --------- Modify setting for identification of 'NEW' posts in this discussion |
my $symb=$ENV{'form.markondisp'}?$ENV{'form.markondisp'}:$ENV{'form.markonread'}; |
if ($ENV{'form.markondisp'}) { |
($symb,$feedurl)=&get_feedurl_and_clean_symb($symb); |
$discinfo{$symb.'_lastread'} = time; |
my %discinfo; |
$discinfo{$symb.'_markondisp'} = 1; |
my $lastkey = $symb.'_lastread'; |
} |
my $ondispkey = $symb.'_markondisp'; |
if ($ENV{'form.markonread'}) { |
if ($ENV{'form.markondisp'}) { |
if ( $ENV{'form.previous'} > 0 ) { |
$discinfo{$lastkey} = time; |
$discinfo{$symb.'_lastread'} = $ENV{'form.previous'}; |
$discinfo{$ondispkey} = 1; |
} |
} elsif ($ENV{'form.markonread'}) { |
$discinfo{$symb.'_markondisp'} = 0; |
if ( $ENV{'form.previous'} > 0 ) { |
|
$discinfo{$lastkey} = $ENV{'form.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'} || |
|
$ENV{'form.onlyunmark'}) { |
|
# --------------------------------- Modify display setting for this discussion |
# --------------------------------- Modify display setting for this discussion |
my $symb; |
if ($ENV{'form.allposts'}) { |
if ($ENV{'form.allposts'}) { |
$discinfo{$symb.'_showonlyunread'} = 0; |
$symb = $ENV{'form.allposts'}; |
$discinfo{$symb.'_showonlyunmark'} = 0; |
} elsif ($ENV{'form.onlyunread'}) { |
|
$symb = $ENV{'form.onlyunread'}; |
|
} else { |
|
$symb = $ENV{'form.onlyunmark'}; |
|
} |
|
($symb,$feedurl)=&get_feedurl_and_clean_symb($symb); |
|
my %discinfo; |
|
if ($ENV{'form.allposts'}) { |
|
$discinfo{$symb.'_showonlyunread'} = 0; |
|
$discinfo{$symb.'_showonlyunmark'} = 0; |
|
} elsif ($ENV{'form.onlyunread'}) { |
|
$discinfo{$symb.'_showonlyunread'} = 1; |
|
} else { |
|
$discinfo{$symb.'_showonlyunmark'} = 1; |
|
} |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss', |
|
\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
|
} |
} |
|
if ($ENV{'form.onlyunread'}) { $discinfo{$symb.'_showonlyunread'} = 1; } |
|
if ($ENV{'form.onlyunmark'}) { $discinfo{$symb.'_showonlyunmark'} = 1; } |
|
# ----------------------------------------------------- Mark new posts not NEW |
|
if ($ENV{'form.markread'}) { $discinfo{$symb.'_lastread'} = time; } |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss', |
|
\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
my $previous=$ENV{'form.previous'}; |
my $previous=$ENV{'form.previous'}; |
if ($ENV{'form.markondisp'}) { $previous=undef; } |
if ($ENV{'form.markondisp'}) { $previous=undef; } |
&redirect_back($r,$feedurl,&mt('Changed display status').'<br />', |
&redirect_back($r,$feedurl,&mt('Changed display status').'<br />', |
'0','0','',$previous); |
'0','0','',$previous); |
return OK; |
return OK; |
} elsif ($ENV{'form.markread'}) { |
|
# ----------------------------------------------------- Mark new posts not NEW |
|
my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.markread'}); |
|
&Apache::lonnet::logthis("\n last read w symb ".$symb); |
|
my %discinfo; |
|
$discinfo{$symb.'_lastread'} = time; |
|
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss', |
|
\%discinfo,$ENV{'user.domain'},$ENV{'user.name'}); |
|
&redirect_back($r,$feedurl,&mt('Changed reading status').'<br />', |
|
'0','0'); |
|
return OK; |
|
} elsif (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) { |
} elsif (($ENV{'form.hide'}) || ($ENV{'form.unhide'})) { |
# ----------------------------------------------------------------- Hide/unhide |
# ----------------------------------------------------------------- Hide/unhide |
my $entry=$ENV{'form.hide'}?$ENV{'form.hide'}:$ENV{'form.unhide'}; |
my $entry=$ENV{'form.hide'}?$ENV{'form.hide'}:$ENV{'form.unhide'}; |
Line 3007 ENDREDIR
|
Line 2969 ENDREDIR
|
&redirect_back($r,$feedurl,&mt('Changed discussion status').'<br />', |
&redirect_back($r,$feedurl,&mt('Changed discussion status').'<br />', |
'0','0','',$ENV{'form.previous'}); |
'0','0','',$ENV{'form.previous'}); |
return OK; |
return OK; |
} elsif (($ENV{'form.threadedon'}) || ($ENV{'form.threadedoff'})) { |
} elsif ($ENV{'form.cmd'}=~/^(threadedoff|threadedon)$/) { |
my $symb; |
my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.symb'}); |
if ($ENV{'form.threadedon'}) { |
if ($ENV{'form.cmd'} eq 'threadedon') { |
$symb=$ENV{'form.threadedon'}; |
|
&Apache::lonnet::put('environment',{'threadeddiscussion' => 'on'}); |
&Apache::lonnet::put('environment',{'threadeddiscussion' => 'on'}); |
&Apache::lonnet::appenv('environment.threadeddiscussion' => 'on'); |
&Apache::lonnet::appenv('environment.threadeddiscussion' => 'on'); |
} else { |
} else { |
$symb=$ENV{'form.threadedoff'}; |
|
&Apache::lonnet::del('environment',['threadeddiscussion']); |
&Apache::lonnet::del('environment',['threadeddiscussion']); |
&Apache::lonnet::delenv('environment\.threadeddiscussion'); |
&Apache::lonnet::delenv('environment\.threadeddiscussion'); |
} |
} |
my ($symb,$feedurl)=&get_feedurl_and_clean_symb($symb); |
|
&redirect_back($r,$feedurl,&mt('Changed discussion view mode').'<br />', |
&redirect_back($r,$feedurl,&mt('Changed discussion view mode').'<br />', |
'0','0','',$ENV{'form.previous'}); |
'0','0','',$ENV{'form.previous'}); |
return OK; |
return OK; |
Line 3051 ENDREDIR
|
Line 3010 ENDREDIR
|
unless (length($ENV{'form.addnewattach'})>131072) { |
unless (length($ENV{'form.addnewattach'})>131072) { |
my $subdir = 'feedback/'.$ENV{'form.timestamp'}; |
my $subdir = 'feedback/'.$ENV{'form.timestamp'}; |
my $newattachment=&Apache::lonnet::userfileupload('addnewattach',undef,$subdir); |
my $newattachment=&Apache::lonnet::userfileupload('addnewattach',undef,$subdir); |
push @currnewattach, $newattachment; |
push @currnewattach, $newattachment; |
} |
} |
} |
} |
my $attachmenturls; |
my $attachmenturls; |
Line 3066 ENDREDIR
|
Line 3025 ENDREDIR
|
&modify_attachments($r,\@currnewattach,\@currdelold,$symb,$idx, |
&modify_attachments($r,\@currnewattach,\@currdelold,$symb,$idx, |
$attachmenturls); |
$attachmenturls); |
return OK; |
return OK; |
} elsif ($ENV{'form.chgreads'}) { |
|
my ($map,$ind,$url)=&Apache::lonnet::decode_symb($ENV{'form.chgreads'}); |
|
&redirect_back($r,&Apache::lonnet::clutter($url), |
|
&mt('Changed read status').'<br />','0','0'); |
|
return OK; |
|
} elsif ($ENV{'form.export'}) { |
} elsif ($ENV{'form.export'}) { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |