--- loncom/interface/loncreateuser.pm 2010/12/05 21:58:11 1.329.2.7 +++ loncom/interface/loncreateuser.pm 2009/12/15 16:40:31 1.330 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.329.2.7 2010/12/05 21:58:11 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.330 2009/12/15 16:40:31 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -70,7 +70,6 @@ use Apache::lonlocal; use Apache::longroup; use Apache::lonuserutils; use Apache::loncoursequeueadmin; -use Apache::lonrequestcourse; use LONCAPA qw(:DEFAULT :match); my $loginscript; # piece of javascript used in two separate instances @@ -470,10 +469,9 @@ sub courserequest_display { # =================================================================== Phase one sub print_username_entry_form { - my ($r,$context,$response,$srch,$forcenewuser,$crstype,$brcrum) = @_; + my ($r,$context,$response,$srch,$forcenewuser,$crstype) = @_; my $defdom=$env{'request.role.domain'}; my $formtoset = 'crtuser'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); if (exists($env{'form.startrolename'})) { $formtoset = 'docustom'; $env{'form.rolename'} = $env{'form.startrolename'}; @@ -495,11 +493,22 @@ sub print_username_entry_form { && (&Apache::lonnet::allowed('mcr','/'))) { $jscript .= &customrole_javascript(); } - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } + 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') { @@ -507,30 +516,8 @@ sub print_username_entry_form { } elsif ($env{'form.action'} eq 'singlestudent') { $helpitem = 'Course_Add_Student'; } - 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($title,$jscript,$args)); - + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', + $helpitem); 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', @@ -541,6 +528,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:'); @@ -593,6 +581,7 @@ sub print_username_entry_form { } $r->print(&entry_form($defdom,$srch,$forcenewuser,$context,$response,$crstype)); } + $r->print(&Apache::loncommon::end_page()); } sub customrole_javascript { @@ -671,7 +660,7 @@ $userpicker ENDBLOCK if ($env{'form.phase'} eq '') { my $defdom=$env{'request.role.domain'}; - my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain','',1); + my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain'); my %lt=&Apache::lonlocal::texthash( 'enro' => 'Enroll one student', 'enrm' => 'Enroll one member', @@ -720,7 +709,7 @@ $showresponse - + @@ -762,10 +751,9 @@ END # =================================================================== Phase two sub print_user_selection_page { - my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype,$brcrum) = @_; + my ($r,$response,$srch,$srch_results,$srcharray,$context,$opener_elements,$crstype) = @_; my @fields = ('username','domain','lastname','firstname','permanentemail'); my $sortby = $env{'form.sortby'}; - my $is_custom = &Apache::loncommon::needs_gci_custom(); if (!grep(/^\Q$sortby\E$/,@fields)) { $sortby = 'lastname'; @@ -804,36 +792,25 @@ ENDSCRIPT if ($context eq 'requestcrs') { $r->print('
'); } else { - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } + $r->print(&Apache::loncommon::start_page('User Management',$jscript)); + my %breadcrumb_text = &singleuser_breadcrumb($crstype); - 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($title,$jscript,{bread_crumbs => $brcrum})); + &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',}); 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'}); @@ -915,7 +892,7 @@ ENDSCRIPT } sub print_user_query_page { - my ($r,$caller,$brcrum) = @_; + my ($r,$caller) = @_; # 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. @@ -923,11 +900,11 @@ sub print_user_query_page { } sub print_user_modification_page { - my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype,$brcrum) = @_; + my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype) = @_; 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,$brcrum); + &print_username_entry_form($r,$context,$usermsg,'','',$crstype); return; } my ($form,$formname); @@ -941,21 +918,12 @@ sub print_user_modification_page { my %abv_auth = &auth_abbrev(); my (%rulematch,%inst_results,$newuser,%alerts,%curr_rules,%got_rules); my $uhome=&Apache::lonnet::homeserver($ccuname,$ccdomain); - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($is_custom) { - if ($uhome eq 'no_host') { - my $lc_ccuname = lc($ccuname); - if ($lc_ccuname ne $ccuname) { - $uhome = &Apache::lonnet::homeserver($lc_ccuname,$ccdomain); - $ccuname = $lc_ccuname; - } - } - } if ($uhome eq 'no_host') { + my $usertype; my ($rules,$ruleorder) = &Apache::lonnet::inst_userrules($ccdomain,'username'); - my $usertype = - &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); + $usertype = + &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules); my $cancreate = &Apache::lonuserutils::can_create_user($ccdomain,$context, $usertype); @@ -965,28 +933,19 @@ sub print_user_modification_page { official => 'institutional', unofficial => 'non-institutional', ); - if ($ccdomain eq 'gci') { - $usertypetext{'unofficial'} = 'institutional', - } my $response; if ($env{'form.origform'} eq 'crtusername') { - if ($is_custom) { - $response = ''.&mt('Invalid format for username for new user: [_1]',''.$ccuname.''). - '
'; - } else { - $response = ''.&mt('No match was found for the username ([_1]) in LON-CAPA domain: [_2]',$ccuname,$ccdomain).'
'; - } + $response = ''.&mt('No match found for the username [_1] in LON-CAPA domain: [_2]',''.$ccuname.'',$ccdomain). + '
'; } $response .= '

