[LON-CAPA-cvs] cvs: loncom /interface lonfeedback.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Mon, 15 Nov 2004 21:35:38 -0000
This is a MIME encoded message
--albertel1100554538
Content-Type: text/plain
albertel Mon Nov 15 16:35:38 2004 EDT
Modified files:
/loncom/interface lonfeedback.pm
Log:
- even more better encrypturl support in discussions
--albertel1100554538
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20041115163538.txt"
Index: loncom/interface/lonfeedback.pm
diff -u loncom/interface/lonfeedback.pm:1.132 loncom/interface/lonfeedback.pm:1.133
--- loncom/interface/lonfeedback.pm:1.132 Sun Nov 14 02:54:41 2004
+++ loncom/interface/lonfeedback.pm Mon Nov 15 16:35:37 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Feedback
#
-# $Id: lonfeedback.pm,v 1.132 2004/11/14 07:54:41 albertel Exp $
+# $Id: lonfeedback.pm,v 1.133 2004/11/15 21:35:37 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -68,7 +68,7 @@
}
sub list_discussion {
- my ($mode,$status,$symb)=@_;
+ my ($mode,$status,$ressymb)=@_;
my $outputtarget=$ENV{'form.grade_target'};
if (defined($ENV{'form.export'})) {
if($ENV{'form.export'}) {
@@ -86,21 +86,17 @@
$crs.='_'.$ENV{'request.course.sec'};
}
$crs=~s/\_/\//g;
- unless ($symb) {
- $symb=&Apache::lonnet::symbread();
- }
- unless ($symb) { return ''; }
+ unless ($ressymb) { $ressymb=&Apache::lonnet::symbread(); }
+ unless ($ressymb) { return ''; }
+ $ressymb=&wrap_symb($ressymb);
+ my $encsymb=&Apache::lonenc::check_encrypt($ressymb);
+ my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs)
+ && ($ressymb=~/\.(problem|exam|quiz|assess|survey|form)$/));
+
my %usernamesort = ();
my %namesort =();
my %subjectsort = ();
-# backward compatibility (bulletin boards used to be 'wrapped')
- my $ressymb=$symb;
- if ($mode eq 'board') {
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- }
- $ressymb=&Apache::lonenc::check_encrypt($ressymb);
+
# Get discussion display settings for this discussion
my $lastkey = $ressymb.'_lastread';
my $showkey = $ressymb.'_showonlyunread';
@@ -125,7 +121,6 @@
# Retain identification of "NEW" posts identified in last display, if continuing 'previous' browsing of posts.
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['previous','sortposts','rolefilter','statusfilter','sectionpick','totposters']);
my $sortposts = $ENV{'form.sortposts'};
- my $rolefilter = $ENV{'form.rolefilter'};
my $statusfilter = $ENV{'form.statusfilter'};
my $sectionpick = $ENV{'form.sectionpick'};
my $totposters = $ENV{'form.totposters'};
@@ -137,11 +132,12 @@
$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
my %roleshash = ();
my %roleinfo = ();
- if ($rolefilter) {
+ if ($ENV{'form.rolefilter'}) {
%roleshash = &Apache::lonnet::dump('nohist_userroles',$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},$ENV{'course.'.$ENV{'request.course.id'}.'.num'});
foreach (keys %roleshash) {
my ($role,$uname,$udom,$sec) = split/:/,$_;
@@ -204,8 +200,6 @@
$visit ++;
my $seeid=&Apache::lonnet::allowed('rin',$crs);
- my $viewgrades=(&Apache::lonnet::allowed('vgr',$crs)
- && ($symb=~/\.(problem|exam|quiz|assess|survey|form)$/));
my @discussionitems=();
my %shown = ();
my @posteridentity=();
@@ -231,7 +225,7 @@
$discinfo{$visitkey} = $visit;
&Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'});
- &build_posting_display(\%usernamesort,\%subjectsort,\%namesort,\%notshown,\%newitem,\%dischash,\%shown,\%alldiscussion,\%imsitems,\%imsfiles,\%roleinfo,\@discussionitems,\@replies,\@depth,\@posters,\$maxdepth,\$visible,\$newpostsflag,\$current,$status,$viewgrades,$seeid,$prevread,$sortposts,$ressymb,$target,$readkey,$showunmark,$showonlyunread,$totposters,$rolefilter,$sectionpick,$statusfilter,$toggkey,$outputtarget);
+ &build_posting_display(\%usernamesort,\%subjectsort,\%namesort,\%notshown,\%newitem,\%dischash,\%shown,\%alldiscussion,\%imsitems,\%imsfiles,\%roleinfo,\@discussionitems,\@replies,\@depth,\@posters,\$maxdepth,\$visible,\$newpostsflag,\$current,$status,$viewgrades,$seeid,$prevread,$sortposts,$encsymb,$target,$readkey,$showunmark,$showonlyunread,$totposters,$ENV{'form.rolefilter'},$sectionpick,$statusfilter,$toggkey,$outputtarget);
my $discussion='';
my $manifestfile;
@@ -361,7 +355,8 @@
}
</script>
|;
- $discussion.='<form name="readchoices" method="post" action="/adm/feedback?chgreads='.$ressymb.'"><table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">';
+ #FIXME need a <form back here for indiviaual red toggling
+ $discussion.='<form><table bgcolor="#AAAAAA" cellpadding="2" cellspacing="2" border="0">';
$discussion .='<tr><td bgcolor="#DDDDBB" colspan="'.$colspan.'">'.
'<table border="0" width="100%" bgcolor="#DDDDBB"><tr>';
if ($visible>2) {
@@ -567,7 +562,8 @@
</td>
</tr>
</table>
- <br /><br /></form>
+ <br /><br />
+ </form>
END
}
if ($outputtarget eq 'export') {
@@ -693,8 +689,8 @@
my @original=();
my @index=();
-
- my %contrib=&Apache::lonnet::restore($ressymb,$ENV{'request.course.id'},
+ my $symb=&Apache::lonenc::check_decrypt($ressymb);
+ my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
$ENV{'course.'.$ENV{'request.course.id'}.'.num'});
@@ -986,6 +982,7 @@
$$shown{$idx} = 1;
} else {
foreach my $role (@{$$roleinfo{$poster}}) {
+ &Apache::lonnet::logthis("\n rolematch $rolematch\nrole $role");
if ($role =~ m/^$rolematch$/) {
$$shown{$idx} = 1;
last;
@@ -1480,10 +1477,7 @@
sub print_display_options {
my ($r,$symb,$previous,$dispchgA,$dispchgB,$markchg,$toggchg,$feedurl) = @_;
- # backward compatibility (bulletin boards used to be 'wrapped')
- if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
- $feedurl=~s|^/adm/wrapper||;
- }
+ &dewrapper(\$feedurl);
my $function = &Apache::loncommon::get_users_function();
my $tabcolor = &Apache::loncommon::designparm($function.'.tabbg',
@@ -1681,10 +1675,8 @@
sub print_sortfilter_options {
my ($r,$symb,$previous,$feedurl) = @_;
- # backward compatibility (bulletin boards used to be 'wrapped')
- if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
- $feedurl=~s|^/adm/wrapper||;
- }
+
+ &dewrapper(\$feedurl);
my @sections = ();
my $section_sel = '';
my $numsections = 0;
@@ -1820,17 +1812,9 @@
sub print_showposters {
my ($r,$symb,$previous,$feedurl,$sortposts) = @_;
- # backward compatibility (bulletin boards used to be 'wrapped')
- if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
- $feedurl=~s|^/adm/wrapper||;
- }
+
# backward compatibility (bulletin boards used to be 'wrapped')
- my $ressymb=$symb;
- if ($ressymb =~ /bulletin___\d+___/) {
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- }
+ my $ressymb=&wrap_symb($symb);
my $crs='/'.$ENV{'request.course.id'};
if ($ENV{'request.course.sec'}) {
$crs.='_'.$ENV{'request.course.sec'};
@@ -2014,10 +1998,8 @@
my $userpicktag = '';
my $qrystr = '';
my $prevtag = '';
- # backward compatibility (bulletin boards used to be 'wrapped')
- if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
- $feedurl=~s|^/adm/wrapper||;
- }
+
+ &dewrapper(\$feedurl);
if ($feedurl=~/^\/adm\//) { $feedurl.='?register=1' };
if ($previous > 0) {
$qrystr = 'previous='.$previous;
@@ -2751,11 +2733,10 @@
&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']);
if ($ENV{'form.discsymb'}) {
- my $symb = $ENV{'form.discsymb'};
+ my ($symb,$feedurl) = &get_feedurl_and_clean_symb($ENV{'form.discsymb'});
my $readkey = $symb.'_read';
- my %readinghash = ();
my $chgcount = 0;
- %readinghash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$readkey],$ENV{'user.domain'},$ENV{'user.name'});
+ my %readinghash = &Apache::lonnet::get('nohist_'.$ENV{'request.course.id'}.'_discuss',[$readkey],$ENV{'user.domain'},$ENV{'user.name'});
foreach my $key (keys %ENV) {
if ($key =~ m/^form\.postunread_(\d+)/) {
if ($readinghash{$readkey} =~ /\.$1\./) {
@@ -2770,21 +2751,19 @@
}
}
if ($chgcount > 0) {
- &Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%readinghash,$ENV{'user.domain'},$ENV{'user.name'});
+ &Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',
+ \%readinghash,$ENV{'user.domain'},$ENV{'user.name'});
}
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $previous=$ENV{'form.previous'};
- my $feedurl = &Apache::lonnet::clutter($url);
- &redirect_back($r,$feedurl,&mt('Marked postings read/unread').'<br />','0','0','',$previous,'','','',);
+ &redirect_back($r,$feedurl,&mt('Marked postings read/unread').'<br />',
+ '0','0','',$ENV{'form.previous'},'','','',);
return OK;
}
if ($ENV{'form.allversions'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $bodytag=&Apache::loncommon::bodytag('Discussion Post Versions',
- '','');
+ my $bodytag=&Apache::loncommon::bodytag('Discussion Post Versions');
$r->print (<<END);
<html>
<head>
@@ -2797,14 +2776,10 @@
if ($ENV{'request.course.sec'}) {
$crs.='_'.$ENV{'request.course.sec'};
}
- $crs=~s/\_/\//g;
+ $crs=~s|_|/|g;
my $seeid=&Apache::lonnet::allowed('rin',$crs);
my ($symb,$idx)=split(/\:\:\:/,$ENV{'form.allversions'});
- my $ressymb=$symb;
- &Apache::lonenc::check_decrypt(\$ressymb);
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
+ ($symb)=&get_feedurl_and_clean_symb($symb);
if ($idx > 0) {
my %messages = ();
my %subjects = ();
@@ -2812,91 +2787,50 @@
my %allattachments = ();
my %imsfiles = ();
my ($screenname,$plainname);
- my %contrib=&Apache::lonnet::restore($ressymb,$ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
- my $discussion = &get_post_contents(\%contrib,$idx,$seeid,'allversions',\%messages,\%subjects,\%allattachments,\%attachmsgs,\%imsfiles,\$screenname,\$plainname);
- $r->print($discussion);
+ my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ $r->print(&get_post_contents(\%contrib,$idx,$seeid,'allversions',\%messages,\%subjects,\%allattachments,\%attachmsgs,\%imsfiles,\$screenname,\$plainname));
}
return OK;
}
if ($ENV{'form.posterlist'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.posterlist'};
- my $sortposts = $ENV{'form.sortposts'};
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $previous=$ENV{'form.previous'};
- 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||;
- }
- &print_showposters($r,$symb,$previous,$feedurl,$sortposts);
+ my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.applysort'});
+ &print_showposters($r,$symb,$ENV{'form.previous'},$feedurl,
+ $ENV{'form.sortposts'});
return OK;
}
if ($ENV{'form.userpick'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.userpick'};
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $previous=$ENV{'form.previous'};
-# backward compatibility (bulletin boards used to be 'wrapped')
- my $ressymb=$symb;
- &Apache::lonenc::check_decrypt(\$ressymb);
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- my $sort=$ENV{'form.sortposts'};
- my @posters = ();
- if (ref($ENV{'form.stuinfo'}) eq 'ARRAY') {
- @posters = $ENV{'form.stuinfo'};
- } else {
- $posters[0] = $ENV{'form.stuinfo'};
- }
+ my @posters = &Apache::loncommon::get_env_multiple('form.stuinfo');
+ my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.userpick'});
my $numpicks = @posters;
- if (defined($ENV{'form.userpick'})) {
- my %discinfo = ();
- $discinfo{$ressymb.'_userpick'} = join('&',@posters);
- &Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'});
- }
- 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||;
- }
- &redirect_back($r,$feedurl,&mt('Changed sort/filter').'<br />','0','0','',$previous,$sort,'','','',$numpicks);
+ my %discinfo;
+ $discinfo{$symb.'_userpick'} = join('&',@posters);
+ &Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',
+ \%discinfo,$ENV{'user.domain'},$ENV{'user.name'});
+ &redirect_back($r,$feedurl,&mt('Changed sort/filter').'<br />','0','0',
+ '',$ENV{'form.previous'},$ENV{'form.sortposts'},'','','',
+ $numpicks);
return OK;
}
if ($ENV{'form.applysort'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.applysort'};
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $previous=$ENV{'form.previous'};
- my $sort = $ENV{'form.sortposts'};
- my $rolefilter = $ENV{'form.rolefilter'};
- my $statusfilter = $ENV{'form.statusfilter'};
- my $secpick = $ENV{'form.sectionpick'};
- 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||;
- }
- &redirect_back($r,$feedurl,&mt('Changed sort/filter').'<br />','0','0','',$previous,$sort,$rolefilter,$statusfilter,$secpick);
+ my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.applysort'});
+ &redirect_back($r,$feedurl,&mt('Changed sort/filter').'<br />','0','0',
+ '',$ENV{'form.previous'},$ENV{'form.sortposts'},
+ $ENV{'form.rolefilter'},$ENV{'form.statusfilter'},
+ $ENV{'form.secpick'});
return OK;
} elsif ($ENV{'form.sortfilter'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.sortfilter'};
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $previous=$ENV{'form.previous'};
- 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||;
- }
- &print_sortfilter_options($r,$symb,$previous,$feedurl);
+ my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.sortfilter'});
+ &print_sortfilter_options($r,$symb,$ENV{'form.previous'},$feedurl);
return OK;
} elsif ($ENV{'form.navtime'}) {
my %discinfo = ();
@@ -2912,9 +2846,7 @@
}
my $numitems = @resources;
my $feedurl = '/adm/navmaps';
- if ($ENV{'form.navurl'}) {
- $feedurl .= '?'.$ENV{'form.navurl'};
- }
+ if ($ENV{'form.navurl'}) { $feedurl .= '?'.$ENV{'form.navurl'}; }
my %lt = &Apache::lonlocal::texthash(
'mnpa' => 'Marked "New" posts as read in a total of',
'robb' => 'resources/bulletin boards.',
@@ -2934,7 +2866,8 @@
}
my $textline = "<b>$lt{'mnpa'} $numitems $lt{'robb'}</b>";
if ($numitems > 0) {
- &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'});
} else {
$textline = "<b>$lt{'twnp'}</b>";
}
@@ -2960,65 +2893,51 @@
} elsif ($ENV{'form.modifydisp'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.modifydisp'};
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- my $previous=$ENV{'form.previous'};
- my ($dispchgA,$dispchgB,$markchg,$toggchg) = 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||;
- }
- &print_display_options($r,$symb,$previous,$dispchgA,$dispchgB,$markchg,$toggchg,$feedurl);
+ my ($symb,$feedurl)=&get_feedurl_and_clean_symb($ENV{'form.modifydisp'});
+ my ($dispchgA,$dispchgB,$markchg,$toggchg) =
+ split(/_/,$ENV{'form.changes'});
+ &print_display_options($r,$symb,$ENV{'form.previous'},$dispchgA,
+ $dispchgB,$markchg,$toggchg,$feedurl);
return OK;
- } elsif (($ENV{'form.markondisp'}) || ($ENV{'form.markonread'}) || ($ENV{'form.allposts'}) || ($ENV{'form.onlyunread'}) || $ENV{'form.onlyunmark'} || $ENV{'form.toggoff'} || $ENV{'form.toggon'} ) {
+ } elsif ($ENV{'form.markondisp'} || $ENV{'form.markonread'} ||
+ $ENV{'form.allposts'} || $ENV{'form.onlyunread'} ||
+ $ENV{'form.onlyunmark'} || $ENV{'form.toggoff'} ||
+ $ENV{'form.toggon'} ) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $previous=$ENV{'form.previous'};
- my ($map,$ind,$url);
+ my $feedurl;
if ( ($ENV{'form.toggoff'}) || ($ENV{'form.toggon'}) ) {
-# ------------------------------ 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'};
- my $ressymb = $symb;
- ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- &Apache::lonenc::check_decrypt(\$ressymb);
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- my %discinfo = ();
- my $toggkey = $ressymb.'_readtoggle';
- if ($ENV{'form.toggon'}) {
- $discinfo{$toggkey} = 1;
- } elsif ($ENV{'form.toggoff'}) {
- $discinfo{$toggkey} = 0;
- }
- &Apache::lonnet::put('nohist_'.$ENV{'request.course.id'}.'_discuss',\%discinfo,$ENV{'user.domain'},$ENV{'user.name'});
+ ($symb,$feedurl)=&get_feedurl_and_clean_symb($symb);
+ 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'};
- my $ressymb = $symb;
- ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- &Apache::lonenc::check_decrypt(\$ressymb);
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- my %discinfo = ();
- my $lastkey = $ressymb.'_lastread';
- my $ondispkey = $ressymb.'_markondisp';
+ ($symb,$feedurl)=&get_feedurl_and_clean_symb($symb);
+ my %discinfo;
+ my $lastkey = $symb.'_lastread';
+ my $ondispkey = $symb.'_markondisp';
if ($ENV{'form.markondisp'}) {
$discinfo{$lastkey} = time;
$discinfo{$ondispkey} = 1;
} elsif ($ENV{'form.markonread'}) {
- if ( $previous > 0 ) {
- $discinfo{$lastkey} = $previous;
+ 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'});
+ &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
+ if ($ENV{'form.allposts'} || $ENV{'form.onlyunread'} ||
+ $ENV{'form.onlyunmark'}) {
+# --------------------------------- Modify display setting for this discussion
my $symb;
if ($ENV{'form.allposts'}) {
$symb = $ENV{'form.allposts'};
@@ -3027,134 +2946,114 @@
} else {
$symb = $ENV{'form.onlyunmark'};
}
- my $ressymb = $symb;
- ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- &Apache::lonenc::check_decrypt(\$ressymb);
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- my %discinfo = ();
+ ($symb,$feedurl)=&get_feedurl_and_clean_symb($symb);
+ my %discinfo;
if ($ENV{'form.allposts'}) {
- $discinfo{$ressymb.'_showonlyunread'} = 0;
- $discinfo{$ressymb.'_showonlyunmark'} = 0;
+ $discinfo{$symb.'_showonlyunread'} = 0;
+ $discinfo{$symb.'_showonlyunmark'} = 0;
} elsif ($ENV{'form.onlyunread'}) {
- $discinfo{$ressymb.'_showonlyunread'} = 1;
+ $discinfo{$symb.'_showonlyunread'} = 1;
} else {
- $discinfo{$ressymb.'_showonlyunmark'} = 1;
+ $discinfo{$symb.'_showonlyunmark'} = 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'}) || ($ENV{'form.onlyunmark'}) ||($ENV{'form.toggoff'}) || ($ENV{'form.toggon'}) ) {
- &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'});
}
+ my $previous=$ENV{'form.previous'};
+ if ($ENV{'form.markondisp'}) { $previous=undef; }
+ &redirect_back($r,$feedurl,&mt('Changed display status').'<br />',
+ '0','0','',$previous);
return OK;
} elsif ($ENV{'form.markread'}) {
-# ----------------------------------------------------------------- Mark new posts not NEW
+# ----------------------------------------------------- Mark new posts not NEW
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.markread'};
- my $ressymb = $symb;
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- &Apache::lonenc::check_decrypt(\$ressymb);
- unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
- $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
- }
- my %discinfo = ();
- my $lastkey = $ressymb.'_lastread';
- $discinfo{$lastkey} = time;
- &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 reading status').'<br />','0','0');
+ 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'})) {
# ----------------------------------------------------------------- Hide/unhide
- &Apache::loncommon::content_type($r,'text/html');
- $r->send_http_header;
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
- my $entry=$ENV{'form.hide'}?$ENV{'form.hide'}:$ENV{'form.unhide'};
+ my $entry=$ENV{'form.hide'}?$ENV{'form.hide'}:$ENV{'form.unhide'};
+ my ($symb,$idx)=split(/\:\:\:/,$entry);
+ ($symb,my $feedurl)=&get_feedurl_and_clean_symb($symb);
- my ($symb,$idx)=split(/\:\:\:/,$entry);
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
+ my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
- my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ my $currenthidden=$contrib{'hidden'};
+ my $currentstudenthidden=$contrib{'studenthidden'};
-
- my $currenthidden=$contrib{'hidden'};
- my $currentstudenthidden=$contrib{'studenthidden'};
+ my $crs='/'.$ENV{'request.course.id'};
+ if ($ENV{'request.course.sec'}) {
+ $crs.='_'.$ENV{'request.course.sec'};
+ }
+ $crs=~s/\_/\//g;
+ my $seeid=&Apache::lonnet::allowed('rin',$crs);
- my $crs='/'.$ENV{'request.course.id'};
- if ($ENV{'request.course.sec'}) {
- $crs.='_'.$ENV{'request.course.sec'};
- }
- $crs=~s/\_/\//g;
- my $seeid=&Apache::lonnet::allowed('rin',$crs);
-
- if ($ENV{'form.hide'}) {
- $currenthidden.='.'.$idx.'.';
- unless ($seeid) {
- $currentstudenthidden.='.'.$idx.'.';
- }
- } else {
- $currenthidden=~s/\.$idx\.//g;
- }
- my %newhash=('hidden' => $currenthidden);
- if ( ($ENV{'form.hide'}) && (!$seeid) ) {
- $newhash{'studenthidden'} = $currentstudenthidden;
- }
+ if ($ENV{'form.hide'}) {
+ $currenthidden.='.'.$idx.'.';
+ unless ($seeid) {
+ $currentstudenthidden.='.'.$idx.'.';
+ }
+ } else {
+ $currenthidden=~s/\.$idx\.//g;
+ }
+ my %newhash=('hidden' => $currenthidden);
+ if ( ($ENV{'form.hide'}) && (!$seeid) ) {
+ $newhash{'studenthidden'} = $currentstudenthidden;
+ }
- &Apache::lonnet::store(\%newhash,$symb,$ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ &Apache::lonnet::store(\%newhash,$symb,$ENV{'request.course.id'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
- &redirect_back($r,&Apache::lonnet::clutter($url),
- &mt('Changed discussion status').'<br />','0','0','',$ENV{'form.previous'});
+ &redirect_back($r,$feedurl,&mt('Changed discussion status').'<br />',
+ '0','0','',$ENV{'form.previous'});
} elsif (($ENV{'form.threadedon'}) || ($ENV{'form.threadedoff'})) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
+ my $symb;
if ($ENV{'form.threadedon'}) {
+ $symb=$ENV{'form.threadedon'};
&Apache::lonnet::put('environment',{'threadeddiscussion' => 'on'});
&Apache::lonnet::appenv('environment.threadeddiscussion' => 'on');
} else {
+ $symb=$ENV{'form.threadedoff'};
&Apache::lonnet::del('environment',['threadeddiscussion']);
&Apache::lonnet::delenv('environment\.threadeddiscussion');
}
- my $symb=$ENV{'form.threadedon'}?$ENV{'form.threadedon'}:$ENV{'form.threadedoff'};
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
- &redirect_back($r,&Apache::lonnet::clutter($url),
- &mt('Changed discussion view mode').'<br />','0','0','',$ENV{'form.previous'});
+ my ($symb,$feedurl)=&get_feedurl_and_clean_symb($symb);
+ &redirect_back($r,$feedurl,&mt('Changed discussion view mode').'<br />',
+ '0','0','',$ENV{'form.previous'});
} elsif ($ENV{'form.deldisc'}) {
# --------------------------------------------------------------- Hide for good
- &Apache::loncommon::content_type($r,'text/html');
- $r->send_http_header;
-
- my $entry=$ENV{'form.deldisc'};
-
- my ($symb,$idx)=split(/\:\:\:/,$entry);
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
-
- my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
-
-
- my $currentdeleted=$contrib{'deleted'};
-
- $currentdeleted.='.'.$idx.'.';
-
- my %newhash=('deleted' => $currentdeleted);
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
+ my ($symb,$idx)=split(/\:\:\:/,$ENV{'form.deldisc'});
+ ($symb,my $feedurl)=&get_feedurl_and_clean_symb($symb);
+ my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ my %newhash=('deleted' => $contrib{'deleted'}.".$idx.");
&Apache::lonnet::store(\%newhash,$symb,$ENV{'request.course.id'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
- $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
-
- &redirect_back($r,&Apache::lonnet::clutter($url),
- &mt('Changed discussion status').'<br />','0','0','',$ENV{'form.previous'});
+ $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
+ $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+ &redirect_back($r,$feedurl,&mt('Changed discussion status').'<br />',
+ '0','0','',$ENV{'form.previous'});
} elsif ($ENV{'form.preview'}) {
# -------------------------------------------------------- User wants a preview
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
&show_preview($r);
} elsif ($ENV{'form.attach'}) {
@@ -3162,9 +3061,7 @@
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['subject','comment','addnewattach','delnewattach','timestamp','numoldver','idx','anondiscuss','discuss']);
- my @currnewattach = ();
- my @currdelold = ();
- my @keepold = ();
+ my (@currnewattach,@currdelold,@keepold);
&process_attachments(\@currnewattach,\@currdelold,\@keepold);
if (exists($ENV{'form.addnewattach.filename'})) {
unless (length($ENV{'form.addnewattach'})>131072) {
@@ -3173,36 +3070,24 @@
push @currnewattach, $newattachment;
}
}
- my $attachmenturls = '';
+ my $attachmenturls;
+ my ($symb) = &get_feedurl_and_clean_symb($ENV{'form.attach'});
my $idx = $ENV{'form.idx'};
- my $symb = $ENV{'form.attach'};
if ($idx) {
my %contrib=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
$ENV{'course.'.$ENV{'request.course.id'}.'.num'});
$attachmenturls = $contrib{$idx.':attachmenturl'};
}
- &modify_attachments($r,\@currnewattach,\@currdelold,$symb,$idx,$attachmenturls);
- } elsif ($ENV{'form.chgreads'}) {
- &Apache::loncommon::content_type($r,'text/html');
- $r->send_http_header;
- 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');
+ &modify_attachments($r,\@currnewattach,\@currdelold,$symb,$idx,
+ $attachmenturls);
} elsif ($ENV{'form.export'}) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- my $symb=$ENV{'form.export'};
- my $mode;
+ my ($symb,$feedurl) = &get_feedurl_and_clean_symb($ENV{'form.export'});
+ my $mode='board';
my $status='OPEN';
- my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
my $previous=$ENV{'form.previous'};
- my $feedurl = &Apache::lonnet::clutter($url);
- # backward compatibility (bulletin boards used to be 'wrapped')
- if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
- $mode = 'board';
- $feedurl=~s|^/adm/wrapper||;
- }
if ($feedurl =~ /\.(problem|exam|quiz|assess|survey|form|library)$/) {
$mode='problem';
$status=$Apache::inputtags::status[-1];
@@ -3211,72 +3096,81 @@
my $bodytag=&Apache::loncommon::bodytag('Resource Feedback and Discussion');
$r->print($bodytag.$discussion);
return OK;
+ #FIXME deleted CHGREADS needs to be readded
} else {
# ------------------------------------------------------------- Normal feedback
- my $feedurl=$ENV{'form.postdata'};
- $feedurl=~s/^http\:\/\///;
- $feedurl=~s/^$ENV{'SERVER_NAME'}//;
- $feedurl=~s/^$ENV{'HTTP_HOST'}//;
- $feedurl=~s/\?.+$//;
+ my $feedurl=$ENV{'form.postdata'};
+ $feedurl=~s/^http\:\/\///;
+ $feedurl=~s/^$ENV{'SERVER_NAME'}//;
+ $feedurl=~s/^$ENV{'HTTP_HOST'}//;
+ $feedurl=~s/\?.+$//;
- my $symb;
- if ($ENV{'form.replydisc'}) {
- $symb=(split(/\:\:\:/,$ENV{'form.replydisc'}))[0];
- my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb);
- $feedurl=&Apache::lonnet::clutter($url);
- } elsif ($ENV{'form.editdisc'}) {
- $symb=(split(/\:\:\:/,$ENV{'form.editdisc'}))[0];
- my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb);
- $feedurl=&Apache::lonnet::clutter($url);
- } elsif ($ENV{'form.origpage'}) {
- $symb="";
- } else {
- $symb=&Apache::lonnet::symbread($feedurl);
- }
- unless ($symb) {
- $symb=$ENV{'form.symb'};
- if ($symb) {
+ my $symb;
+ if ($ENV{'form.replydisc'}) {
+ $symb=(split(/\:\:\:/,$ENV{'form.replydisc'}))[0];
+ my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb);
+ $feedurl=&Apache::lonnet::clutter($url);
+ } elsif ($ENV{'form.editdisc'}) {
+ $symb=(split(/\:\:\:/,$ENV{'form.editdisc'}))[0];
my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb);
- $feedurl=&Apache::lonnet::clutter($url);
+ $feedurl=&Apache::lonnet::clutter($url);
+ } elsif ($ENV{'form.origpage'}) {
+ $symb="";
+ } else {
+ $symb=&Apache::lonnet::symbread($feedurl);
+ }
+ unless ($symb) {
+ $symb=$ENV{'form.symb'};
+ if ($symb) {
+ my ($map,$id,$url)=&Apache::lonnet::decode_symb($symb);
+ $feedurl=&Apache::lonnet::clutter($url);
+ }
+ }
+ &Apache::lonenc::check_decrypt(\$symb);
+ my $goahead=1;
+ if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form)$/) {
+ unless ($symb) { $goahead=0; }
+ }
+ # backward compatibility (bulletin boards used to be 'wrapped')
+ if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
+ $feedurl=~s|^/adm/wrapper||;
+ }
+ if (!$goahead) {
+ # Ambiguous Problem Resource
+ $r->internal_redirect('/adm/ambiguous');
+ return OK;
}
- }
- &Apache::lonenc::check_decrypt(\$symb);
- my $goahead=1;
- if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form)$/) {
- unless ($symb) { $goahead=0; }
- }
- # backward compatibility (bulletin boards used to be 'wrapped')
- if ($feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
- $feedurl=~s|^/adm/wrapper||;
- }
- if ($goahead) {
# Go ahead with feedback, no ambiguous reference
- &Apache::loncommon::content_type($r,'text/html');
- $r->send_http_header;
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
- if (
- (
- ($feedurl=~m:^/res:) && ($feedurl!~m:^/res/adm:)
- )
- ||
- ($ENV{'request.course.id'} && ($feedurl!~m:^/adm:))
- ||
- ($ENV{'request.course.id'} && ($symb=~/^bulletin\_\_\_/))
- ) {
+ unless (
+ (
+ ($feedurl=~m:^/res:) && ($feedurl!~m:^/res/adm:)
+ )
+ ||
+ ($ENV{'request.course.id'} && ($feedurl!~m:^/adm:))
+ ||
+ ($ENV{'request.course.id'} && ($symb=~/^bulletin\_\_\_/))
+ ) {
+# Unable to give feedback
+ &no_redirect_back($r,$feedurl);
+ }
# --------------------------------------------------- Print login screen header
- unless ($ENV{'form.sendit'}) {
- my $options=&screen_header($feedurl);
- if ($options) {
- &mail_screen($r,$feedurl,$options);
- } else {
- &fail_redirect($r,$feedurl);
+ unless ($ENV{'form.sendit'}) {
+ my $options=&screen_header($feedurl);
+ if ($options) {
+ &mail_screen($r,$feedurl,$options);
+ } else {
+ &fail_redirect($r,$feedurl);
+ }
+ return OK;
}
- } else {
# Get previous user input
my $prevattempts=&Apache::loncommon::get_previous_attempt(
- $symb,$ENV{'user.name'},$ENV{'user.domain'},
- $ENV{'request.course.id'});
+ $symb,$ENV{'user.name'},$ENV{'user.domain'},
+ $ENV{'request.course.id'});
# Get output from resource
my $usersaw=&resource_output($feedurl);
@@ -3284,27 +3178,28 @@
# Get resource answer (need to allow student to view grades for this to work)
&Apache::lonnet::appenv(('allowed.vgr'=>'F'));
my $useranswer=&Apache::loncommon::get_student_answers(
- $symb,$ENV{'user.name'},$ENV{'user.domain'},
- $ENV{'request.course.id'});
+ $symb,$ENV{'user.name'},$ENV{'user.domain'},
+ $ENV{'request.course.id'});
&Apache::lonnet::delenv('allowed.vgr');
# Get attachments, if any, and not too large
my $attachmenturl='';
- if (($ENV{'form.origpage'}) || ($ENV{'form.editdisc'}) || ($ENV{'form.replydisc'})) {
- my ($symb,$idx);
- if ($ENV{'form.replydisc'}) {
- ($symb,$idx)=split(/\:\:\:/,$ENV{'form.replydisc'});
- } elsif ($ENV{'form.editdisc'}) {
- ($symb,$idx)=split(/\:\:\:/,$ENV{'form.editdisc'});
- } elsif ($ENV{'form.origpage'}) {
- $symb = $ENV{'form.symb'};
- }
+ if (($ENV{'form.origpage'}) || ($ENV{'form.editdisc'}) ||
+ ($ENV{'form.replydisc'})) {
+ my ($symb,$idx);
+ if ($ENV{'form.replydisc'}) {
+ ($symb,$idx)=split(/\:\:\:/,$ENV{'form.replydisc'});
+ } elsif ($ENV{'form.editdisc'}) {
+ ($symb,$idx)=split(/\:\:\:/,$ENV{'form.editdisc'});
+ } elsif ($ENV{'form.origpage'}) {
+ $symb = $ENV{'form.symb'};
+ }
&Apache::lonenc::check_decrypt(\$symb);
- my @currnewattach = ();
- my @deloldattach = ();
- my @keepold = ();
- &process_attachments(\@currnewattach,\@deloldattach,\@keepold);
- $symb=~s|(bulletin___\d+___)adm/wrapper/|$1|;
- $attachmenturl=&construct_attachmenturl(\@currnewattach,\@keepold,$symb,$idx);
+ my @currnewattach = ();
+ my @deloldattach = ();
+ my @keepold = ();
+ &process_attachments(\@currnewattach,\@deloldattach,\@keepold);
+ $symb=~s|(bulletin___\d+___)adm/wrapper/|$1|;
+ $attachmenturl=&construct_attachmenturl(\@currnewattach,\@keepold,$symb,$idx);
} elsif ($ENV{'form.attachment.filename'}) {
unless (length($ENV{'form.attachment'})>131072) {
$attachmenturl=&Apache::lonnet::userfileupload('attachment',undef,'feedback');
@@ -3315,49 +3210,65 @@
# Assemble email
my ($email,$citations)=&assemble_email($feedurl,$message,$prevattempts,
- $usersaw,$useranswer);
+ $usersaw,$useranswer);
# Who gets this?
my ($typestyle,%to) = &decide_receiver($feedurl);
# Actually send mail
my ($status,$numsent)=&send_msg($feedurl,$email,$citations,
- $attachmenturl,%to);
+ $attachmenturl,%to);
# Discussion? Store that.
my $numpost=0;
- if ($ENV{'form.discuss'}) {
- my $subject = &clear_out_html($ENV{'form.subject'});
- $typestyle.=&adddiscuss($symb,$message,0,$attachmenturl,$subject);
- $numpost++;
- }
-
- if ($ENV{'form.anondiscuss'}) {
- my $subject = &clear_out_html($ENV{'form.subject'});
- $typestyle.=&adddiscuss($symb,$message,1,$attachmenturl,$subject);
+ if ($ENV{'form.discuss'} || $ENV{'form.anondiscuss'}) {
+ my $subject = &clear_out_html($ENV{'form.subject'});
+ my $anonmode=(defined($ENV{'form.anondiscuss'}));
+ $typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl,
+ $subject);
$numpost++;
}
-
-
+
# Receipt screen and redirect back to where came from
&redirect_back($r,$feedurl,$typestyle,$numsent,$numpost,$status,$ENV{'form.previous'});
-
- }
- } else {
-# Unable to give feedback
- &no_redirect_back($r,$feedurl);
- }
- } else {
-# Ambiguous Problem Resource
- if ( &Apache::lonnet::mod_perl_version() == 2 ) {
- &Apache::lonnet::cleanenv();
- }
- $r->internal_redirect('/adm/ambiguous');
}
-}
return OK;
}
+sub wrap_symb {
+ my ($ressymb)=@_;
+ if ($ressymb =~ /bulletin___\d+___/) {
+ unless ($ressymb =~ m|bulletin___\d+___adm/wrapper|) {
+ $ressymb=~s|(bulletin___\d+___)|$1adm/wrapper|;
+ }
+ }
+ return $ressymb;
+}
+sub dewrapper {
+ my ($feedurl)=@_;
+ if ($$feedurl=~m|^/adm/wrapper/adm/.*/bulletinboard$|) {
+ $$feedurl=~s|^/adm/wrapper||;
+ }
+}
+
+sub get_feedurl {
+ my ($symb)=@_;
+ my ($map,$ind,$url)=&Apache::lonnet::decode_symb($symb);
+ my $feedurl = &Apache::lonnet::clutter($url);
+ &dewrapper(\$feedurl);
+ return $feedurl;
+}
+
+sub get_feedurl_and_clean_symb {
+ my ($symb)=@_;
+ &Apache::lonenc::check_decrypt(\$symb);
+# backward compatibility (bulletin boards used to be 'wrapped')
+ unless ($symb =~ m|bulletin___\d+___adm/wrapper|) {
+ $symb=~s|(bulletin___\d+___)|$1adm/wrapper|;
+ }
+ my $feedurl = &get_feedurl($symb);
+ return ($symb,$feedurl);
+}
1;
__END__
--albertel1100554538--