Diff for /loncom/interface/loncreateuser.pm between versions 1.406.2.10 and 1.428

version 1.406.2.10, 2017/01/22 16:00:17 version 1.428, 2017/01/02 19:44:06
Line 252  sub build_tools_display { Line 252  sub build_tools_display {
                    'unofficial' => 'Can request creation of unofficial courses',                     'unofficial' => 'Can request creation of unofficial courses',
                    'community'  => 'Can request creation of communities',                     'community'  => 'Can request creation of communities',
                    'textbook'   => 'Can request creation of textbook courses',                     'textbook'   => 'Can request creation of textbook courses',
                      'placement'  => 'Can request creation of placement tests',
                    'requestauthor'  => 'Can request author space',                     'requestauthor'  => 'Can request author space',
     );      );
     if ($context eq 'requestcourses') {      if ($context eq 'requestcourses') {
         %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,          %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
                       'requestcourses.official','requestcourses.unofficial',                        'requestcourses.official','requestcourses.unofficial',
                       'requestcourses.community','requestcourses.textbook');                        'requestcourses.community','requestcourses.textbook',
         @usertools = ('official','unofficial','community','textbook');                        'requestcourses.placement');
           @usertools = ('official','unofficial','community','textbook','placement');
         @options =('norequest','approval','autolimit','validate');          @options =('norequest','approval','autolimit','validate');
         %validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);          %validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);
         %reqtitles = &courserequest_titles();          %reqtitles = &courserequest_titles();
