Removed obsolete labels in user search form
[GitHub/WoltLab/WCF.git] / com.woltlab.wcf / templates / recaptcha.tpl
CommitLineData
96714cab
MS
1{if $recaptchaLegacyMode|empty}
2 {include file='captcha'}
3{else}
ec9e64f0
TD
4 {* No explicit keys were set, use legacy V1 API and WoltLab's OEM keys *}
5 {if RECAPTCHA_PUBLICKEY === '' || RECAPTCHA_PRIVATEKEY === ''}
96714cab
MS
6 <fieldset>
7 <legend><label for="recaptcha_response_field">{lang}wcf.recaptcha.title{/lang}</label></legend>
8 <small>{lang}wcf.recaptcha.description{/lang}</small>
376d7839 9
96714cab
MS
10 <dl class="wide reCaptcha{if $errorField|isset && $errorField == 'recaptchaString'} formError{/if}">
11 {if !$ajaxCaptcha|isset || !$ajaxCaptcha}
12 <script data-relocate="true">
13 //<![CDATA[
14 var RecaptchaOptions = {
15 lang: '{@$recaptchaLanguageCode}',
16 theme : 'custom'
17 }
18 //]]>
19 </script>
20 {/if}
21 <dt class="jsOnly">
22 <label for="recaptcha_response_field">reCAPTCHA</label>
23 </dt>
24 <dd class="jsOnly">
25 <div id="recaptcha_image" class="framed"></div>
26 <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" class="medium marginTop" />
27 {if (($errorType|isset && $errorType|is_array && $errorType[recaptchaString]|isset) || ($errorField|isset && $errorField == 'recaptchaString'))}
28 {if $errorType|is_array && $errorType[recaptchaString]|isset}
29 {assign var='__errorType' value=$errorType[recaptchaString]}
30 {else}
31 {assign var='__errorType' value=$errorType}
32 {/if}
b9f4bd69 33 <small class="innerError">
96714cab
MS
34 {if $__errorType == 'empty'}
35 {lang}wcf.global.form.error.empty{/lang}
36 {else}
37 {lang}wcf.recaptcha.error.recaptchaString.{$__errorType}{/lang}
38 {/if}
b9f4bd69
MS
39 </small>
40 {/if}
96714cab
MS
41 </dd>
42
43 {event name='fields'}
44
45 <dd class="jsOnly">
46 <ul class="buttonList smallButtons">
47 <li><a href="javascript:Recaptcha.reload()" class="button small"><span class="icon icon16 icon-repeat"></span> <span>{lang}wcf.recaptcha.reload{/lang}</span></a></li>
48 <li class="recaptcha_only_if_image"><a href="javascript:Recaptcha.switch_type('audio')" class="button small"><span class="icon icon16 icon-volume-up"></span> <span>{lang}wcf.recaptcha.audio{/lang}</span></a></li>
49 <li class="recaptcha_only_if_audio"><a href="javascript:Recaptcha.switch_type('image')" class="button small"><span class="icon icon16 icon-eye-open"></span> <span>{lang}wcf.recaptcha.image{/lang}</span></a></li>
50 <li><a href="javascript:Recaptcha.showhelp()" class="button small"><span class="icon icon16 icon-question-sign"></span> <span>{lang}wcf.recaptcha.help{/lang}</span></a></li>
51 {event name='buttons'}
52 </ul>
53 </dd>
54
55 {if !$ajaxCaptcha|isset || !$ajaxCaptcha}
2a83aa92 56 <script data-relocate="true" src="//www.google.com/recaptcha/api/challenge?k={$recaptchaPublicKey}"></script>
96714cab
MS
57 <noscript>
58 <dd>
2a83aa92 59 <iframe src="//www.google.com/recaptcha/api/noscript?k={$recaptchaPublicKey}" height="300" width="500" seamless="seamless"></iframe><br />
96714cab
MS
60 <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
61 <input type="hidden" name="recaptcha_response_field" value="manual_challenge" />
62 </dd>
63 {if (($errorType|isset && $errorType|is_array && $errorType[recaptchaString]|isset) || ($errorField|isset && $errorField == 'recaptchaString'))}
64 {if $errorType|is_array && $errorType[recaptchaString]|isset}
65 {assign var='__errorType' value=$errorType[recaptchaString]}
66 {else}
67 {assign var='__errorType' value=$errorType}
68 {/if}
69 <small class="innerError">
70 {if $errorType == 'empty'}
71 {lang}wcf.global.form.error.empty{/lang}
72 {else}
73 {lang}wcf.recaptcha.error.recaptchaString.{$__errorType}{/lang}
74 {/if}
75 </small>
76 {/if}
77 </noscript>
78 {else}
79 <script data-relocate="true">
80 //<![CDATA[
2a83aa92
MS
81 $.getScript('//www.google.com/recaptcha/api/js/recaptcha_ajax.js', function() {
82 Recaptcha.create("{$recaptchaPublicKey}", "recaptcha_image", {
83 lang: '{@$recaptchaLanguageCode}',
84 theme : 'custom'
85 });
86
87 WCF.System.Captcha.addCallback('{$captchaID}', function() {
88 return {
89 recaptcha_challenge_field: Recaptcha.get_challenge(),
90 recaptcha_response_field: Recaptcha.get_response()
91 };
92 });
96714cab
MS
93 });
94 //]]>
95 </script>
96 {/if}
97 </dl>
98 </fieldset>
ec9e64f0
TD
99 {else}
100 <fieldset>
101 <legend>{lang}wcf.recaptcha.title{/lang}</legend>
102 {assign var="recaptchaBucketID" value=true|microtime|sha1}
103 <dl class="{if $errorField|isset && $errorField == 'recaptchaString'}formError{/if}">
104 <dt></dt>
105 <dd>
106 <div id="recaptchaBucket{$recaptchaBucketID}"></div>
107 {if (($errorType|isset && $errorType|is_array && $errorType[recaptchaString]|isset) || ($errorField|isset && $errorField == 'recaptchaString'))}
108 {if $errorType|is_array && $errorType[recaptchaString]|isset}
109 {assign var='__errorType' value=$errorType[recaptchaString]}
110 {else}
111 {assign var='__errorType' value=$errorType}
112 {/if}
113 <small class="innerError">
114 {if $__errorType == 'empty'}
115 {lang}wcf.global.form.error.empty{/lang}
116 {else}
117 {lang}wcf.captcha.recaptchaV2.error.recaptchaString.{$__errorType}{/lang}
118 {/if}
119 </small>
120 {/if}
121 </dd>
122 </dl>
123 <script data-relocate="true">
124 //<![CDATA[
125 if (!WCF.recaptcha) {
126 WCF.recaptcha = {
127 queue: [],
128 callbackCalled: false,
129 mapping: { }
130 };
131
132 // this needs to be in global scope
133 function recaptchaCallback() {
134 var bucket;
135 WCF.recaptcha.callbackCalled = true;
136
137 // clear queue
138 while (bucket = WCF.recaptcha.queue.shift()) {
139 WCF.recaptcha.mapping[bucket] = grecaptcha.render(bucket, {
140 'sitekey' : '{RECAPTCHA_PUBLICKEY|encodeJS}'
141 });
142 }
143 }
144 }
145
146 // add captcha to queue
147 WCF.recaptcha.queue.push('recaptchaBucket{$recaptchaBucketID}');
148
149 // trigger callback immediately, if API already is available
150 if (WCF.recaptcha.callbackCalled) setTimeout(recaptchaCallback, 1);
151
152 {if $ajaxCaptcha|isset && $ajaxCaptcha}
153 WCF.System.Captcha.addCallback('{$captchaID}', function() {
154 return {
155 'g-recaptcha-response': grecaptcha.getResponse(WCF.recaptcha.mapping['recaptchaBucket{$recaptchaBucketID}'])
156 };
157 });
158 {/if}
159
160 // ensure recaptcha API is loaded at most once
161 if (!window.grecaptcha) $.getScript('https://www.google.com/recaptcha/api.js?render=explicit&onload=recaptchaCallback');
162 //]]>
163 </script>
164 </fieldset>
165 {/if}
96714cab 166{/if}