diff src/nabble/view/naml/register.naml @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/view/naml/register.naml	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,371 @@
+<macro name="start_registration_page" requires="servlet">
+	<n.if.is_submitted_form>
+		<then.process_registration/>
+	</n.if.is_submitted_form>
+
+	<n.html>
+		<head>
+			<n.title.><t>Register to <t.app.root_node.subject/></t></n.title.>
+			<n.registration_stylesheet/>
+		</head>
+		<body>
+			<div class="center-content">
+				<h1 class="weak-color"><t>Register</t></h1>
+				<span class="second-font shaded-bg-color rounded big-title" style="padding:.2em .7em">
+					<n.root_node.subject/>
+				</span>
+
+				<n.handle_registration_errors/>
+
+				<n.form.>
+					<n.nextUrl_field.hidden/>
+					<div style="text-align:left;margin:0 auto">
+						<n.registration_fields/>
+						<div class="weak-color" style="margin-top:1em;text-align:center;">
+							<input type="submit" class="toolbar action-button" value="[t]Register Now[/t]"/>
+						</div>
+					</div>
+				</n.form.>
+			</div>
+		</body>
+	</n.html>
+</macro>
+
+<macro name="registration_stylesheet">
+	<style type="text/css">
+		body { text-align:center; }
+		div.center-content { margin:0px auto; margin-bottom: 3em; }
+		table.field-table { margin:1em auto; border-collapse:collapse; }
+		table.field-table td { vertical-align:middle; }
+		td.column1 {
+			text-align:right;
+			width:7em;
+			white-space:nowrap;
+			padding-right:.3em;
+		}
+		input[type=text],input[type=password] { padding:.4em 0; }
+		div.field-title { margin-top:.1em; white-space:nowrap; }
+		div.field-title { margin-top:.1em; white-space:nowrap; }
+		.important { font-weight:bold }
+		#nabble-captcha { vertical-align:-.8em }
+	</style>
+</macro>
+
+<macro name="process_registration">
+	<n.catch_exception. id="save-block">
+		<n.validate_registration_form/>
+		<n.check_captcha/>
+
+		<n.registration>
+			<user_name><n.user_name_field.value/></user_name>
+			<email><n.email_field.value/></email>
+			<password><n.password_field.value/></password>
+			<next_url><n.nextUrl_field.value/></next_url>
+			<do>
+				<n.send_registration_email
+					email="[n.email_field.value/]"
+					next_url="[n.nextUrl_field.value/]"
+					key="[n.key/]"
+				/>
+				<n.redirect_to.registering_page_path/>
+			</do>
+		</n.registration>
+	</n.catch_exception.>
+</macro>
+
+<macro name="handle_registration_errors">
+	<n.if.is_submitted_form>
+		<then>
+			<n.if.has_exception for="save-block">
+				<then>
+					<n.handle_exception. for="save-block">
+						<div class="error-message important" style="margin:1em;padding:.5em 0">
+							<n.exception. name="user_already_registered">
+								<t>You have already been registered.</t>
+								<a href="[n.forgot_password_path/]"><t>Forgot your password?</t></a>
+							</n.exception.>
+							<n.exception. name="invalid_recaptcha">
+								<t>Please verify that you are not a robot.</t>
+							</n.exception.>
+							<n.exception. name="empty_registration_field">
+								<t>You must fill in all fields below.</t>
+							</n.exception.>
+							<n.exception. name="must_accept_terms_of_use">
+								<t>You must agree to the Terms of Use.</t>
+							</n.exception.>
+							<n.exception. name="invalid_email">
+								<t>Enter a valid email address.</t>
+							</n.exception.>
+							<n.exception. name="passwords_dont_match">
+								<t>The password fields don't match.</t>
+							</n.exception.>
+							<n.exception. name="user_name_already_in_use">
+								<t>This user name is already in use.</t>
+							</n.exception.>
+						</div>
+					</n.handle_exception.>
+				</then>
+			</n.if.has_exception>
+		</then>
+	</n.if.is_submitted_form>
+</macro>
+
+<macro name="registration_fields">
+	<table class="field-table">
+		<tr>
+			<td class="column1"><div class="second-font field-title"><t>User Name</t></div></td>
+			<td>
+				<n.user_name_field.input type="text" size="35" maxlength="30"/>
+				<n.user_name_field.highlight_if_empty/>
+			</td>
+		</tr>
+		<tr>
+			<td class="column1"><div class="second-font field-title"><t>Email</t></div></td>
+			<td>
+				<n.email_field.input type="text" size="35" maxlength="60"/>
+				<n.email_field.highlight_if_empty/>
+			</td>
+		</tr>
+		<tr>
+			<td></td>
+			<td class="weak-color" style="margin-top:1em;font-size:80%;padding-bottom:1em">
+				<t>You will receive an email with a link to activate your account.</t>
+			</td>
+		</tr>
+		<tr>
+			<td class="column1"><div class="second-font field-title"><t>Password</t></div></td>
+			<td>
+				<n.password_field.input type="password" size="15" maxlength="15"/>
+				<n.password_field.highlight_if_empty/>
+			</td>
+		</tr>
+		<tr>
+			<td class="column1"><div class="second-font field-title"><t>Confirm Password</t></div></td>
+			<td>
+				<n.password2_field.input type="password" size="15" maxlength="15"/>
+				<n.password2_field.highlight_if_empty/>
+			</td>
+		</tr>
+		<tr>
+			<td class="column1" style="padding-top:.5em">
+				<n.accept_terms_field.checkbox/>
+			</td>
+			<td class="nowrap" style="padding-top:.5em">
+				<label for="accept_terms"><t>I have read and I agree to Nabble's <n.terms_link.>Terms of Use</n.terms_link.>.</t></label>
+			</td>
+		</tr>
+		<tr>
+			<td></td>
+			<td style="padding-top:.5em">
+				<n.captcha_control/>
+			</td>
+		</tr>
+	</table>
+</macro>
+
+<macro name="validate_registration_form">
+	<n.user_name_field.notify_if_empty/>
+	<n.email_field.notify_if_empty/>
+	<n.password_field.notify_if_empty/>
+	<n.password2_field.notify_if_empty/>
+
+	<n.if.not.equal value1="[n.password_field.value/]" value2="[n.password2_field.value/]">
+		<then.throw_template_exception name="passwords_dont_match"/>
+	</n.if.not.equal>
+
+	<n.if.not.accept_terms_field.is_checked>
+		<then.throw_template_exception name="must_accept_terms_of_use"/>
+	</n.if.not.accept_terms_field.is_checked>
+</macro>
+
+<macro name="notify_if_empty" requires="field">
+	<n.if.is_empty.value>
+		<then.throw_template_exception name="empty_registration_field"/>
+	</n.if.is_empty.value>
+</macro>
+
+<macro name="highlight_if_empty" requires="field">
+	<n.if.both condition1="[n.is_submitted_form/]" condition2="[n.is_empty.value/]">
+		<then><span class="important"><t>required</t></span></then>
+	</n.if.both>
+</macro>
+
+<macro name="accept_terms_field" dot_parameter="do">
+	<n.field. name="accept_terms"><n.do/></n.field.>
+</macro>
+
+<macro name="user_name_field" dot_parameter="do">
+	<n.field. name="user_name"><n.do/></n.field.>
+</macro>
+
+<macro name="password2_field" dot_parameter="do">
+	<n.field. name="password2"><n.do/></n.field.>
+</macro>
+
+<macro name="registering_page" requires="servlet">
+	<n.html>
+		<head>
+			<n.title.><t>Registering...</t></n.title.>
+			<style type="text/css">
+				body { text-align:center; }
+				div.center-content { margin:0px auto; margin-bottom: 3em; }
+			</style>
+		</head>
+		<body>
+			<div class="center-content">
+				<h1 class="weak-color"><t>Registering...</t></h1>
+				<p><t>An email has been sent to you.</t></p>
+				<p><t>Please follow the instructions in the email to complete the registration process.</t></p>
+				<n.show_email_warning/>
+			</div>
+		</body>
+	</n.html>
+</macro>
+
+<macro name="registering_page_path">
+	<n.encode_url.>
+		/template/NamlServlet.jtp?macro=registering_page
+	</n.encode_url.>
+</macro>
+
+<macro name="show_email_warning" requires="servlet">
+	<div class="info-message" style="padding: .45em;margin: 1em 0">
+		<t>If you are not receiving emails from Nabble, please check your <b>spam</b> folder.</t>
+	</div>
+</macro>
+
+
+<macro name="finish_registration_page" requires="servlet">
+	<n.html>
+		<head>
+			<n.title.><t>Registration Confirmed</t></n.title.>
+		</head>
+		<body>
+			<n.set_local_user.get_user_from_email email="[n.email_field.value/]" />
+			<n.if.both condition1="[n.not.is_null.local_user/]" condition2="[n.local_user.is_registered/]">
+				<then>
+					<h1><t>Registration Confirmed</t></h1>
+					<p><t>You have already been registered.</t></p>
+				</then>
+				<else>
+					<n.save_registration/>
+				</else>
+			</n.if.both>
+		</body>
+	</n.html>
+</macro>
+
+<macro name="save_registration">
+	<n.catch_exception. id="save-block">
+		<n.set_local_user.get_registration registration_key="[n.get_parameter name='key'/]" email="[n.email_field.value/]" />
+		<n.if.is_null.local_user>
+			<then>
+				<h1><t>Registration Failed</t></h1>
+				<p><t>Please make sure you are using the same browser that you used to fill in the registration request.</t></p>
+				<p><t>You can try <n.register_link.>registering again</n.register_link.> or contact <n.support_link/>.</t></p>
+			</then>
+			<else>
+				<n.local_user.register/>
+				<n.set_var. name="next_url">
+					<n.get_next_url_from_registration registration_key="[n.get_parameter name='key'/]" />
+				</n.set_var.>
+
+				<h1><t>Registration Confirmed</t></h1>
+				<p><t>You have been registered to <t.subject.root_node.subject/>.</t></p>
+				<p><a href="[n.var name='next_url'/]"><t>Continue</t></a></p>
+
+				<n.local_user.after_registration/>
+			</else>
+		</n.if.is_null.local_user>
+	</n.catch_exception.>
+	<n.if.has_exception for="save-block">
+		<then>
+			<h1><t>Registration Failed</t></h1>
+			<br />
+			<n.handle_exception. for="save-block">
+				<n.comment.>
+					fill in as needed
+				</n.comment.>
+			</n.handle_exception.>
+		</then>
+	</n.if.has_exception>
+</macro>
+
+<macro name="after_registration" requires="user">
+	<n.comment.>To be overridden</n.comment.>
+</macro>
+
+<macro name="send_registration_email" parameters="email, next_url, key" unindent="true">
+	<n.set_var. name='confirm_url'>
+		<n.remove_spaces.>
+			<n.base_url/>
+			<n.encode_url.>
+				/template/NamlServlet.jtp?macro=finish_registration_page
+				&email=<n.email/>
+				&key=<n.key/>
+				&date=<n.now.raw_time/>
+			</n.encode_url.>
+		</n.remove_spaces.>
+	</n.set_var.>
+	<n.new_email.>
+		<n.send>
+			<to><n.email/></to>
+			<subject><t><t.app.root_node.subject/> Registration</t></subject>
+			<text_part>
+				<t>Dear user,</t>
+
+				<t>Thank you for registering with <t.app.root_node.subject/>!</t>
+
+				*<t>Email Confirmation</t>*
+				<t>Please click on the confirmation link below to activate your account:</t>
+
+				<n.var name='confirm_url'/>
+
+				<t>If you didn't request this email or have no idea why you received it, please ignore it. It might have been a mistake from someone else.</t>
+
+				<t>Sincerely,</t>
+				<n.root_node.subject/>
+				<n.base_url/>
+			</text_part>
+			<aol_part>
+				<t>Dear user,</t>
+
+				<t>Thank you for registering with <t.app.root_node.subject/>!</t>
+
+				*<t>Email Confirmation</t>*
+				<t>Please click on the confirmation link below to activate your account:</t>
+
+				<n.var name='confirm_url'/>
+
+				<t>If you didn't request this email or have no idea why you received it, please ignore it. It might have been a mistake from someone else.</t>
+
+				<t>Sincerely,</t>
+				<n.root_node.subject/>
+				<n.base_url/>
+			</aol_part>
+			<html_part>
+				<t>Dear user,</t><br/>
+				<br/>
+				<t>Thank you for registering with <t.app.root_node.subject/>!</t><br/>
+				<br/>
+				<div style="font-weight:bold;margin-bottom:.25em">
+					<t>Email Confirmation</t>
+				</div>
+				<t>Please click on the confirmation link below to activate your account:</t>
+				<div style="background-color:#FFFADB;border:#EDDD79 solid 1px;margin:1.2em 0;padding:.5em">
+					<a href="[n.var name='confirm_url'/]"><n.var name='confirm_url'/></a>
+				</div>
+				<div style="margin:.3em 0 1.2em">
+					<t>If you didn't request this email or have no idea why you received it, please ignore it.
+						It might have been a mistake from someone else.</t>
+				</div>
+				<t>Sincerely,</t><br/>
+				<n.root_node.subject/><br/>
+				<a href="[n.base_url/]"><n.base_url/></a>
+				<div style="margin:1.5em 0;color:#666666;font: 11px tahoma,geneva,helvetica,arial,sans-serif;">
+					<n.macro_viewer_email_link macro="send_registration_email"/>
+				</div>
+			</html_part>
+		</n.send>
+	</n.new_email.>
+</macro>