--- loncom/interface/lonuserutils.pm	2010/01/20 20:38:52	1.97.2.9
+++ loncom/interface/lonuserutils.pm	2009/09/05 01:13:02	1.99
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Utility functions for managing LON-CAPA user accounts
 #
-# $Id: lonuserutils.pm,v 1.97.2.9 2010/01/20 20:38:52 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.99 2009/09/05 01:13:02 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -91,7 +91,7 @@ sub modifyuserrole {
     if ($setting eq 'course' || $context eq 'course') {
         $scope = '/'.$cid;
         $scope =~ s/\_/\//g;
-        if (($role ne 'cc') && ($role ne 'co') && ($sec ne '')) {
+        if ($role ne 'cc' && $sec ne '') {
             $scope .='/'.$sec;
         }
     } elsif ($context eq 'domain') {
@@ -235,7 +235,7 @@ sub domain_roles_select {
     # domain context   
     #
     # Role types
-    my @roletypes = ('domain','author','course','community');
+    my @roletypes = ('domain','author','course');
     my %lt = &role_type_names();
     #
     # build up the menu information to be passed to
@@ -247,10 +247,6 @@ sub domain_roles_select {
     foreach my $roletype (@roletypes) {
         # set up the text for this domain
         $select_menus{$roletype}->{'text'}= $lt{$roletype};
-        my $crstype;
-        if ($roletype eq 'community') {
-            $crstype = 'Community';
-        }
         # we want a choice of 'default' as the default in the second menu
         if ($env{'form.roletype'} ne '') {
             $select_menus{$roletype}->{'default'} = $env{'form.showrole'};
@@ -265,7 +261,7 @@ sub domain_roles_select {
             @roles = &construction_space_roles();
         } else {
             my $custom = 1;
-            @roles = &course_roles('domain',undef,$custom,$roletype);
+            @roles = &course_roles('domain',undef,$custom);
         }
         my $order = ['Any',@roles];
         $select_menus{$roletype}->{'order'} = $order; 
@@ -275,15 +271,14 @@ sub domain_roles_select {
                               &mt('Custom role');
             } else {
                 $select_menus{$roletype}->{'select2'}->{$role} = 
-                              &Apache::lonnet::plaintext($role,$crstype);
+                              &Apache::lonnet::plaintext($role);
             }
         }
         $select_menus{$roletype}->{'select2'}->{'Any'} = &mt('Any');
     }
     my $result = &Apache::loncommon::linked_select_forms
         ('studentform',(' 'x3).&mt('Role: '),$env{'form.roletype'},
-         'roletype','showrole',\%select_menus,
-         ['domain','author','course','community']);
+         'roletype','showrole',\%select_menus,['domain','author','course']);
     return $result;
 }
 
@@ -295,7 +290,7 @@ sub hidden_input {
 }
 
 sub print_upload_manager_header {
-    my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype)=@_;
+    my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission)=@_;
     my $javascript;
     #
     if (! exists($env{'form.upfile_associate'})) {
@@ -332,7 +327,7 @@ sub print_upload_manager_header {
     my $javascript_validations =
         &javascript_validations('upload',$krbdefdom,$password_choice,undef,
                                 $env{'request.role.domain'},$context,
-                                $groupslist,$crstype);
+                                $groupslist);
     my $checked=(($env{'form.noFirstLine'})?' checked="checked"':'');
     $r->print('<p>'
              .&mt('Total number of records found in file: [_1]'
@@ -365,7 +360,7 @@ sub print_upload_manager_header {
 ###############################################################
 sub javascript_validations {
     my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,
-        $context,$groupslist,$crstype)=@_;
+        $context,$groupslist)=@_;
     my %param = (
                   kerb_def_dom => $krbdefdom,
                   curr_authtype => $curr_authtype,
@@ -386,11 +381,10 @@ sub javascript_validations {
         if (($context eq 'course') || ($context eq 'domain')) {
             if ($context eq 'course') {
                 if ($env{'request.course.sec'} eq '') {
-                    $setsection_call = 'setSections(document.'.$param{'formname'}."'$crstype'".');';
-
+                    $setsection_call = 'setSections(document.'.$param{'formname'}.');';
                     $setsections_js =
                         &setsections_javascript($param{'formname'},$groupslist,
-                                                $mode,'',$crstype);
+                                                $mode);
                 } else {
                     $setsection_call = "'ok'";
                 }
@@ -749,7 +743,7 @@ ENDPICK
 ###############################################################
 ###############################################################
 sub print_upload_manager_footer {
-    my ($r,$i,$keyfields,$defdom,$today,$halfyear,$context,$permission,$crstype) = @_;
+    my ($r,$i,$keyfields,$defdom,$today,$halfyear,$context,$permission) = @_;
     my $form = 'document.studentform';
     my $formname = 'studentform';
     my ($krbdef,$krbdefdom) =
@@ -767,7 +761,7 @@ sub print_upload_manager_footer {
     my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);
     my $date_table = &date_setting_table(undef,undef,$context,undef,
-                                         $formname,$permission,$crstype);
+                                         $formname,$permission);
 
     my $Str = "\n".'<div class="LC_left_float">';
     $Str .= &hidden_input('nfields',$i);
@@ -831,7 +825,7 @@ sub print_upload_manager_footer {
                .'&nbsp;'.&mt('Add a domain role').'</label>'
                .'&nbsp;&nbsp;&nbsp;<label>'
                .'<input type="radio" name="roleaction" value="course" />'
-               .'&nbsp;'.&mt('Add a course/community role').'</label>'
+               .'&nbsp;'.&mt('Add a course role').'</label>'
                .'</span>';
     } elsif ($context eq 'author') {
         $Str .= &Apache::lonhtmlcommon::row_title(
@@ -866,26 +860,15 @@ sub print_upload_manager_footer {
         my ($cnum,$cdom) = &get_course_identity();
         my $rowtitle = &mt('section');
         my $secbox = &section_picker($cdom,$cnum,'Any',$rowtitle,
-                                     $permission,$context,'upload',$crstype);
+                                     $permission,$context,'upload');
         $Str .= $secbox
                .&Apache::lonhtmlcommon::row_closure();
-        my %lt;
-        if ($crstype eq 'Community') {
-            %lt = &Apache::lonlocal::texthash (
-                    disp => 'Display members with current/future access who are not in the uploaded file',
-                    stus => 'Members selected from this list can be dropped.'
-            );
-        } else {
-            %lt = &Apache::lonlocal::texthash (
-                    disp => 'Display students with current/future access who are not in the uploaded file',
-                    stus => 'Students selected from this list can be dropped.'
-            );
-        }
+
         $Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update'))
-               .'<label><input type="checkbox" name="fullup" value="yes" />'
-               .' '.$lt{'disp'}
+               .'<label><input type="checkbox" name="fullup" value="yes" />'.
+                ' '.&mt('Display students with current/future access who are not in the uploaded file.')
                .'</label><br />'
-               .$lt{'stus'}
+               .&mt('Students selected from this list can be dropped.')
                .&Apache::lonhtmlcommon::row_closure();
     }
     if ($context eq 'course' || $context eq 'domain') {
@@ -900,7 +883,7 @@ sub print_upload_manager_footer {
            .'<hr />';
     if ($context eq 'course') {
         $Str .= '<p class="LC_info">'
-               .&mt('Note: This operation may be time consuming when adding several users.')
+               .&mt('Note: For large courses, this operation may be time consuming.')
                .'</p>';
     }
     $Str .= '<p><input type="button"'
@@ -933,7 +916,7 @@ sub forceid_change {
 ###############################################################
 ###############################################################
 sub print_upload_manager_form {
-    my ($r,$context,$permission,$crstype) = @_;
+    my ($r,$context,$permission) = @_;
     my $firstLine;
     my $datatoken;
     if (!$env{'form.datatoken'}) {
@@ -980,7 +963,7 @@ sub print_upload_manager_form {
         &Apache::loncommon::get_kerberos_defaults($defdom);
     #
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context,
-                                 $permission,$crstype);
+                                 $permission);
     my $i;
     my $keyfields;
     if ($total>=0) {
@@ -1016,7 +999,7 @@ sub print_upload_manager_form {
     }
     $r->print('</div>');
     &print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear,
-                                 $context,$permission,$crstype);
+                                 $context,$permission);
 }
 
 sub setup_date_selectors {
@@ -1090,7 +1073,7 @@ sub get_dates_from_form {
 }
 
 sub date_setting_table {
-    my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission,$crstype) = @_;
+    my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission) = @_;
     my $nolink;
     if ($bulkaction) {
         $nolink = 1;
@@ -1107,13 +1090,9 @@ sub date_setting_table {
             ($env{'form.action'} eq 'upload')) {
             if ($env{'request.course.sec'} eq '') {
                 $dateDefault = '<span class="LC_nobreak">'.
-                    '<label><input type="checkbox" name="makedatesdefault" value="1" /> ';
-                if ($crstype eq 'Community') {
-                    $dateDefault .= &mt("make these dates the default access dates for future community enrollment");
-                } else {
-                    $dateDefault .= &mt("make these dates the default access dates for future course enrollment");
-                }
-                $dateDefault .= '</label></span>';
+                    '<label><input type="checkbox" name="makedatesdefault" value="1" /> '.
+                    &mt('make these dates the default access dates for future student enrollment').
+                    '</label></span>';
             }
         }
     }
@@ -1142,7 +1121,7 @@ sub date_setting_table {
 }
 
 sub make_dates_default {
-    my ($startdate,$enddate,$context,$crstype = @_;
+    my ($startdate,$enddate,$context) = @_;
     my $result = '';
     if ($context eq 'course') {
         my ($cnum,$cdom) = &get_course_identity();
@@ -1150,34 +1129,26 @@ sub make_dates_default {
                 {'default_enrollment_start_date'=>$startdate,
                  'default_enrollment_end_date'  =>$enddate},$cdom,$cnum);
         if ($put_result eq 'ok') {
-            if ($crstype eq 'Community') {
-                $result .= &mt('Set default start and end access dates for community.');
-            } else {
-                $result .= &mt('Set default start and end access dates for course.');
-            }
-            $result .= '<br />'."\n";
+            $result .= &mt('Set default start and end access dates for course.').
+                       '<br />'."\n";
             #
             # Refresh the course environment
             &Apache::lonnet::coursedescription($env{'request.course.id'},
                                                {'freshen_cache' => 1});
         } else {
-            if ($crstype eq 'Community') {
-                $result .= &mt('Unable to set default access dates for community');
-            } else {
-                $result .= &mt('Unable to set default access dates for course');
-            }
-            $result .= ':'.$put_result.'<br />';
+            $result .= &mt('Unable to set default access dates for course.').":".$put_result.
+                       '<br />';
         }
     }
     return $result;
 }
 
 sub default_role_selector {
-    my ($context,$checkpriv,$crstype) = @_;
+    my ($context,$checkpriv) = @_;
     my %customroles;
     my ($options,$coursepick,$cb_jscript);
     if ($context ne 'author') {
-        %customroles = &my_custom_roles($crstype);
+        %customroles = &my_custom_roles();
     }
 
     my %lt=&Apache::lonlocal::texthash(
@@ -1189,7 +1160,7 @@ sub default_role_selector {
     $options = '<select name="defaultrole">'."\n".
                ' <option value="">'.&mt('Please select').'</option>'."\n"; 
     if ($context eq 'course') {
-        $options .= &default_course_roles($context,$checkpriv,$crstype,%customroles);
+        $options .= &default_course_roles($context,$checkpriv,%customroles);
     } elsif ($context eq 'author') {
         my @roles = &construction_space_roles($checkpriv);
         foreach my $role (@roles) {
@@ -1203,18 +1174,18 @@ sub default_role_selector {
            $options .= '  <option value="'.$role.'">'.$plrole.'</option>';
         }
         my $courseform = &Apache::loncommon::selectcourse_link
-            ('studentform','dccourse','dcdomain','coursedesc',"$env{'request.role.domain'}",undef,'Course/Community');
+            ('studentform','dccourse','dcdomain','coursedesc',"$env{'request.role.domain'}",undef,'Course');
         $cb_jscript = 
-            &Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'},'currsec','studentform','courserole','Course/Community');
+            &Apache::loncommon::coursebrowser_javascript($env{'request.role.domain'},'currsec','studentform');
         $coursepick = &Apache::loncommon::start_data_table().
                       &Apache::loncommon::start_data_table_header_row().
                       '<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th>'.
                       '<th>'.$lt{'grs'}.'</th>'.
                       &Apache::loncommon::end_data_table_header_row().
                       &Apache::loncommon::start_data_table_row()."\n".
-                      '<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc','','','','crstype'".')" /></td>'."\n".
+                      '<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".
                       '<td><select name="courserole">'."\n".
-                      &default_course_roles($context,$checkpriv,'Course',%customroles)."\n".
+                      &default_course_roles($context,$checkpriv,%customroles)."\n".
                       '</select></td><td>'.
                       '<table class="LC_createuser">'.
                       '<tr class="LC_section_row"><td valign"top">'.
@@ -1230,7 +1201,6 @@ sub default_role_selector {
                       $env{'request.role.domain'}.'" />'.
                       '<input type="hidden" name="dccourse" value="" />'.
                       '<input type="hidden" name="dcdomain" value="" />'.
-                      '<input type="hidden" name="crstype" value="" />'.
                       '</td></tr></table></td>'.
                       &Apache::loncommon::end_data_table_row().
                       &Apache::loncommon::end_data_table()."\n";
@@ -1240,13 +1210,13 @@ sub default_role_selector {
 }
 
 sub default_course_roles {
-    my ($context,$checkpriv,$crstype,%customroles) = @_;
+    my ($context,$checkpriv,%customroles) = @_;
     my $output;
     my $custom = 1;
-    my @roles = &course_roles($context,$checkpriv,$custom,lc($crstype));
+    my @roles = &course_roles($context,$checkpriv,$custom);
     foreach my $role (@roles) {
         if ($role ne 'cr') {
-            my $plrole=&Apache::lonnet::plaintext($role,$crstype);
+            my $plrole=&Apache::lonnet::plaintext($role);
             $output .= '  <option value="'.$role.'">'.$plrole.'</option>';
         }
     }
@@ -1295,14 +1265,8 @@ sub domain_roles {
 }
 
 sub course_roles {
-    my ($context,$checkpriv,$custom,$roletype) = @_;
-    my $crstype;
-    if ($roletype eq 'community') {
-        $crstype = 'Community' ;
-    } else {
-        $crstype = 'Course';
-    }
-    my @allroles = &roles_by_context('course',$custom,$crstype);
+    my ($context,$checkpriv,$custom) = @_;
+    my @allroles = &roles_by_context('course',$custom);
     my @roles;
     if ($context eq 'domain') {
         @roles = @allroles;
@@ -1313,7 +1277,7 @@ sub course_roles {
                     if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) {
                         push(@roles,$role);
                     } else {
-                        if ((($role ne 'cc') && ($role ne 'co')) && ($env{'request.course.sec'} ne '')) {
+                        if ($role ne 'cc' && $env{'request.course.sec'} ne '') {
                             if (&Apache::lonnet::allowed('c'.$role,
                                              $env{'request.course.id'}.'/'.
                                              $env{'request.course.sec'})) {
@@ -1331,19 +1295,19 @@ sub course_roles {
 }
 
 sub curr_role_permissions {
-    my ($context,$setting,$checkpriv,$type) = @_; 
+    my ($context,$setting,$checkpriv) = @_; 
     my $custom = 1;
     my @roles;
     if ($context eq 'author') {
         @roles = &construction_space_roles($checkpriv);
     } elsif ($context eq 'domain') {
         if ($setting eq 'course') {
-            @roles = &course_roles($context,$checkpriv,$custom,$type); 
+            @roles = &course_roles($context,$checkpriv,$custom); 
         } else {
             @roles = &domain_roles($checkpriv);
         }
     } elsif ($context eq 'course') {
-        @roles = &course_roles($context,$checkpriv,$custom,$type);
+        @roles = &course_roles($context,$checkpriv,$custom);
     }
     return @roles;
 }
@@ -1351,14 +1315,10 @@ sub curr_role_permissions {
 # ======================================================= Existing Custom Roles
 
 sub my_custom_roles {
-    my ($crstype) = @_;
     my %returnhash=();
     my %rolehash=&Apache::lonnet::dump('roles');
-    foreach my $key (keys(%rolehash)) {
+    foreach my $key (keys %rolehash) {
         if ($key=~/^rolesdef\_(\w+)$/) {
-            if ($crstype eq 'Community') {
-                next if ($rolehash{$key} =~ /bre\&S/); 
-            }
             $returnhash{$1}=$1;
         }
     }
@@ -1447,46 +1407,26 @@ 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);
-    if (($context eq 'domain') && 
-        ($env{'form.roletype'} eq 'course') ||
-        ($env{'form.roletype'} eq 'community')) {
-        my ($crstype,$numcodes,$title,$warning);
-        if ($env{'form.roletype'} eq 'course') {
-            $crstype = 'Course';
-            $numcodes = $totcodes;
-            $title = &mt('Select Courses');
-            $warning = &mt('Warning: data retrieval for multiple courses can take considerable time, as this operation is not currently optimized.');
-        } elsif ($env{'form.roletype'} eq 'community') {
-            $crstype = 'Community';
-            $numcodes = 0;
-            $title = &mt('Select Communities');
-            $warning = &mt('Warning: data retrieval for multiple communities can take considerable time, as this operation is not currently optimized.');
-        }
+    my (%userlist,%userinfo);
+    if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
         my $courseform =
-            &Apache::lonhtmlcommon::course_selection($formname,$numcodes,
-                            $codetitles,$idlist,$idlist_titles,$crstype);
+            &Apache::lonhtmlcommon::course_selection($formname,$totcodes,
+                                         $codetitles,$idlist,$idlist_titles);
         $r->print('<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n".
                   &Apache::lonhtmlcommon::start_pick_box()."\n".
-                  &Apache::lonhtmlcommon::row_title($title,'LC_oddrow_value')."\n".
+                  &Apache::lonhtmlcommon::row_title(&mt('Select Course(s)'),
+                                                    'LC_oddrow_value')."\n".
                   $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')).
-                  "\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)) {
+                  '<p>'.&list_submit_button(&mt('Update Display')).
+                  "\n".'</p><span class="LC_warning">'.&mt('Warning: data retrieval for multiple courses can take considerable time, as this operation is not currently optimized.').'</span>'."\n");
+        if ($env{'form.coursepick'}) {
             $r->print('<hr />'.&mt('Searching').' ...<br />&nbsp;<br />');
         }
     } else {
@@ -1560,7 +1500,7 @@ sub print_userlist {
                     }
                 }
             } elsif ($env{'form.roletype'} eq 'course') {
-                if (($env{'form.coursepick'}) && (!$clearcoursepick)) {
+                if ($env{'form.coursepick'}) {
                     my %courses = &process_coursepick();
                     my %allusers;
                     my $hidepriv = 1;
@@ -1571,8 +1511,7 @@ sub print_userlist {
                         my (@roles,@sections,%access,%users,%userdata,
                             %statushash);
                         if ($env{'form.showrole'} eq 'Any') {
-                            @roles = &course_roles($context,undef,$custom,
-                                                   $env{'form.roletype'});
+                            @roles = &course_roles($context,undef,$custom);
                         } else {
                             @roles = ($env{'form.showrole'});
                         }
@@ -1618,8 +1557,6 @@ sub print_userlist {
                 $r->print(&mt('There are no authors or co-authors to display.')."\n");
             } elsif ($env{'form.roletype'} eq 'course') {
                 $r->print(&mt('There are no course users to display')."\n"); 
-            } elsif ($env{'form.roletype'} eq 'community') {
-                $r->print(&mt('There are no community users to display')."\n");
             }
         } elsif ($context eq 'course') {
             $r->print(&mt('There are no course users to display.')."\n");
@@ -1662,16 +1599,7 @@ sub role_filter {
         $role_select = '<select name="showrole">'."\n".
                        '<option value="Any" '.$roleselected.'>'.
                        &mt('Any role').'</option>';
-        my ($roletype,$crstype);
-        if ($context eq 'course') {
-            $crstype = &Apache::loncommon::course_type();
-            if ($crstype eq 'Community') {
-                $roletype = 'community';
-            } else {
-                $roletype = 'course';
-            } 
-        }
-        my @poss_roles = &curr_role_permissions($context,'','',$roletype);
+        my @poss_roles = &curr_role_permissions($context);
         foreach my $role (@poss_roles) {
             $roleselected = '';
             if ($role eq $env{'form.showrole'}) {
@@ -1681,7 +1609,7 @@ sub role_filter {
             if ($role eq 'cr') {
                 $plrole = &mt('Custom role');
             } else {
-                $plrole=&Apache::lonnet::plaintext($role,$crstype);
+                $plrole=&Apache::lonnet::plaintext($role);
             }
             $role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>';
         }
@@ -1717,7 +1645,7 @@ sub section_group_filter {
             $env{'form.'.$name{$item}} = 'all';
         }
         if ($item eq 'sec') {
-            if (($env{'form.showrole'} eq 'cc') || ($env{'form.showrole'} eq 'co')) {
+            if ($env{'form.showrole'} eq 'cc') {
                 $env{'form.'.$name{$item}} = 'none';
             }
             my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
@@ -1796,8 +1724,7 @@ sub gather_userinfo {
                                            $indexhash,$uniqid,$userlist);
                     }
                 }
-            } elsif (($env{'form.roletype'} eq 'course') || 
-                     ($env{'form.roletype'} eq 'community')) {
+            } elsif ($env{'form.roletype'} eq 'course') {
                 ($userdata{'username'},$userdata{'domain'},$userdata{'role'}) =
                     split(/:/,$item);
                 if (ref($rolehash->{$item}) eq 'HASH') {
@@ -1847,8 +1774,7 @@ sub gather_userinfo {
 sub build_user_record {
     my ($context,$userdata,$userinfo,$indexhash,$record_key,$userlist) = @_;
     next if ($userdata->{'start'} eq '-1' && $userdata->{'end'} eq '-1');
-    if (!(($context eq 'domain') && (($env{'form.roletype'} eq 'course')
-                             && ($env{'form.roletype'} eq 'community')))) {
+    if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) {
         &process_date_info($userdata);
     }
     my $username = $userdata->{'username'};
@@ -1963,17 +1889,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'});
@@ -2117,10 +2039,9 @@ sub show_users_list {
         $sortby = 'username';
     }
     my $setting = $env{'form.roletype'};
-    my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$crstype);
+    my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers);
     if ($context eq 'course') {
         $cid = $env{'request.course.id'};
-        $crstype = &Apache::loncommon::course_type();
         ($cnum,$cdom) = &get_course_identity($cid);
         ($classgroups) = &Apache::loncoursedata::get_group_memberships(
                                      $userlist,$keylist,$cdom,$cnum);
@@ -2155,12 +2076,6 @@ function photowindow(photolink) {
 <input type="hidden" name="displayclickers" value="$displayclickers" />
 END
         }
-    } elsif ($context eq 'domain') {
-        if ($setting eq 'community') {
-            $crstype = 'Community';
-        } elsif ($setting eq 'course') {
-            $crstype = 'Course';
-        }
     }
     if ($mode ne 'autoenroll' && $mode ne 'pickauthor') {
         my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript();
@@ -2257,8 +2172,6 @@ END
                       );
     if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
         $lt{'extent'} = &mt('Course(s): description, section(s), status');
-    } elsif ($context eq 'domain' && $env{'form.roletype'} eq 'community') {
-        $lt{'extent'} = &mt('Communities: description, section(s), status');
     } elsif ($context eq 'author') {
         $lt{'extent'} = &mt('Author'); 
     }
@@ -2270,21 +2183,18 @@ END
         if ($context eq 'course') {
             push(@cols,'section');
         }
-        if (!($context eq 'domain' && ($env{'form.roletype'} eq 'course')
-                              && ($env{'form.roletype'} eq 'community'))) {
+        if (!($context eq 'domain' && $env{'form.roletype'} eq 'course')) { 
             push(@cols,('start','end'));
         }
         if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') {
             push(@cols,'role');
         }
         if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' ||
-                                    $env{'form.roletype'} eq 'course' ||
-                                    $env{'form.roletype'} eq 'community')) {
+                                    $env{'form.roletype'} eq 'course')) {
             push (@cols,'extent');
         }
-        if (($statusmode eq 'Any') &&
-            (!($context eq 'domain' && (($env{'form.roletype'} eq 'course')
-             || ($env{'form.roletype'} eq 'community'))))) {
+        if (($statusmode eq 'Any') && 
+            (!($context eq 'domain' && $env{'form.roletype'} eq 'course'))) {
             push(@cols,'status');
         }
         if ($context eq 'course') {
@@ -2302,19 +2212,14 @@ END
     my $results_description;
     if ($mode ne 'autoenroll') {
         $results_description = &results_header_row($rolefilter,$statusmode,
-                                                   $context,$permission,$mode,$crstype);
-
+                                                   $context,$permission,$mode);
         $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 +2230,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>
@@ -2334,9 +2239,9 @@ END
                 if ($env{'form.showrole'} eq 'Any') {
                     my $custom = 1;
                     if ($context eq 'domain') {
-                        @allroles = &roles_by_context($setting,$custom,$crstype);
+                        @allroles = &roles_by_context($setting,$custom);
                     } else {
-                        @allroles = &roles_by_context($context,$custom,$crstype);
+                        @allroles = &roles_by_context($context,$custom);
                     }
                 } else {
                     @allroles = ($env{'form.showrole'});
@@ -2370,7 +2275,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 +2286,7 @@ END
                                          $env{'request.course.sec'})) {
                 push(@linkdests,'track');
             }
+
             $output .= '<td>';
             my $usernamelink = $env{'form.usernamelink'};
             if ($usernamelink eq '') {
@@ -2407,7 +2313,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";
             }
@@ -2538,8 +2448,7 @@ END
                 }
             } elsif ($env{'form.roletype'} eq 'author') {
                 ($uname,$udom,$role) = split(/:/,$user,-1);
-            } elsif (($env{'form.roletype'} eq 'course') || 
-                     ($env{'form.roletype'} eq 'community')) {
+            } elsif ($env{'form.roletype'} eq 'course') {
                 ($uname,$udom,$role) = split(/:/,$user);
             }
         } else {
@@ -2646,7 +2555,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'}]); 
         if (! defined($in{'start'}) || $in{'start'} == 0) {
             $in{'start'} = &mt('none');
         } else {
@@ -2944,8 +2853,6 @@ sub role_type_names {
                          'domain' => 'Domain Roles',
                          'author' => 'Co-Author Roles',
                          'course' => 'Course Roles',
-                         'community' => 'Community Roles',
-
              );
     return %lt;
 }
@@ -3082,7 +2989,7 @@ ENDTWO
 }
 
 sub date_section_selector {
-    my ($context,$permission,$crstype) = @_;
+    my ($context,$permission) = @_;
     my $callingform = $env{'form.callingform'};
     my $formname = 'dateselect';  
     my $groupslist = &get_groupslist();
@@ -3107,7 +3014,7 @@ END
         } else {
             opener.document.$callingform.retainsec.value = formname.retainsec.value;
         }
-        setSections(formname,'$crstype');
+        setSections(formname);
         if (seccheck == 'ok') {
             opener.document.$callingform.newsecs.value = formname.sections.value;
         }
@@ -3167,7 +3074,7 @@ ENDJS
                  fors => 'For student roles changing the section, will result in a section switch as students may only be in one section of a course at a time.',
                  forn => 'For a role in a course that is not a student role, a user may have roles in more than one section of a course at a time.',
                  reta => "Retain each user's current section affiliations?", 
-                 dnap => '(Does not apply to student roles).',
+                 dnap => '(Does not apply to student roles).', 
             );
     my ($date_items,$headertext);
     if ($env{'form.bulkaction'} eq 'chgsec') {
@@ -3181,19 +3088,13 @@ ENDJS
         }
         $date_items = &date_setting_table($starttime,undef,$context,
                                           $env{'form.bulkaction'},$formname,
-                                          $permission,$crstype);
+                                          $permission);
     }
     $output .= '<h3>'.$headertext.'</h3>'.
                '<form name="'.$formname.'" method="post">'."\n".
                 $date_items;
     if ($context eq 'course' && $env{'form.bulkaction'} eq 'chgsec') {
         my ($cnum,$cdom) = &get_course_identity();
-        my $crstype = &Apache::loncommon::course_type();
-        if ($crstype eq 'Community') {
-            $lt{'fors'} = &mt('For member roles changing the section, will result in a section switch as members may only be in one section of a community at a time.');
-            $lt{'forn'} = &mt('For a role in a community that is not a member role, a user may have roles in more than one section of a community at a time.');
-            $lt{'dnap'} = &mt('(Does not apply to member roles).'); 
-        }
         my $info;
         if ($env{'form.showrole'} eq 'st') {
             $output .= '<p>'.$lt{'fors'}.'</p>'; 
@@ -3219,7 +3120,7 @@ ENDJS
             $info = '<input type="hidden" name="retainsec" value="0" />'; 
         }
         my $rowtitle = &mt('New section to assign');
-        my $secbox = &section_picker($cdom,$cnum,$env{'form.showrole'},$rowtitle,$permission,$context,'',$crstype);
+        my $secbox = &section_picker($cdom,$cnum,$env{'form.showrole'},$rowtitle,$permission,$context);
         $output .= $info.$secbox;
     }
     $output .= '<p>'.
@@ -3229,13 +3130,13 @@ ENDJS
 }
 
 sub section_picker {
-    my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode,$crstype) = @_;
+    my ($cdom,$cnum,$role,$rowtitle,$permission,$context,$mode) = @_;
     my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
     my $sections_select .= &course_sections(\%sections_count,$role);
     my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n";
     if ($mode eq 'upload') {
         my ($options,$cb_script,$coursepick) =
-            &default_role_selector($context,1,$crstype);
+            &default_role_selector($context,1);
         $secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value').
                    $options. &Apache::lonhtmlcommon::row_closure(1)."\n";
     }
@@ -3259,50 +3160,26 @@ sub section_picker {
 }
 
 sub results_header_row {
-    my ($rolefilter,$statusmode,$context,$permission,$mode,$crstype) = @_;
+    my ($rolefilter,$statusmode,$context,$permission,$mode) = @_;
     my ($description,$showfilter);
     if ($rolefilter ne 'Any') {
         $showfilter = $rolefilter;
     }
     if ($context eq 'course') {
         if ($mode eq 'csv' || $mode eq 'excel') {
-            if ($crstype eq 'Community') {
-                $description = &mt('Community - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' ';
-            } else {
-                $description = &mt('Course - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' ';
-            }
+            $description = &mt('Course - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' ';
         }
         if ($statusmode eq 'Expired') {
-            if ($crstype eq 'Community') {
-                $description .= &mt('Users in community with expired [_1] roles',$showfilter);
-            } else {
-                $description .= &mt('Users in course with expired [_1] roles',$showfilter);
-            }
+            $description .= &mt('Users in course with expired [_1] roles',$showfilter);
         } elsif ($statusmode eq 'Future') {
-            if ($crstype eq 'Community') {
-                $description .= &mt('Users in community with future [_1] roles',$showfilter);
-            } else {
-                $description .= &mt('Users in course with future [_1] roles',$showfilter);
-            }
+            $description .= &mt('Users in course with future [_1] roles',$showfilter);
         } elsif ($statusmode eq 'Active') {
-            if ($crstype eq 'Community') {
-                $description .= &mt('Users in community with active [_1] roles',$showfilter);
-            } else {
-                $description .= &mt('Users in course with active [_1] roles',$showfilter);
-            }
+            $description .= &mt('Users in course with active [_1] roles',$showfilter);
         } else {
             if ($rolefilter eq 'Any') {
-                if ($crstype eq 'Community') {
-                    $description .= &mt('All users in community');
-                } else {
-                    $description .= &mt('All users in course');
-                }
+                $description .= &mt('All users in course');
             } else {
-                if ($crstype eq 'Community') {
-                    $description .= &mt('All users in community with [_1] roles',$rolefilter);
-                } else {
-                    $description .= &mt('All users in course with [_1] roles',$rolefilter);
-                }
+                $description .= &mt('All users in course with [_1] roles',$rolefilter);
             }
         }
         my $constraint;
@@ -3310,7 +3187,7 @@ sub results_header_row {
         if ($viewablesec ne '') {
             if ($env{'form.showrole'} eq 'st') {
                 $constraint = &mt('only users in section "[_1]"',$viewablesec);
-            } elsif (($env{'form.showrole'} ne 'cc') && ($env{'form.showrole'} ne 'co')) {
+            } elsif ($env{'form.showrole'} ne 'cc') {
                 $constraint = &mt('only users affiliated with no section or section "[_1]"',$viewablesec);
             }
             if (($env{'form.grpfilter'} ne 'all') && ($env{'form.grpfilter'} ne '')) {
@@ -3398,29 +3275,19 @@ sub results_header_row {
                     $description .= &mt('All co-authors in domain  with [_1] roles',$rolefilter);
                 }
             }
-        } elsif (($env{'form.roletype'} eq 'course') || 
-                 ($env{'form.roletype'} eq 'community')) {
-
+        } elsif ($env{'form.roletype'} eq 'course') {
             my $coursefilter = $env{'form.coursepick'};
-            if ($env{'form.roletype'} eq 'course') {
-                if ($coursefilter eq 'category') {
-                    my $instcode = &instcode_from_coursefilter();
-                    if ($instcode eq '.') {
-                        $description .= &mt('All courses in domain').' - ';
-                    } else {
-                        $description .= &mt('Courses in domain with institutional code: [_1]',$instcode).' - ';
-                    }
-                } elsif ($coursefilter eq 'selected') {
-                    $description .= &mt('Selected courses in domain').' - ';
-                } elsif ($coursefilter eq 'all') {
+            if ($coursefilter eq 'category') {
+                my $instcode = &instcode_from_coursefilter();
+                if ($instcode eq '.') {
                     $description .= &mt('All courses in domain').' - ';
+                } else {
+                    $description .= &mt('Courses in domain with institutional code: [_1]',$instcode).' - ';
                 }
-            } elsif ($env{'form.roletype'} eq 'community') {
-                if ($coursefilter eq 'selected') {
-                    $description .= &mt('Selected communities in domain').' - ';
-                } elsif ($coursefilter eq 'all') {
-                    $description .= &mt('All communities in domain').' - ';
-                }
+            } elsif ($coursefilter eq 'selected') {
+                $description .= &mt('Selected courses in domain').' - ';
+            } elsif ($coursefilter eq 'all') {
+                $description .= &mt('All courses in domain').' - ';
             }
             if ($statusmode eq 'Expired') {
                 $description .= &mt('users with expired [_1] roles',$showfilter);
@@ -3457,7 +3324,7 @@ sub viewable_section {
 #################################################
 #################################################
 sub show_drop_list {
-    my ($r,$classlist,$nosort,$permission,$crstype) = @_;
+    my ($r,$classlist,$nosort,$permission) = @_;
     my $cid = $env{'request.course.id'};
     my ($cnum,$cdom) = &get_course_identity($cid);
     if (! exists($env{'form.sortby'})) {
@@ -3503,11 +3370,7 @@ END
         }
     }
     if (!$studentcount) {
-        if ($crstype eq 'Community') {
-            $r->print(&mt('There are no members to drop.'));
-        } else {
-            $r->print(&mt('There are no students to drop.'));
-        }
+        $r->print(&mt('There are no students to drop.'));
         return;
     }
     my ($classgroups) = &Apache::loncoursedata::get_group_memberships(
@@ -3515,16 +3378,11 @@ END
     my %lt=&Apache::lonlocal::texthash('usrn'   => "username",
                                        'dom'    => "domain",
                                        'sn'     => "student name",
-                                       'mn'     => "member name",
                                        'sec'    => "section",
                                        'start'  => "start date",
                                        'end'    => "end date",
                                        'groups' => "active groups",
                                       );
-    my $nametitle = $lt{'sn'};
-    if ($crstype eq 'Community') {
-        $nametitle = $lt{'mn'};
-    }
     if ($nosort) {
         $r->print(&Apache::loncommon::start_data_table().
                   &Apache::loncommon::start_data_table_header_row());
@@ -3533,7 +3391,7 @@ END
     <th>$lt{'usrn'}</th>
     <th>$lt{'dom'}</th>
     <th>ID</th>
-    <th>$nametitle</th>
+    <th>$lt{'sn'}</th>
     <th>$lt{'sec'}</th>
     <th>$lt{'start'}</th>
     <th>$lt{'end'}</th>
@@ -3552,7 +3410,7 @@ END
     </th><th>
        <a href="/adm/createuser?action=$action&sortby=id">ID</a>
     </th><th>
-       <a href="/adm/createuser?action=$action&sortby=fullname">$nametitle</a>
+       <a href="/adm/createuser?action=$action&sortby=fullname">$lt{'sn'}</a>
     </th><th>
        <a href="/adm/createuser?action=$action&sortby=section">$lt{'sec'}</a>
     </th><th>
@@ -3622,14 +3480,9 @@ END
     $r->print(&Apache::loncommon::end_data_table().'<br />');
     %lt=&Apache::lonlocal::texthash(
                        'dp'   => "Drop Students",
-                       'dm'   => "Drop Members",
                        'ca'   => "check all",
                        'ua'   => "uncheck all",
                                        );
-    my $btn = $lt{'dp'};
-    if ($crstype eq 'Community') {
-        $btn = $lt{'dm'}; 
-    }
     $r->print(<<"END");
 </p>
 <p>
@@ -3637,7 +3490,7 @@ END
 <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)" />
 </p>
 <p>
-<input type="submit" value="$btn" />
+<input type="submit" value="$lt{'dp'}" />
 </p>
 END
     return;
@@ -3651,21 +3504,24 @@ sub print_first_users_upload_form {
     my $str;
     $str  = '<input type="hidden" name="phase" value="two" />';
     $str .= '<input type="hidden" name="action" value="upload" />';
-    $str .= '<input type="hidden" name="state"  value="got_file" />';
-
+    $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'))
+           .'<p class="LC_info">'."\n"
+           .&mt('Please upload an UTF8 encoded file to ensure a correct character encoding in your classlist.')."\n"
+           .'</p>'."\n"
            .&Apache::loncommon::upfile_select_html()
            .&Apache::lonhtmlcommon::row_closure()
            .&Apache::lonhtmlcommon::row_title(
@@ -3728,22 +3584,9 @@ sub upfile_drop_add {
                                                 'domain_choice' => 'scalar',
                                                 'inststatus_choice' => 'scalar'});
     #
-    my ($cid,$crstype,$setting);
-    if ($context eq 'domain') {
-        $setting = $env{'form.roleaction'};
-    }
-    if ($env{'request.course.id'} ne '') {
-        $cid = $env{'request.course.id'};
-        $crstype = &Apache::loncommon::course_type();
-    } elsif ($setting eq 'course') {
-        if (&Apache::lonnet::is_course($env{'form.dcdomain'},$env{'form.dccourse'})) {
-            $cid = $env{'form.dcdomain'}.'_'.$env{'form.dccourse'};
-            $crstype = &Apache::loncommon::course_type($cid);
-        }
-    }
     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));
     }
     # Determine domain and desired host (home server)
     my $defdom=$env{'request.role.domain'};
@@ -3795,20 +3638,28 @@ sub upfile_drop_add {
             $amode = ''; # This causes the loop below to be skipped
         }
     }
-    my ($defaultsec,$defaultrole);
+    my ($cid,$defaultsec,$defaultrole,$setting);
     if ($context eq 'domain') {
+        $setting = $env{'form.roleaction'};
         if ($setting eq 'domain') {
             $defaultrole = $env{'form.defaultrole'};
         } elsif ($setting eq 'course') {
             $defaultrole = $env{'form.courserole'};
             $defaultsec = $env{'form.sections'};
-        }
+        }  
     } elsif ($context eq 'author') {
         $defaultrole = $env{'form.defaultrole'};
     } elsif ($context eq 'course') {
         $defaultrole = $env{'form.defaultrole'};
         $defaultsec = $env{'form.sections'};
     }
+    if ($env{'request.course.id'} ne '') {
+        $cid = $env{'request.course.id'};
+    } elsif ($setting eq 'course') {
+        if (&Apache::lonnet::is_course($env{'form.dcdomain'},$env{'form.dccourse'})) {
+            $cid = $env{'form.dcdomain'}.'_'.$env{'form.dccourse'};
+        }
+    }
     # Check to see if user information can be changed
     my @userinfo = ('firstname','middlename','lastname','generation',
                     'permanentemail','id');
@@ -3821,10 +3672,10 @@ sub upfile_drop_add {
     }
     my (%userlist,%modifiable_fields,@poss_roles);
     my $secidx = &Apache::loncoursedata::CL_SECTION();
-    my @courseroles = &roles_by_context('course',1,$crstype);
+    my @courseroles = &roles_by_context('course',1);
     if (!&Apache::lonnet::allowed('mau',$domain)) {
         if ($context eq 'course' || $context eq 'author') {
-            @poss_roles =  &curr_role_permissions($context,'','',$crstype);
+            @poss_roles =  &curr_role_permissions($context);
             my @statuses = ('active','future');
             my ($indexhash,$keylist) = &make_keylist_array();
             my %info;
@@ -3910,9 +3761,8 @@ sub upfile_drop_add {
             }
         }
         my (%curr_rules,%got_rules,%alerts);
-        my %customroles = &my_custom_roles($crstype);
-        my @permitted_roles = 
-            &roles_on_upload($context,$setting,$crstype,%customroles); 
+        my %customroles = &my_custom_roles();
+        my @permitted_roles = &roles_on_upload($context,$setting,%customroles); 
         # Get new users list
         foreach my $line (@userdata) {
             my @secs;
@@ -4154,7 +4004,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') { 
                                         if (@secs > 1) {
                                             $multiple = 1;
                                             foreach my $sec (@secs) {
@@ -4355,24 +4205,14 @@ sub user_change_result {
 
 # ========================================================= Menu Phase Two Drop
 sub print_drop_menu {
-    my ($r,$context,$permission,$crstype) = @_;
-    my $heading;
-    if ($crstype eq 'Community') {
-        $heading = &mt("Drop Members");
-    } else {
-        $heading = &mt("Drop Students");
-    }
-    $r->print('<h3>'.$heading.'</h3>'."\n".
+    my ($r,$context,$permission) = @_;
+    $r->print('<h3>'.&mt("Drop Students").'</h3>'."\n".
               '<form name="studentform" method="post">'."\n");
     my $classlist = &Apache::loncoursedata::get_classlist();
     if (! defined($classlist)) {
-        if ($crstype eq 'Community') {
-            $r->print(&mt('There are no members currently enrolled.')."\n");
-        } else {
-            $r->print(&mt('There are no students currently enrolled.')."\n");
-        }
+        $r->print(&mt('There are no students currently enrolled.')."\n");
     } else {
-        &show_drop_list($r,$classlist,'nosort',$permission,$crstype);
+        &show_drop_list($r,$classlist,'nosort',$permission);
     }
     $r->print('</form>'. &Apache::loncommon::end_page());
     return;
@@ -4384,10 +4224,6 @@ sub update_user_list {
     my ($r,$context,$setting,$choice) = @_;
     my $now = time;
     my $count=0;
-    my $crstype;
-    if ($context eq 'course') {
-        $crstype = &Apache::loncommon::course_type();
-    }
     my @changelist;
     if ($choice eq 'drop') {
         @changelist = &Apache::loncommon::get_env_multiple('form.droplist');
@@ -4458,7 +4294,7 @@ sub update_user_list {
                 }
             }
         }
-        my $plrole = &Apache::lonnet::plaintext($role,$crstype);
+        my $plrole = &Apache::lonnet::plaintext($role);
         my $start = $env{'form.'.$item.'_start'};
         my $end = $env{'form.'.$item.'_end'};
         if ($choice eq 'drop') {
@@ -4515,7 +4351,7 @@ sub update_user_list {
                 }
             } elsif ($choice eq 'chgsec') {
                 my (@newsecs,$revresult,$nochg,@retained);
-                if (($role ne 'cc') && ($role ne 'co')) {
+                if ($role ne 'cc') {
                     @newsecs = split(/,/,$env{'form.newsecs'});
                 }
                 # remove existing section if not to be retained.   
@@ -4623,7 +4459,7 @@ sub update_user_list {
     }
     if ($env{'form.makedatesdefault'}) {
         if ($choice eq 'chgdates' || $choice eq 'reenable' || $choice eq 'activate') {
-            $r->print(&make_dates_default($startdate,$enddate,$context,$crstype));
+            $r->print(&make_dates_default($startdate,$enddate,$context));
         }
     }
     my $linktext = &mt('Display User Lists');
@@ -4770,7 +4606,7 @@ sub get_groupslist {
 }
 
 sub setsections_javascript {
-    my ($formname,$groupslist,$mode,$checkauth,$crstype) = @_;
+    my ($formname,$groupslist,$mode,$checkauth) = @_;
     my ($checkincluded,$finish,$rolecode,$setsection_js);
     if ($mode eq 'upload') {
         $checkincluded = 'formname.name == "'.$formname.'"';
@@ -4809,11 +4645,8 @@ sub setsections_javascript {
     }
     my %alerts = &Apache::lonlocal::texthash(
                     secd => 'Section designations do not apply to Course Coordinator roles.',
-                    sedn => 'Section designations do not apply to Coordinator roles.',
                     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.',
                     youh => 'You had selected ',
                     secs => 'sections.',
                     plmo => 'Please modify your selections so they include no more than one section.',
@@ -4824,7 +4657,7 @@ sub setsections_javascript {
                  );                
     $setsection_js .= <<"ENDSECCODE";
 
-function setSections(formname,crstype) {
+function setSections(formname) {
     var re1 = /^currsec_/;
     var groups = new Array($groupslist);
     for (var i=0;i<formname.elements.length;i++) {
@@ -4833,13 +4666,10 @@ function setSections(formname,crstype) {
         if (checkcurr != null) {
             if ($checkincluded) {
                 $rolecode
-                if (role == 'cc' || role == 'co') {
-                    if (role == 'cc') {
-                        alert("$alerts{'secd'}\\n$alerts{'accr'}");
-                    } else {
-                        alert("$alerts{'sedn'}\\n$alerts{'acor'}");
-                    }
-                } else {
+                if (role == 'cc') {
+                    alert("$alerts{'secd'}\\n$alerts{'accr'}");
+                }
+                else {
                     var sections = '';
                     var numsec = 0;
                     var sections;
@@ -4875,11 +4705,7 @@ function setSections(formname,crstype) {
                     }
 
                     if ((role == 'st') && (numsec > 1)) {
-                        if (crstype == 'Community') {
-                            alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}");
-                        } else {
-                            alert("$alerts{'inco'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}");
-                        }
+                        alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}")
                         return;
                     }
                     else {
@@ -4919,7 +4745,7 @@ sub can_create_user {
     }
     if (ref($domconf{'usercreation'}) eq 'HASH') {
         if (ref($domconf{'usercreation'}{'cancreate'}) eq 'HASH') {
-            if ($context eq 'course' || $context eq 'author' || $context eq 'requestcrs') {
+            if ($context eq 'course' || $context eq 'author') {
                 my $creation = $domconf{'usercreation'}{'cancreate'}{$context};
                 if ($creation eq 'none') {
                     $cancreate = 0;
@@ -5017,19 +4843,14 @@ sub check_usertype {
 }
 
 sub roles_by_context {
-    my ($context,$custom,$crstype) = @_;
+    my ($context,$custom) = @_;
     my @allroles;
     if ($context eq 'course') {
         @allroles = ('st');
         if ($env{'request.role'} =~ m{^dc\./}) {
             push(@allroles,'ad');
         }
-        push(@allroles,('ta','ep','in'));
-        if ($crstype eq 'Community') {
-            push(@allroles,'co');
-        } else {
-            push(@allroles,'cc');
-        }
+        push(@allroles,('ta','ep','in','cc'));
         if ($custom) {
             push(@allroles,'cr');
         }
@@ -5042,11 +4863,11 @@ sub roles_by_context {
 }
 
 sub get_permission {
-    my ($context,$crstype) = @_;
+    my ($context,$roles) = @_;
     my %permission;
     if ($context eq 'course') {
         my $custom = 1;
-        my @allroles = &roles_by_context($context,$custom,$crstype);
+        my @allroles = &roles_by_context($context,$custom);
         foreach my $role (@allroles) {
             if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) {
                 $permission{'cusr'} = 1;
@@ -5115,9 +4936,9 @@ sub authorpriv {
 }
 
 sub roles_on_upload {
-    my ($context,$setting,$crstype,%customroles) = @_;
+    my ($context,$setting,%customroles) = @_;
     my (@possible_roles,@permitted_roles);
-    @possible_roles = &curr_role_permissions($context,$setting,1,$crstype);
+    @possible_roles = &curr_role_permissions($context,$setting,1);
     foreach my $role (@possible_roles) {
         if ($role eq 'cr') {
             push(@permitted_roles,keys(%customroles));
@@ -5153,7 +4974,6 @@ sub dc_setcourse_js {
     my ($formname,$mode,$context) = @_;
     my ($dc_setcourse_code,$authen_check);
     my $cctext = &Apache::lonnet::plaintext('cc');
-    my $cotext = &Apache::lonnet::plaintext('co');
     my %alerts = &sectioncheck_alerts();
     my $role = 'role';
     if ($mode eq 'upload') {
@@ -5200,11 +5020,7 @@ function setCourse() {
             numsections = numsections + newsecs.length;
         }
         if ((userrole == 'st') && (numsections > 1)) {
-            if (document.$formname.crstype.value == 'Community') {
-                alert("$alerts{'inco'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.")
-            } else {
-                alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.")
-            }
+            alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.")
             return;
         }
         for (var j=0; j<newsecs.length; j++) {
@@ -5216,11 +5032,7 @@ function setCourse() {
                 var groups = document.$formname.groups.value.split(/,/g);
                 for (var k=0; k<groups.length; k++) {
                     if (newsecs[j] == groups[k]) {
-                        if (document.$formname.crstype.value == 'Community') {
-                            alert("'"+newsecs[j]+"' $alerts{'mayc'}.\\n$alerts{'secn'}. $alerts{'plsc'}.");
-                        } else {
-                            alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}.");
-                        }
+                        alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}.");
                         return;
                     }
                 }
@@ -5230,21 +5042,13 @@ function setCourse() {
             alert("$alerts{'secd'} $cctext $alerts{'role'}.\\n$alerts{'accr'}.");
             section = "";
         }
-        if ((userrole == 'co') && (numsections > 0)) {
-            alert("$alerts{'secd'} $cotext $alerts{'role'}.\\n$alerts{'accr'}.");
-            section = "";
-        }
 SCRIPTTOP
     if ($mode ne 'upload') {
         $dc_setcourse_code .= (<<"ENDSCRIPT");
         var coursename = "_$env{'request.role.domain'}"+"_"+course+"_"+userrole
         var numcourse = getIndex(document.$formname.dccourse);
         if (numcourse == "-1") {
-            if (document.$formname.type == 'Community') {
-                alert("$alerts{'thwc'}");
-            } else {
-                alert("$alerts{'thwa'}");
-            }
+            alert("$alerts{'thwa'}");
             return;
         }
         else {
@@ -5353,22 +5157,19 @@ ENDSCRIPT
 
 sub sectioncheck_alerts {
     my %alerts = &Apache::lonlocal::texthash(
-                    curd => 'You must select a course or community in the current domain',
+                    curd => 'You must select a course 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',
                     youh => 'You had selected',
                     sect => 'sections',
                     plsm => 'Please modify your selections so they include no more than one section',
                     mayn => 'may not be used as the name for a section, as it is a reserved word',
                     plsc => 'Please choose a different section name',
                     mayt => 'may not be used as the name for a section, as it is the name of a course group',
-                    mayc => 'may not be used as the name for a section, as it is the name of a community group',
                     secn => 'Section names and group names must be distinct',
                     secd => 'Section designations do not apply to ',
                     role => 'roles',
                     accr => 'role will be added with access to all sections',
-                    thwa => 'There was a problem with your course selection',
-                    thwc => 'There was a problem with your community selection',
+                    thwa => 'There was a problem with your course selection'
                  );
     return %alerts;
 }