Diff for /loncom/interface/loncreateuser.pm between versions 1.102 and 1.111

version 1.102, 2005/06/06 00:06:12 version 1.111, 2006/03/21 18:51:28
Line 108  sub my_custom_roles { Line 108  sub my_custom_roles {
   
 sub authorpriv {  sub authorpriv {
     my ($auname,$audom)=@_;      my ($auname,$audom)=@_;
     if (($auname ne $env{'user.name'}) ||      unless ((&Apache::lonnet::allowed('cca',$audom.'/'.$auname))
         (($audom ne $env{'user.domain'}) &&           || (&Apache::lonnet::allowed('caa',$audom.'/'.$auname))) { return ''; }
          ($audom ne $env{'request.role.domain'}))) { return ''; }  
     unless (&Apache::lonnet::allowed('cca',$audom)) { return ''; }  
     return 1;      return 1;
 }  }
   
 # =================================================================== Phase one  # =================================================================== Phase one
   
 sub print_username_entry_form {  sub print_username_entry_form {
     my $r=shift;      my ($r) = @_;
     my $defdom=$env{'request.role.domain'};      my $defdom=$env{'request.role.domain'};
     my @domains = &Apache::loncommon::get_domains();      my @domains = &Apache::loncommon::get_domains();
     my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain');      my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain');
     my $html=&Apache::lonxml::xmlbegin();  
     my $bodytag =&Apache::loncommon::bodytag('Create Users, Change User Privileges').&Apache::loncommon::help_open_menu('',undef,undef,'',282,'Instructor Interface');  
     my $selscript=&Apache::loncommon::studentbrowser_javascript();      my $selscript=&Apache::loncommon::studentbrowser_javascript();
       my $start_page =
    &Apache::loncommon::start_page('Create Users, Change User Privileges',
          $selscript);
   
     my $sellink=&Apache::loncommon::selectstudent_link      my $sellink=&Apache::loncommon::selectstudent_link
                                         ('crtuser','ccuname','ccdomain');                                          ('crtuser','ccuname','ccdomain');
     my %existingroles=&my_custom_roles();      my %existingroles=&my_custom_roles();
Line 139  sub print_username_entry_form { Line 139  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 $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");
 $html  $start_page
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 $selscript  
 </head>  
 $bodytag  
 <form action="/adm/createuser" method="post" name="crtuser">  <form action="/adm/createuser" method="post" name="crtuser">
 <input type="hidden" name="phase" value="get_user_info">  <input type="hidden" name="phase" value="get_user_info">
 <h2>$lt{siur}$helpsiur</h2>  <h2>$lt{siur}$helpsiur</h2>
Line 158  $lt{'dom'}:</td><td>$domform</td></tr> Line 154  $lt{'dom'}:</td><td>$domform</td></tr>
 </table>  </table>
 <input name="userrole" type="submit" value="$lt{usrr}" />  <input name="userrole" type="submit" value="$lt{usrr}" />
 </form>  </form>
   ENDDOCUMENT
      if (&Apache::lonnet::allowed('mcr','/')) {
          $r->print(<<ENDCUSTOM);
 <form action="/adm/createuser" method="post" name="docustom">  <form action="/adm/createuser" method="post" name="docustom">
 <input type="hidden" name="phase" value="selected_custom_edit">  <input type="hidden" name="phase" value="selected_custom_edit">
 <h2>$lt{'ecrp'}$helpecpr</h2>  <h2>$lt{'ecrp'}$helpecpr</h2>
 $lt{'nr'}: $choice <input type="text" size="15" name="newrolename" /><br />  $lt{'nr'}: $choice <input type="text" size="15" name="newrolename" /><br />
 <input name="customeditor" type="submit" value="$lt{'cre'}" />  <input name="customeditor" type="submit" value="$lt{'cre'}" />
 </body>  </form>
 </html>  ENDCUSTOM
 ENDDOCUMENT      }
       $r->print(&Apache::loncommon::end_page());
   }
   
   
   sub user_modification_js {
       my ($pjump_def, $dc_setcourse_code)=@_;
       return <<END;
   <script type="text/javascript" language="Javascript">
   
       function pclose() {
           parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",
                    "height=350,width=350,scrollbars=no,menubar=no");
           parmwin.close();
       }
   
       $pjump_def
       $dc_setcourse_code
   
       function dateset() {
           eval("document.cu."+document.cu.pres_marker.value+
               ".value=document.cu.pres_value.value");
           pclose();
       }
   
       function setSections() {
           var re1 = /^currsec_/;
           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 newsecs = document.cu.elements[i+1].value;
                           if (newsecs != null && newsecs != "") {
                               var numsplit = newsecs.split(/,/g);
                               numsec = numsec + numsplit.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 { 
                               document.cu.elements[i+2].value = sections;
                           }
                       }
                   }
               }
           }
           document.cu.submit();
       }
   </script>
   END
 }  }
   
 # =================================================================== Phase two  # =================================================================== Phase two
