');
@@ -1269,9 +1275,9 @@ sub sections_selection {
$numvisible = @{$sections};
}
foreach my $sec (@{$sections}) {
- if ($sec eq '_all') {
+ if ($sec eq 'all') {
$section_sel .= ' all sections'."\n";
- } elsif ($sec eq '_nosec') {
+ } elsif ($sec eq 'none') {
$section_sel .= ' no section'."\n";
} else {
$section_sel .= ' '.$sec."\n";
@@ -2588,7 +2594,9 @@ sub member_privileges_form {
}
$specificity = $env{'form.specificity'};
} else {
- @defprivs = @{$$stored{'defpriv'}};
+ if (defined($$stored{'defpriv'})) {
+ @defprivs = @{$$stored{'defpriv'}};
+ }
$specificity = $$stored{'specificity'};
}
my @showtools;
@@ -2772,7 +2780,9 @@ sub process_request {
@defprivs = @temp;
}
} else {
- @defprivs = @{$$stored{'defpriv'}};
+ if (defined($$stored{'defpriv'})) {
+ @defprivs = @{$$stored{'defpriv'}};
+ }
}
my $outcome;
@@ -2852,9 +2862,6 @@ sub write_group_data {
if (defined($env{'form.sec_'.$role})) {
my @autosections=&Apache::loncommon::get_env_multiple('form.sec_'.
$role);
- if (grep/^_all$/,@autosections) {
- @autosections = sort {$a cmp $b} keys(%{$sectioncount});
- }
$autosec .= '';
foreach my $sec (@autosections) {
$autosec .= ''.$sec.'';
@@ -2898,6 +2905,7 @@ sub process_membership {
my $num_ok = 0;
my $num_fail = 0;
my %group_privs = ();
+ my %curr_privs = ();
my %tooltype = ();
foreach my $tool (@{$tools}) {
@@ -2936,6 +2944,7 @@ sub process_membership {
my @expire = ();
my @deletion = ();
my @reenable = ();
+ my @unchanged = ();
if ($state eq 'memresult') {
if (ref($$memchg{'activate'}) eq 'ARRAY') {
@activate = @{$$memchg{'activate'}};
@@ -2949,21 +2958,25 @@ sub process_membership {
if (ref($$memchg{'reenable'}) eq 'ARRAY') {
@reenable = @{$$memchg{'reenable'}};
}
+ my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum,
+ $groupname);
+ foreach my $key (sort(keys(%membership))) {
+ if ($key =~ /^\Q$groupname\E:([^:]+:[^:]+)$/) {
+ (undef,undef,$curr_privs{$1})=split(/:/,$membership{$key},3);
+ }
+ }
if (@expire + @deletion > 0) {
- my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum,
- $groupname);
foreach my $user (@expire) {
- my ($currend,$currstart,@userprivs) =
- split(/:/,$membership{$groupname.':'.$user});
- $group_privs{$user} = join(':',@userprivs);
+ my ($currend,$currstart,$grp_privs) =
+ split(/:/,$membership{$groupname.':'.$user},3);
if ($currstart > $now) {
$currstart = $now;
}
$usersettings{$groupname.':'.$user} = $now.':'.$currstart.':'.
- $group_privs{$user};
+ $grp_privs;
if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname,
$user,$now,$currstart,
- $group_privs{$user}) eq 'ok') {
+ $grp_privs) eq 'ok') {
push(@{$added{'expired'}},$user);
$num_ok ++;
} else {
@@ -2987,10 +3000,17 @@ sub process_membership {
}
foreach my $user (sort(keys(%{$usertools}))) {
+ if ((grep(/^$user$/,@expire)) || (grep(/^$user$/,@deletion))) {
+ next;
+ }
my $type;
my $start = $startdate;
my $end = $enddate;
if ($state eq 'memresult') {
+ if ($curr_privs{$user} eq $group_privs{$user}) {
+ push(@unchanged,$user);
+ next;
+ }
$type = 'modified';
if (@activate > 0) {
if (grep/^$user$/,@activate) {
@@ -3023,7 +3043,7 @@ sub process_membership {
if ($num_ok) {
foreach my $type (sort(keys(%added))) {
$r->print(&mt('The following users were successfully [_1]',$type));
- if (!($type eq 'deleted' || $type eq 'expired')) {
+ if (!($type eq 'deleted' || $type eq 'expired')) {
$r->print(&mt(' with the following privileges'));
}
$r->print(': ');
@@ -3044,6 +3064,7 @@ sub process_membership {
}
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.' ');
}
+ $r->print(' ');
}
}
if ($num_fail) {
@@ -3053,11 +3074,19 @@ sub process_membership {
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.' ');
}
}
+ $r->print(' ');
+ }
+ if (@unchanged > 0) {
+ $r->print(&mt('No change occurred for the following users: '));
+ foreach my $user (sort(@unchanged)) {
+ $r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.' ');
+ }
+ $r->print(' ');
}
if ($roster_result eq 'ok') {
- $r->print(' Group membership list updated.');
+ $r->print(' '.&mt('Group membership list updated.'));
} else {
- $r->print(' An error occurred while updating the group membership list -'.$roster_result.' ');
+ $r->print(' '.&mt('An error occurred while updating the group membership list -').$roster_result.' ');
}
return;
}
@@ -3115,7 +3144,7 @@ sub automapping {
'.$$lt{'auad'}.':
- on off');
+ ');
if ($action eq 'modify') {
$r->print(' ('.$$lt{'curr'}.' '.$$lt{$add}.')');
}
@@ -3127,7 +3156,7 @@ sub automapping {
'.$$lt{'auex'}.':
- on off');
+ ');
if ($action eq 'modify') {
$r->print(' ('.$$lt{'curr'}.' '.$$lt{$drop}.')');
}
@@ -3150,8 +3179,8 @@ sub mapping_settings {
my @sections = keys(%{$sectioncount});
if (@sections > 0) {
@sections = sort {$a cmp $b} @sections;
- unshift(@sections,'_nosec'); # Put 'no sections' next
- unshift(@sections,'_all'); # Put 'all' at the front of the list
+ unshift(@sections,'none'); # Put 'no sections' next
+ unshift(@sections,'all'); # Put 'all' at the front of the list
}
&topic_bar($r,$tabcol,$image,$$lt{'pirs'});
$r->print('
@@ -3175,8 +3204,15 @@ sub mapping_settings {
my $plrole=&Apache::lonnet::plaintext($role);
my $sections_sel;
if (@sections > 0) {
- $sections_sel='