Diff for /loncom/interface/loncreateuser.pm between versions 1.249.2.5 and 1.254

version 1.249.2.5, 2008/07/18 02:15:32 version 1.254, 2008/07/13 09:53:16
Line 1397  sub modify_login_block { Line 1397  sub modify_login_block {
   
 sub personal_data_display {  sub personal_data_display {
     my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray) = @_;      my ($ccuname,$ccdomain,$newuser,$context,$inst_results,$rolesarray) = @_;
     my ($output,$showforceid,%userenv,%canmodify);      my ($output,$showforceid,%userenv,%canmodify,@inststatuses);
     my @userinfo = ('firstname','middlename','lastname','generation',      my @userinfo = ('firstname','middlename','lastname','generation',
                     'permanentemail','id');                      'permanentemail','id');
     my $rowcount = 0;      my $rowcount = 0;
     my $editable = 0;      my $editable = 0;
       if ($context eq 'selfcreate') {
           if (ref($inst_results) eq 'HASH') {
               @inststatuses = &get_inststatuses($inst_results);
               if (@inststatuses == 0) {
                   @inststatuses = ('default');
               }
               $rolesarray = \@inststatuses;
           }
       }
     if (!$newuser) {      if (!$newuser) {
         # Get the users information          # Get the users information
         %userenv = &Apache::lonnet::get('environment',          %userenv = &Apache::lonnet::get('environment',
                    ['firstname','middlename','lastname','generation',                     ['firstname','middlename','lastname','generation',
                     'permanentemail','id'],$ccdomain,$ccuname);                      'permanentemail','id'],$ccdomain,$ccuname);
       }
       if ((!$newuser) || ($context eq 'selfcreate')) {
         %canmodify =          %canmodify =
             &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain,              &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain,
                                                        \@userinfo,$rolesarray);                                                         \@userinfo,$rolesarray);
     } elsif ($context eq 'selfcreate') {  
         %canmodify = &selfcreate_canmodify($context,$ccdomain,\@userinfo,  
                                            $inst_results,$rolesarray);  
     }      }
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                 'pd'             => "Personal Data",                  'pd'             => "Personal Data",
Line 1448  sub personal_data_display { Line 1456  sub personal_data_display {
                     $row .= '<input type="hidden" name="c'.$item.'" value="'.$inst_results->{$item}.'" />'.$inst_results->{$item};                      $row .= '<input type="hidden" name="c'.$item.'" value="'.$inst_results->{$item}.'" />'.$inst_results->{$item};
                 } else {                  } else {
                     if ($context eq 'selfcreate') {                      if ($context eq 'selfcreate') {
                         if ($canmodify{$item}) {                          if ($canmodify{$item}) { 
                             $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';                              $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';
                             $editable ++;                              $editable ++;
                         } else {                          } else {
Line 1498  sub personal_data_display { Line 1506  sub personal_data_display {
     }      }
 }  }
   
 sub selfcreate_canmodify {  
     my ($context,$dom,$userinfo,$inst_results,$rolesarray) = @_;  
     if (ref($inst_results) eq 'HASH') {  
         my @inststatuses = &get_inststatuses($inst_results);  
         if (@inststatuses == 0) {  
             @inststatuses = ('default');  
         }  
         $rolesarray = \@inststatuses;  
     }  
     my %canmodify =  
         &Apache::lonuserutils::can_modify_userinfo($context,$dom,$userinfo,  
                                                    $rolesarray);  
     return %canmodify;  
 }  
   
 sub get_inststatuses {  sub get_inststatuses {
     my ($insthashref) = @_;      my ($insthashref) = @_;
     my @inststatuses = ();      my @inststatuses = ();
Line 3407  function getIndexByName(item) { Line 3400  function getIndexByName(item) {
     return -1;      return -1;
 }  }
 ENDSCRIPT  ENDSCRIPT
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
   
     my $output = '<script type="text/javascript">'."\n".      my $output = '<script type="text/javascript">'."\n".
                  $setsec_js."\n".$selfenroll_js."\n".                   $setsec_js."\n".$selfenroll_js."\n".
                  '</script>'."\n".                   '</script>'."\n".
                  '<h3>'.$lt->{'selfenroll'}.'</h3>'."\n";                   '<h3>'.$lt->{'selfenroll'}.'</h3>'."\n".
     my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);                   '<form name="'.$formname.'" method="post" action="/adm/createuser">'."\n".
     if (ref($visactions) eq 'HASH') {                   &Apache::lonhtmlcommon::start_pick_box();
         if ($visible) {      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
             $output .= '<p>'.$visactions->{'vis'}.'</p>';      my $cnum = $env{'course.'.$env{'request.course.id'},'.num'};
         } else {  
             $output .= $visactions->{'miss'}.'<br />'.$visactions->{'yous'}.  
                        '<p>'.$visactions->{'gen'}.'<br />'.$visactions->{'coca'};  
             if (ref($vismsgs) eq 'ARRAY') {  
                 $output .= '<br />'.$visactions->{'make'}.'<ul>';  
                 foreach my $item (@{$vismsgs}) {  
                     $output .= '<li>'.$visactions->{$item}.'</li>';  
                 }  
                 $output .= '</ul>';  
             }  
             $output .= '</p>';  
         }  
     }  
     $output .= '<form name="'.$formname.'" method="post" action="/adm/createuser">'."\n".  
                &Apache::lonhtmlcommon::start_pick_box();  
     if (ref($row) eq 'ARRAY') {      if (ref($row) eq 'ARRAY') {
         foreach my $item (@{$row}) {          foreach my $item (@{$row}) {
             my $title = $item;               my $title = $item; 
Line 3584  ENDSCRIPT Line 3559  ENDSCRIPT
     return;      return;
 }  }
   
 sub visible_in_cat {  
     my ($cdom,$cnum) = @_;  
     my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);  
     my ($cathash,%settable,@vismsgs,$cansetvis);  
     my %visactions = &Apache::lonlocal::texthash(  
                    vis => 'Your course currently appears in the Course Catalog for this domain.',  
                    gen => 'Courses can be both self-cataloging, based on an institutional code (e.g., fs08phy231), or can be assigned categories from a hierarchy defined for the domain.',  
                    miss => 'Your course does not currently appear in the Course Catalog for this domain.',  
                    yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding your course.',  
                    coca => 'Courses can be absent from the Catalog, because they do not have an institutional code, have no assigned category, or have been specifically excluded.',  
                    make => 'Make any changes to self-enrollment settings below, click "Save changes", then take action to include the course in the Catalog:',  
                    take => 'Take the following action to ensure the course appears in the Catalog:',  
                    dc_unhide  => 'Ask a domain coordinator to change the "Exclude from course catalog" setting.',  
                    dc_addinst => 'Ask a domain coordinator to enable display the catalog of "Official courses (with institutional codes)".',  
                    dc_instcode => 'Ask a domain coordinator to assign an institutional code (if this is an official course).',  
                    dc_catalog  => 'Ask a domain coordinator to enable or create at least one course category in the domain.',  
                    dc_categories => 'Ask a domain coordinator to create a hierarchy of categories and sub categories for courses in the domain.',  
                    dc_chgcat => 'Ask a domain coordinator to change the category assigned to the course, as the one currently assigned is no longer used in the domain',  
                    dc_addcat => 'Ask a domain coordinator to assign a category to the course.',  
     );  
     $visactions{'unhide'} = &mt('Use [_1]Set course environment[_2] to change the "Exclude from course catalog" setting.','<a href="/adm/parmset?action=crsenv">','</a>');  
     $visactions{'chgcat'} = &mt('Use [_1]Set course environment[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','<a href="/adm/parmset?action=crsenv">','</a>');  
     $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','<a href="/adm/parmset?action=crsenv">','</a>');  
     if (ref($domconf{'coursecategories'}) eq 'HASH') {  
         if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {  
             $settable{'togglecats'} = 1;  
         }  
         if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {  
             $settable{'categorize'} = 1;  
         }  
         $cathash = $domconf{'coursecategories'}{'cats'};  
     }  
     if ($settable{'togglecats'} && $settable{'categories'}) {  
         $cansetvis = &mt('You are able to both assign a course category and choose to exclude this course from the catalog.');  
     } elsif ($settable{'togglecats'}) {  
         $cansetvis = &mt('You are able to choose to exclude this course from the catalog, but only a Domain Coordinator may assign a course category.');  
     } elsif ($settable{'categories'}) {  
         $cansetvis = &mt('You may assign a course category, but only a Domain Coordinator may choose to exclude this course from the catalog.');  
     } else {  
         $cansetvis = &mt('Only a Domain Coordinator may assign a course category or choose to exclude this course from the catalog.');  
     }  
   
     my %currsettings =  
         &Apache::lonnet::get('environment',['hidefromcat','categories','internal.coursecode'],  
                              $cdom,$cnum);  
     my $visible = 0;  
     if ($currsettings{'internal.coursecode'} ne '') {  
         if (ref($domconf{'coursecategories'}) eq 'HASH') {  
             $cathash = $domconf{'coursecategories'}{'cats'};  
             if (ref($cathash) eq 'HASH') {  
                 if ($cathash->{'instcode::0'} eq '') {  
                     push(@vismsgs,'dc_addinst');  
                 } else {  
                     $visible = 1;  
                 }  
             } else {  
                 $visible = 1;  
             }  
         } else {  
             $visible = 1;  
         }  
     } else {  
         if (ref($cathash) eq 'HASH') {  
             if ($cathash->{'instcode::0'} ne '') {  
                 push(@vismsgs,'dc_instcode');  
             }  
         } else {  
             push(@vismsgs,'dc_instcode');  
         }  
     }  
     if ($currsettings{'categories'} ne '') {  
         my $cathash;  
         if (ref($domconf{'coursecategories'}) eq 'HASH') {  
             $cathash = $domconf{'coursecategories'}{'cats'};  
             if (ref($cathash) eq 'HASH') {  
                 if (keys(%{$cathash}) == 0) {  
                     push(@vismsgs,'dc_catalog');  
                 } elsif ((keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} ne '')) {  
                     push(@vismsgs,'dc_categories');  
                 } else {  
                     my @currcategories = split('&',$currsettings{'categories'});  
                     my $matched = 0;  
                     foreach my $cat (@currcategories) {  
                         if ($cathash->{$cat} ne '') {  
                             $visible = 1;  
                             $matched = 1;  
                             last;  
                         }  
                     }  
                     if (!$matched) {  
                         if ($settable{'categories'}) {  
                             push(@vismsgs,'chgcat');  
                         } else {  
                             push(@vismsgs,'dc_chgcat');  
                         }  
                     }  
                 }  
             }  
         }  
     } else {  
         if (ref($cathash) eq 'HASH') {  
             if ((keys(%{$cathash}) > 1) ||  
                 (keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} eq '')) {  
                 if ($settable{'categories'}) {  
                     push(@vismsgs,'addcat');  
                 } else {  
                     push(@vismsgs,'dc_addcat');  
                 }  
             }  
         }  
     }  
     if ($currsettings{'hidefromcat'} eq 'yes') {  
         $visible = 0;  
         if ($settable{'togglecats'}) {  
             unshift(@vismsgs,'unhide');  
         } else {  
             unshift(@vismsgs,'dc_unhide')  
         }  
     }  
     return ($visible,$cansetvis,\@vismsgs,\%visactions);  
 }  
   
 sub new_selfenroll_dom_row {  sub new_selfenroll_dom_row {
     my ($newdom,$num) = @_;      my ($newdom,$num) = @_;
     my $domdesc = &Apache::lonnet::domain($newdom);      my $domdesc = &Apache::lonnet::domain($newdom);
Line 3745  sub selfenroll_inst_types { Line 3598  sub selfenroll_inst_types {
                 $output .= '</tr><tr>';                  $output .= '</tr><tr>';
             }              }
             if (defined($usertypes->{$type})) {              if (defined($usertypes->{$type})) {
                 my $esc_type = &escape($type);  
                 $output .= '<td><span class="LC_nobreak"><label><input type = "checkbox" value="'.                  $output .= '<td><span class="LC_nobreak"><label><input type = "checkbox" value="'.
                            $esc_type.'" ';                             $type.'" ';
                 if (ref($currinsttypes) eq 'ARRAY') {                  if (ref($currinsttypes) eq 'ARRAY') {
                     if (@{$currinsttypes} > 0) {                      if (@{$currinsttypes} > 0) {
                         if (grep(/^any$/,@{$currinsttypes})) {                          if (grep(/^any$/,@{$currinsttypes})) {
                             $output .= 'checked="checked"';                              $output .= 'checked="checked"';
                         } elsif (grep(/^\Q$esc_type\E$/,@{$currinsttypes})) {                          } elsif (grep(/^\Q$type\E$/,@{$currinsttypes})) {
                             $output .= 'checked="checked"';                              $output .= 'checked="checked"';
                         }                          }
                     } else {                      } else {
Line 3854  sub print_userchangelogs_display { Line 3706  sub print_userchangelogs_display {
                    &mt('Context').'</th><th>'.&mt('Start').'</th><th>'.&mt('End').'</th>'.                     &mt('Context').'</th><th>'.&mt('Start').'</th><th>'.&mt('End').'</th>'.
                    &Apache::loncommon::end_data_table_header_row();                     &Apache::loncommon::end_data_table_header_row();
     my ($minshown,$maxshown);      my ($minshown,$maxshown);
     $minshown = 1;      my $minshown = 1;
     my $count = 0;      my $count = 0;
     if ($curr{'show'} ne &mt('all')) {       if ($curr{'show'} ne &mt('all')) { 
         $maxshown = $curr{'page'} * $curr{'show'};          $maxshown = $curr{'page'} * $curr{'show'};
Line 4742  sub update_selfenroll_config { Line 4594  sub update_selfenroll_config {
                             my $othervalue = 'any';                              my $othervalue = 'any';
                             if ((ref($types) eq 'ARRAY') && (ref($usertypes) eq 'HASH')) {                              if ((ref($types) eq 'ARRAY') && (ref($usertypes) eq 'HASH')) {
                                 if (@{$types} > 0) {                                  if (@{$types} > 0) {
                                     my @esc_types = map { &escape($_); } @{$types};  
                                     $othervalue = 'other';                                      $othervalue = 'other';
                                     $typestr = join(',',(@esc_types,$othervalue));                                      $typestr = join(',',(@{$types},$othervalue));
                                 }                                  }
                                 $typestr = $othervalue;                                  $typestr = $othervalue;
                             } else {                              } else {
Line 4866  sub update_selfenroll_config { Line 4717  sub update_selfenroll_config {
     } else {      } else {
         $r->print(&mt('No changes were made to the existing self-enrollment settings in this course.'));          $r->print(&mt('No changes were made to the existing self-enrollment settings in this course.'));
     }      }
     my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);  
     if (ref($visactions) eq 'HASH') {  
         if (!$visible) {  
             $r->print('<br />'.$visactions->{'miss'}.'<br />'.$visactions->{'yous'}.  
                       '<br />');  
             if (ref($vismsgs) eq 'ARRAY') {  
                 $r->print('<br />'.$visactions->{'take'}.'<ul>');  
                 foreach my $item (@{$vismsgs}) {  
                     $r->print('<li>'.$visactions->{$item}.'</li>');  
                 }  
                 $r->print('</ul>');  
             }  
             $r->print($cansetvis);  
         }  
     }  
     return;      return;
 }  }
   
Line 4890  sub get_selfenroll_titles { Line 4726  sub get_selfenroll_titles {
                 types        => 'Users allowed to self-enroll in this course',                  types        => 'Users allowed to self-enroll in this course',
                 registered   => 'Restrict self-enrollment to students officially registered for the course',                  registered   => 'Restrict self-enrollment to students officially registered for the course',
                 enroll_dates => 'Dates self-enrollment available',                  enroll_dates => 'Dates self-enrollment available',
                 access_dates => 'Course access dates assigned to self-enrolling users',                  access_dates => 'Course access dates for self-enrolled users',
                 section      => 'Section assigned to self-enrolling users',                  section      => 'Section assigned to self-enrolled users',
              );               );
     return (\@row,\%lt);      return (\@row,\%lt);
 }  }

Removed from v.1.249.2.5  
changed lines
  Added in v.1.254


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