' .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") - .'
'; - if ($ccdomain =~ /^\w+citest$/) { - $response .= &mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.' - ,'','') - .'


'; - } + .' ' + .&mt('Please contact the [_1]helpdesk[_2] for assistance.' + ,'','') + .'


'; $env{'form.phase'} = ''; - &print_username_entry_form($r,$context,$response,undef,undef,$crstype,$brcrum); + &print_username_entry_form($r,$context,$response,undef,undef,$crstype); return; } $newuser = 1; @@ -1010,7 +969,7 @@ sub print_user_modification_page { 'username'); } $env{'form.phase'} = ''; - &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype,$brcrum); + &print_username_entry_form($r,$context,$userchkmsg,undef,undef,$crstype); return; } } @@ -1031,43 +990,34 @@ sub print_user_modification_page { my $js = &validation_javascript($context,$ccdomain,$pjump_def, $groupslist,$newuser,$formname,\%loaditem); - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } + 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'; } - 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($title,$js,$args); + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management', + $helpitem); my $forminfo =<<"ENDFORMINFO";
@@ -1116,6 +1066,7 @@ ENDFORMINFO ); $r->print(< @@ -1229,6 +1180,7 @@ ENDAUTH ); $r->print(< ENDCHANGEUSER @@ -1374,7 +1326,8 @@ ENDNOTOOLSPRIV } $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain'])); $r->print(''); - $r->print(''); + $r->print(''); + $r->print("".&Apache::loncommon::end_page()); return; } @@ -2198,8 +2151,7 @@ sub get_inststatuses { # ================================================================= Phase Three sub update_user_data { - my ($r,$context,$crstype,$brcrum) = @_; - my $is_custom = &Apache::loncommon::needs_gci_custom(); + my ($r,$context,$crstype) = @_; my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'}, $env{'form.ccdomain'}); # Error messages @@ -2224,33 +2176,36 @@ sub update_user_data { '// ]]>'."\n". ''."\n"; my %breadcrumb_text = &singleuser_breadcrumb($crstype); - my $helpitem = 'Course_Change_Privileges'; - if ($env{'form.action'} eq 'singlestudent') { - $helpitem = 'Course_Add_Student'; - } - my $bread_crumbs_component = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $bread_crumbs_component = 'Enrollment and Student Activity'; - } - } - 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 => $bread_crumbs_component}; + 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',}); + 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',}); + my $helpitem = 'Course_Change_Privileges'; + if ($env{'form.action'} eq 'singlestudent') { + $helpitem = 'Course_Add_Student'; + } + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management', + $helpitem)); $r->print(&update_result_form($uhome)); # Check Inputs if (! $env{'form.ccuname'} ) { @@ -2740,8 +2695,7 @@ sub update_user_data { $changeHash{'tools.'.$key}; } else { $newenvhash{'environment.availabletools.'.$key} = - &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, - $key,'reload','tools'); + &Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'}, $key,'reload','tools'); } } } @@ -3045,6 +2999,7 @@ END .&mt('Create/Modify Another User').'

