--- loncom/interface/loncoursegroups.pm 2005/10/27 23:42:17 1.2
+++ loncom/interface/loncoursegroups.pm 2006/11/28 19:46:00 1.65
@@ -1,3 +1,6 @@
+# The LearningOnline Network with CAPA
+#
+# $Id: loncoursegroups.pm,v 1.65 2006/11/28 19:46:00 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -26,153 +29,1659 @@ package Apache::loncoursegroups;
use strict;
use Apache::lonnet;
-use Apache::loncommon;
-use Apache::lonhtmlcommon;
+use Apache::loncommon();
+use Apache::lonhtmlcommon();
use Apache::lonlocal;
+use Apache::lonnavmaps();
+use Apache::longroup();
+use Apache::portfolio();
use Apache::Constants qw(:common :http);
+use LONCAPA::map();
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
sub handler {
my ($r) = @_;
+
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
-
+
if ($r->header_only) {
return OK;
}
- &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['action','state']);
-
- $r->print(&header());
-
- &Apache::lonhtmlcommon::clear_breadcrumbs();
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"/adm/groups",
- text=>"Group Management",
- faq=>9,bug=>'Instructor Interface',});
# Needs to be in a course
if (! ($env{'request.course.fn'})) {
# Not in a course
$env{'user.error.msg'}=
- "/adm/groups:mdg:0:0:Cannot create, modify or delete course groups";
+ "/adm/coursegroups:mdg:0:0:Cannot edit or view course groups";
return HTTP_NOT_ACCEPTABLE;
}
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
+ ['action','refpage','state','groupname','branch']);
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+
my $view_permission =
- &Apache::lonnet::allowed('vcg',$env{'request.course.id'});
+ &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
my $manage_permission =
- &Apache::lonnet::allowed('mdg',$env{'request.course.id'});
+ &Apache::lonnet::allowed('mdg',$env{'request.course.id'}.($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:''));
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
- if (! exists($env{'form.action'})) {
- $r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Course Group Manager'));
- &print_main_menu($r,$manage_permission,$view_permission);
- } elsif ($env{'form.action'} eq 'create' && $manage_permission) {
+ my $gpterm = &Apache::loncommon::group_term();
+ my $ucgpterm = $gpterm;
+ $ucgpterm =~ s/^(\w)/uc($1)/e;
+ my $crstype = &Apache::loncommon::course_type();
+
+ my %functions = (
+ email => 'E-mail',
+ discussion => 'Discussion boards',
+ chat => 'Chat',
+ files => 'File repository',
+ roster => 'Membership roster',
+ homepage => $ucgpterm.' home page',
+ );
+
+ my %idx = ();
+ $idx{id} = &Apache::loncoursedata::CL_ID();
+ $idx{fullname} = &Apache::loncoursedata::CL_FULLNAME();
+ $idx{udom} = &Apache::loncoursedata::CL_SDOM();
+ $idx{uname} = &Apache::loncoursedata::CL_SNAME();
+ $idx{section} = &Apache::loncoursedata::CL_SECTION();
+
+ my $action = $env{'form.action'};
+ my $state = $env{'form.state'};
+ if ((!defined($action)) || ($action eq 'view') || ($action eq 'modify') || ($action eq 'delete') || ($action eq 'reenable')) {
+ if (!defined($state)) {
+ $state = 'view';
+ }
+ }
+ if ($action eq 'create' || $action eq 'modify' || $action eq 'view' ||
+ $action eq 'delete' || $action eq 'reenable') {
+ if ($view_permission || $manage_permission) {
+ if ($state eq 'view') {
+ &print_main_menu($r,$cdom,$cnum,\%functions,\%idx,
+ $view_permission,$manage_permission,
+ $action,$state,$gpterm,$ucgpterm,$crstype);
+ } else {
+ &group_administration($r,$action,$state,$cdom,$cnum,
+ \%functions,\%idx,$view_permission,
+ $manage_permission,$gpterm,$ucgpterm,
+ $crstype);
+ }
+ } else {
+ $r->print(&mt('You do not have [_1] administration '.
+ 'privileges in this [_2]',$gpterm,lc($crstype)));
+ }
+ } else {
+ &print_main_menu($r,$cdom,$cnum,\%functions,\%idx,$view_permission,
+ $manage_permission,$action,$state,$gpterm,$ucgpterm,
+ $crstype);
+ }
+ return OK;
+}
+
+sub print_main_menu {
+ my ($r,$cdom,$cnum,$functions,$idx,$view_permission,$manage_permission,
+ $action,$state,$gpterm,$ucgpterm,$crstype) = @_;
+ my $jscript = qq|
+function changeSort(caller) {
+ document.$state.sortby.value = caller;
+ document.$state.submit();
+}
+function openGroupRoster(group,status) {
+ var url = '/adm/grouproster?';
+ url += 'group='+group+'&status='+status+'&ref=popup';
+ var title = 'Group Membership';
+ var options = 'scrollbars=1,resizable=1,menubar=0';
+ options += ',width=700,height=600';
+ rosterbrowser = open(url,title,options,'1');
+ rosterbrowser.focus();
+}\n|;
+ $r->print(&header('Groups',$jscript,$action,$state));
+ if ($env{'form.refpage'} eq 'enrl') {
&Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/coursegroups?action=create&state=',
- text=>"Create Group"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs
- (undef,'Create Group','Course_Create_Group'));
- if (! exists($env{'form.state'})) {
- &first_creation_form($r);
- } elsif ($env{'form.state'} eq 'pick_members') {
- &second_creation_form($r);
- } elsif ($env{'form.state'} eq 'complete') {
- &completed_creation($r);
+ ({href=>"/adm/dropadd",
+ text=>"Enrollment Manager"});
+ }
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/coursegroups",
+ text=>"Groups"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Groups'));
+ &display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,
+ $manage_permission,$action,$state,$gpterm,$ucgpterm,
+ $crstype);
+ $r->print(&footer());
+ return;
+}
+
+sub display_groups {
+ my ($r,$cdom,$cnum,$functions,$idx,$view_permission,
+ $manage_permission,$action,$state,$gpterm,$ucgpterm,$crstype) = @_;
+ my %curr_groups = ();
+ my %grp_info = ();
+ my %actionlinks = (
+ modify => ' ' 'Modify',
+ view => 'View',
+ delete => 'Delete',
+ reenable => 'Re-enable',
+ act => 'Action',
+ gname => 'Group Name',
+ desc => 'Group Title',
+ crea => 'Creator',
+ crtd => 'Created',
+ last => 'Last Modified',
+ func => 'Collaborative Tools',
+ quot => 'Quota (Mb)',
+ memb => 'Members',
+ file => 'Files',
+ dibd => 'Discussion Boards',
+ dius => 'Disk Use (%)',
+ nogr => 'No groups exist.',
+ crng => 'Create a new group',
+ alth => 'Although your current role has privileges'.
+ ' to view any existing groups in this '.
+ lc($crstype).', you do not have privileges '.
+ 'to create new groups.',
+ );
+ if ($view_permission) {
+ if (!defined($action)) {
+ $action = 'view';
+ }
+ my $status;
+ if ($action eq 'reenable') {
+ $status = 'deleted_groups';
+ }
+ my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,undef,
+ $status);
+ if (%curr_groups) {
+ if ($manage_permission) {
+ if (!exists($env{'form.refpage'})) {
+ $r->print('
'.$lt{'crng'}.'');
+ }
+ }
+ $r->print('
');
+ $r->print(&Apache::loncommon::start_data_table().
+ &Apache::loncommon::start_data_table_header_row());
+
+ $r->print(<<"END");
+