Diff for /loncom/interface/loncreateuser.pm between versions 1.126 and 1.133

version 1.126, 2006/06/29 17:38:44 version 1.133, 2006/11/21 21:03:06
Line 313  sub print_user_modification_page { Line 313  sub print_user_modification_page {
                 alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections.");                  alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections.");
                 section = "";                  section = "";
             }              }
               var coursename = "_$dcdom"+"_"+course+"_"+userrole
             var numcourse = getIndex(document.cu.dccourse);              var numcourse = getIndex(document.cu.dccourse);
             if (numcourse == "-1") {              if (numcourse == "-1") {
                 alert("There was a problem with your course selection");                  alert("There was a problem with your course selection");
                 return                  return
             }              }
             else {               else {
                 var coursename = "_$dcdom"+"_"+course+"_"+userrole                  document.cu.elements[numcourse].name = "act"+coursename;
                 document.cu.elements[numcourse].name = "act"+coursename                  var numnewsec = getIndex(document.cu.newsec);
                 document.cu.elements[numcourse+5].name = "sec"+coursename                  if (numnewsec != "-1") {
                 document.cu.elements[numcourse+5].value = section                      document.cu.elements[numnewsec].name = "sec"+coursename;
                 document.cu.elements[numcourse+7].name = "start"+coursename                      document.cu.elements[numnewsec].value = section;
                 document.cu.elements[numcourse+8].name = "end"+coursename                  }
                   var numstart = getIndex(document.cu.start);
                   if (numstart != "-1") {
                       document.cu.elements[numstart].name = "start"+coursename;
                   }
                   var numend = getIndex(document.cu.end);
                   if (numend != "-1") {
                       document.cu.elements[numend].name = "end"+coursename
                   }
             }              }
         }          }
         document.cu.submit();          document.cu.submit();
Line 340  sub print_user_modification_page { Line 349  sub print_user_modification_page {
     }      }
   
     function setType() {      function setType() {
         var crstype = 'Course'          var crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value;
         rolevals = new Array("$rolevalslist");          rolevals = new Array("$rolevalslist");
         if (crstype == 'Group') {          if (crstype == 'Group') {
             if (document.cu.currsec.options[0].text == "$pickcrsfirst") {              if (document.cu.currsec.options[0].text == "$pickcrsfirst") {
Line 378  ENDSCRIPT Line 387  ENDSCRIPT
             var str = document.cu.elements[i].name;              var str = document.cu.elements[i].name;
             var checkcurr = str.match(re1);              var checkcurr = str.match(re1);
             if (checkcurr != null) {              if (checkcurr != null) {
                 var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;  
                 if (document.cu.elements[i-1].checked == true) {                  if (document.cu.elements[i-1].checked == true) {
                     var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;                      var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;
                     match = re2.exec(str);                      match = re2.exec(str);
Line 439  ENDSCRIPT Line 447  ENDSCRIPT
                                     }                                      }
                                 }                                  }
                             }                              }
                             document.cu.elements[i+2].value = sections;  
                         }                          }
                           document.cu.elements[i+2].value = sections;
                     }                      }
                 }                  }
             }              }
