Diff for /loncom/interface/loncreateuser.pm between versions 1.118 and 1.130

version 1.118, 2006/05/30 12:46:09 version 1.130, 2006/08/16 19:47:42
Line 142  sub print_username_entry_form { Line 142  sub print_username_entry_form {
                     'nr'   => "Name of Role",                      'nr'   => "Name of Role",
                     'cre'  => "Custom Role Editor"                      'cre'  => "Custom Role Editor"
        );         );
     my $help = &Apache::loncommon::help_open_menu('',undef,undef,'',282,'Instructor Interface');      my $help = &Apache::loncommon::help_open_menu(undef,undef,282,'Instructor Interface');
     my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges');      my $helpsiur=&Apache::loncommon::help_open_topic('Course_Change_Privileges');
     my $helpecpr=&Apache::loncommon::help_open_topic('Course_Editing_Custom_Roles');      my $helpecpr=&Apache::loncommon::help_open_topic('Course_Editing_Custom_Roles');
     $r->print(<<"ENDDOCUMENT");      $r->print(<<"ENDDOCUMENT");
Line 195  sub user_modification_js { Line 195  sub user_modification_js {
   
     $nondc_setsection_code      $nondc_setsection_code
   
     function setSections() {  
         var re1 = /^currsec_/;  
         var groups = new Array($groupslist);  
         for (var i=0;i<document.cu.elements.length;i++) {  
             var str = document.cu.elements[i].name;  
             var checkcurr = str.match(re1);  
             if (checkcurr != null) {  
                 var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;  
                 if (document.cu.elements[i-1].checked == true) {  
                     var re2 = /^currsec_[a-zA-Z0-9]+_[a-zA-Z0-9]+_(\\w+)\$/;  
                     match = re2.exec(str);  
                     var role = match[1];  
                     if (role == 'cc') {  
                         alert("Section designations do not apply to Course Coordinator roles.\\nA course coordinator role will be added with access to all sections.");  
                     }  
                     else {  
                         var sections = '';  
                         var numsec = 0;  
                         var sections;  
                         for (var j=0; j<document.cu.elements[i].length; j++) {  
                             if (document.cu.elements[i].options[j].selected == true ) {  
                                 if (document.cu.elements[i].options[j].value != "") {  
                                     if (numsec == 0) {  
                                         if (document.cu.elements[i].options[j].value != "") {  
                                             sections = document.cu.elements[i].options[j].value;  
                                             numsec ++;  
                                         }  
                                     }  
                                     else {  
                                         sections = sections + "," +  document.cu.elements[i].options[j].value  
                                         numsec ++;  
                                     }  
                                 }  
                             }  
                         }  
                         if (numsec > 0) {  
                             if (document.cu.elements[i+1].value != "" && document.cu.elements[i+1].value != null) {  
                                 sections = sections + "," +  document.cu.elements[i+1].value;  
                             }  
                         }  
                         else {  
                             sections = document.cu.elements[i+1].value;      
                         }  
                         var newseclist = document.cu.elements[i+1].value;  
                         var newsecs = new Array();  
                         if (newseclist != null && newseclist != "") {  
                             newsecs = newseclist.split(/,/g);  
                             numsec = numsec + newsecs.length;  
                         }  
                         if ((role == 'st') && (numsec > 1)) {  
                             alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.")    
                             return;  
                         }  
                         else {  
                             for (var j=0; j<newsecs.length; j++) {  
                                 if ((newsecs[j] == 'all') ||   
                                     (newsecs[j] == 'none')) {  
                                     alert("'"+newsecs[j]+"' may not be used as the name for a section, as it is a reserved word.\\nPlease choose a different section name.");  
                                     return;  
                                 }  
                                 for (var k=0; k<groups.length; k++) {  
                                     if (newsecs[j] == groups[k]) {  
                                         alert("'"+newsecs[j]+"' may not be used as a section name, as it is the name of a course group.\\nSection names and group names must be distinct. Please choose a different section name.");  
                                         return;  
                                     }  
                                 }  
                             }  
                             document.cu.elements[i+2].value = sections;  
                         }  
                     }  
                 }  
             }  
         }  
         document.cu.submit();  
     }  
 </script>  </script>
 END  END
 }  }
