Diff for /loncom/interface/loncreateuser.pm between versions 1.206 and 1.212

version 1.206, 2007/12/11 02:27:24 version 1.212, 2007/12/21 05:40:43
Line 115  sub auth_abbrev { Line 115  sub auth_abbrev {
     return %abv_auth;      return %abv_auth;
 }  }
   
 # ==================================================== Figure out author access  
   
 sub authorpriv {  
     my ($auname,$audom)=@_;  
     unless ((&Apache::lonnet::allowed('cca',$audom.'/'.$auname))  
          || (&Apache::lonnet::allowed('caa',$audom.'/'.$auname))) { return ''; }  
     return 1;  
 }  
   
 # ====================================================  # ====================================================
   
 sub portfolio_quota {  sub portfolio_quota {
Line 209  END_SCRIPT Line 200  END_SCRIPT
 # =================================================================== Phase one  # =================================================================== Phase one
   
 sub print_username_entry_form {  sub print_username_entry_form {
     my ($r,$response,$srch,$forcenewuser) = @_;      my ($r,$context,$response,$srch,$forcenewuser) = @_;
     my $defdom=$env{'request.role.domain'};      my $defdom=$env{'request.role.domain'};
     my $formtoset = 'crtuser';      my $formtoset = 'crtuser';
     if (exists($env{'form.startrolename'})) {      if (exists($env{'form.startrolename'})) {
         $formtoset = 'docustom';          $formtoset = 'docustom';
         $env{'form.rolename'} = $env{'form.startrolename'};          $env{'form.rolename'} = $env{'form.startrolename'};
       } elsif ($env{'form.origform'} eq 'crtusername') {
           $formtoset =  $env{'form.origform'};
     }      }
   
     my ($jsback,$elements) = &crumb_utilities();      my ($jsback,$elements) = &crumb_utilities();
Line 252  sub print_username_entry_form { Line 245  sub print_username_entry_form {
                     'ecrp' => "Edit Custom Role Privileges",                      'ecrp' => "Edit Custom Role Privileges",
                     'nr'   => "Name of Role",                      'nr'   => "Name of Role",
                     'cre'  => "Custom Role Editor",                      'cre'  => "Custom Role Editor",
                     'mod'  => "to add/modify roles",                      'mod'  => "to edit user information or add/modify roles",
        );         );
     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');
Line 266  sub print_username_entry_form { Line 259  sub print_username_entry_form {
         $r->print("          $r->print("
 <h3>$lt{'srch'} $sellink $lt{'mod'}$helpsiur</h3>  <h3>$lt{'srch'} $sellink $lt{'mod'}$helpsiur</h3>
 $response");  $response");
         $r->print(&entry_form($defdom,$srch,$forcenewuser));          $r->print(&entry_form($defdom,$srch,$forcenewuser,$context));
     } elsif ($env{'form.action'} eq 'custom') {      } elsif ($env{'form.action'} eq 'custom') {
         if (&Apache::lonnet::allowed('mcr','/')) {          if (&Apache::lonnet::allowed('mcr','/')) {
             $r->print(<<ENDCUSTOM);              $r->print(<<ENDCUSTOM);
Line 284  ENDCUSTOM Line 277  ENDCUSTOM
 }  }
   
 sub entry_form {  sub entry_form {
     my ($dom,$srch,$forcenewuser) = @_;      my ($dom,$srch,$forcenewuser,$context) = @_;
       my %domconf = &Apache::lonnet::get_dom('configuration',['usercreation'],$dom);
       my $cancreate = &Apache::lonuserutils::can_create_user($dom,$context);
       if (!$cancreate) {
           $forcenewuser = '';
       }
     my $userpicker =       my $userpicker = 
        &Apache::loncommon::user_picker($dom,$srch,$forcenewuser,         &Apache::loncommon::user_picker($dom,$srch,$forcenewuser,
                                        'document.crtuser');                                         'document.crtuser');
     my $srchbutton = &mt('Search');      my $srchbutton = &mt('Search');
     my $output = <<"ENDDOCUMENT";      my $output = <<"ENDBLOCK";
 <form action="/adm/createuser" method="post" name="crtuser">  <form action="/adm/createuser" method="post" name="crtuser">
 <input type="hidden" name="action" value="$env{'form.action'}" />  <input type="hidden" name="action" value="$env{'form.action'}" />
 <input type="hidden" name="phase" value="get_user_info" />  <input type="hidden" name="phase" value="get_user_info" />
 $userpicker  $userpicker
 <input name="userrole" type="button" value="$srchbutton" onclick="javascript:validateEntry(document.crtuser)" />  <input name="userrole" type="button" value="$srchbutton" onclick="javascript:validateEntry(document.crtuser)" />
 </form>  </form>
   ENDBLOCK
       if ($cancreate && $env{'form.phase'} eq '') {
           my $defdom=$env{'request.role.domain'};
           my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');
           my $helpcrt=&Apache::loncommon::help_open_topic('Course_Change_Privileges');
           my %lt=&Apache::lonlocal::texthash(
                     'crnu' => 'Create a new user',
                     'usr'  => 'Username',
                     'dom'  => 'in domain',
                     'cra'  => 'Create user',
           );
           $output .= <<"ENDDOCUMENT";
   <form action="/adm/createuser" method="post" name="crtusername">
   <input type="hidden" name="action" value="$env{'form.action'}" />
   <input type="hidden" name="phase" value="createnewuser" />
   <input type="hidden" name="srchtype" value="exact" />
   <input type="hidden" name="srchby" value="username" />
   <input type="hidden" name="srchin" value="dom" />
   <input type="hidden" name="forcenewuser" value="1" />
   <input type="hidden" name="origform" value="crtusername" />
   <h3>$lt{crnu}$helpcrt</h3>
   <table>
    <tr>
     <td>$lt{'usr'}:</td>
     <td><input type="text" size="15" name="srchterm" /></td>
     <td>&nbsp;$lt{'dom'}:</td><td>$domform</td>
     <td>&nbsp;<input name="userrole" type="submit" value="$lt{'cra'}" /></td>
    </tr>
   </table>
   </form>
 ENDDOCUMENT  ENDDOCUMENT
       }
     return $output;      return $output;
 }  }
   
Line 329  END Line 358  END
   
 # =================================================================== Phase two  # =================================================================== Phase two
 sub print_user_selection_page {  sub print_user_selection_page {
     my ($r,$response,$srch,$srch_results,$operation,$srcharray) = @_;      my ($r,$response,$srch,$srch_results,$operation,$srcharray,$context) = @_;
     my @fields = ('username','domain','lastname','firstname','permanentemail');      my @fields = ('username','domain','lastname','firstname','permanentemail');
     my $sortby = $env{'form.sortby'};      my $sortby = $env{'form.sortby'};
   
Line 374  ENDSCRIPT Line 403  ENDSCRIPT
               faq=>282,bug=>'Instructor Interface',});                faq=>282,bug=>'Instructor Interface',});
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));          $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
         $r->print("<b>$lt{'usrch'}</b><br />");          $r->print("<b>$lt{'usrch'}</b><br />");
         $r->print(&entry_form($srch->{'srchdomain'},$srch));          $r->print(&entry_form($srch->{'srchdomain'},$srch,undef,$context));
         $r->print('<h3>'.$lt{'usel'}.'</h3>');          $r->print('<h3>'.$lt{'usel'}.'</h3>');
     } else {      } else {
         $r->print($jscript."<b>$lt{'stusrch'}</b><br />");          $r->print($jscript."<b>$lt{'stusrch'}</b><br />");
Line 446  sub print_user_modification_page { Line 475  sub print_user_modification_page {
     my ($r,$ccuname,$ccdomain,$srch,$response,$context) = @_;      my ($r,$ccuname,$ccdomain,$srch,$response,$context) = @_;
     if (($ccuname eq '') || ($ccdomain eq '')) {      if (($ccuname eq '') || ($ccdomain eq '')) {
         my $usermsg = &mt('No username and/or domain provided.');           my $usermsg = &mt('No username and/or domain provided.'); 
  &print_username_entry_form($r,$usermsg);   &print_username_entry_form($r,$context,$usermsg);
         return;          return;
     }      }
     my %abv_auth = &auth_abbrev();      my %abv_auth = &auth_abbrev();
Line 474  sub print_user_modification_page { Line 503  sub print_user_modification_page {
                             $domdesc,$curr_rules{$ccdomain}{'username'},                              $domdesc,$curr_rules{$ccdomain}{'username'},
                             'username');                              'username');
                     }                      }
                     &print_username_entry_form($r,$userchkmsg);                      &print_username_entry_form($r,$context,$userchkmsg);
                     return;                      return;
                 }                   } 
             }              }
