1 {% extends
"../base.html" %}
3 {% block title %}{{ _(
"Register") }}{% end block %}
6 <div class=
"row justify-content-center my-5">
7 <div class=
"col col-md-6">
8 <h4 class=
"mb-4">{{ _(
"Register A New Account") }}
</h4>
11 {{ _(
"Become a part of our community by registering an account!") }}
14 <form id=
"form-register" action=
"" method=
"POST">
15 {% raw xsrf_form_html() %}
17 <input type=
"hidden" name=
"next" value=
"{{ next or "" }}">
19 <div class=
"form-group">
20 <div class=
"input-group">
21 <div class=
"input-group-prepend">
22 <span class=
"input-group-text">@
</span>
24 <input type=
"text" class=
"form-control form-control-lg"
25 name=
"uid" placeholder=
"{{ _("Username
") }}" required autofocus
26 pattern=
"[a-z_][a-z0-9_-]{3,31}">
28 <div id=
"uid-invalid" class=
"invalid-feedback invalid-feedback-uid">
29 {{ _(
"Please choose a username in UNIX format with at least four characters, starting with a lowercase letter, followed by only lowercase letters, digits, dash and underscore") }}
31 <div id=
"uid-taken" class=
"invalid-feedback invalid-feedback-uid">
32 {{ _(
"This username is not available") }}
36 <div class=
"form-row mb-3">
38 <label>{{ _(
"First Name") }}
</label>
40 <input type=
"text" class=
"form-control" name=
"first_name"
41 placeholder=
"{{ _("First Name
") }}" required
>
45 <label>{{ _(
"Last Name") }}
</label>
47 <input type=
"text" class=
"form-control" name=
"last_name"
48 placeholder=
"{{ _("Last Name
") }}" required
>
52 <div class=
"form-group">
53 <input type=
"email" class=
"form-control"
54 name=
"email" placeholder=
"{{ _("Email Address
") }}" required
>
55 <div id=
"email-invalid" class=
"invalid-feedback invalid-feedback-email">
56 {{ _(
"This email address is invalid") }}
58 <div id=
"email-blacklisted" class=
"invalid-feedback invalid-feedback-email">
59 {{ _(
"This email address cannot be used") }}
61 <div id=
"email-taken" class=
"invalid-feedback invalid-feedback-email">
62 {{ _(
"This email address is already in use") }}
66 <button type=
"submit" class=
"btn btn-primary btn-block" disabled
>
74 {% block javascript %}
76 var form = $(
"#form-register");
77 var submit = form.find(
":submit");
79 // Store the valid status
88 form.find(
"input[name=uid]").on(
"keyup", function(e) {
90 clearTimeout(check_uid);
94 check_uid = setTimeout(function() {
95 $.get(
"/api/check/uid", { uid : uid.val() },
98 uid.removeClass(
"is-valid is-invalid");
102 $(
".invalid-feedback-uid").hide();
104 switch (data.result) {
106 uid.addClass(
"is-valid");
111 uid.addClass(
"is-invalid");
112 $(
"#uid-invalid").show();
116 uid.addClass(
"is-invalid");
117 $(
"#uid-taken").show();
121 form.trigger(
"change");
127 form.find(
"input[name=email]").on(
"keyup", function(e) {
129 clearTimeout(check_email);
133 check_email = setTimeout(function() {
134 $.get(
"/api/check/email", { email : email.val() },
137 email.removeClass(
"is-valid is-invalid");
141 $(
".invalid-feedback-email").hide();
143 switch (data.result) {
145 email.addClass(
"is-valid");
150 email.addClass(
"is-invalid");
151 $(
"#email-invalid").show();
155 email.addClass(
"is-invalid");
156 $(
"#email-blacklisted").show();
160 email.addClass(
"is-invalid");
161 $(
"#email-taken").show();
165 form.trigger(
"change");
171 form.on(
"change", function() {
172 var disabled = false;
174 $.each(valid, function(field, status) {
181 submit.prop(
"disabled", disabled);