--- loncom/interface/lonuserutils.pm 2007/12/24 19:35:56 1.34
+++ loncom/interface/lonuserutils.pm 2008/01/05 05:22:42 1.42
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.34 2007/12/24 19:35:56 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.42 2008/01/05 05:22:42 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -76,7 +76,7 @@ sub modifystudent {
}
}
if ($result eq '') {
- $result = 'Unable to find section for this student';
+ $result = &mt('Unable to find section for this student');
} else {
$result =~ s/(ok:)+/ok/g;
}
@@ -333,17 +333,12 @@ sub print_upload_manager_header {
sub javascript_validations {
my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,
$context,$groupslist)=@_;
-
my %param = (
kerb_def_dom => $krbdefdom,
curr_authtype => $curr_authtype,
);
- if ($mode eq 'createuser') {
- $param{'formname'} = 'cu';
- } elsif ($mode eq 'upload') {
+ if ($mode eq 'upload') {
$param{'formname'} = 'studentform';
- } elsif ($mode eq 'singlestudent') {
- $param{'formname'} = 'cu';
} elsif ($mode eq 'createcourse') {
$param{'formname'} = 'ccrs';
} elsif ($mode eq 'modifycourse') {
@@ -367,7 +362,7 @@ sub javascript_validations {
}
} elsif ($context eq 'domain') {
$setsection_call = 'setCourse()';
- $setsections_js = &dc_setcourse_js($param{'formname'},$mode);
+ $setsections_js = &dc_setcourse_js($param{'formname'},$mode,$context);
}
$finish = " var checkSec = $setsection_call\n".
" if (checkSec == 'ok') {\n".
@@ -389,8 +384,7 @@ sub javascript_validations {
role => 'The optional role field was not specified.',
continue => 'Continue adding users?',
);
-
- my $function_name =(<".&mt('Full Update')."\n".
'\n";
+ ' '.&mt('Display students with current/future access who are not in the uploaded file.').' '.&mt('Students selected from this list can be dropped.').'
'."\n";
}
if ($context eq 'course' || $context eq 'domain') {
$Str .= &forceid_change($context);
@@ -1342,8 +1329,9 @@ sub print_userlist {
$showroles = undef;
}
my $withsec = 1;
+ my $hidepriv = 1;
my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,
- \@statuses,$showroles,undef,$withsec);
+ \@statuses,$showroles,undef,$withsec,$hidepriv);
&gather_userinfo($context,$format,\%userlist,$indexhash,\%userinfo,
\%advrolehash,$permission);
} else {
@@ -1394,7 +1382,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 '');
@@ -1412,7 +1401,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') {
@@ -1877,7 +1866,7 @@ sub show_users_list {
$sortby = 'username';
}
my $setting = $env{'form.roletype'};
- my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$secfilter,$grpfilter);
+ my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers);
if ($context eq 'course') {
$cid = $env{'request.course.id'};
($cnum,$cdom) = &get_course_identity($cid);
@@ -1918,7 +1907,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(<
@@ -1944,12 +1945,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();
@@ -2000,6 +2036,7 @@ END
'clicker' => "clicker id",
'photo' => "photo",
'extent' => "extent",
+ 'go' => "go",
'pr' => "Proceed",
'ca' => "check all",
'ua' => "uncheck all",
@@ -2082,10 +2119,10 @@ 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
-
+
END
my @allroles;
if ($env{'form.showrole'} eq 'Any') {
@@ -2377,7 +2414,6 @@ END
$r->print("
$cellentry
\n");
} else {
$r->print("
$rowcount
\n");
- $checkval;
if ($actionselect) {
my $showcheckbox;
if ($role =~ /^cr\//) {
@@ -2590,7 +2626,7 @@ sub select_actions {
}
}
if ($options) {
- $output = ''."\n".
+ $output = ''."\n".
''."\n".$options."\n".'';
if ($choices{'dates'}) {
@@ -2627,13 +2663,29 @@ sub date_section_javascript {
} else {
$title = &mt('Date selector');
}
+ my %nopopup = &Apache::lonlocal::texthash (
+ revoke => "Check the boxes for any users for whom roles are to be revoked, and click 'Proceed'",
+ delete => "Check the boxes for any users for whom roles are to be deleted, and click 'Proceed'",
+ none => "Choose an action to take for selected users",
+ );
my $output = '