[LON-CAPA-cvs] cvs: loncom /interface lonbulletin.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Sat, 08 Jul 2006 01:23:13 -0000
raeburn Fri Jul 7 21:23:13 2006 EDT
Modified files:
/loncom/interface lonbulletin.pm
Log:
Adding breadcrumbs to group discussion board display. Group context detected from course domain and course number in URL. Corresponding groupID is determined from group entry in bulletinpage_$boardid.db file.
Index: loncom/interface/lonbulletin.pm
diff -u loncom/interface/lonbulletin.pm:1.35 loncom/interface/lonbulletin.pm:1.36
--- loncom/interface/lonbulletin.pm:1.35 Mon Apr 10 15:59:53 2006
+++ loncom/interface/lonbulletin.pm Fri Jul 7 21:23:13 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Bulletin Board Handler
#
-# $Id: lonbulletin.pm,v 1.35 2006/04/10 19:59:53 albertel Exp $
+# $Id: lonbulletin.pm,v 1.36 2006/07/08 01:23:13 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -35,6 +35,8 @@
use Apache::lontexconvert;
use Apache::lonfeedback;
use Apache::lonlocal;
+use Apache::lonhtmlcommon;
+use LONCAPA;
sub handler {
my $r = shift;
@@ -51,7 +53,7 @@
# 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');
+ 'Not in a course');
return OK;
}
@@ -65,6 +67,7 @@
my $dom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my ($group,$grp_desc);
# --------------------------------------------------------- The syllabus fields
my %syllabusfields=&Apache::lonlocal::texthash(
@@ -74,7 +77,8 @@
# ------------------------------------------------------------ Get Query String
&Apache::loncommon::get_unprocessed_cgi
- ($ENV{'QUERY_STRING'},['forcestudent','forceedit','register','origpage']);
+ ($ENV{'QUERY_STRING'},['forcestudent','forceedit','register',
+ 'origpage','group']);
# ----------------------------------------------------- Force menu registration
my %addentries;
if ($env{'form.origpage'}) {
@@ -88,6 +92,33 @@
if ($env{'form.forceedit'}) { $forceedit='edit'; }
my %syllabus=&Apache::lonnet::dump('bulletinpage_'.$marker,$dom,$crs);
+
+ my $boardurl = $r->uri;
+ if ($boardurl =~ m|/adm/\Q$dom\E/\Q$crs\E/\d+/bulletinboard|) {
+ if (!exists($syllabus{'group'})) {
+ &Apache::loncommon::simple_error_page($r,'Group information missing',
+ 'Group information missing');
+
+ return OK;
+ } else {
+ $group = $syllabus{'group'};
+ if ($group eq '') {
+ &Apache::loncommon::simple_error_page($r,'Invalid group',
+ 'Invalid group');
+ return OK;
+ }
+ my %curr_groups = &Apache::longroup::coursegroups($dom,$crs,$group);
+ if (!defined($curr_groups{$group})) {
+ &Apache::loncommon::simple_error_page($r,'Invalid group',
+ 'Invalid group');
+ return OK;
+ } else {
+ my %content = &Apache::longroup::get_group_settings(
+ $curr_groups{$group});
+ $grp_desc = &unescape($content{'description'});
+ }
+ }
+ }
# --------------------------------------- There is such a user, get environment
if ($target ne 'tex') {
@@ -99,8 +130,36 @@
'force_register' =>
$env{'form.register'}});
$r->print($start_page);
+ if ($group ne '' && $env{'form.group'} eq $group) {
+ my $gpterm = &Apache::loncommon::group_term();
+ my $ucgpterm = $gpterm;
+ $ucgpterm =~ s/^(\w)/uc($1)/e;
+ my ($groupboards,$boards) = &Apache::longroup::get_group_bbinfo(
+ $dom,$crs,$group);
+ my $boardtitle = $$boards{$marker}{'title'};
+ $boardurl .= '?register=1&group='.$group;
+ $r->print(&groupboard_breadcrumbs($dom,$crs,$group,$gpterm,
+ $ucgpterm,$grp_desc,$boardurl,$boardtitle));
+ }
+ }
+ my ($allowed);
+ if ($group ne '') {
+ $allowed=&Apache::lonnet::allowed('mdg',$env{'request.course.id'});
+ if (!$allowed) {
+ $allowed = &Apache::lonnet::allowed('cgb',$env{'request.course.id'}.
+ '/'.$group);
+ }
+ if (!$allowed) {
+ if ((!&Apache::lonnet::allowed('vcg',$env{'request.course.id'})) &&
+ (!&Apache::lonnet::allowed('vgb',$env{'request.course.id'}.
+ '/'.$group))) {
+ &print_end_page($r,$target);
+ return OK;
+ }
+ }
+ } else {
+ $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
}
- my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
my $privileged=$allowed;
if (($syllabus{'uploaded.lastmodified'}) && (!$forceedit)) {
@@ -110,12 +169,20 @@
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;
+ }
$r->print(
'<p>'.
-&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').'<br /><a href="'.$r->uri.'?forcestudent=1"><font size="+1">'.&mt('Show Student View').'</font></a>'.
+&Apache::loncommon::help_open_topic('Uploaded_Templates_TextBoxes','Help with filling in text boxes').'<br /><a href="'.$r->uri.'?'.$query_str.'"><font size="+1">'.&mt('Show Student View').'</font></a>'.
&Apache::loncommon::help_open_topic('Uploaded_Templates_PublicView').'</p>');
} elsif ($privileged and $target ne 'tex') {
- $r->print('<a href="'.$r->uri.'?forceedit=edit"><font size="+1">'
+ my $query_str = 'forceedit=edit';
+ if (($group ne '') && ($env{'form.group'} eq $group)) {
+ $query_str.='&group='.$group;
+ }
+ $r->print('<a href="'.$r->uri.'?'.$query_str.'"><font size="+1">'
.&mt('Edit').'</font></a>');
}
@@ -220,13 +287,36 @@
('board','OPEN','bulletin___'.$marker.'___'.
$r->uri)));
}
+ &print_end_page($r,$target);
+ return OK;
+}
+
+sub print_end_page {
+ my ($r,$target) = @_;
if ($target ne 'tex') {
- $r->print(&Apache::loncommon::end_page());
+ $r->print(&Apache::loncommon::end_page());
} else {
- $r->print('\end{document}');
+ $r->print('\end{document}');
}
- return OK;
-}
+}
+
+sub groupboard_breadcrumbs {
+ my ($cdom,$cnum,$group,$gpterm,$ucgpterm,$description,$boardurl,$boardtitle)= @_;
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ &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"},
+ {href=>"$boardurl",
+ text=>"$boardtitle",
+ title=>"$boardtitle"},
+ );
+ my $output .= &Apache::lonhtmlcommon::breadcrumbs(&mt('[_1] discussion boards - [_2]',$gpterm,$description));
+ return $output;
+}
1;
__END__