Line 605  END Line 613  END
                if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {                 if ($area =~ /^\/(\w+)\/(\d\w+)/ ) {
    $class='Course';     $class='Course';
                    my ($coursedom,$coursedir) = ($1,$2);                     my ($coursedom,$coursedir) = ($1,$2);
    $sortkey.="\0$1";     $sortkey.="\0$coursedom";
                    # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).                     # $1.'_'.$2 is the course id (eg. 103_12345abcef103l3).
                    my %coursedata=                     my %coursedata=
                        &Apache::lonnet::coursedescription($1.'_'.$2);                         &Apache::lonnet::coursedescription($1.'_'.$2);
Line 620  END Line 628  END
        $carea=&mt('Unavailable course').': '.$area;         $carea=&mt('Unavailable course').': '.$area;
        $sortkey.="\0".&mt('Unavailable course').': '.$area;         $sortkey.="\0".&mt('Unavailable course').': '.$area;
    }     }
      $sortkey.="\0$coursedir";
                    $inccourses{$1.'_'.$2}=1;                     $inccourses{$1.'_'.$2}=1;
                    if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) ||                     if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) ||
                        (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {                         (&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) {
Line 772  END Line 781  END
  $currentauth=~/^internal:/ or   $currentauth=~/^internal:/ or
  $currentauth=~/^localauth:/   $currentauth=~/^localauth:/
  ) { # bad authentication scheme   ) { # bad authentication scheme
     if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {      if (&Apache::lonnet::allowed('mau',$ccdomain)) {
                 &initialize_authen_forms();                  &initialize_authen_forms();
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                                'err'   => "ERROR",                                 'err'   => "ERROR",
Line 795  $lt{'uuas'} ($currentauth). $lt{'sldb'}. Line 804  $lt{'uuas'} ($currentauth). $lt{'sldb'}.
 <p>$authformloc</p>  <p>$authformloc</p>
 ENDBADAUTH  ENDBADAUTH
             } else {               } else { 
                 # This user is not allowed to modify the users                   # This user is not allowed to modify the user's 
                 # authentication scheme, so just notify them of the problem                  # authentication scheme, so just notify them of the problem
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                                'err'   => "ERROR",                                 'err'   => "ERROR",
Line 804  ENDBADAUTH Line 813  ENDBADAUTH
    );     );
  $r->print(<<ENDBADAUTH);   $r->print(<<ENDBADAUTH);
 <hr />  <hr />
 <script type="text/javascript" language="Javascript">  
 $loginscript  
 </script>  
 <font color="#ff0000"> $lt{'err'}: </font>  <font color="#ff0000"> $lt{'err'}: </font>
 $lt{'uuas'} ($currentauth). $lt{'adcs'}.  $lt{'uuas'} ($currentauth). $lt{'adcs'}.
 <hr />  <hr />
Line 837  ENDBADAUTH Line 843  ENDBADAUTH
                     "<p>$authformint</p><p>$authformfsys</p>";                      "<p>$authformint</p><p>$authformfsys</p>";
     }      }
             $authformcurrent.=' <i>(will override current values)</i><br />';              $authformcurrent.=' <i>(will override current values)</i><br />';
             if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {              if (&Apache::lonnet::allowed('mau',$ccdomain)) {
  # Current user has login modification privileges   # Current user has login modification privileges
  my %lt=&Apache::lonlocal::texthash(   my %lt=&Apache::lonlocal::texthash(
                                'ccld'  => "Change Current Login Data",                                 'ccld'  => "Change Current Login Data",
Line 855  $loginscript Line 861  $loginscript
 <h3>$lt{'enld'}</h3>  <h3>$lt{'enld'}</h3>
 $authform_other  $authform_other
 ENDOTHERAUTHS  ENDOTHERAUTHS
               } else {
                   if (&Apache::lonnet::allowed('mau',$env{'request.role.domain'})) {
                       my %lt=&Apache::lonlocal::texthash(
                                  'ccld'  => "Change Current Login Data",
                                  'yodo'  => "You do not have privileges to modify the authentication configuration for this user.",
                                  'ifch'  => "If a change is required, contact a domain coordinator for the domain",
                       );
                       $r->print(<<ENDNOPRIV);
   <hr />
   <h3>$lt{'ccld'}</h3>
   $lt{'yodo'} $lt{'ifch'}: $ccdomain 
   ENDNOPRIV
                   } 
             }              }
         }  ## End of "check for bad authentication type" logic          }  ## End of "check for bad authentication type" logic
     } ## End of new user/old user logic      } ## End of new user/old user logic
Line 1251  END Line 1270  END
                 my $output;                  my $output;
                 if ($role eq 'st') {                  if ($role eq 'st') {
                     if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) {                      if ($url =~ m-^/(\w+)/(\w+)/?(\w*)$-) {
                         my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);                          my $result = &Apache::loncommon::commit_studentrole(\$logmsg,$udom,$uname,$url,$role,$now,0,$1,$2,$3);
                         if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {                          if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {
                             $output = "Error: $result\n";                              $output = "Error: $result\n";
                         } else {                          } else {
Line 1298  END Line 1317  END
                 my %sections = ();                  my %sections = ();
                 my $num_sections = &build_roles($env{'form.sec_'.$full},\%sections,$5);                  my $num_sections = &build_roles($env{'form.sec_'.$full},\%sections,$5);
                 if ($num_sections == 0) {                  if ($num_sections == 0) {
                     $r->print(&commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end));                      $r->print(&Apache::loncommon::commit_customrole($udom,$uname,$url,$three,$four,$five,$start,$end));
                 } else {                  } else {
     my %curr_groups =      my %curr_groups =
  &Apache::longroup::coursegroups($one,$two);   &Apache::longroup::coursegroups($one,$two);
Line 1309  END Line 1328  END
                             next;                              next;
                         }                          }
                         my $securl = $url.'/'.$sec;                          my $securl = $url.'/'.$sec;
         $r->print(&commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end));          $r->print(&Apache::loncommon::commit_customrole($udom,$uname,$securl,$three,$four,$five,$start,$end));
                     }                      }
                 }                  }
     } elsif ($_=~/^form\.act\_([^\_]+)\_(\w+)\_([^\_]+)$/) {      } elsif ($_=~/^form\.act\_([^\_]+)\_(\w+)\_([^\_]+)$/) {
Line 1328  END Line 1347  END
                 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);
                 if ($num_sections == 0) {                  if ($num_sections == 0) {
                     $r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));                      $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
                 } else {                  } else {
                     my %curr_groups =                       my %curr_groups = 
  &Apache::longroup::coursegroups($one,$two);   &Apache::longroup::coursegroups($one,$two);
Line 1342  END Line 1361  END
                                 next;                                  next;
                             }                              }
                             my $securl = $url.'/'.$sec;                              my $securl = $url.'/'.$sec;
                             $r->print(&commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec));                              $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$three,$start,$end,$one,$two,$sec));
                         } else {                          } else {
                             $emptysec = 1;                              $emptysec = 1;
                         }                          }
                     }                      }
                     if ($emptysec) {                      if ($emptysec) {
                         $r->print(&commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));                          $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$three,$start,$end,$one,$two,''));
                     }                      }
                 }                   } 
     } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {      } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {
Line 1365  END Line 1384  END
                 my %sections = ();                  my %sections = ();
                 my $num_sections = &build_roles($env{'form.sec_'.$1.'_'.$2},\%sections,$2);                  my $num_sections = &build_roles($env{'form.sec_'.$1.'_'.$2},\%sections,$2);
                 if ($num_sections == 0) {                  if ($num_sections == 0) {
                     $r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));                      $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
                 } else {                  } else {
                     my $emptysec = 0;                      my $emptysec = 0;
                     foreach my $sec (sort {$a cmp $b} keys %sections) {                      foreach my $sec (sort {$a cmp $b} keys %sections) {
                         if ($sec ne '') {                          if ($sec ne '') {
                             my $securl = $url.'/'.$sec;                              my $securl = $url.'/'.$sec;
                             $r->print(&commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec));                              $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$securl,$2,$start,$end,$1,undef,$sec));
                         } else {                          } else {
                             $emptysec = 1;                              $emptysec = 1;
                         }                          }
                     }                      }
                     if ($emptysec) {                      if ($emptysec) {
                         $r->print(&commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));                          $r->print(&Apache::loncommon::commit_standardrole($udom,$uname,$url,$2,$start,$end,$1,undef,''));
                     }                      }
                 }                  }
     } else {      } else {
Line 1399  END Line 1418  END
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
 }  }
   
 sub commit_customrole {  
     my ($udom,$uname,$url,$three,$four,$five,$start,$end) = @_;  
     my $output = &mt('Assigning custom role').' "'.$five.'" by '.$four.'@'.$three.' in '.$url.  
                          ($start?', '.&mt('starting').' '.localtime($start):'').  
                          ($end?', ending '.localtime($end):'').': <b>'.  
               &Apache::lonnet::assigncustomrole(  
                  $udom,$uname,$url,$three,$four,$five,$end,$start).  
                  '</b><br />';  
     return $output;  
 }  
   
 sub commit_standardrole {  
     my ($udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_;  
     my $output;  
     my $logmsg;  
     if ($three eq 'st') {  
         my $result = &commit_studentrole(\$logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec);  
         if (($result =~ /^error/) || ($result eq 'not_in_class') || ($result eq 'unknown_course')) {  
             $output = "Error: $result\n";   
         } else {  
             $output = &mt('Assigning').' '.$three.' in '.$url.  
                ($start?', '.&mt('starting').' '.localtime($start):'').  
                ($end?', '.&mt('ending').' '.localtime($end):'').  
                ': <b>'.$result.'</b><br />'.  
                &mt('Add to classlist').': <b>ok</b><br />';  
         }  
     } else {  
         $output = &mt('Assigning').' '.$three.' in '.$url.  
                ($start?', '.&mt('starting').' '.localtime($start):'').  
                ($end?', '.&mt('ending').' '.localtime($end):'').': <b>'.  
                &Apache::lonnet::assignrole(  
                    $udom,$uname,$url,$three,$end,$start).  
                    '</b><br />';  
     }  
     return $output;  
 }  
   
 sub commit_studentrole {  
     my ($logmsg,$udom,$uname,$url,$three,$start,$end,$one,$two,$sec) = @_;  
     my $linefeed =  '<br />'."\n";  
     my $result;  
     if (defined($one) && defined($two)) {  
         my $cid=$one.'_'.$two;  
         my $oldsec=&Apache::lonnet::getsection($udom,$uname,$cid);  
         my $secchange = 0;  
         my $expire_role_result;  
         my $modify_section_result;  
         unless ($oldsec eq '-1') {  
             unless ($sec eq $oldsec) {  
                 $secchange = 1;  
                 my $uurl='/'.$cid;  
                 $uurl=~s/\_/\//g;  
                 if ($oldsec) {  
                     $uurl.='/'.$oldsec;  
                 }  
                 $expire_role_result = &Apache::lonnet::assignrole($udom,$uname,$uurl,'st',time);  
                 $result = $expire_role_result;  
             }  
         }  
         if (($expire_role_result eq 'ok') || ($secchange == 0)) {  
             $modify_section_result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,'','',$cid);  
             if ($modify_section_result =~ /^ok/) {  
                 if ($secchange == 1) {  
                     $$logmsg .= "Section for $uname switched from old section: $oldsec to new section: $sec".$linefeed;  
                 } elsif ($oldsec eq '-1') {  
                     $$logmsg .= "New student role for $uname in section $sec in course $cid".$linefeed;  
                 } else {  
                     $$logmsg .= "Student $uname assigned to unchanged section $sec in course $cid".$linefeed;  
                 }  
             } else {  
                 $$logmsg .= "Error when attempting section change for $uname from old section $oldsec to new section: $sec in course $cid -error: $modify_section_result".$linefeed;  
             }  
             $result = $modify_section_result;  
         } elsif ($secchange == 1) {  
             $$logmsg .= "Error when attempting to expire role for $uname in old section $oldsec in course $cid -error: $expire_role_result".$linefeed;  
         }  
     } else {  
         $$logmsg .= "Incomplete course id defined.  Addition of user $uname from domain $udom to course $one\_$two, section $sec not completed.$linefeed";  
         $result = "error: incomplete course id\n";  
     }  
     return $result;  
 }  
   
 sub build_roles {  sub build_roles {
     my ($sectionstr,$sections,$role) = @_;      my ($sectionstr,$sections,$role) = @_;
     my $num_sections = 0;      my $num_sections = 0;
Line 1511  sub build_roles { Line 1447  sub build_roles {
             $num_sections ++;              $num_sections ++;
         }          }
     }      }
                                                                                        
     return $num_sections;      return $num_sections;
 }  }
   
