--- loncom/interface/loncreateuser.pm 2010/04/23 17:51:42 1.295.2.33
+++ loncom/interface/loncreateuser.pm 2010/10/11 14:36:04 1.352
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.295.2.33 2010/04/23 17:51:42 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.352 2010/10/11 14:36:04 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -479,7 +479,7 @@ sub courserequest_display {
# =================================================================== Phase one
sub print_username_entry_form {
- my ($r,$context,$response,$srch,$forcenewuser,$crstype) = @_;
+ my ($r,$context,$response,$srch,$forcenewuser,$crstype,$brcrum) = @_;
my $defdom=$env{'request.role.domain'};
my $formtoset = 'crtuser';
if (exists($env{'form.startrolename'})) {
@@ -503,31 +503,36 @@ sub print_username_entry_form {
&& (&Apache::lonnet::allowed('mcr','/'))) {
$jscript .= &customrole_javascript();
}
- my %loaditems = (
- 'onload' => "javascript:setFormElements(document.$formtoset)",
- );
- my %breadcrumb_text = &singleuser_breadcrumb($crstype);
- my $start_page =
- &Apache::loncommon::start_page('User Management',
- $jscript,{'add_entries' => \%loaditems,});
- if ($env{'form.action'} eq 'custom') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.crtuser)",
- text=>"Pick custom role",});
- } else {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.crtuser)",
- text=>$breadcrumb_text{'search'},
- faq=>282,bug=>'Instructor Interface',});
- }
my $helpitem = 'Course_Change_Privileges';
if ($env{'form.action'} eq 'custom') {
$helpitem = 'Course_Editing_Custom_Roles';
} elsif ($env{'form.action'} eq 'singlestudent') {
$helpitem = 'Course_Add_Student';
}
- my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management',
- $helpitem);
+ my %breadcrumb_text = &singleuser_breadcrumb($crstype);
+ if ($env{'form.action'} eq 'custom') {
+ push(@{$brcrum},
+ {href=>"javascript:backPage(document.crtuser)",
+ text=>"Pick custom role",
+ help => $helpitem,}
+ );
+ } else {
+ push (@{$brcrum},
+ {href => "javascript:backPage(document.crtuser)",
+ text => $breadcrumb_text{'search'},
+ help => $helpitem,
+ faq => 282,
+ bug => 'Instructor Interface',}
+ );
+ }
+ my %loaditems = (
+ 'onload' => "javascript:setFormElements(document.$formtoset)",
+ );
+ my $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => 'User Management',
+ add_entries => \%loaditems,};
+ $r->print(&Apache::loncommon::start_page('User Management',$jscript,$args));
+
my %lt=&Apache::lonlocal::texthash(
'srst' => 'Search for a user and enroll as a student',
'srme' => 'Search for a user and enroll as a member',
@@ -538,7 +543,7 @@ sub print_username_entry_form {
'nr' => "role name",
'cre' => "Next",
);
- $r->print($start_page."\n".$crumbs);
+
if ($env{'form.action'} eq 'custom') {
if (&Apache::lonnet::allowed('mcr','/')) {
my $newroletext = &mt('Define new custom role:');
@@ -591,7 +596,6 @@ sub print_username_entry_form {
}
$r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response,$crstype));
}
- $r->print(&Apache::loncommon::end_page());
}
sub customrole_javascript {
@@ -685,7 +689,7 @@ ENDBLOCK
);
my $sellink=&Apache::loncommon::selectstudent_link('crtusername','srchterm','srchdomain');
my ($title,$buttontext,$showresponse);
- if ($env{'form.action'} eq 'singlestudent') {
+ if ($env{'form.action'} eq 'singlestudent') {
if ($crstype eq 'Community') {
$title = $lt{'enrm'};
} else {
@@ -761,7 +765,7 @@ END
# =================================================================== Phase two
sub print_user_selection_page {
- my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype) = @_;
+ my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype,$brcrum) = @_;
my @fields = ('username','domain','lastname','firstname','permanentemail');
my $sortby = $env{'form.sortby'};
@@ -802,25 +806,30 @@ ENDSCRIPT
if ($context eq 'requestcrs') {
$r->print('
');
} else {
- $r->print(&Apache::loncommon::start_page('User Management',$jscript));
-
my %breadcrumb_text = &singleuser_breadcrumb($crstype);
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.usersrchform,'','')",
- text=>$breadcrumb_text{'search'},
- faq=>282,bug=>'Instructor Interface',},
- {href=>"javascript:backPage(document.usersrchform,'get_user_info','select')",
- text=>$breadcrumb_text{'userpicked'},
- faq=>282,bug=>'Instructor Interface',});
+ my $helpitem;
+ if ($env{'form.action'} eq 'singleuser') {
+ $helpitem = 'Course_Change_Privileges';
+ } elsif ($env{'form.action'} eq 'singlestudent') {
+ $helpitem = 'Course_Add_Student';
+ }
+ push (@{$brcrum},
+ {href => "javascript:backPage(document.usersrchform,'','')",
+ text => $breadcrumb_text{'search'},
+ faq => 282,
+ bug => 'Instructor Interface',},
+ {href => "javascript:backPage(document.usersrchform,'get_user_info','select')",
+ text => $breadcrumb_text{'userpicked'},
+ faq => 282,
+ bug => 'Instructor Interface',
+ help => $helpitem}
+ );
+ $r->print(&Apache::loncommon::start_page('User Management',$jscript,{bread_crumbs => $brcrum}));
if ($env{'form.action'} eq 'singleuser') {
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
- 'Course_Change_Privileges'));
$r->print("$lt{'usrch'} ");
$r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype));
$r->print('
'.$lt{'usel'}.' ');
} elsif ($env{'form.action'} eq 'singlestudent') {
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
- 'Course_Add_Student'));
$r->print($jscript."");
if ($crstype eq 'Community') {
$r->print($lt{'memsrch'});
@@ -897,12 +906,12 @@ ENDSCRIPT
if ($context eq 'requestcrs') {
$r->print($opener_elements.' ');
} else {
- $r->print($response.''.&Apache::loncommon::end_page());
+ $r->print($response.'');
}
}
sub print_user_query_page {
- my ($r,$caller) = @_;
+ my ($r,$caller,$brcrum) = @_;
# FIXME - this is for a network-wide name search (similar to catalog search)
# To use frames with similar behavior to catalog/portfolio search.
# To be implemented.
@@ -910,11 +919,11 @@ sub print_user_query_page {
}
sub print_user_modification_page {
- my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype) = @_;
+ my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype,$brcrum) = @_;
if (($ccuname eq '') || ($ccdomain eq '')) {
my $usermsg = &mt('No username and/or domain provided.');
$env{'form.phase'} = '';
- &print_username_entry_form($r,$context,$usermsg,'','',$crstype);
+ &print_username_entry_form($r,$context,$usermsg,'','',$crstype,$brcrum);
return;
}
my ($form,$formname);
@@ -955,7 +964,7 @@ sub print_user_modification_page {
,'',' ')
.' ';
$env{'form.phase'} = '';
- &print_username_entry_form($r,$context,$response,undef,undef,$crstype);
+ &print_username_entry_form($r,$context,$response,undef,undef,$crstype,$brcrum);
return;
}
$newuser = 1;
@@ -979,7 +988,7 @@ sub print_user_modification_page {
'username');
}
$env{'form.phase'} = '';
- &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype);
+ &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype,$brcrum);
return;
}
}
@@ -1000,34 +1009,37 @@ sub print_user_modification_page {
my $js = &validation_javascript($context,$ccdomain,$pjump_def,
$groupslist,$newuser,$formname,\%loaditem);
- my $args = {'add_entries' => \%loaditem};
- if ($env{'form.popup'}) {
- $args->{'no_nav_bar'} = 1;
- }
- my $start_page =
- &Apache::loncommon::start_page('User Management',$js,$args);
my %breadcrumb_text = &singleuser_breadcrumb($crstype);
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage($form)",
- text=>$breadcrumb_text{'search'},
- faq=>282,bug=>'Instructor Interface',});
-
- if ($env{'form.phase'} eq 'userpicked') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage($form,'get_user_info','select')",
- text=>$breadcrumb_text{'userpicked'},
- faq=>282,bug=>'Instructor Interface',});
- }
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage($form,'$env{'form.phase'}','modify')",
- text=>$breadcrumb_text{'modify'},
- faq=>282,bug=>'Instructor Interface',});
my $helpitem = 'Course_Change_Privileges';
if ($env{'form.action'} eq 'singlestudent') {
$helpitem = 'Course_Add_Student';
}
- my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management',
- $helpitem);
+ push (@{$brcrum},
+ {href => "javascript:backPage($form)",
+ text => $breadcrumb_text{'search'},
+ faq => 282,
+ bug => 'Instructor Interface',});
+ if ($env{'form.phase'} eq 'userpicked') {
+ push(@{$brcrum},
+ {href => "javascript:backPage($form,'get_user_info','select')",
+ text => $breadcrumb_text{'userpicked'},
+ faq => 282,
+ bug => 'Instructor Interface',});
+ }
+ push(@{$brcrum},
+ {href => "javascript:backPage($form,'$env{'form.phase'}','modify')",
+ text => $breadcrumb_text{'modify'},
+ faq => 282,
+ bug => 'Instructor Interface',
+ help => $helpitem});
+ my $args = {'add_entries' => \%loaditem,
+ 'bread_crumbs' => $brcrum,
+ 'bread_crumbs_component' => 'User Management'};
+ if ($env{'form.popup'}) {
+ $args->{'no_nav_bar'} = 1;
+ }
+ my $start_page =
+ &Apache::loncommon::start_page('User Management',$js,$args);
my $forminfo =<<"ENDFORMINFO";
".&Apache::loncommon::end_page());
+ $r->print(' ');
return;
}
@@ -1428,7 +1437,7 @@ sub display_existing_roles {
my (%rolesdump,%roletext,%sortrole,%roleclass,%rolepriv);
if ($context eq 'course' || $context eq 'author') {
my @roles = &Apache::lonuserutils::roles_by_context($context,1,$crstype);
- my %roleshash =
+ my %roleshash =
&Apache::lonnet::get_my_roles($ccuname,$ccdomain,'userroles',
['active','previous','future'],\@roles,$roledom,1);
foreach my $key (keys(%roleshash)) {
@@ -1461,7 +1470,8 @@ sub display_existing_roles {
$rolesdump{$newkey} = $newvalue;
}
} else {
- %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname);
+ my $extra = &Apache::lonnet::freeze_escape({'skipcheck' => 1});
+ %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname,'.',undef,$extra);
}
# Build up table of user roles to allow revocation and re-enabling of roles.
my ($tmp) = keys(%rolesdump);
@@ -1499,7 +1509,7 @@ sub display_existing_roles {
if (defined($coursedata{'description'})) {
$carea=$coursedata{'description'}.
' '.&mt('Domain').': '.$coursedom.(' 'x8).
- &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$coursedir,$coursedom);
+ &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$coursedir,$coursedom);
$sortkey.="\0".$coursedata{'description'};
} else {
if ($class eq 'Community') {
@@ -1525,10 +1535,10 @@ sub display_existing_roles {
$allowed = 1;
}
}
- }
+ }
if ((&Apache::lonnet::allowed('dro',$coursedom)) ||
(&Apache::lonnet::allowed('dro',$ccdomain))) {
- $delallowed=1;
+ $delallowed=1;
}
# - custom role. Needs more info, too
if ($croletitle) {
@@ -1541,11 +1551,11 @@ sub display_existing_roles {
$carea.=' Section: '.$3;
$sortkey.="\0$3";
if (!$allowed) {
- if ($env{'request.course.sec'} eq $3) {
- if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2.'/'.$3)) {
- $allowed = 1;
- }
- }
+ if ($env{'request.course.sec'} eq $3) {
+ if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2.'/'.$3)) {
+ $allowed = 1;
+ }
+ }
}
}
$area=$carea;
@@ -1554,8 +1564,8 @@ sub display_existing_roles {
# Determine if current user is able to revoke privileges
if ($area=~m{^/($match_domain)/}) {
if ((&Apache::lonnet::allowed('c'.$role_code,$1)) ||
- (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
- $allowed=1;
+ (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
+ $allowed=1;
}
if (((&Apache::lonnet::allowed('dro',$1)) ||
(&Apache::lonnet::allowed('dro',$ccdomain))) &&
@@ -1613,13 +1623,16 @@ sub display_existing_roles {
$plaintext=&Apache::lonnet::plaintext($role_code,$class)
} else {
$plaintext=
- "Customrole '$croletitle' defined by $croleuname\@$croleudom";
+ &mt('Customrole [_1][_2]defined by [_3]',
+ '"'.$croletitle.'"',
+ ' ',
+ $croleuname.':'.$croleudom);
}
$row.= ''.$plaintext.
' '.$area.
' '.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time)
: ' ' ).
- ' '.($role_end_time ?&Apache::lonlocal::locallocaltime($role_end_time)
+ ' '.($role_end_time ?&Apache::lonlocal::locallocaltime($role_end_time)
: ' ' )
." ";
$sortrole{$sortkey}=$envkey;
@@ -1634,7 +1647,7 @@ sub display_existing_roles {
$output{$type} = '';
foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) {
- $output{$type}.=
+ $output{$type}.=
&Apache::loncommon::start_data_table_row().
$roletext{$sortrole{$which}}.
&Apache::loncommon::end_data_table_row();
@@ -2176,7 +2189,7 @@ sub get_inststatuses {
# ================================================================= Phase Three
sub update_user_data {
- my ($r,$context,$crstype) = @_;
+ my ($r,$context,$crstype,$brcrum) = @_;
my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},
$env{'form.ccdomain'});
# Error messages
@@ -2201,36 +2214,39 @@ sub update_user_data {
'// ]]>'."\n".
''."\n";
my %breadcrumb_text = &singleuser_breadcrumb($crstype);
- my $args;
- if ($env{'form.popup'}) {
- $args->{'no_nav_bar'} = 1;
- } else {
- $args = undef;
- }
- $r->print(&Apache::loncommon::start_page($title,$jscript,$args));
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.userupdate)",
- text=>$breadcrumb_text{'search'},
- faq=>282,bug=>'Instructor Interface',});
+ push (@{$brcrum},
+ {href => "javascript:backPage(document.userupdate)",
+ text => $breadcrumb_text{'search'},
+ faq => 282,
+ bug => 'Instructor Interface',}
+ );
if ($env{'form.prevphase'} eq 'userpicked') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.userupdate,'get_user_info','select')",
- text=>$breadcrumb_text{'userpicked'},
- faq=>282,bug=>'Instructor Interface',});
- }
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",
- text=>$breadcrumb_text{'modify'},
- faq=>282,bug=>'Instructor Interface',},
- {href=>"/adm/createuser",
- text=>"Result",
- faq=>282,bug=>'Instructor Interface',});
+ push(@{$brcrum},
+ {href => "javascript:backPage(document.userupdate,'get_user_info','select')",
+ text => $breadcrumb_text{'userpicked'},
+ faq => 282,
+ bug => 'Instructor Interface',});
+ }
my $helpitem = 'Course_Change_Privileges';
if ($env{'form.action'} eq 'singlestudent') {
$helpitem = 'Course_Add_Student';
}
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
- $helpitem));
+ push(@{$brcrum},
+ {href => "javascript:backPage(document.userupdate,'$env{'form.prevphase'}','modify')",
+ text => $breadcrumb_text{'modify'},
+ faq => 282,
+ bug => 'Instructor Interface',},
+ {href => "/adm/createuser",
+ text => "Result",
+ faq => 282,
+ bug => 'Instructor Interface',
+ help => $helpitem});
+ my $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => 'User Management'};
+ if ($env{'form.popup'}) {
+ $args->{'no_nav_bar'} = 1;
+ }
+ $r->print(&Apache::loncommon::start_page($title,$jscript,$args));
$r->print(&update_result_form($uhome));
# Check Inputs
if (! $env{'form.ccuname'} ) {
@@ -2297,6 +2313,8 @@ sub update_user_data {
$r->print(''.&mt('User [_1] in domain [_2]',
$env{'form.ccuname'}, $env{'form.ccdomain'}).' ');
+ $r->print(''.&mt('Please be patient').'
');
+
my (%alerts,%rulematch,%inst_results,%curr_rules);
my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
my @usertools = ('aboutme','blog','portfolio');
@@ -2381,7 +2399,7 @@ sub update_user_data {
if ($env{'form.custom'.$item} == 1) {
$newcustom{$item} = $env{'form.tools_'.$item};
$changed{$item} = &tool_admin($item,$newcustom{$item},
- \%changeHash,'tools');
+ \%changeHash,'tools');
}
}
foreach my $item (@requestcourses) {
@@ -2438,8 +2456,11 @@ sub update_user_data {
$r->print($error.&mt('You do not have the authority to modify this users authentification information').'.'.$end);
}
}
+
+ $r->rflush(); # Finish display of header before time consuming actions start
+
##
- my (@userroles,%userupdate,$cnum,$cdom,$crstype,%namechanged);
+ my (@userroles,%userupdate,$cnum,$cdom,%namechanged);
if ($context eq 'course') {
($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();
$crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum);
@@ -2586,7 +2607,7 @@ sub update_user_data {
}
push(@disporder,('quota','tools'));
$oldinststatus = $userenv{'inststatus'};
- ($olddefquota,$oldsettingstatus) =
+ ($olddefquota,$oldsettingstatus) =
&Apache::loncommon::default_quota($env{'form.ccdomain'},$oldinststatus);
($newdefquota,$newsettingstatus) = ($olddefquota,$oldsettingstatus);
my %canshow;
@@ -2606,7 +2627,7 @@ sub update_user_data {
}
my (%changeHash,%changed);
if ($oldinststatus eq '') {
- $oldsettings{'inststatus'} = $othertitle;
+ $oldsettings{'inststatus'} = $othertitle;
} else {
if (ref($usertypes) eq 'HASH') {
$oldsettings{'inststatus'} = join(', ',map{ $usertypes->{ &unescape($_) }; } (split(/:/,$userenv{'inststatus'})));
@@ -2628,7 +2649,7 @@ sub update_user_data {
&Apache::loncommon::default_quota($env{'form.ccdomain'},$newinststatus);
}
if (ref($usertypes) eq 'HASH') {
- $newsettings{'inststatus'} = join(', ',map{ $usertypes->{$_}; } (@inststatuses));
+ $newsettings{'inststatus'} = join(', ',map{ $usertypes->{$_}; } (@inststatuses));
} else {
$newsettings{'inststatus'} = join(', ',@inststatuses);
}
@@ -2764,14 +2785,13 @@ sub update_user_data {
id => $env{'form.cid'},
);
}
- if (((keys(%namechanged) > 0) && $namechgresult eq 'ok') ||
+ if (((keys(%namechanged) > 0) && $namechgresult eq 'ok') ||
((keys(%changed) > 0) && $chgresult eq 'ok')) {
# Tell the user we changed the name
&display_userinfo($r,1,\@disporder,\%canshow,\@requestcourses,
\@usertools,\%userenv,\%changed,\%namechanged,
\%oldsettings, \%oldsettingstext,\%newsettings,
\%newsettingstext);
-
if ($env{'form.cid'} ne $userenv{'id'}) {
&Apache::lonnet::idput($env{'form.ccdomain'},
($env{'form.ccuname'} => $env{'form.cid'}));
@@ -2876,7 +2896,6 @@ sub update_user_data {
.&mt('Create/Modify Another User').'');
}
}
- $r->print(&Apache::loncommon::end_page());
}
sub display_userinfo {
@@ -2884,9 +2903,9 @@ sub display_userinfo {
$changedhash,$namechangedhash,$oldsetting,$oldsettingtext,
$newsetting,$newsettingtext) = @_;
return unless (ref($order) eq 'ARRAY' &&
- ref($canshow) eq 'HASH' &&
- ref($requestcourses) eq 'ARRAY' &&
- ref($usertools) eq 'ARRAY' &&
+ ref($canshow) eq 'HASH' &&
+ ref($requestcourses) eq 'ARRAY' &&
+ ref($usertools) eq 'ARRAY' &&
ref($userenv) eq 'HASH' &&
ref($changedhash) eq 'HASH' &&
ref($oldsetting) eq 'HASH' &&
@@ -2913,7 +2932,7 @@ sub display_userinfo {
'prvs' => 'Previous Value:',
'chto' => 'Changed To:'
);
- my $title = $lt{'ui'};
+ my $title = $lt{'ui'};
if ($changed) {
$title = $lt{'uic'};
}
@@ -3438,7 +3457,7 @@ sub update_roles {
}
} # End of foreach (keys(%env))
# Flush the course logs so reverse user roles immediately updated
- &Apache::lonnet::flushcourselogs();
+ $r->register_cleanup(\&Apache::lonnet::flushcourselogs);
if (@rolechanges == 0) {
$r->print(&mt('No roles to modify'));
}
@@ -3491,8 +3510,8 @@ sub enroll_single_student {
$r->print(&mt('If the member is currently logged-in to LON-CAPA, the new role will be available when the member next logs in.'));
} else {
$r->print(&mt('If the student is currently logged-in to LON-CAPA, the new role will be available when the student next logs in.'));
- }
- $r->print('');
+ }
+ $r->print('');
}
} else {
$r->print(&mt('unable to enroll').": ".$enroll_result);
@@ -3616,20 +3635,15 @@ sub build_roles {
# ========================================================== Custom Role Editor
sub custom_role_editor {
- my ($r) = @_;
+ my ($r,$brcrum) = @_;
my $action = $env{'form.customroleaction'};
- my $rolename;
+ my $rolename;
if ($action eq 'new') {
$rolename=$env{'form.newrolename'};
} else {
$rolename=$env{'form.rolename'};
}
- $rolename=~s/[^A-Za-z0-9]//gs;
- if (!$rolename || $env{'form.phase'} eq 'pickrole') {
- &print_username_entry_form($r);
- return;
- }
my ($crstype,$context);
if ($env{'request.course.id'}) {
$crstype = &Apache::loncommon::course_type();
@@ -3638,6 +3652,13 @@ sub custom_role_editor {
$context = 'domain';
$crstype = $env{'form.templatecrstype'};
}
+
+ $rolename=~s/[^A-Za-z0-9]//gs;
+ if (!$rolename || $env{'form.phase'} eq 'pickrole') {
+ &print_username_entry_form($r,undef,undef,undef,undef,$crstype,$brcrum);
+ return;
+ }
+
# ------------------------------------------------------- What can be assigned?
my %full=();
my %courselevel=();
@@ -3655,7 +3676,7 @@ sub custom_role_editor {
# ------------------------------------------------- Get current role privileges
($syspriv,$dompriv,$coursepriv)=split(/\_/,$roledef);
if ($crstype eq 'Community') {
- $syspriv =~ s/bre\&S//;
+ $syspriv =~ s/bre\&S//;
}
} else {
$body_top .= &mt('New Role').' "';
@@ -3696,8 +3717,8 @@ sub custom_role_editor {
my ($jsback,$elements) = &crumb_utilities();
my $button_code = "\n";
my $head_script = "\n";
- $head_script .= ''."\n";
- $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script));
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.form1,'pickrole','')",
- text=>"Pick custom role",
- faq=>282,bug=>'Instructor Interface',},
- {href=>"javascript:backPage(document.form1,'','')",
- text=>"Edit custom role",
- faq=>282,bug=>'Instructor Interface',});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
- 'Course_Editing_Custom_Roles'));
- $r->print($body_top);
+ $head_script .= "\n".$jsback."\n"
+ .'// ]]>'."\n"
+ .''."\n";
+ push (@{$brcrum},
+ {href => "javascript:backPage(document.form1,'pickrole','')",
+ text => "Pick custom role",
+ faq => 282,bug=>'Instructor Interface',},
+ {href => "javascript:backPage(document.form1,'','')",
+ text => "Edit custom role",
+ faq => 282,
+ bug => 'Instructor Interface',
+ help => 'Course_Editing_Custom_Roles'}
+ );
+ my $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => 'User Management'};
+
+ $r->print(&Apache::loncommon::start_page('Custom Role Editor',
+ $head_script,$args).
+ $body_top);
my %lt=&Apache::lonlocal::texthash(
'prv' => "Privilege",
'crl' => "Course Level",
@@ -3799,7 +3825,7 @@ ENDCCF
($domainlevelcurrent{$priv}?' checked="checked"':'').' />':' ').
'');
if ($priv eq 'bre' && $crstype eq 'Community') {
- $r->print(' ');
+ $r->print(' ');
} else {
$r->print($systemlevel{$priv}?' ':' ');
@@ -3812,8 +3838,7 @@ ENDCCF
' '."\n".' '."\n".
' '."\n".
- ' '.
- &Apache::loncommon::end_page());
+ ' ');
}
# --------------------------------------------------------
sub make_script_template {
@@ -3891,33 +3916,37 @@ sub make_button_code {
}
# ---------------------------------------------------------- Call to definerole
sub set_custom_role {
- my ($r,$context) = @_;
+ my ($r,$context,$brcrum) = @_;
my $rolename=$env{'form.rolename'};
$rolename=~s/[^A-Za-z0-9]//gs;
if (!$rolename) {
- &custom_role_editor($r);
+ &custom_role_editor($r,$brcrum);
return;
}
my ($jsback,$elements) = &crumb_utilities();
- my $jscript = '';
-
- $r->print(&Apache::loncommon::start_page('Save Custom Role'),$jscript);
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"javascript:backPage(document.customresult,'pickrole','')",
- text=>"Pick custom role",
- faq=>282,bug=>'Instructor Interface',},
- {href=>"javascript:backPage(document.customresult,'selected_custom_edit','')",
- text=>"Edit custom role",
- faq=>282,bug=>'Instructor Interface',},
- {href=>"javascript:backPage(document.customresult,'set_custom_roles','')",
- text=>"Result",
- faq=>282,bug=>'Instructor Interface',});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
- 'Course_Editing_Custom_Roles'));
+ my $jscript = ''."\n";
+ push(@{$brcrum},
+ {href => "javascript:backPage(document.customresult,'pickrole','')",
+ text => "Pick custom role",
+ faq => 282,
+ bug => 'Instructor Interface',},
+ {href => "javascript:backPage(document.customresult,'selected_custom_edit','')",
+ text => "Edit custom role",
+ faq => 282,
+ bug => 'Instructor Interface',},
+ {href => "javascript:backPage(document.customresult,'set_custom_roles','')",
+ text => "Result",
+ faq => 282,
+ bug => 'Instructor Interface',
+ help => 'Course_Editing_Custom_Roles'},
+ );
+ my $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => 'User Management'};
+ $r->print(&Apache::loncommon::start_page('Save Custom Role',$jscript,$args));
my ($rdummy,$roledef)=
&Apache::lonnet::get('roles',["rolesdef_$rolename"]);
@@ -3974,7 +4003,6 @@ sub set_custom_role {
}
$r->print(''.&mt('Create or edit another custom role').'
');
- $r->print(&Apache::loncommon::end_page());
}
# ================================================================ Main Handler
@@ -3998,11 +4026,14 @@ sub handler {
['action','state','callingform','roletype','showrole','bulkaction','popup','phase',
'username','domain','srchterm','srchdomain','srchin','srchby','srchtype']);
&Apache::lonhtmlcommon::clear_breadcrumbs();
+ my $args;
+ my $brcrum = [];
+ my $bread_crumbs_component = 'User Management';
if ($env{'form.action'} ne 'dateselect') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"/adm/createuser",
- 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'});
+ $brcrum = [{href=>"/adm/createuser",
+ 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,
@@ -4020,17 +4051,20 @@ sub handler {
# Main switch on form.action and form.state, as appropriate
if (! exists($env{'form.action'})) {
- $r->print(&header());
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
+ $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
$r->print(&print_main_menu($permission,$context,$crstype));
- $r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {
- $r->print(&header());
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=upload&state=',
- text=>"Upload Users List"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Upload Users List',
- 'Course_Create_Class_List'));
+ push(@{$brcrum},
+ { href => '/adm/createuser?action=upload&state=',
+ text => 'Upload Users List',
+ help => 'Course_Create_Class_List',
+ });
+ $bread_crumbs_component = 'Upload Users List';
+ $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
$r->print(''.&Apache::loncommon::end_page());
} elsif ((($env{'form.action'} eq 'singleuser') || ($env{'form.action'}
eq 'singlestudent')) && ($permission->{'cusr'})) {
my $phase = $env{'form.phase'};
@@ -4063,13 +4096,13 @@ sub handler {
if ($env{'form.srchterm'} !~ /^$match_username$/) {
my $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @');
$env{'form.phase'} = '';
- &print_username_entry_form($r,$context,$response,$srch,undef,$crstype);
+ &print_username_entry_form($r,$context,$response,$srch,undef,$crstype,$brcrum);
} else {
my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});
my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});
&print_user_modification_page($r,$ccuname,$ccdomain,
$srch,$response,$context,
- $permission,$crstype);
+ $permission,$crstype,$brcrum);
}
} elsif ($env{'form.phase'} eq 'get_user_info') {
my ($currstate,$response,$forcenewuser,$results) =
@@ -4079,7 +4112,8 @@ sub handler {
}
if ($currstate eq 'select') {
&print_user_selection_page($r,$response,$srch,$results,
- \@search,$context,undef,$crstype);
+ \@search,$context,undef,$crstype,
+ $brcrum);
} elsif ($currstate eq 'modify') {
my ($ccuname,$ccdomain);
if (($srch->{'srchby'} eq 'uname') &&
@@ -4097,66 +4131,72 @@ sub handler {
}
&print_user_modification_page($r,$ccuname,$ccdomain,
$srch,$response,$context,
- $permission,$crstype);
+ $permission,$crstype,$brcrum);
} elsif ($currstate eq 'query') {
- &print_user_query_page($r,'createuser');
+ &print_user_query_page($r,'createuser',$brcrum);
} else {
$env{'form.phase'} = '';
&print_username_entry_form($r,$context,$response,$srch,
- $forcenewuser,$crstype);
+ $forcenewuser,$crstype,$brcrum);
}
} elsif ($env{'form.phase'} eq 'userpicked') {
my $ccuname = &LONCAPA::clean_username($env{'form.seluname'});
my $ccdomain = &LONCAPA::clean_domain($env{'form.seludom'});
&print_user_modification_page($r,$ccuname,$ccdomain,$srch,'',
- $context,$permission,$crstype);
+ $context,$permission,$crstype,
+ $brcrum);
}
} elsif ($env{'form.phase'} eq 'update_user_data') {
- &update_user_data($r,$context,$crstype);
+ &update_user_data($r,$context,$crstype,$brcrum);
} else {
- &print_username_entry_form($r,$context,undef,$srch,undef,$crstype);
+ &print_username_entry_form($r,$context,undef,$srch,undef,$crstype,
+ $brcrum);
}
} elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) {
if ($env{'form.phase'} eq 'set_custom_roles') {
- &set_custom_role($r,$context);
+ &set_custom_role($r,$context,$brcrum);
} else {
- &custom_role_editor($r);
+ &custom_role_editor($r,$brcrum);
}
} elsif (($env{'form.action'} eq 'listusers') &&
($permission->{'view'} || $permission->{'cusr'})) {
if ($env{'form.phase'} eq 'bulkchange') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=listusers',
- text=>"List Users"},
- {href=>"/adm/createuser",
- text=>"Result"});
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=listusers',
+ text => "List Users"},
+ {href => "/adm/createuser",
+ text => "Result",
+ help => 'Course_View_Class_List'});
+ $bread_crumbs_component = 'Update Users';
+ $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
my $setting = $env{'form.roletype'};
my $choice = $env{'form.bulkaction'};
- $r->print(&header());
- $r->print(&Apache::lonhtmlcommon::breadcrumbs("Update Users",
- 'Course_View_Class_List'));
if ($permission->{'cusr'}) {
&Apache::lonuserutils::update_user_list($r,$context,$setting,$choice,$crstype);
- $r->print(&Apache::loncommon::end_page());
} else {
$r->print(&mt('You are not authorized to make bulk changes to user roles'));
$r->print(''.&mt('Display User Lists').' ');
- $r->print(&Apache::loncommon::end_page());
}
} else {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=listusers',
- text=>"List Users"});
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=listusers',
+ text => "List Users",
+ help => 'Course_View_Class_List'});
+ $bread_crumbs_component = 'List Users';
+ $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
my ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles);
my $formname = 'studentform';
if (($context eq 'domain') && (($env{'form.roletype'} eq 'course') ||
($env{'form.roletype'} eq 'community'))) {
if ($env{'form.roletype'} eq 'course') {
- ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles) =
+ ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles) =
&Apache::lonuserutils::courses_selector($env{'request.role.domain'},
$formname);
} elsif ($env{'form.roletype'} eq 'community') {
- $cb_jscript =
+ $cb_jscript =
&Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'});
my %elements = (
coursepick => 'radio',
@@ -4170,139 +4210,139 @@ sub handler {
my $loadcode =
&Apache::lonuserutils::course_selector_loadcode($formname);
if ($loadcode ne '') {
- $r->print(&header($js,{'onload' => $loadcode,}));
- } else {
- $r->print(&header($js));
+ $args->{add_entries} = {onload => $loadcode};
}
+ $r->print(&header($js,$args));
} else {
- $r->print(&header(&add_script(&verify_user_display())));
+ $r->print(&header(&add_script(&verify_user_display()),$args));
}
- $r->print(&Apache::lonhtmlcommon::breadcrumbs("List Users",
- 'Course_View_Class_List'));
&Apache::lonuserutils::print_userlist($r,undef,$permission,$context,
$formname,$totcodes,$codetitles,$idlist,$idlist_titles);
- $r->print(&Apache::loncommon::end_page());
}
} elsif ($env{'form.action'} eq 'drop' && $permission->{'cusr'}) {
- $r->print(&header());
my $brtext;
if ($crstype eq 'Community') {
$brtext = 'Drop Members';
} else {
$brtext = 'Drop Students';
}
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=drop',
- text=>$brtext});
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=drop',
+ text => $brtext,
+ help => 'Course_Drop_Student'});
+ if ($env{'form.state'} eq 'done') {
+ push(@{$brcrum},
+ {href=>'/adm/createuser?action=drop',
+ text=>"Result"});
+ }
+ $bread_crumbs_component = $brtext;
+ $args = {bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
if (!exists($env{'form.state'})) {
- $r->print(&Apache::lonhtmlcommon::breadcrumbs($brtext,
- 'Course_Drop_Student'));
-
&Apache::lonuserutils::print_drop_menu($r,$context,$permission,$crstype);
} elsif ($env{'form.state'} eq 'done') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=drop',
- text=>"Result"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs($brtext,
- 'Course_Drop_Student'));
&Apache::lonuserutils::update_user_list($r,$context,undef,
$env{'form.action'});
}
- $r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'dateselect') {
if ($permission->{'cusr'}) {
- $r->print(&header(undef,undef,{'no_nav_bar' => 1}).
+ $r->print(&header(undef,{'no_nav_bar' => 1}).
&Apache::lonuserutils::date_section_selector($context,
- $permission,$crstype).
- &Apache::loncommon::end_page());
+ $permission,$crstype));
} else {
- $r->print(&header().
- ''.&mt('You do not have permission to modify dates or sections for users').' '.
- &Apache::loncommon::end_page());
+ $r->print(&header(undef,{'no_nav_bar' => 1}).
+ ''.&mt('You do not have permission to modify dates or sections for users').' ');
}
} elsif ($env{'form.action'} eq 'selfenroll') {
- $r->print(&header());
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=selfenroll',
- text=>"Configure Self-enrollment"});
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=selfenroll',
+ text => "Configure Self-enrollment",
+ help => 'Course_Self_Enrollment'});
if (!exists($env{'form.state'})) {
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Configure Self-enrollment',
- 'Course_Self_Enrollment'));
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => 'Configure Self-enrollment'};
+ $r->print(&header(undef,$args));
$r->print('
'.&mt('Self-enrollment with a student role').' '."\n");
&print_selfenroll_menu($r,$context,$permission);
} elsif ($env{'form.state'} eq 'done') {
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=selfenroll',
- text=>"Result"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Self-enrollment result',
- 'Course_Self_Enrollment'));
+ push (@{$brcrum},
+ {href=>'/adm/createuser?action=selfenroll',
+ text=>"Result"});
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => 'Self-enrollment result'};
+ $r->print(&header(undef,$args));
$r->print(''.&mt('Self-enrollment with a student role').' '."\n");
&update_selfenroll_config($r,$context,$permission);
}
- $r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'selfenrollqueue') {
- $r->print(&header());
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=selfenrollqueue',
- text=>"Enrollment requests"});
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=selfenrollqueue',
+ text => 'Enrollment requests',
+ help => 'Course_Self_Enrollment'});
+ $bread_crumbs_component = 'Enrollment requests';
+ if ($env{'form.state'} eq 'done') {
+ push(@{$brcrum},
+ {href => '/adm/createuser?action=selfenrollqueue',
+ text => 'Result',
+ help => 'Course_Self_Enrollment'});
+ $bread_crumbs_component = 'Enrollment result';
+ }
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
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");
$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',
- text=>"Result"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment result',
- 'Course_Self_Enrollment'));
$r->print(''.&mt('Enrollment request processing').' '."\n");
$r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
$cdom,$cnum,$coursedesc));
}
- $r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'changelogs') {
- $r->print(&header());
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>'/adm/createuser?action=changelogs',
- text=>"User Management Logs"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Changes',
- 'Course_User_Logs'));
- &print_userchangelogs_display($r,$context,$permission);
- $r->print(&Apache::loncommon::end_page());
+ push (@{$brcrum},
+ {href => '/adm/createuser?action=changelogs',
+ text => 'User Management Logs',
+ help => 'Course_User_Logs'});
+ $bread_crumbs_component = 'User Changes';
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
+ &print_userchangelogs_display($r,$context,$permission);
} else {
- $r->print(&header());
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
+ $bread_crumbs_component = 'User Management';
+ $args = { bread_crumbs => $brcrum,
+ bread_crumbs_component => $bread_crumbs_component};
+ $r->print(&header(undef,$args));
$r->print(&print_main_menu($permission,$context,$crstype));
- $r->print(&Apache::loncommon::end_page());
}
+ $r->print(&Apache::loncommon::end_page());
return OK;
}
sub header {
- my ($jscript,$loaditems,$args) = @_;
+ my ($jscript,$args) = @_;
my $start_page;
- if (ref($loaditems) eq 'HASH') {
- $start_page=&Apache::loncommon::start_page('User Management',$jscript,{'add_entries' => $loaditems});
- } else {
+ if (ref($args) eq 'HASH') {
$start_page=&Apache::loncommon::start_page('User Management',$jscript,$args);
+ } else {
+ $start_page=&Apache::loncommon::start_page('User Management',$jscript);
}
return $start_page;
}
sub add_script {
my ($js) = @_;
- return ''."\n";
+ return ''."\n";
}
sub verify_user_display {
@@ -4330,130 +4370,219 @@ sub print_main_menu {
$linkcontext = lc($crstype);
$stuterm = 'Members';
}
-
my %links = (
- domain => {
- upload => 'Upload a File of Users',
- singleuser => 'Add/Modify a User',
- listusers => 'Manage Users',
- },
- author => {
- upload => 'Upload a File of Co-authors',
- singleuser => 'Add/Modify a Co-author',
- listusers => 'Manage Co-authors',
- },
- course => {
- upload => 'Upload a File of Course Users',
- singleuser => 'Add/Modify a Course User',
- listusers => 'Display Class Lists and Manage Multiple Users',
- },
- community => {
- upload => 'Upload a File of Community Users',
- singleuser => 'Add/Modify a Community User',
- listusers => 'Manage Community Users',
- },
+ domain => {
+ upload => 'Upload a File of Users',
+ singleuser => 'Add/Modify a User',
+ listusers => 'Manage Users',
+ },
+ author => {
+ upload => 'Upload a File of Co-authors',
+ singleuser => 'Add/Modify a Co-author',
+ listusers => 'Manage Co-authors',
+ },
+ course => {
+ upload => 'Upload a File of Course Users',
+ singleuser => 'Add/Modify a Course User',
+ listusers => 'Manage Course Users',
+ },
+ community => {
+ upload => 'Upload a File of Community Users',
+ singleuser => 'Add/Modify a Community User',
+ listusers => 'Manage Community Users',
+ },
);
- my @menu =
- (
- { text => $links{$context}{'upload'},
- help => 'Course_Create_Class_List',
- action => 'upload',
- permission => $permission->{'cusr'},
+ my %linktitles = (
+ domain => {
+ singleuser => 'Add a user to the domain, and/or a course or community in the domain.',
+ listusers => 'Show and manage users in this domain.',
+ },
+ author => {
+ singleuser => 'Add a user with a co- or assistant author role.',
+ listusers => 'Show and manage co- or assistant authors.',
+ },
+ course => {
+ singleuser => 'Add a user with a certain role to this course.',
+ listusers => 'Show and manage users in this course.',
+ },
+ community => {
+ singleuser => 'Add a user with a certain role to this community.',
+ listusers => 'Show and manage users in this community.',
+ },
+ );
+ my @menu = ( {categorytitle => 'Single Users',
+ items =>
+ [
+ {
+ linktext => $links{$linkcontext}{'singleuser'},
+ icon => 'edit-redo.png',
+ #help => 'Course_Change_Privileges',
+ url => '/adm/createuser?action=singleuser',
+ permission => $permission->{'cusr'},
+ linktitle => $linktitles{$linkcontext}{'singleuser'},
+ },
+ ]},
+
+ {categorytitle => 'Multiple Users',
+ items =>
+ [
+ {
+ linktext => $links{$linkcontext}{'upload'},
+ icon => 'uplusr.png',
+ #help => 'Course_Create_Class_List',
+ url => '/adm/createuser?action=upload',
+ permission => $permission->{'cusr'},
+ linktitle => 'Upload a CSV or a text file containing users.',
},
- { text => $links{$context}{'singleuser'},
- help => 'Course_Change_Privileges',
- action => 'singleuser',
- permission => $permission->{'cusr'},
+ {
+ linktext => $links{$linkcontext}{'listusers'},
+ icon => 'mngcu.png',
+ #help => 'Course_View_Class_List',
+ url => '/adm/createuser?action=listusers',
+ permission => ($permission->{'view'} || $permission->{'cusr'}),
+ linktitle => $linktitles{$linkcontext}{'listusers'},
+ },
+
+ ]},
+
+ {categorytitle => 'Administration',
+ items => [ ]},
+ );
+
+ if ($context eq 'domain'){
+
+ push(@{ $menu[2]->{items} }, #Category: Administration
+ {
+ 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.',
},
- { 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') {
+
+ }elsif ($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'})) {
+
+ my %linktext = (
+ 'Course' => {
+ single => 'Add/Modify a Student',
+ drop => 'Drop Students',
+ groups => 'Course Groups',
+ },
+ 'Community' => {
+ single => 'Add/Modify a Member',
+ drop => 'Drop Members',
+ groups => 'Community Groups',
+ },
+ );
+
+ my %linktitle = (
+ 'Course' => {
+ single => 'Add a user with the role of student to this course',
+ drop => 'Remove a student from this course.',
+ groups => 'Manage course groups',
+ },
+ 'Community' => {
+ single => 'Add a user with the role of member to this community',
+ drop => 'Remove a member from this community.',
+ groups => 'Manage community groups',
+ },
+ );
+
+ push(@{ $menu[0]->{items} }, #Category: Single Users
+ {
+ linktext => $linktext{$crstype}{'single'},
+ #help => 'Course_Add_Student',
+ icon => 'list-add.png',
+ url => '/adm/createuser?action=singlestudent',
+ permission => $permission->{'cusr'},
+ linktitle => $linktitle{$crstype}{'single'},
+ },
+ );
+
+ push(@{ $menu[1]->{items} }, #Category: Multiple Users
+ {
+ linktext => $linktext{$crstype}{'drop'},
+ icon => 'edit-undo.png',
+ #help => 'Course_Drop_Student',
+ url => '/adm/createuser?action=drop',
+ permission => $permission->{'cusr'},
+ linktitle => $linktitle{$crstype}{'drop'},
+ },
+ );
+ push(@{ $menu[2]->{items} }, #Category: Administration
+ {
+ 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.',
+ },
+ {
+ linktext => $linktext{$crstype}{'groups'},
+ icon => 'grps.png',
+ #help => 'Course_Manage_Group',
+ url => '/adm/coursegroups?refpage=cusr',
+ permission => $permission->{'grp_manage'},
+ linktitle => $linktitle{$crstype}{'groups'},
+ },
+ {
+ linktext => 'Change Log',
+ icon => 'document-properties.png',
+ #help => 'Course_User_Logs',
+ url => '/adm/createuser?action=changelogs',
+ permission => $permission->{'cusr'},
+ linktitle => 'View change log.',
+ },
+ );
+ if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}) {
+ push(@{ $menu[2]->{items} },
+ {
+ linktext => 'Enrollment Requests',
+ icon => 'selfenrl-queue.png',
+ #help => 'Course_Approve_Selfenroll',
+ url => '/adm/createuser?action=selfenrollqueue',
+ permission => $permission->{'cusr'},
+ linktitle =>'Approve or reject enrollment requests.',
+ },
+ );
+ }
+
+ if (!exists($permission->{'cusr_section'})){
if ($crstype ne 'Community') {
- push(@courselinks,
- { text => 'Automated Enrollment Manager',
- help => 'Course_Automated_Enrollment',
+ push(@{ $menu[2]->{items} },
+ {
+ linktext => 'Automated Enrollment',
+ icon => 'roles.png',
+ #help => 'Course_Automated_Enrollment',
permission => (&Apache::lonnet::auto_run($cnum,$cdom)
- && $permission->{'cusr'}),
+ && $permission->{'cusr'}),
url => '/adm/populate',
- });
- }
- push(@courselinks,
- { 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(@courselinks,
- { text => 'Enrollment Requests',
- help => 'Course_Approve_Selfenroll',
- action => 'selfenrollqueue',
- permission => $permission->{'cusr'},
- });
- }
- 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',
+ linktitle => 'Automated enrollment manager.',
+ }
+ );
+ }
+ push(@{ $menu[2]->{items} },
+ {
+ linktext => 'User Self-Enrollment',
+ icon => 'self_enroll.png',
+ #help => 'Course_Self_Enrollment',
+ url => '/adm/createuser?action=selfenroll',
permission => $permission->{'cusr'},
- },);
+ linktitle => 'Configure user self-enrollment.',
+ },
+ );
+ }
+ };
+return Apache::lonhtmlcommon::generate_menu(@menu);
# { 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 {
@@ -4682,9 +4811,7 @@ ENDSCRIPT
if (ref($lt) eq 'HASH') {
$title = $lt->{$item};
}
- $output .=
- &Apache::lonhtmlcommon::row_title($title,
- 'LC_selfenroll_pick_box_title','LC_oddrow_value')."\n";
+ $output .= &Apache::lonhtmlcommon::row_title($title);
if ($item eq 'types') {
my $curr_types = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_types'};
my $showdomdesc = 1;
@@ -4867,7 +4994,7 @@ ENDSCRIPT
' '.
&Apache::loncommon::plainname($ccuname,$ccudom).
' ';
- $count;
+ $count ++;
}
my $rem = $count%$numcols;
if ($rem) {
@@ -4884,7 +5011,7 @@ ENDSCRIPT
my $cid = $env{'request.course.id'};
my $currlim = $env{'course.'.$cid.'.internal.selfenroll_limit'};
my $currcap = $env{'course.'.$cid.'.internal.selfenroll_cap'};
- my $nolimit = ' checked="checked" ';
+ $nolimit = ' checked="checked" ';
if ($currlim eq 'allstudents') {
$crslimit = ' checked="checked" ';
$selflimit = ' ';
@@ -4940,9 +5067,9 @@ sub visible_in_cat {
dc_chgcat => 'Ask a domain coordinator to change the category assigned to the course, as the one currently assigned is no longer used in the domain',
dc_addcat => 'Ask a domain coordinator to assign a category to the course.',
);
- $visactions{'unhide'} = &mt('Use [_1]Set course environment[_2] to change the "Exclude from course catalog" setting.','"',' "');
- $visactions{'chgcat'} = &mt('Use [_1]Set course environment[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','"',' "');
- $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','"',' "');
+ $visactions{'unhide'} = &mt('Use [_1]Categorize course[_2] to change the "Exclude from course catalog" setting.','',' "');
+ $visactions{'chgcat'} = &mt('Use [_1]Categorize course[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','"',' "');
+ $visactions{'addcat'} = &mt('Use [_1]Categorize course[_2] to assign a category to the course.','"',' "');
if (ref($domconf{'coursecategories'}) eq 'HASH') {
if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
$settable{'togglecats'} = 1;
@@ -5147,7 +5274,6 @@ sub print_userchangelogs_display {
my %roleslog=&Apache::lonnet::dump('nohist_rolelog',$cdom,$cnum);
if ((keys(%roleslog))[0]=~/^error\:/) { undef(%roleslog); }
- $r->print('');
+ return;
+}
+
+sub userlogdisplay_nav {
+ my ($formname,$curr,$more_records) = @_;
+ my ($nav_script,$nav_links);
+ if (ref($curr) eq 'HASH') {
+ # Create Navigation:
+ # Navigation Script
+ $nav_script = <<"ENDSCRIPT";
ENDSCRIPT
+ # Navigation Buttons
+ $nav_links = '';
+ if (($curr->{'page'} > 1) || ($more_records)) {
+ if ($curr->{'page'} > 1) {
+ $nav_links .= ' ';
+ }
+ if ($more_records) {
+ $nav_links .= ' ';
+ }
}
- } else {
- $r->print('
'.
- &mt('There are no records to display').
- '
');
+ $nav_links .= '';
}
- $r->print(' '.
- ' ');
- return;
+ return ($nav_script,$nav_links);
}
sub role_display_filter {
@@ -5321,9 +5502,13 @@ sub role_display_filter {
$curr->{'rolelog_end_date'},undef,
undef,undef,undef,undef,undef,undef,$nolink);
my %lt = &rolechg_contexts($crstype);
- $output .= ''.&mt('Window during which changes occurred:').' '.&mt('After:').
- ' '.$startform.' '.&mt('Before:').' '.
- $endform.'
'.
+ $output .= ''.&mt('Window during which changes occurred:').' '.
+ ''.&mt('After:').
+ ' '.$startform.' '.
+ ''.&mt('Before:').' '.
+ ''.$endform.'
'.
+ ' '.
+ ' '.
''.&mt('Role:').' '.
'{'role'} eq 'any') {
@@ -5344,7 +5529,9 @@ sub role_display_filter {
}
$output .= ' '.$plrole.' ';
}
- $output .= ' '.
+ $output .= ' '.
+ ' '.
+ ''.
&mt('Context:').' ';
foreach my $chgtype ('any','auto','updatenow','createcourse','course','domain','selfenroll','requestcourses') {
my $selstr = '';
@@ -5365,13 +5552,13 @@ sub role_display_filter {
.'';
# Server version info
- $output .= ''
+ $output .= '
'
.&mt('Only changes made from servers running LON-CAPA [_1] or later are displayed.'
,'2.6.99.0');
if ($version) {
$output .= ' '.&mt('This LON-CAPA server is version [_1]',$version);
}
- $output .= '
';
+ $output .= ' ';
return $output;
}
@@ -5720,12 +5907,12 @@ sub build_search_response {
my ($context,$srch,%srch_results) = @_;
my ($currstate,$response,$forcenewuser);
my %names = (
- 'uname' => 'username',
- 'lastname' => 'last name',
+ 'uname' => 'username',
+ 'lastname' => 'last name',
'lastfirst' => 'last name, first name',
- 'crs' => 'this course',
- 'dom' => 'LON-CAPA domain: ',
- 'instd' => 'the institutional directory for domain: ',
+ 'crs' => 'this course',
+ 'dom' => 'LON-CAPA domain',
+ 'instd' => 'the institutional directory for domain',
);
my %single = (
@@ -5745,14 +5932,20 @@ sub build_search_response {
$currstate = 'modify';
$response = &mt("$single{$srch->{'srchtype'}} was found for the $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}.",$srch->{'srchterm'});
if ($srch->{'srchin'} eq 'dom' || $srch->{'srchin'} eq 'instd') {
- $response .= &display_domain_info($srch->{'srchdomain'});
+ $response .= ': '.&display_domain_info($srch->{'srchdomain'});
}
- } else {
- $response = ''.&mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} ([_1]) in $names{$srch->{'srchin'}}",$srch->{'srchterm'});
+ } else { # Search has nothing found. Prepare message to user.
+ $response = '';
if ($srch->{'srchin'} eq 'dom' || $srch->{'srchin'} eq 'instd') {
- $response .= &display_domain_info($srch->{'srchdomain'});
+ $response .= &mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} [_1] in $names{$srch->{'srchin'}}: [_2]",
+ ''.$srch->{'srchterm'}.' ',
+ &display_domain_info($srch->{'srchdomain'}));
+ } else {
+ $response .= &mt("$nomatch{$srch->{'srchtype'}} found for the $names{$srch->{'srchby'}} [_1] in $names{$srch->{'srchin'}}.",
+ ''.$srch->{'srchterm'}.' ');
}
$response .= ' ';
+
if ($srch->{'srchin'} ne 'alc') {
$forcenewuser = 1;
my $cansrchinst = 0;
@@ -5786,7 +5979,7 @@ sub build_search_response {
&Apache::lonuserutils::can_create_user($createdom,$context);
my $targetdom = ''.$createdom.' ';
if ($cancreate) {
- my $showdom = &display_domain_info($createdom);
+ my $showdom = &display_domain_info($createdom);
$response .= ' '
.''.&mt('To add a new user:').' '
.' ';
@@ -5795,7 +5988,7 @@ sub build_search_response {
} else {
$response .= &mt("(You can only create new users in your current role's domain - [_1])",$targetdom);
}
- $response .= ''
+ $response .=''
.&mt("Set 'Domain/institution to search' to: [_1]",''.$showdom.' ')
.' '
.&mt("Set 'Search criteria' to: [_1]username is ..... in selected LON-CAPA domain[_2]",'',' ')
@@ -5813,10 +6006,10 @@ sub build_search_response {
$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.'
+ .&mt('Please contact the [_1]helpdesk[_2] if you need to create a new user.'
,' '
,' ')
- .' ';
+ .' ';
}
}
}
@@ -5921,7 +6114,7 @@ sub course_level_table {
my @roles = &Apache::lonuserutils::roles_by_context('course','',$crstype);
foreach my $role (@roles) {
my $plrole=&Apache::lonnet::plaintext($role,$crstype);
- if ((&Apache::lonnet::allowed('c'.$role,$thiscourse)) ||
+ if ((&Apache::lonnet::allowed('c'.$role,$thiscourse)) ||
((($role eq 'cc') || ($role eq 'co')) && ($isowner))) {
$table .= &course_level_row($protectedcourse,$role,$area,$domain,
$plrole,\%sections_count,\%lt);