'.
@@ -2650,16 +2693,16 @@ sub screen_header {
}
}
if ($msgoptions) {
- $msgoptions=' '
- .' '.&mt('Send Feedback').''.&Apache::lonhtmlcommon::coursepreflink(&mt('Feedback Settings'),'feedback').'
'
- .$msgoptions;
+ $msgoptions=' '
+ .' '.&mt('Send Feedback').' '.&Apache::lonhtmlcommon::coursepreflink(&mt('Feedback Settings'),'feedback').' '.
+ ''.$msgoptions.' ';
}
if ($discussoptions) {
- $discussoptions=' '
- .' '.&mt('Discussion Contributions').''.&Apache::lonhtmlcommon::coursepreflink(&mt('Discussion Settings'),'discussion').'
'
- .$discussoptions;
+ $discussoptions=' '
+ .' '.&mt('Discussion Contributions').' '.&Apache::lonhtmlcommon::coursepreflink(&mt('Discussion Settings'),'discussion').' '.
+ ''.$discussoptions.' ';
}
- return $msgoptions.$discussoptions;
+ return &Apache::loncommon::start_data_table().$msgoptions.$discussoptions.&Apache::loncommon::end_data_table();
}
sub resource_output {
@@ -2676,9 +2719,7 @@ sub resource_output {
}
sub clear_out_html {
- my ($message,$override,$ignore_htmlarea)=@_;
- if (!$ignore_htmlarea
- && !&Apache::lonhtmlcommon::htmlareablocked()) { return $message; }
+ my ($message,$override)=@_;
# Always allow the -tag
my %html=(M=>1);
# Check if more is allowed
@@ -2687,11 +2728,12 @@ sub clear_out_html {
($override)) {
# allows
#
- #
+ #
%html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1,
- BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, DIV=>1, IMG=>1,
- M=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>1,
- H1=>1, H2=>1, H3=>1, H4=>1, H5=>1);
+ BR=>1, TT=>1, STRONG=>1, BLOCKQUOTE=>1, PRE=>1, DIV=>1, IMG=>1,
+ M=>1, CHEM=>1, ALGEBRA=>1, SUB=>1, SUP=>1, SPAN=>1,
+ H1=>1, H2=>1, H3=>1, H4=>1, H5=>1, H6=>1,
+ TABLE=>1, TR=>1, TD=>1, TH=>1, TBODY=>1);
}
# Do the substitution of everything that is not explicitly allowed
$message =~ s/\<(\/?\s*(\w+)[^\>\<]*)/
@@ -2776,7 +2818,7 @@ sub send_msg {
}
sub adddiscuss {
- my ($symb,$email,$anon,$attachmenturl,$subject)=@_;
+ my ($symb,$email,$anon,$attachmenturl,$subject,$group)=@_;
my $status='';
my $realsymb;
if ($symb=~/^bulletin___/) {
@@ -2784,9 +2826,16 @@ sub adddiscuss {
$filename=~s|^adm/wrapper/||;
$realsymb=&Apache::lonnet::symbread($filename);
}
+ my ($cnum,$cdom);
+ if ($env{'request.course.id'}) {
+ $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ }
if (&discussion_open(undef,$realsymb) &&
- &Apache::lonnet::allowed('pch',$env{'request.course.id'}.
- ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) {
+ (&Apache::lonnet::allowed('pch',$env{'request.course.id'}.
+ ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) ||
+ (($group ne '') && (&check_group_priv($group,'pgd') eq 'ok') &&
+ ($symb =~ m{^bulletin___\d+___adm/wrapper/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard$})))) {
my %contrib=('message' => $email,
'sendername' => $env{'user.name'},
@@ -2937,7 +2986,7 @@ sub show_preview {
&newline_to_br(\$message);
$message=&Apache::lonspeller::markeduptext($message);
$message=&Apache::lontexconvert::msgtexconverted($message);
- my $subject=&clear_out_html($env{'form.subject'},undef,1);
+ my $subject=&clear_out_html($env{'form.subject'});
$subject=~s/\n/\ /g;
$subject=&Apache::lontexconvert::msgtexconverted($subject);
@@ -2958,18 +3007,31 @@ sub show_preview {
}
sub contains_block_html {
+ my ($message)=@_;
+ return ($message =~ m{
+ <(br|h1|h2|h3|h4|h5|h6|p|ol|ul|table|pre|address|blockquote|center|div)
+ \s*
+ (\w+\=['"]\w+['"])*
+ \s*
+ (
+ \s*/>|
+ >.*\1\s*>
+ )}xs
+ );
+}
+
+sub tidy_html {
my ($message)=@_;
- return ($message =~ m/
- <(br|h1|h2|h3|h4|h5|h6|p|ol|ul|table|pre|address|blockquote|center|div)
- [\s]*
- ([\w]+\=['"][\w]+['"])*
- [\s]*
- (
- [\s]*[\/]>|
- >.*<\/\1[\s]*>
- )/x );
+# my $tidy = HTML::Tidy::libXML->new();
+# my $xhtml = $tidy->clean($message, 'utf-8', 1);
+# $xhtml =~ m/(.*)<\/body>/is;
+# my $clean = $1;
+# # remove any empty block-level tags
+# $clean =~ s/<(table|p|div|tbody|blockquote|m|pre|algebra|center|ol|ul|span|h1|h2|h3|h4|h5|h6)\s*\/>//i;
+# $message=$clean;
+ return $message;
}
-
+
sub newline_to_br {
my ($message)=@_;
my $newmessage;
@@ -3031,12 +3093,14 @@ END
# Breadcrumbs
my $brcrum = [{'href' => '',
'text' => 'Discussion Post Attachments'}];
+ my %parms=();
+ if ($env{'form.modal'} ne 'yes') { 'bread_crumbs' => $brcrum }
+
my $start_page =
- &Apache::loncommon::start_page('Discussion Post Attachments',$js,
- {'bread_crumbs' => $brcrum,});
+ &Apache::loncommon::start_page('Discussion Post Attachments',$js,\%parms);
my $orig_subject = &unescape($env{'form.subject'});
- my $subject=&clear_out_html($orig_subject,undef,1);
+ my $subject=&clear_out_html($orig_subject);
$subject=~s/\n/\ /g;
$subject=&Apache::lontexconvert::msgtexconverted($subject);
my $timestamp=$env{'form.timestamp'};
@@ -3394,7 +3458,7 @@ sub handler {
# --------------------------- Get query string for limited number of parameters
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['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','groupick','posterlist','userpick','attach','origpage','currnewattach','deloldattach','keepold','allversions','export','sendmessageonly','group','ref']);
+ ['modal','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','groupick','posterlist','userpick','attach','origpage','currnewattach','deloldattach','keepold','allversions','export','sendmessageonly','group','ref']);
my $group = $env{'form.group'};
my %attachmax = (
text => &mt('(128 KB max size)'),
@@ -3445,10 +3509,11 @@ sub handler {
# Breadcrumbs
my $brcrum = [{'href' => '',
'text' => 'Discussion Post Versions'}];
+
+ my %parms=();
+ if ($env{'form.modal'} ne 'yes') { 'bread_crumbs' => $brcrum }
- $r->print(&Apache::loncommon::start_page('Discussion Post Versions',undef,
- {'bread_crumbs' => $brcrum,})
- );
+ $r->print(&Apache::loncommon::start_page('Discussion Post Versions',undef,\%parms));
my $crs='/'.$env{'request.course.id'};
if ($env{'request.course.sec'}) {
@@ -3552,10 +3617,6 @@ sub handler {
$r->send_http_header;
my $logo=&Apache::loncommon::lonhttpdurl('/adm/lonIcons/lonlogos.gif');
my %onload;
- if ($env{'environment.remote'} ne 'off') {
- $onload{'onload'} =
- "if (window.name!='loncapaclient') { this.document.reldt.submit(); self.window.close(); }";
- }
my $start_page=
&Apache::loncommon::start_page('New posts marked as read',undef,
@@ -3744,7 +3805,7 @@ ENDREDIR
my $mode='board';
my $status='OPEN';
my $previous=$env{'form.previous'};
- if ($feedurl =~ /\.(problem|exam|quiz|assess|survey|form|library|task)$/) {
+ if ($feedurl =~ /$LONCAPA::assess_re/) {
$mode='problem';
$status=$Apache::inputtags::status[-1];
}
@@ -3784,7 +3845,7 @@ ENDREDIR
&dewrapper(\$feedurl);
}
my $goahead=1;
- if ($feedurl=~/\.(problem|exam|quiz|assess|survey|form|task)$/) {
+ if ($feedurl=~/$LONCAPA::assess_re/) {
unless ($symb) { $goahead=0; }
}
if (!$goahead) {
@@ -3822,7 +3883,7 @@ ENDREDIR
return OK;
}
}
- my $options=&screen_header($feedurl,$symb);
+ my $options=&screen_header($feedurl,$symb,$group);
if ($options) {
&mail_screen($r,$feedurl,$options,$symb,$attachmax{'text'});
} else {
@@ -3878,7 +3939,11 @@ ENDREDIR
}
}
# Filter HTML out of message (could be nasty)
- my $message=&clear_out_html($env{'form.comment'});
+ my $override;
+ if ($env{'form.discuss'} =~ /^(?:author|question|course|policy)$/) {
+ $override = 1;
+ }
+ my $message=&clear_out_html($env{'form.comment'},$override);
# Assemble email
my ($email,$citations)=&assemble_email($message,$prevattempts,
@@ -3888,8 +3953,7 @@ ENDREDIR
my ($typestyle,%to) = &Apache::lonmsg::decide_receiver($feedurl);
# Actually send mail
- my ($status,$numsent)=&send_msg(&clear_out_html($env{'form.subject'},
- undef,1),
+ my ($status,$numsent)=&send_msg(&clear_out_html($env{'form.subject'}),
$feedurl,$email,$citations,
$attachmenturl,$usersymb,%to);
@@ -3898,10 +3962,10 @@ ENDREDIR
if ( ($env{'form.discuss'} ne ''
&& $env{'form.discuss'} !~ /^(?:author|question|course|policy)/)
|| $env{'form.anondiscuss'} ne '') {
- my $subject = &clear_out_html($env{'form.subject'},undef,1);
+ my $subject = &clear_out_html($env{'form.subject'});
my $anonmode=($env{'form.discuss'} eq 'anon' || $env{'form.anondiscuss'} );
$typestyle.=&adddiscuss($symb,$message,$anonmode,$attachmenturl,
- $subject);
+ $subject,$group);
$numpost++;
}
@@ -3909,7 +3973,7 @@ ENDREDIR
my $blog='';
if ($env{'form.blog'}) {
- my $subject = &clear_out_html($env{'form.subject'},undef,1);
+ my $subject = &clear_out_html($env{'form.subject'});
$status.=&Apache::lonrss::addentry($env{'user.name'},
$env{'user.domain'},
'CourseBlog_'.$env{'request.course.id'},
@@ -4154,6 +4218,8 @@ None
=item newline_to_br()
+=item tidy_html()
+
=item generate_preview_button()
=item modify_attachments()