Diff for /loncom/interface/lonuserutils.pm between versions 1.97.2.12 and 1.101

version 1.97.2.12, 2010/01/20 21:37:37 version 1.101, 2009/10/30 03:57:35
Line 91  sub modifyuserrole { Line 91  sub modifyuserrole {
     if ($setting eq 'course' || $context eq 'course') {      if ($setting eq 'course' || $context eq 'course') {
         $scope = '/'.$cid;          $scope = '/'.$cid;
         $scope =~ s/\_/\//g;          $scope =~ s/\_/\//g;
         if (($role ne 'cc') && ($role ne 'co') && ($sec ne '')) {          if ($role ne 'cc' && $sec ne '') {
             $scope .='/'.$sec;              $scope .='/'.$sec;
         }          }
     } elsif ($context eq 'domain') {      } elsif ($context eq 'domain') {
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 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');
Line 295  sub hidden_input { Line 291  sub hidden_input {
 }  }
   
 sub print_upload_manager_header {  sub print_upload_manager_header {
     my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission,$crstype)=@_;      my ($r,$datatoken,$distotal,$krbdefdom,$context,$permission)=@_;
     my $javascript;      my $javascript;
     #      #
     if (! exists($env{'form.upfile_associate'})) {      if (! exists($env{'form.upfile_associate'})) {
Line 332  sub print_upload_manager_header { Line 328  sub print_upload_manager_header {
     my $javascript_validations =      my $javascript_validations =
         &javascript_validations('upload',$krbdefdom,$password_choice,undef,          &javascript_validations('upload',$krbdefdom,$password_choice,undef,
                                 $env{'request.role.domain'},$context,                                  $env{'request.role.domain'},$context,
                                 $groupslist,$crstype);                                  $groupslist);
     my $checked=(($env{'form.noFirstLine'})?' checked="checked"':'');      my $checked=(($env{'form.noFirstLine'})?' checked="checked"':'');
     $r->print('<p>'      $r->print('<p>'
              .&mt('Total number of records found in file: [_1]'               .&mt('Total number of records found in file: [_1]'
Line 365  sub print_upload_manager_header { Line 361  sub print_upload_manager_header {
 ###############################################################  ###############################################################
 sub javascript_validations {  sub javascript_validations {
     my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,      my ($mode,$krbdefdom,$curr_authtype,$curr_authfield,$domain,
         $context,$groupslist,$crstype)=@_;          $context,$groupslist)=@_;
     my %param = (      my %param = (
                   kerb_def_dom => $krbdefdom,                    kerb_def_dom => $krbdefdom,
                   curr_authtype => $curr_authtype,                    curr_authtype => $curr_authtype,
Line 386  sub javascript_validations { Line 382  sub javascript_validations {
         if (($context eq 'course') || ($context eq 'domain')) {          if (($context eq 'course') || ($context eq 'domain')) {
             if ($context eq 'course') {              if ($context eq 'course') {
                 if ($env{'request.course.sec'} eq '') {                  if ($env{'request.course.sec'} eq '') {
                     $setsection_call = 'setSections(document.'.$param{'formname'}.",'$crstype'".');';                      $setsection_call = 'setSections(document.'.$param{'formname'}.');';
                     $setsections_js =                      $setsections_js =
                         &setsections_javascript($param{'formname'},$groupslist,                          &setsections_javascript($param{'formname'},$groupslist,
                                                 $mode,'',$crstype);                                                  $mode);
                 } else {                  } else {
                     $setsection_call = "'ok'";                      $setsection_call = "'ok'";
                 }                  }
Line 830  sub print_upload_manager_footer { Line 826  sub print_upload_manager_footer {
                .'&nbsp;'.&mt('Add a domain role').'</label>'                 .'&nbsp;'.&mt('Add a domain role').'</label>'
                .'&nbsp;&nbsp;&nbsp;<label>'                 .'&nbsp;&nbsp;&nbsp;<label>'
                .'<input type="radio" name="roleaction" value="course" />'                 .'<input type="radio" name="roleaction" value="course" />'
                .'&nbsp;'.&mt('Add a course/community role').'</label>'                 .'&nbsp;'.&mt('Add a course role').'</label>'
                .'</span>';                 .'</span>';
     } elsif ($context eq 'author') {      } elsif ($context eq 'author') {
         $Str .= &Apache::lonhtmlcommon::row_title(          $Str .= &Apache::lonhtmlcommon::row_title(
Line 899  sub print_upload_manager_footer { Line 895  sub print_upload_manager_footer {
            .'<hr />';             .'<hr />';
     if ($context eq 'course') {      if ($context eq 'course') {
         $Str .= '<p class="LC_info">'          $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>';                 .'</p>';
     }      }
     $Str .= '<p><input type="button"'      $Str .= '<p><input type="button"'
Line 979  sub print_upload_manager_form { Line 975  sub print_upload_manager_form {
         &Apache::loncommon::get_kerberos_defaults($defdom);          &Apache::loncommon::get_kerberos_defaults($defdom);
     #      #
     &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context,      &print_upload_manager_header($r,$datatoken,$distotal,$krbdefdom,$context,
                                  $permission,$crstype);                                   $permission);
     my $i;      my $i;
     my $keyfields;      my $keyfields;
     if ($total>=0) {      if ($total>=0) {
Line 1141  sub date_setting_table { Line 1137  sub date_setting_table {
 }  }
   
 sub make_dates_default {  sub make_dates_default {
     my ($startdate,$enddate,$context,$crstype = @_;      my ($startdate,$enddate,$context,$crstype) = @_;
     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 1176  sub default_role_selector { Line 1172  sub default_role_selector {
     my %customroles;      my %customroles;
     my ($options,$coursepick,$cb_jscript);      my ($options,$coursepick,$cb_jscript);
     if ($context ne 'author') {      if ($context ne 'author') {
         %customroles = &my_custom_roles($crstype);          %customroles = &my_custom_roles();
     }      }
   
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
Line 1202  sub default_role_selector { Line 1198  sub default_role_selector {
            $options .= '  <option value="'.$role.'">'.$plrole.'</option>';             $options .= '  <option value="'.$role.'">'.$plrole.'</option>';
         }          }
         my $courseform = &Apache::loncommon::selectcourse_link          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 =           $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().          $coursepick = &Apache::loncommon::start_data_table().
                       &Apache::loncommon::start_data_table_header_row().                        &Apache::loncommon::start_data_table_header_row().
                       '<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th>'.                        '<th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th>'.
                       '<th>'.$lt{'grs'}.'</th>'.                        '<th>'.$lt{'grs'}.'</th>'.
                       &Apache::loncommon::end_data_table_header_row().                        &Apache::loncommon::end_data_table_header_row().
                       &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','','','','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".                        '<td><select name="courserole">'."\n".
                       &default_course_roles($context,$checkpriv,'Course',%customroles)."\n".                        &default_course_roles($context,$checkpriv,'Course',%customroles)."\n".
                       '</select></td><td>'.                        '</select></td><td>'.
Line 1229  sub default_role_selector { Line 1225  sub default_role_selector {
                       $env{'request.role.domain'}.'" />'.                        $env{'request.role.domain'}.'" />'.
                       '<input type="hidden" name="dccourse" value="" />'.                        '<input type="hidden" name="dccourse" value="" />'.
                       '<input type="hidden" name="dcdomain" value="" />'.                        '<input type="hidden" name="dcdomain" value="" />'.
                       '<input type="hidden" name="crstype" value="" />'.  
                       '</td></tr></table></td>'.                        '</td></tr></table></td>'.
                       &Apache::loncommon::end_data_table_row().                        &Apache::loncommon::end_data_table_row().
                       &Apache::loncommon::end_data_table()."\n";                        &Apache::loncommon::end_data_table()."\n";
Line 1295  sub domain_roles { Line 1290  sub domain_roles {
   
 sub course_roles {  sub course_roles {
     my ($context,$checkpriv,$custom,$roletype) = @_;      my ($context,$checkpriv,$custom,$roletype) = @_;
     my $crstype;      my @allroles = &roles_by_context('course',$custom,$roletype);
     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 1350  sub curr_role_permissions { Line 1339  sub curr_role_permissions {
 # ======================================================= Existing Custom Roles  # ======================================================= Existing Custom Roles
   
 sub my_custom_roles {  sub my_custom_roles {
     my ($crstype) = @_;  
     my %returnhash=();      my %returnhash=();
     my %rolehash=&Apache::lonnet::dump('roles');      my %rolehash=&Apache::lonnet::dump('roles');
     foreach my $key (keys(%rolehash)) {      foreach my $key (keys %rolehash) {
         if ($key=~/^rolesdef\_(\w+)$/) {          if ($key=~/^rolesdef\_(\w+)$/) {
             if ($crstype eq 'Community') {  
                 next if ($rolehash{$key} =~ /bre\&S/);   
             }  
             $returnhash{$1}=$1;              $returnhash{$1}=$1;
         }          }
     }      }
Line 1446  sub print_userlist { Line 1431  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(                    "\n</p>\n");
             "\n</p>\n"  
            .'<p>'  
            .&list_submit_button(&mt('Update Display'))  
            ."</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 1562  sub print_userlist { Line 1523  sub print_userlist {
                         }                          }
                     }                      }
                 }                  }
             } elsif ($env{'form.roletype'} eq 'course') {              } elsif (($env{'form.roletype'} eq 'course') ||
                 if (($env{'form.coursepick'}) && (!$clearcoursepick)) {                       ($env{'form.roletype'} eq 'community')) {
                   if ($env{'form.coursepick'}) {
                     my %courses = &process_coursepick();                      my %courses = &process_coursepick();
                     my %allusers;                      my %allusers;
                     my $hidepriv = 1;                      my $hidepriv = 1;
Line 1720  sub section_group_filter { Line 1682  sub section_group_filter {
             $env{'form.'.$name{$item}} = 'all';              $env{'form.'.$name{$item}} = 'all';
         }          }
         if ($item eq 'sec') {          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';                  $env{'form.'.$name{$item}} = 'none';
             }              }
             my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);              my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
Line 1746  sub section_group_filter { Line 1708  sub section_group_filter {
                 $markup .= '</option>'."\n";                  $markup .= '</option>'."\n";
             }              }
             $markup .= '</select>'."\n";              $markup .= '</select>'."\n";
             $output .= ('&nbsp;'x3).'<span class="LC_nobreak">'              $output .= ('&nbsp;'x3).'<label>'.$title{$item}.': '.$markup.'</label>';
                       .'<label>'.$title{$item}.': '.$markup.'</label>'  
                       .'</span> ';  
         }          }
     }      }
     return $output;      return $output;
Line 1801  sub gather_userinfo { Line 1761  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 1852  sub gather_userinfo { Line 1811  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 1968  sub process_coursepick { Line 1926  sub process_coursepick {
     my $coursefilter = $env{'form.coursepick'};      my $coursefilter = $env{'form.coursepick'};
     my $cdom = $env{'request.role.domain'};      my $cdom = $env{'request.role.domain'};
     my %courses;      my %courses;
     my $crssrch = 'Course';  
     if ($env{'form.roletype'} eq 'community') {  
         $crssrch = 'Community';  
     }  
     if ($coursefilter eq 'all') {      if ($coursefilter eq 'all') {
         %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.',          %courses = &Apache::lonnet::courseiddump($cdom,'.','.','.','.','.',
                                                  undef,undef,$crssrch);                                                   undef,undef,'Course');
     } elsif ($coursefilter eq 'category') {      } elsif ($coursefilter eq 'category') {
         my $instcode = &instcode_from_coursefilter();          my $instcode = &instcode_from_coursefilter();
         %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.',          %courses = &Apache::lonnet::courseiddump($cdom,'.','.',$instcode,'.','.',
                                                  undef,undef,$crssrch);                                                   undef,undef,'Course');
     } elsif ($coursefilter eq 'specific') {      } elsif ($coursefilter eq 'specific') {
         if ($env{'form.coursetotal'} > 1) {          if ($env{'form.coursetotal'} > 1) {
             my @course_ids = split(/&&/,$env{'form.courselist'});              my @course_ids = split(/&&/,$env{'form.courselist'});
Line 2160  function photowindow(photolink) { Line 2114  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 ($setting 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 2262  END Line 2210  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 2275  END Line 2221  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 2302  END Line 2245  END
     if ($env{'form.showrole'} eq 'cr') {      if ($env{'form.showrole'} eq 'cr') {
         $rolefilter = &mt('custom');            $rolefilter = &mt('custom');  
     } elsif ($env{'form.showrole'} ne 'Any') {      } elsif ($env{'form.showrole'} ne 'Any') {
         $rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'});          $rolefilter = &Apache::lonnet::plaintext($env{'form.showrole'},$crstype);
     }      }
     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);
     if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') {      if ($mode eq 'html' || $mode eq 'view' || $mode eq 'autoenroll' || $mode eq 'pickauthor') {
         if ($mode ne 'autoenroll' && $mode ne 'pickauthor') {          if ($mode ne 'autoenroll' && $mode ne 'pickauthor') {
             if ($permission->{'cusr'}) {              if ($permission->{'cusr'}) {
                 unless (($context eq 'domain') &&                   $actionselect = &select_actions($context,$setting,$statusmode,$formname);
                         (($setting eq 'course') || ($setting eq 'community'))) {  
                     $actionselect =   
                         &select_actions($context,$setting,$statusmode,$formname);  
                 }  
             }              }
             $r->print(<<END);              $r->print(<<END);
 <input type="hidden" name="srchby"  value="uname" />  <input type="hidden" name="srchby"  value="uname" />
Line 2330  END Line 2268  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 2375  END Line 2313  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 2386  END Line 2324  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 2412  END Line 2351  END
  <th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th>   <th><a href=\"javascript:document.$formname.sortby.value='type';document.$formname.submit();\">$lt{'type'}</a></th>
             ";              ";
         } else {          } 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) {              if ($actionselect) {
                 $output .= '<th>'.&mt('Select').'</th>'."\n";                  $output .= '<th>'.&mt('Select').'</th>'."\n";
             }              }
Line 2467  END Line 2410  END
                        time.'_'.rand(1000000000).'.csv';                         time.'_'.rand(1000000000).'.csv';
         unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) {          unless ($CSVfile = Apache::File->new('>/home/httpd'.$CSVfilename)) {
             $r->log_error("Couldn't open $CSVfilename for output $!");              $r->log_error("Couldn't open $CSVfilename for output $!");
             $r->print(              $r->print(&mt('Problems occurred in writing the CSV file. '
                 '<p class="LC_error">'                           .'This error has been logged. '
                .&mt('Problems occurred in writing the CSV file.')                           .'Please alert your LON-CAPA administrator.'));
                .' '.&mt('This error has been logged.')  
                .' '.&mt('Please alert your LON-CAPA administrator.')  
                .'</p>'  
             );  
             $CSVfile = undef;              $CSVfile = undef;
         }          }
         #          #
Line 2547  END Line 2486  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 2954  sub role_type_names { Line 2892  sub role_type_names {
                          'author' => 'Co-Author Roles',                           'author' => 'Co-Author Roles',
                          'course' => 'Course Roles',                           'course' => 'Course Roles',
                          'community' => 'Community Roles',                           'community' => 'Community Roles',
   
              );               );
     return %lt;      return %lt;
 }  }
Line 3116  END Line 3053  END
         } else {          } else {
             opener.document.$callingform.retainsec.value = formname.retainsec.value;              opener.document.$callingform.retainsec.value = formname.retainsec.value;
         }          }
         setSections(formname,'$crstype');          setSections(formname);
         if (seccheck == 'ok') {          if (seccheck == 'ok') {
             opener.document.$callingform.newsecs.value = formname.sections.value;              opener.document.$callingform.newsecs.value = formname.sections.value;
         }          }
Line 3176  ENDJS Line 3113  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.',                   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.',                   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?",                    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);      my ($date_items,$headertext);
     if ($env{'form.bulkaction'} eq 'chgsec') {      if ($env{'form.bulkaction'} eq 'chgsec') {
Line 3198  ENDJS Line 3135  ENDJS
     if ($context eq 'course' && $env{'form.bulkaction'} eq 'chgsec') {      if ($context eq 'course' && $env{'form.bulkaction'} eq 'chgsec') {
         my ($cnum,$cdom) = &get_course_identity();          my ($cnum,$cdom) = &get_course_identity();
         my $crstype = &Apache::loncommon::course_type();          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;          my $info;
         if ($env{'form.showrole'} eq 'st') {          if ($env{'form.showrole'} eq 'st') {
             $output .= '<p>'.$lt{'fors'}.'</p>';               $output .= '<p>'.$lt{'fors'}.'</p>'; 
Line 3268  sub section_picker { Line 3200  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 3319  sub results_header_row { Line 3227  sub results_header_row {
         if ($viewablesec ne '') {          if ($viewablesec ne '') {
             if ($env{'form.showrole'} eq 'st') {              if ($env{'form.showrole'} eq 'st') {
                 $constraint = &mt('only users in section "[_1]"',$viewablesec);                  $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);                  $constraint = &mt('only users affiliated with no section or section "[_1]"',$viewablesec);
             }              }
             if (($env{'form.grpfilter'} ne 'all') && ($env{'form.grpfilter'} ne '')) {              if (($env{'form.grpfilter'} ne 'all') && ($env{'form.grpfilter'} ne '')) {
Line 3407  sub results_header_row { Line 3315  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 3662  sub print_first_users_upload_form { Line 3560  sub print_first_users_upload_form {
     $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";
   
     # Excel and CSV Help      # Excel and CSV Help
     $str .= '<div class="LC_left_float">'      $str .= '<p>'
            .&Apache::loncommon::help_open_topic("Course_Create_Class_List",             .&Apache::loncommon::help_open_topic("Course_Create_Class_List",
                 &mt("How do I create a users list from a spreadsheet"))                  &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",             .&Apache::loncommon::help_open_topic("Course_Convert_To_CSV",
                 &mt("How do I create a CSV file from a spreadsheet"))                  &mt("How do I create a CSV file from a spreadsheet"))
            .'</div><br clear="all" />'."\n";             ."</p>\n";
   
     $str .= &Apache::lonhtmlcommon::start_pick_box()      $str .= &Apache::lonhtmlcommon::start_pick_box()
            .&Apache::lonhtmlcommon::row_title(&mt('File'))             .&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::loncommon::upfile_select_html()
            .&Apache::lonhtmlcommon::row_closure()             .&Apache::lonhtmlcommon::row_closure()
            .&Apache::lonhtmlcommon::row_title(             .&Apache::lonhtmlcommon::row_title(
Line 3689  sub print_first_users_upload_form { Line 3590  sub print_first_users_upload_form {
            .'<input type="submit" name="fileupload" value="'.&mt('Next').'" />'             .'<input type="submit" name="fileupload" value="'.&mt('Next').'" />'
            .'</p>';             .'</p>';
   
       $str .= &Apache::loncommon::end_page();
   
     $r->print($str);      $r->print($str);
     return;      return;
 }  }
Line 3750  sub upfile_drop_add { Line 3653  sub upfile_drop_add {
     }      }
     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,$crstype));
     }      }
     # 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 3809  sub upfile_drop_add { Line 3712  sub upfile_drop_add {
         } 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') {
Line 3828  sub upfile_drop_add { Line 3731  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,'',$crstype);
     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,'','',$crstype);
Line 3917  sub upfile_drop_add { Line 3820  sub upfile_drop_add {
             }              }
         }          }
         my (%curr_rules,%got_rules,%alerts);          my (%curr_rules,%got_rules,%alerts);
         my %customroles = &my_custom_roles($crstype);          my %customroles = &my_custom_roles();
         my @permitted_roles =           my @permitted_roles = 
             &roles_on_upload($context,$setting,$crstype,%customroles);               &roles_on_upload($context,$setting,$crstype,%customroles); 
         # Get new users list          # Get new users list
Line 4161  sub upfile_drop_add { Line 4064  sub upfile_drop_add {
                                         $role = 'cr_'.$env{'user.domain'}.'_'.                                          $role = 'cr_'.$env{'user.domain'}.'_'.
                                                 $env{'user.name'}.'_'.$role;                                                  $env{'user.name'}.'_'.$role;
                                     }                                      }
                                     if (($role ne 'cc') && ($role ne 'co')) {                                      if ($role ne 'cc') { 
                                         if (@secs > 1) {                                          if (@secs > 1) {
                                             $multiple = 1;                                              $multiple = 1;
                                             foreach my $sec (@secs) {                                              foreach my $sec (@secs) {
Line 4522  sub update_user_list { Line 4425  sub update_user_list {
                 }                  }
             } elsif ($choice eq 'chgsec') {              } elsif ($choice eq 'chgsec') {
                 my (@newsecs,$revresult,$nochg,@retained);                  my (@newsecs,$revresult,$nochg,@retained);
                 if (($role ne 'cc') && ($role ne 'co')) {                  if ($role ne 'cc') {
                     @newsecs = split(/,/,$env{'form.newsecs'});                      @newsecs = split(/,/,$env{'form.newsecs'});
                 }                  }
                 # remove existing section if not to be retained.                     # remove existing section if not to be retained.   
Line 4777  sub get_groupslist { Line 4680  sub get_groupslist {
 }  }
   
 sub setsections_javascript {  sub setsections_javascript {
     my ($formname,$groupslist,$mode,$checkauth,$crstype) = @_;      my ($formname,$groupslist,$mode,$checkauth) = @_;
     my ($checkincluded,$finish,$rolecode,$setsection_js);      my ($checkincluded,$finish,$rolecode,$setsection_js);
     if ($mode eq 'upload') {      if ($mode eq 'upload') {
         $checkincluded = 'formname.name == "'.$formname.'"';          $checkincluded = 'formname.name == "'.$formname.'"';
Line 4816  sub setsections_javascript { Line 4719  sub setsections_javascript {
     }      }
     my %alerts = &Apache::lonlocal::texthash(      my %alerts = &Apache::lonlocal::texthash(
                     secd => 'Section designations do not apply to Course Coordinator roles.',                      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.',                      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.',                      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 ',                      youh => 'You had selected ',
                     secs => 'sections.',                      secs => 'sections.',
                     plmo => 'Please modify your selections so they include no more than one section.',                      plmo => 'Please modify your selections so they include no more than one section.',
Line 4831  sub setsections_javascript { Line 4731  sub setsections_javascript {
                  );                                   );                
     $setsection_js .= <<"ENDSECCODE";      $setsection_js .= <<"ENDSECCODE";
   
 function setSections(formname,crstype) {  function setSections(formname) {
     var re1 = /^currsec_/;      var re1 = /^currsec_/;
     var groups = new Array($groupslist);      var groups = new Array($groupslist);
     for (var i=0;i<formname.elements.length;i++) {      for (var i=0;i<formname.elements.length;i++) {
Line 4840  function setSections(formname,crstype) { Line 4740  function setSections(formname,crstype) {
         if (checkcurr != null) {          if (checkcurr != null) {
             if ($checkincluded) {              if ($checkincluded) {
                 $rolecode                  $rolecode
                 if (role == 'cc' || role == 'co') {                  if (role == 'cc') {
                     if (role == 'cc') {                      alert("$alerts{'secd'}\\n$alerts{'accr'}");
                         alert("$alerts{'secd'}\\n$alerts{'accr'}");                  }
                     } else {                  else {
                         alert("$alerts{'sedn'}\\n$alerts{'acor'}");  
                     }  
                 } else {  
                     var sections = '';                      var sections = '';
                     var numsec = 0;                      var numsec = 0;
                     var sections;                      var sections;
Line 4882  function setSections(formname,crstype) { Line 4779  function setSections(formname,crstype) {
                     }                      }
   
                     if ((role == 'st') && (numsec > 1)) {                      if ((role == 'st') && (numsec > 1)) {
                         if (crstype == 'Community') {                          alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}")
                             alert("$alerts{'inea'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}");  
                         } else {  
                             alert("$alerts{'inco'} $alerts{'youh'} "+numsec+" $alerts{'secs'}\\n$alerts{'plmo'}");  
                         }  
                         return;                          return;
                     }                      }
                     else {                      else {
Line 5160  sub dc_setcourse_js { Line 5053  sub dc_setcourse_js {
     my ($formname,$mode,$context) = @_;      my ($formname,$mode,$context) = @_;
     my ($dc_setcourse_code,$authen_check);      my ($dc_setcourse_code,$authen_check);
     my $cctext = &Apache::lonnet::plaintext('cc');      my $cctext = &Apache::lonnet::plaintext('cc');
     my $cotext = &Apache::lonnet::plaintext('co');  
     my %alerts = &sectioncheck_alerts();      my %alerts = &sectioncheck_alerts();
     my $role = 'role';      my $role = 'role';
     if ($mode eq 'upload') {      if ($mode eq 'upload') {
Line 5207  function setCourse() { Line 5099  function setCourse() {
             numsections = numsections + newsecs.length;              numsections = numsections + newsecs.length;
         }          }
         if ((userrole == 'st') && (numsections > 1)) {          if ((userrole == 'st') && (numsections > 1)) {
             if (document.$formname.crstype.value == 'Community') {              alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.")
                 alert("$alerts{'inco'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.")  
             } else {  
                 alert("$alerts{'inea'}. $alerts{'youh'} "+numsections+" $alerts{'sect'}.\\n$alerts{'plsm'}.")  
             }  
             return;              return;
         }          }
         for (var j=0; j<newsecs.length; j++) {          for (var j=0; j<newsecs.length; j++) {
Line 5223  function setCourse() { Line 5111  function setCourse() {
                 var groups = document.$formname.groups.value.split(/,/g);                  var groups = document.$formname.groups.value.split(/,/g);
                 for (var k=0; k<groups.length; k++) {                  for (var k=0; k<groups.length; k++) {
                     if (newsecs[j] == groups[k]) {                      if (newsecs[j] == groups[k]) {
                         if (document.$formname.crstype.value == 'Community') {                          alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}.");
                             alert("'"+newsecs[j]+"' $alerts{'mayc'}.\\n$alerts{'secn'}. $alerts{'plsc'}.");  
                         } else {  
                             alert("'"+newsecs[j]+"' $alerts{'mayt'}.\\n$alerts{'secn'}. $alerts{'plsc'}.");  
                         }  
                         return;                          return;
                     }                      }
                 }                  }
Line 5237  function setCourse() { Line 5121  function setCourse() {
             alert("$alerts{'secd'} $cctext $alerts{'role'}.\\n$alerts{'accr'}.");              alert("$alerts{'secd'} $cctext $alerts{'role'}.\\n$alerts{'accr'}.");
             section = "";              section = "";
         }          }
         if ((userrole == 'co') && (numsections > 0)) {  
             alert("$alerts{'secd'} $cotext $alerts{'role'}.\\n$alerts{'accr'}.");  
             section = "";  
         }  
 SCRIPTTOP  SCRIPTTOP
     if ($mode ne 'upload') {      if ($mode ne 'upload') {
         $dc_setcourse_code .= (<<"ENDSCRIPT");          $dc_setcourse_code .= (<<"ENDSCRIPT");
         var coursename = "_$env{'request.role.domain'}"+"_"+course+"_"+userrole          var coursename = "_$env{'request.role.domain'}"+"_"+course+"_"+userrole
         var numcourse = getIndex(document.$formname.dccourse);          var numcourse = getIndex(document.$formname.dccourse);
         if (numcourse == "-1") {          if (numcourse == "-1") {
             if (document.$formname.type == 'Community') {              alert("$alerts{'thwa'}");
                 alert("$alerts{'thwc'}");  
             } else {  
                 alert("$alerts{'thwa'}");  
             }  
             return;              return;
         }          }
         else {          else {
Line 5360  ENDSCRIPT Line 5236  ENDSCRIPT
   
 sub sectioncheck_alerts {  sub sectioncheck_alerts {
     my %alerts = &Apache::lonlocal::texthash(      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',                      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',                      youh => 'You had selected',
                     sect => 'sections',                      sect => 'sections',
                     plsm => 'Please modify your selections so they include no more than one section',                      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',                      mayn => 'may not be used as the name for a section, as it is a reserved word',
                     plsc => 'Please choose a different section name',                      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',                      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',                      secn => 'Section names and group names must be distinct',
                     secd => 'Section designations do not apply to ',                      secd => 'Section designations do not apply to ',
                     role => 'roles',                      role => 'roles',
                     accr => 'role will be added with access to all sections',                      accr => 'role will be added with access to all sections',
                     thwa => 'There was a problem with your course selection',                      thwa => 'There was a problem with your course selection'
                     thwc => 'There was a problem with your community selection',  
                  );                   );
     return %alerts;      return %alerts;
 }  }

Removed from v.1.97.2.12  
changed lines
  Added in v.1.101


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