Line 709  $loginscript Line 738  $loginscript
 ENDTITLE  ENDTITLE
         $r->print('<div class="LC_left_float">');          $r->print('<div class="LC_left_float">');
         my $personal_table =           my $personal_table = 
             &personal_data_display($ccuname,$ccdomain,$newuser,              &personal_data_display($ccuname,$ccdomain,$newuser,$context,
                                    $context,%inst_results);                                     $inst_results{$ccuname.':'.$ccdomain});
         $r->print($personal_table);          $r->print($personal_table);
         my ($home_server_pick,$numlib) =           my ($home_server_pick,$numlib) = 
             &Apache::loncommon::home_server_form_item($ccdomain,'hserver',              &Apache::loncommon::home_server_form_item($ccdomain,'hserver',
Line 790  $forminfo Line 819  $forminfo
 ENDCHANGEUSER  ENDCHANGEUSER
         $r->print('<div class="LC_left_float">');          $r->print('<div class="LC_left_float">');
         my ($personal_table,$showforceid) =           my ($personal_table,$showforceid) = 
             &personal_data_display($ccuname,$ccdomain,$newuser,              &personal_data_display($ccuname,$ccdomain,$newuser,$context,
                                    $context,%inst_results);                                     $inst_results{$ccuname.':'.$ccdomain});
         $r->print($personal_table);          $r->print($personal_table);
         if ($showforceid) {          if ($showforceid) {
             $r->print(&Apache::lonuserutils::forceid_change($context));              $r->print(&Apache::lonuserutils::forceid_change($context));
Line 932  ENDNOPORTPRIV Line 961  ENDNOPORTPRIV
                }                 }
                if (($role_code eq 'ca') || ($role_code eq 'aa')) {                 if (($role_code eq 'ca') || ($role_code eq 'aa')) {
                    $area=~m{/($match_domain)/($match_username)};                     $area=~m{/($match_domain)/($match_username)};
    if (&authorpriv($2,$1)) {     if (&Apache::lonuserutils::authorpriv($2,$1)) {
        $allowed=1;         $allowed=1;
                    } else {                     } else {
                        $allowed=0;                         $allowed=0;
Line 1025  ENDNOPORTPRIV Line 1054  ENDNOPORTPRIV
 #  #
 # Co-Author  # Co-Author
 #   # 
     if (&authorpriv($env{'user.name'},$env{'request.role.domain'}) &&      if (&Apache::lonuserutils::authorpriv($env{'user.name'},
                                             $env{'request.role.domain'}) &&
         ($env{'user.name'} ne $ccuname || $env{'user.domain'} ne $ccdomain)) {          ($env{'user.name'} ne $ccuname || $env{'user.domain'} ne $ccdomain)) {
         # No sense in assigning co-author role to yourself          # No sense in assigning co-author role to yourself
         $addrolesdisplay = 1;          $addrolesdisplay = 1;
Line 1076  ENDNOPORTPRIV Line 1106  ENDNOPORTPRIV
          &Apache::loncommon::end_data_table_row()."\n".           &Apache::loncommon::end_data_table_row()."\n".
          &Apache::loncommon::end_data_table());           &Apache::loncommon::end_data_table());
     } elsif ($env{'request.role'} =~ /^au\./) {      } elsif ($env{'request.role'} =~ /^au\./) {
         if (!(&authorpriv($env{'user.name'},$env{'request.role.domain'}))) {          if (!(&Apache::lonuserutils::authorpriv($env{'user.name'},
                                                   $env{'request.role.domain'}))) {
             $r->print('<span class="LC_error">'.              $r->print('<span class="LC_error">'.
                       &mt('You do not have privileges to assign co-author roles.').                        &mt('You do not have privileges to assign co-author roles.').
                       '</span>');                        '</span>');
Line 1322  sub modify_login_block { Line 1353  sub modify_login_block {
 }  }
   
 sub personal_data_display {  sub personal_data_display {
     my ($ccuname,$ccdomain,$newuser,$context,%inst_results) = @_;       my ($ccuname,$ccdomain,$newuser,$context,$inst_results) = @_;
     my ($output,$showforceid,%userenv,%domconfig);      my ($output,$showforceid,%userenv,%domconfig);
     if (!$newuser) {      if (!$newuser) {
         # Get the users information          # Get the users information
Line 1363  sub personal_data_display { Line 1394  sub personal_data_display {
         }          }
         $output .= &Apache::lonhtmlcommon::row_title($rowtitle,undef,'LC_oddrow_value')."\n";          $output .= &Apache::lonhtmlcommon::row_title($rowtitle,undef,'LC_oddrow_value')."\n";
         if ($newuser) {          if ($newuser) {
             if ($inst_results{$item} ne '') {              if (ref($inst_results) eq 'HASH') {
                 $output .= '<input type="hidden" name="c'.$item.'" value="'.$inst_results{$item}.'" />'.$inst_results{$item};                  if ($inst_results->{$item} ne '') {
                       $output .= '<input type="hidden" name="c'.$item.'" value="'.$inst_results->{$item}.'" />'.$inst_results->{$item};
                   } else {
                       $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';
                   }
             } else {              } else {
                 $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';                  $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';
             }              }
Line 1710  sub update_user_data { Line 1745  sub update_user_data {
             # Strip leading and trailing whitespace              # Strip leading and trailing whitespace
             $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g;              $env{'form.c'.$item} =~ s/(\s+$|^\s+)//g;
             if (!$canmodify) {              if (!$canmodify) {
                 if ($env{'form.c'.$item} ne $userenv{$item}) {                  if (defined($env{'form.c'.$item})) {
                     push(@mod_disallowed,$item);                      if ($env{'form.c'.$item} ne $userenv{$item}) {
                           push(@mod_disallowed,$item);
                       }
                 }                  }
                 $env{'form.c'.$item} = $userenv{$item};                  $env{'form.c'.$item} = $userenv{$item};
             }              }
Line 1943  END Line 1980  END
             foreach my $field (@mod_disallowed) {              foreach my $field (@mod_disallowed) {
                 $r->print('<li>'.$fieldtitles{$field}.'</li>'."\n");                   $r->print('<li>'.$fieldtitles{$field}.'</li>'."\n"); 
             }              }
             $r->print('</ul>'.&mt("You do not have the authority to change these fields given the user's current set of active/future [_1] roles: <span class=\"LC_cusr_emph\">[_2]</span>.",$contextname,$rolestr).'<br />'.&mt('Contact your <a href="[_1]">helpdesk</a> for more information.',"javascript:helpMenu('display')").'<br />');              $r->print('</ul>');
               if (@mod_disallowed == 1) {
                   $r->print(&mt("You do not have the authority to change this field given the user's current set of active/future [_1] roles:",$contextname));
               } else {
                   $r->print(&mt("You do not have the authority to change these fields given the user's current set of active/future [_1] roles:",$contextname));
               }
               $r->print('<span class="LC_cusr_emph">'.$rolestr.'</span><br />'.
                         &mt('Contact your <a href="[_1]">helpdesk</a> for more information.',"javascript:helpMenu('display')").'<br />');
         }          }
         $r->print($no_forceid_alert.          $r->print($no_forceid_alert.
                   &Apache::lonuserutils::print_namespacing_alerts($env{'form.ccdomain'},\%alerts, \%curr_rules));                    &Apache::lonuserutils::print_namespacing_alerts($env{'form.ccdomain'},\%alerts, \%curr_rules));
Line 2198  sub update_result_form { Line 2242  sub update_result_form {
     foreach my $item ('srchby','srchin','srchtype','srchterm','srchdomain','ccuname','ccdomain') {      foreach my $item ('srchby','srchin','srchtype','srchterm','srchdomain','ccuname','ccdomain') {
         $outcome .= '<input type="hidden" name="'.$item.'" value="'.$env{'form.'.$item}.'" />'."\n";          $outcome .= '<input type="hidden" name="'.$item.'" value="'.$env{'form.'.$item}.'" />'."\n";
     }      }
       if ($env{'form.origname'} ne '') {
           $outcome .= '<input type="hidden" name="origname" value="'.$env{'form.origname'}.'" />'."\n";
       }
     foreach my $item ('sortby','seluname','seludom') {      foreach my $item ('sortby','seluname','seludom') {
         if (exists($env{'form.'.$item})) {          if (exists($env{'form.'.$item})) {
             $outcome .= '<input type="hidden" name="'.$item.'" value="'.$env{'form.'.$item}.'" />'."\n";              $outcome .= '<input type="hidden" name="'.$item.'" value="'.$env{'form.'.$item}.'" />'."\n";
Line 2568  sub handler { Line 2615  sub handler {
             ({href=>"/adm/createuser",              ({href=>"/adm/createuser",
               text=>"User Management"});                text=>"User Management"});
     }      }
     my ($permission,$allowed) = &get_permission($context);      my ($permission,$allowed) = 
           &Apache::lonuserutils::get_permission($context);
     if (!$allowed) {      if (!$allowed) {
         $env{'user.error.msg'}=          $env{'user.error.msg'}=
             "/adm/createuser:cst:0:0:Cannot create/modify user data ".              "/adm/createuser:cst:0:0:Cannot create/modify user data ".
Line 2583  sub handler { Line 2631  sub handler {
     if (! exists($env{'form.action'})) {      if (! exists($env{'form.action'})) {
         $r->print(&header());          $r->print(&header());
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));          $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
         $r->print(&print_main_menu($permission));          $r->print(&print_main_menu($permission,$context));
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {      } elsif ($env{'form.action'} eq 'upload' && $permission->{'cusr'}) {
         $r->print(&header());          $r->print(&header());
Line 2607  sub handler { Line 2655  sub handler {
             &Apache::lonuserutils::print_first_users_upload_form($r,$context);              &Apache::lonuserutils::print_first_users_upload_form($r,$context);
         }          }
         $r->print('</form>'.&Apache::loncommon::end_page());          $r->print('</form>'.&Apache::loncommon::end_page());
     } elsif ($env{'form.action'} eq 'expire' && $permission->{'cusr'}) {  
         $r->print(&header());  
         &Apache::lonhtmlcommon::add_breadcrumb  
             ({href=>'/adm/createuser?action=expire',  
               text=>"Expire User Roles"});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('Expire User Roles',  
                                                       'User_Management_Drops'));  
         if (! exists($env{'form.state'})) {  
             &Apache::lonuserutils::print_expire_menu($r,$context);  
         } elsif ($env{'form.state'} eq 'done') {  
             &Apache::lonuserutils::expire_user_list($r,$context);  
         } else {  
             &Apache::lonuserutils::print_expire_menu($r,$context);  
         }  
         $r->print(&Apache::loncommon::end_page());  
     } elsif ($env{'form.action'} eq 'singleuser' && $permission->{'cusr'}) {      } elsif ($env{'form.action'} eq 'singleuser' && $permission->{'cusr'}) {
         my $phase = $env{'form.phase'};          my $phase = $env{'form.phase'};
         my @search = ('srchterm','srchby','srchin','srchtype','srchdomain');          my @search = ('srchterm','srchby','srchin','srchtype','srchdomain');
Line 2631  sub handler { Line 2664  sub handler {
     $srch->{$item} = $env{'form.'.$item};      $srch->{$item} = $env{'form.'.$item};
  }   }
   
         if (($phase eq 'get_user_info') || ($phase eq 'userpicked')) {          if (($phase eq 'get_user_info') || ($phase eq 'userpicked') ||
             if ($env{'form.phase'} eq 'get_user_info') {              ($phase eq 'createnewuser')) {
               if ($env{'form.phase'} eq 'createnewuser') {
                   my $response;
                   if ($env{'form.srchterm'} !~ /^$match_username$/) {
                       my $response = &mt('You must specify a valid username. Only the following are allowed: letters numbers - . @');
                       &print_username_entry_form($r,$context,$response,$srch);
                   } else {
                       my $ccuname =&LONCAPA::clean_username($srch->{'srchterm'});
                       my $ccdomain=&LONCAPA::clean_domain($srch->{'srchdomain'});
                       &print_user_modification_page($r,$ccuname,$ccdomain,
                                                     $srch,$response,$context);
                   }
               } elsif ($env{'form.phase'} eq 'get_user_info') {
                 my ($currstate,$response,$forcenewuser,$results) =                   my ($currstate,$response,$forcenewuser,$results) = 
                     &user_search_result($srch);                      &user_search_result($srch);
                 if ($env{'form.currstate'} eq 'modify') {                  if ($env{'form.currstate'} eq 'modify') {
Line 2640  sub handler { Line 2685  sub handler {
                 }                  }
                 if ($currstate eq 'select') {                  if ($currstate eq 'select') {
                     &print_user_selection_page($r,$response,$srch,$results,                      &print_user_selection_page($r,$response,$srch,$results,
                                                'createuser',\@search);                                                 'createuser',\@search,$context);
                 } elsif ($currstate eq 'modify') {                  } elsif ($currstate eq 'modify') {
                     my ($ccuname,$ccdomain);                      my ($ccuname,$ccdomain);
                     if (($srch->{'srchby'} eq 'uname') &&                       if (($srch->{'srchby'} eq 'uname') && 
Line 2661  sub handler { Line 2706  sub handler {
                 } elsif ($currstate eq 'query') {                  } elsif ($currstate eq 'query') {
                     &print_user_query_page($r,'createuser');                      &print_user_query_page($r,'createuser');
                 } else {                  } else {
                     &print_username_entry_form($r,$response,$srch,                      &print_username_entry_form($r,$context,$response,$srch,
                                                $forcenewuser);                                                 $forcenewuser);
                 }                  }
             } elsif ($env{'form.phase'} eq 'userpicked') {              } elsif ($env{'form.phase'} eq 'userpicked') {
Line 2673  sub handler { Line 2718  sub handler {
         } elsif ($env{'form.phase'} eq 'update_user_data') {          } elsif ($env{'form.phase'} eq 'update_user_data') {
             &update_user_data($r,$context);              &update_user_data($r,$context);
         } else {          } else {
             &print_username_entry_form($r,undef,$srch);              &print_username_entry_form($r,$context,undef,$srch);
         }          }
     } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) {      } elsif ($env{'form.action'} eq 'custom' && $permission->{'custom'}) {
         if ($env{'form.phase'} eq 'set_custom_roles') {          if ($env{'form.phase'} eq 'set_custom_roles') {
Line 2681  sub handler { Line 2726  sub handler {
         } else {          } else {
             &custom_role_editor($r);              &custom_role_editor($r);
         }          }
     } elsif ($env{'form.action'} eq 'listusers' && $permission->{'view'}) {      } elsif (($env{'form.action'} eq 'listusers') && 
                ($permission->{'view'} || $permission->{'cusr'})) {
         if ($env{'form.phase'} eq 'bulkchange') {          if ($env{'form.phase'} eq 'bulkchange') {
             &Apache::lonhtmlcommon::add_breadcrumb              &Apache::lonhtmlcommon::add_breadcrumb
                 ({href=>'backPage(document.studentform)',                  ({href=>'backPage(document.studentform)',
Line 2722  sub handler { Line 2768  sub handler {
                          $formname,$totcodes,$codetitles,$idlist,$idlist_titles);                           $formname,$totcodes,$codetitles,$idlist,$idlist_titles);
             $r->print(&Apache::loncommon::end_page());              $r->print(&Apache::loncommon::end_page());
         }          }
     } elsif ($env{'form.action'} eq 'expire' && $permission->{'cusr'}) {  
         $r->print(&header());  
         &Apache::lonhtmlcommon::add_breadcrumb  
             ({href=>'/adm/createuser?action=drop',  
               text=>"Expire Users"});  
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('Expire User Roles',  
                                                       'User_Management_Drops'));  
         if (! exists($env{'form.state'})) {  
             &Apache::lonuserutils::print_expire_menu($r,$context);  
         } elsif ($env{'form.state'} eq 'done') {  
             &Apache::lonuserutiles::expire_user_list($r,$context);  
         } else {  
             &print_expire_menu($r,$context);  
         }  
         $r->print(&Apache::loncommon::end_page());  
     } elsif ($env{'form.action'} eq 'dateselect') {      } elsif ($env{'form.action'} eq 'dateselect') {
         if ($permission->{'cusr'}) {          if ($permission->{'cusr'}) {
             $r->print(&header(undef,undef,{'no_nav_bar' => 1}).              $r->print(&header(undef,undef,{'no_nav_bar' => 1}).
Line 2750  sub handler { Line 2781  sub handler {
     } else {      } else {
         $r->print(&header());          $r->print(&header());
         $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));          $r->print(&Apache::lonhtmlcommon::breadcrumbs('User Management'));
         $r->print(&print_main_menu($permission));          $r->print(&print_main_menu($permission,$context));
         $r->print(&Apache::loncommon::end_page());          $r->print(&Apache::loncommon::end_page());
     }      }
     return OK;      return OK;
Line 2790  END Line 2821  END
 ###############################################################  ###############################################################
 #  Menu Phase One  #  Menu Phase One
 sub print_main_menu {  sub print_main_menu {
     my ($permission) = @_;      my ($permission,$context) = @_;
       my %links = (
                          domain => {
                                      upload => 'Upload a File of Users',
                                      singleuser => 'Add/Manage a Single User',
                                      listusers => 'Manage Multiple Users',
                                    },
                          author => {
                                      upload => 'Upload a File of Co-authors',
                                      singleuser => 'Add/Manage a Single Co-author',
                                      listusers => 'Display Co-authors and Manage Multiple Users',
                                    },
                          course => {
                                      upload => 'Upload a File of Course Users',
                                      singleuser => 'Add/Manage a Single Course User',
                                      listusers => 'Display Class Lists and Manage Multiple Users',
                                    },
                        );
     my @menu =      my @menu =
         (          (
           { text => 'Upload a File of Users to Modify/Create Users and/or Add roles',            { text => $links{$context}{'upload'},
             help => 'User_Management_Upload',              help => 'User_Management_Upload',
             action => 'upload',              action => 'upload',
             permission => $permission->{'cusr'},              permission => $permission->{'cusr'},
             },              },
           { text => 'Create User/Set User Roles for a single user',            { text => $links{$context}{'singleuser'}, 
             help => 'User_Management_Single_User',              help => 'User_Management_Single_User',
             action => 'singleuser',              action => 'singleuser',
             permission => $permission->{'cusr'},              permission => $permission->{'cusr'},
             },              },
           { text => 'Display Lists of Users',            { text => $links{$context}{'listusers'},
             help => 'User_Management_List',              help => 'User_Management_List',
             action => 'listusers',              action => 'listusers',
             permission => $permission->{'view'},              permission => ($permission->{'view'} || $permission->{'cusr'}),
             },  
 #          { text => 'Expire User Roles',  
 #            help => 'User_Management_Drops',  
 #            action => 'expire',  
 #            permission => $permission->{'cusr'},  
 #            },  
           { text => 'Edit Custom Roles',  
             help => 'Custom_Role_Edit',  
             action => 'custom',  
             permission => $permission->{'custom'},  
           },            },
         );          );
       if ($context eq 'domain' || $context eq 'course') {
           my $customlink =  { text => 'Edit Custom Roles',
                               help => 'Custom_Role_Edit',
                               action => 'custom',
                               permission => $permission->{'custom'},
                             };
           push(@menu,$customlink);
       }
       if ($context eq 'course') {
           my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; 
           my @courselinks = 
               (
                  { text => 'Automated Enrollment Manager',
                    permission => (&Apache::lonnet::auto_run($cnum,$cdom)
                                   && $permission->{'cusr'}),
                    url  => '/adm/populate',
                    },
                  { text => 'Manage Course Groups',
                    help => 'Course_Manage_Group',
                    permission => $permission->{'grp_manage'},
                    url => '/adm/coursegroups?refpage=cusr',
                  },
               );
           push(@menu,@courselinks);
       }
     my $menu_html = '';      my $menu_html = '';
     foreach my $menu_item (@menu) {      foreach my $menu_item (@menu) {
         next if (! $menu_item->{'permission'});          next if (! $menu_item->{'permission'});
Line 2840  sub print_main_menu { Line 2904  sub print_main_menu {
     return $menu_html;      return $menu_html;
 }  }
   
 sub get_permission {  
     my ($context) = @_;  
     my %permission;  
     if ($context eq 'course') {  
         if ((&Apache::lonnet::allowed('cta',$env{'request.course.id'})) ||  
             (&Apache::lonnet::allowed('cin',$env{'request.course.id'})) ||  
             (&Apache::lonnet::allowed('ccr',$env{'request.course.id'})) ||  
             (&Apache::lonnet::allowed('cep',$env{'request.course.id'})) ||  
             (&Apache::lonnet::allowed('cst',$env{'request.course.id'}))) {  
             $permission{'cusr'} = 1;  
             $permission{'view'} =  
                  &Apache::lonnet::allowed('vcl',$env{'request.course.id'});  
   
         }  
         if (&Apache::lonnet::allowed('ccr',$env{'request.course.id'})) {  
             $permission{'custom'} = 1;  
         }  
         if (&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) {  
             $permission{'view'} = 1;  
             if (!$permission{'view'}) {  
                 my $scope = $env{'request.course.id'}.'/'.$env{'request.course.sec'};  
                 $permission{'view'} =  &Apache::lonnet::allowed('vcl',$scope);  
                 if ($permission{'view'}) {  
                     $permission{'view_section'} = $env{'request.course.sec'};  
                 }  
             }  
         }  
     } elsif ($context eq 'author') {  
         $permission{'cusr'} = &authorpriv($env{'user.name'},$env{'request.role.domain'});  
         $permission{'view'} = $permission{'cusr'};  
     } else {  
         if ((&Apache::lonnet::allowed('cad',$env{'request.role.domain'})) ||  
             (&Apache::lonnet::allowed('cli',$env{'request.role.domain'})) ||  
             (&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||  
             (&Apache::lonnet::allowed('csc',$env{'request.role.domain'})) ||  
             (&Apache::lonnet::allowed('cdg',$env{'request.role.domain'})) ||   
             (&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))) {  
             $permission{'cusr'} = 1;  
         }  
         if (&Apache::lonnet::allowed('ccr',$env{'request.role.domain'})) {  
             $permission{'custom'} = 1;  
         }  
         $permission{'view'} = $permission{'cusr'};  
     }  
     my $allowed = 0;  
     foreach my $perm (values(%permission)) {  
         if ($perm) { $allowed=1; last; }  
     }  
     return (\%permission,$allowed);  
 }  
   
 sub restore_prev_selections {  sub restore_prev_selections {
     my %saveable_parameters = ('srchby'   => 'scalar',      my %saveable_parameters = ('srchby'   => 'scalar',
        'srchin'   => 'scalar',         'srchin'   => 'scalar',
Line 3293  sub crumb_utilities { Line 3306  sub crumb_utilities {
            srchtype => 'selectbox',             srchtype => 'selectbox',
            srchdomain => 'selectbox',             srchdomain => 'selectbox',
        },         },
          crtusername => {
              srchterm => 'text',
              srchdomain => 'selectbox',
          },
        docustom => {         docustom => {
            rolename => 'selectbox',             rolename => 'selectbox',
            newrolename => 'textbox',             newrolename => 'textbox',
Line 3308  sub crumb_utilities { Line 3325  sub crumb_utilities {
   
     my $jsback .= qq|      my $jsback .= qq|
 function backPage(formname,prevphase,prevstate) {  function backPage(formname,prevphase,prevstate) {
     formname.phase.value = prevphase;      if (typeof prevphase == 'undefined') {
     formname.currstate.value = prevstate;          formname.phase.value = '';
       }
       else {  
           formname.phase.value = prevphase;
       }
       if (typeof prevstate == 'undefined') {
           formname.currstate.value = '';
       }
       else {
           formname.currstate.value = prevstate;
       }
     formname.submit();      formname.submit();
 }  }
 |;  |;

Removed from v.1.206  
changed lines
  Added in v.1.212


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