Diff for /loncom/interface/lonuserutils.pm between versions 1.97.2.5 and 1.100

version 1.97.2.5, 2010/01/20 18:22:35 version 1.100, 2009/09/12 17:06:16
Line 235  sub domain_roles_select { Line 235  sub domain_roles_select {
     # domain context         # domain context   
     #      #
     # Role types      # Role types
     my @roletypes = ('domain','author','course','community');      my @roletypes = ('domain','author','course');
     my %lt = &role_type_names();      my %lt = &role_type_names();
     #      #
     # build up the menu information to be passed to      # build up the menu information to be passed to
Line 247  sub domain_roles_select { Line 247  sub domain_roles_select {
     foreach my $roletype (@roletypes) {      foreach my $roletype (@roletypes) {
         # set up the text for this domain          # set up the text for this domain
         $select_menus{$roletype}->{'text'}= $lt{$roletype};          $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          # we want a choice of 'default' as the default in the second menu
         if ($env{'form.roletype'} ne '') {          if ($env{'form.roletype'} ne '') {
             $select_menus{$roletype}->{'default'} = $env{'form.showrole'};              $select_menus{$roletype}->{'default'} = $env{'form.showrole'};
Line 265  sub domain_roles_select { Line 261  sub domain_roles_select {
             @roles = &construction_space_roles();              @roles = &construction_space_roles();
         } else {          } else {
             my $custom = 1;              my $custom = 1;
             @roles = &course_roles('domain',undef,$custom,$roletype);              @roles = &course_roles('domain',undef,$custom);
         }          }
         my $order = ['Any',@roles];          my $order = ['Any',@roles];
         $select_menus{$roletype}->{'order'} = $order;           $select_menus{$roletype}->{'order'} = $order; 
Line 275  sub domain_roles_select { Line 271  sub domain_roles_select {
                               &mt('Custom role');                                &mt('Custom role');
             } else {              } else {
                 $select_menus{$roletype}->{'select2'}->{$role} =                   $select_menus{$roletype}->{'select2'}->{$role} = 
                               &Apache::lonnet::plaintext($role,$crstype);                                &Apache::lonnet::plaintext($role);
             }              }
         }          }
         $select_menus{$roletype}->{'select2'}->{'Any'} = &mt('Any');          $select_menus{$roletype}->{'select2'}->{'Any'} = &mt('Any');
     }      }
     my $result = &Apache::loncommon::linked_select_forms      my $result = &Apache::loncommon::linked_select_forms
         ('studentform',(' 'x3).&mt('Role: '),$env{'form.roletype'},          ('studentform',(' 'x3).&mt('Role: '),$env{'form.roletype'},
          'roletype','showrole',\%select_menus,           'roletype','showrole',\%select_menus,['domain','author','course']);
          ['domain','author','course','community']);  
     return $result;      return $result;
 }  }
   
Line 748  ENDPICK Line 743  ENDPICK
 ###############################################################  ###############################################################
 ###############################################################  ###############################################################
 sub print_upload_manager_footer {  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 $form = 'document.studentform';
     my $formname = 'studentform';      my $formname = 'studentform';
     my ($krbdef,$krbdefdom) =      my ($krbdef,$krbdefdom) =
Line 766  sub print_upload_manager_footer { Line 761  sub print_upload_manager_footer {
     my $intform = &Apache::loncommon::authform_internal(%param);      my $intform = &Apache::loncommon::authform_internal(%param);
     my $locform = &Apache::loncommon::authform_local(%param);      my $locform = &Apache::loncommon::authform_local(%param);
     my $date_table = &date_setting_table(undef,undef,$context,undef,      my $date_table = &date_setting_table(undef,undef,$context,undef,
                                          $formname,$permission,$crstype);                                           $formname,$permission);
   
     my $Str = "\n".'<div class="LC_left_float">';      my $Str = "\n".'<div class="LC_left_float">';
     $Str .= &hidden_input('nfields',$i);      $Str .= &hidden_input('nfields',$i);
Line 865  sub print_upload_manager_footer { Line 860  sub print_upload_manager_footer {
         my ($cnum,$cdom) = &get_course_identity();          my ($cnum,$cdom) = &get_course_identity();
         my $rowtitle = &mt('section');          my $rowtitle = &mt('section');
         my $secbox = &section_picker($cdom,$cnum,'Any',$rowtitle,          my $secbox = &section_picker($cdom,$cnum,'Any',$rowtitle,
                                      $permission,$context,'upload',$crstype);                                       $permission,$context,'upload');
         $Str .= $secbox          $Str .= $secbox
                .&Apache::lonhtmlcommon::row_closure();                 .&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'))          $Str .= &Apache::lonhtmlcommon::row_title(&mt('Full Update'))
                .'<label><input type="checkbox" name="fullup" value="yes" />'                 .'<label><input type="checkbox" name="fullup" value="yes" />'.
                .' '.$lt{'disp'}                  ' '.&mt('Display students with current/future access who are not in the uploaded file.')
                .'</label><br />'                 .'</label><br />'
                .$lt{'stus'}                 .&mt('Students selected from this list can be dropped.')
                .&Apache::lonhtmlcommon::row_closure();                 .&Apache::lonhtmlcommon::row_closure();
     }      }
     if ($context eq 'course' || $context eq 'domain') {      if ($context eq 'course' || $context eq 'domain') {
Line 932  sub forceid_change { Line 916  sub forceid_change {
 ###############################################################  ###############################################################
 ###############################################################  ###############################################################
 sub print_upload_manager_form {  sub print_upload_manager_form {
     my ($r,$context,$permission,$crstype) = @_;      my ($r,$context,$permission) = @_;
     my $firstLine;      my $firstLine;
     my $datatoken;      my $datatoken;
     if (!$env{'form.datatoken'}) {      if (!$env{'form.datatoken'}) {
Line 1015  sub print_upload_manager_form { Line 999  sub print_upload_manager_form {
     }      }
     $r->print('</div>');      $r->print('</div>');
     &print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear,      &print_upload_manager_footer($r,$i,$keyfields,$defdom,$today,$halfyear,
                                  $context,$permission,$crstype);                                   $context,$permission);
 }  }
   
 sub setup_date_selectors {  sub setup_date_selectors {
Line 1089  sub get_dates_from_form { Line 1073  sub get_dates_from_form {
 }  }
   
 sub date_setting_table {  sub date_setting_table {
     my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission,$crstype) = @_;      my ($starttime,$endtime,$mode,$bulkaction,$formname,$permission) = @_;
     my $nolink;      my $nolink;
     if ($bulkaction) {      if ($bulkaction) {
         $nolink = 1;          $nolink = 1;
Line 1106  sub date_setting_table { Line 1090  sub date_setting_table {
             ($env{'form.action'} eq 'upload')) {              ($env{'form.action'} eq 'upload')) {
             if ($env{'request.course.sec'} eq '') {              if ($env{'request.course.sec'} eq '') {
                 $dateDefault = '<span class="LC_nobreak">'.                  $dateDefault = '<span class="LC_nobreak">'.
                     '<label><input type="checkbox" name="makedatesdefault" value="1" /> ';                      '<label><input type="checkbox" name="makedatesdefault" value="1" /> '.
                 if ($crstype eq 'Community') {                      &mt('make these dates the default access dates for future student enrollment').
                     $dateDefault .= &mt("make these dates the default access dates for future community enrollment");                      '</label></span>';
                 } else {  
                     $dateDefault .= &mt("make these dates the default access dates for future course enrollment");  
                 }  
                 $dateDefault .= '</label></span>';  
             }              }
         }          }
     }      }
Line 1141  sub date_setting_table { Line 1121  sub date_setting_table {
 }  }
   
 sub make_dates_default {  sub make_dates_default {
     my ($startdate,$enddate,$context,$crstype = @_;      my ($startdate,$enddate,$context) = @_;
     my $result = '';      my $result = '';
     if ($context eq 'course') {      if ($context eq 'course') {
         my ($cnum,$cdom) = &get_course_identity();          my ($cnum,$cdom) = &get_course_identity();
Line 1149  sub make_dates_default { Line 1129  sub make_dates_default {
                 {'default_enrollment_start_date'=>$startdate,                  {'default_enrollment_start_date'=>$startdate,
                  'default_enrollment_end_date'  =>$enddate},$cdom,$cnum);                   'default_enrollment_end_date'  =>$enddate},$cdom,$cnum);
         if ($put_result eq 'ok') {          if ($put_result eq 'ok') {
             if ($crstype eq 'Community') {              $result .= &mt('Set default start and end access dates for course.').
                 $result .= &mt('Set default start and end access dates for community.');                         '<br />'."\n";
             } else {  
                 $result .= &mt('Set default start and end access dates for course.');  
             }  
             $result .= '<br />'."\n";  
             #              #
             # Refresh the course environment              # Refresh the course environment
             &Apache::lonnet::coursedescription($env{'request.course.id'},              &Apache::lonnet::coursedescription($env{'request.course.id'},
                                                {'freshen_cache' => 1});                                                 {'freshen_cache' => 1});
         } else {          } else {
             if ($crstype eq 'Community') {              $result .= &mt('Unable to set default access dates for course.').":".$put_result.
                 $result .= &mt('Unable to set default access dates for community');                         '<br />';
             } else {  
                 $result .= &mt('Unable to set default access dates for course');  
             }  
             $result .= ':'.$put_result.'<br />';  
         }          }
     }      }
     return $result;      return $result;
 }  }
   
 sub default_role_selector {  sub default_role_selector {
     my ($context,$checkpriv,$crstype) = @_;      my ($context,$checkpriv) = @_;
     my %customroles;      my %customroles;
     my ($options,$coursepick,$cb_jscript);      my ($options,$coursepick,$cb_jscript);
     if ($context ne 'author') {      if ($context ne 'author') {
Line 1188  sub default_role_selector { Line 1160  sub default_role_selector {
     $options = '<select name="defaultrole">'."\n".      $options = '<select name="defaultrole">'."\n".
                ' <option value="">'.&mt('Please select').'</option>'."\n";                  ' <option value="">'.&mt('Please select').'</option>'."\n"; 
     if ($context eq 'course') {      if ($context eq 'course') {
         $options .= &default_course_roles($context,$checkpriv,$crstype,%customroles);          $options .= &default_course_roles($context,$checkpriv,%customroles);
     } elsif ($context eq 'author') {      } elsif ($context eq 'author') {
         my @roles = &construction_space_roles($checkpriv);          my @roles = &construction_space_roles($checkpriv);
         foreach my $role (@roles) {          foreach my $role (@roles) {
Line 1213  sub default_role_selector { Line 1185  sub default_role_selector {
                       &Apache::loncommon::start_data_table_row()."\n".                        &Apache::loncommon::start_data_table_row()."\n".
                       '<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".                        '<td><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'studentform','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".
                       '<td><select name="courserole">'."\n".                        '<td><select name="courserole">'."\n".
                       &default_course_roles($context,$checkpriv,'Course',%customroles)."\n".                        &default_course_roles($context,$checkpriv,%customroles)."\n".
                       '</select></td><td>'.                        '</select></td><td>'.
                       '<table class="LC_createuser">'.                        '<table class="LC_createuser">'.
                       '<tr class="LC_section_row"><td valign"top">'.                        '<tr class="LC_section_row"><td valign"top">'.
Line 1238  sub default_role_selector { Line 1210  sub default_role_selector {
 }  }
   
 sub default_course_roles {  sub default_course_roles {
     my ($context,$checkpriv,$crstype,%customroles) = @_;      my ($context,$checkpriv,%customroles) = @_;
     my $output;      my $output;
     my $custom = 1;      my $custom = 1;
     my @roles = &course_roles($context,$checkpriv,$custom,lc($crstype));      my @roles = &course_roles($context,$checkpriv,$custom);
     foreach my $role (@roles) {      foreach my $role (@roles) {
         if ($role ne 'cr') {          if ($role ne 'cr') {
             my $plrole=&Apache::lonnet::plaintext($role,$crstype);              my $plrole=&Apache::lonnet::plaintext($role);
             $output .= '  <option value="'.$role.'">'.$plrole.'</option>';              $output .= '  <option value="'.$role.'">'.$plrole.'</option>';
         }          }
     }      }
Line 1293  sub domain_roles { Line 1265  sub domain_roles {
 }  }
   
 sub course_roles {  sub course_roles {
     my ($context,$checkpriv,$custom,$roletype) = @_;      my ($context,$checkpriv,$custom) = @_;
     my $crstype;      my @allroles = &roles_by_context('course',$custom);
     if ($roletype eq 'community') {  
         $crstype = 'Community' ;  
     } else {  
         $crstype = 'Course';  
     }  
     my @allroles = &roles_by_context('course',$custom,$crstype);  
     my @roles;      my @roles;
     if ($context eq 'domain') {      if ($context eq 'domain') {
         @roles = @allroles;          @roles = @allroles;
Line 1311  sub course_roles { Line 1277  sub course_roles {
                     if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) {                      if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) {
                         push(@roles,$role);                          push(@roles,$role);
                     } else {                      } 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,                              if (&Apache::lonnet::allowed('c'.$role,
                                              $env{'request.course.id'}.'/'.                                               $env{'request.course.id'}.'/'.
                                              $env{'request.course.sec'})) {                                               $env{'request.course.sec'})) {
Line 1329  sub course_roles { Line 1295  sub course_roles {
 }  }
   
 sub curr_role_permissions {  sub curr_role_permissions {
     my ($context,$setting,$checkpriv,$type) = @_;       my ($context,$setting,$checkpriv) = @_; 
     my $custom = 1;      my $custom = 1;
     my @roles;      my @roles;
     if ($context eq 'author') {      if ($context eq 'author') {
         @roles = &construction_space_roles($checkpriv);          @roles = &construction_space_roles($checkpriv);
     } elsif ($context eq 'domain') {      } elsif ($context eq 'domain') {
         if ($setting eq 'course') {          if ($setting eq 'course') {
             @roles = &course_roles($context,$checkpriv,$custom,$type);               @roles = &course_roles($context,$checkpriv,$custom); 
         } else {          } else {
             @roles = &domain_roles($checkpriv);              @roles = &domain_roles($checkpriv);
         }          }
     } elsif ($context eq 'course') {      } elsif ($context eq 'course') {
         @roles = &course_roles($context,$checkpriv,$custom,$type);          @roles = &course_roles($context,$checkpriv,$custom);
     }      }
     return @roles;      return @roles;
 }  }
Line 1441  sub print_userlist { Line 1407  sub print_userlist {
                   '<input type="hidden" name="phase" value="" /></form>');                    '<input type="hidden" name="phase" value="" /></form>');
         return;          return;
     }      }
     if (!(($context eq 'domain') &&       if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) {
         (($env{'form.roletype'} eq 'course') || ($env{'form.roletype'} eq 'community')))) {  
         $r->print('&nbsp;'.&list_submit_button(&mt('Update Display')).          $r->print('&nbsp;'.&list_submit_button(&mt('Update Display')).
                   "\n</p>\n");                    "\n</p>\n");
     }      }
     my ($indexhash,$keylist) = &make_keylist_array();      my ($indexhash,$keylist) = &make_keylist_array();
     my (%userlist,%userinfo,$clearcoursepick);      my (%userlist,%userinfo);
     if (($context eq 'domain') &&       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') {  
             $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 $courseform =          my $courseform =
             &Apache::lonhtmlcommon::course_selection($formname,$numcodes,              &Apache::lonhtmlcommon::course_selection($formname,$totcodes,
                             $codetitles,$idlist,$idlist_titles,$crstype);                                           $codetitles,$idlist,$idlist_titles);
         $r->print('<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n".          $r->print('<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n".
                   &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".                    $courseform."\n".
                   &Apache::lonhtmlcommon::row_closure(1).                    &Apache::lonhtmlcommon::row_closure(1).
                   &Apache::lonhtmlcommon::end_pick_box().'</p>'.                    &Apache::lonhtmlcommon::end_pick_box().'</p>'.
                   '<p><input type="hidden" name="origroletype" value="'.$env{'form.roletype'}.'" />'.                    '<p>'.&list_submit_button(&mt('Update Display')).
                   &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");
                   "\n".'</p><span class="LC_warning">'.$warning.'</span>'."\n");          if ($env{'form.coursepick'}) {
         $clearcoursepick = 0;  
         if (($env{'form.origroletype'} ne '') &&  
             ($env{'form.origroletype'} ne $env{'form.roletype'})) {  
             $clearcoursepick = 1;  
         }  
         if (($env{'form.coursepick'}) && (!$clearcoursepick)) {  
             $r->print('<hr />'.&mt('Searching').' ...<br />&nbsp;<br />');              $r->print('<hr />'.&mt('Searching').' ...<br />&nbsp;<br />');
         }          }
     } else {      } else {
Line 1554  sub print_userlist { Line 1500  sub print_userlist {
                     }                      }
                 }                  }
             } elsif ($env{'form.roletype'} eq 'course') {              } elsif ($env{'form.roletype'} eq 'course') {
                 if (($env{'form.coursepick'}) && (!$clearcoursepick)) {                  if ($env{'form.coursepick'}) {
                     my %courses = &process_coursepick();                      my %courses = &process_coursepick();
                     my %allusers;                      my %allusers;
                     my $hidepriv = 1;                      my $hidepriv = 1;
Line 1565  sub print_userlist { Line 1511  sub print_userlist {
                         my (@roles,@sections,%access,%users,%userdata,                          my (@roles,@sections,%access,%users,%userdata,
                             %statushash);                              %statushash);
                         if ($env{'form.showrole'} eq 'Any') {                          if ($env{'form.showrole'} eq 'Any') {
                             @roles = &course_roles($context,undef,$custom,                              @roles = &course_roles($context,undef,$custom);
                                                    $env{'form.roletype'});  
                         } else {                          } else {
                             @roles = ($env{'form.showrole'});                              @roles = ($env{'form.showrole'});
                         }                          }
Line 1612  sub print_userlist { Line 1557  sub print_userlist {
                 $r->print(&mt('There are no authors or co-authors to display.')."\n");                  $r->print(&mt('There are no authors or co-authors to display.')."\n");
             } elsif ($env{'form.roletype'} eq 'course') {              } elsif ($env{'form.roletype'} eq 'course') {
                 $r->print(&mt('There are no course users to display')."\n");                   $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') {          } elsif ($context eq 'course') {
             $r->print(&mt('There are no course users to display.')."\n");              $r->print(&mt('There are no course users to display.')."\n");
Line 1656  sub role_filter { Line 1599  sub role_filter {
         $role_select = '<select name="showrole">'."\n".          $role_select = '<select name="showrole">'."\n".
                        '<option value="Any" '.$roleselected.'>'.                         '<option value="Any" '.$roleselected.'>'.
                        &mt('Any role').'</option>';                         &mt('Any role').'</option>';
         my ($roletype,$crstype);          my @poss_roles = &curr_role_permissions($context);
         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);  
         foreach my $role (@poss_roles) {          foreach my $role (@poss_roles) {
             $roleselected = '';              $roleselected = '';
             if ($role eq $env{'form.showrole'}) {              if ($role eq $env{'form.showrole'}) {
Line 1675  sub role_filter { Line 1609  sub role_filter {
             if ($role eq 'cr') {              if ($role eq 'cr') {
                 $plrole = &mt('Custom role');                  $plrole = &mt('Custom role');
             } else {              } else {
                 $plrole=&Apache::lonnet::plaintext($role,$crstype);                  $plrole=&Apache::lonnet::plaintext($role);
             }              }
             $role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>';              $role_select .= '<option value="'.$role.'"'.$roleselected.'>'.$plrole.'</option>';
         }          }
Line 1790  sub gather_userinfo { Line 1724  sub gather_userinfo {
                                            $indexhash,$uniqid,$userlist);                                             $indexhash,$uniqid,$userlist);
                     }                      }
                 }                  }
             } elsif (($env{'form.roletype'} eq 'course') ||               } elsif ($env{'form.roletype'} eq 'course') {
                      ($env{'form.roletype'} eq 'community')) {  
                 ($userdata{'username'},$userdata{'domain'},$userdata{'role'}) =                  ($userdata{'username'},$userdata{'domain'},$userdata{'role'}) =
                     split(/:/,$item);                      split(/:/,$item);
                 if (ref($rolehash->{$item}) eq 'HASH') {                  if (ref($rolehash->{$item}) eq 'HASH') {
Line 1841  sub gather_userinfo { Line 1774  sub gather_userinfo {
 sub build_user_record {  sub build_user_record {
     my ($context,$userdata,$userinfo,$indexhash,$record_key,$userlist) = @_;      my ($context,$userdata,$userinfo,$indexhash,$record_key,$userlist) = @_;
     next if ($userdata->{'start'} eq '-1' && $userdata->{'end'} eq '-1');      next if ($userdata->{'start'} eq '-1' && $userdata->{'end'} eq '-1');
     if (!(($context eq 'domain') && (($env{'form.roletype'} eq 'course')      if (!(($context eq 'domain') && ($env{'form.roletype'} eq 'course'))) {
                              && ($env{'form.roletype'} eq 'community')))) {  
         &process_date_info($userdata);          &process_date_info($userdata);
     }      }
     my $username = $userdata->{'username'};      my $username = $userdata->{'username'};
Line 2107  sub show_users_list { Line 2039  sub show_users_list {
         $sortby = 'username';          $sortby = 'username';
     }      }
     my $setting = $env{'form.roletype'};      my $setting = $env{'form.roletype'};
     my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers,$crstype);      my ($cid,$cdom,$cnum,$classgroups,$displayphotos,$displayclickers);
     if ($context eq 'course') {      if ($context eq 'course') {
         $cid = $env{'request.course.id'};          $cid = $env{'request.course.id'};
         $crstype = &Apache::loncommon::course_type();  
         ($cnum,$cdom) = &get_course_identity($cid);          ($cnum,$cdom) = &get_course_identity($cid);
         ($classgroups) = &Apache::loncoursedata::get_group_memberships(          ($classgroups) = &Apache::loncoursedata::get_group_memberships(
                                      $userlist,$keylist,$cdom,$cnum);                                       $userlist,$keylist,$cdom,$cnum);
Line 2145  function photowindow(photolink) { Line 2076  function photowindow(photolink) {
 <input type="hidden" name="displayclickers" value="$displayclickers" />  <input type="hidden" name="displayclickers" value="$displayclickers" />
 END  END
         }          }
     } elsif ($context eq 'domain') {  
         if ($setting eq 'community') {  
             $crstype = 'Community';  
         } elsif ($crstype eq 'course') {  
             $crstype = 'Course';  
         }  
     }      }
     if ($mode ne 'autoenroll' && $mode ne 'pickauthor') {      if ($mode ne 'autoenroll' && $mode ne 'pickauthor') {
         my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript();          my $check_uncheck_js = &Apache::loncommon::check_uncheck_jscript();
Line 2247  END Line 2172  END
                       );                        );
     if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {      if ($context eq 'domain' && $env{'form.roletype'} eq 'course') {
         $lt{'extent'} = &mt('Course(s): description, section(s), status');          $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') {      } elsif ($context eq 'author') {
         $lt{'extent'} = &mt('Author');           $lt{'extent'} = &mt('Author'); 
     }      }
Line 2260  END Line 2183  END
         if ($context eq 'course') {          if ($context eq 'course') {
             push(@cols,'section');              push(@cols,'section');
         }          }
         if (!($context eq 'domain' && ($env{'form.roletype'} eq 'course')          if (!($context eq 'domain' && $env{'form.roletype'} eq 'course')) { 
                               && ($env{'form.roletype'} eq 'community'))) {  
             push(@cols,('start','end'));              push(@cols,('start','end'));
         }          }
         if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') {          if ($env{'form.showrole'} eq 'Any' || $env{'form.showrole'} eq 'cr') {
             push(@cols,'role');              push(@cols,'role');
         }          }
         if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' ||          if ($context eq 'domain' && ($env{'form.roletype'} eq 'author' ||
                                     $env{'form.roletype'} eq 'course' ||                                      $env{'form.roletype'} eq 'course')) {
                                     $env{'form.roletype'} eq 'community')) {  
             push (@cols,'extent');              push (@cols,'extent');
         }          }
         if (($statusmode eq 'Any') &&          if (($statusmode eq 'Any') && 
             (!($context eq 'domain' && (($env{'form.roletype'} eq 'course')              (!($context eq 'domain' && $env{'form.roletype'} eq 'course'))) {
              || ($env{'form.roletype'} eq 'community'))))) {  
             push(@cols,'status');              push(@cols,'status');
         }          }
         if ($context eq 'course') {          if ($context eq 'course') {
Line 2292  END Line 2212  END
     my $results_description;      my $results_description;
     if ($mode ne 'autoenroll') {      if ($mode ne 'autoenroll') {
         $results_description = &results_header_row($rolefilter,$statusmode,          $results_description = &results_header_row($rolefilter,$statusmode,
                                                    $context,$permission,$mode,$crstype);                                                     $context,$permission,$mode);
   
         $r->print('<b>'.$results_description.'</b><br /><br />');          $r->print('<b>'.$results_description.'</b><br /><br />');
     }      }
     my ($output,$actionselect,%canchange,%canchangesec);      my ($output,$actionselect,%canchange,%canchangesec);
Line 2311  END Line 2230  END
 END  END
             if ($actionselect) {              if ($actionselect) {
                 $output .= <<"END";                  $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  $actionselect
 <br/><br /><input type="button" value="$lt{'ca'}" onclick="javascript:checkAll(document.$formname.actionlist)" /> &nbsp;  <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>  <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>
Line 2320  END Line 2239  END
                 if ($env{'form.showrole'} eq 'Any') {                  if ($env{'form.showrole'} eq 'Any') {
                     my $custom = 1;                      my $custom = 1;
                     if ($context eq 'domain') {                      if ($context eq 'domain') {
                         @allroles = &roles_by_context($setting,$custom,$crstype);                          @allroles = &roles_by_context($setting,$custom);
                     } else {                      } else {
                         @allroles = &roles_by_context($context,$custom,$crstype);                          @allroles = &roles_by_context($context,$custom);
                     }                      }
                 } else {                  } else {
                     @allroles = ($env{'form.showrole'});                      @allroles = ($env{'form.showrole'});
Line 2356  END Line 2275  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>';                         '<table><tr>';
             my @linkdests = ('aboutme');              my @linkdests = ('aboutme');
             if ($permission->{'cusr'}) {              if ($permission->{'cusr'}) {
Line 2367  END Line 2286  END
                                          $env{'request.course.sec'})) {                                           $env{'request.course.sec'})) {
                 push(@linkdests,'track');                  push(@linkdests,'track');
             }              }
   
             $output .= '<td>';              $output .= '<td>';
             my $usernamelink = $env{'form.usernamelink'};              my $usernamelink = $env{'form.usernamelink'};
             if ($usernamelink eq '') {              if ($usernamelink eq '') {
Line 2528  END Line 2448  END
                 }                  }
             } elsif ($env{'form.roletype'} eq 'author') {              } elsif ($env{'form.roletype'} eq 'author') {
                 ($uname,$udom,$role) = split(/:/,$user,-1);                  ($uname,$udom,$role) = split(/:/,$user,-1);
             } elsif (($env{'form.roletype'} eq 'course') ||               } elsif ($env{'form.roletype'} eq 'course') {
                      ($env{'form.roletype'} eq 'community')) {  
                 ($uname,$udom,$role) = split(/:/,$user);                  ($uname,$udom,$role) = split(/:/,$user);
             }              }
         } else {          } else {
Line 2636  END Line 2555  END
         if ($clickers!~/\w/) { $clickers='-'; }          if ($clickers!~/\w/) { $clickers='-'; }
         $in{'clicker'} = $clickers;           $in{'clicker'} = $clickers; 
  my $role = $in{'role'};   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) {          if (! defined($in{'start'}) || $in{'start'} == 0) {
             $in{'start'} = &mt('none');              $in{'start'} = &mt('none');
         } else {          } else {
Line 2934  sub role_type_names { Line 2853  sub role_type_names {
                          'domain' => 'Domain Roles',                           'domain' => 'Domain Roles',
                          'author' => 'Co-Author Roles',                           'author' => 'Co-Author Roles',
                          'course' => 'Course Roles',                           'course' => 'Course Roles',
                          'community' => 'Community Roles',  
   
              );               );
     return %lt;      return %lt;
 }  }
Line 3072  ENDTWO Line 2989  ENDTWO
 }  }
   
 sub date_section_selector {  sub date_section_selector {
     my ($context,$permission,$crstype) = @_;      my ($context,$permission) = @_;
     my $callingform = $env{'form.callingform'};      my $callingform = $env{'form.callingform'};
     my $formname = 'dateselect';        my $formname = 'dateselect';  
     my $groupslist = &get_groupslist();      my $groupslist = &get_groupslist();
Line 3171  ENDJS Line 3088  ENDJS
         }          }
         $date_items = &date_setting_table($starttime,undef,$context,          $date_items = &date_setting_table($starttime,undef,$context,
                                           $env{'form.bulkaction'},$formname,                                            $env{'form.bulkaction'},$formname,
                                           $permission,$crstype);                                            $permission);
     }      }
     $output .= '<h3>'.$headertext.'</h3>'.      $output .= '<h3>'.$headertext.'</h3>'.
                '<form name="'.$formname.'" method="post">'."\n".                 '<form name="'.$formname.'" method="post">'."\n".
Line 3203  ENDJS Line 3120  ENDJS
             $info = '<input type="hidden" name="retainsec" value="0" />';               $info = '<input type="hidden" name="retainsec" value="0" />'; 
         }          }
         my $rowtitle = &mt('New section to assign');          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 .= $info.$secbox;
     }      }
     $output .= '<p>'.      $output .= '<p>'.
Line 3213  ENDJS Line 3130  ENDJS
 }  }
   
 sub section_picker {  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_count = &Apache::loncommon::get_sections($cdom,$cnum);
     my $sections_select .= &course_sections(\%sections_count,$role);      my $sections_select .= &course_sections(\%sections_count,$role);
     my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n";      my $secbox = '<p>'.&Apache::lonhtmlcommon::start_pick_box()."\n";
     if ($mode eq 'upload') {      if ($mode eq 'upload') {
         my ($options,$cb_script,$coursepick) =          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').          $secbox .= &Apache::lonhtmlcommon::row_title(&mt('role'),'LC_oddrow_value').
                    $options. &Apache::lonhtmlcommon::row_closure(1)."\n";                     $options. &Apache::lonhtmlcommon::row_closure(1)."\n";
     }      }
Line 3243  sub section_picker { Line 3160  sub section_picker {
 }  }
   
 sub results_header_row {  sub results_header_row {
     my ($rolefilter,$statusmode,$context,$permission,$mode,$crstype) = @_;      my ($rolefilter,$statusmode,$context,$permission,$mode) = @_;
     my ($description,$showfilter);      my ($description,$showfilter);
     if ($rolefilter ne 'Any') {      if ($rolefilter ne 'Any') {
         $showfilter = $rolefilter;          $showfilter = $rolefilter;
     }      }
     if ($context eq 'course') {      if ($context eq 'course') {
         if ($mode eq 'csv' || $mode eq 'excel') {          if ($mode eq 'csv' || $mode eq 'excel') {
             if ($crstype eq 'Community') {              $description = &mt('Course - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' ';
                 $description = &mt('Community - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' ';  
             } else {  
                 $description = &mt('Course - [_1]:',$env{'course.'.$env{'request.course.id'}.'.description'}).' ';  
             }  
         }          }
         if ($statusmode eq 'Expired') {          if ($statusmode eq 'Expired') {
             if ($crstype eq 'Community') {              $description .= &mt('Users in course with expired [_1] roles',$showfilter);
                 $description .= &mt('Users in community with expired [_1] roles',$showfilter);  
             } else {  
                 $description .= &mt('Users in course with expired [_1] roles',$showfilter);  
             }  
         } elsif ($statusmode eq 'Future') {          } elsif ($statusmode eq 'Future') {
             if ($crstype eq 'Community') {              $description .= &mt('Users in course with future [_1] roles',$showfilter);
                 $description .= &mt('Users in community with future [_1] roles',$showfilter);  
             } else {  
                 $description .= &mt('Users in course with future [_1] roles',$showfilter);  
             }  
         } elsif ($statusmode eq 'Active') {          } elsif ($statusmode eq 'Active') {
             if ($crstype eq 'Community') {              $description .= &mt('Users in course with active [_1] roles',$showfilter);
                 $description .= &mt('Users in community with active [_1] roles',$showfilter);  
             } else {  
                 $description .= &mt('Users in course with active [_1] roles',$showfilter);  
             }  
         } else {          } else {
             if ($rolefilter eq 'Any') {              if ($rolefilter eq 'Any') {
                 if ($crstype eq 'Community') {                  $description .= &mt('All users in course');
                     $description .= &mt('All users in community');  
                 } else {  
                     $description .= &mt('All users in course');  
                 }  
             } else {              } else {
                 if ($crstype eq 'Community') {                  $description .= &mt('All users in course with [_1] roles',$rolefilter);
                     $description .= &mt('All users in community with [_1] roles',$rolefilter);  
                 } else {  
                     $description .= &mt('All users in course with [_1] roles',$rolefilter);  
                 }  
             }              }
         }          }
         my $constraint;          my $constraint;
Line 3382  sub results_header_row { Line 3275  sub results_header_row {
                     $description .= &mt('All co-authors in domain  with [_1] roles',$rolefilter);                      $description .= &mt('All co-authors in domain  with [_1] roles',$rolefilter);
                 }                  }
             }              }
         } elsif (($env{'form.roletype'} eq 'course') ||           } elsif ($env{'form.roletype'} eq 'course') {
                  ($env{'form.roletype'} eq 'community')) {  
   
             my $coursefilter = $env{'form.coursepick'};              my $coursefilter = $env{'form.coursepick'};
             if ($env{'form.roletype'} eq 'course') {              if ($coursefilter eq 'category') {
                 if ($coursefilter eq 'category') {                  my $instcode = &instcode_from_coursefilter();
                     my $instcode = &instcode_from_coursefilter();                  if ($instcode eq '.') {
                     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') {  
                     $description .= &mt('All courses in domain').' - ';                      $description .= &mt('All courses in domain').' - ';
                   } else {
                       $description .= &mt('Courses in domain with institutional code: [_1]',$instcode).' - ';
                 }                  }
             } elsif ($env{'form.roletype'} eq 'community') {              } elsif ($coursefilter eq 'selected') {
                 if ($coursefilter eq 'selected') {                  $description .= &mt('Selected courses in domain').' - ';
                     $description .= &mt('Selected communities in domain').' - ';              } elsif ($coursefilter eq 'all') {
                 } elsif ($coursefilter eq 'all') {                  $description .= &mt('All courses in domain').' - ';
                     $description .= &mt('All communities in domain').' - ';  
                 }  
             }              }
             if ($statusmode eq 'Expired') {              if ($statusmode eq 'Expired') {
                 $description .= &mt('users with expired [_1] roles',$showfilter);                  $description .= &mt('users with expired [_1] roles',$showfilter);
Line 3441  sub viewable_section { Line 3324  sub viewable_section {
 #################################################  #################################################
 #################################################  #################################################
 sub show_drop_list {  sub show_drop_list {
     my ($r,$classlist,$nosort,$permission,$crstype) = @_;      my ($r,$classlist,$nosort,$permission) = @_;
     my $cid = $env{'request.course.id'};      my $cid = $env{'request.course.id'};
     my ($cnum,$cdom) = &get_course_identity($cid);      my ($cnum,$cdom) = &get_course_identity($cid);
     if (! exists($env{'form.sortby'})) {      if (! exists($env{'form.sortby'})) {
Line 3487  END Line 3370  END
         }          }
     }      }
     if (!$studentcount) {      if (!$studentcount) {
         if ($crstype eq 'Community') {          $r->print(&mt('There are no students to drop.'));
             $r->print(&mt('There are no members to drop.'));  
         } else {  
             $r->print(&mt('There are no students to drop.'));  
         }  
         return;          return;
     }      }
     my ($classgroups) = &Apache::loncoursedata::get_group_memberships(      my ($classgroups) = &Apache::loncoursedata::get_group_memberships(
Line 3499  END Line 3378  END
     my %lt=&Apache::lonlocal::texthash('usrn'   => "username",      my %lt=&Apache::lonlocal::texthash('usrn'   => "username",
                                        'dom'    => "domain",                                         'dom'    => "domain",
                                        'sn'     => "student name",                                         'sn'     => "student name",
                                        'mn'     => "member name",  
                                        'sec'    => "section",                                         'sec'    => "section",
                                        'start'  => "start date",                                         'start'  => "start date",
                                        'end'    => "end date",                                         'end'    => "end date",
                                        'groups' => "active groups",                                         'groups' => "active groups",
                                       );                                        );
     my $nametitle = $lt{'sn'};  
     if ($crstype eq 'Community') {  
         $nametitle = $lt{'mn'};  
     }  
     if ($nosort) {      if ($nosort) {
         $r->print(&Apache::loncommon::start_data_table().          $r->print(&Apache::loncommon::start_data_table().
                   &Apache::loncommon::start_data_table_header_row());                    &Apache::loncommon::start_data_table_header_row());
Line 3517  END Line 3391  END
     <th>$lt{'usrn'}</th>      <th>$lt{'usrn'}</th>
     <th>$lt{'dom'}</th>      <th>$lt{'dom'}</th>
     <th>ID</th>      <th>ID</th>
     <th>$nametitle</th>      <th>$lt{'sn'}</th>
     <th>$lt{'sec'}</th>      <th>$lt{'sec'}</th>
     <th>$lt{'start'}</th>      <th>$lt{'start'}</th>
     <th>$lt{'end'}</th>      <th>$lt{'end'}</th>
Line 3536  END Line 3410  END
     </th><th>      </th><th>
        <a href="/adm/createuser?action=$action&sortby=id">ID</a>         <a href="/adm/createuser?action=$action&sortby=id">ID</a>
     </th><th>      </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>      </th><th>
        <a href="/adm/createuser?action=$action&sortby=section">$lt{'sec'}</a>         <a href="/adm/createuser?action=$action&sortby=section">$lt{'sec'}</a>
     </th><th>      </th><th>
Line 3606  END Line 3480  END
     $r->print(&Apache::loncommon::end_data_table().'<br />');      $r->print(&Apache::loncommon::end_data_table().'<br />');
     %lt=&Apache::lonlocal::texthash(      %lt=&Apache::lonlocal::texthash(
                        'dp'   => "Drop Students",                         'dp'   => "Drop Students",
                        'dm'   => "Drop Members",  
                        'ca'   => "check all",                         'ca'   => "check all",
                        'ua'   => "uncheck all",                         'ua'   => "uncheck all",
                                        );                                         );
     my $btn = $lt{'dp'};  
     if ($crstype eq 'Community') {  
         $btn = $lt{'dm'};   
     }  
     $r->print(<<"END");      $r->print(<<"END");
 </p>  </p>
 <p>  <p>
Line 3621  END Line 3490  END
 <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)" />  <input type="button" value="$lt{'ua'}" onclick="javascript:uncheckAll(document.studentform.droplist)" />
 </p>  </p>
 <p>  <p>
 <input type="submit" value="$btn" />  <input type="submit" value="$lt{'dp'}" />
 </p>  </p>
 END  END
     return;      return;
Line 3635  sub print_first_users_upload_form { Line 3504  sub print_first_users_upload_form {
     my $str;      my $str;
     $str  = '<input type="hidden" name="phase" value="two" />';      $str  = '<input type="hidden" name="phase" value="two" />';
     $str .= '<input type="hidden" name="action" value="upload" />';      $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";      $str .= '<h2>'.&mt('Upload a file containing information about users').'</h2>'."\n";
   
Line 3716  sub upfile_drop_add { Line 3584  sub upfile_drop_add {
                                                 'domain_choice' => 'scalar',                                                  'domain_choice' => 'scalar',
                                                 'inststatus_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();      my ($startdate,$enddate) = &get_dates_from_form();
     if ($env{'form.makedatesdefault'}) {      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)      # Determine domain and desired host (home server)
     my $defdom=$env{'request.role.domain'};      my $defdom=$env{'request.role.domain'};
Line 3783  sub upfile_drop_add { Line 3638  sub upfile_drop_add {
             $amode = ''; # This causes the loop below to be skipped              $amode = ''; # This causes the loop below to be skipped
         }          }
     }      }
     my ($defaultsec,$defaultrole);      my ($cid,$defaultsec,$defaultrole,$setting);
     if ($context eq 'domain') {      if ($context eq 'domain') {
           $setting = $env{'form.roleaction'};
         if ($setting eq 'domain') {          if ($setting eq 'domain') {
             $defaultrole = $env{'form.defaultrole'};              $defaultrole = $env{'form.defaultrole'};
         } elsif ($setting eq 'course') {          } elsif ($setting eq 'course') {
             $defaultrole = $env{'form.courserole'};              $defaultrole = $env{'form.courserole'};
             $defaultsec = $env{'form.sections'};              $defaultsec = $env{'form.sections'};
         }          }  
     } elsif ($context eq 'author') {      } elsif ($context eq 'author') {
         $defaultrole = $env{'form.defaultrole'};          $defaultrole = $env{'form.defaultrole'};
     } elsif ($context eq 'course') {      } elsif ($context eq 'course') {
         $defaultrole = $env{'form.defaultrole'};          $defaultrole = $env{'form.defaultrole'};
         $defaultsec = $env{'form.sections'};          $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      # Check to see if user information can be changed
     my @userinfo = ('firstname','middlename','lastname','generation',      my @userinfo = ('firstname','middlename','lastname','generation',
                     'permanentemail','id');                      'permanentemail','id');
Line 3809  sub upfile_drop_add { Line 3672  sub upfile_drop_add {
     }      }
     my (%userlist,%modifiable_fields,@poss_roles);      my (%userlist,%modifiable_fields,@poss_roles);
     my $secidx = &Apache::loncoursedata::CL_SECTION();      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 (!&Apache::lonnet::allowed('mau',$domain)) {
         if ($context eq 'course' || $context eq 'author') {          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 @statuses = ('active','future');
             my ($indexhash,$keylist) = &make_keylist_array();              my ($indexhash,$keylist) = &make_keylist_array();
             my %info;              my %info;
Line 3899  sub upfile_drop_add { Line 3762  sub upfile_drop_add {
         }          }
         my (%curr_rules,%got_rules,%alerts);          my (%curr_rules,%got_rules,%alerts);
         my %customroles = &my_custom_roles();          my %customroles = &my_custom_roles();
         my @permitted_roles =           my @permitted_roles = &roles_on_upload($context,$setting,%customroles); 
             &roles_on_upload($context,$setting,$crstype,%customroles);   
         # Get new users list          # Get new users list
         foreach my $line (@userdata) {          foreach my $line (@userdata) {
             my @secs;              my @secs;
Line 4343  sub user_change_result { Line 4205  sub user_change_result {
   
 # ========================================================= Menu Phase Two Drop  # ========================================================= Menu Phase Two Drop
 sub print_drop_menu {  sub print_drop_menu {
     my ($r,$context,$permission,$crstype) = @_;      my ($r,$context,$permission) = @_;
     my $heading;      $r->print('<h3>'.&mt("Drop Students").'</h3>'."\n".
     if ($crstype eq 'Community') {  
         $heading = &mt("Drop Members");  
     } else {  
         $heading = &mt("Drop Students");  
     }  
     $r->print('<h3>'.$heading.'</h3>'."\n".  
               '<form name="studentform" method="post">'."\n");                '<form name="studentform" method="post">'."\n");
     my $classlist = &Apache::loncoursedata::get_classlist();      my $classlist = &Apache::loncoursedata::get_classlist();
     if (! defined($classlist)) {      if (! defined($classlist)) {
         if ($crstype eq 'Community') {          $r->print(&mt('There are no students currently enrolled.')."\n");
             $r->print(&mt('There are no members currently enrolled.')."\n");  
         } else {  
             $r->print(&mt('There are no students currently enrolled.')."\n");  
         }  
     } else {      } else {
         &show_drop_list($r,$classlist,'nosort',$permission,$crstype);          &show_drop_list($r,$classlist,'nosort',$permission);
     }      }
     $r->print('</form>'. &Apache::loncommon::end_page());      $r->print('</form>'. &Apache::loncommon::end_page());
     return;      return;
Line 4372  sub update_user_list { Line 4224  sub update_user_list {
     my ($r,$context,$setting,$choice) = @_;      my ($r,$context,$setting,$choice) = @_;
     my $now = time;      my $now = time;
     my $count=0;      my $count=0;
     my $crstype;  
     if ($context eq 'course') {  
         $crstype = &Apache::loncommon::course_type();  
     }  
     my @changelist;      my @changelist;
     if ($choice eq 'drop') {      if ($choice eq 'drop') {
         @changelist = &Apache::loncommon::get_env_multiple('form.droplist');          @changelist = &Apache::loncommon::get_env_multiple('form.droplist');
Line 4446  sub update_user_list { Line 4294  sub update_user_list {
                 }                  }
             }              }
         }          }
         my $plrole = &Apache::lonnet::plaintext($role,$crstype);          my $plrole = &Apache::lonnet::plaintext($role);
         my $start = $env{'form.'.$item.'_start'};          my $start = $env{'form.'.$item.'_start'};
         my $end = $env{'form.'.$item.'_end'};          my $end = $env{'form.'.$item.'_end'};
         if ($choice eq 'drop') {          if ($choice eq 'drop') {
Line 4611  sub update_user_list { Line 4459  sub update_user_list {
     }      }
     if ($env{'form.makedatesdefault'}) {      if ($env{'form.makedatesdefault'}) {
         if ($choice eq 'chgdates' || $choice eq 'reenable' || $choice eq 'activate') {          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');      my $linktext = &mt('Display User Lists');
Line 4995  sub check_usertype { Line 4843  sub check_usertype {
 }  }
   
 sub roles_by_context {  sub roles_by_context {
     my ($context,$custom,$crstype) = @_;      my ($context,$custom) = @_;
     my @allroles;      my @allroles;
     if ($context eq 'course') {      if ($context eq 'course') {
         @allroles = ('st');          @allroles = ('st');
         if ($env{'request.role'} =~ m{^dc\./}) {          if ($env{'request.role'} =~ m{^dc\./}) {
             push(@allroles,'ad');              push(@allroles,'ad');
         }          }
         push(@allroles,('ta','ep','in'));          push(@allroles,('ta','ep','in','cc'));
         if ($crstype eq 'Community') {  
             push(@allroles,'co');  
         } else {  
             push(@allroles,'cc');  
         }  
         if ($custom) {          if ($custom) {
             push(@allroles,'cr');              push(@allroles,'cr');
         }          }
Line 5020  sub roles_by_context { Line 4863  sub roles_by_context {
 }  }
   
 sub get_permission {  sub get_permission {
     my ($context,$crstype) = @_;      my ($context,$roles) = @_;
     my %permission;      my %permission;
     if ($context eq 'course') {      if ($context eq 'course') {
         my $custom = 1;          my $custom = 1;
         my @allroles = &roles_by_context($context,$custom,$crstype);          my @allroles = &roles_by_context($context,$custom);
         foreach my $role (@allroles) {          foreach my $role (@allroles) {
             if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) {              if (&Apache::lonnet::allowed('c'.$role,$env{'request.course.id'})) {
                 $permission{'cusr'} = 1;                  $permission{'cusr'} = 1;
Line 5093  sub authorpriv { Line 4936  sub authorpriv {
 }  }
   
 sub roles_on_upload {  sub roles_on_upload {
     my ($context,$setting,$crstype,%customroles) = @_;      my ($context,$setting,%customroles) = @_;
     my (@possible_roles,@permitted_roles);      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) {      foreach my $role (@possible_roles) {
         if ($role eq 'cr') {          if ($role eq 'cr') {
             push(@permitted_roles,keys(%customroles));              push(@permitted_roles,keys(%customroles));

Removed from v.1.97.2.5  
changed lines
  Added in v.1.100


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>