Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Issue 3234 | Add landmarks #303

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/index.jade
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ html(ng-app='accounts', xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lan
.img
ui-view.view-container

div(ui-view="footer", ng-controller="FooterController as vm", ng-hide="hideCommonFooter", role="region" aria-label="Footer")
div(ui-view="footer", ng-controller="FooterController as vm", ng-hide="hideCommonFooter", role="contentinfo" aria-label="Footer")
.account-footer
a.privacy-policy(ng-href="https://www.topcoder.com/community/how-it-works/privacy-policy/", target="_blank")
| Privacy Policy
Expand Down
1 change: 1 addition & 0 deletions app/styles/tc/account.scss
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
width: 380px;
font-size: 20px;
line-height: 30px;
margin: 0 auto;
margin-bottom: 40px;
margin-top: 39px;
text-transform: uppercase;
Expand Down
101 changes: 51 additions & 50 deletions app/views/tc/login.jade
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,57 @@
- var logoSso = require("../../images/tc/sso.svg")

.login-container
header
header(role="banner")
a.logo-link(href="/", title="Back to the home page")
img(src=logoMobile, alt="Topcoder Logo")

h1 LOG IN TO TOPCODER

form(name="vm.loginForm", role="form", ng-submit="vm.loginForm.$valid && vm.login()", novalidate)
.form-errors(ng-messages="vm.loginErrors")
p.form-error(ng-message="USERNAME_NONEXISTANT" role="alert") We couldn't find a member with that {{vm.emailOrUsername || "username"}}. Please check that you entered it correctly.

p.form-error(ng-message="WRONG_PASSWORD" role="alert") That password is incorrect. Please check that you entered the right one.

p.form-error(ng-message="SOCIAL_LOGIN_ERROR" role="alert") User with that profile is not registered.

div.validation-bar(ng-class="{'error-bar': vm.loginErrors.USERNAME_NONEXISTANT}")
label(for="username") USERNAME OR EMAIL
input(ng-model="vm.username", id="username", placeholder="Username or Email", type="text", required, aria-invalid="false")

toggle-password

p.problem-signin
a.forgot-password(href="{{vm.forgotPasswordUrl}}", aria-label="forgot password") Forgot your password?

button.tc-btn.tc-btn-wide(type="submit", ng-disabled="vm.loginForm.$invalid || vm.loading") Log In

section.login-options
p.tc-separator
span Or Log in With

ul.networks
li.network.github()
a.ico(ng-click="vm.socialLogin('github')", tabIndex="0", href="#", title="Login with GitHub")
img(src=logoGithub, alt="Github Logo")
span Github
li.network.google-plus()
a.ico(ng-click="vm.socialLogin('google-oauth2')", tabIndex="0", href="#", title="Login with Google")
img(src=logoGooglePlus, alt="Google Logo")
span Google
li.network.facebook()
a.ico(ng-click="vm.socialLogin('facebook')", tabIndex="0", href="#", title="Login with Facebook")
img(src=logoFacebook, alt="Facebook Logo")
span Facebook
li.network.twitter()
a.ico(ng-click="vm.socialLogin('twitter')", tabIndex="0", href="#", title="Login with Twitter")
img(src=logoTwitter, alt="Twitter Logo")
span Twitter
li.network.sso()
a.ico(ui-sref="SSO_LOGIN({app:'member',retUrl:vm.$stateParams.retUrl})", tabIndex="0", href="#", title="Login with Single Sign On")
img(src=logoSso, alt="Single Sign On Logo")
span Single Sign On

p.join-topcoder Not a member yet?  

main
h1 LOG IN TO TOPCODER

form(name="vm.loginForm", role="form", ng-submit="vm.loginForm.$valid && vm.login()", novalidate)
.form-errors(ng-messages="vm.loginErrors")
p.form-error(ng-message="USERNAME_NONEXISTANT" role="alert") We couldn't find a member with that {{vm.emailOrUsername || "username"}}. Please check that you entered it correctly.

p.form-error(ng-message="WRONG_PASSWORD" role="alert") That password is incorrect. Please check that you entered the right one.

p.form-error(ng-message="SOCIAL_LOGIN_ERROR" role="alert") User with that profile is not registered.

div.validation-bar(ng-class="{'error-bar': vm.loginErrors.USERNAME_NONEXISTANT}")
label(for="username") USERNAME OR EMAIL
input(ng-model="vm.username", id="username", placeholder="Username or Email", type="text", required, aria-invalid="false")

toggle-password

p.problem-signin
a.forgot-password(href="{{vm.forgotPasswordUrl}}", aria-label="forgot password") Forgot your password?

button.tc-btn.tc-btn-wide(type="submit", ng-disabled="vm.loginForm.$invalid || vm.loading") Log In

section.login-options
p.tc-separator
span Or Log in With

ul.networks
li.network.github()
a.ico(ng-click="vm.socialLogin('github')", tabIndex="0", href="#", title="Login with GitHub")
img(src=logoGithub, alt="Github Logo")
span Github
li.network.google-plus()
a.ico(ng-click="vm.socialLogin('google-oauth2')", tabIndex="0", href="#", title="Login with Google")
img(src=logoGooglePlus, alt="Google Logo")
span Google
li.network.facebook()
a.ico(ng-click="vm.socialLogin('facebook')", tabIndex="0", href="#", title="Login with Facebook")
img(src=logoFacebook, alt="Facebook Logo")
span Facebook
li.network.twitter()
a.ico(ng-click="vm.socialLogin('twitter')", tabIndex="0", href="#", title="Login with Twitter")
img(src=logoTwitter, alt="Twitter Logo")
span Twitter
li.network.sso()
a.ico(ui-sref="SSO_LOGIN({app:'member',retUrl:vm.$stateParams.retUrl})", tabIndex="0", href="#", title="Login with Single Sign On")
img(src=logoSso, alt="Single Sign On Logo")
span Single Sign On

p.join-topcoder(role="region") Not a member yet?  
a(href="{{vm.registrationUrl}}") Join Now
159 changes: 80 additions & 79 deletions app/views/tc/register.jade
Original file line number Diff line number Diff line change
Expand Up @@ -4,122 +4,123 @@
- var logoFacebook = require("../../images/tc/facebook.svg")

.register-container
header
header(role="banner")
a.logo-link(href="/")
img(src=logoMobile, alt="Topcoder Logo")
.arrow
//- h1 Join the Topcoder technology community to earn, learn, and connect
h1 Join Topcoder
main
h1 Join Topcoder

form(name="vm.registerForm", role="form", ng-submit="vm.registerForm.$valid && vm.register()", novalidate, autocomplete="off" aria-label="Registration")
label(for="registration") Registration form
// Stops Chrome from autofilling and autocompleting (along with autocomplete="off" on the form)
input(autocomplete="false", name="hidden", type="text", style="display:none;")
form(name="vm.registerForm", role="form", ng-submit="vm.registerForm.$valid && vm.register()", novalidate, autocomplete="off" aria-label="Registration")
label(for="registration") Registration form
// Stops Chrome from autofilling and autocompleting (along with autocomplete="off" on the form)
input(autocomplete="false", name="hidden", type="text", style="display:none;")

p.form-error(ng-show="vm.errMsg" role="alert") {{vm.errMsg}}
p.form-error(ng-show="vm.errMsg" role="alert") {{vm.errMsg}}

.first-last-names
input-sticky-placeholder(sticky-placeholder="First", ng-model="vm.firstname")
label(for="firstname") First Name
input(ng-model="vm.firstname", maxlength="64", id="firstname", name="firstname", placeholder="First Name", type="text", required)
.first-last-names
input-sticky-placeholder(sticky-placeholder="First", ng-model="vm.firstname")
label(for="firstname") First Name
input(ng-model="vm.firstname", maxlength="64", id="firstname", name="firstname", placeholder="First Name", type="text", required)

input-sticky-placeholder(sticky-placeholder="Last", ng-model="vm.lastname")
label(for="lastname") Last Name
input(ng-model="vm.lastname", maxlength="64", id="lastname", name="lastname", placeholder="Last Name", type="text", required)
input-sticky-placeholder(sticky-placeholder="Last", ng-model="vm.lastname")
label(for="lastname") Last Name
input(ng-model="vm.lastname", maxlength="64", id="lastname", name="lastname", placeholder="Last Name", type="text", required)

.country-dropdown#country
label(for="country") Country
angucomplete-alt(
input-name="country",
placeholder="Country",
pause="100",
selected-object="vm.updateCountry",
local-data="vm.countries",
initial-value="vm.countryObj",
search-fields="name",
title-field="name",
match-class="angucomplete-highlight",
field-tabindex="0"
minlength="1"
)
.country-dropdown#country
label(for="country") Country
angucomplete-alt(
input-name="country",
placeholder="Country",
pause="100",
selected-object="vm.updateCountry",
local-data="vm.countries",
initial-value="vm.countryObj",
search-fields="name",
title-field="name",
match-class="angucomplete-highlight",
field-tabindex="0"
minlength="1"
)

.form-input-error(ng-show="vm.registerForm.country.$dirty && !vm.isValidCountry")
p.form-error(ng-show="!vm.isValidCountry" role="alert") Please choose a country from the list
.form-input-error(ng-show="vm.registerForm.country.$dirty && !vm.isValidCountry")
p.form-error(ng-show="!vm.isValidCountry" role="alert") Please choose a country from the list

.section-break
hr
.section-break
hr

.validation-bar(ng-class="{ 'error-bar': (vm.registerForm.username.$error.usernameIsFree || vm.registerForm.username.$error.minlength || vm.registerForm.username.$error.maxlength) }")
input-sticky-placeholder(sticky-placeholder="Username", ng-model="vm.username")
label(for="username") Username
input#username(aria-describedby="tp-help-username", ng-model="vm.username", ng-model-options="{ debounce: {'default': 500} }", ng-focus="vm.usernameTips = true", ng-blur="usernameFocusLoss()", ng-minlength="2", ng-maxlength="15", name="username", placeholder="Username", type="text", username-is-free, required)
.validation-bar(ng-class="{ 'error-bar': (vm.registerForm.username.$error.usernameIsFree || vm.registerForm.username.$error.minlength || vm.registerForm.username.$error.maxlength) }")
input-sticky-placeholder(sticky-placeholder="Username", ng-model="vm.username")
label(for="username") Username
input#username(aria-describedby="tp-help-username", ng-model="vm.username", ng-model-options="{ debounce: {'default': 500} }", ng-focus="vm.usernameTips = true", ng-blur="usernameFocusLoss()", ng-minlength="2", ng-maxlength="15", name="username", placeholder="Username", type="text", username-is-free, required)

.tips.username-tips(id="tp-help-username", role="tooltip", ng-show="vm.usernameTips")
.arrow
h2 Username Tips:
.tips.username-tips(id="tp-help-username", role="tooltip", ng-show="vm.usernameTips")
.arrow
h2 Username Tips:

p Your username will be public
p Your username will be public

p Please choose one that is between 2 and 15 characters
p Please choose one that is between 2 and 15 characters

p It can contain letters, numbers, and these characters: -_.{}[]
p It can contain letters, numbers, and these characters: -_.{}[]

.form-input-error(ng-if="vm.registerForm.username.$dirty && vm.registerForm.username.$invalid", ng-messages="vm.registerForm.username.$error")
p.form-error(ng-message="required" role="alert") Please enter a username.
p.form-error(ng-message="usernameIsFree" role="alert") {{vm.usernameErrorMessage}}
.form-input-error(ng-if="vm.registerForm.username.$dirty && vm.registerForm.username.$invalid", ng-messages="vm.registerForm.username.$error")
p.form-error(ng-message="required" role="alert") Please enter a username.
p.form-error(ng-message="usernameIsFree" role="alert") {{vm.usernameErrorMessage}}

p.form-error(ng-message="minlength" role="alert") That username is not the correct length or format.
p.form-error(ng-message="minlength" role="alert") That username is not the correct length or format.

p.form-error(ng-message="maxlength" role="alert") That username is not the correct length or format.
p.form-error(ng-message="maxlength" role="alert") That username is not the correct length or format.

.validation-bar(ng-class="{ 'error-bar': (vm.registerForm.email.$dirty && vm.registerForm.email.$invalid) }")
input-sticky-placeholder.email(sticky-placeholder="Email", ng-model="vm.email")
label(for="email") Enter Your Email
input#email(aria-describedby="tp-help-email", ng-model="vm.email", ng-model-options="{ debounce: {'default': 500} }", ng-focus="vm.emailTips = true", ng-blur="emailFocusLoss()", name="email", placeholder="Enter Your Email", type="email", valid-email, email-is-available, required, ng-disabled="!!vm.ssoUser")
.validation-bar(ng-class="{ 'error-bar': (vm.registerForm.email.$dirty && vm.registerForm.email.$invalid) }")
input-sticky-placeholder.email(sticky-placeholder="Email", ng-model="vm.email")
label(for="email") Enter Your Email
input#email(aria-describedby="tp-help-email", ng-model="vm.email", ng-model-options="{ debounce: {'default': 500} }", ng-focus="vm.emailTips = true", ng-blur="emailFocusLoss()", name="email", placeholder="Enter Your Email", type="email", valid-email, email-is-available, required, ng-disabled="!!vm.ssoUser")

.tips.email-tips(id="tp-help-email", role="tooltip", ng-show="vm.emailTips")
.arrow
h2 Email Tips:
.tips.email-tips(id="tp-help-email", role="tooltip", ng-show="vm.emailTips")
.arrow
h2 Email Tips:

p Your email address will be private and not shared with anyone.
p Your email address will be private and not shared with anyone.

p We'll occasionally send you emails related to your activities or interests.
p We'll occasionally send you emails related to your activities or interests.

.tips.email-tips(ng-show="vm.ssoForced")
.arrow
h2 Note:
.tips.email-tips(ng-show="vm.ssoForced")
.arrow
h2 Note:

p Your email address will be linked with your Organization account.
p Your email address will be linked with your Organization account.

p Please use Single Sign On when you log in to Topcoder.
p Please use Single Sign On when you log in to Topcoder.

.form-input-error(ng-show="vm.registerForm.email.$dirty && vm.registerForm.email.$invalid", ng-messages="vm.registerForm.email.$error")
p.form-error(ng-message="emailIsAvailable" role="alert") {{vm.emailErrorMessage}}
.form-input-error(ng-show="vm.registerForm.email.$dirty && vm.registerForm.email.$invalid", ng-messages="vm.registerForm.email.$error")
p.form-error(ng-message="emailIsAvailable" role="alert") {{vm.emailErrorMessage}}

p.form-error(ng-message="validEmail" role="alert") {{vm.emailErrorMessage}}
p.form-error(ng-message="validEmail" role="alert") {{vm.emailErrorMessage}}

p.form-error(ng-message="required" role="alert") Please enter an email address.
p.form-error(ng-message="required" role="alert") Please enter an email address.

.validation-bar
label(for="password-input") Password
toggle-password-with-tips(ng-if="!vm.isSocialRegistration && !vm.ssoForced && !vm.ssoUser", placeholder="Create Password")
.validation-bar
label(for="password-input") Password
toggle-password-with-tips(ng-if="!vm.isSocialRegistration && !vm.ssoForced && !vm.ssoUser", placeholder="Create Password")

.tips.password-tips(id="tp-help-password", role="tooltip", ng-show="vm.passwordFocus && !vm.ssoForced")
.arrow
//- h3 Password Tips:
.tips.password-tips(id="tp-help-password", role="tooltip", ng-show="vm.passwordFocus && !vm.ssoForced")
.arrow
//- h3 Password Tips:

H2 Your password must have:
H2 Your password must have:

p(ng-class="{ 'has-length-between-range': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.minlength && !vm.registerForm.password.$error.maxlength && !vm.registerForm.password.$error.required) }") At least 8 characters
p(ng-class="{ 'has-length-between-range': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.minlength && !vm.registerForm.password.$error.maxlength && !vm.registerForm.password.$error.required) }") At least 8 characters

p(ng-class="{ 'has-letter': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.hasLetter) }") At least one letter
p(ng-class="{ 'has-letter': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.hasLetter) }") At least one letter

p(ng-class="{ 'has-symbol-or-number': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.hasSymbolOrNumber) }") At least one number or symbol
p(ng-class="{ 'has-symbol-or-number': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.hasSymbolOrNumber) }") At least one number or symbol

section.terms
p By clicking "Join" you agree to Topcoder's #[a(href="http://www.topcoder.com/community/how-it-works/terms/", target="_blank") Terms] and #[a(href="http://www.topcoder.com/community/how-it-works/privacy-policy/", target="_blank") Privacy Policy]
section.terms
p By clicking "Join" you agree to Topcoder's #[a(href="http://www.topcoder.com/community/how-it-works/terms/", target="_blank") Terms] and #[a(href="http://www.topcoder.com/community/how-it-works/privacy-policy/", target="_blank") Privacy Policy]

button.tc-btn.tc-btn-large(type="submit", tc-busy-button, tc-busy-when="vm.registering", ng-disabled="vm.registerForm.$invalid || vm.registerForm.$pending", tabIndex="0") Join
button.tc-btn.tc-btn-large(type="submit", tc-busy-button, tc-busy-when="vm.registering", ng-disabled="vm.registerForm.$invalid || vm.registerForm.$pending", tabIndex="0") Join

div(role="region" aria-label="Register With")
section.login-options(ng-if="!vm.ssoUser")
Expand Down