'); } } + $r->print(&Apache::loncommon::end_page()); } sub tool_changes { @@ -3654,7 +3609,7 @@ sub build_roles { # ========================================================== Custom Role Editor sub custom_role_editor { - my ($r,$brcrum) = @_; + my ($r) = @_; my $action = $env{'form.customroleaction'}; my $rolename; if ($action eq 'new') { @@ -3663,6 +3618,11 @@ sub custom_role_editor { $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(); @@ -3671,19 +3631,6 @@ 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; - } - my $is_custom = &Apache::loncommon::needs_gci_custom(); - my $title = 'User Management'; - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } # ------------------------------------------------------- What can be assigned? my %full=(); my %courselevel=(); @@ -3791,28 +3738,25 @@ sub custom_role_editor { $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); + $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); my %lt=&Apache::lonlocal::texthash( 'prv' => "Privilege", 'crl' => "Course Level", 'dml' => "Domain Level", 'ssl' => "System Level"); + $r->print('
' .'
' .''.&mt('Select a Template').'' @@ -3863,7 +3807,8 @@ ENDCCF ''."\n".''."\n". ''."\n". - ''); + ''. + &Apache::loncommon::end_page()); } # -------------------------------------------------------- sub make_script_template { @@ -3941,11 +3886,11 @@ sub make_button_code { } # ---------------------------------------------------------- Call to definerole sub set_custom_role { - my ($r,$context,$brcrum) = @_; + my ($r,$context) = @_; my $rolename=$env{'form.rolename'}; $rolename=~s/[^A-Za-z0-9]//gs; if (!$rolename) { - &custom_role_editor($r,$brcrum); + &custom_role_editor($r); return; } my ($jsback,$elements) = &crumb_utilities(); @@ -3954,32 +3899,20 @@ sub set_custom_role { .$jsback."\n" .'// ]]>'."\n" .''."\n"; - my $bread_crumbs_component = 'User Management'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($context eq 'course') { - if ($is_custom) { - $bread_crumbs_component = 'Enrollment and Student Activity'; - } - } - 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 => $bread_crumbs_component }; - $r->print(&Apache::loncommon::start_page('Save Custom Role',$jscript,$args)); + $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 ($rdummy,$roledef)= &Apache::lonnet::get('roles',["rolesdef_$rolename"]); @@ -4036,6 +3969,7 @@ sub set_custom_role { } $r->print('

'.&mt('Create or edit another custom role').'