Line 272  sub print_user_modification_page { Line 357  sub print_user_modification_page {
     }      }
 ENDSCRIPT  ENDSCRIPT
     }      }
     my $html=&Apache::lonxml::xmlbegin();  
     my $dochead =<<"ENDDOCHEAD";  
 $html  
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 <script type="text/javascript" language="Javascript">  
   
     function pclose() {  
         parmwin=window.open("/adm/rat/empty.html","LONCAPAparms",  
                  "height=350,width=350,scrollbars=no,menubar=no");  
         parmwin.close();  
     }  
   
     $pjump_def  
     $dc_setcourse_code  
   
     function dateset() {      my $js = &user_modification_js($pjump_def, $dc_setcourse_code);
         eval("document.cu."+document.cu.pres_marker.value+      my $start_page = 
             ".value=document.cu.pres_value.value");   &Apache::loncommon::start_page('Create Users, Change User Privileges',
         pclose();         $js,{'add_entries' => $loaditem,});
     }  
   
     function setSections() {  
         var re1 = /^currsec_/;  
         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 newsecs = document.cu.elements[i+1].value;  
                         if (newsecs != null && newsecs != "") {  
                             var numsplit = newsecs.split(/,/g);  
                             numsec = numsec + numsplit.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 {   
                             document.cu.elements[i+2].value = sections;  
                         }  
                     }  
                 }  
             }  
         }  
         document.cu.submit();  
     }  
 </script>  
 </head>  
 ENDDOCHEAD  
     $r->print(&Apache::loncommon::bodytag(  
                                      '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 400  ENDFORMINFO Line 404  ENDFORMINFO
  my $genhelp=&Apache::loncommon::help_open_topic('Generation');   my $genhelp=&Apache::loncommon::help_open_topic('Generation');
         &initialize_authen_forms();          &initialize_authen_forms();
  $r->print(<<ENDNEWUSER);   $r->print(<<ENDNEWUSER);
 $dochead  $start_page
 <h1>$lt{'cnu'}</h1>  <h1>$lt{'cnu'}</h1>
 $forminfo  $forminfo
 <h2>$lt{'nu'} "$ccuname" $lt{'id'} $ccdomain</h2>  <h2>$lt{'nu'} "$ccuname" $lt{'id'} $ccdomain</h2>
Line 441  ENDNEWUSER Line 445  ENDNEWUSER
                     'gen'  => "generation"                      'gen'  => "generation"
        );         );
  $r->print(<<ENDCHANGEUSER);   $r->print(<<ENDCHANGEUSER);
 $dochead  $start_page
 <h1>$lt{'cup'}</h1>  <h1>$lt{'cup'}</h1>
 $forminfo  $forminfo
 <h2>$lt{'usr'} "$ccuname" $lt{'id'} "$ccdomain"</h2>  <h2>$lt{'usr'} "$ccuname" $lt{'id'} "$ccdomain"</h2>
