--- loncom/interface/loncreateuser.pm 2008/07/18 02:15:32 1.249.2.5 +++ loncom/interface/loncreateuser.pm 2008/07/13 09:53:16 1.254 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Create a user # -# $Id: loncreateuser.pm,v 1.249.2.5 2008/07/18 02:15:32 raeburn Exp $ +# $Id: loncreateuser.pm,v 1.254 2008/07/13 09:53:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1397,22 +1397,30 @@ sub modify_login_block { sub personal_data_display { 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', '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) { # Get the users information %userenv = &Apache::lonnet::get('environment', ['firstname','middlename','lastname','generation', 'permanentemail','id'],$ccdomain,$ccuname); + } + if ((!$newuser) || ($context eq 'selfcreate')) { %canmodify = &Apache::lonuserutils::can_modify_userinfo($context,$ccdomain, \@userinfo,$rolesarray); - } elsif ($context eq 'selfcreate') { - %canmodify = &selfcreate_canmodify($context,$ccdomain,\@userinfo, - $inst_results,$rolesarray); } my %lt=&Apache::lonlocal::texthash( 'pd' => "Personal Data", @@ -1448,7 +1456,7 @@ sub personal_data_display { $row .= ''.$inst_results->{$item}; } else { if ($context eq 'selfcreate') { - if ($canmodify{$item}) { + if ($canmodify{$item}) { $row .= ''; $editable ++; } else { @@ -1498,21 +1506,6 @@ 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 { my ($insthashref) = @_; my @inststatuses = (); @@ -3407,32 +3400,14 @@ function getIndexByName(item) { return -1; } ENDSCRIPT - my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; - my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; - my $output = ''."\n". - '

'.$lt->{'selfenroll'}.'

'."\n"; - my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum); - if (ref($visactions) eq 'HASH') { - if ($visible) { - $output .= '

'.$visactions->{'vis'}.'

'; - } else { - $output .= $visactions->{'miss'}.'
'.$visactions->{'yous'}. - '

'.$visactions->{'gen'}.'
'.$visactions->{'coca'}; - if (ref($vismsgs) eq 'ARRAY') { - $output .= '
'.$visactions->{'make'}.'

'; - } - $output .= '

'; - } - } - $output .= '
'."\n". - &Apache::lonhtmlcommon::start_pick_box(); + '

'.$lt->{'selfenroll'}.'

'."\n". + ''."\n". + &Apache::lonhtmlcommon::start_pick_box(); + my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; + my $cnum = $env{'course.'.$env{'request.course.id'},'.num'}; if (ref($row) eq 'ARRAY') { foreach my $item (@{$row}) { my $title = $item; @@ -3584,128 +3559,6 @@ ENDSCRIPT 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.','',''); - $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.','',''); - $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','',''); - 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 { my ($newdom,$num) = @_; my $domdesc = &Apache::lonnet::domain($newdom); @@ -3745,14 +3598,13 @@ sub selfenroll_inst_types { $output .= ''; } if (defined($usertypes->{$type})) { - my $esc_type = &escape($type); $output .= '