'); $r->print(&Apache::lonhtmlcommon::echo_form_input([]).''); + $r->print(&Apache::loncommon::end_page()); } # ================================================================ Main Handler @@ -4055,7 +3989,19 @@ sub handler { } else { $context = 'domain'; } - my ($permission,$allowed) = + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, + ['action','state','callingform','roletype','showrole','bulkaction','popup','phase', + 'username','domain','srchterm','srchdomain','srchin','srchby','srchtype']); + &Apache::lonhtmlcommon::clear_breadcrumbs(); + 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'}); + } + #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,$crstype); if (!$allowed) { $env{'user.error.msg'}= @@ -4067,89 +4013,35 @@ sub handler { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; - my $title = 'User Management'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($context eq 'course') { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, - ['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 = $title; - if ($env{'form.context'} eq 'requestcrs') { - my $reqstate = 'uploadroster'; - if ($env{'form.state'} eq 'enrolling') { - $reqstate = 'enrolling'; - } - unless (&Apache::lonrequestcourse::generate_page($r,'new',$reqstate)) { - return OK; - } - } elsif ($env{'form.action'} ne 'dateselect') { - $brcrum = [{href=>"/adm/createuser", - text=>$title, - 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, - # Main switch on form.action and form.state, as appropriate if (! exists($env{'form.action'})) { - $args = {bread_crumbs => $brcrum, - bread_crumbs_component => $bread_crumbs_component}; - $r->print(&header(undef,$args)); + $r->print(&header()); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); $r->print(&print_main_menu($permission,$context,$crstype)); + $r->print(&Apache::loncommon::end_page()); } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) { - unless ($env{'form.context'} eq 'requestcrs') { - 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)); - } - unless (($env{'form.context'} eq 'requestcrs') && ($env{'form.state'} eq 'enrolling')) { - $r->print('
'."\n"); - } + $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')); + $r->print(''."\n"); if (! exists($env{'form.state'})) { &Apache::lonuserutils::print_first_users_upload_form($r,$context); } elsif ($env{'form.state'} eq 'got_file') { - my $formname; - if ($env{'form.context'} eq 'requestcrs') { - $formname = 'studentform'; - } &Apache::lonuserutils::print_upload_manager_form($r,$context, - $permission,$crstype,$formname); - if ($env{'form.context'} eq 'requestcrs') { - $r->print(''); - } + $permission,$crstype); } elsif ($env{'form.state'} eq 'enrolling') { if ($env{'form.datatoken'}) { &Apache::lonuserutils::upfile_drop_add($r,$context,$permission); - if ($env{'form.context'} eq 'requestcrs') { - $r->print('

'. - ''. - ''. - ''. - ''. - ''. - &Apache::lonrequestcourse::done_display()); - } } } else { &Apache::lonuserutils::print_first_users_upload_form($r,$context); } - $r->print(''); + $r->print(''.&Apache::loncommon::end_page()); } elsif ((($env{'form.action'} eq 'singleuser') || ($env{'form.action'} eq 'singlestudent')) && ($permission->{'cusr'})) { my $phase = $env{'form.phase'}; @@ -4164,9 +4056,9 @@ sub handler { if ($env{'form.phase'} eq 'createnewuser') { my $response; if ($env{'form.srchterm'} !~ /^$match_username$/) { - my $response = '

'.&mt('You must specify a valid username. Only the following are allowed: letters numbers - . @').'

'; + 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,$brcrum); + &print_username_entry_form($r,$context,$response,$srch,undef,$crstype); } else { my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'}); my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'}); @@ -4200,46 +4092,42 @@ sub handler { } &print_user_modification_page($r,$ccuname,$ccdomain, $srch,$response,$context, - $permission,$crstype,$brcrum); + $permission,$crstype); } elsif ($currstate eq 'query') { - &print_user_query_page($r,'createuser',$brcrum); + &print_user_query_page($r,'createuser'); } else { $env{'form.phase'} = ''; &print_username_entry_form($r,$context,$response,$srch, - $forcenewuser,$crstype,$brcrum); + $forcenewuser,$crstype); } } 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,$brcrum); + $context,$permission,$crstype); } } elsif ($env{'form.phase'} eq 'update_user_data') { - &update_user_data($r,$context,$crstype,$brcrum); + &update_user_data($r,$context,$crstype); } else { - &print_username_entry_form($r,$context,undef,$srch,undef,$crstype,$brcrum); + &print_username_entry_form($r,$context,undef,$srch,undef,$crstype); } } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) { if ($env{'form.phase'} eq 'set_custom_roles') { - &set_custom_role($r,$context,$brcrum); + &set_custom_role($r,$context); } else { - &custom_role_editor($r,$brcrum); + &custom_role_editor($r); } } elsif (($env{'form.action'} eq 'listusers') && ($permission->{'view'} || $permission->{'cusr'})) { if ($env{'form.phase'} eq 'bulkchange') { - 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)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/createuser?action=listusers', + text=>"List Users"}, + {href=>"/adm/createuser", + text=>"Result"}); 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'}) { @@ -4248,15 +4136,12 @@ sub handler { } 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 { - 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}; + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/createuser?action=listusers', + text=>"List Users"}); my ($cb_jscript,$jscript,$totcodes,$codetitles,$idlist,$idlist_titles); my $formname = 'studentform'; if (($context eq 'domain') && (($env{'form.roletype'} eq 'course') || @@ -4277,137 +4162,130 @@ sub handler { } $jscript .= &verify_user_display(); my $js = &add_script($jscript).$cb_jscript; - my $loadcode = + my $loadcode = &Apache::lonuserutils::course_selector_loadcode($formname); if ($loadcode ne '') { - $args->{add_entries} = {onload => $loadcode}; + $r->print(&header($js,{'onload' => $loadcode,})); + } else { + $r->print(&header($js)); } - $r->print(&header($js,$args)); } else { - $r->print(&header(&add_script(&verify_user_display()),$args)); + $r->print(&header(&add_script(&verify_user_display()))); } + $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'; } - 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)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/createuser?action=drop', + text=>$brtext}); 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}). &Apache::lonuserutils::date_section_selector($context, - $permission,$crstype)); + $permission,$crstype). + &Apache::loncommon::end_page()); } else { $r->print(&header(). - ''.&mt('You do not have permission to modify dates or sections for users').''); + ''.&mt('You do not have permission to modify dates or sections for users').''. + &Apache::loncommon::end_page()); } } elsif ($env{'form.action'} eq 'selfenroll') { - push(@{$brcrum}, - {href => '/adm/createuser?action=selfenroll', - text => "Configure Self-enrollment", - help => 'Course_Self_Enrollment'}); + $r->print(&header()); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/createuser?action=selfenroll', + text=>"Configure Self-enrollment"}); if (!exists($env{'form.state'})) { - $args = { bread_crumbs => $brcrum, - bread_crumbs_component => 'Configure Self-enrollment'}; - $r->print(&header(undef,$args)); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Configure Self-enrollment', + 'Course_Self_Enrollment')); $r->print('

'.&mt('Self-enrollment with a student role').'

'."\n"); &print_selfenroll_menu($r,$context,$permission); } elsif ($env{'form.state'} eq 'done') { - push (@{$brcrum}, - {href=>'/adm/createuser?action=selfenroll', - text=>"Result"}); - $args = { bread_crumbs => $brcrum, - bread_crumbs_component => 'Self-enrollment result'}; - $r->print(&header(undef,$args)); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/createuser?action=selfenroll', + text=>"Result"}); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('Self-enrollment result', + 'Course_Self_Enrollment')); $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') { - 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)); + $r->print(&header()); + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/createuser?action=selfenrollqueue', + text=>"Enrollment requests"}); 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') { - 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); + $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()); } else { - $args = { bread_crumbs => $brcrum, - bread_crumbs_component => $bread_crumbs_component}; - $r->print(&header(undef,$args)); + $r->print(&header()); + $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management')); $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,$args) = @_; - my $title = 'User Management'; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if ($env{'request.course.id'}) { - if ($is_custom) { - $title = 'Enrollment and Student Activity'; - } - } + my ($jscript,$loaditems,$args) = @_; my $start_page; - if (ref($args) eq 'HASH') { - $start_page=&Apache::loncommon::start_page($title,$jscript,$args); + if (ref($loaditems) eq 'HASH') { + $start_page=&Apache::loncommon::start_page('User Management',$jscript,{'add_entries' => $loaditems}); } else { - $start_page=&Apache::loncommon::start_page($title,$jscript); + $start_page=&Apache::loncommon::start_page('User Management',$jscript,$args); } return $start_page; } @@ -4440,10 +4318,6 @@ END # Menu Phase One sub print_main_menu { my ($permission,$context,$crstype) = @_; - my $is_custom = &Apache::loncommon::needs_gci_custom(); - if (($context eq 'course') && ($is_custom)) { - return &print_gci_main_menu($permission,$context,$crstype) - } my $linkcontext = $context; my $stuterm = lc(&Apache::lonnet::plaintext('st',$crstype)); if (($context eq 'course') && ($crstype eq 'Community')) { @@ -4665,82 +4539,6 @@ return Apache::lonhtmlcommon::generate_m # }); } -sub print_gci_main_menu { - my ($permission,$context,$crstype) = @_; - my $stuterm = lc(&Apache::lonnet::plaintext('st',$crstype)); - my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity(); - my %links = ( - course => { - single => 'Add/Modify a Student', - drop => 'Drop Students', - upload => 'Upload a File of Course Users', - singleuser => 'Add/Modify a Course User', - listusers => 'Concept Test Roster and Student Activity', - }, - ); - my %linktitles = ( - course => { - singleuser => 'Add a user with a certain role to this course.', - listusers => 'Show and manage users in this course.', - single => 'Add a user with the role of student to this course', - drop => 'Remove a student from this course.', - upload => 'Upload a CSV or a text file containing users.', - }, - ); - my @menu = ( {categorytitle => 'Manage Users', - items => - [ - { - linktext => $links{$context}{'single'}, - #help => 'Course_Add_Student', - icon => 'list-add.png', - url => '/adm/createuser?action=singlestudent', - permission => $permission->{'cusr'}, - linktitle => $linktitles{$context}{'single'}, - - }, - { - linktext => $links{$context}{'drop'}, - icon => 'edit-undo.png', - #help => 'Course_Drop_Student', - url => '/adm/createuser?action=drop', - permission => $permission->{'cusr'}, - linktitle => $linktitles{$context}{'drop'}, - }, - { - linktext => $links{$context}{'upload'}, - icon => 'sctr.png', - #help => 'Course_Create_Class_List', - url => '/adm/createuser?action=upload', - permission => $permission->{'cusr'}, - linktitle => $linktitles{$context}{'upload'}, - }, - { - linktext => $links{$context}{'listusers'}, - icon => 'edit-find.png', - #help => 'Course_View_Class_List', - url => '/adm/createuser?action=listusers', - permission => ($permission->{'view'} || $permission->{'cusr'}), - linktitle => $linktitles{$context}{'listusers'}, - }, - ]}, - {categorytitle => 'Administration', - items => [ ]}, - ); - - push(@{ $menu[1]->{items} }, #Category: Administration - { - linktext => 'Change Log', - 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); -} - sub restore_prev_selections { my %saveable_parameters = ('srchby' => 'scalar', 'srchin' => 'scalar', @@ -5705,7 +5503,16 @@ sub role_display_filter { # 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 LON-CAPA server is version [_1]',$version); + } + $output .= '