Line 574  END Line 578  END
        $class='Domain';         $class='Domain';
    }     }
                }                 }
                if ($role_code eq 'ca') {                 if (($role_code eq 'ca') || ($role_code eq 'aa')) {
                    $area=~/\/(\w+)\/(\w+)/;                     $area=~/\/(\w+)\/(\w+)/;
    if (&authorpriv($2,$1)) {     if (&authorpriv($2,$1)) {
        $allowed=1;         $allowed=1;
Line 663  END Line 667  END
  my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);   my $currentauth=&Apache::lonnet::queryauthenticate($ccuname,$ccdomain);
  if ($currentauth=~/^krb(4|5):/) {   if ($currentauth=~/^krb(4|5):/) {
     $currentauth=~/^krb(4|5):(.*)/;      $currentauth=~/^krb(4|5):(.*)/;
     my $krbdefdom=$1;      my $krbdefdom=$2;
             my %param = ( formname => 'document.cu',              my %param = ( formname => 'document.cu',
                           kerb_def_dom => $krbdefdom                             kerb_def_dom => $krbdefdom 
                           );                            );
Line 778  ENDOTHERAUTHS Line 782  ENDOTHERAUTHS
                     'sta'  => "Start",                      'sta'  => "Start",
                     'end'  => "End",                      'end'  => "End",
                     'cau'  => "Co-Author",                      'cau'  => "Co-Author",
                       'caa'  => "Assistant Co-Author",
                     'ssd'  => "Set Start Date",                      'ssd'  => "Set Start Date",
                     'sed'  => "Set End Date"                      'sed'  => "Set End Date"
        );         );
Line 796  ENDOTHERAUTHS Line 801  ENDOTHERAUTHS
 <a href=  <a href=
 "javascript:pjump('date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset')">$lt{'sed'}</a></td>  "javascript:pjump('date_end','End Date Co-Author',document.cu.end_$cudom\_$cuname\_ca.value,'end_$cudom\_$cuname\_ca','cu.pres','dateset')">$lt{'sed'}</a></td>
 </tr>  </tr>
   <tr>
   <td><input type=checkbox name="act_$cudom\_$cuname\_aa" /></td>
   <td>$lt{'caa'}</td>
   <td>$cudom\_$cuname</td>
   <td><input type=hidden name="start_$cudom\_$cuname\_aa" value='' />
   <a href=
   "javascript:pjump('date_start','Start Date Assistant Co-Author',document.cu.start_$cudom\_$cuname\_aa.value,'start_$cudom\_$cuname\_aa','cu.pres','dateset')">$lt{'ssd'}</a></td>
   <td><input type=hidden name="end_$cudom\_$cuname\_aa" value='' />
   <a href=
   "javascript:pjump('date_end','End Date Assistant Co-Author',document.cu.end_$cudom\_$cuname\_aa.value,'end_$cudom\_$cuname\_aa','cu.pres','dateset')">$lt{'sed'}</a></td>
   </tr>
 </table>  </table>
 ENDCOAUTH  ENDCOAUTH
     }      }
Line 849  ENDDROW Line 865  ENDDROW
         $r->print(&course_level_table(%inccourses));          $r->print(&course_level_table(%inccourses));
         $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setSections()">'."\n");          $r->print('<hr /><input type="button" value="'.&mt('Modify User').'" onClick="setSections()">'."\n");
     }      }
     $r->print("</form></body></html>");      $r->print("</form>".&Apache::loncommon::end_page());
 }  }
   
 # ================================================================= Phase Three  # ================================================================= Phase Three