Line 304  sub print_user_modification_page { Line 229  sub print_user_modification_page {
     $ccdomain=~s/\W//g;      $ccdomain=~s/\W//g;
     my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();      my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition();
     my $dc_setcourse_code = '';      my $dc_setcourse_code = '';
     my $nondc_setsection_code = '';      my $nondc_setsection_code = '';                                        
   
     my %loaditem;      my %loaditem;
   
     my $groupslist;      my $groupslist;
Line 316  sub print_user_modification_page { Line 242  sub print_user_modification_page {
   
     if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) {      if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) {
         my $dcdom = $1;          my $dcdom = $1;
         $loaditem{'onload'} = "document.cu.coursedesc.value=''";          $loaditem{'onload'} = "document.cu.coursedesc.value='';";
           my @rolevals = ('st','ta','ep','in','cc');
           my (@crsroles,@grproles);
           for (my $i=0; $i<@rolevals; $i++) {
               $crsroles[$i]=&Apache::lonnet::plaintext($rolevals[$i],'Course');
               $grproles[$i]=&Apache::lonnet::plaintext($rolevals[$i],'Group');
           }
           my $rolevalslist = join('","',@rolevals);
           my $crsrolenameslist = join('","',@crsroles);
           my $grprolenameslist = join('","',@grproles);
           my $pickcrsfirst = '<--'.&mt('Pick course first');
           my $pickgrpfirst = '<--'.&mt('Pick group first'); 
         $dc_setcourse_code = <<"ENDSCRIPT";          $dc_setcourse_code = <<"ENDSCRIPT";
     function setCourse() {      function setCourse() {
         var course = document.cu.dccourse.value;          var course = document.cu.dccourse.value;
Line 384  sub print_user_modification_page { Line 321  sub print_user_modification_page {
             else {               else { 
                 var coursename = "_$dcdom"+"_"+course+"_"+userrole                  var coursename = "_$dcdom"+"_"+course+"_"+userrole
                 document.cu.elements[numcourse].name = "act"+coursename                  document.cu.elements[numcourse].name = "act"+coursename
                 document.cu.elements[numcourse+4].name = "sec"+coursename                  document.cu.elements[numcourse+5].name = "sec"+coursename
                 document.cu.elements[numcourse+4].value = section                  document.cu.elements[numcourse+5].value = section
                 document.cu.elements[numcourse+5].name = "start"+coursename                  document.cu.elements[numcourse+7].name = "start"+coursename
                 document.cu.elements[numcourse+6].name = "end"+coursename                  document.cu.elements[numcourse+8].name = "end"+coursename
             }              }
         }          }
         document.cu.submit();          document.cu.submit();
Line 401  sub print_user_modification_page { Line 338  sub print_user_modification_page {
         }          }
         return -1;          return -1;
     }      }
   
       function setType() {
           var crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value;
           rolevals = new Array("$rolevalslist");
           if (crstype == 'Group') {
               if (document.cu.currsec.options[0].text == "$pickcrsfirst") {
                   document.cu.currsec.options[0].text = "$pickgrpfirst";
               } 
               grprolenames = new Array("$grprolenameslist");
               for (var i=0; i<rolevals.length; i++) {
                   if (document.cu.role.selectedIndex == i) {
                       document.cu.role.options[i] = new Option(grprolenames[i],rolevals[i],true,false);
                   } else {
                       document.cu.role.options[i] = new Option(grprolenames[i],rolevals[i],false,false);
                   }
               }
           } else {
               if (document.cu.currsec.options[0].text == "$pickgrpfirst") {
                   document.cu.currsec.options[0].text = "$pickcrsfirst";
               }
               crsrolenames = new Array("$crsrolenameslist");
               for (var i=0; i<rolevals.length; i++) {
                   if (document.cu.role.selectedIndex == i) {
                       document.cu.role.options[i] = new Option(crsrolenames[i],rolevals[i],true,false);
                   } else {
                       document.cu.role.options[i] = new Option(crsrolenames[i],rolevals[i],false,false);
                   }
               }
           }
       }
 ENDSCRIPT  ENDSCRIPT
     } else {      } else {
         $nondc_setsection_code = <<"ENDSECCODE";          $nondc_setsection_code = <<"ENDSECCODE";
Line 411  ENDSCRIPT Line 378  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 448  ENDSCRIPT Line 414  ENDSCRIPT
                             sections = document.cu.elements[i+1].value;                              sections = document.cu.elements[i+1].value;
                         }                          }
                         var newsecs = document.cu.elements[i+1].value;                          var newsecs = document.cu.elements[i+1].value;
    var numsplit;
                         if (newsecs != null && newsecs != "") {                          if (newsecs != null && newsecs != "") {
                             var numsplit = newsecs.split(/,/g);                              numsplit = newsecs.split(/,/g);
                             numsec = numsec + numsplit.length;                              numsec = numsec + numsplit.length;
                         }                          }
   
                         if ((role == 'st') && (numsec > 1)) {                          if ((role == 'st') && (numsec > 1)) {
                             alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.")                              alert("In each course, each user may only have one student role at a time. You had selected "+numsec+" sections.\\nPlease modify your selections so they include no more than one section.")
                             return;                              return;
                         }                          }
                         else {                          else if (numsplit != null) {
                             for (var j=0; j<numsplit.length; j++) {                              for (var j=0; j<numsplit.length; j++) {
                                 if ((numsplit[j] == 'all') ||                                  if ((numsplit[j] == 'all') ||
                                     (numsplit[j] == 'none')) {                                      (numsplit[j] == 'none')) {
Line 470  ENDSCRIPT Line 438  ENDSCRIPT
                                     }                                      }
                                 }                                  }
                             }                              }
                             document.cu.elements[i+2].value = sections;  
                         }                          }
                           document.cu.elements[i+2].value = sections;
                     }                      }
                 }                  }
             }              }
