--- loncom/interface/lonbulletin.pm 2008/01/19 15:28:52 1.45
+++ loncom/interface/lonbulletin.pm 2025/01/28 19:49:20 1.70
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Bulletin Board Handler
#
-# $Id: lonbulletin.pm,v 1.45 2008/01/19 15:28:52 raeburn Exp $
+# $Id: lonbulletin.pm,v 1.70 2025/01/28 19:49:20 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,9 +33,12 @@ use Apache::Constants qw(:common);
use Apache::loncommon;
use Apache::lonnet;
use Apache::lontexconvert;
-use Apache::lonfeedback;
+use Apache::lonfeedback;
+use Apache::lonhtmlgateway;
use Apache::lonlocal;
use Apache::lonhtmlcommon;
+use Apache::longroup;
+use Apache::lonnavmaps;
use HTML::Entities();
use LONCAPA;
@@ -48,21 +51,21 @@ sub handler {
# ------------------------------------------------------------ Print the screen
if ($target eq 'tex') {
- $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
+ $r->print(&Apache::lonprintout::print_latex_header($env{'form.latex_type'}));
}
my (undef,undef,undef,undef,$marker)=split(/\//,$r->uri);
# Is this even in a course?
if (!$env{'request.course.id'}) {
- &Apache::loncommon::simple_error_page($r,'Not in a course',
- 'Not in a course');
+ &Apache::loncommon::simple_error_page($r,'Not in a course',
+ 'Not in a course');
return OK;
}
$marker=~s/\D//g;
if (!$marker) {
- &Apache::loncommon::simple_error_page($r,'Invalid Call',
- 'Invalid Call');
+ &Apache::loncommon::simple_error_page($r,'Invalid Call',
+ 'Invalid Call');
return OK;
}
@@ -78,19 +81,19 @@ sub handler {
# ------------------------------------------------------------ Get Query String
&Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['forcestudent','forceedit','register',
+ ($ENV{'QUERY_STRING'},['forceedit','register','todocs',
'origpage','group','ref']);
# ----------------------------------------------------- Force menu registration
my %addentries;
if ($env{'form.origpage'}) {
- $addentries{'onload'} = "document.location='#newpost';";
+ $addentries{'onload'} = "document.location='#newpost';";
}
# --------------------------------------------------------------- Force Student
- my $forcestudent='';
- if ($env{'form.forcestudent'}) { $forcestudent='student'; }
-
- my $forceedit='';
- if ($env{'form.forceedit'}) { $forceedit='edit'; }
+ my ($forceedit,$forcestudent);
+ $forceedit = $env{'form.forceedit'};
+ if (!$forceedit) {
+ $forcestudent=1;
+ }
my $refarg = '';
if (exists($env{'form.ref'})) { $refarg = 'ref='.$env{'form.ref'}; }
@@ -122,18 +125,20 @@ sub handler {
}
}
}
-
+
# --------------------------------------- There is such a user, get environment
- if ($target ne 'tex') {
- my $start_page =
- &Apache::loncommon::start_page("Bulletin Board/Discussion",undef,
- {'function' => $forcestudent,
- 'add_entries' => \%addentries,
- 'domain' => $dom,
- 'force_register' =>
- $env{'form.register'}});
- $r->print($start_page);
+ if ($target ne 'tex') {
+ my ($course_or_group,$brcrum);
+ if($group eq '') {
+ $course_or_group="Course";
+ } else {
+ $course_or_group="Group";
+ }
+ my $registered;
if ($group ne '' && $env{'form.group'} eq $group) {
+ unless ($env{'form.ref'} eq 'grouplist') {
+ $registered = $env{'form.register'};
+ }
my $gpterm = &Apache::loncommon::group_term();
my $ucgpterm = $gpterm;
$ucgpterm =~ s/^(\w)/uc($1)/e;
@@ -143,10 +148,28 @@ sub handler {
if ((ref($groupboards) eq 'ARRAY') && (@{$groupboards} > 0)) {
$boardtitle = $$boards{$$groupboards[0]}{'title'};
}
- $boardurl .= '?register=1&group='.$group;
- $r->print(&groupboard_breadcrumbs($dom,$crs,$group,$refarg,$gpterm,
- $ucgpterm,$grp_desc,$boardurl,$boardtitle));
+ $boardurl .= '?group='.$group;
+ if ($registered) {
+ $boardurl .= '®ister='.$env{'form.register'};
+ } else {
+ $brcrum =
+ &groupboard_breadcrumbs($dom,$crs,$group,$refarg,$gpterm,
+ $ucgpterm,$grp_desc,$boardurl,
+ $boardtitle);
+ }
+ } else {
+ $registered = $env{'form.register'};
+ $brcrum = [];
}
+ my $start_page =
+ &Apache::loncommon::start_page("$course_or_group Discussion Board",undef,
+ {'add_entries' => \%addentries,
+ 'domain' => $dom,
+ 'bread_crumbs' => $brcrum,
+ 'group' => $group,
+ 'force_register' => $registered}
+ );
+ $r->print($start_page);
}
my ($allowed);
if ($group ne '') {
@@ -158,148 +181,117 @@ sub handler {
if (!$allowed) {
if ((!&Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''))) &&
(!&Apache::lonnet::allowed('vgb',$env{'request.course.id'}.
- '/'.$group))) {
+ '/'.$group))) {
&print_end_page($r,$target);
- return OK;
+ return OK;
}
}
} else {
$allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
}
- my $privileged=$allowed;
- if (($syllabus{'uploaded.lastmodified'}) && (!$forceedit)) {
- $forcestudent='student';
- }
- if ($target ne 'tex') { $r->print('
'); }
- if ($forcestudent or $target eq 'tex') { $allowed=0; }
-
- if ($allowed) {
- my $query_str = 'forcestudent=1';
- if (($group ne '') && ($env{'form.group'} eq $group)) {
- $query_str.='&group='.$group.'&'.$refarg;
- }
- $r->print(
- '
'.
-&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').' '.&mt('Show Student View').''.
- &Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'
');
- } elsif ($privileged and $target ne 'tex') {
- my $query_str = 'forceedit=edit';
- if (($group ne '') && ($env{'form.group'} eq $group)) {
- $query_str.='&group='.$group.'&'.$refarg;
- }
- $r->print(''
- .&mt('Edit').'');
- }
-
- if (($env{'form.uploaddoc.filename'}) &&
- ($env{'form.storeupl'}) && ($allowed)) {
- if ($env{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/i) {
- if ($syllabus{'uploaded.photourl'}) {
- &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
- }
- if ($group ne '') {
- $syllabus{'uploaded.photourl'}=
- &Apache::lonnet::userfileupload('uploaddoc',1,
- 'bulletin/'.$group.'/'.$marker);
- } else {
- $syllabus{'uploaded.photourl'}=
- &Apache::lonnet::userfileupload('uploaddoc',1,
+ if ($forcestudent or $target eq 'tex') { $allowed=0; }
+
+ if (($env{'form.uploaddoc.filename'}) &&
+ ($env{'form.storeupl'}) && ($allowed)) {
+ if ($env{'form.uploaddoc.filename'}=~/\.(gif|jpg|png|jpeg)$/i) {
+ if ($syllabus{'uploaded.photourl'}) {
+ &Apache::lonnet::removeuploadedurl($syllabus{'uploaded.photourl'});
+ }
+ if ($group ne '') {
+ $syllabus{'uploaded.photourl'}=
+ &Apache::lonnet::userfileupload('uploaddoc','coursedoc',
+ 'bulletin/'.$group.'/'.$marker);
+ } else {
+ $syllabus{'uploaded.photourl'}=
+ &Apache::lonnet::userfileupload('uploaddoc','coursedoc',
'bulletin/'.$marker);
- }
- }
- $syllabus{'uploaded.lastmodified'}=time;
- &Apache::lonnet::put('bulletinpage_'.$marker,\%syllabus,$dom,$crs);
- }
- if (($allowed) && ($env{'form.storesyl'})) {
- foreach my $syl_field (keys(%syllabusfields)) {
- my $field=$env{'form.'.$syl_field};
- $field=~s/\s+$//s;
- $field=&Apache::lonfeedback::clear_out_html($field,1);
- $syllabus{$syl_field}=$field;
- }
- $syllabus{'uploaded.lastmodified'}=time;
- &Apache::lonnet::put('bulletinpage_'.$marker,\%syllabus,$dom,$crs);
- }
+ }
+ }
+ $syllabus{'uploaded.lastmodified'}=time;
+ &Apache::lonnet::put('bulletinpage_'.$marker,\%syllabus,$dom,$crs);
+ }
+ if (($allowed) && ($env{'form.storesyl'})) {
+ foreach my $syl_field (keys(%syllabusfields)) {
+ my $field=$env{'form.'.$syl_field};
+ chomp($field);
+ my $gateway = Apache::lonhtmlgateway->new();
+ $field = $gateway->process_incoming_html($field,1);
+ $syllabus{$syl_field}=$field;
+ }
+ $syllabus{'uploaded.lastmodified'}=time;
+ &Apache::lonnet::put('bulletinpage_'.$marker,\%syllabus,$dom,$crs);
+ }
-# ---------------------------------------------------------------- Get syllabus
+# ---------------------------------------------------------------- Get discussion board
if (($syllabus{'uploaded.lastmodified'}) || ($allowed)) {
- if ($syllabus{'uploaded.photourl'}) {
- &Apache::lonnet::allowuploaded('/adm/syllabus',
- $syllabus{'uploaded.photourl'});
- $r->print('');
- }
- if ($allowed) {
- $r->print(
- '');
- }
- if ($target ne 'tex') {$r->print('');} else {$r->print('\\\\');}
+ #Print Topic as Heading
+ my $titletext=&HTML::Entities::encode($syllabus{'aaa_title'},'<>&"');;
+ if ($target ne 'tex') {
+ $r->print('
'.$titletext.'
');
+ } else {
+ $r->print('\\\\\textbf{'.&Apache::lonxml::xmlparse($r,'tex',$titletext).'}\\\\');
+ }
+ #Outputbox and Inputbox for Topic
+ if ($allowed) {
+ $r->print('');
+ }
+ if ($target ne 'tex'){
+ $r->print('