--- loncom/interface/lonuserutils.pm	2010/01/20 20:40:43	1.97.2.10
+++ loncom/interface/lonuserutils.pm	2009/11/12 15:58:22	1.104
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.97.2.10 2010/01/20 20:40:43 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.104 2009/11/12 15:58:22 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -387,7 +387,6 @@ sub javascript_validations {
             if ($context eq 'course') {
                 if ($env{'request.course.sec'} eq '') {
                     $setsection_call = 'setSections(document.'.$param{'formname'}."'$crstype'".');';
-
                     $setsections_js =
                         &setsections_javascript($param{'formname'},$groupslist,
                                                 $mode,'',$crstype);
@@ -1142,7 +1141,7 @@ sub date_setting_table {
 }
 
 sub make_dates_default {
-    my ($startdate,$enddate,$context,$crstype = @_;
+    my ($startdate,$enddate,$context,$crstype) = @_;
     my $result = '';
     if ($context eq 'course') {
         my ($cnum,$cdom) = &get_course_identity();
@@ -1447,15 +1446,14 @@ sub print_userlist {
                   '<input type="hidden" name="phase" value="" /></form>');
         return;
     }
-    if (!(($context eq 'domain') && 
-        (($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')))) {
+    if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) {
         $r->print('&nbsp;'.&list_submit_button(&mt('Update Display')).
                   "\n</p>\n");
     }
     my ($indexhash,$keylist) = &make_keylist_array();
-    my (%userlist,%userinfo,$clearcoursepick);
+    my (%userlist,%userinfo);
     if (($context eq 'domain') && 
-        ($env{'form.roletype'} eq 'course') ||
+        ($env{'form.roletype'} eq 'course') || 
         ($env{'form.roletype'} eq 'community')) {
         my ($crstype,$numcodes,$title,$warning);
         if ($env{'form.roletype'} eq 'course') {
@@ -1478,15 +1476,9 @@ sub print_userlist {
                   $courseform."\n".
                   &Apache::lonhtmlcommon::row_closure(1).
                   &Apache::lonhtmlcommon::end_pick_box().'</p>'.
-                  '<p><input type="hidden" name="origroletype" value="'.$env{'form.roletype'}.'" />'.
-                  &list_submit_button(&mt('Update Display')).
+                  '<p>'.&list_submit_button(&mt('Update Display')).
                   "\n".'</p><span class="LC_warning">'.$warning.'</span>'."\n");
-        $clearcoursepick = 0;
-        if (($env{'form.origroletype'} ne '') &&
-            ($env{'form.origroletype'} ne $env{'form.roletype'})) {
-            $clearcoursepick = 1;
-        }
-        if (($env{'form.coursepick'}) && (!$clearcoursepick)) {
+        if ($env{'form.coursepick'}) {
             $r->print('<hr />'.&mt('Searching').' ...<br />&nbsp;<br />');
         }
     } else {
@@ -1559,8 +1551,9 @@ sub print_userlist {
                         }
                     }
                 }
-            } elsif ($env{'form.roletype'} eq 'course') {
-                if (($env{'form.coursepick'}) && (!$clearcoursepick)) {
+            } elsif (($env{'form.roletype'} eq 'course') ||
+                     ($env{'form.roletype'} eq 'community')) {
+                if ($env{'form.coursepick'}) {
                     my %courses = &process_coursepick();
                     my %allusers;
                     my $hidepriv = 1;
@@ -1963,17 +1956,13 @@ sub process_coursepick {
     my $coursefilter = $env{'form.coursepick'};
     my $cdom = $env{'request.role.domain'};
     my %courses;
-    my $crssrch = 'Course';
-    if ($env{'form.roletype'} eq 'community') {
-        $crssrch = 'Community';
-    }
     if ($coursefilter eq 'all') {
         %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.',
-                                                 undef,undef,$crssrch);
+                                                 undef,undef,'Course');
     } elsif ($coursefilter eq 'category') {
         my $instcode = &instcode_from_coursefilter();
         %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.',
-                                                 undef,undef,$crssrch);
+                                                 undef,undef,'Course');
     } elsif ($coursefilter eq 'specific') {
         if ($env{'form.coursetotal'} > 1) {
             my @course_ids = split(/&&/,$env{'form.courselist'});
@@ -2158,7 +2147,7 @@ END
     } elsif ($context eq 'domain') {
         if ($setting eq 'community') {
             $crstype = 'Community';
-        } elsif ($setting eq 'course') {
+        } elsif ($crstype eq 'course') {
             $crstype = 'Course';
         }
     }
@@ -2271,7 +2260,7 @@ END
             push(@cols,'section');
         }
         if (!($context eq 'domain' && ($env{'form.roletype'} eq 'course')
-                              && ($env{'form.roletype'} eq 'community'))) {
+                              && ($env{'form.roletype'} eq 'community'))) { 
             push(@cols,('start','end'));
         }
         if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') {
@@ -2282,7 +2271,7 @@ END
                                     $env{'form.roletype'} eq 'community')) {
             push (@cols,'extent');
         }
-        if (($statusmode eq 'Any') &&
+        if (($statusmode eq 'Any') && 
             (!($context eq 'domain' && (($env{'form.roletype'} eq 'course')
              || ($env{'form.roletype'} eq 'community'))))) {
             push(@cols,'status');
@@ -2297,24 +2286,19 @@ END
     if ($env{'form.showrole'} eq 'cr') {
         $rolefilter = &mt('custom');  
     } elsif ($env{'form.showrole'} ne 'Any') {
-        $rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'});
+        $rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'},$crstype);
     }
     my $results_description;
     if ($mode ne 'autoenroll') {
         $results_description = &results_header_row($rolefilter,$statusmode,
                                                    $context,$permission,$mode,$crstype);
-
         $r->print('<b>'.$results_description.'</b><br /><br />');
     }
     my ($output,$actionselect,%canchange,%canchangesec);
     if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') {
         if ($mode ne 'autoenroll' && $mode ne 'pickauthor') {
             if ($permission->{'cusr'}) {
-                unless (($context eq 'domain') && 
-                        (($setting eq 'course') || ($setting eq 'community'))) {
-                    $actionselect = 
-                        &select_actions($context,$setting,$statusmode,$formname);
-                }
+                $actionselect = &select_actions($context,$setting,$statusmode,$formname);
             }
             $r->print(<<END);
 <input type="hidden" name="srchby"  value="uname" />
@@ -2325,7 +2309,7 @@ END
 END
             if ($actionselect) {
                 $output .= <<"END";
-<div class="LC_left_float"><fieldset><legend><b>$lt{'ac'}</b></legend>
+<div class="LC_left_float"><fieldset><legend>$lt{'ac'}</legend>
 $actionselect
 <br/><br /><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.$formname.actionlist)" /> &nbsp;
 <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.$formname.actionlist)" /><br /><input type="button" value="$lt{'pr'}" onclick="javascript:verify_action('actionlist')" /></fieldset></div>
@@ -2370,7 +2354,7 @@ END
                     }
                 }
             }
-            $output .= '<div class="LC_left_float"><fieldset><legend><b>'.$lt{'link'}.'</b></legend>'.
+            $output .= '<div class="LC_left_float"><fieldset><legend>'.$lt{'link'}.'</legend>'.
                        '<table><tr>';
             my @linkdests = ('aboutme');
             if ($permission->{'cusr'}) {
@@ -2381,6 +2365,7 @@ END
                                          $env{'request.course.sec'})) {
                 push(@linkdests,'track');
             }
+
             $output .= '<td>';
             my $usernamelink = $env{'form.usernamelink'};
             if ($usernamelink eq '') {
@@ -2407,7 +2392,11 @@ END
  <th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th>
             ";
         } else {
-            $output .= "\n".'<th>&nbsp;</th>'."\n";
+            if ($mode eq 'pickauthor') {
+                $output .= "\n".'<th>&nbsp;</th>'."\n";
+            } else { 
+                $output .= "\n".'<th>'.&mt('Count').'</th>'."\n";
+            }
             if ($actionselect) {
                 $output .= '<th>'.&mt('Select').'</th>'."\n";
             }
@@ -2462,13 +2451,9 @@ END
                        time.'_'.rand(1000000000).'.csv';
         unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) {
             $r->log_error("Couldn't open $CSVfilename for output $!");
-            $r->print(
-                '<p class="LC_error">'
-               .&mt('Problems occurred in writing the CSV file.')
-               .' '.&mt('This error has been logged.')
-               .' '.&mt('Please alert your LON-CAPA administrator.')
-               .'</p>'
-            );
+            $r->print(&mt('Problems occurred in writing the CSV file. '
+                         .'This error has been logged. '
+                         .'Please alert your LON-CAPA administrator.'));
             $CSVfile = undef;
         }
         #
@@ -2650,7 +2635,7 @@ END
         if ($clickers!~/\w/) { $clickers='-'; }
         $in{'clicker'} = $clickers; 
 	my $role = $in{'role'};
-        $in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype); 
+        $in{'role'}=&Apache::lonnet::plaintext($sdata->[$index{'role'}],$crstype);
         if (! defined($in{'start'}) || $in{'start'} == 0) {
             $in{'start'} = &mt('none');
         } else {
@@ -2949,7 +2934,6 @@ sub role_type_names {
                          'author' => 'Co-Author Roles',
                          'course' => 'Course Roles',
                          'community' => 'Community Roles',
-
              );
     return %lt;
 }
@@ -3404,7 +3388,6 @@ sub results_header_row {
             }
         } elsif (($env{'form.roletype'} eq 'course') || 
                  ($env{'form.roletype'} eq 'community')) {
-
             my $coursefilter = $env{'form.coursepick'};
             if ($env{'form.roletype'} eq 'course') {
                 if ($coursefilter eq 'category') {
@@ -3657,20 +3640,27 @@ sub print_first_users_upload_form {
     $str .= '<input type="hidden" name="action" value="upload" />';
     $str .= '<input type="hidden" name="state"  value="got_file" />';
 
-
     $str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n";
 
     # Excel and CSV Help
-    $str .= '<div class="LC_left_float">'
+    $str .= '<p>'
            .&Apache::loncommon::help_open_topic("Course_Create_Class_List",
                 &mt("How do I create a users list from a spreadsheet"))
-           .'</div><div class="LC_left_float">'."\n"
+           ."<br />\n"
            .&Apache::loncommon::help_open_topic("Course_Convert_To_CSV",
                 &mt("How do I create a CSV file from a spreadsheet"))
-           .'</div><br clear="all" />'."\n";
+           ."</p>\n";
+
     $str .= &Apache::lonhtmlcommon::start_pick_box()
-           .&Apache::lonhtmlcommon::row_title(&mt('File'))
-           .&Apache::loncommon::upfile_select_html()
+           .&Apache::lonhtmlcommon::row_title(&mt('File'));
+    if (&Apache::lonlocal::current_language() ne 'en') {
+        if ($context eq 'course') { 
+            $str .= '<p class="LC_info">'."\n"
+                   .&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n"
+                   .'</p>'."\n";
+        }
+    }
+    $str .= &Apache::loncommon::upfile_select_html()
            .&Apache::lonhtmlcommon::row_closure()
            .&Apache::lonhtmlcommon::row_title(
                 '<label for="noFirstLine">'
@@ -3747,7 +3737,7 @@ sub upfile_drop_add {
     }
     my ($startdate,$enddate) = &get_dates_from_form();
     if ($env{'form.makedatesdefault'}) {
-        $r->print(&make_dates_default($startdate,$enddate,$context,$crstype);
+        $r->print(&make_dates_default($startdate,$enddate,$context,$crstype));
     }
     # Determine domain and desired host (home server)
     my $defdom=$env{'request.role.domain'};
@@ -3806,7 +3796,7 @@ sub upfile_drop_add {
         } elsif ($setting eq 'course') {
             $defaultrole = $env{'form.courserole'};
             $defaultsec = $env{'form.sections'};
-        }
+        }  
     } elsif ($context eq 'author') {
         $defaultrole = $env{'form.defaultrole'};
     } elsif ($context eq 'course') {
@@ -4158,7 +4148,7 @@ sub upfile_drop_add {
                                         $role = 'cr_'.$env{'user.domain'}.'_'.
                                                 $env{'user.name'}.'_'.$role;
                                     }
-                                    if (($role ne 'cc') && ($role ne 'co')) {
+                                    if (($role ne 'cc') && ($role ne 'co')) { 
                                         if (@secs > 1) {
                                             $multiple = 1;
                                             foreach my $sec (@secs) {
@@ -4817,7 +4807,7 @@ sub setsections_javascript {
                     accr => 'A course coordinator role will be added with access to all sections.',
                     acor => 'A coordinator role will be added with access to all sections',
                     inea => 'In each course, each user may only have one student role at a time.',
-                    inec => 'In each community, each user may only have one member role at a time.',
+                    inec => 'In each community, each user may only have on member role at a time.',
                     youh => 'You had selected ',
                     secs => 'sections.',
                     plmo => 'Please modify your selections so they include no more than one section.',
@@ -5359,7 +5349,7 @@ sub sectioncheck_alerts {
     my %alerts = &Apache::lonlocal::texthash(
                     curd => 'You must select a course or community in the current domain',
                     inea => 'In each course, each user may only have one student role at a time',
-                    inco => 'In each community, each user may only have one member role at a time',
+                    inco => 'In each community, each user may only have one member role at a time', 
                     youh => 'You had selected',
                     sect => 'sections',
                     plsm => 'Please modify your selections so they include no more than one section',