--- loncom/interface/loncoursegroups.pm 2006/07/28 18:44:27 1.58
+++ loncom/interface/loncoursegroups.pm 2006/11/20 23:49:49 1.64
@@ -1,6 +1,6 @@
# The LearningOnline Network with CAPA
#
-# $Id: loncoursegroups.pm,v 1.58 2006/07/28 18:44:27 raeburn Exp $
+# $Id: loncoursegroups.pm,v 1.64 2006/11/20 23:49:49 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -29,13 +29,14 @@ 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::lonnavmaps();
+use Apache::longroup();
+use Apache::portfolio();
use Apache::Constants qw(:common :http);
+use LONCAPA::map();
use lib '/home/httpd/lib/perl/';
use LONCAPA;
@@ -91,12 +92,13 @@ sub handler {
my $action = $env{'form.action'};
my $state = $env{'form.state'};
- if ((!defined($action)) || ($action eq 'view') || ($action eq 'modify')) {
+ if ((!defined($action)) || ($action eq 'view') || ($action eq 'modify') || ($action eq 'delete')) {
if (!defined($state)) {
$state = 'view';
}
}
- if ($action eq 'create' || $action eq 'modify' || $action eq 'view') {
+ if ($action eq 'create' || $action eq 'modify' || $action eq 'view' ||
+ $action eq 'delete') {
if ($view_permission || $manage_permission) {
if ($state eq 'view') {
&print_main_menu($r,$cdom,$cnum,\%functions,\%idx,
@@ -127,6 +129,15 @@ sub print_main_menu {
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') {
@@ -155,7 +166,7 @@ sub display_groups {
$env{'form.refpage'}.'&state=pick_task&groupname=',
view => ' 'Modify',
@@ -176,8 +187,8 @@ sub display_groups {
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 view any existing groups in this '.
+ lc($crstype).', you do not have privileges '.
'to create new groups.',
);
if ($view_permission) {
@@ -295,7 +306,9 @@ END
if (($manage_permission) &&
($env{'form.refpage'} ne 'enrl')) {
$link .= ' '.$actionlinks{'modify'}.
- $group.'">'.$lt{'modify'}.'';
+ $group.'">'.$lt{'modify'}.''.
+ ' '.$actionlinks{'delete'}.
+ $group.'">'.$lt{'delete'}.'';
}
}
$r->print(&Apache::loncommon::start_data_table_row('LC_data_table_dense').
@@ -798,6 +811,7 @@ function changeSort(caller) {
my %branchstates = ();
@{$states{'create'}} = ('pick_name','pick_members','pick_privs','result');
@{$states{'modify'}} = ('pick_task');
+ @{$states{'delete'}} = ('verify','result');
@{$branchstates{'noprivs'}} = ('result');
@{$branchstates{'settings'}} = ('change_settings','chgresult');
@{$branchstates{'members'}} = ('change_members','change_privs','memresult');
@@ -808,7 +822,7 @@ function changeSort(caller) {
push (@{$states{$action}},@{$branchstates{$env{'form.branch'}}});
}
- if (($action eq 'create') || ($action eq 'modify')) {
+ if (($action eq 'create') || ($action eq 'modify') || ($action eq 'delete')) {
my $done = 0;
my $i=0;
while ($i<@{$states{$action}} && !$done) {
@@ -829,9 +843,9 @@ function changeSort(caller) {
({href=>"/adm/dropadd",
text=>"Enrollment Manager",
faq=>9,bug=>'Instructor Interface',});
- if ($action eq 'modify') {
+ if ($action eq 'modify' || $action eq 'delete') {
&Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"/adm/coursegroups?refpage=enrl&action=modify",
+ ({href=>"/adm/coursegroups?refpage=enrl&action=$action",
text=>"Groups",
faq=>9,bug=>'Instructor Interface',});
}
@@ -867,6 +881,10 @@ function changeSort(caller) {
memresult => 'Modifications Complete',
addresult => 'Additions Complete',
);
+ %{$trail{'delete'}} = &Apache::lonlocal::texthash(
+ verify => 'Verify deletion',
+ result => 'Deletion Complete'
+ );
my %navbuttons = &Apache::lonlocal::texthash(
gtns => 'Go to next step',
gtps => 'Go to previous step',
@@ -875,14 +893,14 @@ function changeSort(caller) {
gtpp => 'Go to previous page',
adme => 'Add members',
);
- if ((($action eq 'create') || ($action eq 'modify')) &&
+ if ((($action eq 'create') || ($action eq 'modify') || ($action eq 'delete')) &&
($manage_permission)) {
for (my $i=0; $i<@{$states{$action}}; $i++) {
if ($state eq $states{$action}[$i]) {
&Apache::lonhtmlcommon::add_breadcrumb(
{text=>"$trail{$action}{$state}"});
$r->print(&Apache::lonhtmlcommon::breadcrumbs
- ("Groups Manager"));
+ ("Groups Manager","Creating_Groups"));
&display_control($r,$cdom,$cnum,$action,$state,$page,
\%sectioncount,$groupname,$description,$functions,
\@tools,$toolprivs,$fixedprivs,$startdate,$enddate,
@@ -893,16 +911,18 @@ function changeSort(caller) {
$crstype);
last;
} else {
- if (($state eq 'result') && ($i > 0)) {
- &Apache::lonhtmlcommon::add_breadcrumb(
+ if (($action eq 'create') || ($action eq 'modify')) {
+ if (($state eq 'result') && ($i > 0)) {
+ &Apache::lonhtmlcommon::add_breadcrumb(
{href=>"javascript:backPage(document.$state,'$states{$action}[0]')",
text=>"$trail{$action}{$states{$action}[$i]}"});
- } else {
- &Apache::lonhtmlcommon::add_breadcrumb(
+ } else {
+ &Apache::lonhtmlcommon::add_breadcrumb(
{href=>"javascript:backPage(document.$state,'$states{$action}[$i]')",
text=>"$trail{$action}{$states{$action}[$i]}"});
+ }
}
- }
+ }
}
} elsif (($action eq 'view') && ($view_permission)) {
&Apache::lonhtmlcommon::add_breadcrumb(
@@ -912,7 +932,6 @@ function changeSort(caller) {
&display_groups($r,$cdom,$cnum,$functions,$idx,$view_permission,
$manage_permission,$action,$state,$gpterm,$ucgpterm,
$crstype);
-
}
$r->print(&footer());
return;
@@ -1027,7 +1046,7 @@ sub display_control {
$userdata,$granularity,$quota,$specificity,
$idx,$states,$navbuttons,$gpterm,$ucgpterm);
} elsif ($state eq 'add_members') {
- &add_members_form($r,$action,$state,$page,$startdate,
+ &add_members_form($r,$cdom,$cnum,$action,$state,$page,$startdate,
$enddate,$groupname,$description,$granularity,
$quota,$sectioncount,$tools,$functions,$stored,
$states,$navbuttons,$gpterm,$ucgpterm);
@@ -1059,9 +1078,140 @@ sub display_control {
$sections,$states,$navbuttons,$memchg,
$sectioncount,$stored,$gpterm,$ucgpterm,$crstype);
}
+ } elsif ($action eq 'delete') {
+ my %stored = &retrieve_settings($cdom,$cnum,$groupname);
+ if ($state eq 'verify') {
+ &verify_delete($r,$groupname,$state,$action,$page,$states,
+ \%stored);
+ } elsif ($state eq 'result') {
+ &delete_group($r,$cdom,$cnum,$groupname);
+ }
}
}
+sub verify_delete {
+ my ($r,$groupname,$formname,$action,$page,$states,$stored) = @_;
+ $r->print(&Apache::lonhtmlcommon::echo_form_input([]));
+ $r->print(&mt("You have requested deletion of the following group: ").''.
+ $stored->{'description'}.''.
+ '
'.&mt('When a group is deleted the following occurs:').'