print(' '."\n");
+ $r->print(' '."\n");
} else {
$r->print(''.&mt('Add Roles').' ');
my $addrolesdisplay = 0;
@@ -960,14 +1169,14 @@ ENDNOTOOLSPRIV
$addrolesdisplay = $add_domainroles;
}
$r->print(&course_level_dc($env{'request.role.domain'},'Course'));
- $r->print(' '."\n");
+ $r->print(' '."\n");
} elsif ($context eq 'author') {
if ($addrolesdisplay) {
$r->print(' print(' onClick="auth_check()" \>'."\n");
+ $r->print(' onclick="auth_check()" \>'."\n");
} else {
- $r->print('onClick="this.form.submit()" \>'."\n");
+ $r->print('onclick="this.form.submit()" \>'."\n");
}
} else {
$r->print(''.
@@ -975,7 +1184,7 @@ ENDNOTOOLSPRIV
}
} else {
$r->print(&course_level_table(%inccourses));
- $r->print(' '."\n");
+ $r->print(' '."\n");
}
}
$r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));
@@ -1043,7 +1252,11 @@ sub validation_javascript {
$nondc_setsection_code,$groupslist);
my ($jsback,$elements) = &crumb_utilities();
$js .= "\n".
- '';
+ ''."\n";
return $js;
}
@@ -1230,8 +1443,17 @@ sub display_existing_roles {
}
}
if ($rolesdisplay == 1) {
+ my $contextrole='';
+ if ($env{'request.course.id'}) {
+ $contextrole = 'Existing Roles in this Course';
+ } elsif ($env{'request.role'} =~ /^au\./) {
+ $contextrole = 'Existing Co-Author Roles in your Construction Space';
+ } else {
+ $contextrole = 'Existing Roles in this Domain';
+ }
$r->print('
'.$lt{'rer'}.' '.
+''.&mt($contextrole).'
'.
&Apache::loncommon::start_data_table("LC_createuser").
&Apache::loncommon::start_data_table_header_row().
' '.$lt{'rev'}.' '.$lt{'ren'}.' '.$lt{'del'}.
@@ -1283,7 +1505,7 @@ sub new_coauthor_roles {
&Apache::loncommon::end_data_table_header_row()."\n".
&Apache::loncommon::start_data_table_row().'
-
+
'.$lt{'cau'}.'
'.$cudom.'_'.$cuname.'
@@ -1295,7 +1517,7 @@ sub new_coauthor_roles {
"javascript:pjump('."'date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset'".')">'.$lt{'sed'}.''."\n".
&Apache::loncommon::end_data_table_row()."\n".
&Apache::loncommon::start_data_table_row()."\n".
-'
+'
'.$lt{'caa'}.'
'.$cudom.'_'.$cuname.'
@@ -1335,8 +1557,10 @@ sub new_domain_roles {
&mt('Extent').''.
''.&mt('Start').' '.&mt('End').' '.
&Apache::loncommon::end_data_table_header_row();
+ my @allroles = &Apache::lonuserutils::roles_by_context('domain');
foreach my $thisdomain (sort(&Apache::lonnet::all_domains())) {
- foreach my $role ('dc','li','dg','au','sc') {
+ foreach my $role (@allroles) {
+ next if ($role eq 'ad');
if (&Apache::lonnet::allowed('c'.$role,$thisdomain)) {
my $plrole=&Apache::lonnet::plaintext($role);
my %lt=&Apache::lonlocal::texthash(
@@ -1346,7 +1570,7 @@ sub new_domain_roles {
$num_domain_level ++;
$domaintext .=
&Apache::loncommon::start_data_table_row().
-'
+'
'.$plrole.'
'.$thisdomain.'
@@ -1387,7 +1611,9 @@ sub user_authentication {
my $choices = &Apache::lonuserutils::set_login($ccdomain,$authformkrb,$authformint,$authformloc);
$outcome = <
+//
$lt{'err'}:
$lt{'uuas'} ($currentauth). $lt{'sldb'}.
@@ -1416,7 +1642,9 @@ ENDBADAUTH
);
$outcome =
''."\n".
''.$lt{'ld'}.' '.
&Apache::loncommon::start_data_table().
@@ -1524,16 +1752,19 @@ sub modify_login_block {
sub personal_data_display {
my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray) = @_;
- my ($output,$showforceid,%userenv,%canmodify);
+ my ($output,$showforceid,%userenv,%canmodify,%canmodify_status);
my @userinfo = ('firstname','middlename','lastname','generation',
'permanentemail','id');
my $rowcount = 0;
my $editable = 0;
+ %canmodify_status =
+ &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain,
+ ['inststatus'],$rolesarray);
if (!$newuser) {
# Get the users information
%userenv = &Apache::lonnet::get('environment',
['firstname','middlename','lastname','generation',
- 'permanentemail','id'],$ccdomain,$ccuname);
+ 'permanentemail','id','inststatus'],$ccdomain,$ccuname);
%canmodify =
&Apache::lonuserutils::can_modify_userinfo($context,$ccdomain,
\@userinfo,$rolesarray);
@@ -1549,7 +1780,8 @@ sub personal_data_display {
'generation' => "Generation",
'permanentemail' => "Permanent e-mail address",
'id' => "Student/Employee ID",
- 'lg' => "Login Data"
+ 'lg' => "Login Data",
+ 'inststatus' => "Affiliation",
);
my %textboxsize = (
firstname => '15',
@@ -1587,11 +1819,15 @@ sub personal_data_display {
}
} else {
if ($context eq 'selfcreate') {
- if ($canmodify{$item}) {
- $row .= ' ';
- $editable ++;
+ if (($item eq 'permanentemail') && ($newuser eq 'email')) {
+ $row .= $ccuname;
} else {
- $hiderow = 1;
+ if ($canmodify{$item}) {
+ $row .= ' ';
+ $editable ++;
+ } else {
+ $hiderow = 1;
+ }
}
} else {
$row .= ' ';
@@ -1613,6 +1849,30 @@ sub personal_data_display {
$rowcount ++;
}
}
+ if (($canmodify_status{'inststatus'}) || ($context ne 'selfcreate')) {
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($ccdomain);
+ if (ref($types) eq 'ARRAY') {
+ if (@{$types} > 0) {
+ my ($hiderow,$shown);
+ if ($canmodify_status{'inststatus'}) {
+ $shown = &pick_inst_statuses($userenv{'inststatus'},$usertypes,$types);
+ } else {
+ $shown .= $userenv{'inststatus'};
+ if ($userenv{'inststatus'} eq '') {
+ $hiderow = 1;
+ }
+ }
+ if (!$hiderow) {
+ my $row = &Apache::lonhtmlcommon::row_title(&mt('Affliations'),undef,'LC_oddrow_value')."\n".
+ $shown.&Apache::lonhtmlcommon::row_closure(1);
+ if ($context eq 'selfcreate') {
+ $rowcount ++;
+ }
+ $output .= $row;
+ }
+ }
+ }
+ }
$output .= &Apache::lonhtmlcommon::end_pick_box();
if (wantarray) {
if ($context eq 'selfcreate') {
@@ -1625,6 +1885,48 @@ sub personal_data_display {
}
}
+sub pick_inst_statuses {
+ my ($curr,$usertypes,$types) = @_;
+ my ($output,$rem,@currtypes);
+ if ($curr ne '') {
+ @currtypes = map { &unescape($_); } split(/:/,$curr);
+ }
+ my $numinrow = 2;
+ if (ref($types) eq 'ARRAY') {
+ $output = '';
+ }
+ return $output;
+}
+
sub selfcreate_canmodify {
my ($context,$dom,$userinfo,$inst_results,$rolesarray) = @_;
if (ref($inst_results) eq 'HASH') {
@@ -1673,7 +1975,10 @@ sub update_user_data {
my $newuser = 0;
my ($jsback,$elements) = &crumb_utilities();
my $jscript = ''."\n";
+ '// '."\n".
+ ''."\n";
my %breadcrumb_text = &singleuser_breadcrumb();
my $args;
if ($env{'form.popup'}) {
@@ -1713,8 +2018,8 @@ sub update_user_data {
}
if ( $env{'form.ccuname'} ne
&LONCAPA::clean_username($env{'form.ccuname'}) ) {
- $r->print($error.&mt('Invalid login name').'. '.
- &mt('Only letters, numbers, periods, dashes, @, and underscores are valid').'.'.
+ $r->print($error.&mt('Invalid login name.').' '.
+ &mt('Only letters, numbers, periods, dashes, @, and underscores are valid.').
$end.$rtnlink);
return;
}
@@ -1724,8 +2029,8 @@ sub update_user_data {
}
if ( $env{'form.ccdomain'} ne
&LONCAPA::clean_domain($env{'form.ccdomain'}) ) {
- $r->print($error.&mt ('Invalid domain name').'. '.
- &mt('Only letters, numbers, periods, dashes, and underscores are valid').'.'.
+ $r->print($error.&mt('Invalid domain name.').' '.
+ &mt('Only letters, numbers, periods, dashes, and underscores are valid.').
$end.$rtnlink);
return;
}
@@ -1774,6 +2079,8 @@ sub update_user_data {
my (%alerts,%rulematch,%inst_results,%curr_rules);
my @usertools = ('aboutme','blog','portfolio');
my @requestcourses = ('official','unofficial');
+ my ($othertitle,$usertypes,$types) =
+ &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
if ($env{'form.makeuser'}) {
$r->print(''.&mt('Creating new account.').' ');
# Check for the authentication mode and password
@@ -1851,11 +2158,22 @@ sub update_user_data {
\%changeHash,'tools');
}
}
- if (&Apache::lonnet::allowed('ccc',$env{'request.domain'})) {
- foreach my $item (@requestcourses) {
- $newcustom{$item} = $env{'form.requestcourse_'.$item};
- $changed{$item} = &tool_admin($item,$newcustom{$item},
- \%changeHash,'requestcourse');
+ foreach my $item (@requestcourses) {
+ $newcustom{$item} = $env{'form.crsreq_'.$item};
+ if ($env{'form.crsreq_'.$item} eq 'autolimit') {
+ $newcustom{$item} .= '=';
+ unless ($env{'form.crsreq_'.$item.'_limit'} =~ /\D/) {
+ $newcustom{$item} .= $env{'form.crsreq_'.$item.'_limit'};
+ }
+ }
+ $changed{$item} = &tool_admin($item,$newcustom{$item},
+ \%changeHash,'requestcourses');
+ }
+ if (exists($env{'form.inststatus'})) {
+ my @inststatuses = &Apache::loncommon::get_env_multiple('form.inststatus');
+ if (@inststatuses > 0) {
+ $changeHash{'inststatus'} = join(',',@inststatuses);
+ $changed{'inststatus'} = $changeHash{'inststatus'};
}
}
if (keys(%changed)) {
@@ -1902,8 +2220,10 @@ sub update_user_data {
my %userenv = &Apache::lonnet::get
('environment',['firstname','middlename','lastname','generation',
'id','permanentemail','portfolioquota','inststatus','tools.aboutme',
- 'tools.blog','tools.portfolio','requestcourse.official',
- 'requestcourse.unofficial'],
+ 'tools.blog','tools.portfolio','requestcourses.official',
+ 'requestcourses.unofficial','requestcourses.community',
+ 'reqcrsotherdom.official','reqcrsotherdom.unofficial',
+ 'reqcrsotherdom.community'],
$env{'form.ccdomain'},$env{'form.ccuname'});
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
@@ -2005,7 +2325,7 @@ sub update_user_data {
(!$forceid)) {
if ($env{'form.cid'} ne $uidhash{$env{'form.ccuname'}}) {
$env{'form.cid'} = $userenv{'id'};
- $no_forceid_alert = &mt('New Student/Employee ID does not match existing ID for this user.')
+ $no_forceid_alert = &mt('New student/employee ID does not match existing ID for this user.')
.' '
.&mt("Change is not permitted without checking the 'Force ID change' checkbox on the previous page.")
.' '."\n";
@@ -2026,12 +2346,13 @@ sub update_user_data {
}
}
}
- my ($quotachanged,$oldportfolioquota,$newportfolioquota,
- $inststatus,$oldisdefault,$newisdefault,$olddefquotatext,
- $newdefquotatext,%oldaccess,%oldaccesstext,%newaccess,%newaccesstext);
+ my ($quotachanged,$oldportfolioquota,$newportfolioquota,$oldinststatus,
+ $inststatus,$newinststatus,$oldisdefault,$newisdefault,$olddefquotatext,
+ $newdefquotatext,%oldaccess,%oldaccesstext,%newaccess,%newaccesstext,
+ $oldinststatuses,$newinststatuses);
my ($defquota,$settingstatus) =
&Apache::loncommon::default_quota($env{'form.ccdomain'},$inststatus);
- my ($showquota,$showtools,$showrequestcourses);
+ my ($showquota,$showtools,$showrequestcourses,$showinststatus,$showreqotherdom);
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
$showquota = 1;
}
@@ -2040,8 +2361,49 @@ sub update_user_data {
}
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$showrequestcourses = 1;
+ } elsif (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+ $showreqotherdom = 1;
+ }
+ if (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'})) {
+ $showinststatus = 1;
}
my (%changeHash,%changed);
+ $oldinststatus = $userenv{'inststatus'};
+ if ($oldinststatus eq '') {
+ $oldinststatuses = $othertitle;
+ } else {
+ if (ref($usertypes) eq 'HASH') {
+ $oldinststatuses = join(', ',map{ $usertypes->{ &unescape($_) }; } (split(/:/,$userenv{'inststatus'})));
+ } else {
+ $oldinststatuses = join(', ',map{ &unescape($_); } (split(/:/,$userenv{'inststatus'})));
+ }
+ }
+ $changeHash{'inststatus'} = $userenv{'inststatus'};
+ my %canmodify_inststatus = &Apache::lonuserutils::can_modify_userinfo($context,$env{'form.ccdomain'},['inststatus'],\@userroles);
+ if ($canmodify_inststatus{'inststatus'}) {
+ if (exists($env{'form.inststatus'})) {
+ my @inststatuses = &Apache::loncommon::get_env_multiple('form.inststatus');
+ if (@inststatuses > 0) {
+ $newinststatus = join(':',map { &escape($_); } @inststatuses);
+ $changeHash{'inststatus'} = $newinststatus;
+ if ($newinststatus ne $oldinststatus) {
+ $changed{'inststatus'} = $newinststatus;
+ }
+ if (ref($usertypes) eq 'HASH') {
+ $newinststatuses = join(', ',map{ $usertypes->{$_}; } (@inststatuses));
+ } else {
+ $newinststatuses = join(', ',map{ $usertypes->{$_}; } (@inststatuses));
+ }
+ } else {
+ $newinststatus = '';
+ $changeHash{'inststatus'} = $newinststatus;
+ $newinststatuses = $othertitle;
+ if ($newinststatus ne $oldinststatus) {
+ $changed{'inststatus'} = $changeHash{'inststatus'};
+ }
+ }
+ }
+ }
$changeHash{'portfolioquota'} = $userenv{'portfolioquota'};
if ($userenv{'portfolioquota'} ne '') {
$oldportfolioquota = $userenv{'portfolioquota'};
@@ -2058,7 +2420,7 @@ sub update_user_data {
} else {
$changed{'quota'} = "a_admin('',\%changeHash);
$newportfolioquota = $defquota;
- $newisdefault = 1;
+ $newisdefault = 1;
}
} else {
$oldisdefault = 1;
@@ -2084,8 +2446,14 @@ sub update_user_data {
}
&tool_changes('tools',\@usertools,\%oldaccess,\%oldaccesstext,\%userenv,
\%changeHash,\%changed,\%newaccess,\%newaccesstext);
- &tool_changes('requestcourse',\@requestcourses,\%oldaccess,\%oldaccesstext,
- \%userenv, \%changeHash,\%changed,\%newaccess,\%newaccesstext);
+
+ if ($env{'form.ccdomain'} eq $env{'request.role.domain'}) {
+ &tool_changes('requestcourses',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+ } else {
+ &tool_changes('reqcrsotherdom',\@requestcourses,\%oldaccess,\%oldaccesstext,
+ \%userenv,\%changeHash,\%changed,\%newaccess,\%newaccesstext);
+ }
if ($env{'form.cfirstname'} ne $userenv{'firstname'} ||
$env{'form.cmiddlename'} ne $userenv{'middlename'} ||
$env{'form.clastname'} ne $userenv{'lastname'} ||
@@ -2112,16 +2480,26 @@ sub update_user_data {
my %newenvhash;
foreach my $key (keys(%changed)) {
if (($key eq 'official') || ($key eq 'unofficial')) {
- $newenvhash{'environment.canrequest.'.$key} =
- $changeHash{'requestcourse.'.$key};
- $newenvhash{'environment.canrequest.'.$key} =
- $changeHash{'requestcourse.'.$key};
-
+ $newenvhash{'environment.requestcourses.'.$key} =
+ $changeHash{'requestcourses.'.$key};
+ if ($changeHash{'requestcourses.'.$key} ne '') {
+ $newenvhash{'environment.canrequest.'.$key} =
+ $changeHash{'requestcourses.'.$key};
+ } else {
+ $newenvhash{'environment.canrequest.'.$key} =
+ &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'},
+ $key,'reload','requestcourses');
+ }
} elsif ($key ne 'quota') {
$newenvhash{'environment.tools.'.$key} =
$changeHash{'tools.'.$key};
- $newenvhash{'environment.availabletools.'.$key} =
- $changeHash{'tools.'.$key};
+ if ($changeHash{'tools.'.$key} ne '') {
+ $newenvhash{'environment.availabletools.'.$key} =
+ $changeHash{'tools.'.$key};
+ } else {
+ $newenvhash{'environment.availabletools.'.$key} =
+ &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, $key,'reload','tools');
+ }
}
}
if (keys(%newenvhash)) {
@@ -2150,21 +2528,22 @@ sub update_user_data {
((keys(%changed) > 0) && $chgresult eq 'ok')) {
# Tell the user we changed the name
my %lt=&Apache::lonlocal::texthash(
- 'uic' => "User Information Changed",
- 'frst' => "First",
- 'mddl' => "Middle",
- 'lst' => "Last",
- 'gen' => "Generation",
- 'id' => "Student/Employee ID",
- 'mail' => "Permanent E-mail",
- 'disk' => "Disk space allocated to portfolio files",
- 'blog' => "Blog Availability",
- 'aboutme' => "Home Page Availability",
- 'portfolio' => "Portfolio Availability",
- 'official' => "Can Request Official Courses",
- 'unofficial' => "Can Request Unofficial Courses",
- 'prvs' => "Previous",
- 'chto' => "Changed To"
+ 'uic' => 'User Information Changed',
+ 'frst' => 'First Name',
+ 'mddl' => 'Middle Name',
+ 'lst' => 'Last Name',
+ 'gen' => 'Generation',
+ 'id' => 'Student/Employee ID',
+ 'mail' => 'Permanent e-mail address',
+ 'disk' => 'Disk space allocated to portfolio files',
+ 'blog' => 'Blog Availability',
+ 'aboutme' => 'Personal Information Page Availability',
+ 'portfolio' => 'Portfolio Availability',
+ 'official' => 'Can Request Official Courses',
+ 'unofficial' => 'Can Request Unofficial Courses',
+ 'inststatus' => "Affiliation",
+ 'prvs' => 'Previous Value:',
+ 'chto' => 'Changed To:'
);
$r->print(''.$lt{'uic'}.' '.
&Apache::loncommon::start_data_table().
@@ -2178,11 +2557,20 @@ sub update_user_data {
$lt{'id'}
$lt{'mail'}
END
+ if ($showinststatus) {
+ $r->print("
+ $lt{'inststatus'} \n");
+ }
if ($showrequestcourses) {
foreach my $item (@requestcourses) {
$r->print("
$lt{$item} \n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print("
+ $lt{$item} \n");
+ }
}
if ($showquota) {
$r->print("
@@ -2205,11 +2593,20 @@ END
$userenv{'id'}
$userenv{'permanentemail'}
END
+ if ($showinststatus) {
+ $r->print("
+ $oldinststatuses \n");
+ }
if ($showrequestcourses) {
foreach my $item (@requestcourses) {
$r->print("
$oldaccess{$item} $oldaccesstext{$item} \n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print("
+ $oldaccess{$item} $oldaccesstext{$item} \n");
+ }
}
if ($showquota) {
$r->print("
@@ -2232,11 +2629,20 @@ END
$env{'form.cid'}
$env{'form.cpermanentemail'}
END
+ if ($showinststatus) {
+ $r->print("
+ $newinststatuses \n");
+ }
if ($showrequestcourses) {
foreach my $item (@requestcourses) {
$r->print("
$newaccess{$item} $newaccesstext{$item} \n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print("
+ $newaccess{$item} $newaccesstext{$item} \n");
+ }
}
if ($showquota) {
$r->print("
@@ -2281,13 +2687,14 @@ END
# but we can still tell them what the name and quota and availabilities are
my %lt=&Apache::lonlocal::texthash(
'id' => "Student/Employee ID",
- 'mail' => "Permanent e-mail",
+ 'mail' => "Permanent e-mail address",
'disk' => "Disk space allocated to user's portfolio files",
'blog' => "Blog Availability",
- 'aboutme' => "Home Page Availability",
+ 'aboutme' => "Personal Information Page Availability",
'portfolio' => "Portfolio Availability",
'official' => "Can Request Official Courses",
'unofficial' => "Can Request Unofficial Course",
+ 'inststatus' => "Affiliation",
);
$r->print(<<"END");
$userenv{'firstname'} $userenv{'middlename'} $userenv{'lastname'} $userenv{'generation'}
@@ -2296,11 +2703,19 @@ END
$r->print(' ['.$lt{'mail'}.': '.
$userenv{'permanentemail'}.']');
}
+ if ($showinststatus) {
+ $r->print(' ['.$lt{'inststatus'}.': '.$oldinststatuses.']');
+ }
if ($showrequestcourses) {
foreach my $item (@requestcourses) {
$r->print(' ['.$lt{$item}.': '.$newaccess{$item}.' '.
$newaccesstext{$item}.']'."\n");
}
+ } elsif ($showreqotherdom) {
+ foreach my $item (@requestcourses) {
+ $r->print(' ['.$lt{$item}.': '.$newaccess{$item}.' '.
+ $newaccesstext{$item}.']'."\n");
+ }
}
if ($showtools) {
foreach my $item (@usertools) {
@@ -2337,8 +2752,11 @@ END
} else {
$r->print(&mt("You do not have the authority to change these fields given the user's current set of active/future [_1] roles:",$contextname));
}
- $r->print(''.$rolestr.' '.
- &mt('Contact your helpdesk for more information.',"javascript:helpMenu('display')").' ');
+ my $helplink = 'javascript:helpMenu('."'display'".')';
+ $r->print(''.$rolestr.' '
+ .&mt('Please contact your [_1]helpdesk[_2] for more information.'
+ ,'',' ')
+ .' ');
}
$r->print(''
.$no_forceid_alert
@@ -2389,7 +2807,91 @@ sub tool_changes {
(ref($newaccess) eq 'HASH') && (ref($newaccesstext) eq 'HASH'))) {
return;
}
+ if ($context eq 'reqcrsotherdom') {
+ my @options = ('approval','validate','autolimit');
+ my $optregex = join('|',@options);
+ my %reqdisplay = &courserequest_display();
+ my $cdom = $env{'request.role.domain'};
+ foreach my $tool (@{$usertools}) {
+ $oldaccesstext->{$tool} = &mt('no');
+ $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool};
+ if ($userenv->{$context.'.'.$tool} eq '') {
+ if ($env{'form.'.$context.'_'.$tool}) {
+ $changed->{$tool}=&tool_admin($tool,$cdom,
+ $changeHash,$context);
+ if ($changed->{$tool}) {
+ $newaccesstext->{$tool} = &mt('yes');
+ } else {
+ $newaccesstext->{$tool} = $oldaccesstext->{$tool}; }
+ }
+ } else {
+ my @curr = split(',',$userenv->{$context.'.'.$tool});
+ my @new;
+ my $changedoms;
+ my $newop = $env{'form.'.$context.'_'.$tool};
+ if ($newop eq 'autolimit') {
+ $newop .= '=';
+ unless ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {
+ $newop .= $env{'form.'.$context.'_'.$tool.'_limit'};
+ }
+ }
+ if (grep(/^\Q$cdom:($optregex\=?\d*)\E$/,@curr)) {
+ $oldaccesstext->{$tool} = &mt('yes');
+ my $oldop = $1;
+ if ($oldop ne $newop) {
+ $changedoms = 1;
+ foreach my $dom (@curr) {
+ unless ($dom eq $cdom) {
+ push(@new,$dom);
+ }
+ }
+ if ($newop) {
+ push(@new,$cdom.':'.$newop);
+ }
+ @new = sort(@new);
+ }
+ } elsif ($env{'form.'.$context.'_'.$tool}) {
+ $changedoms = 1;
+ @new = sort(@curr,$cdom.':'.$newop);
+ }
+ $newaccesstext->{$tool} = $oldaccesstext->{$tool};
+ if ($changedoms) {
+ my $newdomstr;
+ if (@new) {
+ $newdomstr = join(',',@new);
+ }
+ $changed->{$tool}=&tool_admin($tool,$newdomstr,$changeHash,
+ $context);
+ if ($changed->{$tool}) {
+ if ($env{'form.'.$context.'_'.$tool}) {
+ if ($env{'form.'.$context.'_'.$tool} eq 'autolimit') {
+ if ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {
+ $newaccesstext->{$tool} = &mt('Yes, processed automatically');
+ } else {
+ $newaccesstext->{$tool} = &mt('Yes, up to limit of [quant,_1,request] per user).',$env{'form.'.$context.'_'.$tool.'_limit'});
+ }
+ } else {
+ $newaccesstext->{$tool} = $reqdisplay{$env{'form.'.$context.'_'.$tool}};
+ }
+ } else {
+ $newaccesstext->{$tool} = &mt('No');
+ }
+ }
+ }
+ }
+ }
+ return;
+ }
foreach my $tool (@{$usertools}) {
+ my $newval;
+ if ($context eq 'requestcourses') {
+ $newval = $env{'form.crsreq_'.$tool};
+ if ($newval eq 'autolimit') {
+ $newval .= '='.$env{'form.crsreq_'.$tool.'_limit'};
+ }
+ } else {
+ $newval = $env{'form.'.$context.'_'.$tool};
+ }
if ($userenv->{$context.'.'.$tool} ne '') {
$oldaccess->{$tool} = &mt('custom');
if ($userenv->{$context.'.'.$tool}) {
@@ -2397,14 +2899,14 @@ sub tool_changes {
} else {
$oldaccesstext->{$tool} = &mt("availability set to 'off'");
}
- $changeHash->{$context.'.'.$tool} = $userenv->{'tools.'.$tool};
+ $changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool};
if ($env{'form.custom'.$tool} == 1) {
- if ($env{'form.'.$context.'_'.$tool} ne $userenv->{'tools.'.$tool}) {
- $changed->{$tool} = &tool_admin($tool,$env{'form.'.$context.'_'.$tool},
- $changeHash,$context);
+ if ($newval ne $userenv->{$context.'.'.$tool}) {
+ $changed->{$tool} = &tool_admin($tool,$newval,$changeHash,
+ $context);
if ($changed->{$tool}) {
$newaccess->{$tool} = &mt('custom');
- if ($env{'form.'.$context.'_'.$tool}) {
+ if ($newval) {
$newaccesstext->{$tool} = &mt("availability set to 'on'");
} else {
$newaccesstext->{$tool} = &mt("availability set to 'off'");
@@ -2428,20 +2930,20 @@ sub tool_changes {
} else {
$newaccess->{$tool} = $oldaccess->{$tool};
if ($userenv->{$context.'.'.$tool}) {
- $newaccesstext->{$tool} = &mt("availability set to 'on'");
+ $newaccesstext->{$tool} = &mt("availability set to 'on'");
} else {
- $newaccesstext->{$tool} = &mt("availability set to 'off'");
+ $newaccesstext->{$tool} = &mt("availability set to 'off'");
}
}
}
} else {
$oldaccess->{$tool} = &mt('default');
if ($env{'form.custom'.$tool} == 1) {
- $changed->{$tool} = &tool_admin($tool,$env{'form.'.$context.'_'.$tool},
- $changeHash,$context);
+ $changed->{$tool} = &tool_admin($tool,$newval,$changeHash,
+ $context);
if ($changed->{$tool}) {
$newaccess->{$tool} = &mt('custom');
- if ($env{'form.'.$context.'_'.$tool}) {
+ if ($newval) {
$newaccesstext->{$tool} = &mt("availability set to 'on'");
} else {
$newaccesstext->{$tool} = &mt("availability set to 'off'");
@@ -2524,8 +3026,8 @@ sub update_roles {
if ($key=~m{^form\.del\:([^_]+)_cr\.cr/($match_domain)/($match_username)/(\w+)$}) {
my ($url,$rdom,$rnam,$rolename) = ($1,$2,$3,$4);
# Delete custom role
- $r->print(&mt('Deleting custom role [_1] by [_2]:[_3] in [_4]',
- $rolename,$rnam,$rdom,$url).': '.
+ $r->print(&mt('Deleting custom role [_1] by [_2] in [_3]',
+ $rolename,$rnam.':'.$rdom,$url).': '.
&Apache::lonnet::assigncustomrole($env{'form.ccdomain'},
$env{'form.ccuname'},$url,$rdom,$rnam,$rolename,$now,
0,1,$context).' ');
@@ -2576,8 +3078,8 @@ sub update_roles {
my $result = &Apache::lonnet::assigncustomrole(
$env{'form.ccdomain'}, $env{'form.ccuname'},
$url,$rdom,$rnam,$rolename,0,$now,undef,$context);
- $r->print(&mt('Re-enabling custom role [_1] by [_2]:[_3] in [_4] : [_5]',
- $rolename,$rnam,$rdom,$url,''.$result.' ').' ');
+ $r->print(&mt('Re-enabling custom role [_1] by [_2] in [_3]: [_4]',
+ $rolename,$rnam.':'.$rdom,$url,''.$result.' ').' ');
if (!grep(/^cr$/,@rolechanges)) {
push(@rolechanges,'cr');
}
@@ -2823,10 +3325,14 @@ sub quota_admin {
sub tool_admin {
my ($tool,$settool,$changeHash,$context) = @_;
my $canchange = 0;
- if ($context eq 'requestcourse') {
+ if ($context eq 'requestcourses') {
if (&Apache::lonnet::allowed('ccc',$env{'form.ccdomain'})) {
$canchange = 1;
}
+ } elsif ($context eq 'reqcrsotherdom') {
+ if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) {
+ $canchange = 1;
+ }
} elsif (&Apache::lonnet::allowed('mut',$env{'form.ccdomain'})) {
# Current user has quota modification privileges
$canchange = 1;
@@ -2946,13 +3452,16 @@ sub custom_role_editor {
my ($jsback,$elements) = &crumb_utilities();
my $button_code = "\n";
my $head_script = "\n";
- $head_script .= ''."\n";
+ $head_script .= "\n".$jsback."\n".
+ '// ]]>'."\n".
+ ''."\n";
$r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script));
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:backPage(document.form1,'pickrole','')",
@@ -2993,14 +3502,14 @@ ENDCCF
my $privtext = &Apache::lonnet::plaintext($priv);
$r->print(&Apache::loncommon::start_data_table_row().
' '.$privtext.' '.
- ($courselevel{$priv}?' ':' ').
+ ($courselevel{$priv}?' ':' ').
' '.
- ($domainlevel{$priv}?' ':' ').
+ ($domainlevel{$priv}?' ':' ').
' '.
- ($systemlevel{$priv}?' ':' ').
+ ($systemlevel{$priv}?' ':' ').
' '.
&Apache::loncommon::end_data_table_row());
}
@@ -3009,7 +3518,7 @@ ENDCCF
' '."\n".' '."\n".
' '."\n".
- ' '.
+ ' '.
&Apache::loncommon::end_page());
}
# --------------------------------------------------------
@@ -3082,7 +3591,7 @@ sub make_script_template {
sub make_button_code {
my ($role) = @_;
my $label = &Apache::lonnet::plaintext($role);
- my $button_code = ' ';
+ my $button_code = ' ';
return ($button_code);
}
# ---------------------------------------------------------- Call to definerole
@@ -3095,7 +3604,11 @@ sub set_custom_role {
return;
}
my ($jsback,$elements) = &crumb_utilities();
- my $jscript = '';
+ my $jscript = '';
$r->print(&Apache::loncommon::start_page('Save Custom Role'),$jscript);
&Apache::lonhtmlcommon::add_breadcrumb
@@ -3192,8 +3705,11 @@ sub handler {
if ($env{'form.action'} ne 'dateselect') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"/adm/createuser",
- text=>"User Management"});
+ text=>"User Management",
+ help=>'Course_Create_Class_List,Course_Change_Privileges,Course_View_Class_List,Course_Editing_Custom_Roles,Course_Add_Student,Course_Drop_Student,Course_Automated_Enrollment,Course_Self_Enrollment,Course_Manage_Group'});
}
+ #SD Following files not added to help, because the corresponding .tex-files seem to
+ #be missing: Course_Approve_Selfenroll,Course_User_Logs,
my ($permission,$allowed) =
&Apache::lonuserutils::get_permission($context);
if (!$allowed) {
@@ -3418,11 +3934,14 @@ sub handler {
my $cid = $env{'request.course.id'};
my $cdom = $env{'course.'.$cid.'.domain'};
my $cnum = $env{'course.'.$cid.'.num'};
+ my $coursedesc = $env{'course.'.$cid.'.description'};
if (!exists($env{'form.state'})) {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment requests',
'Course_SelfEnrollment_Approval'));
$r->print(''.&mt('Pending enrollment requests').' '."\n");
- &display_selfenroll_queue($r,$context,$permission,$cnum,$cdom);
+ $r->print(&Apache::loncoursequeueadmin::display_queued_requests($context,
+ $cdom,$cnum));
+
} elsif ($env{'form.state'} eq 'done') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/createuser?action=selfenrollqueue',
@@ -3430,7 +3949,8 @@ sub handler {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment result',
'Course_Self_Enrollment'));
$r->print(''.&mt('Enrollment request processing').' '."\n");
- &update_selfenroll_queue($r,$context,$permission,$cid,$cnum,$cdom);
+ $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
+ $cdom,$cnum,$coursedesc));
}
$r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'changelogs') {
@@ -3464,7 +3984,11 @@ sub header {
sub add_script {
my ($js) = @_;
- return '';
+ return ''."\n";
}
sub verify_user_display {
@@ -3498,137 +4022,110 @@ sub print_main_menu {
listusers => 'Display Co-authors and Manage Multiple Users',
},
course => {
- upload => 'File of Course Users',
- singleuser => 'Single Course User',
- listusers => 'Course User Lists',
+ upload => 'Upload a File of Course Users',
+ singleuser => 'Add/Modify a Single Course User',
+ listusers => 'Display Class Lists and Manage Multiple Users',
},
- );
- my @menu = ( {categorytitle => 'Add Users',
- items =>
- [{
- linktext => $links{$context}{'upload'},
- icon => 'sctr.png',
- #help => 'Course_Create_Class_List',
- url => '/adm/createuser?action=upload',
- permission => $permission->{'cusr'},
- linktitle => 'Upload a CSV or a text file containing users.',
- },
- {
- linktext => $links{$context}{'singleuser'},
- icon => 'edit-redo.png',
- #help => 'Course_Change_Privileges',
- url => '/adm/createuser?action=singleuser',
- permission => $permission->{'cusr'},
- linktitle => 'Add a user with a certain role to this course.',
- }]},
- {categorytitle => 'Administration',
- items =>
- [{
- linktext => $links{$context}{'listusers'},
- icon => 'edit-find.png',
- #help => 'Course_View_Class_List',
- url => '/adm/createuser?action=listusers',
- permission => ($permission->{'view'} || $permission->{'cusr'}),
- linktitle => 'Show and manage users of this course.',
- }]},
- {categorytitle => 'Configuration',
- items =>
- [
- ]},
- );
-
- if ($context eq 'domain'){
-
- push(@{ $menu[1]->{items} },
- { linktext => 'Custom Roles',
- icon => 'emblem-photos.png',
- #help => 'Course_Editing_Custom_Roles',
- url => '/adm/createuser?action=custom',
- permission => $permission->{'custom'},
- linktitle => 'Configure a custom role.',
- });
-
- }elsif ($context eq 'course'){
- my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();
-
- push(@{ $menu[0]->{items} },
- { linktext => 'Single Student',
- #help => 'Course_Add_Student',
- icon => 'list-add.png',
- url => '/adm/createuser?action=singlestudent',
- permission => $permission->{'cusr'},
- linktitle => 'Add a user with the role student to this course.',
- });
-
- push(@{ $menu[1]->{items} },
- { linktext => 'Drop Students',
- icon => 'edit-undo.png',
- #help => 'Course_Drop_Student',
- url => '/adm/createuser?action=drop',
- permission => $permission->{'cusr'},
- linktitle =>'Remove a student from this course.',
- },
- { linktext => 'Custom Roles',
- icon => 'emblem-photos.png',
- #help => 'Course_Editing_Custom_Roles',
- url => '/adm/createuser?action=custom',
- permission => $permission->{'custom'},
- linktitle => 'Configure a custom role.',
- });
+ );
+
+ my @menu =
+ (
+ { text => $links{$context}{'upload'},
+ help => 'Course_Create_Class_List',
+ action => 'upload',
+ permission => $permission->{'cusr'},
+ },
+ { text => $links{$context}{'singleuser'},
+ help => 'Course_Change_Privileges',
+ action => 'singleuser',
+ permission => $permission->{'cusr'},
+ },
+ { text => $links{$context}{'listusers'},
+ help => 'Course_View_Class_List',
+ action => 'listusers',
+ permission => ($permission->{'view'} || $permission->{'cusr'}),
+ },
+ );
+ if ($context eq 'domain' || $context eq 'course') {
+ my $customlink = { text => 'Edit Custom Roles',
+ help => 'Course_Editing_Custom_Roles',
+ action => 'custom',
+ permission => $permission->{'custom'},
+ };
+ push(@menu,$customlink);
+ }
+ if ($context eq 'course') {
+ my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();
+ my @courselinks =
+ (
+ { text => 'Enroll a Single Student',
+ help => 'Course_Add_Student',
+ action => 'singlestudent',
+ permission => $permission->{'cusr'},
+ },
+ { text => 'Drop Students',
+ help => 'Course_Drop_Student',
+ action => 'drop',
+ permission => $permission->{'cusr'},
+ });
+ if (!exists($permission->{'cusr_section'})) {
+ push(@courselinks,
+ { text => 'Automated Enrollment Manager',
+ help => 'Course_Automated_Enrollment',
+ permission => (&Apache::lonnet::auto_run($cnum,$cdom)
+ && $permission->{'cusr'}),
+ url => '/adm/populate',
+ },
+ { text => 'Configure User Self-enrollment',
+ help => 'Course_Self_Enrollment',
+ action => 'selfenroll',
+ permission => $permission->{'cusr'},
+ });
+ }
if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}) {
- push(@{ $menu[1]->{items} },
- { linktext => 'Enrollment Requests',
- icon => 'selfenrl-queue.png',
- #help => 'Course_Approve_Selfenroll',
- url => '/adm/createuser?action=selfenrollqueue',
+ push(@courselinks,
+ { text => 'Enrollment Requests',
+ help => 'Course_Approve_Selfenroll',
+ action => 'selfenrollqueue',
permission => $permission->{'cusr'},
- linktitle =>'Approve or reject enrollment requests.',
- });
+ });
}
-
- if (!exists($permission->{'cusr_section'})){
-
- push(@{ $menu[2]->{items} },
- { linktext => 'Automated Enrollment',
- icon => 'roles.png',
- #help => 'Course_Automated_Enrollment',
- permission => (&Apache::lonnet::auto_run($cnum,$cdom)
- && $permission->{'cusr'}),
- url => '/adm/populate',
- linktitle => 'Automated enrollment manager.',
- },
- { linktext => 'User Self-Enrollment',
- icon => 'cstr.png',
- #help => 'Course_Self_Enrollment',
- url => '/adm/createuser?action=selfenroll',
- permission => $permission->{'cusr'},
- linktitle => 'Configure user self enrollment.',
- });
-
- }
-
- push(@{ $menu[2]->{items} },
- { linktext => 'Course Groups',
- icon => 'conf.png',
- #help => 'Course_Manage_Group',
- url => '/adm/coursegroups?refpage=cusr',
- permission => $permission->{'grp_manage'},
- linktitle => 'Manage course groups.',
- },
- { linktext => 'Change Logs',
- icon => 'document-properties.png',
- #help => 'Course_User_Logs',
- url => '/adm/createuser?action=changelogs',
- permission => $permission->{'cusr'},
- linktitle => 'View change log.',
- });
- };
-return Apache::lonhtmlcommon::generate_menu(@menu);
+ push(@courselinks,
+ { text => 'Manage Course Groups',
+ help => 'Course_Manage_Group',
+ permission => $permission->{'grp_manage'},
+ url => '/adm/coursegroups?refpage=cusr',
+ },
+ { text => 'View Change Logs',
+ help => 'Course_User_Logs',
+ action => 'changelogs',
+ permission => $permission->{'cusr'},
+ },);
# { text => 'View Log-in History',
# help => 'Course_User_Logins',
# action => 'logins',
# permission => $permission->{'cusr'},
# });
+ push(@menu,@courselinks);
+ }
+ my $menu_html = '';
+ foreach my $menu_item (@menu) {
+ next if (! $menu_item->{'permission'});
+ $menu_html.=' ';
+ if (exists($menu_item->{'help'})) {
+ $menu_html.=
+ &Apache::loncommon::help_open_topic($menu_item->{'help'});
+ }
+ $menu_html.='';
+ if (exists($menu_item->{'url'})) {
+ $menu_html.=qq{};
+ } else {
+ $menu_html.=
+ qq{ }; }
+ $menu_html.= &mt($menu_item->{'text'}).' ';
+ $menu_html.='
';
+ }
+ return $menu_html;
}
sub restore_prev_selections {
@@ -3825,15 +4322,18 @@ ENDSCRIPT
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $output = ''."\n".
''.$lt->{'selfenroll'}.' '."\n";
my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);
if (ref($visactions) eq 'HASH') {
if ($visible) {
- $output .= ''.$visactions->{'vis'}.'
';
+ $output .= ''.$visactions->{'vis'}.'
';
} else {
- $output .= $visactions->{'miss'}.' '.$visactions->{'yous'}.
+ $output .= ''.$visactions->{'miss'}.'
'
+ .$visactions->{'yous'}.
''.$visactions->{'gen'}.' '.$visactions->{'coca'};
if (ref($vismsgs) eq 'ARRAY') {
$output .= ' '.$visactions->{'make'}.'
'
+ .'';
+
+ # Update Display button
+ $output .= ''
+ .' '
+ .'
';
+
+ # Server version info
+ $output .= ''
+ .&mt('Only changes made from servers running LON-CAPA [_1] or later are displayed.'
+ ,'2.6.99.0');
if ($version) {
- $output .= ' '.&mt('This server is version [_3].','',' ',$version); }
- $output .= '
';
+ $output .= ' '.&mt('This LON-CAPA server is version [_1]',$version);
+ }
+ $output .= ' ';
return $output;
}
@@ -4767,7 +5048,8 @@ sub rolechg_contexts {
createcourse => 'Course Creation',
course => 'User Management in course',
domain => 'User Management in domain',
- selfenroll => 'Self-enrolled',
+ selfenroll => 'Self-enrolled',
+ requestcourses => 'Course Request',
);
return %lt;
}
@@ -4852,6 +5134,15 @@ sub user_search_result {
&build_search_response($context,$srch,%srch_results);
} else {
$currstate = 'modify';
+ my $uname = $srch->{'srchterm'};
+ my $udom = $srch->{'srchdomain'};
+ $srch_results{$uname.':'.$udom} =
+ { &Apache::lonnet::get('environment',
+ ['firstname',
+ 'lastname',
+ 'permanentemail'],
+ $udom,$uname)
+ };
}
} else {
%srch_results = &Apache::lonnet::usersearch($srch);
@@ -5143,17 +5434,27 @@ sub build_search_response {
$response .= ' '.&mt('You may want to broaden your search to the selected LON-CAPA domain.');
}
}
- if (!($srch->{'srchby'} eq 'uname' && $srch->{'srchin'} eq 'dom' && $srch->{'srchtype'} eq 'exact' && $srch->{'srchdomain'} eq $env{'request.role.domain'})) {
+ my $createdom = $env{'request.role.domain'};
+ if ($context eq 'requestcrs') {
+ if ($env{'form.coursedom'} ne '') {
+ $createdom = $env{'form.coursedom'};
+ }
+ }
+ if (!($srch->{'srchby'} eq 'uname' && $srch->{'srchin'} eq 'dom' && $srch->{'srchtype'} eq 'exact' && $srch->{'srchdomain'} eq $createdom)) {
my $cancreate =
- &Apache::lonuserutils::can_create_user($env{'request.role.domain'},$context);
+ &Apache::lonuserutils::can_create_user($createdom,$context);
+ my $targetdom = ''.$createdom.' ';
if ($cancreate) {
- my $showdom = &display_domain_info($env{'request.role.domain'});
+ my $showdom = &display_domain_info($createdom);
$response .= ' '
.''.&mt('To add a new user:').' '
- .' '
- .&mt("(You can only create new users in your current role's domain - [_1])"
- ,''.$env{'request.role.domain'}.' ')
- .''
+ .' ';
+ if ($context eq 'requestcrs') {
+ $response .= &mt("(You can only define new users in the new course's domain - [_1])",$targetdom);
+ } else {
+ $response .= &mt("(You can only create new users in your current role's domain - [_1])",$targetdom);
+ }
+ $response .= ''
.&mt("Set 'Domain/institution to search' to: [_1]",''.$showdom.' ')
.' '
.&mt("Set 'Search criteria' to: [_1]username is ..... in selected LON-CAPA domain[_2]",'',' ')
@@ -5164,11 +5465,14 @@ sub build_search_response {
.' ';
} else {
my $helplink = ' href="javascript:helpMenu('."'display'".')"';
- $response .= ' '
- .&mt("You are not authorized to create new users in your current role's domain - [_1]."
- ,''.$env{'request.role.domain'}.' ')
- .' '
- .&mt('Contact the [_1]helpdesk[_2] if you need to create a new user.'
+ $response .= ' ';
+ if ($context eq 'requestcrs') {
+ $response .= &mt("You are not authorized to define new users in the new course's domain - [_1].",$targetdom);
+ } else {
+ $response .= &mt("You are not authorized to create new users in your current role's domain - [_1].",$targetdom);
+ }
+ $response .= ' '
+ .&mt('Please contact the [_1]helpdesk[_2] if you need to create a new user.'
,' '
,' ')
.' ';
@@ -5384,7 +5688,7 @@ sub course_level_dc {
''.$courseform.' '.$lt{'rol'}.' '.$lt{'grs'}.' '.$lt{'sta'}.' '.$lt{'end'}.' '.
&Apache::loncommon::end_data_table_header_row();
my $otheritems = &Apache::loncommon::start_data_table_row()."\n".
- ' '."\n".
+ ' '."\n".
''."\n";
foreach my $role (@roles) {
my $plrole=&Apache::lonnet::plaintext($role);
@@ -5563,7 +5867,7 @@ sub update_selfenroll_config {
}
} else {
my @differences =
- &compare_arrays(\@currnotified,\@newnotified);
+ &Apache::loncommon::compare_arrays(\@currnotified,\@newnotified);
if (@differences > 0) {
if (@newnotified > 0) {
$changes{'internal.selfenroll_notifylist'} = join(',',@newnotified);
@@ -5573,7 +5877,7 @@ sub update_selfenroll_config {
}
}
} else {
- my @differences = &compare_arrays(\@currnotified,\@newnotified);
+ my @differences = &Apache::loncommon::compare_arrays(\@currnotified,\@newnotified);
if (@differences > 0) {
if (@newnotified > 0) {
$changes{'internal.selfenroll_notifylist'} = join(',',@newnotified);
@@ -5675,7 +5979,7 @@ sub update_selfenroll_config {
if ($currlimit eq 'allstudents') {
$newval = &mt('New self-enrollment no longer allowed when total (all students) reaches [_1].',$newcap);
} elsif ($changes{'internal.selfenroll_limit'} eq 'selfenrolled') {
- $newval = &mt('New self-enrollment no longer allowed when total umber of self-enrolled students reaches [_1].',$newcap);
+ $newval = &mt('New self-enrollment no longer allowed when total number of self-enrolled students reaches [_1].',$newcap);
}
}
$r->print(''.&mt('"[_1]" set to "[_2]".',$title,$newval).' '."\n");
@@ -5763,22 +6067,6 @@ sub update_selfenroll_config {
return;
}
-sub compare_arrays {
- my ($arrayref1,$arrayref2) = @_;
- my (@difference,%count);
- @difference = ();
- %count = ();
- if ((ref($arrayref1) eq 'ARRAY') && (ref($arrayref2) eq 'ARRAY')) {
- foreach my $element (@{$arrayref1}, @{$arrayref2}) { $count{$element}++; }
- foreach my $element (keys(%count)) {
- if ($count{$element} == 1) {
- push(@difference,$element);
- }
- }
- }
- return @difference;
-}
-
sub get_selfenroll_titles {
my @row = ('types','registered','enroll_dates','access_dates','section',
'approval','limit');