Line 636  END Line 604  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 646  END Line 614  END
                            '<br />'.&mt('Domain').': '.$coursedom.('&nbsp;'x8).                             '<br />'.&mt('Domain').': '.$coursedom.('&nbsp;'x8).
      &Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom);       &Apache::loncommon::syllabuswrapper('Syllabus',$coursedir,$coursedom);
        $sortkey.="\0".$coursedata{'description'};         $sortkey.="\0".$coursedata{'description'};
                          $class=$coursedata{'type'};
    } else {     } else {
        $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 737  END Line 707  END
                }                 }
        my $plaintext='';         my $plaintext='';
        unless ($croletitle) {         unless ($croletitle) {
    $plaintext=&Apache::lonnet::plaintext($role_code);                     $plaintext=&Apache::lonnet::plaintext($role_code,$class)
        } else {         } else {
            $plaintext=             $plaintext=
  "Customrole '$croletitle' defined by $croleuname\@$croleudom";   "Customrole '$croletitle' defined by $croleuname\@$croleudom";
Line 757  END Line 727  END
            } # end of foreach        (table building loop)             } # end of foreach        (table building loop)
            my $rolesdisplay = 0;             my $rolesdisplay = 0;
            my %output = ();             my %output = ();
    foreach my $type ('Construction Space','Course','Domain','System','Unknown') {     foreach my $type ('Construction Space','Course','Group','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 779  END Line 749  END
 <tr><th>$lt{'rev'}</th><th>$lt{'ren'}</th><th>$lt{'del'}</th><th>$lt{'rol'}</th><th>$lt{'e  <tr><th>$lt{'rev'}</th><th>$lt{'ren'}</th><th>$lt{'del'}</th><th>$lt{'rol'}</th><th>$lt{'e
 xt'}</th><th>$lt{'sta'}</th><th>$lt{'end'}</th>  xt'}</th><th>$lt{'sta'}</th><th>$lt{'end'}</th>
 END  END
                foreach my $type ('Construction Space','Course','Domain','System','Unknown') {                 foreach my $type ('Construction Space','Course','Group','Domain','System','Unknown') {
                    if ($output{$type}) {                     if ($output{$type}) {
                        $r->print($output{$type}."\n");                         $r->print($output{$type}."\n");
                    }                     }
Line 977  ENDDROW Line 947  ENDDROW
         $r->print($domaintext);          $r->print($domaintext);
     }      }
 #  #
 # Course level  # Course and group levels
 #  #
   
     if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) {      if ($env{'request.role'} =~ m-^dc\./(\w+)/$-) {
         $r->print(&course_level_dc($1));          $r->print(&course_level_dc($1,'Course'));
         $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n");          $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n");
     } else {      } else {
         $r->print(&course_level_table(%inccourses));          $r->print(&course_level_table(%inccourses));
Line 1281  END Line 1251  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 1328  END Line 1298  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 1339  END Line 1309  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 1358  END Line 1328  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 1372  END Line 1342  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 1395  END Line 1365  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 1429  END Line 1399  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 1541  sub build_roles { Line 1428  sub build_roles {
             $num_sections ++;              $num_sections ++;
         }          }
     }      }
                                                                                        
     return $num_sections;      return $num_sections;
 }  }
   
Line 1616  sub custom_role_editor { Line 1503  sub custom_role_editor {
     }      }
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
     'prv'  => "Privilege",      'prv'  => "Privilege",
     'crl'  => "Course Level",      'crl'  => "Course/Group Level",
                     'dml'  => "Domain Level",                      'dml'  => "Domain Level",
                     'ssl'  => "System Level"                      'ssl'  => "System Level"
        );         );