Line 1586  sub custom_role_editor { Line 1522  sub custom_role_editor {
     }      }
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
     'prv'  => "Privilege",      'prv'  => "Privilege",
     'crl'  => "Course/Group Level",      'crl'  => "Course Level",
                     'dml'  => "Domain Level",                      'dml'  => "Domain Level",
                     'ssl'  => "System Level"                      'ssl'  => "System Level"
        );         );
Line 1736  sub course_level_table { Line 1672  sub course_level_table {
             'new'  => "Define new section",              'new'  => "Define new section",
             'ssd'  => "Set Start Date",              'ssd'  => "Set Start Date",
             'sed'  => "Set End Date",              'sed'  => "Set End Date",
             'crl'  => "Course/Group Level",              'crl'  => "Course Level",
             'act'  => "Activate",              'act'  => "Activate",
             'rol'  => "Role",              'rol'  => "Role",
             'ext'  => "Extent",              'ext'  => "Extent",
Line 1884  sub course_level_dc { Line 1820  sub course_level_dc {
                       '<input type="hidden" name="dccourse" value="" />';                        '<input type="hidden" name="dccourse" value="" />';
     my $courseform='<b>'.&Apache::loncommon::selectcourse_link      my $courseform='<b>'.&Apache::loncommon::selectcourse_link
             ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>';              ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course').'</b>';
     my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom);      my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,'currsec','cu');
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     'typ' => "Type",                      'typ' => "Type",
                     'rol'  => "Role",                      'rol'  => "Role",
Line 1897  sub course_level_dc { Line 1833  sub course_level_dc {
                     'sed'  => "Set End Date"                      'sed'  => "Set End Date"
                   );                    );
     my $header = '<h4>'.&mt('Course Level').'</h4>'.      my $header = '<h4>'.&mt('Course Level').'</h4>'.
                  '<table border="2"><tr><th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th></tr>';                   '<table border="2"><tr><th>'.$lt{'typ'}.'</th><th>'.$courseform.'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'grs'}.'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th></tr>';
     my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc',".')" /></td>'."\n".      my $otheritems = '<tr><td><select name="crstype" onChange="javascript:setType();">'."\n".
                        ' <option value="">'.&mt('Please select')."\n".
                        ' <option value="Course">'.&mt('Course')."\n".
                        ' <option value="Non-standard course">'.&mt('Non-standard course')."\n".
                        '</select>'."\n".
                        '<td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'cu','dccourse','dcdomain','coursedesc',''".')" /></td>'."\n".
                      '<td><select name="role">'."\n";                       '<td><select name="role">'."\n";
     foreach  ('st','ta','ep','in','cc') {      foreach  ('st','ta','ep','in','cc') {
         my $plrole=&Apache::lonnet::plaintext($_);          my $plrole=&Apache::lonnet::plaintext($_);

Removed from v.1.126  
changed lines
  Added in v.1.133


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