Line 859  sub update_user_data { Line 875  sub update_user_data {
                                           $env{'form.ccdomain'});                                            $env{'form.ccdomain'});
     # Error messages      # Error messages
     my $error     = '<font color="#ff0000">'.&mt('Error').':</font>';      my $error     = '<font color="#ff0000">'.&mt('Error').':</font>';
     my $end       = '</body></html>';      my $end       = &Apache::loncommon::end_page();
     # Print header  
     my $html=&Apache::lonxml::xmlbegin();  
     $r->print(<<ENDTHREEHEAD);  
 $html  
 <head>  
 <title>The LearningOnline Network with CAPA</title>  
 </head>  
 ENDTHREEHEAD  
     my $title;      my $title;
     if (exists($env{'form.makeuser'})) {      if (exists($env{'form.makeuser'})) {
  $title='Set Privileges for New User';   $title='Set Privileges for New User';
     } else {      } else {
         $title='Modify User Privileges';          $title='Modify User Privileges';
     }      }
     $r->print(&Apache::loncommon::bodytag($title));      $r->print(&Apache::loncommon::start_page($title));
     # Check Inputs      # Check Inputs
     if (! $env{'form.ccuname'} ) {      if (! $env{'form.ccuname'} ) {
  $r->print($error.&mt('No login name specified').'.'.$end);   $r->print($error.&mt('No login name specified').'.'.$end);
Line 1251  END Line 1260  END
     } # End of foreach (keys(%env))      } # End of foreach (keys(%env))
 # Flush the course logs so reverse user roles immediately updated  # Flush the course logs so reverse user roles immediately updated
     &Apache::lonnet::flushcourselogs();      &Apache::lonnet::flushcourselogs();
     $r->print('</body></html>');      $r->print('<p><a href="/adm/createuser">Create/Modify Another User</a></p>');
       $r->print(&Apache::loncommon::end_page());
 }  }
   
 sub commit_customrole {  sub commit_customrole {
Line 1387  sub custom_role_editor { Line 1397  sub custom_role_editor {
         return;          return;
     }      }
   
     $r->print(&Apache::loncommon::bodytag(      $r->print(&Apache::loncommon::start_page('Custom Role Editor'));
                      'Create Users, Change User Privileges').'<h2>');  
     my $syspriv='';      my $syspriv='';
     my $dompriv='';      my $dompriv='';
     my $coursepriv='';      my $coursepriv='';
     my ($rdummy,$roledef)=      my ($rdummy,$roledef)=
  &Apache::lonnet::get('roles',["rolesdef_$rolename"]);   &Apache::lonnet::get('roles',["rolesdef_$rolename"]);
 # ------------------------------------------------------- Does this role exist?  # ------------------------------------------------------- Does this role exist?
       $r->print('<h2>');
     if (($rdummy ne 'con_lost') && ($roledef ne '')) {      if (($rdummy ne 'con_lost') && ($roledef ne '')) {
  $r->print(&mt('Existing Role').' "');   $r->print(&mt('Existing Role').' "');
 # ------------------------------------------------- Get current role privileges  # ------------------------------------------------- Get current role privileges
Line 1466  ENDCCF Line 1476  ENDCCF
     '</td></tr>');      '</td></tr>');
     }      }
     $r->print(      $r->print(
    '<table><input type="submit" value="'.&mt('Define Role').'" /></form></body></html>');     '<table><input type="submit" value="'.&mt('Define Role').'" /></form>'.
         &Apache::loncommon::end_page());
 }  }
   
 # ---------------------------------------------------------- Call to definerole  # ---------------------------------------------------------- Call to definerole
 sub set_custom_role {  sub set_custom_role {
     my $r=shift;      my ($r) = @_;
   
     my $rolename=$env{'form.rolename'};      my $rolename=$env{'form.rolename'};
   
Line 1482  sub set_custom_role { Line 1493  sub set_custom_role {
         return;          return;
     }      }
   
     $r->print(&Apache::loncommon::bodytag(      $r->print(&Apache::loncommon::start_page('Save Custom Role').'<h2>');
                      'Create Users, Change User Privileges').'<h2>');  
     my ($rdummy,$roledef)=      my ($rdummy,$roledef)=
  &Apache::lonnet::get('roles',["rolesdef_$rolename"]);   &Apache::lonnet::get('roles',["rolesdef_$rolename"]);
   
 # ------------------------------------------------------- Does this role exist?  # ------------------------------------------------------- Does this role exist?
     if (($rdummy ne 'con_lost') && ($roledef ne '')) {      if (($rdummy ne 'con_lost') && ($roledef ne '')) {
  $r->print(&mt('Existing Role').' "');   $r->print(&mt('Existing Role').' "');
Line 1535  sub set_custom_role { Line 1546  sub set_custom_role {
  $env{'user.name'},   $env{'user.name'},
  $rolename));   $rolename));
     }      }
     $r->print('</body></html>');      $r->print('<p><a href="/adm/createuser">Create another role, or Create/Modify a user.</a></p>');
       $r->print(&Apache::loncommon::end_page());
 }  }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
Line 1552  sub handler { Line 1564  sub handler {
         (&Apache::lonnet::allowed('cin',$env{'request.course.id'})) ||           (&Apache::lonnet::allowed('cin',$env{'request.course.id'})) || 
         (&Apache::lonnet::allowed('ccr',$env{'request.course.id'})) ||           (&Apache::lonnet::allowed('ccr',$env{'request.course.id'})) || 
         (&Apache::lonnet::allowed('cep',$env{'request.course.id'})) ||          (&Apache::lonnet::allowed('cep',$env{'request.course.id'})) ||
         (&Apache::lonnet::allowed('cca',$env{'request.role.domain'})) ||   (&authorpriv($env{'user.name'},$env{'request.role.domain'})) ||
         (&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))) {          (&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))) {
        &Apache::loncommon::content_type($r,'text/html');         &Apache::loncommon::content_type($r,'text/html');
        $r->send_http_header;         $r->send_http_header;

Removed from v.1.102  
changed lines
  Added in v.1.111


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