--- loncom/interface/domainprefs.pm 2014/05/04 21:48:56 1.239 +++ loncom/interface/domainprefs.pm 2014/05/05 21:28:10 1.240 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.239 2014/05/04 21:48:56 raeburn Exp $ +# $Id: domainprefs.pm,v 1.240 2014/05/05 21:28:10 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -4081,6 +4081,43 @@ sub print_selfcreation { $$rowtotal ++; } } + my @fields = ('lastname','firstname','middlename','permanentemail','id','inststatus'); + my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); + $fieldtitles{'inststatus'} = &mt('Institutional status'); + my $rem; + my $numperrow = 2; + my $css_class = $$rowtotal%2?' class="LC_odd_row"':''; + $datatable .= ''. + ''.&mt('Shibboleth (SSO) Data').''. + ''."\n". + ''; + } + $datatable .= ''; + } + my $currval; + if (ref($createsettings->{'shibenv'}) eq 'HASH') { + $currval = $createsettings->{'shibenv'}{$fields[$i]}; + } + $datatable .= ''; + } + my $colsleft = $numperrow - $rem; + if ($colsleft > 1 ) { + $datatable .= ''; + } elsif ($colsleft == 1) { + $datatable .= ''; + } + $datatable .= '
'."\n"; + for (my $i=0; $i<@fields; $i++) { + $rem = $i%($numperrow); + if ($rem == 0) { + if ($i > 0) { + $datatable .= '
'. + ''. + ' '. + $fieldtitles{$fields[$i]}.''. + '  
'; + $$rowtotal ++; } elsif ($position eq 'middle') { my %domconf = &Apache::lonnet::get_dom('configuration',['usermodification'],$dom); my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); @@ -4091,7 +4128,7 @@ sub print_selfcreation { foreach my $status (@{$types}) { $datatable .= &modifiable_userdata_row('selfcreate',$status,$domconf{'usermodification'}, $numinrow,$$rowtotal,$usertypes); - $$rowtotal ++; + $$rowtotal ++; } } } else { @@ -4137,8 +4174,8 @@ sub print_selfcreation { $additional .= ''."\n"; ($datatable,$itemcount) = &radiobutton_prefs(\%radiohash,\@toggles,\%defaultchecked, - \%choices,$itemcount,$onclick,$additional); - $$rowtotal += $itemcount; + \%choices,$$rowtotal,$onclick,$additional); + $$rowtotal ++; $datatable .= &print_requestmail($dom,'selfcreation',$createsettings,$rowtotal); $$rowtotal ++; my ($infofields,$infotitles) = &Apache::loncommon::emailusername_info(); @@ -8336,7 +8373,7 @@ sub modify_selfcreation { if (($item eq 'selfcreate') || ($item eq 'statustocreate') || ($item eq 'captcha') || ($item eq 'recaptchakeys') || ($item eq 'emailusername') || ($item eq 'notify') || - ($item eq 'selfcreateprocessing')) { + ($item eq 'selfcreateprocessing') || ($item eq 'shibenv')) { $curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; } else { $save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item}; @@ -8368,6 +8405,7 @@ sub modify_selfcreation { %{$cancreate{'emailusername'}} = (); @{$cancreate{'statustocreate'}} = (); %{$cancreate{'selfcreateprocessing'}} = (); + %{$cancreate{'shibenv'}} = (); my %selfcreatetypes = ( sso => 'users authenticated by institutional single sign on', login => 'users authenticated by institutional log-in', @@ -8485,6 +8523,7 @@ sub modify_selfcreation { } my @fields = ('lastname','firstname','middlename','generation', 'permanentemail','id'); + my @shibfields = (@fields,'inststatus'); my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles(); # # Where usernames may created for institutional log-in and/or institutional single sign on: @@ -8529,6 +8568,27 @@ sub modify_selfcreation { } } } + foreach my $field (@shibfields) { + if ($env{'form.shibenv_'.$field} ne '') { + $cancreate{'shibenv'}{$field} = $env{'form.shibenv_'.$field}; + } + } + if (ref($curr_usercreation{'cancreate'}) eq 'HASH') { + if (ref($curr_usercreation{'cancreate'}{'shibenv'}) eq 'HASH') { + foreach my $field (@shibfields) { + if ($env{'form.shibenv_'.$field} ne $curr_usercreation{'cancreate'}{'shibenv'}{$field}) { + push(@{$changes{'cancreate'}},'shibenv'); + } + } + } else { + foreach my $field (@shibfields) { + if ($env{'form.shibenv_'.$field}) { + push(@{$changes{'cancreate'}},'shibenv'); + last; + } + } + } + } } foreach my $item (@contexts) { if (ref($curr_usercreation{'cancreate'}{$item}) eq 'ARRAY') { @@ -8651,6 +8711,9 @@ sub modify_selfcreation { if (ref($cancreate{'statustocreate'}) eq 'ARRAY') { $save_usercreate{'cancreate'}{'statustocreate'} = $cancreate{'statustocreate'}; } + if (ref($cancreate{'shibenv'}) eq 'HASH') { + $save_usercreate{'cancreate'}{'shibenv'} = $cancreate{'shibenv'}; + } $save_usercreate{'cancreate'}{'emailusername'} = $cancreate{'emailusername'}; $save_usercreate{'emailrule'} = \@email_rule; @@ -8693,6 +8756,22 @@ sub modify_selfcreation { } } } + } elsif ($type eq 'shibenv') { + if (keys(%{$cancreate{$type}}) == 0) { + $chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information'); + } else { + $chgtext .= &mt('Shibboleth-autheticated user information set from environment variables, as follows:'). + ''; + } } elsif ($type eq 'statustocreate') { if ((ref($cancreate{'selfcreate'}) eq 'ARRAY') && (ref($cancreate{'statustocreate'}) eq 'ARRAY')) {