Line 333  sub build_tools_display { Line 335  sub build_tools_display {
                    '   <td'.$colspan.'>'.$lt{$item}.'</td>'."\n".                     '   <td'.$colspan.'>'.$lt{$item}.'</td>'."\n".
                    '  </tr>'."\n".                     '  </tr>'."\n".
                    &Apache::loncommon::start_data_table_row()."\n";                     &Apache::loncommon::start_data_table_row()."\n";
     
         if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {          if (($context eq 'requestcourses') || ($context eq 'requestauthor')) {
             my ($curroption,$currlimit);              my ($curroption,$currlimit);
             my $envkey = $context.'.'.$item;              my $envkey = $context.'.'.$item;
Line 451  sub coursereq_externaluser { Line 454  sub coursereq_externaluser {
                    'unofficial' => 'Can request creation of unofficial courses',                     'unofficial' => 'Can request creation of unofficial courses',
                    'community'  => 'Can request creation of communities',                     'community'  => 'Can request creation of communities',
                    'textbook'   => 'Can request creation of textbook courses',                     'textbook'   => 'Can request creation of textbook courses',
                      'placement'  => 'Can request creation of placement tests',
     );      );
   
     %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,      %userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
                       'reqcrsotherdom.official','reqcrsotherdom.unofficial',                        'reqcrsotherdom.official','reqcrsotherdom.unofficial',
                       'reqcrsotherdom.community','reqcrsotherdom.textbook');                        'reqcrsotherdom.community','reqcrsotherdom.textbook',
     @usertools = ('official','unofficial','community','textbook');                        'reqcrsotherdom.placement');
       @usertools = ('official','unofficial','community','textbook','placement');
     @options = ('approval','validate','autolimit');      @options = ('approval','validate','autolimit');
     %validations = &Apache::lonnet::auto_courserequest_checks($cdom);      %validations = &Apache::lonnet::auto_courserequest_checks($cdom);
     my $optregex = join('|',@options);      my $optregex = join('|',@options);
Line 537  sub courserequest_titles { Line 542  sub courserequest_titles {
                                    unofficial => 'Unofficial',                                     unofficial => 'Unofficial',
                                    community  => 'Communities',                                     community  => 'Communities',
                                    textbook   => 'Textbook',                                     textbook   => 'Textbook',
                                      placement  => 'Placement Tests',
                                    norequest  => 'Not allowed',                                     norequest  => 'Not allowed',
                                    approval   => 'Approval by Dom. Coord.',                                     approval   => 'Approval by Dom. Coord.',
                                    validate   => 'With validation',                                     validate   => 'With validation',
Line 854  ENDBLOCK Line 860  ENDBLOCK
         $output = '<p>'.$userpicker.'</p>';          $output = '<p>'.$userpicker.'</p>';
     }      }
     if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs') &&      if (($env{'form.phase'} eq '') && ($env{'form.action'} ne 'accesslogs') &&
         (!(($env{'form.action'} eq 'singleuser') && ($context eq 'domain') &&          (!(($env{'form.action'} eq 'singleuser') && ($context eq 'domain') && 
         (!&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))))) {          (!&Apache::lonnet::allowed('mau',$env{'request.role.domain'}))))) {
         my $defdom=$env{'request.role.domain'};          my $defdom=$env{'request.role.domain'};
         my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');          my $domform = &Apache::loncommon::select_dom_form($defdom,'srchdomain');
Line 1429  ENDAUTH Line 1435  ENDAUTH
         $r->print('<div class="LC_left_float">');          $r->print('<div class="LC_left_float">');
         $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,          $r->print(&personal_data_display($ccuname,$ccdomain,$newuser,$context,
                                          $inst_results{$ccuname.':'.$ccdomain}));                                           $inst_results{$ccuname.':'.$ccdomain}));
         if ((&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) ||          if ((&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) || 
             (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) {              (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) {
             $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses/Communities in this Domain?').'</h3>'.              $r->print('<br /><h3>'.&mt('User Can Request Creation of Courses/Communities in this Domain?').'</h3>'.
                       &Apache::loncommon::start_data_table());                        &Apache::loncommon::start_data_table());
Line 1449  ENDAUTH Line 1455  ENDAUTH
         if ((!$isauthor) &&           if ((!$isauthor) && 
             ((&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||              ((&Apache::lonnet::allowed('cau',$env{'request.role.domain'})) ||
              (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) &&               (&Apache::lonnet::allowed('udp',$env{'request.role.domain'}))) &&
              ($env{'request.role.domain'} eq $ccdomain)) {              ($env{'request.role.domain'} eq $ccdomain)) {
             $user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);              $user_text{'requestauthor'} = &domainrole_req($ccuname,$ccdomain);
         }          }
         $user_text{'auth'} =  &user_authentication($ccuname,$ccdomain,$formname);          $user_text{'auth'} =  &user_authentication($ccuname,$ccdomain,$formname);
Line 1520  ENDNOTOOLSPRIV Line 1526  ENDNOTOOLSPRIV
         } elsif (($context eq 'course') && ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||          } elsif (($context eq 'course') && ((&Apache::lonnet::allowed('vcl',$env{'request.course.id'})) ||
                  ($env{'request.course.sec'} &&                   ($env{'request.course.sec'} &&
                   &Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'})))) {                    &Apache::lonnet::allowed('vcl',$env{'request.course.id'}.'/'.$env{'request.course.sec'})))) {
             $statuses = ['active'];              $statuses = ['active'];   
         }          }
         if ($env{'form.action'} ne 'singlestudent') {          if ($env{'form.action'} ne 'singlestudent') {
             &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,              &display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context,
Line 1754  sub display_existing_roles { Line 1760  sub display_existing_roles {
         if ($active) {          if ($active) {
             next unless($showall || $showactive);              next unless($showall || $showactive);
         } else {          } else {
             next unless($showall || $showexpired);              next unless($showall || $showexpired); 
         }          }
 # Is this a custom role? Get role owner and title.  # Is this a custom role? Get role owner and title.
         my ($croleudom,$croleuname,$croletitle)=          my ($croleudom,$croleuname,$croletitle)=
Line 1899  sub display_existing_roles { Line 1905  sub display_existing_roles {
             } else {              } else {
                 $row.='&nbsp;';                  $row.='&nbsp;';
             }              }
             $row.= '</td>';              $row.= '</td>'; 
         }          }
         my $plaintext='';          my $plaintext='';
         if (!$croletitle) {          if (!$croletitle) {
Line 2168  $lt{'uuas'} ($currentauth). $lt{'adcs'}. Line 2174  $lt{'uuas'} ($currentauth). $lt{'adcs'}.
 ENDBADAUTH  ENDBADAUTH
         }          }
     } else { # Authentication type is valid      } else { # Authentication type is valid
           
         &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');          &initialize_authen_forms($ccdomain,$formname,$currentauth,'modifyuser');
         my ($authformcurrent,$can_modify,@authform_others) =          my ($authformcurrent,$can_modify,@authform_others) =
             &modify_login_block($ccdomain,$currentauth);              &modify_login_block($ccdomain,$currentauth);
Line 2726  sub update_user_data { Line 2733  sub update_user_data {
     my (%alerts,%rulematch,%inst_results,%curr_rules);      my (%alerts,%rulematch,%inst_results,%curr_rules);
     my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');      my @userinfo = ('firstname','middlename','lastname','generation','permanentemail','id');
     my @usertools = ('aboutme','blog','webdav','portfolio');      my @usertools = ('aboutme','blog','webdav','portfolio');
     my @requestcourses = ('official','unofficial','community','textbook');      my @requestcourses = ('official','unofficial','community','textbook','placement');
     my @requestauthor = ('requestauthor');      my @requestauthor = ('requestauthor');
     my ($othertitle,$usertypes,$types) =       my ($othertitle,$usertypes,$types) = 
         &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});          &Apache::loncommon::sorted_inst_types($env{'form.ccdomain'});
Line 2899  sub update_user_data { Line 2906  sub update_user_data {
              'requestcourses.community','requestcourses.textbook',               'requestcourses.community','requestcourses.textbook',
              'reqcrsotherdom.official','reqcrsotherdom.unofficial',               'reqcrsotherdom.official','reqcrsotherdom.unofficial',
              'reqcrsotherdom.community','reqcrsotherdom.textbook',               'reqcrsotherdom.community','reqcrsotherdom.textbook',
              'requestauthor'],               'reqcrsotherdom.placement','requestauthor'],
               $env{'form.ccdomain'},$env{'form.ccuname'});                $env{'form.ccdomain'},$env{'form.ccuname'});
         my ($tmp) = keys(%userenv);          my ($tmp) = keys(%userenv);
         if ($tmp =~ /^(con_lost|error)/i) {           if ($tmp =~ /^(con_lost|error)/i) { 
Line 3190  sub update_user_data { Line 3197  sub update_user_data {
                         ($env{'user.domain'} eq $env{'form.ccdomain'})) {                          ($env{'user.domain'} eq $env{'form.ccdomain'})) {
                         my %newenvhash;                          my %newenvhash;
                         foreach my $key (keys(%changed)) {                          foreach my $key (keys(%changed)) {
                             if (($key eq 'official') || ($key eq 'unofficial')                              if (($key eq 'official') || ($key eq 'unofficial') ||
                                 || ($key eq 'community') || ($key eq 'textbook')) {                                  ($key eq 'community') || ($key eq 'textbook') ||
                                   ($key eq 'placement')) {
                                 $newenvhash{'environment.requestcourses.'.$key} =                                  $newenvhash{'environment.requestcourses.'.$key} =
                                     $changeHash{'requestcourses.'.$key};                                      $changeHash{'requestcourses.'.$key};
                                 if ($changeHash{'requestcourses.'.$key}) {                                  if ($changeHash{'requestcourses.'.$key}) {
Line 3257  sub update_user_data { Line 3265  sub update_user_data {
                                   \%newsettingstext);                                    \%newsettingstext);
                 if ($env{'form.cid'} ne $userenv{'id'}) {                  if ($env{'form.cid'} ne $userenv{'id'}) {
                     &Apache::lonnet::idput($env{'form.ccdomain'},                      &Apache::lonnet::idput($env{'form.ccdomain'},
                          {$env{'form.ccuname'} => $env{'form.cid'}});                           {$env{'form.ccuname'} => $env{'form.cid'}},$uhome,'ids');
                     if (($recurseid) &&                      if (($recurseid) &&
                         (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) {                          (&Apache::lonnet::allowed('mau',$env{'form.ccdomain'}))) {
                         my $idresult =                           my $idresult = 
Line 3400  sub display_userinfo { Line 3408  sub display_userinfo {
          'unofficial'     => 'Can Request Unofficial Courses',           'unofficial'     => 'Can Request Unofficial Courses',
          'community'      => 'Can Request Communities',           'community'      => 'Can Request Communities',
          'textbook'       => 'Can Request Textbook Courses',           'textbook'       => 'Can Request Textbook Courses',
            'placement'      => 'Can Request Placement Tests',
          'requestauthor'  => 'Can Request Author Role',           'requestauthor'  => 'Can Request Author Role',
          'inststatus'     => "Affiliation",           'inststatus'     => "Affiliation",
          'prvs'           => 'Previous Value:',           'prvs'           => 'Previous Value:',
Line 4375  sub custom_role_editor { Line 4384  sub custom_role_editor {
               );                );
     my $args = { bread_crumbs          => $brcrum,      my $args = { bread_crumbs          => $brcrum,
                  bread_crumbs_component => 'User Management'};                   bread_crumbs_component => 'User Management'};
    
     $r->print(&Apache::loncommon::start_page('Custom Role Editor',      $r->print(&Apache::loncommon::start_page('Custom Role Editor',
                                              $head_script,$args).                                               $head_script,$args).
               $body_top);                $body_top);
Line 5016  sub handler { Line 5025  sub handler {
             } elsif ($env{'form.state'} eq 'done') {              } elsif ($env{'form.state'} eq 'done') {
                 $r->print('<h3>'.&mt('Enrollment request processing').'</h3>'."\n");                  $r->print('<h3>'.&mt('Enrollment request processing').'</h3>'."\n");
                 $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,                  $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
                               $cdom,$cnum,$coursedesc));                                 $cdom,$cnum,$coursedesc));
             }              }
         } else {          } else {
             $r->print(&header(undef,{'no_nav_bar' => 1}).              $r->print(&header(undef,{'no_nav_bar' => 1}).
                      '<span class="LC_error">'.&mt('You do not have permission to manage self-enrollment').'</span>');                       '<span class="LC_error">'.&mt('You do not have permission to manage self-enrollment').'</span>');
         }          }
   
     } elsif ($env{'form.action'} eq 'changelogs') {      } elsif ($env{'form.action'} eq 'changelogs') {
         if ($permission->{cusr} || $permission->{view}) {          if ($permission->{cusr} || $permission->{view}) {
             &print_userchangelogs_display($r,$context,$permission,$brcrum);              &print_userchangelogs_display($r,$context,$permission,$brcrum);
Line 5037  sub handler { Line 5045  sub handler {
                     &update_helpdeskaccess($r,$permission,$brcrum);                      &update_helpdeskaccess($r,$permission,$brcrum);
                 } else {                  } else {
                     &print_helpdeskaccess_display($r,$permission,$brcrum);                      &print_helpdeskaccess_display($r,$permission,$brcrum);
                 }                  }    
             } else {              } else {
                 &print_helpdeskaccess_display($r,$permission,$brcrum);                  &print_helpdeskaccess_display($r,$permission,$brcrum);
             }              }
Line 5298  sub print_main_menu { Line 5306  sub print_main_menu {
                 );                  );
   if ($linkcontext eq 'domain') {    if ($linkcontext eq 'domain') {
       unless ($permission->{'cusr'}) {        unless ($permission->{'cusr'}) {
           $links{'domain'}{'singleuser'} = 'View a User';            $links{'domain'}{'singleuser'} = 'View a User'; 
           $linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';            $linktitles{'domain'}{'singleuser'} = 'View information about a user in the domain';
             
       }        }
   } elsif ($linkcontext eq 'course') {    } elsif ($linkcontext eq 'course') {
       unless ($permission->{'cusr'}) {        unless ($permission->{'cusr'}) {
Line 5370  sub print_main_menu { Line 5378  sub print_main_menu {
                   
         push(@{ $menu[2]->{items} }, #Category: Administration          push(@{ $menu[2]->{items} }, #Category: Administration
             {              {
              linktext => 'Helpdesk Access',  
              icon => 'helpdesk-access.png',  
              #help => 'Course_Helpdesk_Access',  
              url => '/adm/createuser?action=helpdesk',  
              permission => ($permission->{'owner'} || $permission->{'co-owner'}),  
              linktitle => 'Helpdesk access options',  
             },  
             {  
              linktext => 'Custom Roles',               linktext => 'Custom Roles',
              icon => 'emblem-photos.png',               icon => 'emblem-photos.png',
              #help => 'Course_Editing_Custom_Roles',               #help => 'Course_Editing_Custom_Roles',
Line 5426  sub print_main_menu { Line 5426  sub print_main_menu {
                                           groups => 'Community Groups',                                            groups => 'Community Groups',
                                         },                                          },
                        );                         );
           $linktext{'Placement'} = $linktext{'Course'};
   
         my %linktitle = (          my %linktitle = (
             'Course' => {              'Course' => {
Line 5440  sub print_main_menu { Line 5441  sub print_main_menu {
                            },                             },
         );          );
   
           $linktitle{'Placement'} = $linktitle{'Course'};
   
         push(@{ $menu[0]->{items} }, #Category: Single Users          push(@{ $menu[0]->{items} }, #Category: Single Users
             {                 {   
              linktext => $linktext{$crstype}{'single'},               linktext => $linktext{$crstype}{'single'},
Line 5462  sub print_main_menu { Line 5465  sub print_main_menu {
             },              },
         );          );
         push(@{ $menu[2]->{items} }, #Category: Administration          push(@{ $menu[2]->{items} }, #Category: Administration
             {                  {
                linktext => 'Helpdesk Access',
                icon => 'helpdesk-access.png',
                #help => 'Course_Helpdesk_Access',
                url => '/adm/createuser?action=helpdesk',
                permission => ($permission->{'owner'} || $permission->{'co-owner'}),
                linktitle => 'Helpdesk access options',
               },
               {
              linktext => 'Custom Roles',               linktext => 'Custom Roles',
              icon => 'emblem-photos.png',               icon => 'emblem-photos.png',
              #help => 'Course_Editing_Custom_Roles',               #help => 'Course_Editing_Custom_Roles',
Line 6051  ENDSCRIPT Line 6062  ENDSCRIPT
             } elsif ($item eq 'approval') {              } elsif ($item eq 'approval') {
                 my ($currnotified,$currapproval,%appchecked);                  my ($currnotified,$currapproval,%appchecked);
                 my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs();                  my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs();
                 if (ref($currsettings) eq 'HASH') {                  if (ref($currsettings) eq 'HASH') { 
                     $currnotified = $currsettings->{'selfenroll_notifylist'};                      $currnotified = $currsettings->{'selfenroll_notifylist'};
                     $currapproval = $currsettings->{'selfenroll_approval'};                      $currapproval = $currsettings->{'selfenroll_approval'};
                 }                  }
Line 6179  ENDSCRIPT Line 6190  ENDSCRIPT
                    .&mt('Save').'" onclick="validate_types(this.form);" />';                     .&mt('Save').'" onclick="validate_types(this.form);" />';
     }      }
     $output .= '<input type="hidden" name="action" value="selfenroll" />'      $output .= '<input type="hidden" name="action" value="selfenroll" />'
                .'<input type="hidden" name="state" value="done" />'."\n"                .'<input type="hidden" name="state" value="done" />'."\n"
                .$additional.'</form>';                .$additional.'</form>';
     $r->print($output);      $r->print($output);
     return;      return;
 }  }
Line 6585  ENDSCRIPT Line 6596  ENDSCRIPT
             }              }
         }          }
         if (($context eq 'course') && ($viewablesec ne '')) {          if (($context eq 'course') && ($viewablesec ne '')) {
             next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec);              next if ($roleslog{$id}{'logentry'}{'section'} ne $viewablesec); 
         }          }
         $count ++;          $count ++;
         next if ($count < $minshown);          next if ($count < $minshown);
Line 7190  sub print_helpdeskaccess_display { Line 7201  sub print_helpdeskaccess_display {
     my ($numstatustypes,@jsarray);      my ($numstatustypes,@jsarray);
     my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($cdom);      my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($cdom);
     if (ref($types) eq 'ARRAY') {      if (ref($types) eq 'ARRAY') {
         if (@{$types} > 0) {          if (@{$types} > 0) {                
             $numstatustypes = scalar(@{$types});              $numstatustypes = scalar(@{$types});
             push(@accesstypes,'status');              push(@accesstypes,'status');
             @jsarray = ('bystatus');              @jsarray = ('bystatus');
Line 7240  sub print_helpdeskaccess_display { Line 7251  sub print_helpdeskaccess_display {
                 $elements{$role.'_staff_inc'} = 'checkbox';                  $elements{$role.'_staff_inc'} = 'checkbox';
                 $elements{$role.'_staff_exc'} = 'checkbox';                  $elements{$role.'_staff_exc'} = 'checkbox';
             }              }
             $elements{$role.'_override'} = 'checkbox';              $elements{$role.'_override'} = 'checkbox';      
             if (ref($settings{$role}) eq 'HASH') {              if (ref($settings{$role}) eq 'HASH') {
                 if ($settings{$role}{'access'} ne '') {                  if ($settings{$role}{'access'} ne '') {
                     my $curraccess = $settings{$role}{'access'};                      my $curraccess = $settings{$role}{'access'};
Line 7304  function switchRoleTab(caller,role) { Line 7315  function switchRoleTab(caller,role) {
         }          }
     }      }
     return false;      return false;
 }  }         
   
 function helpdeskAccess(role) {  function helpdeskAccess(role) {
     var curraccess = null;      var curraccess = null;
Line 7318  function helpdeskAccess(role) { Line 7329  function helpdeskAccess(role) {
     var shown = Array();      var shown = Array();
     var hidden = Array();      var hidden = Array();
     if (curraccess == 'none') {      if (curraccess == 'none') {
         hidden = Array ('$hiddenstr');          hidden = Array ('$hiddenstr'); 
     } else {      } else {
         if (curraccess == 'status') {          if (curraccess == 'status') {
             shown = Array ('bystatus','privs');              shown = Array ('bystatus','privs'); 
             hidden = Array ('notinc','notexc');              hidden = Array ('notinc','notexc');    
         } else {          } else {
             if (curraccess == 'exc') {              if (curraccess == 'exc') {
                 shown = Array ('notexc','privs');                  shown = Array ('notexc','privs');
Line 7341  function helpdeskAccess(role) { Line 7352  function helpdeskAccess(role) {
     if (hidden.length > 0) {      if (hidden.length > 0) {
         for (var i=0; i<hidden.length; i++) {          for (var i=0; i<hidden.length; i++) {
             if (document.getElementById(role+'_'+hidden[i])) {              if (document.getElementById(role+'_'+hidden[i])) {
                 document.getElementById(role+'_'+hidden[i]).style.display = 'none';                  document.getElementById(role+'_'+hidden[i]).style.display = 'none'; 
             }              }
         }          }
     }      }
Line 7366  function toggleAccess(role) { Line 7377  function toggleAccess(role) {
             if (document.$formname.elements[role+'_incrs'][i].checked) {              if (document.$formname.elements[role+'_incrs'][i].checked) {
                 if (document.$formname.elements[role+'_incrs'][i].value == 1) {                  if (document.$formname.elements[role+'_incrs'][i].value == 1) {
                     document.getElementById(role+'_setindom').style.display = 'none';                      document.getElementById(role+'_setindom').style.display = 'none';
                     document.getElementById(role+'_setincrs').style.display = 'block';                      document.getElementById(role+'_setincrs').style.display = 'block'; 
                 } else {                  } else {
                     document.getElementById(role+'_setincrs').style.display = 'none';                      document.getElementById(role+'_setincrs').style.display = 'none';
                     document.getElementById(role+'_setindom').style.display = 'block';                      document.getElementById(role+'_setindom').style.display = 'block';
Line 7398  ENDJS Line 7409  ENDJS
                     'all'    => 'All',                      'all'    => 'All',
                     'none'   => 'None',                      'none'   => 'None',
                     'status' => 'Determined based on institutional status',                      'status' => 'Determined based on institutional status',
                     'inc'    => 'Include all, but exclude specific personnel',                      'inc'    => 'Include all, but exclude specific personnel',  
                     'exc'    => 'Exclude all, but include specific personnel',                      'exc'    => 'Exclude all, but include specific personnel',
                     'hel'    => 'Helpdesk',                      'hel'    => 'Helpdesk',
                     'rpr'    => 'Role privileges',                      'rpr'    => 'Role privileges',
Line 7434  ENDJS Line 7445  ENDJS
         my @roles_by_num = ();          my @roles_by_num = ();
         foreach my $item (sort {$a <=> $b } (keys(%ordered))) {          foreach my $item (sort {$a <=> $b } (keys(%ordered))) {
             push(@roles_by_num,$ordered{$item});              push(@roles_by_num,$ordered{$item});
         }          } 
         $r->print('<p>'.$lt{'tfh'}.': <i>'.join('</i>, <i>',map { $description{$_}; } @roles_by_num).'</i>.');          $r->print('<p>'.$lt{'tfh'}.': <b>'.join('</b>, <b>',map { $description{$_}; } @roles_by_num).'</b>.');
         if ($permission->{'owner'}) {          if ($permission->{'owner'}) {
             $r->print('<br />'.$lt{'aco'}.'</p><p>');              $r->print('<br />'.$lt{'aco'}.'</p><p>');
             $r->print('<input type="hidden" name="state" value="process" />'.              $r->print('<input type="hidden" name="state" value="process" />'.
Line 7457  ENDJS Line 7468  ENDJS
             my $id;              my $id;
             if ($count == 0) {              if ($count == 0) {
                 $id=' id="LC_current_minitab"';                  $id=' id="LC_current_minitab"';
                 $visibility{$role} = ' style="display:block"';                  $visibility{$role} = ' style="display:block"';    
             } else {              } else {
                 $visibility{$role} = ' style="display:none"';                  $visibility{$role} = ' style="display:none"';
             }              }
Line 7477  ENDJS Line 7488  ENDJS
                                 priv   => 'block',                                  priv   => 'block',
                              );                               );
             my (%selected,$overridden,$incrscheck,$indomcheck,$indomvis,$incrsvis);              my (%selected,$overridden,$incrscheck,$indomcheck,$indomvis,$incrsvis);
             if (ref($settings{$role}) eq 'HASH') {              if (ref($settings{$role}) eq 'HASH') { 
                 if ($settings{$role}{'access'} ne '') {                  if ($settings{$role}{'access'} ne '') {
                     $indomvis = ' style="display:none"';                      $indomvis = ' style="display:none"';
                     $incrsvis = ' style="display:block"';                      $incrsvis = ' style="display:block"';
                     $incrscheck = ' checked="checked"';                      $incrscheck = ' checked="checked"'; 
                     if ($settings{$role}{'access'} ne 'all') {                      if ($settings{$role}{'access'} ne 'all') {
                         $usecheck{$settings{$role}{'access'}} = $usecheck{'all'};                          $usecheck{$settings{$role}{'access'}} = $usecheck{'all'};
                         delete($usecheck{'all'});                          delete($usecheck{'all'});
Line 7508  ENDJS Line 7519  ENDJS
                 }                  }
             } else {              } else {
                 $indomcheck = ' checked="checked"';                  $indomcheck = ' checked="checked"';
                 $indomvis = ' style="display:block"';                  $indomvis = ' style="display:block"'; 
                 $incrsvis = ' style="display:none"';                  $incrsvis = ' style="display:none"';
             }              }
             $r->print('<div class="LC_left_float" id="'.$role.'_maindiv"'.$visibility{$role}.'>'.              $r->print('<div class="LC_left_float" id="'.$role.'_maindiv"'.$visibility{$role}.'>'.
Line 7561  ENDJS Line 7572  ENDJS
                       &role_priv_table($role,$permission,$crstype,\%full,\%levels,\%levelscurrent,$overridden{$role}).                        &role_priv_table($role,$permission,$crstype,\%full,\%levels,\%levelscurrent,$overridden{$role}).
                       '</fieldset></div><div style="padding:0;clear:both;margin:0;border:0"></div>');                        '</fieldset></div><div style="padding:0;clear:both;margin:0;border:0"></div>');
         }          }
         if ($permission->{'owner'}) {  
             $r->print('<p><input type="submit" value="'.&mt('Save changes').'" /></p>');  
         }  
     } else {      } else {
         $r->print(&mt('Helpdesk roles have not yet been created in this domain.'));          $r->print(&mt('Helpdesk roles have not yet been created in this domain.'));
     }      }
Line 7708  sub role_priv_table { Line 7716  sub role_priv_table {
                 $checked = ' checked="checked"';                  $checked = ' checked="checked"';
             }              }
             $customstatus = '<img src="/adm/lonIcons/navmap.wrong.gif" alt="'.$lt{'dis'}.'" />';              $customstatus = '<img src="/adm/lonIcons/navmap.wrong.gif" alt="'.$lt{'dis'}.'" />';
             $ineffect = $customstatus;              $ineffect = $customstatus; 
         } elsif ((!$levelscurrent->{'course'}{$priv}) && ($on{$priv})) {          } elsif ((!$levelscurrent->{'course'}{$priv}) && ($on{$priv})) {
             if ($permission->{'owner'}) {              if ($permission->{'owner'}) {
                 $checked = ' checked="checked"';                  $checked = ' checked="checked"'; 
             }              }
             $customstatus = '<img src="/adm/lonIcons/navmap.correct.gif" alt="'.$lt{'ena'}.'" />';              $customstatus = '<img src="/adm/lonIcons/navmap.correct.gif" alt="'.$lt{'ena'}.'" />';
             $ineffect = $customstatus;              $ineffect = $customstatus; 
         }          }
         if ($permission->{'owner'}) {          if ($permission->{'owner'}) {
             $output .= '<input type="checkbox" name="'.$role.'_override" value="'.$priv.'"'.$checked.' />';              $output .= '<input type="checkbox" name="'.$role.'_override" value="'.$priv.'"'.$checked.' />';
Line 7729  sub role_priv_table { Line 7737  sub role_priv_table {
 }  }
   
 sub get_adhocrole_settings {  sub get_adhocrole_settings {
     my ($cid,$accesstypes,$types,$customroles,$settings,$overridden) = @_;      my ($cid,$accesstypes,$types,$customroles,$settings,$overridden) = @_;  
     return unless ((ref($accesstypes) eq 'ARRAY') && (ref($customroles) eq 'HASH') &&      return unless ((ref($accesstypes) eq 'ARRAY') && (ref($customroles) eq 'HASH') &&
                    (ref($settings) eq 'HASH') && (ref($overridden) eq 'HASH'));                     (ref($settings) eq 'HASH') && (ref($overridden) eq 'HASH'));
     foreach my $role (split(/,/,$env{'course.'.$cid.'.internal.adhocaccess'})) {      foreach my $role (split(/,/,$env{'course.'.$cid.'.internal.adhocaccess'})) {
Line 7858  sub update_helpdeskaccess { Line 7866  sub update_helpdeskaccess {
                     push(@incrs,$role);                      push(@incrs,$role);
                     unless ($current{'access'} eq $access) {                      unless ($current{'access'} eq $access) {
                         $changed{$role}{'access'} = 1;                          $changed{$role}{'access'} = 1;
                         $storehash{'internal.adhoc.'.$role} = $access;                          $storehash{'internal.adhoc.'.$role} = $access; 
                     }                      }
                     if ($access eq 'status') {                      if ($access eq 'status') {
                         my @statuses = &Apache::loncommon::get_env_multiple('form.'.$role.'_status');                          my @statuses = &Apache::loncommon::get_env_multiple('form.'.$role.'_status');
Line 7894  sub update_helpdeskaccess { Line 7902  sub update_helpdeskaccess {
                         my @currstaff;                          my @currstaff;
                         foreach my $person (sort(@personnel)) {                          foreach my $person (sort(@personnel)) {
                             if ($domhelpdesk{$person}) {                              if ($domhelpdesk{$person}) {
                                 push(@stored,$person);                                  push(@stored,$person); 
                             }                              }
                         }                          }
                         if (ref($current{$access}) eq 'ARRAY') {                          if (ref($current{$access}) eq 'ARRAY') {
Line 7940  sub update_helpdeskaccess { Line 7948  sub update_helpdeskaccess {
                 &Apache::lonuserutils::custom_role_privs($customroles{$role},\%full,\%levels,\%levelscurrent);                  &Apache::lonuserutils::custom_role_privs($customroles{$role},\%full,\%levels,\%levelscurrent);
                 my (@updatedon,@updatedoff,@override);                  my (@updatedon,@updatedoff,@override);
                 @override = &Apache::loncommon::get_env_multiple('form.'.$role.'_override');                  @override = &Apache::loncommon::get_env_multiple('form.'.$role.'_override');
                 if (@override) {                  if (@override) { 
                     foreach my $priv (sort(keys(%full))) {                      foreach my $priv (sort(keys(%full))) {
                         next unless ($levels{'course'}{$priv});                          next unless ($levels{'course'}{$priv});
                         if (grep(/^\Q$priv\E$/,@override)) {                          if (grep(/^\Q$priv\E$/,@override)) {
Line 7953  sub update_helpdeskaccess { Line 7961  sub update_helpdeskaccess {
                     }                      }
                 }                  }
                 if (@updatedon) {                  if (@updatedon) {
                     $newsettings{$role}{'on'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedon));                      $newsettings{$role}{'on'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedon)); 
                 }                  }
                 if (@updatedoff) {                  if (@updatedoff) {
                     $newsettings{$role}{'off'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedoff));                      $newsettings{$role}{'off'} = join('</li><li>', map { &Apache::lonnet::plaintext($_,$crstype) } (@updatedoff));
Line 8061  sub update_helpdeskaccess { Line 8069  sub update_helpdeskaccess {
                     push(@roles_by_num,$ordered{$item});                      push(@roles_by_num,$ordered{$item});
                 }                  }
                 %domusage = &domain_adhoc_access(\%changed,\%domcurrent,\@accesstypes,$usertypes,$othertitle);                  %domusage = &domain_adhoc_access(\%changed,\%domcurrent,\@accesstypes,$usertypes,$othertitle);
                 $r->print(&mt('Helpdesk access settings have been changed as follows').'<br />');                  $r->print(&mt('Helpdesk access settings have been changed as follows').'<br />'); 
                 $r->print('<ul>');                  $r->print('<ul>');
                 foreach my $role (@roles_by_num) {                  foreach my $role (@roles_by_num) {
                     next unless (ref($changed{$role}) eq 'HASH');                      next unless (ref($changed{$role}) eq 'HASH');
                     $r->print('<li>'.&mt('Ad hoc role').': <b>'.$description{$role}.'</b>'.                      $r->print('<li>'.&mt('Ad hoc role').': <b>'.$description{$role}.'</b>'.
                               '<ul>');                                '<ul>');
                     if ($changed{$role}{'access'} || $changed{$role}{'status'} || $changed{$role}{'inc'} || $changed{$role}{'exc'}) {                      if ($changed{$role}{'access'} || $changed{$role}{'status'} || $changed{$role}{'inc'} || $changed{$role}{'exc'}) { 
                         $r->print('<li>');                          $r->print('<li>');
                         if ($env{'form.'.$role.'_incrs'}) {                          if ($env{'form.'.$role.'_incrs'}) {
                             if ($newsettings{$role}{'access'} eq 'all') {                              if ($newsettings{$role}{'access'} eq 'all') {
Line 8077  sub update_helpdeskaccess { Line 8085  sub update_helpdeskaccess {
                             } elsif ($newsettings{$role}{'access'} eq 'status') {                              } elsif ($newsettings{$role}{'access'} eq 'status') {
                                 if ($newsettings{$role}{'status'}) {                                  if ($newsettings{$role}{'status'}) {
                                     my ($access,$rest) = split(/=/,$storehash{'internal.adhoc.'.$role});                                      my ($access,$rest) = split(/=/,$storehash{'internal.adhoc.'.$role});
                                     if (split(/,/,$rest) > 1) {                                      if (split(/,/,$rest) > 1) {  
                                         $r->print(&mt('Helpdesk staff can use this role if their institutional type is one of: [_1].',                                          $r->print(&mt('Helpdesk staff can use this role if their institutional type is one of: [_1].',
                                                       $newsettings{$role}{'status'}));                                                        $newsettings{$role}{'status'}));
                                     } else {                                      } else {
Line 8112  sub update_helpdeskaccess { Line 8120  sub update_helpdeskaccess {
                                 $r->print('<li>'.&mt('Privileges which are available by default for this ad hoc role, but are disabled for this specific '.lc($crstype).':').                                  $r->print('<li>'.&mt('Privileges which are available by default for this ad hoc role, but are disabled for this specific '.lc($crstype).':').
                                           '<ul><li>'.$newsettings{$role}{'off'}.'</li></ul></li>');                                            '<ul><li>'.$newsettings{$role}{'off'}.'</li></ul></li>');
                             } else {                              } else {
                                 $r->print('<li>'.&mt('All privileges available by default for this ad hoc role are enabled.').'</li>');                                  $r->print('<li>'.&mt('All privileges available by default for this ad hoc role are enabled.').'</li>'); 
                             }                              }
                         }                          }
                         if ($changed{$role}{'on'}) {                          if ($changed{$role}{'on'}) {  
                             if ($newsettings{$role}{'on'}) {                              if ($newsettings{$role}{'on'}) {
                                 $r->print('<li>'.&mt('Privileges which are not available by default for this ad hoc role, but are enabled for this specific '.lc($crstype).':').                                  $r->print('<li>'.&mt('Privileges which are not available by default for this ad hoc role, but are enabled for this specific '.lc($crstype).':').
                                           '<ul><li>'.$newsettings{$role}{'on'}.'</li></ul></li>');                                            '<ul><li>'.$newsettings{$role}{'on'}.'</li></ul></li>');
                             } else {                              } else {
                                 $r->print('<li>'.&mt('None of the privileges unavailable by default for this ad hoc role are enabled.').'</li>');                                  $r->print('<li>'.&mt('None of the privileges unavailable by default for this ad hoc role are enabled.').'</li>'); 
                             }                              }
                         }                          }
                     }                      }
Line 8129  sub update_helpdeskaccess { Line 8137  sub update_helpdeskaccess {
                 $r->print('</ul>');                  $r->print('</ul>');
             }              }
         } else {          } else {
             $r->print(&mt('No changes made to helpdesk access settings.'));              $r->print(&mt('No changes made to helpdesk access settings.')); 
         }          }
     }      }
     return;      return;
Line 8608  sub build_search_response { Line 8616  sub build_search_response {
                                         ,' <a'.$helplink.'>'                                          ,' <a'.$helplink.'>'
                                         ,'</a>')                                          ,'</a>')
                                      .'<br />';                                       .'<br />';
                       
                     }                      }
                 }                  }
             }              }

Removed from v.1.406.2.10  
changed lines
  Added in v.1.428


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