version 1.60, 2014/02/20 01:00:33
|
version 1.61, 2014/03/03 17:11:41
|
Line 59 sub handler {
|
Line 59 sub handler {
|
my $sso_domain = $r->subprocess_env->get('SSOUserDomain'); |
my $sso_domain = $r->subprocess_env->get('SSOUserDomain'); |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['token','courseid','domain']); |
['token','courseid','domain','type']); |
&Apache::lonacc::get_posted_cgi($r); |
&Apache::lonacc::get_posted_cgi($r); |
&Apache::lonlocal::get_language_handle($r); |
&Apache::lonlocal::get_language_handle($r); |
|
|
Line 240 sub handler {
|
Line 240 sub handler {
|
} |
} |
} elsif ($env{'form.create_with_email'}) { |
} elsif ($env{'form.create_with_email'}) { |
&print_header($r,$start_page,$courseid); |
&print_header($r,$start_page,$courseid); |
|
my $usertype = &get_usertype($domain); |
$output = &process_email_request($env{'form.uname'},$domain,$domdesc, |
$output = &process_email_request($env{'form.uname'},$domain,$domdesc, |
$contact_name,$contact_email,$cancreate, |
$contact_name,$contact_email,$cancreate, |
$lonhost,$domconfig{'usercreation'}, |
$lonhost,$domconfig{'usercreation'}, |
$emailusername,$courseid); |
$emailusername,$courseid,$usertype); |
} elsif (!$token) { |
} elsif (!$token) { |
&print_header($r,$start_page,$courseid); |
&print_header($r,$start_page,$courseid); |
my $now=time; |
my $now=time; |
Line 261 sub handler {
|
Line 262 sub handler {
|
if (grep(/^email(|approval)$/,@{$cancreate})) { |
if (grep(/^email(|approval)$/,@{$cancreate})) { |
$r->print(&javascript_validmail()); |
$r->print(&javascript_validmail()); |
} |
} |
|
my $usertype = &get_usertype($domain); |
$output = &print_username_form($r,$domain,$domdesc,$cancreate,$now,$lonhost, |
$output = &print_username_form($r,$domain,$domdesc,$cancreate,$now,$lonhost, |
$include,$courseid,$gotlondes,$emailusername); |
$include,$courseid,$gotlondes,$emailusername, |
|
$usertype); |
} |
} |
$r->print($output); |
$r->print($output); |
&print_footer($r); |
&print_footer($r); |
Line 298 sub print_footer {
|
Line 301 sub print_footer {
|
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |
} |
} |
|
|
|
sub get_usertype { |
|
my ($domain) = @_; |
|
my $usertype = 'default'; |
|
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($domain); |
|
if (ref($types) eq 'ARRAY') { |
|
push(@{$types},'default'); |
|
my $posstype = $env{'form.type'}; |
|
$posstype =~ s/^\s+|\s$//g; |
|
if (grep(/^\Q$posstype\E$/,@{$types})) { |
|
$usertype = $posstype; |
|
} |
|
} |
|
return $usertype; |
|
} |
|
|
sub selfenroll_crumbs { |
sub selfenroll_crumbs { |
my ($r,$courseid,$desc) = @_; |
my ($r,$courseid,$desc) = @_; |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
Line 322 sub selfenroll_crumbs {
|
Line 340 sub selfenroll_crumbs {
|
} |
} |
|
|
sub javascript_setforms { |
sub javascript_setforms { |
my ($now,$emailusername,$captcha) = @_; |
my ($now,$emailusername,$captcha,$usertype) = @_; |
my $setuserinfo; |
my ($setuserinfo,@required,$requiredchk); |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $key (sort(keys(%{$emailusername}))) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
$setuserinfo .= ' server.elements.'.$key.'.value=client.elements.'.$key.'.value;'."\n"; |
foreach my $key (sort(keys(%{$emailusername->{$usertype}}))) { |
|
if ($emailusername->{$usertype}{$key} eq 'required') { |
|
push(@required,$key); |
|
} |
|
$setuserinfo .= ' server.elements.'.$key.'.value=client.elements.'.$key.'.value;'."\n"; |
|
} |
|
$setuserinfo .= ' server.elements.type.value=client.elements.type.value;'."\n"; |
} |
} |
if ($captcha eq 'original') { |
if ($captcha eq 'original') { |
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
$setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". |
' server.elements.crypt.value=client.elements.crypt.value;'."\n"; |
' server.elements.crypt.value=client.elements.crypt.value;'."\n"; |
} elsif ($captcha eq 'recaptcha') { |
} elsif ($captcha eq 'recaptcha') { |
$setuserinfo .= ' server.elements.recaptcha_challenge_field.value=client.elements.recaptcha_challenge_field.value;'."\n". |
$setuserinfo .= |
' server.elements.recaptcha_response_field.value=client.elements.recaptcha_response_field.value;'."\n"; |
' server.elements.recaptcha_challenge_field.value=client.elements.recaptcha_challenge_field.value;'."\n". |
|
' server.elements.recaptcha_response_field.value=client.elements.recaptcha_response_field.value;'."\n"; |
} |
} |
} |
} |
|
if (@required) { |
|
my $missprompt = &mt('One or more required fields are currently blank.'); |
|
my $reqstr = join("','",@required); |
|
$requiredchk = <<"ENDCHK"; |
|
var requiredfields = new Array('$reqstr'); |
|
missing = 0; |
|
for (var i=0; i<requiredfields.length; i++) { |
|
try { |
|
eval("client.elements."+requiredfields[i]+".value"); |
|
} |
|
catch(err) { |
|
continue; |
|
} |
|
if (eval("client.elements."+requiredfields[i]+".value") == '') { |
|
missing ++; |
|
} |
|
} |
|
if (missing > 0) { |
|
alert("$missprompt"); |
|
return false; |
|
} |
|
|
|
ENDCHK |
|
} |
my $js = <<ENDSCRIPT; |
my $js = <<ENDSCRIPT; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
Line 346 sub javascript_setforms {
|
Line 395 sub javascript_setforms {
|
server = document.forms[one]; |
server = document.forms[one]; |
if (document.forms[two]) { |
if (document.forms[two]) { |
client = document.forms[two]; |
client = document.forms[two]; |
|
$requiredchk |
server.elements.uname.value = client.elements.uname.value; |
server.elements.uname.value = client.elements.uname.value; |
server.elements.udom.value = client.elements.udom.value; |
server.elements.udom.value = client.elements.udom.value; |
|
|
Line 359 sub javascript_setforms {
|
Line 409 sub javascript_setforms {
|
client.elements.uname.value=''; |
client.elements.uname.value=''; |
client.elements.upass$now.value=''; |
client.elements.upass$now.value=''; |
if (context == 'email') { |
if (context == 'email') { |
$setuserinfo |
$setuserinfo |
client.elements.upasscheck$now.value=''; |
client.elements.upasscheck$now.value=''; |
} |
} |
server.submit(); |
server.submit(); |
Line 433 ENDSCRIPT
|
Line 483 ENDSCRIPT
|
} |
} |
|
|
sub print_username_form { |
sub print_username_form { |
my ($r,$domain,$domdesc,$cancreate,$now,$lonhost,$include,$courseid,$gotlondes,$emailusername) = @_; |
my ($r,$domain,$domdesc,$cancreate,$now,$lonhost,$include,$courseid,$gotlondes,$emailusername, |
|
$usertype) = @_; |
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
unam => 'username', |
unam => 'username', |
udom => 'domain', |
udom => 'domain', |
Line 481 sub print_username_form {
|
Line 532 sub print_username_form {
|
} else { |
} else { |
my $prompt = $lt{'plse'}; |
my $prompt = $lt{'plse'}; |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $key (keys(%{$emailusername})) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
if ($emailusername->{$key}) { |
if (keys(%{$emailusername->{$usertype}}) > 0) { |
$prompt = $lt{'info'}; |
$prompt = $lt{'info'}; |
last; |
|
} |
} |
} |
} |
} |
} |
Line 492 sub print_username_form {
|
Line 542 sub print_username_form {
|
$lt{'yopw'}.'<br />'; |
$lt{'yopw'}.'<br />'; |
} |
} |
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform, |
$output .= &print_dataentry_form($r,$domain,$lonhost,$include,$now,$captchaform, |
$courseid,$gotlondes,$emailusername,$captcha); |
$courseid,$gotlondes,$emailusername,$captcha, |
|
$usertype); |
} |
} |
$output .= '</div>'; |
$output .= '</div>'; |
} |
} |
Line 558 sub login_box {
|
Line 609 sub login_box {
|
|
|
sub process_email_request { |
sub process_email_request { |
my ($useremail,$domain,$domdesc,$contact_name,$contact_email,$cancreate, |
my ($useremail,$domain,$domdesc,$contact_name,$contact_email,$cancreate, |
$server,$settings,$emailusername,$courseid) = @_; |
$server,$settings,$emailusername,$courseid,$usertype) = @_; |
my $output; |
my $output; |
if (ref($cancreate) eq 'ARRAY') { |
if (ref($cancreate) eq 'ARRAY') { |
if (!grep(/^email(|approval)$/,@{$cancreate})) { |
if (!grep(/^email(|approval)$/,@{$cancreate})) { |
Line 612 sub process_email_request {
|
Line 663 sub process_email_request {
|
} |
} |
} |
} |
$output = &send_token($domain,$useremail,$server,$domdesc,$contact_name, |
$output = &send_token($domain,$useremail,$server,$domdesc,$contact_name, |
$contact_email,$courseid,$emailusername); |
$contact_email,$courseid,$emailusername,$usertype); |
} |
} |
return $output; |
return $output; |
} |
} |
Line 632 sub call_rulecheck {
|
Line 683 sub call_rulecheck {
|
} |
} |
|
|
sub send_token { |
sub send_token { |
my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid,$emailusername) = @_; |
my ($domain,$email,$server,$domdesc,$contact_name,$contact_email,$courseid,$emailusername, |
|
$usertype) = @_; |
my $msg = '<h3>'.&mt('Account creation status').'</h3>'. |
my $msg = '<h3>'.&mt('Account creation status').'</h3>'. |
&mt('Thank you for your request to create a new LON-CAPA account.'). |
&mt('Thank you for your request to create a new LON-CAPA account.'). |
'<br /><br />'; |
'<br /><br />'; |
Line 660 sub send_token {
|
Line 712 sub send_token {
|
'tmpinfo' => $tmpinfo); |
'tmpinfo' => $tmpinfo); |
|
|
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $item (keys(%{$emailusername})) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
$info{$item} = $env{'form.'.$item}; |
foreach my $item (keys(%{$emailusername->{$usertype}})) { |
$info{$item} =~ s/(`)//g; |
$info{$item} = $env{'form.'.$item}; |
|
$info{$item} =~ s/(`)//g; |
|
} |
|
unless ($usertype eq 'default') { |
|
$info{'inststatus'} = $usertype; |
|
} |
} |
} |
} |
} |
my $token = &Apache::lonnet::tmpput(\%info,$server,'createaccount'); |
my $token = &Apache::lonnet::tmpput(\%info,$server,'createaccount'); |
Line 789 sub start_session {
|
Line 846 sub start_session {
|
# Stores token to store DES-key and stage during creation session |
# Stores token to store DES-key and stage during creation session |
# |
# |
sub print_dataentry_form { |
sub print_dataentry_form { |
my ($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$gotlondes,$emailusername,$captcha) = @_; |
my ($r,$domain,$lonhost,$include,$now,$captchaform,$courseid,$gotlondes,$emailusername,$captcha, |
|
$usertype) = @_; |
my ($error,$output); |
my ($error,$output); |
unless ($gotlondes) { |
unless ($gotlondes) { |
if (open(my $jsh,"<$include/londes.js")) { |
if (open(my $jsh,"<$include/londes.js")) { |
Line 797 sub print_dataentry_form {
|
Line 855 sub print_dataentry_form {
|
$r->print($line); |
$r->print($line); |
} |
} |
close($jsh); |
close($jsh); |
$output = &javascript_setforms($now,$emailusername,$captcha)."\n"; |
$output = &javascript_setforms($now,$emailusername,$captcha,$usertype)."\n"; |
$gotlondes = 1; |
$gotlondes = 1; |
} |
} |
} |
} |
Line 813 sub print_dataentry_form {
|
Line 871 sub print_dataentry_form {
|
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
$output .= '<input type="hidden" name="courseid" value="'.$courseid.'"/>'."\n"; |
} |
} |
if (ref($emailusername) eq 'HASH') { |
if (ref($emailusername) eq 'HASH') { |
foreach my $field (sort(keys(%{$emailusername}))) { |
if (ref($emailusername->{$usertype}) eq 'HASH') { |
$output .= '<input type="hidden" name="'.$field.'" value="" />'."\n"; |
foreach my $field (sort(keys(%{$emailusername->{$usertype}}))) { |
|
$output .= '<input type="hidden" name="'.$field.'" value="" />'."\n"; |
|
} |
|
$output .= '<input type="hidden" name="type" value="" />'."\n"; |
} |
} |
} |
} |
if ($captcha eq 'original') { |
if ($captcha eq 'original') { |
Line 843 ENDSERVERFORM
|
Line 904 ENDSERVERFORM
|
my $endclientform = '<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
my $endclientform = '<input type="hidden" name="udom" value="'.$domain.'" />'."\n". |
'<input type="hidden" name="lextkey" value="'.$lextkey.'" />'."\n". |
'<input type="hidden" name="lextkey" value="'.$lextkey.'" />'."\n". |
'<input type="hidden" name="uextkey" value="'.$uextkey.'" />'."\n". |
'<input type="hidden" name="uextkey" value="'.$uextkey.'" />'."\n". |
'</form>'; |
'</form>'."\n". |
|
'<p class="LC_info">'.&mt('Fields marked [_1]*[_2] are required.','<b>','</b>').'</p>'; |
my ($datatable,$rowcount) = |
my ($datatable,$rowcount) = |
&Apache::loncreateuser::personal_data_display('',$domain,'email','selfcreate', |
&Apache::loncreateuser::personal_data_display('',$domain,'email','selfcreate', |
'','',$now,$captchaform, |
'','',$now,$captchaform, |
$emailusername); |
$emailusername,$usertype); |
if ($rowcount) { |
if ($rowcount) { |
$output .= '<div class="LC_left_float">'.$beginclientform.$datatable.$endclientform; |
$output .= '<div class="LC_left_float">'.$beginclientform.$datatable.$endclientform; |
} else { |
} else { |
Line 919 sub create_account {
|
Line 981 sub create_account {
|
my $output; |
my $output; |
if (ref($dataref) eq 'HASH') { |
if (ref($dataref) eq 'HASH') { |
my ($username,$encpass,$serverid,$courseid,$id,$firstname,$middlename,$lastname, |
my ($username,$encpass,$serverid,$courseid,$id,$firstname,$middlename,$lastname, |
$generation); |
$generation,$inststatus); |
$username = $dataref->{'username'}; |
$username = $dataref->{'username'}; |
$encpass = $dataref->{'upass'}; |
$encpass = $dataref->{'upass'}; |
$serverid = $dataref->{'serverid'}; |
$serverid = $dataref->{'serverid'}; |
Line 929 sub create_account {
|
Line 991 sub create_account {
|
$middlename = $dataref->{'middlename'}; |
$middlename = $dataref->{'middlename'}; |
$lastname = $dataref->{'lastname'}; |
$lastname = $dataref->{'lastname'}; |
$generation = $dataref->{'generation'}; |
$generation = $dataref->{'generation'}; |
|
$inststatus = $dataref->{'usertype'}; |
|
|
my $currhome = &Apache::lonnet::homeserver($username,$domain); |
my $currhome = &Apache::lonnet::homeserver($username,$domain); |
unless ($currhome eq 'no_host') { |
unless ($currhome eq 'no_host') { |
Line 967 sub create_account {
|
Line 1030 sub create_account {
|
# Now that the user account exists, retrieve the homeserver, and include it in the output. |
# Now that the user account exists, retrieve the homeserver, and include it in the output. |
|
|
my $uhome = &Apache::lonnet::homeserver($username,$domain); |
my $uhome = &Apache::lonnet::homeserver($username,$domain); |
|
unless (($inststatus eq 'default') || ($inststatus eq '')) { |
|
&Apache::lonnet::put('environment',{inststatus => $inststatus},$domain,$username); |
|
} |
$output .= '<br />'.&mt('Home server: [_1]',$uhome).' '. |
$output .= '<br />'.&mt('Home server: [_1]',$uhome).' '. |
&Apache::lonnet::hostname($uhome).'<br /><br />'; |
&Apache::lonnet::hostname($uhome).'<br /><br />'; |
return ('ok',$output,$uhome); |
return ('ok',$output,$uhome); |