version 1.13, 2006/04/10 19:59:53
|
version 1.20, 2006/05/18 22:13:48
|
Line 30 use Apache::loncommon;
|
Line 30 use Apache::loncommon;
|
use Apache::lonhtmlcommon; |
use Apache::lonhtmlcommon; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnavmaps; |
use Apache::lonnavmaps; |
|
use Apache::longroup; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
|
|
sub handler { |
sub handler { |
Line 37 sub handler {
|
Line 38 sub handler {
|
|
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
|
|
if ($r->header_only) { |
if ($r->header_only) { |
return OK; |
return OK; |
} |
} |
Line 106 sub print_main_menu {
|
Line 107 sub print_main_menu {
|
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/coursegroups", |
({href=>"/adm/coursegroups", |
text=>"Course Groups",}); |
text=>"Course Groups",}); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course Groups')); |
(undef,'Course Groups')); |
|
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, |
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, |
$view_permission,$manage_permission,$action,$rowColor1, |
$view_permission,$manage_permission,$action,$rowColor1, |
$rowColor2); |
$rowColor2); |
Line 155 sub display_groups {
|
Line 155 sub display_groups {
|
if (!defined($action)) { |
if (!defined($action)) { |
$action = 'view'; |
$action = 'view'; |
} |
} |
my %curr_groups; |
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) { |
if (%curr_groups) { |
$r->print('<br /><br />'); |
$r->print('<br /><br />'); |
$r->print(&Apache::lonhtmlcommon::start_pick_box()); |
$r->print(&Apache::lonhtmlcommon::start_pick_box()); |
$r->print(<<"END"); |
$r->print(<<"END"); |
Line 183 END
|
Line 183 END
|
my %Sortby = (); |
my %Sortby = (); |
foreach my $group (sort(keys(%curr_groups))) { |
foreach my $group (sort(keys(%curr_groups))) { |
%{$grp_info{$group}} = |
%{$grp_info{$group}} = |
&Apache::loncommon::get_group_settings( |
&Apache::longroup::get_group_settings( |
$curr_groups{$group}); |
$curr_groups{$group}); |
my $members_result = &group_members($cdom,$cnum,$group, |
my $members_result = &group_members($cdom,$cnum,$group, |
\%grp_info); |
\%grp_info); |
Line 246 END
|
Line 246 END
|
if ($action eq 'modify' || $action eq 'delete') { |
if ($action eq 'modify' || $action eq 'delete') { |
$link .= $group; |
$link .= $group; |
} else { |
} else { |
$link .= $group.'/grppg?register=1'; |
$link .= $group.'/grppg'; |
} |
} |
$link .= '">'.$lt{$action}.'</a>'; |
$link .= '">'.$lt{$action}.'</a>'; |
$r->print('<tr bgcolor="'.$rowColor.'"><td><small>'.$link.'</small></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>'); |
$r->print('<tr bgcolor="'.$rowColor.'"><td><small>'.$link.'</small></td><td><small>'.$group.'</small></td><td><small>'.$description.'</small></td><td><small>'.$creator.'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($creation).'</small></td><td><small>'. &Apache::lonnavmaps::timeToHumanString($modified).'</small></td><td><small>'.$functionality.'</small></td><td><small>'.$quota.'</small></td><td><small>'.$totalmembers.'</small></td><td><small>'.$totalfiles.'</small></td><td><small>'.$boards.'</small></td><td><small>'.$diskuse.'</small></td></tr>'); |
Line 268 END
|
Line 268 END
|
my @coursegroups = split(/:/,$env{'request.course.groups'}); |
my @coursegroups = split(/:/,$env{'request.course.groups'}); |
if (@coursegroups > 0) { |
if (@coursegroups > 0) { |
$r->print('<br /><br />'); |
$r->print('<br /><br />'); |
my %curr_groups; |
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
if (&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum)) { |
if (%curr_groups) { |
foreach my $group (@coursegroups) { |
foreach my $group (@coursegroups) { |
my %group_info = &Apache::loncommon::get_group_settings( |
my %group_info = &Apache::longroup::get_group_settings( |
$curr_groups{$group}); |
$curr_groups{$group}); |
my $description = &Apache::lonnet::unescape( |
my $description = &Apache::lonnet::unescape( |
$group_info{description}); |
$group_info{description}); |
my ($uname,$udom) = split(/:/,$group_info{creator}); |
my ($uname,$udom) = split(/:/,$group_info{creator}); |
$r->print('<font size="+1"><a href="/adm/'.$udom.'/'.$uname.'/'.$group.'/grppg?register=1">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />'); |
$r->print('<font size="+1"><a href="/adm/'.$udom.'/'.$uname.'/'.$group.'/grppg">'.$group,'</a><font><br /><small>'.$description.'</small><br /><br />'); |
} |
} |
} |
} |
} else { |
} else { |
Line 434 sub group_administration {
|
Line 434 sub group_administration {
|
); |
); |
if (ref($stored{'autorole'}) eq 'ARRAY') { |
if (ref($stored{'autorole'}) eq 'ARRAY') { |
foreach my $role (@{$stored{'autorole'}}) { |
foreach my $role (@{$stored{'autorole'}}) { |
$elements{'modify'}{'change_settings'}{'sec_'.$role} = 'selectbox'; |
unless ($role eq 'cc') { |
|
$elements{'modify'}{'change_settings'}{'sec_'.$role} = |
|
'selectbox'; |
|
} |
} |
} |
} |
} |
%{$elements{'create'}{'pick_members'}} = ( |
%{$elements{'create'}{'pick_members'}} = ( |
Line 455 sub group_administration {
|
Line 458 sub group_administration {
|
(($state eq 'pick_name') || ($state eq 'pick_privs'))) || |
(($state eq 'pick_name') || ($state eq 'pick_privs'))) || |
(($action eq 'modify') && (($state eq 'change_settings') || |
(($action eq 'modify') && (($state eq 'change_settings') || |
($state eq 'add_members')))) { |
($state eq 'add_members')))) { |
my $numsections = &Apache::loncommon::get_sections($cdom,$cnum, |
%sectioncount = &Apache::loncommon::get_sections($cdom,$cnum); |
\%sectioncount); |
if (%sectioncount) { |
if ($numsections > 0) { |
|
$elements{'create'}{'pick_name'}{'sectionpick'} = 'selectbox'; |
$elements{'create'}{'pick_name'}{'sectionpick'} = 'selectbox'; |
$elements{'modify'}{'change_mapping'}{'sectionpick'} = 'selectbox'; |
$elements{'modify'}{'change_mapping'}{'sectionpick'} = 'selectbox'; |
$elements{'modify'}{'add_members'}{'sectionpick'} = 'selectbox'; |
$elements{'modify'}{'add_members'}{'sectionpick'} = 'selectbox'; |
Line 474 sub group_administration {
|
Line 476 sub group_administration {
|
} |
} |
if (defined($env{'form.sectionpick'})) { |
if (defined($env{'form.sectionpick'})) { |
@sections=&Apache::loncommon::get_env_multiple('form.sectionpick'); |
@sections=&Apache::loncommon::get_env_multiple('form.sectionpick'); |
if (grep/^_all$/,@sections) { |
if (grep/^all$/,@sections) { |
@sections = sort {$a cmp $b} keys(%sectioncount); |
@sections = sort {$a cmp $b} keys(%sectioncount); |
} |
} |
} |
} |
Line 559 sub group_administration {
|
Line 561 sub group_administration {
|
|
|
if (($state eq 'pick_privs') || ($state eq 'change_privs') || |
if (($state eq 'pick_privs') || ($state eq 'change_privs') || |
(($specificity eq 'No') && |
(($specificity eq 'No') && |
(($state eq 'result') || ($state eq 'memresult')))) { |
(($state eq 'addresult') || ($state eq 'memresult')))) { |
foreach my $tool (@tools) { |
foreach my $tool (@tools) { |
my @values = &Apache::loncommon::get_env_multiple('form.user_'.$tool); |
my @values = &Apache::loncommon::get_env_multiple('form.user_'.$tool); |
foreach my $user (@values) { |
foreach my $user (@values) { |
Line 689 function changeSort(caller) {
|
Line 691 function changeSort(caller) {
|
document.$state.sortby.value = caller; |
document.$state.sortby.value = caller; |
document.$state.submit(); |
document.$state.submit(); |
} |
} |
|
|
|; |
|; |
$jscript .= &Apache::lonhtmlcommon::set_form_elements( |
$jscript .= &Apache::lonhtmlcommon::set_form_elements( |
\%{$elements{$action}{$state}},\%stored); |
\%{$elements{$action}{$state}},\%stored); |
Line 772 function changeSort(caller) {
|
Line 774 function changeSort(caller) {
|
&Apache::lonhtmlcommon::add_breadcrumb( |
&Apache::lonhtmlcommon::add_breadcrumb( |
{text=>"$trail{$action}{$state}"}); |
{text=>"$trail{$action}{$state}"}); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
(undef,'Course Groups Manager')); |
('Course Groups Manager')); |
&display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page, |
&display_control($r,$cdom,$cnum,$tabcol,$action,$state,$page, |
\%sectioncount,$groupname,$description,$functions, |
\%sectioncount,$groupname,$description,$functions, |
\@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate, |
\@tools,\%toolprivs,\%fixedprivs,$startdate,$enddate, |
Line 797 function changeSort(caller) {
|
Line 799 function changeSort(caller) {
|
&Apache::lonhtmlcommon::add_breadcrumb( |
&Apache::lonhtmlcommon::add_breadcrumb( |
{text=>"View groups"}); |
{text=>"View groups"}); |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
$r->print(&Apache::lonhtmlcommon::breadcrumbs |
(undef,'Course Groups Manager')); |
('Course Groups Manager')); |
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, |
&display_groups($r,$cdom,$cnum,$function,$tabcol,$functions,$idx, |
$view_permission,$manage_permission,$action, |
$view_permission,$manage_permission,$action, |
$rowColor1,$rowColor2); |
$rowColor1,$rowColor2); |
Line 809 function changeSort(caller) {
|
Line 811 function changeSort(caller) {
|
|
|
sub retrieve_settings { |
sub retrieve_settings { |
my ($cdom,$cnum,$groupname) = @_; |
my ($cdom,$cnum,$groupname) = @_; |
my %groupinfo; |
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$groupname); |
|
|
|
return if (!%curr_groups); |
|
|
|
my %groupinfo = |
|
&Apache::longroup::get_group_settings($curr_groups{$groupname}); |
|
|
my %stored; |
my %stored; |
my %curr_groups; |
|
my $numgroups = &Apache::loncommon::coursegroups(\%curr_groups,$cdom, |
$stored{'description'} = |
$cnum,$groupname); |
&Apache::lonnet::unescape($groupinfo{'description'}); |
if ($numgroups > 0) { |
$stored{'startdate'} = $groupinfo{'startdate'}; |
%groupinfo = &Apache::loncommon::get_group_settings( |
$stored{'enddate'} = $groupinfo{'enddate'}; |
$curr_groups{$groupname}); |
if ($stored{'enddate'} == 0) { |
$stored{'description'} = &Apache::lonnet::unescape( |
$stored{'no_end_date'} = 1; |
$groupinfo{'description'}); |
} |
$stored{'startdate'} = $groupinfo{'startdate'}; |
$stored{'granularity'} = $groupinfo{'granularity'}; |
$stored{'enddate'} = $groupinfo{'enddate'}; |
$stored{'specificity'} = $groupinfo{'specificity'}; |
if ($stored{'enddate'} == 0) { |
$stored{'creation'} = $groupinfo{'creation'}; |
$stored{'no_end_date'} = 1; |
$stored{'creator'} = $groupinfo{'creator'}; |
} |
|
$stored{'granularity'} = $groupinfo{'granularity'}; |
foreach my $tool (sort(keys(%{$groupinfo{'functions'}}))) { |
$stored{'specificity'} = $groupinfo{'specificity'}; |
if ($groupinfo{functions}{$tool} eq 'on') { |
$stored{'creation'} = $groupinfo{'creation'}; |
push(@{$stored{tool}},$tool); |
$stored{'creator'} = $groupinfo{'creator'}; |
} |
|
} |
foreach my $tool (sort(keys(%{$groupinfo{'functions'}}))) { |
foreach my $role (@{$groupinfo{'roles'}}) { |
if ($groupinfo{functions}{$tool} eq 'on') { |
push(@{$stored{roles}},$role); |
push(@{$stored{tool}},$tool); |
} |
} |
foreach my $type (@{$groupinfo{'types'}}) { |
} |
push(@{$stored{types}},$type); |
foreach my $role (@{$groupinfo{'roles'}}) { |
} |
push(@{$stored{roles}},$role); |
foreach my $section (@{$groupinfo{'sectionpick'}}) { |
} |
push(@{$stored{sectionpick}},$section); |
foreach my $type (@{$groupinfo{'types'}}) { |
} |
push(@{$stored{types}},$type); |
foreach my $defpriv (@{$groupinfo{'defpriv'}}) { |
} |
push(@{$stored{defpriv}},$defpriv); |
foreach my $section (@{$groupinfo{'sectionpick'}}) { |
} |
push(@{$stored{sectionpick}},$section); |
$stored{'autoadd'} = $groupinfo{'autoadd'}; |
} |
$stored{'autodrop'} = $groupinfo{'autodrop'}; |
foreach my $defpriv (@{$groupinfo{'defpriv'}}) { |
if (exists($groupinfo{'autosec'})) { |
push(@{$stored{defpriv}},$defpriv); |
foreach my $role (sort(keys(%{$groupinfo{'autosec'}}))) { |
} |
if (ref($groupinfo{'autosec'}{$role}) eq 'ARRAY') { |
$stored{'autoadd'} = $groupinfo{'autoadd'}; |
foreach my $section (@{$groupinfo{'autosec'}{$role}}) { |
$stored{'autodrop'} = $groupinfo{'autodrop'}; |
push (@{$stored{'sec_'.$role}},$section); |
if (exists($groupinfo{'autosec'})) { |
} |
foreach my $role (sort(keys(%{$groupinfo{'autosec'}}))) { |
if (@{$groupinfo{'autosec'}{$role}} > 0) { |
foreach my $section (@{$groupinfo{'autosec'}{$role}}) { |
push(@{$stored{'autorole'}},$role); |
push (@{$stored{'sec_'.$role}},$section); |
} |
} |
|
if (@{$groupinfo{'autosec'}{$role}} > 0) { |
|
push(@{$stored{'autorole'}},$role); |
|
} |
|
} |
} |
} |
} |
} |
} |
return %stored; |
return %stored; |
} |
} |
Line 1213 sub membership_options {
|
Line 1217 sub membership_options {
|
previous => &mt('Previously had access'), |
previous => &mt('Previously had access'), |
future => &mt('Will have future access'), |
future => &mt('Will have future access'), |
); |
); |
|
|
my @roles = ('st','cc','in','ta','ep','cr'); |
my @roles = ('st','cc','in','ta','ep','cr'); |
|
|
my @sections = keys(%{$sectioncount}); |
my @sections = keys(%{$sectioncount}); |
Line 1249 sub membership_options {
|
Line 1253 sub membership_options {
|
$r->print(&Apache::lonhtmlcommon::role_select_row(\@roles)); |
$r->print(&Apache::lonhtmlcommon::role_select_row(\@roles)); |
if (@sections > 0) { |
if (@sections > 0) { |
@sections = sort {$a cmp $b} @sections; |
@sections = sort {$a cmp $b} @sections; |
unshift(@sections,'_all'); # Put 'all' at the front of the list |
unshift(@sections,'all'); # Put 'all' at the front of the list |
unshift(@sections,'_nosec'); # Put 'no sections' next |
unshift(@sections,'none'); # Put 'no sections' next |
$r->print('<td> </td> |
$r->print('<td> </td> |
<td colspan="3" align="center" valign="top">'. |
<td colspan="3" align="center" valign="top">'. |
§ions_selection(\@sections,'sectionpick').'</td>'); |
§ions_selection(\@sections,'sectionpick').'</td>'); |
Line 1271 sub sections_selection {
|
Line 1275 sub sections_selection {
|
$numvisible = @{$sections}; |
$numvisible = @{$sections}; |
} |
} |
foreach my $sec (@{$sections}) { |
foreach my $sec (@{$sections}) { |
if ($sec eq '_all') { |
if ($sec eq 'all') { |
$section_sel .= ' <option value="'.$sec.'" />all sections'."\n"; |
$section_sel .= ' <option value="'.$sec.'" />all sections'."\n"; |
} elsif ($sec eq '_nosec') { |
} elsif ($sec eq 'none') { |
$section_sel .= ' <option value="'.$sec.'" />no section'."\n"; |
$section_sel .= ' <option value="'.$sec.'" />no section'."\n"; |
} else { |
} else { |
$section_sel .= ' <option value="'.$sec.'" />'.$sec."\n"; |
$section_sel .= ' <option value="'.$sec.'" />'.$sec."\n"; |
Line 2309 END
|
Line 2313 END
|
$r->print('<td align="left"><small>'); |
$r->print('<td align="left"><small>'); |
if ($granularity eq 'Yes') { |
if ($granularity eq 'Yes') { |
foreach my $tool (@{$current{$user}{newtools}}) { |
foreach my $tool (@{$current{$user}{newtools}}) { |
$r->print('<nobr><label><input type="checkbox" |
$r->print('<nobr><label><input type="checkbox" |
name="user_'.$tool.'" value="'. |
name="user_'.$tool.'" value="'. |
$user.'" />'.$tool. |
$user.'" />'.$tool. |
'</label></nobr> '); |
'</label></nobr> '); |
Line 2590 sub member_privileges_form {
|
Line 2594 sub member_privileges_form {
|
} |
} |
$specificity = $env{'form.specificity'}; |
$specificity = $env{'form.specificity'}; |
} else { |
} else { |
@defprivs = @{$$stored{'defpriv'}}; |
if (defined($$stored{'defpriv'})) { |
|
@defprivs = @{$$stored{'defpriv'}}; |
|
} |
$specificity = $$stored{'specificity'}; |
$specificity = $$stored{'specificity'}; |
} |
} |
my @showtools; |
my @showtools; |
Line 2712 END
|
Line 2718 END
|
'<br />'); |
'<br />'); |
&display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools, |
&display_defprivs($r,$tabcol,$rowColor1,$rowColor2,$tools, |
$toolprivs,\@defprivs); |
$toolprivs,\@defprivs); |
|
|
} |
} |
} else { |
} else { |
if (keys(%{$usertools}) > 0) { |
if (keys(%{$usertools}) > 0) { |
Line 2775 sub process_request {
|
Line 2780 sub process_request {
|
@defprivs = @temp; |
@defprivs = @temp; |
} |
} |
} else { |
} else { |
@defprivs = @{$$stored{'defpriv'}}; |
if (defined($$stored{'defpriv'})) { |
|
@defprivs = @{$$stored{'defpriv'}}; |
|
} |
} |
} |
|
|
my $outcome; |
my $outcome; |
Line 2811 sub write_group_data {
|
Line 2818 sub write_group_data {
|
'creation','modified','creator','granularity', |
'creation','modified','creator','granularity', |
'specificity','autoadd','autodrop'); |
'specificity','autoadd','autodrop'); |
my @mult_attributes = ('roles','types','sectionpick','defpriv'); |
my @mult_attributes = ('roles','types','sectionpick','defpriv'); |
|
|
my %groupinfo = ( |
my %groupinfo = ( |
description => $esc_description, |
description => $esc_description, |
startdate => $startdate, |
startdate => $startdate, |
Line 2850 sub write_group_data {
|
Line 2857 sub write_group_data {
|
} |
} |
my $autosec; |
my $autosec; |
my @autorole = &Apache::loncommon::get_env_multiple('form.autorole'); |
my @autorole = &Apache::loncommon::get_env_multiple('form.autorole'); |
|
|
foreach my $role (@autorole) { |
foreach my $role (@autorole) { |
if (defined($env{'form.sec_'.$role})) { |
if (defined($env{'form.sec_'.$role})) { |
my @autosections=&Apache::loncommon::get_env_multiple('form.sec_'. |
my @autosections=&Apache::loncommon::get_env_multiple('form.sec_'. |
$role); |
$role); |
if (grep/^_all$/,@autosections) { |
|
@autosections = sort {$a cmp $b} keys(%{$sectioncount}); |
|
} |
|
$autosec .= '<role id="'.$role.'">'; |
$autosec .= '<role id="'.$role.'">'; |
foreach my $sec (@autosections) { |
foreach my $sec (@autosections) { |
$autosec .= '<section>'.$sec.'</section>'; |
$autosec .= '<section>'.$sec.'</section>'; |
Line 2901 sub process_membership {
|
Line 2905 sub process_membership {
|
my $num_ok = 0; |
my $num_ok = 0; |
my $num_fail = 0; |
my $num_fail = 0; |
my %group_privs = (); |
my %group_privs = (); |
|
my %curr_privs = (); |
my %tooltype = (); |
my %tooltype = (); |
|
|
foreach my $tool (@{$tools}) { |
foreach my $tool (@{$tools}) { |
Line 2939 sub process_membership {
|
Line 2944 sub process_membership {
|
my @expire = (); |
my @expire = (); |
my @deletion = (); |
my @deletion = (); |
my @reenable = (); |
my @reenable = (); |
|
my @unchanged = (); |
if ($state eq 'memresult') { |
if ($state eq 'memresult') { |
if (ref($$memchg{'activate'}) eq 'ARRAY') { |
if (ref($$memchg{'activate'}) eq 'ARRAY') { |
@activate = @{$$memchg{'activate'}}; |
@activate = @{$$memchg{'activate'}}; |
Line 2952 sub process_membership {
|
Line 2958 sub process_membership {
|
if (ref($$memchg{'reenable'}) eq 'ARRAY') { |
if (ref($$memchg{'reenable'}) eq 'ARRAY') { |
@reenable = @{$$memchg{'reenable'}}; |
@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) { |
if (@expire + @deletion > 0) { |
my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum, |
|
$groupname); |
|
foreach my $user (@expire) { |
foreach my $user (@expire) { |
my ($currend,$currstart,@userprivs) = |
my ($currend,$currstart,$grp_privs) = |
split(/:/,$membership{$groupname.':'.$user}); |
split(/:/,$membership{$groupname.':'.$user},3); |
$group_privs{$user} = join(':',@userprivs); |
|
if ($currstart > $now) { |
if ($currstart > $now) { |
$currstart = $now; |
$currstart = $now; |
} |
} |
$usersettings{$groupname.':'.$user} = $now.':'.$currstart.':'. |
$usersettings{$groupname.':'.$user} = $now.':'.$currstart.':'. |
$group_privs{$user}; |
$grp_privs; |
if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname, |
if (&Apache::lonnet::modify_group_roles($cdom,$cnum,$groupname, |
$user,$now,$currstart, |
$user,$now,$currstart, |
$group_privs{$user}) eq 'ok') { |
$grp_privs) eq 'ok') { |
push(@{$added{'expired'}},$user); |
push(@{$added{'expired'}},$user); |
$num_ok ++; |
$num_ok ++; |
} else { |
} else { |
Line 2990 sub process_membership {
|
Line 3000 sub process_membership {
|
} |
} |
|
|
foreach my $user (sort(keys(%{$usertools}))) { |
foreach my $user (sort(keys(%{$usertools}))) { |
|
if ((grep(/^$user$/,@expire)) || (grep(/^$user$/,@deletion))) { |
|
next; |
|
} |
my $type; |
my $type; |
my $start = $startdate; |
my $start = $startdate; |
my $end = $enddate; |
my $end = $enddate; |
if ($state eq 'memresult') { |
if ($state eq 'memresult') { |
|
if ($curr_privs{$user} eq $group_privs{$user}) { |
|
push(@unchanged,$user); |
|
next; |
|
} |
$type = 'modified'; |
$type = 'modified'; |
if (@activate > 0) { |
if (@activate > 0) { |
if (grep/^$user$/,@activate) { |
if (grep/^$user$/,@activate) { |
Line 3026 sub process_membership {
|
Line 3043 sub process_membership {
|
if ($num_ok) { |
if ($num_ok) { |
foreach my $type (sort(keys(%added))) { |
foreach my $type (sort(keys(%added))) { |
$r->print(&mt('The following users were successfully [_1]',$type)); |
$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(&mt(' with the following privileges')); |
} |
} |
$r->print(':<br />'); |
$r->print(':<br />'); |
Line 3047 sub process_membership {
|
Line 3064 sub process_membership {
|
} |
} |
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.'<br />'); |
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.$privlist.'<br />'); |
} |
} |
|
$r->print('<br />'); |
} |
} |
} |
} |
if ($num_fail) { |
if ($num_fail) { |
Line 3056 sub process_membership {
|
Line 3074 sub process_membership {
|
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />'); |
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />'); |
} |
} |
} |
} |
|
$r->print('<br />'); |
|
} |
|
if (@unchanged > 0) { |
|
$r->print(&mt('No change occurred for the following users:<br />')); |
|
foreach my $user (sort(@unchanged)) { |
|
$r->print($$userdata{$user}[$$idx{fullname}].' - '.$user.'<br />'); |
|
} |
|
$r->print('<br />'); |
} |
} |
if ($roster_result eq 'ok') { |
if ($roster_result eq 'ok') { |
$r->print('<br />Group membership list updated.'); |
$r->print('<br />'.&mt('Group membership list updated.')); |
} else { |
} else { |
$r->print('<br />An error occurred while updating the group membership list -'.$roster_result.'<br />'); |
$r->print('<br />'.&mt('An error occurred while updating the group membership list -').$roster_result.'<br />'); |
} |
} |
return; |
return; |
} |
} |
Line 3118 sub automapping {
|
Line 3144 sub automapping {
|
<td> </td> |
<td> </td> |
<td colspan="3"> |
<td colspan="3"> |
<nobr>'.$$lt{'auad'}.': |
<nobr>'.$$lt{'auad'}.': |
<input type="radio" name="autoadd" value="on" />on <input type="radio" name="autoadd" value="off" />off'); |
<label><input type="radio" name="autoadd" value="on" />on </label><label><input type="radio" name="autoadd" value="off" checked="checked" />off</label>'); |
if ($action eq 'modify') { |
if ($action eq 'modify') { |
$r->print(' ('.$$lt{'curr'}.' <b>'.$$lt{$add}.'</b>)'); |
$r->print(' ('.$$lt{'curr'}.' <b>'.$$lt{$add}.'</b>)'); |
} |
} |
Line 3130 sub automapping {
|
Line 3156 sub automapping {
|
<td> </td> |
<td> </td> |
<td colspan="3"> |
<td colspan="3"> |
<nobr>'.$$lt{'auex'}.': |
<nobr>'.$$lt{'auex'}.': |
<input type="radio" name="autodrop" value="on" />on <input type="radio" name="autodrop" value="off" />off'); |
<label><input type="radio" name="autodrop" value="on" />on </label><label><input type="radio" name="autodrop" value="off" checked="checked" />off</label>'); |
if ($action eq 'modify') { |
if ($action eq 'modify') { |
$r->print(' ('.$$lt{'curr'}.' <b>'.$$lt{$drop}.'</b>)'); |
$r->print(' ('.$$lt{'curr'}.' <b>'.$$lt{$drop}.'</b>)'); |
} |
} |
Line 3153 sub mapping_settings {
|
Line 3179 sub mapping_settings {
|
my @sections = keys(%{$sectioncount}); |
my @sections = keys(%{$sectioncount}); |
if (@sections > 0) { |
if (@sections > 0) { |
@sections = sort {$a cmp $b} @sections; |
@sections = sort {$a cmp $b} @sections; |
unshift(@sections,'_nosec'); # Put 'no sections' next |
unshift(@sections,'none'); # Put 'no sections' next |
unshift(@sections,'_all'); # Put 'all' at the front of the list |
unshift(@sections,'all'); # Put 'all' at the front of the list |
} |
} |
&topic_bar($r,$tabcol,$image,$$lt{'pirs'}); |
&topic_bar($r,$tabcol,$image,$$lt{'pirs'}); |
$r->print(' |
$r->print(' |
Line 3178 sub mapping_settings {
|
Line 3204 sub mapping_settings {
|
my $plrole=&Apache::lonnet::plaintext($role); |
my $plrole=&Apache::lonnet::plaintext($role); |
my $sections_sel; |
my $sections_sel; |
if (@sections > 0) { |
if (@sections > 0) { |
$sections_sel='<td>'.§ions_selection(\@sections,'sec_'.$role). |
if ($role eq 'cc') { |
'</td>'; |
$sections_sel = '<td align="right">'. |
|
&mt('all sections').'<input type="hidden" '. |
|
'name="sec_cc" value="all" /></td>'; |
|
} else { |
|
$sections_sel='<td align="right">'. |
|
§ions_selection(\@sections,'sec_'.$role). |
|
'</td>'; |
|
} |
} |
} |
if ($rowNum %2 == 1) { |
if ($rowNum %2 == 1) { |
$rowColor = $rowColor1; |
$rowColor = $rowColor1; |
Line 3212 sub mapping_settings {
|
Line 3245 sub mapping_settings {
|
} |
} |
|
|
sub standard_roles { |
sub standard_roles { |
my @roles = ('st','ep','ta','in','cc'); |
my @roles = ('cc','in','ta','ep','st'); |
return @roles; |
return @roles; |
} |
} |
|
|
Line 3412 function toggleTools(field,caller) {
|
Line 3445 function toggleTools(field,caller) {
|
|
|
sub validate_groupname { |
sub validate_groupname { |
my ($groupname,$action,$cdom,$cnum) = @_; |
my ($groupname,$action,$cdom,$cnum) = @_; |
my %sectioncount; |
my %sectioncount = &Apache::loncommon::get_sections($cdom,$cnum); |
my $numsec=&Apache::loncommon::get_sections($cdom,$cnum,\%sectioncount); |
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
my %curr_groups; |
|
my $numgroups=&Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum); |
|
|
|
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
igna => 'Invalid group name', |
igna => 'Invalid group name', |
tgne => 'The group name entered ', |
tgne => 'The group name entered ', |
Line 3430 sub validate_groupname {
|
Line 3461 sub validate_groupname {
|
thgr => '- does not correspond to the name of an existing'. |
thgr => '- does not correspond to the name of an existing'. |
' group ', |
' group ', |
); |
); |
|
|
my $exitmsg = '<b>'.$lt{'igna'}.'</b><br /><br />'.$lt{'tgne'}.' "'. |
my $exitmsg = '<b>'.$lt{'igna'}.'</b><br /><br />'.$lt{'tgne'}.' "'. |
$groupname.'" '; |
$groupname.'" '; |
my $dupmsg = $lt{'grna'}; |
my $dupmsg = $lt{'grna'}; |
Line 3439 sub validate_groupname {
|
Line 3470 sub validate_groupname {
|
$earlyout = $exitmsg.$lt{'isno'}.'<br />'.$lt{'gnmo'}; |
$earlyout = $exitmsg.$lt{'isno'}.'<br />'.$lt{'gnmo'}; |
return $earlyout; |
return $earlyout; |
} |
} |
if ($numsec) { |
if (exists($sectioncount{$groupname})) { |
if (exists($sectioncount{$groupname})) { |
return $exitmsg.$lt{'cnnb'}.&mt('a section').$lt{'inth'}. |
$earlyout = $exitmsg.$lt{'cnnb'}.&mt('a section').$lt{'inth'}. |
'<br />'.$lt{'grna'}; |
'<br />'.$lt{'grna'}; |
|
return $earlyout; |
|
} |
|
} |
} |
if ($action eq 'create') { |
if ($action eq 'create' |
if ($numgroups) { |
&& exists($curr_groups{$groupname})) { |
if (exists($curr_groups{$groupname})) { |
|
$earlyout = $exitmsg.$lt{'cnnb'}.&mt('an existing group'). |
return $exitmsg.$lt{'cnnb'}.&mt('an existing group'). |
$lt{'inth'}.'<br />'.$lt{'grna'}; |
$lt{'inth'}.'<br />'.$lt{'grna'}; |
return $earlyout; |
|
} |
|
} |
|
} elsif ($action eq 'modify') { |
} elsif ($action eq 'modify') { |
unless(exists($curr_groups{$groupname})) { |
unless(exists($curr_groups{$groupname})) { |
$earlyout = &mt('Group name:').' '.$groupname.$lt{'thgr'}.$lt{'inth'}; |
$earlyout = &mt('Group name:').' '.$groupname.$lt{'thgr'}.$lt{'inth'}; |