Line 1628  sub custom_role_editor { Line 1515  sub custom_role_editor {
 <tr><th>$lt{'prv'}</th><th>$lt{'crl'}</th><th>$lt{'dml'}</th>  <tr><th>$lt{'prv'}</th><th>$lt{'crl'}</th><th>$lt{'dml'}</th>
 <th>$lt{'ssl'}</th></tr>  <th>$lt{'ssl'}</th></tr>
 ENDCCF  ENDCCF
     foreach (sort keys %full) {      foreach my $priv (sort keys %full) {
  $r->print('<tr><td>'.&Apache::lonnet::plaintext($_).'</td><td>'.          my $privtext = &Apache::lonnet::plaintext($priv);
     ($courselevel{$_}?'<input type="checkbox" name="'.$_.':c" '.   $r->print('<tr><td>'.$privtext.'</td><td>'.
     ($courselevelcurrent{$_}?'checked="1"':'').' />':'&nbsp;').      ($courselevel{$priv}?'<input type="checkbox" name="'.$priv.':c" '.
       ($courselevelcurrent{$priv}?'checked="1"':'').' />':'&nbsp;').
     '</td><td>'.      '</td><td>'.
     ($domainlevel{$_}?'<input type="checkbox" name="'.$_.':d" '.      ($domainlevel{$priv}?'<input type="checkbox" name="'.$priv.':d" '.
     ($domainlevelcurrent{$_}?'checked="1"':'').' />':'&nbsp;').      ($domainlevelcurrent{$priv}?'checked="1"':'').' />':'&nbsp;').
     '</td><td>'.      '</td><td>'.
     ($systemlevel{$_}?'<input type="checkbox" name="'.$_.':s" '.      ($systemlevel{$priv}?'<input type="checkbox" name="'.$priv.':s" '.
     ($systemlevelcurrent{$_}?'checked="1"':'').' />':'&nbsp;').      ($systemlevelcurrent{$priv}?'checked="1"':'').' />':'&nbsp;').
     '</td></tr>');      '</td></tr>');
     }      }
     $r->print(      $r->print(
Line 1765  sub course_level_table { Line 1653  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 Level",              'crl'  => "Course/Group Level",
             'act'  => "Activate",              'act'  => "Activate",
             'rol'  => "Role",              'rol'  => "Role",
             'ext'  => "Extent",              'ext'  => "Extent",
Line 1780  sub course_level_table { Line 1668  sub course_level_table {
  $thiscourse=~s:_:/:g;   $thiscourse=~s:_:/:g;
  my %coursedata=&Apache::lonnet::coursedescription($thiscourse);   my %coursedata=&Apache::lonnet::coursedescription($thiscourse);
  my $area=$coursedata{'description'};   my $area=$coursedata{'description'};
           my $type=$coursedata{'type'};
  if (!defined($area)) { $area=&mt('Unavailable course').': '.$_; }   if (!defined($area)) { $area=&mt('Unavailable course').': '.$_; }
  my $bgcol=$thiscourse;   my $bgcol=$thiscourse;
  $bgcol=~s/[^7-9a-e]//g;   $bgcol=~s/[^7-9a-e]//g;
Line 1792  sub course_level_table { Line 1681  sub course_level_table {
     &Apache::loncommon::get_sections($domain,$cnum);      &Apache::loncommon::get_sections($domain,$cnum);
             }              }
         }          }
  foreach  ('st','ta','ep','ad','in','cc') {   foreach  ('st','ta','ep','in','cc') {
     if (&Apache::lonnet::allowed('c'.$_,$thiscourse)) {      if (&Apache::lonnet::allowed('c'.$_,$thiscourse)) {
  my $plrole=&Apache::lonnet::plaintext($_);   my $plrole=&Apache::lonnet::plaintext($_);
  $table .= <<ENDEXTENT;   $table .= <<ENDEXTENT;
Line 1911  sub course_level_dc { Line 1800  sub course_level_dc {
                       '<input type="hidden" name="origdom" value="'.$dcdom.'" />'.                        '<input type="hidden" name="origdom" value="'.$dcdom.'" />'.
                       '<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').'</b>';              ('cu','dccourse','dcdomain','coursedesc',undef,undef,'Course/Group').'</b>';
                                                                                             my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom);
     my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,$dcdom);  
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                     'crl'  => "Course Level",                      'typ' => "Type",
                     'crt'  => "Course Title",  
                     'rol'  => "Role",                      'rol'  => "Role",
                     'grs'  => "Section",                      'grs'  => "Section",
                     'exs'  => "Existing sections",                      'exs'  => "Existing sections",
Line 1926  sub course_level_dc { Line 1813  sub course_level_dc {
                     'ssd'  => "Set Start Date",                      'ssd'  => "Set Start Date",
                     'sed'  => "Set End Date"                      'sed'  => "Set End Date"
                   );                    );
     my $header = '<h4>'.$lt{'crl'}.'</h4>'.      my $header = '<h4>'.&mt('Course/Group 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>'.      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="Group">'.&mt('Group')."\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','ad','in','cc') {      foreach  ('st','ta','ep','in','cc') {
         my $plrole=&Apache::lonnet::plaintext($_);          my $plrole=&Apache::lonnet::plaintext($_);
         $otheritems .= '  <option value="'.$_.'">'.$plrole;          $otheritems .= '  <option value="'.$_.'">'.$plrole;
     }      }

Removed from v.1.118  
changed lines
  Added in v.1.130


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