'; return $output; } @@ -5755,7 +5562,7 @@ sub user_search_result { if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'instd')) { if (($srch->{'srchdomain'} eq '') || ! (&Apache::lonnet::domain($srch->{'srchdomain'}))) { - $response = '

'.&mt('You must specify a valid domain when searching in a domain or institutional directory.').'

'; + $response = &mt('You must specify a valid domain when searching in a domain or institutional directory.') } } if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'crs') || @@ -5768,7 +5575,7 @@ sub user_search_result { } } if ($unamecheck !~ /^$match_username$/) { - $response = '

'.&mt('You must specify a valid username. Only the following are allowed: letters numbers - . @').'

'; + $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @'); } } } @@ -5943,8 +5750,7 @@ sub user_search_result { ($currstate,$response,$forcenewuser) = &build_search_response($context,$srch,%srch_results); } else { - my $showdom = &display_domain_info($srch->{'srchdomain'}); - $response = ''. + my $showdom = &display_domain_info($srch->{'srchdomain'}); $response = ''. &mt('Institutional directory search is not available in domain: [_1]',$showdom). '
'. &mt('You may want to search in the LON-CAPA domain instead of the institutional directory.'). @@ -6055,12 +5861,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 = ( @@ -6080,14 +5886,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;
$lt{'usr'}:  $lt{'dom'}:$domform  $sellink