--- loncom/interface/loncreateuser.pm 2008/07/17 20:05:14 1.257 +++ loncom/interface/loncreateuser.pm 2008/12/06 12:49:18 1.266 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.257 2008/07/17 20:05:14 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.266 2008/12/06 12:49:18 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -33,11 +33,13 @@ package Apache::loncreateuser; =head1 NAME -Apache::loncreateuser - handler to create users and custom roles +Apache::loncreateuser.pm =head1 SYNOPSIS -Apache::loncreateuser provides an Apache handler for creating users, + Handler to create users and custom roles + + Provides an Apache handler for creating users, editing their login parameters, roles, and removing roles, and also creating and assigning custom roles. @@ -833,10 +835,10 @@ ENDNOPORTPRIV $addrolesdisplay = $add_domainroles; } $r->print(&course_level_dc($env{'request.role.domain'},'Course')); - $r->print('
'."\n"); + $r->print('
'."\n"); } elsif ($context eq 'author') { if ($addrolesdisplay) { - $r->print('
print('
print(' onClick="auth_check()" \>'."\n"); } else { @@ -848,7 +850,7 @@ ENDNOPORTPRIV } } else { $r->print(&course_level_table(%inccourses)); - $r->print('
'."\n"); + $r->print('
'."\n"); } } $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain'])); @@ -967,7 +969,7 @@ sub display_existing_roles { if (defined($coursedata{'description'})) { $carea=$coursedata{'description'}. '
'.&mt('Domain').': '.$coursedom.(' 'x8). - &Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom); + &Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$coursedir,$coursedom); $sortkey.="\0".$coursedata{'description'}; $class=$coursedata{'type'}; } else { @@ -1407,8 +1409,6 @@ sub personal_data_display { %userenv = &Apache::lonnet::get('environment', ['firstname','middlename','lastname','generation', 'permanentemail','id'],$ccdomain,$ccuname); - } - if (!$newuser) { %canmodify = &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain, \@userinfo,$rolesarray); @@ -1423,7 +1423,7 @@ sub personal_data_display { 'lastname' => "Last Name", 'generation' => "Generation", 'permanentemail' => "Permanent e-mail address", - 'id' => "ID/Student Number", + 'id' => "Student/Employee ID", 'lg' => "Login Data" ); my %textboxsize = ( @@ -1849,7 +1849,7 @@ sub update_user_data { $env{'form.c'.$item} = $userenv{$item}; } } - # Check to see if we can change the ID/student number + # Check to see if we can change the Student/Employee ID my $forceid = $env{'form.forceid'}; my $recurseid = $env{'form.recurseid'}; my (%alerts,%rulematch,%idinst_results,%curr_rules,%got_rules); @@ -1860,7 +1860,10 @@ sub update_user_data { (!$forceid)) { if ($env{'form.cid'} ne $uidhash{$env{'form.ccuname'}}) { $env{'form.cid'} = $userenv{'id'}; - $no_forceid_alert = &mt('New student/employeeID does not match existing ID for this user.').'
'.&mt('Change is not permitted without checking the \'Force ID change\' checkbox on the previous page.').'
'."\n"; + $no_forceid_alert = &mt('New Student/Employee ID does not match existing ID for this user.') + .'
' + .&mt("Change is not permitted without checking the 'Force ID change' checkbox on the previous page.") + .'
'."\n"; } } if ($env{'form.cid'} ne $userenv{'id'}) { @@ -1974,7 +1977,7 @@ sub update_user_data { 'mddl' => "middle", 'lst' => "last", 'gen' => "generation", - 'id' => "ID/Student number", + 'id' => "Student/Employee ID", 'mail' => "permanent e-mail", 'disk' => "disk space allocated to portfolio files", 'prvs' => "Previous", @@ -2057,7 +2060,7 @@ END # They did not want to change the users name or quota but we can # still tell them what the name and quota are my %lt=&Apache::lonlocal::texthash( - 'id' => "ID/Student number", + 'id' => "Student/Employee ID", 'mail' => "Permanent e-mail", 'disk' => "Disk space allocated to user's portfolio files", ); @@ -2100,8 +2103,10 @@ END $r->print(''.$rolestr.'
'. &mt('Contact your helpdesk for more information.',"javascript:helpMenu('display')").'
'); } - $r->print($no_forceid_alert. - &Apache::lonuserutils::print_namespacing_alerts($env{'form.ccdomain'},\%alerts,\%curr_rules)); + $r->print('' + .$no_forceid_alert + .&Apache::lonuserutils::print_namespacing_alerts($env{'form.ccdomain'},\%alerts,\%curr_rules) + .''); } if ($env{'form.action'} eq 'singlestudent') { &enroll_single_student($r,$uhome,$amode,$genpwd,$now,$newuser,$context); @@ -2243,8 +2248,8 @@ sub update_roles { my $result=&Apache::lonnet::assignrole($env{'form.ccdomain'}, $env{'form.ccuname'},$url,$role,0,$now,'','', $context); - $output = &mt('Re-enabling [_1] in [_2]: [_3]', - $role,$url,$result).'
'; + $output = &mt('Re-enabling [_1] in [_2]: [_3]', + $role,$url,''.$result.'').'
'; } $r->print($output); if (!grep(/^\Q$role\E$/,@rolechanges)) { @@ -2257,8 +2262,8 @@ sub update_roles { my $result = &Apache::lonnet::assigncustomrole( $env{'form.ccdomain'}, $env{'form.ccuname'}, $url,$rdom,$rnam,$rolename,0,$now,undef,$context); - $r->print(&mt('Re-enabling custom role [_1] by [_2]@[_3] in [_4] : [_5]', - $rolename,$rnam,$rdom,$url,$result).'
'); + $r->print(&mt('Re-enabling custom role [_1] by [_2]@[_3] in [_4] : [_5]', + $rolename,$rnam,$rdom,$url,''.$result.'').'
'); if (!grep(/^cr$/,@rolechanges)) { push(@rolechanges,'cr'); } @@ -2602,7 +2607,7 @@ sub custom_role_editor { my @template_roles = ("cc","in","ta","ep","st"); foreach my $role (@template_roles) { $head_script .= &make_script_template($role); - $button_code .= &make_button_code($role); + $button_code .= &make_button_code($role).' '; } $head_script .= "\n".$jsback."\n".''."\n"; $r->print(&Apache::loncommon::start_page('Custom Role Editor',$head_script)); @@ -2622,10 +2627,15 @@ sub custom_role_editor { 'crl' => "Course Level", 'dml' => "Domain Level", 'ssl' => "System Level"); - $r->print(&mt('Select a Template').'
'); - $r->print('
'); - $r->print($button_code); - $r->print('
'); + + $r->print('
' + .'
' + .''.&mt('Select a Template').'' + .$button_code + .'
' + .'
' + ); + $r->print(< @@ -2728,7 +2738,7 @@ sub make_script_template { sub make_button_code { my ($role) = @_; my $label = &Apache::lonnet::plaintext($role); - my $button_code = ''; + my $button_code = ''; return ($button_code); } # ---------------------------------------------------------- Call to definerole @@ -3121,102 +3131,127 @@ sub print_main_menu { listusers => 'Display Co-authors and Manage Multiple Users', }, course => { - upload => 'Upload a File of Course Users', - singleuser => 'Add/Modify a Single Course User', - listusers => 'Display Class Lists and Manage Multiple Users', + upload => 'File of Course Users', + singleuser => 'Single Course User', + listusers => 'Course User Lists', }, ); - my @menu = - ( - { text => $links{$context}{'upload'}, - help => 'Course_Create_Class_List', - action => 'upload', - permission => $permission->{'cusr'}, - }, - { text => $links{$context}{'singleuser'}, - help => 'Course_Change_Privileges', - action => 'singleuser', - permission => $permission->{'cusr'}, - }, - { text => $links{$context}{'listusers'}, - help => 'Course_View_Class_List', - action => 'listusers', - permission => ($permission->{'view'} || $permission->{'cusr'}), - }, - ); - if ($context eq 'domain' || $context eq 'course') { - my $customlink = { text => 'Edit Custom Roles', - help => 'Course_Editing_Custom_Roles', - action => 'custom', - permission => $permission->{'custom'}, - }; - push(@menu,$customlink); - } - if ($context eq 'course') { - my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity(); - my @courselinks = - ( - { text => 'Enroll a Single Student', - help => 'Course_Add_Student', - action => 'singlestudent', - permission => $permission->{'cusr'}, - }, - { text => 'Drop Students', - help => 'Course_Drop_Student', - action => 'drop', - permission => $permission->{'cusr'}, - }); - if (!exists($permission->{'cusr_section'})) { - push(@courselinks, - { text => 'Automated Enrollment Manager', - help => 'Course_Automated_Enrollment', - permission => (&Apache::lonnet::auto_run($cnum,$cdom) - && $permission->{'cusr'}), - url => '/adm/populate', - }, - { text => 'Configure User Self-enrollment', - help => 'Course_Self_Enrollment', - action => 'selfenroll', - permission => $permission->{'cusr'}, - }); - } - push(@courselinks, - { text => 'Manage Course Groups', - help => 'Course_Manage_Group', - permission => $permission->{'grp_manage'}, - url => '/adm/coursegroups?refpage=cusr', - }, - { text => 'View Change Logs', - help => 'Course_User_Logs', - action => 'changelogs', - permission => $permission->{'cusr'}, - },); + my @menu = ( {categorytitle => 'Add Users', + items => + [{ + linktext => $links{$context}{'upload'}, + icon => 'sctr.png', + #help => 'Course_Create_Class_List', + url => '/adm/createuser?action=upload', + permission => $permission->{'cusr'}, + linktitle => 'Upload a CSV or a text file containing users.', + }, + { + linktext => $links{$context}{'singleuser'}, + icon => 'edit-redo.png', + #help => 'Course_Change_Privileges', + url => '/adm/createuser?action=singleuser', + permission => $permission->{'cusr'}, + linktitle => 'Add a user with a certain role to this course.', + }]}, + {categorytitle => 'Administration', + items => + [{ + linktext => $links{$context}{'listusers'}, + icon => 'edit-find.png', + #help => 'Course_View_Class_List', + url => '/adm/createuser?action=listusers', + permission => ($permission->{'view'} || $permission->{'cusr'}), + linktitle => 'Show and manage users of this course.', + }]}, + {categorytitle => 'Configuration', + items => + [ + ]}, + ); + + if ($context eq 'domain'){ + + push(@{ $menu[1]->{items} }, + { linktext => 'Custom Roles', + icon => 'emblem-photos.png', + #help => 'Course_Editing_Custom_Roles', + url => '/adm/createuser?action=custom', + permission => $permission->{'custom'}, + linktitle => 'Configure a custom role.', + }); + + }elsif ($context eq 'course'){ + my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity(); + + push(@{ $menu[0]->{items} }, + { linktext => 'Single Student', + #help => 'Course_Add_Student', + icon => 'list-add.png', + url => '/adm/createuser?action=singlestudent', + permission => $permission->{'cusr'}, + linktitle => 'Add a user with the role student to this course.', + }); + + push(@{ $menu[1]->{items} }, + { linktext => 'Drop Students', + icon => 'edit-undo.png', + #help => 'Course_Drop_Student', + url => '/adm/createuser?action=drop', + permission => $permission->{'cusr'}, + linktitle =>'Remove a student from this course.', + }, + { linktext => 'Custom Roles', + icon => 'emblem-photos.png', + #help => 'Course_Editing_Custom_Roles', + url => '/adm/createuser?action=custom', + permission => $permission->{'custom'}, + linktitle => 'Configure a custom role.', + }); + + if (!exists($permission->{'cusr_section'})){ + + push(@{ $menu[2]->{items} }, + { linktext => 'Automated Enrollment', + icon => 'roles.png', + #help => 'Course_Automated_Enrollment', + permission => (&Apache::lonnet::auto_run($cnum,$cdom) + && $permission->{'cusr'}), + url => '/adm/populate', + linktitle => 'Automated enrollment manager.', + }, + { linktext => 'User Self-Enrollment', + icon => 'cstr.png', + #help => 'Course_Self_Enrollment', + url => '/adm/createuser?action=selfenroll', + permission => $permission->{'cusr'}, + linktitle => 'Configure user self enrollment.', + }); + + } + + push(@{ $menu[2]->{items} }, + { linktext => 'Course Groups', + icon => 'conf.png', + #help => 'Course_Manage_Group', + url => '/adm/coursegroups?refpage=cusr', + permission => $permission->{'grp_manage'}, + linktitle => 'Manage course groups.', + }, + { linktext => 'Change Logs', + icon => 'document-properties.png', + #help => 'Course_User_Logs', + url => '/adm/createuser?action=changelogs', + permission => $permission->{'cusr'}, + linktitle => 'View change log.', + }); + }; +return Apache::lonhtmlcommon::generate_menu(@menu); # { 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 { @@ -3606,9 +3641,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]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.','"','"'); if (ref($domconf{'coursecategories'}) eq 'HASH') { if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') { $settable{'togglecats'} = 1; @@ -3618,11 +3653,11 @@ sub visible_in_cat { } $cathash = $domconf{'coursecategories'}{'cats'}; } - if ($settable{'togglecats'} && $settable{'categories'}) { + if ($settable{'togglecats'} && $settable{'categorize'}) { $cansetvis = &mt('You are able to both assign a course category and choose to exclude this course from the catalog.'); } elsif ($settable{'togglecats'}) { $cansetvis = &mt('You are able to choose to exclude this course from the catalog, but only a Domain Coordinator may assign a course category.'); - } elsif ($settable{'categories'}) { + } elsif ($settable{'categorize'}) { $cansetvis = &mt('You may assign a course category, but only a Domain Coordinator may choose to exclude this course from the catalog.'); } else { $cansetvis = &mt('Only a Domain Coordinator may assign a course category or choose to exclude this course from the catalog.'); @@ -3676,7 +3711,7 @@ sub visible_in_cat { } } if (!$matched) { - if ($settable{'categories'}) { + if ($settable{'categorize'}) { push(@vismsgs,'chgcat'); } else { push(@vismsgs,'dc_chgcat'); @@ -3689,7 +3724,7 @@ sub visible_in_cat { if (ref($cathash) eq 'HASH') { if ((keys(%{$cathash}) > 1) || (keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} eq '')) { - if ($settable{'categories'}) { + if ($settable{'categorize'}) { push(@vismsgs,'addcat'); } else { push(@vismsgs,'dc_addcat'); @@ -4415,10 +4450,30 @@ sub build_search_response { &Apache::lonuserutils::can_create_user($env{'request.role.domain'},$context); if ($cancreate) { my $showdom = &display_domain_info($env{'request.role.domain'}); - $response .= '

'.&mt("To add a new user (you can only create new users in your current role's domain - [_1]):",$env{'request.role.domain'}).'
'; + $response .= '

' + .''.&mt('To add a new user:').'' + .'
' + .&mt("(You can only create new users in your current role's domain - [_1])" + ,''.$env{'request.role.domain'}.'') + .'
'; } else { my $helplink = ' href="javascript:helpMenu('."'display'".')"'; - $response .= '

'.&mt("You are not authorized to create new users in your current role's domain - [_1].",$env{'request.role.domain'}).'
'.&mt('Contact the helpdesk if you need to create a new user.',$helplink).'

'; + $response .= '

' + .&mt("You are not authorized to create new users in your current role's domain - [_1]." + ,''.$env{'request.role.domain'}.'') + .'
' + .&mt('Contact the [_1]helpdesk[_2] if you need to create a new user.' + ,' ' + ,'') + .'

'; } } } @@ -4746,7 +4801,7 @@ sub update_selfenroll_config { if (@{$types} > 0) { my @esc_types = map { &escape($_); } @{$types}; $othervalue = 'other'; - $typestr = join(',',($othervalue,@esc_types)); + $typestr = join(',',(@esc_types,$othervalue)); } $typestr = $othervalue; } else {