--- loncom/interface/loncreateuser.pm	2010/03/11 15:48:33	1.329.2.2
+++ loncom/interface/loncreateuser.pm	2010/09/19 16:44:44	1.329.2.4
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Create a user
 #
-# $Id: loncreateuser.pm,v 1.329.2.2 2010/03/11 15:48:33 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.329.2.4 2010/09/19 16:44:44 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -472,6 +472,7 @@ sub print_username_entry_form {
     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'};
@@ -497,8 +498,14 @@ sub print_username_entry_form {
                 'onload' => "javascript:setFormElements(document.$formtoset)",
                     );
     my %breadcrumb_text = &singleuser_breadcrumb($crstype);
+    my $title = 'User Management';
+    if ($context eq 'course') {
+        if ($is_custom) {
+            $title = 'Enrollment and Student Activity';
+        }
+    }
     my $start_page =
-	&Apache::loncommon::start_page('User Management',
+	&Apache::loncommon::start_page($title,
 				       $jscript,{'add_entries' => \%loaditems,});
     if ($env{'form.action'} eq 'custom') {
         &Apache::lonhtmlcommon::add_breadcrumb
@@ -516,7 +523,7 @@ sub print_username_entry_form {
     } elsif ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';
     }
-    my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management',
+    my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title,
                                                      $helpitem);
     my %lt=&Apache::lonlocal::texthash(
                     'srst' => 'Search for a user and enroll as a student',
@@ -660,7 +667,7 @@ $userpicker
 ENDBLOCK
     if ($env{'form.phase'} eq '') {
         my $defdom=$env{'request.role.domain'};
-        my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');
+        my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain','',1);
         my %lt=&Apache::lonlocal::texthash(
                   'enro' => 'Enroll one student',
                   'enrm' => 'Enroll one member',
@@ -709,7 +716,7 @@ $showresponse
 <table>
  <tr>
   <td>$lt{'usr'}:</td>
-  <td><input type="text" size="15" name="srchterm" /></td>
+  <td><input type="text" size="25" name="srchterm" /></td>
   <td>&nbsp;$lt{'dom'}:</td><td>$domform</td>
   <td>&nbsp;$sellink&nbsp;</td>
   <td>&nbsp;<input name="userrole" type="submit" value="$buttontext" /></td>
@@ -754,6 +761,7 @@ sub print_user_selection_page {
     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';
@@ -792,7 +800,13 @@ ENDSCRIPT
     if ($context eq 'requestcrs') {
         $r->print('<div>');
     } else {
-        $r->print(&Apache::loncommon::start_page('User Management',$jscript));
+        my $title = 'User Management';
+        if ($context eq 'course') {
+            if ($is_custom) {
+                $title = 'Enrollment and Student Activity';
+            }
+        }
+        $r->print(&Apache::loncommon::start_page($title,$jscript));
 
         my %breadcrumb_text = &singleuser_breadcrumb($crstype);
         &Apache::lonhtmlcommon::add_breadcrumb
@@ -803,13 +817,13 @@ ENDSCRIPT
               text=>$breadcrumb_text{'userpicked'},
               faq=>282,bug=>'Instructor Interface',});
         if ($env{'form.action'} eq 'singleuser') {
-            $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
+            $r->print(&Apache::lonhtmlcommon::breadcrumbs($title,
                                                           'Course_Change_Privileges'));
             $r->print("<b>$lt{'usrch'}</b><br />");
             $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context,undef,$crstype));
             $r->print('<h3>'.$lt{'usel'}.'</h3>');
         } elsif ($env{'form.action'} eq 'singlestudent') {
-            $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
+            $r->print(&Apache::lonhtmlcommon::breadcrumbs($title,
                                                           'Course_Add_Student'));
             $r->print($jscript."<b>");
             if ($crstype eq 'Community') {
@@ -918,12 +932,21 @@ 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');
-            $usertype =
-                &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules);
+        my $usertype =
+            &Apache::lonuserutils::check_usertype($ccdomain,$ccuname,$rules);
         my $cancreate =
             &Apache::lonuserutils::can_create_user($ccdomain,$context,
                                                    $usertype);
@@ -933,17 +956,26 @@ 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') {
-                $response =  '<span class="LC_warning">'.&mt('No match was found for the username ([_1]) in LON-CAPA domain: [_2]',$ccuname,$ccdomain).
-                            '</span><br />';
+                if ($is_custom) {
+                    $response = '<span class="LC_warning">'.&mt('Invalid format for username for new user: [_1]','<b>'.$ccuname.'</b>').
+                                '</span><br />';
+                } else {
+                    $response =  '<span class="LC_warning">'.&mt('No match was found for the username ([_1]) in LON-CAPA domain: [_2]',$ccuname,$ccdomain).'</span><br />';
+                }
             }
             $response .= '<p class="LC_warning">'
                         .&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.")
-                        .' '
-                        .&mt('Please contact the [_1]helpdesk[_2] for assistance.'
-                            ,'<a href="'.$helplink.'">','</a>')
-                        .'</p><br />';
+                        .'<br />';
+            if ($ccdomain eq 'gcitest') {
+                $response .= &mt('Enter a valid e-mail address as the username for the new user.').' '.&mt('Please contact the [_1]helpdesk[_2] for assistance.'
+                             ,'<a href="'.$helplink.'">','</a>')
+                             .'</p><br />';
+            }
             $env{'form.phase'} = '';
             &print_username_entry_form($r,$context,$response,undef,undef,$crstype);
             return;
@@ -994,8 +1026,14 @@ sub print_user_modification_page {
     if ($env{'form.popup'}) {
        $args->{'no_nav_bar'} = 1; 
     }
+    my $title = 'User Management';
+    if ($context eq 'course') {
+        if ($is_custom) {
+            $title = 'Enrollment and Student Activity';
+        }
+    }
     my $start_page = 
-	&Apache::loncommon::start_page('User Management',$js,$args);
+	&Apache::loncommon::start_page($title,$js,$args);
     my %breadcrumb_text = &singleuser_breadcrumb($crstype);
     &Apache::lonhtmlcommon::add_breadcrumb
      ({href=>"javascript:backPage($form)",
@@ -1016,7 +1054,7 @@ sub print_user_modification_page {
     if ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';
     }
-    my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('User Management',
+    my $crumbs = &Apache::lonhtmlcommon::breadcrumbs($title,
                                                      $helpitem);
 
     my $forminfo =<<"ENDFORMINFO";
@@ -2151,7 +2189,8 @@ sub get_inststatuses {
 
 # ================================================================= Phase Three
 sub update_user_data {
-    my ($r,$context,$crstype) = @_; 
+    my ($r,$context,$crstype) = @_;
+    my $is_custom = &Apache::loncommon::needs_gci_custom();
     my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},
                                           $env{'form.ccdomain'});
     # Error messages
@@ -2204,7 +2243,13 @@ sub update_user_data {
     if ($env{'form.action'} eq 'singlestudent') {
         $helpitem = 'Course_Add_Student';
     }
-    $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
+    my $title = 'User Management';
+    if ($context eq 'course') {
+        if ($is_custom) {
+            $title = 'Enrollment and Student Activity';
+        }
+    }
+    $r->print(&Apache::lonhtmlcommon::breadcrumbs($title,
                                                  $helpitem));
     $r->print(&update_result_form($uhome));
     # Check Inputs
@@ -2695,7 +2740,8 @@ 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');
                                 }
                             }
                         }
@@ -3631,6 +3677,13 @@ sub custom_role_editor {
         $context = 'domain';
         $crstype = $env{'form.templatecrstype'};
     }
+    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=();
@@ -3746,7 +3799,7 @@ sub custom_role_editor {
       {href=>"javascript:backPage(document.form1,'','')",
          text=>"Edit custom role",
          faq=>282,bug=>'Instructor Interface',});
-    $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
+    $r->print(&Apache::lonhtmlcommon::breadcrumbs($title,
                                                   'Course_Editing_Custom_Roles'));
 
     $r->print($body_top);
@@ -3899,7 +3952,13 @@ sub set_custom_role {
                  .$jsback."\n"
                  .'// ]]>'."\n"
                  .'</script>'."\n";
-
+    my $title = 'User Management';
+    my $is_custom = &Apache::loncommon::needs_gci_custom();
+    if ($context eq 'course') {
+        if ($is_custom) {
+            $title = 'Enrollment and Student Activity';
+        }
+    }
     $r->print(&Apache::loncommon::start_page('Save Custom Role'),$jscript);
     &Apache::lonhtmlcommon::add_breadcrumb
         ({href=>"javascript:backPage(document.customresult,'pickrole','')",
@@ -3911,7 +3970,7 @@ sub set_custom_role {
          {href=>"javascript:backPage(document.customresult,'set_custom_roles','')",
           text=>"Result",
           faq=>282,bug=>'Instructor Interface',});
-    $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management',
+    $r->print(&Apache::lonhtmlcommon::breadcrumbs($title,
                                                   'Course_Editing_Custom_Roles'));
 
     my ($rdummy,$roledef)=
@@ -3989,6 +4048,13 @@ sub handler {
     } else {
         $context = 'domain';
     }
+    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']);
@@ -3996,7 +4062,7 @@ sub handler {
     if ($env{'form.action'} ne 'dateselect') {
         &Apache::lonhtmlcommon::add_breadcrumb
             ({href=>"/adm/createuser",
-              text=>"User Management",
+              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
@@ -4016,7 +4082,7 @@ 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'));
+        $r->print(&Apache::lonhtmlcommon::breadcrumbs($title));
         $r->print(&print_main_menu($permission,$context,$crstype));
         $r->print(&Apache::loncommon::end_page());
     } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {
@@ -4032,8 +4098,12 @@ sub handler {
         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.caller'} eq 'requestcrs') {
+                $formname = 'studentform';
+            }
             &Apache::lonuserutils::print_upload_manager_form($r,$context,
-                                                             $permission,$crstype);
+                                                             $permission,$crstype,$formname);
         } elsif ($env{'form.state'} eq 'enrolling') {
             if ($env{'form.datatoken'}) {
                 &Apache::lonuserutils::upfile_drop_add($r,$context,$permission);
@@ -4056,7 +4126,7 @@ 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 = '<p class="LC_warning">'.&mt('You must specify a valid username. Only the following are allowed: letters numbers - . @').'</p>';
                     $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$response,$srch,undef,$crstype);
                 } else {
@@ -4272,7 +4342,7 @@ sub handler {
         $r->print(&Apache::loncommon::end_page());        
     } else {
         $r->print(&header());
-        $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
+        $r->print(&Apache::lonhtmlcommon::breadcrumbs($title));
         $r->print(&print_main_menu($permission,$context,$crstype));
         $r->print(&Apache::loncommon::end_page());
     }
@@ -4318,7 +4388,8 @@ END
 #  Menu Phase One
 sub print_main_menu {
     my ($permission,$context,$crstype) = @_;
-    if (($context eq 'course') && (&Apache::loncommon::needs_gci_custom())) {
+    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;
@@ -4552,7 +4623,7 @@ sub print_gci_main_menu {
                     drop       => 'Drop Students',
                     upload     => 'Upload a File of Course Users',
                     singleuser => 'Add/Modify a Course User',
-                    listusers  => 'Manage Course Users',
+                    listusers  => 'Concept Test Roster and Student Activity',
                   },
      );
      my %linktitles = (
@@ -5632,7 +5703,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 = '<p class="LC_warning">'.&mt('You must specify a valid domain when searching in a domain or institutional directory.').'</p>';
         }
     }
     if (($srch->{'srchin'} eq 'dom') || ($srch->{'srchin'} eq 'crs') ||
@@ -5645,7 +5716,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 = '<p class="LC_warning">'.&mt('You must specify a valid username. Only the following are allowed: letters numbers - . @').'</p>';
             }
         }
     }
@@ -5820,7 +5891,8 @@ sub user_search_result {
                 ($currstate,$response,$forcenewuser) = 
                     &build_search_response($context,$srch,%srch_results);
             } else {
-                my $showdom = &display_domain_info($srch->{'srchdomain'});                $response = '<span class="LC_warning">'.
+                my $showdom = &display_domain_info($srch->{'srchdomain'});
+                $response = '<span class="LC_warning">'.
                     &mt('Institutional directory search is not available in domain: [_1]',$showdom).
                     '</span><br />'.
                     &mt('You may want to search in the LON-CAPA domain instead of the institutional directory.').