signup.gohtml (5787B)
1 {{ define "extra-head" }} 2 <style> 3 #timer_countdown:before { 4 content: "{{ .Data.CaptchaSec }}"; 5 animation: {{ .Data.CaptchaSec }}s 1s forwards timer_countdown_frames; 6 } 7 @keyframes timer_countdown_frames { 8 {{ range .Data.Frames -}}{{ . | css }}{{ end -}} 9 } 10 </style> 11 {{ end }} 12 13 {{ define "content" }} 14 <div id="parent"> 15 <div class="container" id="form_login"> 16 <div class="row"> 17 <div class="col-8 offset-2 col-md-8 offset-md-2 col-sm-8 col-lg-6 offset-lg-3 col-xl-4 offset-xl-4"> 18 <form autocomplete="on" method="post"> 19 <input type="hidden" name="csrf" value="{{ .CSRF }}" /> 20 <input type="hidden" name="captcha_id" value="{{ .Data.CaptchaID }}" /> 21 <input type="hidden" name="captcha_img" value="{{ .Data.CaptchaImg }}" /> 22 <fieldset> 23 <div class="row"> 24 <div class="center-block"> 25 </div> 26 </div> 27 <div class="row"> 28 <div class="col-sm-12 col-md-10 offset-md-1 "> 29 <div class="form-group"> 30 <input class="transparent-input form-control{{ if .Data.Errors.Username }} is-invalid{{ end }}" placeholder="{{ t "Username" . }}" name="username" type="text" value="{{ .Data.Username }}" autofocus /> 31 {{ if .Data.Errors.Username }}<div class="invalid-feedback d-block">{{ .Data.Errors.Username }}</div>{{ end }} 32 </div> 33 <div class="form-group"> 34 <input class="transparent-input form-control{{ if .Data.Errors.Password }} is-invalid{{ end }}" placeholder="{{ t "Password" . }}" name="password" type="password" value="{{ .Data.Password }}" /> 35 {{ if .Data.Errors.Password }}<div class="invalid-feedback d-block">{{ .Data.Errors.Password }}</div>{{ end }} 36 </div> 37 <div class="form-group"> 38 <input class="transparent-input form-control" placeholder="{{ t "Confirm password" . }}" name="repassword" type="password" value="{{ .Data.RePassword }}" /> 39 </div> 40 {{ if .Data.PowEnabled }} 41 <div class="form-group"> 42 <div class="text-center mb-2 bg-label"><a href="/pow-help" target="_blank" rel="noopener noreferrer">Proof of work help</a></div> 43 <input class="transparent-input form-control{{ if .Data.ErrPow }} is-invalid{{ end }}" placeholder="{{ t "Proof of work" . }}" name="pow" type="text" value="{{ .Data.Pow }}" /> 44 {{ if .Data.ErrPow }}<div class="invalid-feedback d-block">{{ .Data.ErrPow }}</div>{{ end }} 45 </div> 46 {{ end }} 47 {{ if not .Data.HasSolvedCaptcha }} 48 <div class="form-group"> 49 <div class="text-center mb-2 bg-label">Captcha expires in <span id="timer_countdown"></span> seconds (<a href="/captcha-help" target="_blank" rel="noopener noreferrer">help</a>)</div> 50 <div class="mb-2 text-center"> 51 <img src="data:image/png;base64,{{ .Data.CaptchaImg }}" alt="captcha" style="background-color: hsl(0, 0%, 90%);" class="captcha-img" /> 52 </div> 53 <input class="transparent-input form-control{{ if .Data.ErrCaptcha }} is-invalid{{ end }}" placeholder="{{ t "Captcha (6 digits)" . }}" name="captcha" type="text" value="{{ .Data.Captcha }}" maxlength="6" autocomplete="off" /> 54 {{ if .Data.ErrCaptcha }}<div class="invalid-feedback d-block">{{ .Data.ErrCaptcha }}</div>{{ end }} 55 </div> 56 {{ else }} 57 <div class="form-group"> 58 <div class="text-center mb-2 bg-label">Captcha is solved (<a href="/captcha-help" target="_blank" rel="noopener noreferrer">help</a>)</div> 59 <div class="mb-2 text-center"> 60 <img src="data:image/png;base64,{{ .Data.CaptchaImg }}" alt="captcha" style="background-color: hsl(0, 0%, 90%);" /> 61 </div> 62 <input class="transparent-input form-control is-valid" name="captcha" type="text" value="{{ .Data.Captcha }}" maxlength="6" autocomplete="off" readonly /> 63 </div> 64 {{ end }} 65 <div class="form-group"> 66 <input type="submit" class="transparent-input btn btn-lg btn-primary btn-block" value="{{ t "Sign up" . }}" /> 67 </div> 68 <div class="form-group"> 69 <a href="/{{ if .Data.Redirect }}?redirect={{ .Data.Redirect }}{{ end }}" class="bg-label link">{{ t "Login" . }}</a> 70 </div> 71 </div> 72 </div> 73 </fieldset> 74 </form> 75 </div> 76 </div> 77 </div> 78 </div> 79 {{ end }}