--- loncom/interface/createaccount.pm 2014/05/05 22:01:15 1.66 +++ loncom/interface/createaccount.pm 2017/11/16 23:38:40 1.72.2.1 @@ -4,7 +4,7 @@ # kerberos, or SSO) or an e-mail address. Requests to use an e-mail address as # username may be processed automatically, or may be queued for approval. # -# $Id: createaccount.pm,v 1.66 2014/05/05 22:01:15 raeburn Exp $ +# $Id: createaccount.pm,v 1.72.2.1 2017/11/16 23:38:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -277,15 +277,13 @@ sub handler { } elsif (!$token) { &print_header($r,$start_page,$courseid); my $now=time; - my $gotlondes; - if (grep(/^login$/,@{$cancreate})) { - if (open(my $jsh,"<$include/londes.js")) { + if ((grep(/^login$/,@{$cancreate})) && (!grep(/^email$/,@{$cancreate}))) { + if (open(my $jsh,"<","$include/londes.js")) { while(my $line = <$jsh>) { $r->print($line); } close($jsh); $r->print(&javascript_setforms($now)); - $gotlondes = 1; } } if (grep(/^email$/,@{$cancreate})) { @@ -293,8 +291,7 @@ sub handler { } my $usertype = &get_usertype($domain); $output = &print_username_form($r,$domain,$domdesc,$cancreate,$now,$lonhost, - $include,$courseid,$gotlondes,$emailusername, - $usertype); + $include,$courseid,$emailusername,$usertype); } $r->print($output); &print_footer($r); @@ -322,7 +319,7 @@ sub print_footer { $r->print('
'. &Apache::lonhtmlcommon::echo_form_input(['backto','logtoken', 'token','serverid','uname','upass','phase','create_with_email', - 'code','crypt','cfirstname','clastname', + 'code','crypt','cfirstname','clastname','g-recaptcha-response', 'recaptcha_challenge_field','recaptcha_response_field', 'cmiddlename','cgeneration','cpermanentemail','cid']). '
'); @@ -369,7 +366,7 @@ sub selfenroll_crumbs { } sub javascript_setforms { - my ($now,$emailusername,$captcha,$usertype) = @_; + my ($now,$emailusername,$captcha,$usertype,$recaptchaversion) = @_; my ($setuserinfo,@required,$requiredchk); if (ref($emailusername) eq 'HASH') { if (ref($emailusername->{$usertype}) eq 'HASH') { @@ -385,13 +382,16 @@ sub javascript_setforms { $setuserinfo .= ' server.elements.code.value=client.elements.code.value;'."\n". ' server.elements.crypt.value=client.elements.crypt.value;'."\n"; } elsif ($captcha eq 'recaptcha') { - $setuserinfo .= + if ($recaptchaversion ne '2') { + $setuserinfo .= ' 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.'); + &js_escape(\$missprompt); my $reqstr = join("','",@required); $requiredchk = <<"ENDCHK"; var requiredfields = new Array('$reqstr'); @@ -433,7 +433,7 @@ $requiredchk initkeys(); server.elements.upass.value - = crypted(client.elements.upass$now.value); + = getCrypted(client.elements.upass$now.value); client.elements.uname.value=''; client.elements.upass$now.value=''; @@ -446,17 +446,23 @@ $setuserinfo } return false; } + // ]]> ENDSCRIPT + if (($captcha eq 'recaptcha') && ($recaptchaversion eq '2')) { + $js .= "\n".''."\n"; + } return $js; } sub javascript_checkpass { my ($now,$context) = @_; my $nopass = &mt('You must enter a password.'); - my $mismatchpass = &mt('The passwords you entered did not match.').'\\n'. + my $mismatchpass = &mt('The passwords you entered did not match.')."\n". &mt('Please try again.'); + &js_escape(\$nopass); + &js_escape(\$mismatchpass); my $js = <<"ENDSCRIPT";