Diff for /loncom/interface/loncreateuser.pm between versions 1.371 and 1.377

version 1.371, 2012/12/31 15:28:36 version 1.377, 2013/06/04 23:12:08
Line 1042  sub print_user_query_page { Line 1042  sub print_user_query_page {
 }  }
   
 sub print_user_modification_page {  sub print_user_modification_page {
     my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype,$brcrum) = @_;      my ($r,$ccuname,$ccdomain,$srch,$response,$context,$permission,$crstype,
           $brcrum,$showcredits) = @_;
     if (($ccuname eq '') || ($ccdomain eq '')) {      if (($ccuname eq '') || ($ccdomain eq '')) {
         my $usermsg = &mt('No username and/or domain provided.');          my $usermsg = &mt('No username and/or domain provided.');
         $env{'form.phase'} = '';          $env{'form.phase'} = '';
Line 1133  sub print_user_modification_page { Line 1134  sub print_user_modification_page {
   
     my $groupslist = &Apache::lonuserutils::get_groupslist();      my $groupslist = &Apache::lonuserutils::get_groupslist();
   
     my $js = &validation_javascript($context,$ccdomain,$pjump_def,      my $js = &validation_javascript($context,$ccdomain,$pjump_def,$crstype,
                                $groupslist,$newuser,$formname,\%loaditem);                                 $groupslist,$newuser,$formname,\%loaditem);
     my %breadcrumb_text = &singleuser_breadcrumb($crstype);      my %breadcrumb_text = &singleuser_breadcrumb($crstype);
     my $helpitem = 'Course_Change_Privileges';      my $helpitem = 'Course_Change_Privileges';
Line 1176  sub print_user_modification_page { Line 1177  sub print_user_modification_page {
 <input type="hidden" name="pres_type"   value="" />  <input type="hidden" name="pres_type"   value="" />
 <input type="hidden" name="pres_marker" value="" />  <input type="hidden" name="pres_marker" value="" />
 ENDFORMINFO  ENDFORMINFO
     my (%inccourses,$roledom);      my (%inccourses,$roledom,$defaultcredits);
     if ($context eq 'course') {      if ($context eq 'course') {
         $inccourses{$env{'request.course.id'}}=1;          $inccourses{$env{'request.course.id'}}=1;
         $roledom = $env{'course.'.$env{'request.course.id'}.'.domain'};          $roledom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           if ($showcredits) {
               $defaultcredits = &Apache::lonuserutils::get_defaultcredits();
           }
     } elsif ($context eq 'author') {      } elsif ($context eq 'author') {
         $roledom = $env{'request.role.domain'};          $roledom = $env{'request.role.domain'};
     } elsif ($context eq 'domain') {      } elsif ($context eq 'domain') {
Line 1319  ENDAUTH Line 1323  ENDAUTH
         $r->print($portfolioform.$domroleform);          $r->print($portfolioform.$domroleform);
         if ($env{'form.action'} eq 'singlestudent') {          if ($env{'form.action'} eq 'singlestudent') {
             $r->print(&date_sections_select($context,$newuser,$formname,              $r->print(&date_sections_select($context,$newuser,$formname,
                                             $permission));                                              $permission,$crstype,$ccuname,
                                               $ccdomain,$showcredits));
         }          }
         $r->print('</div><div class="LC_clear_float_footer"></div>');          $r->print('</div><div class="LC_clear_float_footer"></div>');
     } else { # user already exists      } else { # user already exists
Line 1421  ENDNOTOOLSPRIV Line 1426  ENDNOTOOLSPRIV
             unless ($gotdiv) {              unless ($gotdiv) {
                 $r->print('<div class="LC_left_float">');                  $r->print('<div class="LC_left_float">');
             }              }
             $r->print(&date_sections_select($context,$newuser,$formname));              my $credits;
         }               if ($showcredits) {
                   $credits = &get_user_credits($ccuname,$ccdomain,$defaultcredits);
                   if ($credits eq '') {
                       $credits = $defaultcredits;
                   }
               }
               $r->print(&date_sections_select($context,$newuser,$formname,
                                               $permission,$crstype,$ccuname,
                                               $ccdomain,$showcredits));
           }
         if ($gotdiv) {          if ($gotdiv) {
             $r->print('</div><div class="LC_clear_float_footer"></div>');              $r->print('</div><div class="LC_clear_float_footer"></div>');
         }          }
Line 1440  ENDNOTOOLSPRIV Line 1454  ENDNOTOOLSPRIV
         }          }
         $r->print('<br /><input type="button" value="'.$btntxt.'" onclick="setSections(this.form)" />'."\n");          $r->print('<br /><input type="button" value="'.$btntxt.'" onclick="setSections(this.form)" />'."\n");
     } else {      } else {
         $r->print('<h3>'.&mt('Add Roles').'</h3>');          $r->print('<fieldset><legend>'.&mt('Add Roles').'</legend>');
         my $addrolesdisplay = 0;          my $addrolesdisplay = 0;
         if ($context eq 'domain' || $context eq 'author') {          if ($context eq 'domain' || $context eq 'author') {
             $addrolesdisplay = &new_coauthor_roles($r,$ccuname,$ccdomain);              $addrolesdisplay = &new_coauthor_roles($r,$ccuname,$ccdomain);
Line 1450  ENDNOTOOLSPRIV Line 1464  ENDNOTOOLSPRIV
             if (!$addrolesdisplay) {              if (!$addrolesdisplay) {
                 $addrolesdisplay = $add_domainroles;                  $addrolesdisplay = $add_domainroles;
             }              }
             $r->print(&course_level_dc($env{'request.role.domain'},'Course'));              $r->print(&course_level_dc($env{'request.role.domain'},$showcredits));
             $r->print('<br /><input type="button" value="'.&mt('Save').'" onclick="setCourse()" />'."\n");              $r->print('</fieldset><br /><input type="button" value="'.&mt('Save').'" onclick="setCourse()" />'."\n");
         } elsif ($context eq 'author') {          } elsif ($context eq 'author') {
             if ($addrolesdisplay) {              if ($addrolesdisplay) {
                 $r->print('<br /><input type="button" value="'.&mt('Save').'"');                  $r->print('</fieldset><br /><input type="button" value="'.&mt('Save').'"');
                 if ($newuser) {                  if ($newuser) {
                     $r->print(' onclick="auth_check()" \>'."\n");                      $r->print(' onclick="auth_check()" \>'."\n");
                 } else {                  } else {
                     $r->print('onclick="this.form.submit()" \>'."\n");                      $r->print('onclick="this.form.submit()" \>'."\n");
                 }                  }
             } else {              } else {
                 $r->print('<br /><a href="javascript:backPage(document.cu)">'.                  $r->print('</fieldset><br /><a href="javascript:backPage(document.cu)">'.
                           &mt('Back to previous page').'</a>');                            &mt('Back to previous page').'</a>');
             }              }
         } else {          } else {
             $r->print(&course_level_table(%inccourses));              $r->print(&course_level_table(\%inccourses,$showcredits,$defaultcredits));
             $r->print('<br /><input type="button" value="'.&mt('Save').'" onclick="setSections(this.form)" />'."\n");              $r->print('</fieldset><br /><input type="button" value="'.&mt('Save').'" onclick="setSections(this.form)" />'."\n");
         }          }
     }      }
     $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));      $r->print(&Apache::lonhtmlcommon::echo_form_input(['phase','userrole','ccdomain','prevphase','currstate','ccuname','ccdomain']));
Line 1495  sub singleuser_breadcrumb { Line 1509  sub singleuser_breadcrumb {
 }  }
   
 sub date_sections_select {  sub date_sections_select {
     my ($context,$newuser,$formname,$permission) = @_;      my ($context,$newuser,$formname,$permission,$crstype,$ccuname,$ccdomain,
           $showcredits) = @_;
       my $credits;
       if ($showcredits) {
           my $defaultcredits = &Apache::lonuserutils::get_defaultcredits();
           $credits = &get_user_credits($ccuname,$ccdomain,$defaultcredits);
           if ($credits eq '') {
               $credits = $defaultcredits;
           }
       }
     my $cid = $env{'request.course.id'};      my $cid = $env{'request.course.id'};
     my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity($cid);      my ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity($cid);
     my $date_table = '<h3>'.&mt('Starting and Ending Dates').'</h3>'."\n".      my $date_table = '<h3>'.&mt('Starting and Ending Dates').'</h3>'."\n".
         &Apache::lonuserutils::date_setting_table(undef,undef,$context,          &Apache::lonuserutils::date_setting_table(undef,undef,$context,
                                                   undef,$formname,$permission);                                                    undef,$formname,$permission);
     my $rowtitle = 'Section';      my $rowtitle = 'Section';
     my $secbox = '<h3>'.&mt('Section').'</h3>'."\n".      my $secbox = '<h3>'.&mt('Section and Credits').'</h3>'."\n".
         &Apache::lonuserutils::section_picker($cdom,$cnum,'st',$rowtitle,          &Apache::lonuserutils::section_picker($cdom,$cnum,'st',$rowtitle,
                                               $permission);                                                $permission,$context,'',$crstype,
                                                 $showcredits,$credits);
     my $output = $date_table.$secbox;      my $output = $date_table.$secbox;
     return $output;      return $output;
 }  }
   
 sub validation_javascript {  sub validation_javascript {
     my ($context,$ccdomain,$pjump_def,$groupslist,$newuser,$formname,      my ($context,$ccdomain,$pjump_def,$crstype,$groupslist,$newuser,$formname,
         $loaditem) = @_;          $loaditem) = @_;
     my $dc_setcourse_code = '';      my $dc_setcourse_code = '';
     my $nondc_setsection_code = '';      my $nondc_setsection_code = '';
Line 1527  sub validation_javascript { Line 1551  sub validation_javascript {
         if ($context eq 'course') {          if ($context eq 'course') {
             $nondc_setsection_code =              $nondc_setsection_code =
                 &Apache::lonuserutils::setsections_javascript($formname,$groupslist,                  &Apache::lonuserutils::setsections_javascript($formname,$groupslist,
                                                               undef,$checkauth);                                                                undef,$checkauth,
                                                                 $crstype);
         }          }
         if ($checkauth) {          if ($checkauth) {
             $nondc_setsection_code .=               $nondc_setsection_code .= 
Line 1547  sub validation_javascript { Line 1572  sub validation_javascript {
 }  }
   
 sub display_existing_roles {  sub display_existing_roles {
     my ($r,$ccuname,$ccdomain,$inccourses,$context,$roledom,$crstype) = @_;      my ($r,$ccuname,$ccdomain,$inccourses,$context,$roledom,$crstype,
           $showcredits) = @_;
     my $now=time;      my $now=time;
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     'rer'  => "Existing Roles",                      'rer'  => "Existing Roles",
Line 1556  sub display_existing_roles { Line 1582  sub display_existing_roles {
                     'ren'  => "Re-Enable",                      'ren'  => "Re-Enable",
                     'rol'  => "Role",                      'rol'  => "Role",
                     'ext'  => "Extent",                      'ext'  => "Extent",
                       'crd'  => "Credits",
                     'sta'  => "Start",                      'sta'  => "Start",
                     'end'  => "End",                      'end'  => "End",
                                        );                                         );
Line 1618  sub display_existing_roles { Line 1645  sub display_existing_roles {
         my $delallowed=0;          my $delallowed=0;
         my $sortkey=$role_code;          my $sortkey=$role_code;
         my $class='Unknown';          my $class='Unknown';
           my $credits='';
         if ($area =~ m{^/($match_domain)/($match_courseid)} ) {          if ($area =~ m{^/($match_domain)/($match_courseid)} ) {
             $class='Course';              $class='Course';
             my ($coursedom,$coursedir) = ($1,$2);              my ($coursedom,$coursedir) = ($1,$2);
Line 1646  sub display_existing_roles { Line 1674  sub display_existing_roles {
             }              }
             $sortkey.="\0$coursedir";              $sortkey.="\0$coursedir";
             $inccourses->{$cid}=1;              $inccourses->{$cid}=1;
               if (($showcredits) && ($class eq 'Course') && ($role_code eq 'st')) {
                   my $defaultcredits = $coursedata{'internal.defaultcredits'};
                   $credits =
                       &get_user_credits($ccuname,$ccdomain,$defaultcredits,
                                         $coursedom,$coursedir);
                   if ($credits eq '') {
                       $credits = $defaultcredits;
                   }
               }
             if ((&Apache::lonnet::allowed('c'.$role_code,$coursedom.'/'.$coursedir)) ||              if ((&Apache::lonnet::allowed('c'.$role_code,$coursedom.'/'.$coursedir)) ||
                 (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {                  (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
                 $allowed=1;                  $allowed=1;
Line 1672  sub display_existing_roles { Line 1709  sub display_existing_roles {
                 }                  }
             }              }
             if ($area=~m{^/($match_domain)/($match_courseid)/(\w+)}) {              if ($area=~m{^/($match_domain)/($match_courseid)/(\w+)}) {
                 $carea.='<br />Section: '.$3;                  $carea.='<br />'.&mt('Section: [_1]',$3);
                 $sortkey.="\0$3";                  $sortkey.="\0$3";
                 if (!$allowed) {                  if (!$allowed) {
                     if ($env{'request.course.sec'} eq $3) {                      if ($env{'request.course.sec'} eq $3) {
Line 1702  sub display_existing_roles { Line 1739  sub display_existing_roles {
                 }                  }
             }              }
             if ($role_code eq 'ca' || $role_code eq 'au' || $role_code eq 'aa') {              if ($role_code eq 'ca' || $role_code eq 'au' || $role_code eq 'aa') {
                 $class='Construction Space';                  $class='Authoring Space';
             } elsif ($role_code eq 'su') {              } elsif ($role_code eq 'su') {
                 $class='System';                  $class='System';
             } else {              } else {
Line 1744  sub display_existing_roles { Line 1781  sub display_existing_roles {
         }          }
         my $plaintext='';          my $plaintext='';
         if (!$croletitle) {          if (!$croletitle) {
             $plaintext=&Apache::lonnet::plaintext($role_code,$class)              $plaintext=&Apache::lonnet::plaintext($role_code,$class);
               if (($showcredits) && ($credits ne '')) {
                   $plaintext .= '<br/ ><span class="LC_nobreak">'.
                                 '<span class="LC_fontsize_small">'.
                                 &mt('Credits: [_1]',$credits).
                                 '</span></span>';
               }
         } else {          } else {
             $plaintext=              $plaintext=
                 &mt('Customrole [_1][_2]defined by [_3]',                  &mt('Customrole [_1][_2]defined by [_3]',
Line 1767  sub display_existing_roles { Line 1810  sub display_existing_roles {
   
     my $rolesdisplay = 0;      my $rolesdisplay = 0;
     my %output = ();      my %output = ();
     foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') {      foreach my $type ('Authoring Space','Course','Community','Domain','System','Unknown') {
         $output{$type} = '';          $output{$type} = '';
         foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {          foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) {
             if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) {              if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) {
Line 1793  sub display_existing_roles { Line 1836  sub display_existing_roles {
                 $contextrole = &mt('Existing Roles in this Course');                  $contextrole = &mt('Existing Roles in this Course');
             }              }
         } elsif ($env{'request.role'} =~ /^au\./) {          } elsif ($env{'request.role'} =~ /^au\./) {
             $contextrole = &mt('Existing Co-Author Roles in your Construction Space');              $contextrole = &mt('Existing Co-Author Roles in your Authoring Space');
         } else {          } else {
             $contextrole = &mt('Existing Roles in this Domain');              $contextrole = &mt('Existing Roles in this Domain');
         }          }
         $r->print('          $r->print('<div>'.
 <h3>'.$lt{'rer'}.'</h3>'.  '<fieldset><legend>'.$contextrole.'</legend>'.
 '<div>'.$contextrole.'</div>'.  
 &Apache::loncommon::start_data_table("LC_createuser").  &Apache::loncommon::start_data_table("LC_createuser").
 &Apache::loncommon::start_data_table_header_row().  &Apache::loncommon::start_data_table_header_row().
 '<th>'.$lt{'rev'}.'</th><th>'.$lt{'ren'}.'</th><th>'.$lt{'del'}.  '<th>'.$lt{'rev'}.'</th><th>'.$lt{'ren'}.'</th><th>'.$lt{'del'}.
 '</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.  '</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.
 '</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.  '</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.
 &Apache::loncommon::end_data_table_header_row());  &Apache::loncommon::end_data_table_header_row());
         foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') {          foreach my $type ('Authoring Space','Course','Community','Domain','System','Unknown') {
             if ($output{$type}) {              if ($output{$type}) {
                 $r->print($output{$type}."\n");                  $r->print($output{$type}."\n");
             }              }
         }          }
         $r->print(&Apache::loncommon::end_data_table());          $r->print(&Apache::loncommon::end_data_table().
                     '</fieldset></div>');
     }      }
     return;      return;
 }  }
Line 1830  sub new_coauthor_roles { Line 1873  sub new_coauthor_roles {
         my $cuname=$env{'user.name'};          my $cuname=$env{'user.name'};
         my $cudom=$env{'request.role.domain'};          my $cudom=$env{'request.role.domain'};
         my %lt=&Apache::lonlocal::texthash(          my %lt=&Apache::lonlocal::texthash(
                     'cs'   => "Construction Space",                      'cs'   => "Authoring Space",
                     'act'  => "Activate",                      'act'  => "Activate",
                     'rol'  => "Role",                      'rol'  => "Role",
                     'ext'  => "Extent",                      'ext'  => "Extent",
Line 1881  sub new_coauthor_roles { Line 1924  sub new_coauthor_roles {
                       '</span>');                        '</span>');
         } elsif (($env{'user.name'} eq $ccuname) &&          } elsif (($env{'user.name'} eq $ccuname) &&
              ($env{'user.domain'} eq $ccdomain)) {               ($env{'user.domain'} eq $ccdomain)) {
             $r->print(&mt('Assigning yourself a co-author or assistant co-author role in your own author area in Construction Space is not permitted'));              $r->print(&mt('Assigning yourself a co-author or assistant co-author role in your own author area in Authoring Space is not permitted'));
         }          }
     }      }
     return $addrolesdisplay;;      return $addrolesdisplay;;
Line 2314  sub get_inststatuses { Line 2357  sub get_inststatuses {
   
 # ================================================================= Phase Three  # ================================================================= Phase Three
 sub update_user_data {  sub update_user_data {
     my ($r,$context,$crstype,$brcrum) = @_;       my ($r,$context,$crstype,$brcrum,$showcredits) = @_; 
     my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},      my $uhome=&Apache::lonnet::homeserver($env{'form.ccuname'},
                                           $env{'form.ccdomain'});                                            $env{'form.ccdomain'});
     # Error messages      # Error messages
Line 2593  sub update_user_data { Line 2636  sub update_user_data {
     $r->rflush(); # Finish display of header before time consuming actions start      $r->rflush(); # Finish display of header before time consuming actions start
     &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state);      &Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state);
     ##      ##
     my (@userroles,%userupdate,$cnum,$cdom,%namechanged);      my (@userroles,%userupdate,$cnum,$cdom,$defaultcredits,%namechanged);
     if ($context eq 'course') {      if ($context eq 'course') {
         ($cnum,$cdom) = &Apache::lonuserutils::get_course_identity();          ($cnum,$cdom) =
               &Apache::lonuserutils::get_course_identity();
         $crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum);          $crstype = &Apache::loncommon::course_type($cdom.'_'.$cnum);
           if ($showcredits) {
              $defaultcredits = &Apache::lonuserutils::get_defaultcredits($cdom,$cnum);
           }
     }      }
     if (! $env{'form.makeuser'} ) {      if (! $env{'form.makeuser'} ) {
         # Check for need to change          # Check for need to change
Line 3009  sub update_user_data { Line 3056  sub update_user_data {
     }      }
     &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);      &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
     if ($env{'form.action'} eq 'singlestudent') {      if ($env{'form.action'} eq 'singlestudent') {
         &enroll_single_student($r,$uhome,$amode,$genpwd,$now,$newuser,$context,$crstype);          &enroll_single_student($r,$uhome,$amode,$genpwd,$now,$newuser,$context,
                                  $crstype,$showcredits,$defaultcredits);
         $r->print('<p><a href="javascript:backPage(document.userupdate)">');          $r->print('<p><a href="javascript:backPage(document.userupdate)">');
         if ($crstype eq 'Community') {          if ($crstype eq 'Community') {
             $r->print(&mt('Enroll Another Member'));              $r->print(&mt('Enroll Another Member'));
Line 3018  sub update_user_data { Line 3066  sub update_user_data {
         }          }
         $r->print('</a></p>');          $r->print('</a></p>');
     } else {      } else {
         my @rolechanges = &update_roles($r,$context);          my @rolechanges = &update_roles($r,$context,$showcredits);
         if (keys(%namechanged) > 0) {          if (keys(%namechanged) > 0) {
             if ($context eq 'course') {              if ($context eq 'course') {
                 if (@userroles > 0) {                  if (@userroles > 0) {
Line 3062  sub display_userinfo { Line 3110  sub display_userinfo {
                    ref($newsetting) eq 'HASH' &&                     ref($newsetting) eq 'HASH' &&
                    ref($newsettingtext) eq 'HASH');                     ref($newsettingtext) eq 'HASH');
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
          'ui'             => 'User Information (unchanged)',           'ui'             => 'User Information',
          'uic'            => 'User Information Changed',           'uic'            => 'User Information Changed',
          'firstname'      => 'First Name',           'firstname'      => 'First Name',
          'middlename'     => 'Middle Name',           'middlename'     => 'Middle Name',
Line 3083  sub display_userinfo { Line 3131  sub display_userinfo {
          'prvs'           => 'Previous Value:',           'prvs'           => 'Previous Value:',
          'chto'           => 'Changed To:'           'chto'           => 'Changed To:'
     );      );
     my $title = $lt{'ui'};   
     if ($changed) {      if ($changed) {
         $title = $lt{'uic'};          $r->print('<h3>'.$lt{'uic'}.'</h3>'.
         $r->print('<h4>'.$title.'</h4>'.  
                 &Apache::loncommon::start_data_table().                  &Apache::loncommon::start_data_table().
                 &Apache::loncommon::start_data_table_header_row());                  &Apache::loncommon::start_data_table_header_row());
         $r->print("<th>&nbsp;</th>\n");          $r->print("<th>&nbsp;</th>\n");
Line 3145  sub display_userinfo { Line 3191  sub display_userinfo {
             }              }
         }          }
         $r->print(&Apache::loncommon::end_data_table().'<br />');          $r->print(&Apache::loncommon::end_data_table().'<br />');
       } else {
           $r->print('<h3>'.$lt{'ui'}.'</h3>'.
                     '<p>'.&mt('No changes made to user information').'</p>');
     }      }
     return;      return;
 }  }
Line 3325  sub tool_changes { Line 3374  sub tool_changes {
 }  }
   
 sub update_roles {  sub update_roles {
     my ($r,$context) = @_;      my ($r,$context,$showcredits) = @_;
     my $now=time;      my $now=time;
     my @rolechanges;      my @rolechanges;
     my %disallowed;      my %disallowed;
Line 3345  sub update_roles { Line 3394  sub update_roles {
                 $r->print(&Apache::lonhtmlcommon::confirm_success(                  $r->print(&Apache::lonhtmlcommon::confirm_success(
                             &mt('Revoking [_1] in [_2]',                              &mt('Revoking [_1] in [_2]',
                                 &Apache::lonnet::plaintext($role),                                  &Apache::lonnet::plaintext($role),
                                 '"'.&cid_to_cname($scope).'"'),                                  &Apache::loncommon::show_role_extent($scope,$context,$role)),
                                 $result ne "ok").'<br />');                                  $result ne "ok").'<br />');
                 if ($result ne "ok") {                  if ($result ne "ok") {
                     $r->print(&mt('Error: [_1]',$result).'<br />');                      $r->print(&mt('Error: [_1]',$result).'<br />');
Line 3367  sub update_roles { Line 3416  sub update_roles {
                     $env{'form.ccdomain'},$env{'form.ccuname'},$1,$2,$3,$4,'','',$context);                      $env{'form.ccdomain'},$env{'form.ccuname'},$1,$2,$3,$4,'','',$context);
                 $r->print(&Apache::lonhtmlcommon::confirm_success(                  $r->print(&Apache::lonhtmlcommon::confirm_success(
                             &mt('Revoking custom role [_1] by [_2] in [_3]',                              &mt('Revoking custom role [_1] by [_2] in [_3]',
                                 $4,$3.':'.$2,'"'.&cid_to_cname($1).'"'),                                  $4,$3.':'.$2,&Apache::loncommon::show_role_extent($1,$context,'cr')),
                             $result ne 'ok').'<br />');                              $result ne 'ok').'<br />');
                 if ($result ne "ok") {                  if ($result ne "ok") {
                     $r->print(&mt('Error: [_1]',$result).'<br />');                      $r->print(&mt('Error: [_1]',$result).'<br />');
Line 3388  sub update_roles { Line 3437  sub update_roles {
                 $r->print(&Apache::lonhtmlcommon::confirm_success(                  $r->print(&Apache::lonhtmlcommon::confirm_success(
                             &mt('Deleting [_1] in [_2]',                              &mt('Deleting [_1] in [_2]',
                                 &Apache::lonnet::plaintext($role),                                  &Apache::lonnet::plaintext($role),
                                 '"'.&cid_to_cname($scope).'"'),                                  &Apache::loncommon::show_role_extent($scope,$context,$role)),
                             $result ne 'ok').'<br />');                              $result ne 'ok').'<br />');
                 if ($result ne "ok") {                  if ($result ne "ok") {
                     $r->print(&mt('Error: [_1]',$result).'<br />');                      $r->print(&mt('Error: [_1]',$result).'<br />');
Line 3413  sub update_roles { Line 3462  sub update_roles {
                         $env{'form.ccuname'},$url,$rdom,$rnam,$rolename,$now,                          $env{'form.ccuname'},$url,$rdom,$rnam,$rolename,$now,
                         0,1,$context);                          0,1,$context);
                 $r->print(&Apache::lonhtmlcommon::confirm_success(&mt('Deleting custom role [_1] by [_2] in [_3]',                  $r->print(&Apache::lonhtmlcommon::confirm_success(&mt('Deleting custom role [_1] by [_2] in [_3]',
                       $rolename,$rnam.':'.$rdom,'"'.&cid_to_cname($1).'"'),                        $rolename,$rnam.':'.$rdom,&Apache::loncommon::show_role_extent($1,$context,'cr')),
                       $result ne "ok").'<br />');                        $result ne "ok").'<br />');
                 if ($result ne "ok") {                  if ($result ne "ok") {
                     $r->print(&mt('Error: [_1]',$result).'<br />');                      $r->print(&mt('Error: [_1]',$result).'<br />');
Line 3434  sub update_roles { Line 3483  sub update_roles {
                 my $output;                  my $output;
                 if ($role eq 'st') {                  if ($role eq 'st') {
                     if ($url =~ m-^/($match_domain)/($match_courseid)/?(\w*)$-) {                      if ($url =~ m-^/($match_domain)/($match_courseid)/?(\w*)$-) {
                         my $result = &Apache::loncommon::commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);                          my ($cdom,$cnum,$csec) = ($1,$2,$3);
                           my $credits;
                           if ($showcredits) {
                               my $defaultcredits = 
                                   &Apache::lonuserutils::get_defaultcredits($cdom,$cnum);
                               $credits = &get_user_credits($defaultcredits,$cdom,$cnum);
                           }
                           my $result = &Apache::loncommon::commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$cdom,$cnum,$csec,$context,$credits);
                         if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course') || ($result eq 'refused')) {                          if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course') || ($result eq 'refused')) {
                             if ($result eq 'refused' && $logmsg) {                              if ($result eq 'refused' && $logmsg) {
                                 $output = $logmsg;                                  $output = $logmsg;
Line 3442  sub update_roles { Line 3498  sub update_roles {
                                 $output = &mt('Error: [_1]',$result)."\n";                                  $output = &mt('Error: [_1]',$result)."\n";
                             }                              }
                         } else {                          } else {
                             $output = &Apache::lonhtmlcommon::confirm_success(&mt('Assigning [_1] in [_2] starting [_3]',&Apache::lonnet::plaintext($role),                              $output = &Apache::lonhtmlcommon::confirm_success(&mt('Assigning [_1] in [_2] starting [_3]',
                                         '"'.&cid_to_cname($url).'"',&Apache::lonlocal::locallocaltime($now))).'<br />'.$logmsg.'<br />';                                          &Apache::lonnet::plaintext($role),
                                           &Apache::loncommon::show_role_extent($url,$context,'st'),
                                           &Apache::lonlocal::locallocaltime($now))).'<br />'.$logmsg.'<br />';
                         }                          }
                     }                      }
                 } else {                  } else {
Line 3451  sub update_roles { Line 3509  sub update_roles {
                                $env{'form.ccuname'},$url,$role,0,$now,'','',                                 $env{'form.ccuname'},$url,$role,0,$now,'','',
                                $context);                                 $context);
                         $output = &Apache::lonhtmlcommon::confirm_success(&mt('Re-enabling [_1] in [_2]',                          $output = &Apache::lonhtmlcommon::confirm_success(&mt('Re-enabling [_1] in [_2]',
                                         &Apache::lonnet::plaintext($role),'"'.&cid_to_cname($url).'"'),$result ne "ok").'<br />';                                          &Apache::lonnet::plaintext($role),
                                           &Apache::loncommon::show_role_extent($url,$context,$role)),$result ne "ok").'<br />';
                     if ($result ne "ok") {                      if ($result ne "ok") {
                         $output .= &mt('Error: [_1]',$result).'<br />';                          $output .= &mt('Error: [_1]',$result).'<br />';
                     }                      }
Line 3469  sub update_roles { Line 3528  sub update_roles {
                                $url,$rdom,$rnam,$rolename,0,$now,undef,$context);                                 $url,$rdom,$rnam,$rolename,0,$now,undef,$context);
                 $r->print(&Apache::lonhtmlcommon::confirm_success(                  $r->print(&Apache::lonhtmlcommon::confirm_success(
                     &mt('Re-enabling custom role [_1] by [_2] in [_3]',                      &mt('Re-enabling custom role [_1] by [_2] in [_3]',
                         $rolename,$rnam.':'.$rdom,'"'.&cid_to_cname($1).'"'),                          $rolename,$rnam.':'.$rdom,&Apache::loncommon::show_role_extent($1,$context,'cr')),
                     $result ne "ok").'<br />');                      $result ne "ok").'<br />');
                 if ($result ne "ok") {                  if ($result ne "ok") {
                     $r->print(&mt('Error: [_1]',$result).'<br />');                      $r->print(&mt('Error: [_1]',$result).'<br />');
Line 3530  sub update_roles { Line 3589  sub update_roles {
                 # split multiple sections                  # split multiple sections
                 my %sections = ();                  my %sections = ();
                 my $num_sections = &build_roles($env{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three);                  my $num_sections = &build_roles($env{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections,$three);
                   my $credits;
                   if ($three eq 'st') {
                       if ($showcredits) { 
                           my $defaultcredits = 
                               &Apache::lonuserutils::get_defaultcredits($one,$two);
                           $credits = $env{'form.credits_'.$one.'_'.$two.'_'.$three};
                           $credits =~ s/[^\d\.]//g;
                           if ($credits eq $defaultcredits) {
                               undef($credits);
                           }
                       }
                   }
                 if ($num_sections == 0) {                  if ($num_sections == 0) {
                     $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'',$context));                      $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'',$context,$credits));
                 } else {                  } else {
                     my %curr_groups =                       my %curr_groups = 
  &Apache::longroup::coursegroups($one,$two);   &Apache::longroup::coursegroups($one,$two);
Line 3545  sub update_roles { Line 3616  sub update_roles {
                                 next;                                  next;
                             }                              }
                             my $securl = $url.'/'.$sec;                              my $securl = $url.'/'.$sec;
                             $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec,$context));                              $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec,$context,$credits));
                         } else {                          } else {
                             $emptysec = 1;                              $emptysec = 1;
                         }                          }
                     }                      }
                     if ($emptysec) {                      if ($emptysec) {
                         $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'',$context));                          $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,'',$context,$credits));
                     }                      }
                 }                  }
                 if (!grep(/^\Q$three\E$/,@rolechanges)) {                  if (!grep(/^\Q$three\E$/,@rolechanges)) {
Line 3613  sub update_roles { Line 3684  sub update_roles {
 # Flush the course logs so reverse user roles immediately updated  # Flush the course logs so reverse user roles immediately updated
     $r->register_cleanup(\&Apache::lonnet::flushcourselogs);      $r->register_cleanup(\&Apache::lonnet::flushcourselogs);
     if (@rolechanges == 0) {      if (@rolechanges == 0) {
         $r->print(&mt('No roles to modify'));          $r->print('<p>'.&mt('No roles to modify').'</p>');
     }      }
     return @rolechanges;      return @rolechanges;
 }  }
   
   sub get_user_credits {
       my ($uname,$udom,$defaultcredits,$cdom,$cnum) = @_;
       if ($cdom eq '' || $cnum eq '') {
           return unless ($env{'request.course.id'});
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
       }
       my $credits;
       my %currhash =
           &Apache::lonnet::get('classlist',[$uname.':'.$udom],$cdom,$cnum);
       if (keys(%currhash) > 0) {
           my @items = split(/:/,$currhash{$uname.':'.$udom});
           my $crdidx = &Apache::loncoursedata::CL_CREDITS() - 3;
           $credits = $items[$crdidx];
           $credits =~ s/[^\d\.]//g;
       }
       if ($credits eq $defaultcredits) {
           undef($credits);
       }
       return $credits;
   }
   
 sub enroll_single_student {  sub enroll_single_student {
     my ($r,$uhome,$amode,$genpwd,$now,$newuser,$context,$crstype) = @_;      my ($r,$uhome,$amode,$genpwd,$now,$newuser,$context,$crstype,
           $showcredits,$defaultcredits) = @_;
     $r->print('<h3>');      $r->print('<h3>');
     if ($crstype eq 'Community') {      if ($crstype eq 'Community') {
         $r->print(&mt('Enrolling Member'));          $r->print(&mt('Enrolling Member'));
Line 3631  sub enroll_single_student { Line 3725  sub enroll_single_student {
     # Remove non alphanumeric values from section      # Remove non alphanumeric values from section
     $env{'form.sections'}=~s/\W//g;      $env{'form.sections'}=~s/\W//g;
   
       my $credits;
       if (($showcredits) && ($env{'form.credits'} ne '')) {
           $credits = $env{'form.credits'};
           $credits =~ s/[^\d\.]//g;
           if ($credits ne '') {
               if ($credits eq $defaultcredits) {
                   undef($credits);
               }
           }
       }
   
     # Clean out any old student roles the user has in this class.      # Clean out any old student roles the user has in this class.
     &Apache::lonuserutils::modifystudent($env{'form.ccdomain'},      &Apache::lonuserutils::modifystudent($env{'form.ccdomain'},
          $env{'form.ccuname'},$env{'request.course.id'},undef,$uhome);           $env{'form.ccuname'},$env{'request.course.id'},undef,$uhome);
Line 3640  sub enroll_single_student { Line 3745  sub enroll_single_student {
             $env{'form.ccuname'},$env{'form.cid'},$env{'form.cfirstname'},              $env{'form.ccuname'},$env{'form.cid'},$env{'form.cfirstname'},
             $env{'form.cmiddlename'},$env{'form.clastname'},              $env{'form.cmiddlename'},$env{'form.clastname'},
             $env{'form.generation'},$env{'form.sections'},$enddate,              $env{'form.generation'},$env{'form.sections'},$enddate,
             $startdate,'manual',undef,$env{'request.course.id'},'',$context);              $startdate,'manual',undef,$env{'request.course.id'},'',$context,
               $credits);
     if ($enroll_result =~ /^ok/) {      if ($enroll_result =~ /^ok/) {
         $r->print(&mt('<b>[_1]</b> enrolled',$env{'form.ccuname'}.':'.$env{'form.ccdomain'}));          $r->print(&mt('<b>[_1]</b> enrolled',$env{'form.ccuname'}.':'.$env{'form.ccdomain'}));
         if ($env{'form.sections'} ne '') {          if ($env{'form.sections'} ne '') {
Line 4184  sub handler { Line 4290  sub handler {
     } else {      } else {
         $context = 'domain';          $context = 'domain';
     }      }
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         ['action','state','callingform','roletype','showrole','bulkaction','popup','phase',          ['action','state','callingform','roletype','showrole','bulkaction','popup','phase',
          'username','domain','srchterm','srchdomain','srchin','srchby','srchtype']);           'username','domain','srchterm','srchdomain','srchin','srchby','srchtype']);
Line 4215  sub handler { Line 4322  sub handler {
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
   
       my $showcredits;
       if ((($context eq 'course') && ($crstype eq 'Course')) || 
            ($context eq 'domain')) {
           my %domdefaults = 
               &Apache::lonnet::get_domain_defaults($env{'request.role.domain'});
           if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) {
               $showcredits = 1;
           }
       }
   
     # Main switch on form.action and form.state, as appropriate      # Main switch on form.action and form.state, as appropriate
     if (! exists($env{'form.action'})) {      if (! exists($env{'form.action'})) {
         $args = {bread_crumbs => $brcrum,          $args = {bread_crumbs => $brcrum,
Line 4237  sub handler { Line 4354  sub handler {
         if (! exists($env{'form.state'})) {          if (! exists($env{'form.state'})) {
             &Apache::lonuserutils::print_first_users_upload_form($r,$context);              &Apache::lonuserutils::print_first_users_upload_form($r,$context);
         } elsif ($env{'form.state'} eq 'got_file') {          } elsif ($env{'form.state'} eq 'got_file') {
             &Apache::lonuserutils::print_upload_manager_form($r,$context,              &Apache::lonuserutils::print_upload_manager_form($r,$context,$permission,
                                                              $permission,$crstype);                                                               $crstype,$showcredits);
         } elsif ($env{'form.state'} eq 'enrolling') {          } elsif ($env{'form.state'} eq 'enrolling') {
             if ($env{'form.datatoken'}) {              if ($env{'form.datatoken'}) {
                 &Apache::lonuserutils::upfile_drop_add($r,$context,$permission);                  &Apache::lonuserutils::upfile_drop_add($r,$context,$permission,
                                                          $showcredits);
             }              }
         } else {          } else {
             &Apache::lonuserutils::print_first_users_upload_form($r,$context);              &Apache::lonuserutils::print_first_users_upload_form($r,$context);
Line 4266  sub handler { Line 4384  sub handler {
                            .' letters numbers - . @')                             .' letters numbers - . @')
                        .'</span>';                         .'</span>';
                     $env{'form.phase'} = '';                      $env{'form.phase'} = '';
                     &print_username_entry_form($r,$context,$response,$srch,undef,$crstype,$brcrum);                      &print_username_entry_form($r,$context,$response,$srch,undef,
                                                  $crstype,$brcrum,$showcredits);
                 } else {                  } else {
                     my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});                      my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});
                     my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});                      my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});
                     &print_user_modification_page($r,$ccuname,$ccdomain,                      &print_user_modification_page($r,$ccuname,$ccdomain,
                                                   $srch,$response,$context,                                                    $srch,$response,$context,
                                                   $permission,$crstype,$brcrum);                                                    $permission,$crstype,$brcrum,
                                                     $showcredits);
                 }                  }
             } elsif ($env{'form.phase'} eq 'get_user_info') {              } elsif ($env{'form.phase'} eq 'get_user_info') {
                 my ($currstate,$response,$forcenewuser,$results) =                   my ($currstate,$response,$forcenewuser,$results) = 
Line 4317  sub handler { Line 4437  sub handler {
                                               $brcrum);                                                $brcrum);
             }              }
         } elsif ($env{'form.phase'} eq 'update_user_data') {          } elsif ($env{'form.phase'} eq 'update_user_data') {
             &update_user_data($r,$context,$crstype,$brcrum);              &update_user_data($r,$context,$crstype,$brcrum,$showcredits);
         } else {          } else {
             &print_username_entry_form($r,$context,undef,$srch,undef,$crstype,              &print_username_entry_form($r,$context,undef,$srch,undef,$crstype,
                                        $brcrum);                                         $brcrum);
Line 4420  sub handler { Line 4540  sub handler {
                 $r->print(&header(&add_script($jscript),$args));                  $r->print(&header(&add_script($jscript),$args));
             }              }
             &Apache::lonuserutils::print_userlist($r,undef,$permission,$context,              &Apache::lonuserutils::print_userlist($r,undef,$permission,$context,
                          $formname,$totcodes,$codetitles,$idlist,$idlist_titles);                           $formname,$totcodes,$codetitles,$idlist,$idlist_titles,
                            $showcredits);
         }          }
     } elsif ($env{'form.action'} eq 'drop' && $permission->{'cusr'}) {      } elsif ($env{'form.action'} eq 'drop' && $permission->{'cusr'}) {
         my $brtext;          my $brtext;
Line 4451  sub handler { Line 4572  sub handler {
     } elsif ($env{'form.action'} eq 'dateselect') {      } elsif ($env{'form.action'} eq 'dateselect') {
         if ($permission->{'cusr'}) {          if ($permission->{'cusr'}) {
             $r->print(&header(undef,{'no_nav_bar' => 1}).              $r->print(&header(undef,{'no_nav_bar' => 1}).
                       &Apache::lonuserutils::date_section_selector($context,                        &Apache::lonuserutils::date_section_selector($context,$permission,
                                                                    $permission,$crstype));                                                                     $crstype,$showcredits));
         } else {          } else {
             $r->print(&header(undef,{'no_nav_bar' => 1}).              $r->print(&header(undef,{'no_nav_bar' => 1}).
                      '<span class="LC_error">'.&mt('You do not have permission to modify dates or sections for users').'</span>');                        '<span class="LC_error">'.&mt('You do not have permission to modify dates or sections for users').'</span>'); 
Line 4554  sub add_script { Line 4675  sub add_script {
   
 sub verify_user_display {  sub verify_user_display {
     my ($context) = @_;      my ($context) = @_;
       my %lt = &Apache::lonlocal::texthash (
           course    => 'course(s): description, section(s), status',
           community => 'community(s): description, section(s), status',
           author    => 'author',
       );
     my $photos;      my $photos;
     if (($context eq 'course') && $env{'request.course.id'}) {      if (($context eq 'course') && $env{'request.course.id'}) {
         $photos = $env{'course.'.$env{'request.course.id'}.'.internal.showphoto'};          $photos = $env{'course.'.$env{'request.course.id'}.'.internal.showphoto'};
Line 4577  function updateCols(caller) { Line 4703  function updateCols(caller) {
     var context = '$context';      var context = '$context';
     var photos = '$photos';      var photos = '$photos';
     if (caller == 'Status') {      if (caller == 'Status') {
         if (document.studentform.Status.options[document.studentform.Status.selectedIndex].value == 'Any') {          if ((context == 'domain') && 
             document.getElementById('showcolstatus').checked = true;              ((document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'course') ||
             document.getElementById('showcolstatus').disabled = '';               (document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'community'))) {
             document.getElementById('showcolstart').checked = true;  
             document.getElementById('showcolend').checked = true;  
         } else {  
             document.getElementById('showcolstatus').checked = false;              document.getElementById('showcolstatus').checked = false;
             document.getElementById('showcolstatus').disabled = 'disabled';              document.getElementById('showcolstatus').disabled = 'disabled';
             document.getElementById('showcolstart').checked = false;              document.getElementById('showcolstart').checked = false;
             document.getElementById('showcolend').checked = false;              document.getElementById('showcolend').checked = false;
           } else {
               if (document.studentform.Status.options[document.studentform.Status.selectedIndex].value == 'Any') {
                   document.getElementById('showcolstatus').checked = true;
                   document.getElementById('showcolstatus').disabled = '';
                   document.getElementById('showcolstart').checked = true;
                   document.getElementById('showcolend').checked = true;
               } else {
                   document.getElementById('showcolstatus').checked = false;
                   document.getElementById('showcolstatus').disabled = 'disabled';
                   document.getElementById('showcolstart').checked = false;
                   document.getElementById('showcolend').checked = false;
               }
         }          }
     }      }
     if (caller == 'output') {      if (caller == 'output') {
Line 4612  function updateCols(caller) { Line 4747  function updateCols(caller) {
             document.getElementById('showcolrole').checked = false;              document.getElementById('showcolrole').checked = false;
             document.getElementById('showcolrole').disabled = 'disabled';              document.getElementById('showcolrole').disabled = 'disabled';
         }          }
           if (context == 'domain') {
               if ((document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'course') ||
                   (document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'community')) {
                   document.getElementById('showcolstatus').checked = false;
                   document.getElementById('showcolstatus').disabled = 'disabled';
                   document.getElementById('showcolstart').checked = false;
                   document.getElementById('showcolend').checked = false;
               } else {
                   if (document.studentform.Status.options[document.studentform.Status.selectedIndex].value == 'Any') {
                       document.getElementById('showcolstatus').checked = true;
                       document.getElementById('showcolstatus').disabled = '';
                       document.getElementById('showcolstart').checked = true;
                       document.getElementById('showcolend').checked = true;
                   }
               }
               if (document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'domain') {
                   document.getElementById('showcolextent').disabled = 'disabled';
                   document.getElementById('showcolextent').checked = 'false';
                   document.getElementById('showextent').style.display='none';
                   document.getElementById('showcoltextextent').innerHTML = '';
               } else {
                   document.getElementById('showextent').style.display='block';
                   document.getElementById('showextent').style.textAlign='left';
                   document.getElementById('showextent').style.textFace='normal';
                   if (document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'author') {
                       document.getElementById('showcolextent').disabled = '';
                       document.getElementById('showcolextent').checked = 'true';
                       document.getElementById('showcoltextextent').innerHTML="$lt{'author'}";
                   } else {
                       document.getElementById('showcolextent').disabled = '';
                       document.getElementById('showcolextent').checked = 'true';
                       if (document.studentform.roletype.options[document.studentform.roletype.selectedIndex].value == 'community') {
                           document.getElementById('showcoltextextent').innerHTML="$lt{'community'}";
                       } else {
                           document.getElementById('showcoltextextent').innerHTML="$lt{'course'}";
                       }
                   }
               }
           }
     }      }
     return;      return;
 }  }
Line 5851  sub role_display_filter { Line 6025  sub role_display_filter {
                &mt('Context:').'</b><br /><select name="chgcontext">';                 &mt('Context:').'</b><br /><select name="chgcontext">';
     my @posscontexts;      my @posscontexts;
     if ($context eq 'course') {      if ($context eq 'course') {
         @posscontexts = ('any','auto','updatenow','createcourse','course','domain','selfenroll','requestcourses');          @posscontexts = ('any','automated','updatenow','createcourse','course','domain','selfenroll','requestcourses');
     } elsif ($context eq 'domain') {      } elsif ($context eq 'domain') {
         @posscontexts = ('any','domain','requestauthor','domconfig','server');          @posscontexts = ('any','domain','requestauthor','domconfig','server');
     } else {      } else {
Line 5863  sub role_display_filter { Line 6037  sub role_display_filter {
             $selstr = ' selected="selected"';              $selstr = ' selected="selected"';
         }          }
         if ($context eq 'course') {          if ($context eq 'course') {
             if (($chgtype eq 'auto') || ($chgtype eq 'updatenow')) {              if (($chgtype eq 'automated') || ($chgtype eq 'updatenow')) {
                 next if (!&Apache::lonnet::auto_run($cnum,$cdom));                  next if (!&Apache::lonnet::auto_run($cnum,$cdom));
             }              }
         }          }
Line 5899  sub rolechg_contexts { Line 6073  sub rolechg_contexts {
     if ($context eq 'course') {      if ($context eq 'course') {
         %lt = &Apache::lonlocal::texthash (          %lt = &Apache::lonlocal::texthash (
                                              any          => 'Any',                                               any          => 'Any',
                                              auto         => 'Automated enrollment',                                               automated    => 'Automated Enrollment',
                                              updatenow    => 'Roster Update',                                               updatenow    => 'Roster Update',
                                              createcourse => 'Course Creation',                                               createcourse => 'Course Creation',
                                              course       => 'User Management in course',                                               course       => 'User Management in course',
Line 6424  function backPage(formname,prevphase,pre Line 6598  function backPage(formname,prevphase,pre
 }  }
   
 sub course_level_table {  sub course_level_table {
     my (%inccourses) = @_;      my ($inccourses,$showcredits,$defaultcredits) = @_;
       return unless (ref($inccourses) eq 'HASH');
     my $table = '';      my $table = '';
 # Custom Roles?  # Custom Roles?
   
Line 6439  sub course_level_table { Line 6614  sub course_level_table {
             'rol'  => "Role",              'rol'  => "Role",
             'ext'  => "Extent",              'ext'  => "Extent",
             'grs'  => "Section",              'grs'  => "Section",
               'crd'  => "Credits",
             'sta'  => "Start",              'sta'  => "Start",
             'end'  => "End"              'end'  => "End"
     );      );
   
     foreach my $protectedcourse (sort(keys(%inccourses))) {      foreach my $protectedcourse (sort(keys(%{$inccourses}))) {
  my $thiscourse=$protectedcourse;   my $thiscourse=$protectedcourse;
  $thiscourse=~s:_:/:g;   $thiscourse=~s:_:/:g;
  my %coursedata=&Apache::lonnet::coursedescription($thiscourse);   my %coursedata=&Apache::lonnet::coursedescription($thiscourse);
Line 6465  sub course_level_table { Line 6641  sub course_level_table {
     if ((&Apache::lonnet::allowed('c'.$role,$thiscourse)) ||      if ((&Apache::lonnet::allowed('c'.$role,$thiscourse)) ||
                 ((($role eq 'cc') || ($role eq 'co')) && ($isowner))) {                  ((($role eq 'cc') || ($role eq 'co')) && ($isowner))) {
                 $table .= &course_level_row($protectedcourse,$role,$area,$domain,                  $table .= &course_level_row($protectedcourse,$role,$area,$domain,
                                             $plrole,\%sections_count,\%lt);                                              $plrole,\%sections_count,\%lt,
                                               $defaultcredits,$crstype);
             } elsif ($env{'request.course.sec'} ne '') {              } elsif ($env{'request.course.sec'} ne '') {
                 if (&Apache::lonnet::allowed('c'.$role,$thiscourse.'/'.                  if (&Apache::lonnet::allowed('c'.$role,$thiscourse.'/'.
                                              $env{'request.course.sec'})) {                                               $env{'request.course.sec'})) {
                     $table .= &course_level_row($protectedcourse,$role,$area,$domain,                      $table .= &course_level_row($protectedcourse,$role,$area,$domain,
                                                 $plrole,\%sections_count,\%lt);                                                  $plrole,\%sections_count,\%lt,
                                                   $defaultcredits,$crstype);
                 }                  }
             }              }
         }          }
Line 6492  sub course_level_table { Line 6670  sub course_level_table {
     $result .=       $result .= 
 &Apache::loncommon::start_data_table().  &Apache::loncommon::start_data_table().
 &Apache::loncommon::start_data_table_header_row().  &Apache::loncommon::start_data_table_header_row().
 '<th>'.$lt{'act'}.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}.'</th>  '<th>'.$lt{'act'}.'</th><th>'.$lt{'rol'}.'</th>'."\n".
 <th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.  '<th>'.$lt{'ext'}.'</th><th>'.$lt{'crd'}.'</th>'."\n".
   '<th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th>'."\n".
   '<th>'.$lt{'end'}.'</th>'.
 &Apache::loncommon::end_data_table_header_row().  &Apache::loncommon::end_data_table_header_row().
 $table.  $table.
 &Apache::loncommon::end_data_table();  &Apache::loncommon::end_data_table();
Line 6501  $table. Line 6681  $table.
 }  }
   
 sub course_level_row {  sub course_level_row {
     my ($protectedcourse,$role,$area,$domain,$plrole,$sections_count,$lt) = @_;      my ($protectedcourse,$role,$area,$domain,$plrole,$sections_count,
           $lt,$defaultcredits,$crstype) = @_;
       my $creditem;
     my $row = &Apache::loncommon::start_data_table_row().      my $row = &Apache::loncommon::start_data_table_row().
               ' <td><input type="checkbox" name="act_'.                ' <td><input type="checkbox" name="act_'.
               $protectedcourse.'_'.$role.'" /></td>'."\n".                $protectedcourse.'_'.$role.'" /></td>'."\n".
               ' <td>'.$plrole.'</td>'."\n".                ' <td>'.$plrole.'</td>'."\n".
               ' <td>'.$area.'<br />Domain: '.$domain.'</td>'."\n";                ' <td>'.$area.'<br />Domain: '.$domain.'</td>'."\n";
       if (($role eq 'st') && ($crstype eq 'Course')) {
           $row .= 
               '<td><input type="text" name="credits_'.$protectedcourse.'_'.
               $role.'" size="3" value="'.$defaultcredits.'" /></td>';
       } else {
           $row .= '<td>&nbsp;</td>';
       }
     if (($role eq 'cc') || ($role eq 'co')) {      if (($role eq 'cc') || ($role eq 'co')) {
         $row .= '<td>&nbsp;</td>';          $row .= '<td>&nbsp;</td>';
     } elsif ($env{'request.course.sec'} ne '') {      } elsif ($env{'request.course.sec'} ne '') {
Line 6532  sub course_level_row { Line 6721  sub course_level_row {
                      '</tr></table></td>'."\n";                       '</tr></table></td>'."\n";
         } else {          } else {
             $row .= '<td><input type="text" size="10" '.              $row .= '<td><input type="text" size="10" '.
                       'name="sec_'.$protectedcourse.'_'.$role.'" /></td>'."\n";                      'name="sec_'.$protectedcourse.'_'.$role.'" /></td>'."\n";
         }          }
     }      }
     $row .= <<ENDTIMEENTRY;      $row .= <<ENDTIMEENTRY;
Line 6548  ENDTIMEENTRY Line 6737  ENDTIMEENTRY
 }  }
   
 sub course_level_dc {  sub course_level_dc {
     my ($dcdom) = @_;      my ($dcdom,$showcredits) = @_;
     my %customroles=&Apache::lonuserutils::my_custom_roles();      my %customroles=&Apache::lonuserutils::my_custom_roles();
     my @roles = &Apache::lonuserutils::roles_by_context('course');      my @roles = &Apache::lonuserutils::roles_by_context('course');
     my $hiddenitems = '<input type="hidden" name="dcdomain" value="'.$dcdom.'" />'.      my $hiddenitems = '<input type="hidden" name="dcdomain" value="'.$dcdom.'" />'.
Line 6556  sub course_level_dc { Line 6745  sub course_level_dc {
                       '<input type="hidden" name="dccourse" value="" />';                        '<input type="hidden" name="dccourse" value="" />';
     my $courseform=&Apache::loncommon::selectcourse_link      my $courseform=&Apache::loncommon::selectcourse_link
             ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Select','crstype');              ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Select','crstype');
     my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu','role','Course/Community Browser');      my $credit_elem;
       if ($showcredits) {
           $credit_elem = 'credits';
       }
       my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu','role','Course/Community Browser',$credit_elem);
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     'rol'  => "Role",                      'rol'  => "Role",
                     'grs'  => "Section",                      'grs'  => "Section",
Line 6566  sub course_level_dc { Line 6759  sub course_level_dc {
                     'end'  => "End",                      'end'  => "End",
                     'ssd'  => "Set Start Date",                      'ssd'  => "Set Start Date",
                     'sed'  => "Set End Date",                      'sed'  => "Set End Date",
                     'scc'  => "Course/Community"                      'scc'  => "Course/Community",
                       'crd'  => "Credits",
                   );                    );
     my $header = '<h4>'.&mt('Course/Community Level').'</h4>'.      my $header = '<h4>'.&mt('Course/Community Level').'</h4>'.
                  &Apache::loncommon::start_data_table().                   &Apache::loncommon::start_data_table().
                  &Apache::loncommon::start_data_table_header_row().                   &Apache::loncommon::start_data_table_header_row().
                  '<th>'.$lt{'scc'}.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'.                   '<th>'.$lt{'scc'}.'</th><th>'.$lt{'rol'}.'</th>'."\n".
                    '<th>'.$lt{'grs'}.'</th><th>'.$lt{'crd'}.'</th>'."\n".
                    '<th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'."\n".
                  &Apache::loncommon::end_data_table_header_row();                   &Apache::loncommon::end_data_table_header_row();
     my $otheritems = &Apache::loncommon::start_data_table_row()."\n".      my $otheritems = &Apache::loncommon::start_data_table_row()."\n".
                      '<td><br /><span class="LC_nobreak"><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" />'.                       '<td><br /><span class="LC_nobreak"><input type="text" name="coursedesc" value="" onfocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc','','','','crstype'".')" />'.
Line 6598  sub course_level_dc { Line 6794  sub course_level_dc {
                      '<input type="hidden" name="section" value="" />'.                       '<input type="hidden" name="section" value="" />'.
                      '<input type="hidden" name="groups" value="" />'.                       '<input type="hidden" name="groups" value="" />'.
                      '<input type="hidden" name="crstype" value="" /></td>'.                       '<input type="hidden" name="crstype" value="" /></td>'.
                      '</tr></table></td>';                       '</tr></table></td>'."\n";
       if ($showcredits) {
           $otheritems .= '<td><br />'."\n".
                          '<input type="text" size="3" name="credits" value="" />'."\n";
       }
     $otheritems .= <<ENDTIMEENTRY;      $otheritems .= <<ENDTIMEENTRY;
 <td><br /><input type="hidden" name="start" value='' />  <td><br /><input type="hidden" name="start" value='' />
 <a href=  <a href=
Line 6976  sub get_selfenroll_titles { Line 7176  sub get_selfenroll_titles {
 #--------------------------------- functions for &phase_two and &phase_three  #--------------------------------- functions for &phase_two and &phase_three
   
 #--------------------------end of functions for &phase_two and &phase_three  #--------------------------end of functions for &phase_two and &phase_three
 sub cid_to_cname(){  
     my $courseid = shift;  
     $courseid =~ s/^\///;  
     $courseid =~ s/\//_/;  
     return $env{'course.'.$courseid.'.description'};  
 }  
 1;  1;
 __END__  __END__
   

Removed from v.1.371  
changed lines
  Added in v.1.377


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