Diff for /loncom/interface/loncreateuser.pm between versions 1.249.2.4 and 1.250

version 1.249.2.4, 2008/07/16 12:32:11 version 1.250, 2008/07/07 23:54:27
Line 1396  sub modify_login_block { Line 1396  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) = @_;
     my ($output,$showforceid,%userenv,%canmodify,@inststatuses);      my ($output,$showforceid,%userenv,%canmodify);
     my @userinfo = ('firstname','middlename','lastname','generation',      my @userinfo = ('firstname','middlename','lastname','generation',
                     'permanentemail','id');                      'permanentemail','id');
     my $rowcount = 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);
     }      }
     my %lt=&Apache::lonlocal::texthash(      my %lt=&Apache::lonlocal::texthash(
                 'pd'             => "Personal Data",                  'pd'             => "Personal Data",
Line 1445  sub personal_data_display { Line 1432  sub personal_data_display {
               &Apache::lonhtmlcommon::start_pick_box();                &Apache::lonhtmlcommon::start_pick_box();
     foreach my $item (@userinfo) {      foreach my $item (@userinfo) {
         my $rowtitle = $lt{$item};          my $rowtitle = $lt{$item};
         my $hiderow = 0;  
         if ($item eq 'generation') {          if ($item eq 'generation') {
             $rowtitle = $genhelp.$rowtitle;              $rowtitle = $genhelp.$rowtitle;
         }          }
         my $row = &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 (ref($inst_results) eq 'HASH') {              if (ref($inst_results) eq 'HASH') {
                 if ($inst_results->{$item} ne '') {                  if ($inst_results->{$item} ne '') {
                     $row .= '<input type="hidden" name="c'.$item.'" value="'.$inst_results->{$item}.'" />'.$inst_results->{$item};                      $output .= '<input type="hidden" name="c'.$item.'" value="'.$inst_results->{$item}.'" />'.$inst_results->{$item};
                 } else {                  } else {
                     if ($context eq 'selfcreate') {                      $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';
                         if ($canmodify{$item}) {  
                             $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';  
                             $editable ++;  
                         } else {  
                             $hiderow = 1;  
                         }  
                     } else {  
                         $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';  
                     }  
                 }                  }
             } else {              } else {
                 if ($context eq 'selfcreate') {                  $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';
                     if ($canmodify{$item}) {  
                         $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';  
                         $editable ++;  
                     } else {  
                         $hiderow = 1;  
                     }  
                 } else {  
                     $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="" />';  
                 }  
             }              }
         } else {          } else {
             if ($canmodify{$item}) {              if ($canmodify{$item}) {
                 $row .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="'.$userenv{$item}.'" />';                  $output .= '<input type="text" name="c'.$item.'" size="'.$textboxsize{$item}.'" value="'.$userenv{$item}.'" />';
             } else {              } else {
                 $row .= $userenv{$item};                  $output .= $userenv{$item};
             }              }
             if ($item eq 'id') {              if ($item eq 'id') {
                 $showforceid = $canmodify{$item};                  $showforceid = $canmodify{$item};
             }              }
         }          }
         $row .= &Apache::lonhtmlcommon::row_closure(1);          $output .= &Apache::lonhtmlcommon::row_closure(1);
         if (!$hiderow) {  
             $output .= $row;  
             $rowcount ++;  
         }  
     }      }
     $output .= &Apache::lonhtmlcommon::end_pick_box();      $output .= &Apache::lonhtmlcommon::end_pick_box();
     if (wantarray) {      if (wantarray) {
         if ($context eq 'selfcreate') {          return ($output,$showforceid);
             return($output,$rowcount,$editable);  
         } else {  
             return ($output,$showforceid);  
         }  
     } else {      } else {
         return $output;          return $output;
     }      }
 }  }
   
 sub get_inststatuses {  
     my ($insthashref) = @_;  
     my @inststatuses = ();  
     if (ref($insthashref) eq 'HASH') {  
         if (ref($insthashref->{'inststatus'}) eq 'ARRAY') {  
             @inststatuses = @{$insthashref->{'inststatus'}};  
         }  
     }  
     return @inststatuses;  
 }  
   
 # ================================================================= Phase Three  # ================================================================= Phase Three
 sub update_user_data {  sub update_user_data {
     my ($r,$context) = @_;       my ($r,$context) = @_; 
Line 3400  function getIndexByName(item) { Line 3349  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 3577  ENDSCRIPT Line 3508  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 3729  sub selfenroll_inst_types { Line 3538  sub selfenroll_inst_types {
     my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($currdom);      my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($currdom);
     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 (keys(%{$usertypes}) > 0) {          if (@{$types} > 0) {
             $othervalue = 'other';              $othervalue = 'other';
         }          }
         $output .= '<table><tr>';          $output .= '<table><tr>';
Line 3846  sub print_userchangelogs_display { Line 3655  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 4857  sub update_selfenroll_config { Line 4666  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 4881  sub get_selfenroll_titles { Line 4675  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.4  
changed lines
  Added in v.1.250


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