'.
- &Apache::loncommon::end_data_table_header_row();
- foreach my $key (sort(keys(%customroles))) {
- next if ((!$canmodify) && (!grep(/^\Q$key\E$/,@current)));
- $output .= &Apache::loncommon::start_data_table_row();
- if ($canmodify) {
- if (grep(/^\Q$key\E$/,@current)) {
- $output .= '
'.
- '
';
- } else {
- $output .= '
'.
- '
';
- }
- }
- $output .= '
'.$key.'
';
- foreach my $level ('course','domain','system') {
- if ($customroles{$key}{$level}) {
- my $suffix;
- if (($level eq 'domain') || ($level eq 'system')) {
- $suffix = ' ('.&mt($level).')';
- }
- my @privs = split(/:/,$customroles{$key}{$level});
- foreach my $item (@privs) {
- next if ($item eq '');
- my ($priv,$cond) = split(/\&/,$item);
- $output .= &Apache::lonnet::plaintext($priv,'Course').$suffix.' ';
- }
- }
- }
- $output .= '
'.
- &Apache::loncommon::end_data_table_row();
- }
- $output .= &Apache::loncommon::end_data_table();
- }
- return $output;
-}
-
sub courserequest_titles {
my %titles = &Apache::lonlocal::texthash (
official => 'Official',
unofficial => 'Unofficial',
community => 'Communities',
textbook => 'Textbook',
+ placement => 'Placement Tests',
norequest => 'Not allowed',
approval => 'Approval by Dom. Coord.',
validate => 'With validation',
@@ -751,7 +679,7 @@ sub print_username_entry_form {
} elsif ($env{'form.action'} eq 'accesslogs') {
$helpitem = 'Domain_User_Access_Logs';
}
- my %breadcrumb_text = &singleuser_breadcrumb($crstype);
+ my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$defdom);
if ($env{'form.action'} eq 'custom') {
push(@{$brcrum},
{href=>"javascript:backPage(document.crtuser)",
@@ -779,6 +707,7 @@ sub print_username_entry_form {
'srst' => 'Search for a user and enroll as a student',
'srme' => 'Search for a user and enroll as a member',
'srad' => 'Search for a user and modify/add user information or roles',
+ 'srvu' => 'Search for a user and view user information and roles',
'srva' => 'Search for a user and view access log information',
'usr' => "Username",
'dom' => "Domain",
@@ -834,6 +763,9 @@ sub print_username_entry_form {
}
} elsif ($env{'form.action'} eq 'accesslogs') {
$actiontext = $lt{'srva'};
+ } elsif (($env{'form.action'} eq 'singleuser') &&
+ ($context eq 'domain') && (!&Apache::lonnet::allowed('mau',$defdom))) {
+ $actiontext = $lt{'srvu'};
}
$r->print("
$actiontext
");
if ($env{'form.origform'} ne 'crtusername') {
@@ -927,7 +859,9 @@ ENDBLOCK
} else {
$output = '
'.$userpicker.'
';
}
- if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs')) {
+ if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs') &&
+ (!(($env{'form.action'} eq 'singleuser') && ($context eq 'domain') &&
+ (!&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))))) {
my $defdom=$env{'request.role.domain'};
my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');
my %lt=&Apache::lonlocal::texthash(
@@ -1044,7 +978,9 @@ ENDSCRIPT
'stusrch' => "User Search to enroll student",
'memsrch' => "User Search to enroll member",
'srcva' => "Search for a user and view access log information",
+ 'usrvu' => "User Search to view user roles",
'usel' => "Select a user to add/modify roles",
+ 'suvr' => "Select a user to view roles",
'stusel' => "Select a user to enroll as a student",
'memsel' => "Select a user to enroll as a member",
'vacsel' => "Select a user to view access log",
@@ -1057,7 +993,7 @@ ENDSCRIPT
if ($context eq 'requestcrs') {
$r->print('
');
- my @order = ('auth','quota','tools','requestauthor','adhocroles');
+ my @order = ('auth','quota','tools','requestauthor');
my %user_text;
my ($isadv,$isauthor) =
&Apache::lonnet::is_advanced_user($ccdomain,$ccuname);
if ((!$isauthor) &&
((&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||
(&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) &&
- ($env{'request.role.domain'} eq $ccdomain)) {
+ ($env{'request.role.domain'} eq $ccdomain)) {
$user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);
}
- if ((&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) ||
- (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) {
- $user_text{'adhocroles'} = &domadhocroles($ccuname,$ccdomain);
- }
$user_text{'auth'} = &user_authentication($ccuname,$ccdomain,$formname);
if ((&Apache::lonnet::allowed('mpq',$ccdomain)) ||
(&Apache::lonnet::allowed('mut',$ccdomain)) ||
@@ -1590,7 +1526,7 @@ ENDNOTOOLSPRIV
} elsif (($context eq 'course') && ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||
($env{'request.course.sec'} &&
&Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'})))) {
- $statuses = ['active'];
+ $statuses = ['active'];
}
if ($env{'form.action'} ne 'singlestudent') {
&display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,
@@ -1648,7 +1584,7 @@ ENDNOTOOLSPRIV
}
sub singleuser_breadcrumb {
- my ($crstype) = @_;
+ my ($crstype,$context,$domain) = @_;
my %breadcrumb_text;
if ($env{'form.action'} eq 'singlestudent') {
if ($crstype eq 'Community') {
@@ -1656,16 +1592,21 @@ sub singleuser_breadcrumb {
} else {
$breadcrumb_text{'search'} = 'Enroll a student';
}
- $breadcrumb_text{'userpicked'} = 'Select a user',
- $breadcrumb_text{'modify'} = 'Set section/dates',
+ $breadcrumb_text{'userpicked'} = 'Select a user';
+ $breadcrumb_text{'modify'} = 'Set section/dates';
} elsif ($env{'form.action'} eq 'accesslogs') {
$breadcrumb_text{'search'} = 'View access logs for a user';
- $breadcrumb_text{'userpicked'} = 'Select a user',
- $breadcrumb_text{'activity'} = 'Activity',
+ $breadcrumb_text{'userpicked'} = 'Select a user';
+ $breadcrumb_text{'activity'} = 'Activity';
+ } elsif (($env{'form.action'} eq 'singleuser') && ($context eq 'domain') &&
+ (!&Apache::lonnet::allowed('mau',$domain))) {
+ $breadcrumb_text{'search'} = "View user's roles";
+ $breadcrumb_text{'userpicked'} = 'Select a user';
+ $breadcrumb_text{'modify'} = 'User roles';
} else {
$breadcrumb_text{'search'} = 'Create/modify a user';
- $breadcrumb_text{'userpicked'} = 'Select a user',
- $breadcrumb_text{'modify'} = 'Set user role',
+ $breadcrumb_text{'userpicked'} = 'Select a user';
+ $breadcrumb_text{'modify'} = 'Set user role';
}
return %breadcrumb_text;
}
@@ -1819,7 +1760,7 @@ sub display_existing_roles {
if ($active) {
next unless($showall || $showactive);
} else {
- next unless($showall || $showexpired);
+ next unless($showall || $showexpired);
}
# Is this a custom role? Get role owner and title.
my ($croleudom,$croleuname,$croletitle)=
@@ -1830,11 +1771,12 @@ sub display_existing_roles {
my $class='Unknown';
my $credits='';
my $csec;
- if ($area =~ m{^/($match_domain)/($match_courseid)} ) {
+ if ($area =~ m{^/($match_domain)/($match_courseid)}) {
$class='Course';
my ($coursedom,$coursedir) = ($1,$2);
my $cid = $1.'_'.$2;
# $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).
+ next if ($envkey =~ m{^/$match_domain/$match_courseid/[A-Za-z0-9]+_gr$});
my %coursedata=
&Apache::lonnet::coursedescription($cid);
if ($coursedir =~ /^$match_community$/) {
@@ -1963,7 +1905,7 @@ sub display_existing_roles {
} else {
$row.=' ';
}
- $row.= '';
+ $row.= '';
}
my $plaintext='';
if (!$croletitle) {
@@ -1994,7 +1936,8 @@ sub display_existing_roles {
$rolepriv{$envkey}='edit';
} else {
if ($context eq 'domain') {
- if (&Apache::lonnet::allowed('vur',$ccdomain)) {
+ if ((&Apache::lonnet::allowed('vur',$ccdomain)) &&
+ ($envkey=~m{^/$ccdomain/})) {
$rolepriv{$envkey}='view';
}
} elsif ($context eq 'course') {
@@ -2231,6 +2174,7 @@ $lt{'uuas'} ($currentauth). $lt{'adcs'}.
ENDBADAUTH
}
} else { # Authentication type is valid
+
&initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');
my ($authformcurrent,$can_modify,@authform_others) =
&modify_login_block($ccdomain,$currentauth);
@@ -2274,7 +2218,7 @@ ENDBADAUTH
$result = &mt('Currently Kerberos authenticated, Version [_1].',$krbver);
} else {
$result = &mt('Currently Kerberos authenticated with domain [_1] Version [_2].',
- $krbver,$krbrealm);
+ $krbrealm,$krbver);
}
} elsif ($currentauth =~ /^internal:/) {
$result = &mt('Currently internally authenticated.');
@@ -2680,7 +2624,7 @@ sub update_user_data {
$jsback."\n".
'// ]]>'."\n".
''."\n";
- my %breadcrumb_text = &singleuser_breadcrumb($crstype);
+ my %breadcrumb_text = &singleuser_breadcrumb($crstype,$context,$env{'form.ccdomain'});
push (@{$brcrum},
{href => "javascript:backPage(document.userupdate)",
text => $breadcrumb_text{'search'},
@@ -2789,7 +2733,7 @@ sub update_user_data {
my (%alerts,%rulematch,%inst_results,%curr_rules);
my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
my @usertools = ('aboutme','blog','webdav','portfolio');
- my @requestcourses = ('official','unofficial','community','textbook');
+ my @requestcourses = ('official','unofficial','community','textbook','placement');
my @requestauthor = ('requestauthor');
my ($othertitle,$usertypes,$types) =
&Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
@@ -2899,12 +2843,6 @@ sub update_user_data {
$newcustom{'requestauthor'},
\%changeHash,'requestauthor');
}
- if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) {
- my @adds = &Apache::loncommon::get_env_multiple('form.adhocroleadd');
- if (&adhocrole_changes(\%changeHash)) {
- $changed{'adhocroles.'.$env{'request.role.domain'}} = $changeHash{'adhocroles.'.$env{'request.role.domain'}};
- }
- }
}
if ($canmodify_status{'inststatus'}) {
if (exists($env{'form.inststatus'})) {
@@ -2968,7 +2906,7 @@ sub update_user_data {
'requestcourses.community','requestcourses.textbook',
'reqcrsotherdom.official','reqcrsotherdom.unofficial',
'reqcrsotherdom.community','reqcrsotherdom.textbook',
- 'requestauthor','adhocroles.'.$env{'request.role.domain'}],
+ 'reqcrsotherdom.placement','requestauthor'],
$env{'form.ccdomain'},$env{'form.ccuname'});
my ($tmp) = keys(%userenv);
if ($tmp =~ /^(con_lost|error)/i) {
@@ -3107,7 +3045,6 @@ sub update_user_data {
&Apache::loncommon::default_quota($env{'form.ccdomain'},$oldinststatus,$name);
($newdefquota{$name},$newsettingstatus{$name}) = ($olddefquota{$name},$oldsettingstatus{$name});
}
- push(@disporder,'adhocroles');
my %canshow;
if (&Apache::lonnet::allowed('mpq',$env{'form.ccdomain'})) {
$canshow{'quota'} = 1;
@@ -3126,9 +3063,6 @@ sub update_user_data {
if (&Apache::lonnet::allowed('cau',$env{'form.ccdomain'})) {
$canshow{'requestauthor'} = 1;
}
- if (&Apache::lonnet::allowed('cdh',$env{'request.role.domain'})) {
- $canshow{'adhocroles'} = 1;
- }
my (%changeHash,%changed);
if ($oldinststatus eq '') {
$oldsettings{'inststatus'} = $othertitle;
@@ -3242,14 +3176,6 @@ sub update_user_data {
&tool_changes('reqcrsotherdom',\@requestcourses,\%oldsettings,\%oldsettingstext,
\%userenv,\%changeHash,\%changed,\%newsettings,\%newsettingstext);
}
- if ($userenv{'adhocroles.'.$env{'request.role.domain'}}) {
- $changeHash{'adhocroles.'.$env{'request.role.domain'}} = $userenv{'adhocroles.'.$env{'request.role.domain'}};
- }
- if (&adhocrole_changes(\%changeHash,\%userenv)) {
- $changed{'adhocroles'} = 1;
- $oldsettings{'adhocroles'} = $userenv{'adhocroles.'.$env{'request.role.domain'}};
- $newsettings{'adhocroles'} = $changeHash{'adhocroles.'.$env{'request.role.domain'}};
- }
}
foreach my $item (@userinfo) {
if ($env{'form.c'.$item} ne $userenv{$item}) {
@@ -3271,8 +3197,9 @@ sub update_user_data {
($env{'user.domain'} eq $env{'form.ccdomain'})) {
my %newenvhash;
foreach my $key (keys(%changed)) {
- if (($key eq 'official') || ($key eq 'unofficial')
- || ($key eq 'community') || ($key eq 'textbook')) {
+ if (($key eq 'official') || ($key eq 'unofficial') ||
+ ($key eq 'community') || ($key eq 'textbook') ||
+ ($key eq 'placement')) {
$newenvhash{'environment.requestcourses.'.$key} =
$changeHash{'requestcourses.'.$key};
if ($changeHash{'requestcourses.'.$key}) {
@@ -3291,9 +3218,6 @@ sub update_user_data {
&Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'},
$key,'reload','requestauthor');
}
- } elsif ($key eq 'adhocroles') {
- $newenvhash{'adhocroles.'.$env{'request.role.domain'}} =
- $changeHash{'adhocroles.'.$env{'request.role.domain'}};
} elsif ($key ne 'quota') {
$newenvhash{'environment.tools.'.$key} =
$changeHash{'tools.'.$key};
@@ -3341,7 +3265,7 @@ sub update_user_data {
\%newsettingstext);
if ($env{'form.cid'} ne $userenv{'id'}) {
&Apache::lonnet::idput($env{'form.ccdomain'},
- {$env{'form.ccuname'} => $env{'form.cid'}});
+ {$env{'form.ccuname'} => $env{'form.cid'}},$uhome,'ids');
if (($recurseid) &&
(&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) {
my $idresult =
@@ -3484,8 +3408,8 @@ sub display_userinfo {
'unofficial' => 'Can Request Unofficial Courses',
'community' => 'Can Request Communities',
'textbook' => 'Can Request Textbook Courses',
+ 'placement' => 'Can Request Placement Tests',
'requestauthor' => 'Can Request Author Role',
- 'adhocroles' => 'Ad Hoc Roles Selectable via Helpdesk Role',
'inststatus' => "Affiliation",
'prvs' => 'Previous Value:',
'chto' => 'Changed To:'
@@ -3851,70 +3775,6 @@ sub tool_changes {
return;
}
-sub adhocrole_changes {
- my ($changehashref,$userenv) = @_;
- my @adds = &Apache::loncommon::get_env_multiple('form.adhocroleadd');
- my @dels = &Apache::loncommon::get_env_multiple('form.adhocroledel');
- my (@saved,@added,@alladhoc,$changed);
- my $adhoc_key = 'adhocroles.'.$env{'request.role.domain'};
- if (!$env{'form.makeuser'}) {
- if (ref($userenv) eq 'HASH') {
- my @current;
- if ($userenv->{$adhoc_key}) {
- @current = split(/,/,$userenv->{$adhoc_key});
- if (@dels) {
- foreach my $curr (@current) {
- next if ($curr eq '');
- unless (grep(/\Q$curr\E$/,@dels)) {
- push(@saved,$curr);
- }
- }
- $changed = 1;
- } else {
- @saved = @current;
- }
- }
- }
- }
- if (@adds) {
- my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'});
- my %existing=&Apache::lonnet::dump('roles',$env{'request.role.domain'},
- $confname,'rolesdef_');
- foreach my $poss (@adds) {
- if (exists($existing{'rolesdef_'.$poss})) {
- push(@added,$poss);
- $changed = 1;
- }
- }
- }
- if (@added) {
- if (@saved) {
- foreach my $add (@added) {
- unless (grep(/^\Q$add\E$/,@saved)) {
- push(@alladhoc,$add);
- }
- }
- } else {
- push(@alladhoc,@added);
- }
- }
- if (@saved) {
- push(@alladhoc,@saved);
- }
- if (@alladhoc) {
- my $adhocstr = join(',',sort(@alladhoc));
- $changehashref->{$adhoc_key} = $adhocstr;
- } elsif (@dels) {
- &Apache::lonnet::del('environment',[$adhoc_key],$env{'form.ccdomain'},$env{'form.ccuname'});
- delete($changehashref->{$adhoc_key});
- if (($env{'form.ccdomain'} eq $env{'user.domain'}) &&
- ($env{'form.ccuname'} eq $env{'user.name'})) {
- &Apache::lonnet::delenv($adhoc_key);
- }
- }
- return $changed;
-}
-
sub update_roles {
my ($r,$context,$showcredits) = @_;
my $now=time;
@@ -4524,7 +4384,7 @@ sub custom_role_editor {
);
my $args = { bread_crumbs => $brcrum,
bread_crumbs_component => 'User Management'};
-
+
$r->print(&Apache::loncommon::start_page('Custom Role Editor',
$head_script,$args).
$body_top);
@@ -5165,13 +5025,12 @@ sub handler {
} elsif ($env{'form.state'} eq 'done') {
$r->print('
'.&mt('Enrollment request processing').'
'."\n");
$r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
- $cdom,$cnum,$coursedesc));
+ $cdom,$cnum,$coursedesc));
}
} else {
$r->print(&header(undef,{'no_nav_bar' => 1}).
''.&mt('You do not have permission to manage self-enrollment').'');
}
-
} elsif ($env{'form.action'} eq 'changelogs') {
if ($permission->{cusr} || $permission->{view}) {
&print_userchangelogs_display($r,$context,$permission,$brcrum);
@@ -5432,9 +5291,9 @@ sub print_main_menu {
);
if ($linkcontext eq 'domain') {
unless ($permission->{'cusr'}) {
- $links{'domain'}{'singleuser'} = 'View a User';
+ $links{'domain'}{'singleuser'} = 'View a User';
$linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';
-
+
}
} elsif ($linkcontext eq 'course') {
unless ($permission->{'cusr'}) {
@@ -5495,7 +5354,7 @@ sub print_main_menu {
{
linktext => 'User Access Log',
icon => 'document-properties.png',
- #help => 'User_Access_Logs',
+ #help => 'Domain_User_Access_Logs',
url => '/adm/createuser?action=accesslogs',
permission => $permission->{'activity'},
linktitle => 'View user access log.',
@@ -5552,6 +5411,7 @@ sub print_main_menu {
groups => 'Community Groups',
},
);
+ $linktext{'Placement'} = $linktext{'Course'};
my %linktitle = (
'Course' => {
@@ -5566,6 +5426,8 @@ sub print_main_menu {
},
);
+ $linktitle{'Placement'} = $linktitle{'Course'};
+
push(@{ $menu[0]->{items} }, #Category: Single Users
{
linktext => $linktext{$crstype}{'single'},
@@ -6177,7 +6039,7 @@ ENDSCRIPT
} elsif ($item eq 'approval') {
my ($currnotified,$currapproval,%appchecked);
my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs();
- if (ref($currsettings) eq 'HASH') {
+ if (ref($currsettings) eq 'HASH') {
$currnotified = $currsettings->{'selfenroll_notifylist'};
$currapproval = $currsettings->{'selfenroll_approval'};
}
@@ -6305,8 +6167,8 @@ ENDSCRIPT
.&mt('Save').'" onclick="validate_types(this.form);" />';
}
$output .= ''
- .''."\n"
- .$additional.'';
+ .''."\n"
+ .$additional.'';
$r->print($output);
return;
}
@@ -6711,7 +6573,7 @@ ENDSCRIPT
}
}
if (($context eq 'course') && ($viewablesec ne '')) {
- next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec);
+ next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec);
}
$count ++;
next if ($count < $minshown);
@@ -6800,7 +6662,7 @@ sub print_useraccesslogs_display {
my $form = 'document.accesslog';
# set breadcrumbs
- my %breadcrumb_text = &singleuser_breadcrumb();
+ my %breadcrumb_text = &singleuser_breadcrumb('','domain',$udom);
push (@{$brcrum},
{href => "javascript:backPage($form)",
text => $breadcrumb_text{'search'}});
@@ -6820,10 +6682,13 @@ sub print_useraccesslogs_display {
push(@{$brcrum},
{href => '/adm/createuser?action=accesslogs',
text => 'User access logs',
- help => 'User_Access_Logs'});
+ help => 'Domain_User_Access_Logs'});
my $bread_crumbs_component = 'User Access Logs';
my $args = { bread_crumbs => $brcrum,
bread_crumbs_component => 'User Management'};
+ if ($env{'form.popup'}) {
+ $args->{'no_nav_bar'} = 1;
+ }
# set javascript
my ($jsback,$elements) = &crumb_utilities();
@@ -7029,6 +6894,10 @@ ENDSCRIPT
.'');
}
+ if ($env{'form.popup'} == 1) {
+ $r->print(''."\n");
+ }
+
# Form Footer
$r->print(
''
@@ -7748,18 +7617,21 @@ sub build_search_response {
.&mt("Click 'Search'")
.' ';
} else {
- my $helplink = ' href="javascript:helpMenu('."'display'".')"';
- $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);
+ unless (($context eq 'domain') && ($env{'form.action'} eq 'singleuser')) {
+ my $helplink = ' href="javascript:helpMenu('."'display'".')"';
+ $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.'
+ ,' '
+ ,'')
+ .' ';
+
}
- $response .= ' '
- .&mt('Please contact the [_1]helpdesk[_2] if you need to create a new user.'
- ,' '
- ,'')
- .' ';
}
}
}