Diff for /loncom/interface/loncreateuser.pm between versions 1.87 and 1.88

version 1.87, 2004/09/23 22:51:24 version 1.88, 2004/11/23 18:03:04
Line 197  sub print_user_modification_page { Line 197  sub print_user_modification_page {
     $ccuname=~s/\W//g;      $ccuname=~s/\W//g;
     $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 $loaditem;
       if ($ENV{'request.role'} =~ m-^dc\./(\w+)/$-) {
           my $dcdom = $1;
           $loaditem = qq|OnLoad="document.cu.coursedesc.value=''"|;
           $dc_setcourse_code = <<"ENDSCRIPT";
       function setCourse() {
           var course = document.cu.dccourse.value;
           if (course != "") {
               if (document.cu.dcdomain.value != document.cu.origdom.value) {
                   alert("You must select a course in the current domain");
                   return;
               } 
               var userrole = document.cu.role.options[document.cu.role.selectedIndex].value
               var section;
               var numsections = 0;
               if (document.cu.role.value != "cc") {
                   for (var i=0; i<document.cu.currsec.length; i++) {
                       if (document.cu.currsec.options[i].selected == true ) {
                           if (document.cu.currsec.options[i].value != "") { 
                               if (numsections == 0) {
                                   if (document.cu.currsec.options[i].value != "") {
                                       section = document.cu.currsec.options[i].value
                                       numsections = 1;
                                   }
                               }
                               else {
                                   section = section + "," +  document.cu.currsec.options[i].value
                                   numsections ++;
                               }
                           }
                       }
                   }
                   if (document.cu.newsec.value != "") {
                       if (numsections == 0) {
                           if (document.cu.newsec.value != "") {
                               section = document.cu.newsec.value
                               numsections = 1;
                           }
                       }
                       else {
                           section = section + "," +  document.cu.newsec.value
                           numsections ++;
                       }
                   }
               }
               var numcourse = getIndex(document.cu.dccourse);
               if (numcourse == "-1") {
                   alert("There was a problem with your course selection");
                   return
               }
               else { 
                   var coursename = "_$dcdom"+"_"+course+"_"+userrole
                   document.cu.elements[numcourse].name = "act"+coursename
                   document.cu.elements[numcourse+4].name = "sec"+coursename
                   document.cu.elements[numcourse+4].value = section
                   document.cu.elements[numcourse+5].name = "start"+coursename
                   document.cu.elements[numcourse+6].name = "end"+coursename
               }
           }
           document.cu.submit();
       }
   
       function getIndex(caller) {
           for (var i=0;i<document.cu.elements.length;i++) {
               if (document.cu.elements[i] == caller) {
                   return i;
               }
           }
           return -1;
       }
   ENDSCRIPT
       }
     my $dochead =<<"ENDDOCHEAD";      my $dochead =<<"ENDDOCHEAD";
 <html>  <html>
 <head>  <head>
Line 210  sub print_user_modification_page { Line 283  sub print_user_modification_page {
     }      }
   
     $pjump_def      $pjump_def
       $dc_setcourse_code
   
     function dateset() {      function dateset() {
         eval("document.cu."+document.cu.pres_marker.value+          eval("document.cu."+document.cu.pres_marker.value+
Line 221  sub print_user_modification_page { Line 295  sub print_user_modification_page {
 </head>  </head>
 ENDDOCHEAD  ENDDOCHEAD
     $r->print(&Apache::loncommon::bodytag(      $r->print(&Apache::loncommon::bodytag(
                                      'Create Users, Change User Privileges'));                                       'Create Users, Change User Privileges',undef,$loaditem));
     my $forminfo =<<"ENDFORMINFO";      my $forminfo =<<"ENDFORMINFO";
 <form action="/adm/createuser" method="post" name="cu">  <form action="/adm/createuser" method="post" name="cu">
 <input type="hidden" name="phase"       value="update_user_data">  <input type="hidden" name="phase"       value="update_user_data">
Line 682  ENDDROW Line 756  ENDDROW
 #  #
 # Course level  # Course level
 #  #
     $r->print(&course_level_table(%inccourses));  
     $r->print("<hr /><input type=submit value=\"".&mt('Modify User')."\">\n");      if ($ENV{'request.role'} =~ m-^dc\./(\w+)/$-) {
           $r->print(&course_level_dc($1));
           $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setCourse()">'."\n");
       } else {
           $r->print(&course_level_table(%inccourses));
           $r->print("<hr /><input type=submit value=\"".&mt('Modify User')."\">\n");
       }
     $r->print("</form></body></html>");      $r->print("</form></body></html>");
 }  }
   
Line 989  END Line 1069  END
  my ($one,$two,$three,$four,$five)=($1,$2,$3,$4,$5);   my ($one,$two,$three,$four,$five)=($1,$2,$3,$4,$5);
  my $url='/'.$one.'/'.$two;   my $url='/'.$one.'/'.$two;
  my $full=$one.'_'.$two.'_cr_cr_'.$three.'_'.$four.'_'.$five;   my $full=$one.'_'.$two.'_cr_cr_'.$three.'_'.$four.'_'.$five;
  $ENV{'form.sec_'.$full}=~s/\W//g;  
  if ($ENV{'form.sec_'.$full}) {  
     $url.='/'.$ENV{'form.sec_'.$full};  
  }  
   
  my $start = ( $ENV{'form.start_'.$full} ?                   my $start = ( $ENV{'form.start_'.$full} ?
       $ENV{'form.start_'.$full} :                                 $ENV{'form.start_'.$full} :
       $now );                                $now );
  my $end   = ( $ENV{'form.end_'.$full} ?                   my $end   = ( $ENV{'form.end_'.$full} ?
       $ENV{'form.end_'.$full} :                                $ENV{'form.end_'.$full} :
       0 );                                0 );
                                                                                        
     $r->print(&mt('Assigning custom role').' "'.$five.'" by '.$four.'@'.$three.' in '.$url.                  # split multiple sections
                          ($start?', '.&mt('starting').' '.localtime($start):'').                  my %sections = ();
                          ($end?', ending '.localtime($end):'').': <b>'.                  my $num_sections = &build_roles($ENV{'form.sec_'.$full},\%sections);
       &Apache::lonnet::assigncustomrole(                  if ($num_sections == 0) {
  $ENV{'form.ccdomain'},$ENV{'form.ccuname'},$url,$three,$four,$five,$end,$start).                      $r->print(&commit_customrole($url,$three,$four,$five,$start,$end));
       '</b><br>');                  } else {
                       foreach (sort {$a cmp $b} keys %sections) {
                           my $securl = $url.'/'.$_;
           $r->print(&commit_customrole($securl,$three,$four,$five,$start,$end));
                       }
                   }
     } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) {      } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)\_([^\_]+)$/) {
  # Activate roles for sections with 3 id numbers   # Activate roles for sections with 3 id numbers
  # set start, end times, and the url for the class   # set start, end times, and the url for the class
Line 1018  END Line 1099  END
       $ENV{'form.end_'.$one.'_'.$two.'_'.$three} :        $ENV{'form.end_'.$one.'_'.$two.'_'.$three} :
       0 );        0 );
  my $url='/'.$one.'/'.$two;   my $url='/'.$one.'/'.$two;
  $ENV{'form.sec_'.$one.'_'.$two.'_'.$three}=~s/\W//g;                  my $type = 'three';
  if ($ENV{'form.sec_'.$one.'_'.$two.'_'.$three}) {                  # split multiple sections
     $url.='/'.$ENV{'form.sec_'.$one.'_'.$two.'_'.$three};                  my %sections = ();
  }                  my $num_sections = &build_roles($ENV{'form.sec_'.$one.'_'.$two.'_'.$three},\%sections);
  # Assign the role and report it                  if ($num_sections == 0) {
  $r->print(&mt('Assigning').' '.$three.' in '.$url.                      $r->print(&commit_standardrole($url,$three,$start,$end,$one,$two));
                          ($start?', '.&mt('starting').' '.localtime($start):'').                  } else {
                          ($end?', '.&mt('ending').' '.localtime($end):'').': <b>'.                      my $emptysec = 0;
                           &Apache::lonnet::assignrole(                      foreach my $sec (sort {$a cmp $b} keys %sections) {
                               $ENV{'form.ccdomain'},$ENV{'form.ccuname'},                          $sec =~ s/\W//g;
                               $url,$three,$end,$start).                          if ($sec ne '') {  
   '</b><br>');                              my $securl = $url.'/'.$sec;
  # Handle students differently                              $r->print(&commit_standardrole($securl,$three,$start,$end,$one,$two));
  if ($three eq 'st') {                          } else {
     $url=~/^\/(\w+)\/(\w+)/;                              $emptysec = 1;
     my $cid=$one.'_'.$two;                          }
     $r->print(&mt('Add to classlist').': <b>'.                      }
       &Apache::lonnet::critical(                      if ($emptysec) {
   'put:'.$ENV{'course.'.$cid.'.domain'}.':'.                          $r->print(&commit_standardrole($url,$three,$start,$end,$one,$two));
                            $ENV{'course.'.$cid.'.num'}.':classlist:'.                      }
                                    &Apache::lonnet::escape(                  } 
                                        $ENV{'form.ccuname'}.':'.  
                                        $ENV{'form.ccdomain'} ).'='.  
                                    &Apache::lonnet::escape($end.':'.$start),  
        $ENV{'course.'.$cid.'.home'})  
       .'</b><br>');  
  }  
     } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {      } elsif ($_=~/^form\.act\_([^\_]+)\_([^\_]+)$/) {
  # Activate roles for sections with two id numbers   # Activate roles for sections with two id numbers
  # set start, end times, and the url for the class   # set start, end times, and the url for the class
Line 1055  END Line 1130  END
       $ENV{'form.end_'.$1.'_'.$2} :        $ENV{'form.end_'.$1.'_'.$2} :
       0 );        0 );
  my $url='/'.$1.'/';   my $url='/'.$1.'/';
                   # split multiple sections
                   my %sections = ();
                   my $num_sections = &build_roles($ENV{'form.sec_'.$1.'_'.$2},\%sections);
                   if ($num_sections == 0) {
                       $r->print(&commit_standardrole($url,$2,$start,$end,$1));
                   } else {
                       my $emptysec = 0;
                       foreach my $sec (sort {$a cmp $b} keys %sections) {
                           if ($sec ne '') {
                               my $securl = $url.'/'.$sec;
                               $r->print(&commit_standardrole($securl,$2,$start,$end,$1));
                           } else {
                               $emptysec = 1;
                           }
                       }
                       if ($emptysec) {
                           $r->print(&commit_standardrole($url,$2,$start,$end,$1));
                       }
                   }
  # Assign the role and report it.   # Assign the role and report it.
  $r->print(&mt('Assigning').' '.$2.' in '.$url.': '.   $r->print(&mt('Assigning').' '.$2.' in '.$url.': '.
                          ($start?', '.&mt('starting').' '.localtime($start):'').                           ($start?', '.&mt('starting').' '.localtime($start):'').
Line 1073  END Line 1167  END
     $r->print('</body></html>');      $r->print('</body></html>');
 }  }
   
   sub commit_customrole {
       my ($url,$three,$four,$five,$end,$start) = @_;
       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(
           $ENV{'form.ccdomain'},$ENV{'form.ccuname'},$url,$three,$four,$five,$end,$start).
                 '</b><br>';
       return $output;
   }
   
   sub commit_standardrole {
       my ($url,$three,$start,$end,$one,$two) = @_;
       my $output = (&mt('Assigning').' '.$three.' in '.$url.
              ($start?', '.&mt('starting').' '.localtime($start):'').
              ($end?', '.&mt('ending').' '.localtime($end):'').': <b>'.
              &Apache::lonnet::assignrole(
                  $ENV{'form.ccdomain'},$ENV{'form.ccuname'},
                  $url,$three,$end,$start).
                  '</b><br>');
   
   # Handle students differently
       if (($three eq 'st') && defined($one) && defined($two)) {
           $url=~/^\/(\w+)\/(\w+)/;
           my $cid=$one.'_'.$two;
           $output .= (&mt('Add to classlist').': <b>'.
                   &Apache::lonnet::critical(
                   'put:'.$ENV{'course.'.$cid.'.domain'}.':'.
                   $ENV{'course.'.$cid.'.num'}.':classlist:'.
                   &Apache::lonnet::escape(
                   $ENV{'form.ccuname'}.':'.
                   $ENV{'form.ccdomain'} ).'='.
                   &Apache::lonnet::escape($end.':'.$start),
                   $ENV{'course.'.$cid.'.home'})
                  .'</b><br>');
       }
       return $output;
   }
   
   
   sub build_roles {
       my ($sectionstr,$sections) = @_;
       my $num_sections = 0;
       if ($sectionstr=~ /,/) {
           my @secnums = split/,/,$sectionstr;
           foreach my $sec (@secnums) {
               $sec =~ ~s/\W//g;
               unless ($sec eq "") {
                   if (exists($$sections{$sec})) {
                       $$sections{$sec} ++;
                   } else {
                       $$sections{$sec} = 1;
                       $num_sections ++;
                   }
               }
           }
       } else {
           $sectionstr=~s/\W//g;
           unless ($sectionstr eq '') {
               $$sections{$sectionstr} = 1;
               $num_sections ++;
           }
       }
                                                                                        
       return $num_sections;
   }
   
 # ========================================================== Custom Role Editor  # ========================================================== Custom Role Editor
   
 sub custom_role_editor {  sub custom_role_editor {
Line 1376  $table Line 1537  $table
 ENDTABLE  ENDTABLE
     return $result;      return $result;
 }  }
   
   sub course_level_dc {
       my ($dcdom) = @_;
       my %customroles=&my_custom_roles();
       my $hiddenitems = '<input type="hidden" name="dcdomain" value="'.$dcdom.'" />'.
                         '<input type="hidden" name="origdom" value="'.$dcdom.'" />'.
                         '<input type="hidden" name="dccourse" value="" />';
       my $courseform='<b>'.&Apache::loncommon::selectcourse_link
                        ('cu','dccourse','dcdomain','coursedesc').'</b>';
                                                                                         
       my $cb_jscript = &Apache::loncommon::coursebrowser_javascript($dcdom,$dcdom);
       my %lt=&Apache::lonlocal::texthash(
                       'crl'  => "Course Level",
                       'crt'  => "Course Title",
                       'rol'  => "Role",
                       'grs'  => "Group/Section",
                       'exs'  => "Existing sections",
                       'new'  => "Define new section", 
                       'sta'  => "Start",
                       'end'  => "End",
                       'ssd'  => "Set Start Date",
                       'sed'  => "Set End Date"
                     );
       my $header = '<h4>'.$lt{'crl'}.'</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>';
       my $otheritems = '<tr><td><input type="text" name="coursedesc" value="" onFocus="this.blur();opencrsbrowser('."'".'cu'."'".','."'".'dccourse'."'".','."'".'dcdomain'."'".','."'".'coursedesc'."'".')" /></td>'.
                        '<td><select name="role">'."\n";
       foreach  ('st','ta','ep','ad','in','cc') {
           my $plrole=&Apache::lonnet::plaintext($_);
           $otheritems .= '  <option value="'.$_.'">'.$plrole;
       }
       if ( keys %customroles > 0) {
           foreach (sort keys %customroles) {
               my $custrole='cr_cr_'.$ENV{'user.domain'}.
                       '_'.$ENV{'user.name'}.'_'.$_;
               $otheritems .= '  <option value="'.$custrole.'">'.$_;
           }
       }
       $otheritems .= '</select></td><td>'.
                        '<table border="0" cellspacing="0" cellpadding="0">'.
                        '<tr><td valign="top"><b>'.$lt{'exs'}.'</b><br /><select name="currsec">'.
                        ' <option value=""><--'.&mt('Pick course first').'</select></td>'.
                        '<td>&nbsp;&nbsp;</td>'.
                        '<td valign="top">&nbsp;<b>'.$lt{'new'}.'</b><br />'.
                        '<input type="text" name="newsec" value="" /></td>'.
                        '</tr></table></td>';
       $otheritems .= <<ENDTIMEENTRY;
   <td><input type=hidden name="start" value=''>
   <a href=
   "javascript:pjump('date_start','Start Date',document.cu.start.value,'start','cu.pres','dateset')">$lt{'ssd'}</a></td>
   <td><input type=hidden name="end" value=''>
   <a href=
   "javascript:pjump('date_end','End Date',document.cu.end.value,'end','cu.pres','dateset')">$lt{'sed'}</a></td>
   ENDTIMEENTRY
       $otheritems .= "</tr></table>\n";
       return $cb_jscript.$header.$hiddenitems.$otheritems;
   }
   
 #---------------------------------------------- end functions for &phase_two  #---------------------------------------------- end functions for &phase_two
   
 #--------------------------------- functions for &phase_two and &phase_three  #--------------------------------- functions for &phase_two and &phase_three

Removed from v.1.87  
changed lines
  Added in v.1.88


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