\n");
+ "\n".''.&mt('Warning: data retrieval for multiple courses can take considerable time, as this operation is not currently optimized.').''."\n");
if ($env{'form.coursepick'}) {
$r->print(''.&mt('Searching').' ...
');
}
@@ -1317,33 +1308,21 @@ sub print_userlist {
$r->rflush();
if ($context eq 'course') {
my $classlist = &Apache::loncoursedata::get_classlist();
- my $secidx = &Apache::loncoursedata::CL_SECTION();
- my $viewablesec = &viewable_section($permission);
- foreach my $student (keys(%{$classlist})) {
- my $section = $classlist->{$student}[$secidx];
- if ($viewablesec ne '') {
- if ($section ne $viewablesec) {
- next;
- } else {
- $userlist{$student} = $classlist->{$student};
- }
+ %userlist = %{$classlist};
+ if ($env{'form.showrole'} ne 'st') {
+ my $showroles;
+ if ($env{'form.showrole'} ne 'Any') {
+ $showroles = [$env{'form.showrole'}];
} else {
- $userlist{$student} = $classlist->{$student};
+ $showroles = undef;
}
+ my $withsec = 1;
+ my $hidepriv = 1;
+ my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,
+ \@statuses,$showroles,undef,$withsec,$hidepriv);
+ &gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo,
+ \%advrolehash,$permission);
}
- my $cid = $env{'request.course.id'};
- my ($cnum,$cdom) = &get_course_identity($cid);
- my $showroles;
- if ($env{'form.showrole'} ne 'Any') {
- $showroles = [$env{'form.showrole'}];
- } else {
- $showroles = undef;
- }
- my $withsec = 1;
- my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,
- \@statuses,$showroles,undef,$withsec);
- &gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo,
- \%advrolehash,$permission);
} else {
my (%cstr_roles,%dom_roles);
if ($context eq 'author') {
@@ -1392,7 +1371,8 @@ sub print_userlist {
} elsif ($env{'form.roletype'} eq 'course') {
if ($env{'form.coursepick'}) {
my %courses = &process_coursepick();
- my %allusers;
+ my %allusers;
+ my $hidepriv = 1;
foreach my $cid (keys(%courses)) {
my ($cnum,$cdom,$cdesc) = &get_course_identity($cid);
next if ($cnum eq '' || $cdom eq '');
@@ -1410,7 +1390,7 @@ sub print_userlist {
foreach my $type (@statuses) {
$access{$type} = $type;
}
- &Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users,\%userdata,\%statushash);
+ &Apache::loncommon::get_course_users($cdom,$cnum,\%access,\@roles,\@sections,\%users,\%userdata,\%statushash,$hidepriv);
foreach my $user (keys(%userdata)) {
next if (ref($userinfo{$user}) eq 'HASH');
foreach my $item ('fullname','id') {
@@ -1468,6 +1448,62 @@ sub print_userlist {
$env{'form.phase'}.'" />');
}
+sub section_group_filter {
+ my ($cnum,$cdom) = @_;
+ my @filters;
+ if ($env{'request.course.sec'} eq '') {
+ @filters = ('sec');
+ }
+ push(@filters,'grp');
+ my %name = (
+ sec => 'secfilter',
+ grp => 'grpfilter',
+ );
+ my %title = &Apache::lonlocal::texthash (
+ sec => 'Section(s)',
+ grp => 'Group(s)',
+ all => 'all',
+ none => 'none',
+ );
+ my ($output,@options);
+ foreach my $item (@filters) {
+ my $markup;
+ if ($env{'form.'.$name{$item}} eq '') {
+ $env{'form.'.$name{$item}} = 'all';
+ }
+ if ($item eq 'sec') {
+ if ($env{'form.showrole'} eq 'cc') {
+ $env{'form.'.$name{$item}} = 'none';
+ }
+ my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
+ @options = sort(keys(%sections_count));
+ } elsif ($item eq 'grp') {
+ my %curr_groups = &Apache::longroup::coursegroups();
+ @options = sort(keys(%curr_groups));
+ }
+ if (@options > 0) {
+ my $currsel;
+ $markup = ''."\n";
+ foreach my $option ('all','none',@options) {
+ $currsel = '';
+ if ($env{'form.'.$name{$item}} eq $option) {
+ $currsel = ' selected="selected" ';
+ }
+ $markup .= ' '."\n";
+ }
+ $markup .= ''."\n";
+ $output .= (' 'x3).'';
+ }
+ }
+ return $output;
+}
+
sub list_submit_button {
my ($text) = @_;
return '';
@@ -1860,7 +1896,19 @@ END
my $alert = &mt("You must select at least one user by checking a user's 'Select' checkbox");
my $singconfirm = &mt(' for a single user?');
my $multconfirm = &mt(' for multiple users?');
- my $date_sec_selector = &date_section_javascript($context,$setting,$statusmode);
+ my $date_sec_selector = &date_section_javascript($context,$setting,$statusmode);
+ my %lt = &Apache::lonlocal::texthash(
+ acwi => 'Access will be set to start immediately',
+ asyo => 'as you did not select an end date in the pop-up window',
+ accw => 'Access will be set to continue indefinitely',
+ asyd => 'as you did not select an end date in the pop-up window',
+ sewi => "Sections will be switched to 'No section'",
+ ayes => "as you either selected the 'No section' option",
+ oryo => 'or you did not select a section in the pop-up window',
+ arol => 'A role with no section will be added',
+ swbs => 'Sections will be switched to:',
+ rwba => 'Roles will be added for section(s):',
+ );
$r->print(<
@@ -1886,12 +1934,47 @@ function verify_action (field) {
}
else {
var message = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].text;
+ var choice = document.studentform.bulkaction[document.studentform.bulkaction.selectedIndex].value;
if (numchecked == 1) {
message += singconf;
}
else {
message += multconf;
}
+ if (choice == 'chgdates' || choice == 'reenable' || choice == 'activate') {
+ var datemsg = '';
+ if ((document.studentform.startdate_month.value == '') &&
+ (document.studentform.startdate_day.value == '') &&
+ (document.studentform.startdate_year.value == '')) {
+ datemsg = "\\n$lt{'acwi'},\\n$lt{'asyo'}.\\n";
+ }
+ if ((document.studentform.enddate_month.value == '') &&
+ (document.studentform.enddate_day.value == '') &&
+ (document.studentform.enddate_year.value == '')) {
+ datemsg += "\\n$lt{'accw'},\\n$lt{'asyd'}.\\n";
+ }
+ if (datemsg != '') {
+ message += "\\n"+datemsg;
+ }
+ }
+ if (choice == 'chgsec') {
+ var rolefilter = document.studentform.showrole.options[document.studentform.showrole.selectedIndex].value;
+ var retained = document.studentform.retainsec.value;
+ var secshow = document.studentform.newsecs.value;
+ if (secshow == '') {
+ if (rolefilter == 'st' || retained == 0 || retained == "") {
+ message += "\\n\\n$lt{'sewi'},\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n";
+ } else {
+ message += "\\n\\n$lt{'arol'}\\n$lt{'ayes'},\\n$lt{'oryo'}.\\n";
+ }
+ } else {
+ if (rolefilter == 'st' || retained == 0 || retained == "") {
+ message += "\\n\\n$lt{'swbs'} "+secshow+".\\n";
+ } else {
+ message += "\\n\\n$lt{'rwba'} "+secshow+".\\n";
+ }
+ }
+ }
if (confirm(message)) {
document.studentform.phase.value = 'bulkchange';
document.studentform.submit();
@@ -1942,6 +2025,7 @@ END
'clicker' => "clicker id",
'photo' => "photo",
'extent' => "extent",
+ 'go' => "go",
'pr' => "Proceed",
'ca' => "check all",
'ua' => "uncheck all",
@@ -1990,7 +2074,7 @@ END
$context,$permission,$mode);
$r->print(''.$results_description.' ');
}
- my ($output,$actionselect);
+ my ($output,$actionselect,%canchange,%canchangesec);
if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll') {
if ($mode ne 'autoenroll') {
if ($permission->{'cusr'}) {
@@ -2024,11 +2108,50 @@ END
$output .= &mt("Click on a username to view the user's personal page.").' ';
}
if ($actionselect) {
- $output .= <<"END";
-$lt{'ac'}: $actionselect
+ $output .= <<"END";
+$lt{'ac'}: $actionselect