version 1.4, 2006/06/30 18:27:19
|
version 1.5, 2006/07/08 01:07:34
|
Line 30 use strict;
|
Line 30 use strict;
|
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::loncommon; |
use Apache::loncommon; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::lonnavmaps; |
|
use Apache::lonuserstate; |
use Apache::lonuserstate; |
use Apache::lonratedt; |
use Apache::lonratedt; |
use Apache::lonlocal; |
use Apache::lonlocal; |
Line 58 sub handler {
|
Line 57 sub handler {
|
my $now = time; |
my $now = time; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $gpterm = &Apache::loncommon::group_term(); |
my $gpterm = &Apache::loncommon::group_term(); |
|
my $ucgpterm = $gpterm; |
|
$ucgpterm =~ s/^(\w)/uc($1)/e; |
my $bodytitle = &mt('[_1] Discussion Boards',$crstype); |
my $bodytitle = &mt('[_1] Discussion Boards',$crstype); |
my $group = $env{'form.group'}; |
my $group = $env{'form.group'}; |
|
$group =~ s/\W//g; |
|
my ($description,$earlyout); |
|
|
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
if (!defined($group)) { |
if (!defined($group)) { |
$r->print(&Apache::loncommon::start_page($bodytitle)); |
$earlyout = &mt('No [_1] defined, so there are no [_1] discussion boards to display',$gpterm); |
$r->print(&mt('No [_1] defined, so there are no [_1] discussion boards to display',$gpterm)); |
$r->print(&display_error($cdom,$cnum,$group,$description,$gpterm, |
$r->print(&Apache::loncommon::end_page()); |
$ucgpterm,$bodytitle,$earlyout)); |
|
return OK; |
|
} |
|
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group); |
|
if (!defined($curr_groups{$group})) { |
|
$earlyout = &mt('Invalid [_1]',$gpterm); |
|
$r->print(&display_error($cdom,$cnum,$group,$description,$gpterm, |
|
$ucgpterm,$bodytitle,$earlyout)); |
return OK; |
return OK; |
} |
} |
|
my %content = &Apache::longroup::get_group_settings($curr_groups{$group}); |
|
my $description = &unescape($content{'description'}); |
|
|
my $can_create=&Apache::lonnet::allowed('cgb',$env{'request.course.id'}. |
my $can_create=&Apache::lonnet::allowed('cgb',$env{'request.course.id'}. |
'/'.$group); |
'/'.$group); |
my $can_view=&Apache::lonnet::allowed('pgd',$env{'request.course.id'}. |
my $can_view = &Apache::lonnet::allowed('vcg',$env{'request.course.id'}); |
|
|
|
if (!$can_view) { |
|
$can_view = &Apache::lonnet::allowed('pgd',$env{'request.course.id'}. |
'/'.$group); |
'/'.$group); |
|
} |
|
if (!$can_view) { |
|
$earlyout=&mt('You do not have privileges to view discussion boards in this [_1]',$gpterm); |
|
$r->print(&display_error($cdom,$cnum,$group,$description,$gpterm, |
|
$ucgpterm,$bodytitle,$earlyout)); |
|
return OK; |
|
} |
if (defined($env{'form.newbul'})) { |
if (defined($env{'form.newbul'})) { |
if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) { |
if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) { |
$r->print(&Apache::loncommon::start_page($bodytitle)); |
$r->print(&boards_header($cdom,$cnum,$group,$description,$gpterm, |
|
$ucgpterm,$bodytitle)); |
my ($outcome,$newurl,$bbtitle) = |
my ($outcome,$newurl,$bbtitle) = |
&create_board($cdom,$cnum,$group,$env{'form.newbul'}); |
&create_board($cdom,$cnum,$group,$env{'form.newbul'}); |
if ($outcome eq 'ok') { |
if ($outcome eq 'ok') { |
Line 96 sub handler {
|
Line 122 sub handler {
|
my $jscript; |
my $jscript; |
if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) { |
if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) { |
$jscript = qq| |
$jscript = qq| |
|
<script type="text/javascript"> |
function makebulboard() { |
function makebulboard() { |
var title=prompt('Discussion Board Title'); |
var title=prompt('Discussion Board Title'); |
if (title) { |
if (title) { |
Line 104 function makebulboard() {
|
Line 131 function makebulboard() {
|
this.document.forms.newbb.submit(); |
this.document.forms.newbb.submit(); |
} |
} |
} |
} |
|
</script> |
|; |
|; |
} |
} |
$r->print(&Apache::loncommon::start_page($bodytitle, |
$r->print(&boards_header($cdom,$cnum,$group,$description,$gpterm,$ucgpterm, |
'<script type="text/javascript">'. |
$bodytitle,$jscript)); |
$jscript.'</script>')); |
|
if (!$can_view) { |
|
$r->print(&mt('You do not have privileges to view discussion boards in this [_1]',$crstype)); |
|
return OK; |
|
} |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
my ($groupboards,$boards) = &Apache::longroup::get_group_bbinfo($cdom,$cnum, |
my ($groupboards,$boards) = &Apache::longroup::get_group_bbinfo($cdom,$cnum, |
$group); |
$group); |
if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) { |
if (($can_create) || (&Apache::lonnet::allowed('mdg',$env{'request.course.id'}))) { |
$r->print('<form method="post" name="newbb" action="/adm/groupboards">'. |
$r->print('<br /><form method="post" name="newbb" action="/adm/groupboards">'. |
"\n".'<input type="button" name="bbbutton" value="'. |
"\n".'<input type="button" name="bbbutton" value="'. |
&mt('New Discussion Board'). |
&mt('New Discussion Board'). |
'" onClick="javascript:makebulboard();" />'."\n". |
'" onClick="javascript:makebulboard();" />'."\n". |
Line 126 function makebulboard() {
|
Line 148 function makebulboard() {
|
"\n".'</form><br />'); |
"\n".'</form><br />'); |
} |
} |
if (@{$groupboards} > 0) { |
if (@{$groupboards} > 0) { |
|
$r->print('<br />'); |
foreach my $board (@{$groupboards}) { |
foreach my $board (@{$groupboards}) { |
$r->print('<a href="'.$$boards{$board}{'url'}.'?group='.$group.'">'.$$boards{$board}{'title'}.'</a><br />'); |
my $board_url = $$boards{$board}{'url'}; |
|
if ($board_url =~ /\?/) { |
|
$board_url .= '&group='.$group; |
|
} else { |
|
$board_url .= '?group='.$group; |
|
} |
|
$r->print('<a href="'.$board_url.'">'.$$boards{$board}{'title'}.'</a><br />'); |
} |
} |
} else { |
} else { |
$r->print(&mt('There are currently no discussion boards in this [_1].', |
$r->print('<br />'.&mt('There are currently no discussion boards in this [_1].', |
$gpterm)); |
$gpterm)); |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
Line 140 function makebulboard() {
|
Line 169 function makebulboard() {
|
sub create_board { |
sub create_board { |
my ($cdom,$cnum,$group,$newboard) = @_; |
my ($cdom,$cnum,$group,$newboard) = @_; |
my ($bbtitle,$newurl)=split(/\=/,$newboard); |
my ($bbtitle,$newurl)=split(/\=/,$newboard); |
|
my $outcome; |
|
my ($boardid) = ($newurl =~ m-/adm/\Q$cdom\E/\Q$cnum\E/(\d+)/bulletinboard-); |
|
if (!$boardid) { |
|
$outcome = ('error: the URL for new board was invalid'); |
|
return ($outcome,$newurl,$bbtitle); |
|
} |
$bbtitle=&unescape($bbtitle); |
$bbtitle=&unescape($bbtitle); |
$newurl=&unescape($newurl); |
$newurl=&unescape($newurl); |
my $allbbsmap = &Apache::longroup::get_bbfolder_url($cdom,$cnum,$group); |
my $allbbsmap = &Apache::longroup::get_bbfolder_url($cdom,$cnum,$group); |
my ($outcome); |
|
if ($allbbsmap =~ m|^/uploaded|) { |
if ($allbbsmap =~ m|^/uploaded|) { |
my ($errtext,$fatal)=&Apache::lonratedt::mapread($allbbsmap); |
my ($errtext,$fatal)=&Apache::lonratedt::mapread($allbbsmap); |
if (!$fatal) { |
if (!$fatal) { |
Line 155 sub create_board {
|
Line 189 sub create_board {
|
if ($fatal) { |
if ($fatal) { |
$outcome = "error: failed to store discussion boards map - $errtext\n"; |
$outcome = "error: failed to store discussion boards map - $errtext\n"; |
} else { |
} else { |
$outcome = 'ok'; |
my %boardinfo = ( |
|
'group' => $group, |
|
); |
|
$outcome = &Apache::lonnet::put('bulletinpage_'.$boardid, |
|
\%boardinfo,$cdom,$cnum); |
} |
} |
} else { |
} else { |
$outcome = "error: failed to read all discussion boards map - $errtext\n"; |
$outcome = "error: failed to read all discussion boards map - $errtext\n"; |
Line 167 sub create_board {
|
Line 205 sub create_board {
|
return ($outcome,$newurl,$bbtitle); |
return ($outcome,$newurl,$bbtitle); |
} |
} |
|
|
|
sub display_error { |
|
my ($cdom,$cnum,$group,$description,$gpterm,$ucgpterm,$bodytitle,$earlyout)=@_; |
|
my $output = &boards_header($cdom,$cnum,$group,$description,$gpterm, |
|
$ucgpterm,$bodytitle); |
|
$output .= $earlyout; |
|
$output .= &Apache::loncommon::end_page(); |
|
return $output; |
|
} |
|
|
|
sub boards_header { |
|
my ($cdom,$cnum,$group,$description,$gpterm,$ucgpterm,$bodytitle,$jscript)=@_; |
|
my $output = &Apache::loncommon::start_page($bodytitle,$jscript); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/$cdom/$cnum/$group/smppg", |
|
text=>"$ucgpterm: $description", |
|
title=>"Go to group's home page"}, |
|
{href=>"/adm/groupboards?group=$group", |
|
text=>"Discussion Boards", |
|
title=>"Display group discussion boards"},); |
|
$output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('[_1] discussion boards - [_2]',$gpterm,$description)); |
|
return $output; |
|
} |
|
|
1; |
1; |