mirror of
https://github.com/PretendoNetwork/website.git
synced 2026-08-21 16:16:10 -05:00
Changes to work with new account server
This commit is contained in:
@@ -1,45 +1,45 @@
|
||||
body.flex.center {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
body footer {
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
body footer .content {
|
||||
border-radius: 0;
|
||||
background-color: transparent;
|
||||
padding: 1em 0;
|
||||
box-shadow: none;
|
||||
width: 30rem;
|
||||
max-width: 100vw;
|
||||
border-radius: 0;
|
||||
background-color: transparent;
|
||||
padding: 1em 0;
|
||||
box-shadow: none;
|
||||
width: 30rem;
|
||||
max-width: 100vw;
|
||||
}
|
||||
|
||||
/* login/register card */
|
||||
.card {
|
||||
background-color: white;
|
||||
box-shadow: 0 3px 10px 0px rgba(0, 0, 0, 0.07);
|
||||
width: 35rem;
|
||||
max-width: 100%;
|
||||
background-color: white;
|
||||
box-shadow: 0 3px 10px 0px rgba(0, 0, 0, 0.07);
|
||||
width: 35rem;
|
||||
max-width: 100%;
|
||||
}
|
||||
.card .content {
|
||||
padding: 0 3em 4em 3em;
|
||||
padding: 0 3em 4em 3em;
|
||||
}
|
||||
.card .head {
|
||||
background-color: #673ab7;
|
||||
color: white;
|
||||
font-size: 1em;
|
||||
font-weight: normal;
|
||||
padding: 1.5em 2em;
|
||||
margin: 0;
|
||||
background-color: #673ab7;
|
||||
color: white;
|
||||
font-size: 1em;
|
||||
font-weight: normal;
|
||||
padding: 1.5em 2em;
|
||||
margin: 0;
|
||||
}
|
||||
.card .content .btnMargin {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin: 3em 0 0 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin: 3em 0 0 0;
|
||||
}
|
||||
.card .content .lowText {
|
||||
text-align: right;
|
||||
color: #707070;
|
||||
text-align: right;
|
||||
color: #707070;
|
||||
}
|
||||
@@ -304,6 +304,11 @@ button, .btn, .btn-alt {
|
||||
padding: .5em 1.5em;
|
||||
}
|
||||
|
||||
button:disabled, .btn:disabled, .btn-alt:disabled {
|
||||
cursor: not-allowed;
|
||||
background: #bbacd6;
|
||||
}
|
||||
|
||||
/* components - profiles */
|
||||
/* profiles */
|
||||
.cardProfiles {
|
||||
@@ -315,24 +320,24 @@ button, .btn, .btn-alt {
|
||||
min-width: 250px;
|
||||
width: 50%;
|
||||
max-width: 550px;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
}
|
||||
.profileIcon {
|
||||
margin-right: 10px;
|
||||
width: 80px; height: 80px;
|
||||
margin-right: 10px;
|
||||
width: 80px; height: 80px;
|
||||
border-radius: 50%;
|
||||
border: 1px solid rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
.profileText {
|
||||
width: calc(100% - 130px);
|
||||
min-width: 200px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
min-width: 200px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
.profileText h2 {
|
||||
margin: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.profileText p {
|
||||
margin-top: 5px;
|
||||
@@ -394,22 +399,22 @@ input[type="text"]:focus, input[type="password"]:focus, textarea:focus {
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: #eea9a9;
|
||||
border-left: 3px solid #d83434;
|
||||
padding: 1em;
|
||||
color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #eea9a9;
|
||||
border-left: 3px solid #d83434;
|
||||
padding: 1em;
|
||||
color: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
.error.hide {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.success {
|
||||
background-color: #9fc983;
|
||||
border-left: 3px solid #337419;
|
||||
padding: 1em;
|
||||
color: rgba(0, 0, 0, 0.7);
|
||||
background-color: #9fc983;
|
||||
border-left: 3px solid #337419;
|
||||
padding: 1em;
|
||||
color: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
.success.hide {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
.input-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.input-container > * {
|
||||
flex: 1;
|
||||
flex: 1;
|
||||
}
|
||||
.input-container > *:first-child {
|
||||
margin-right: 3em;
|
||||
margin-right: 3em;
|
||||
}
|
||||
@media screen and (max-width: 1000px) {
|
||||
.input-container {
|
||||
flex-direction: column;
|
||||
}
|
||||
.input-container {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,33 @@
|
||||
/* home header */
|
||||
|
||||
header {
|
||||
text-align: center;
|
||||
color: white;
|
||||
background: #673db6;
|
||||
padding: 5rem 1rem;
|
||||
text-align: center;
|
||||
color: white;
|
||||
background: #673db6;
|
||||
padding: 5rem 1rem;
|
||||
}
|
||||
header hr {
|
||||
width: 175px;
|
||||
width: 175px;
|
||||
height: 2px;
|
||||
background: white;
|
||||
display: inline-block;
|
||||
border: 0;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
background: white;
|
||||
display: inline-block;
|
||||
border: 0;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
}
|
||||
header h1 {
|
||||
font-size: 3.5em;
|
||||
font-size: 3.5em;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.25em;
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
text-transform: uppercase;
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
header h3 {
|
||||
font-weight: normal;
|
||||
max-width: 80%;
|
||||
display: inline-block;
|
||||
font-size: 1.1rem;
|
||||
font-weight: normal;
|
||||
max-width: 80%;
|
||||
display: inline-block;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* news cards */
|
||||
@@ -35,59 +35,59 @@ header h3 {
|
||||
padding: 20px;
|
||||
border: 1px solid #9474cc; border-radius: 10px;
|
||||
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.07);
|
||||
position: relative;
|
||||
margin-left: 3em;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
position: relative;
|
||||
margin-left: 3em;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.smallCard h3 {
|
||||
font-size: 1.5em;
|
||||
margin: 0;
|
||||
}
|
||||
.smallCard p {
|
||||
flex: 1;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
/* specific */
|
||||
.smallCardWidth {
|
||||
width: 100%;
|
||||
width: 100%;
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1050px) {
|
||||
.bigCard.cont-flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
.bigCard > .flex-item {
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
.smallCardWidth .smallCard {
|
||||
margin-left: 0;
|
||||
margin: 1em;
|
||||
}
|
||||
.bigCard.cont-flex > .cont-flex {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
flex-direction: column;
|
||||
}
|
||||
.bigCard > .flex-item {
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
.smallCardWidth .smallCard {
|
||||
margin-left: 0;
|
||||
margin: 1em;
|
||||
}
|
||||
.bigCard.cont-flex > .cont-flex {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 888px) {
|
||||
.profile {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
min-width: 100%;
|
||||
}
|
||||
.smallCard {
|
||||
width: 100%;
|
||||
max-width: 250px;
|
||||
height: auto;
|
||||
}
|
||||
.bigCard.cont-flex > .cont-flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
header h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
min-width: 100%;
|
||||
}
|
||||
.smallCard {
|
||||
width: 100%;
|
||||
max-width: 250px;
|
||||
height: auto;
|
||||
}
|
||||
.bigCard.cont-flex > .cont-flex {
|
||||
flex-direction: column;
|
||||
}
|
||||
header h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
border: 1px solid rgb(165, 165, 165);
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.07);
|
||||
position: relative;
|
||||
position: relative;
|
||||
margin: .5em;
|
||||
width: calc(50% - 1em );
|
||||
box-sizing: border-box;
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
body .contentWrapper.userPage {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
margin: 10rem 0 7rem 0 !important; /*im sorry, I had to*/
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
margin: 10rem 0 7rem 0 !important; /*im sorry, I had to*/
|
||||
}
|
||||
body footer {
|
||||
padding: 0;
|
||||
box-shadow: 0 -3px 10px 0px rgba(0, 0, 0, 0.07);
|
||||
padding: 0;
|
||||
box-shadow: 0 -3px 10px 0px rgba(0, 0, 0, 0.07);
|
||||
}
|
||||
body footer .content {
|
||||
border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* content card */
|
||||
@@ -17,160 +17,160 @@ body footer .content {
|
||||
background-color: white;
|
||||
box-shadow: 0 3px 10px 0px rgba(0, 0, 0, 0.07);
|
||||
box-sizing: border-box;
|
||||
color: #707070;
|
||||
width: 40rem;
|
||||
max-width: 100vw;
|
||||
padding: 3rem 4rem;
|
||||
color: #707070;
|
||||
width: 40rem;
|
||||
max-width: 100vw;
|
||||
padding: 3rem 4rem;
|
||||
}
|
||||
.infoContainer.hide {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.infoList {
|
||||
display: block;
|
||||
padding: 1em 0;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
margin: 0;
|
||||
display: block;
|
||||
padding: 1em 0;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
margin: 0;
|
||||
}
|
||||
.infoList span {
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
color: #707070;
|
||||
width: 6em;
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
color: #707070;
|
||||
width: 6em;
|
||||
}
|
||||
.infoList + .infoList {
|
||||
border-top: 1px solid #afafaf;
|
||||
border-top: 1px solid #afafaf;
|
||||
}
|
||||
.infoContainer .btn {
|
||||
margin-top: 1em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
.link-margin {
|
||||
margin: 0 1em;
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
/* aside navigation */
|
||||
nav.userNav {
|
||||
padding: 1em 3em 1em 1em;
|
||||
padding: 1em 3em 1em 1em;
|
||||
}
|
||||
nav.userNav .userNavProfile {
|
||||
text-align: center;
|
||||
text-align: center;
|
||||
}
|
||||
nav.userNav .userNavProfile::after {
|
||||
content: "";
|
||||
width: 10em;
|
||||
display: inline-block;
|
||||
height: 1px;
|
||||
background-color: rgba(0, 0, 0, 0.5);;
|
||||
content: "";
|
||||
width: 10em;
|
||||
display: inline-block;
|
||||
height: 1px;
|
||||
background-color: rgba(0, 0, 0, 0.5);;
|
||||
}
|
||||
nav.userNav .userNavProfile img {
|
||||
width: 7em;
|
||||
height: 7em;
|
||||
background-color: white;
|
||||
border: 1px solid rgba(0, 0, 0, 0.5);
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
width: 7em;
|
||||
height: 7em;
|
||||
background-color: white;
|
||||
border: 1px solid rgba(0, 0, 0, 0.5);
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
}
|
||||
nav.userNav .userNavProfile .name {
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
color: #353535;
|
||||
margin: .5em 1em 0 1em;
|
||||
font-size: 1.5em;
|
||||
font-weight: bold;
|
||||
color: #353535;
|
||||
margin: .5em 1em 0 1em;
|
||||
}
|
||||
nav.userNav .links {
|
||||
padding: .7em 0;
|
||||
padding: .7em 0;
|
||||
}
|
||||
nav.userNav .links .navItem {
|
||||
display: block;
|
||||
margin: .3em .5em;
|
||||
font-size: 1em;
|
||||
color: #707070;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
margin: .3em .5em;
|
||||
font-size: 1em;
|
||||
color: #707070;
|
||||
text-decoration: none;
|
||||
}
|
||||
nav.userNav .links .navItem:hover {
|
||||
color: #505050;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
color: #505050;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
nav.userNav .links .navItem.active {
|
||||
color: #673ab7;
|
||||
font-weight: bold;
|
||||
color: #673ab7;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* email popup */
|
||||
.email_popup {
|
||||
margin: 10px 4em;
|
||||
margin-top: 55px;
|
||||
background-color: white;
|
||||
border: 1px solid #d1d1d1;
|
||||
padding: 1em 2em;
|
||||
transition: transform .2s ease-in, max-height .2s, padding .5s;
|
||||
overflow: hidden;
|
||||
max-height: 100vh;
|
||||
margin: 10px 4em;
|
||||
margin-top: 55px;
|
||||
background-color: white;
|
||||
border: 1px solid #d1d1d1;
|
||||
padding: 1em 2em;
|
||||
transition: transform .2s ease-in, max-height .2s, padding .5s;
|
||||
overflow: hidden;
|
||||
max-height: 100vh;
|
||||
}
|
||||
.email_popup.closed {
|
||||
transform: translateY(-15rem);
|
||||
max-height: 0;
|
||||
padding: 0;
|
||||
transform: translateY(-15rem);
|
||||
max-height: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.email_popup p {
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
.email_popup span {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
.email_popup button {
|
||||
margin: .4em;
|
||||
margin: .4em;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 950px) {
|
||||
body .contentWrapper.userPage {
|
||||
flex-direction: column;
|
||||
}
|
||||
nav.userNav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
.email_popup {
|
||||
margin: 10px;
|
||||
margin-top: 55px;
|
||||
}
|
||||
.contentCard {
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
nav.userNav .links {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-end;
|
||||
}
|
||||
nav.userNav .links .navItem {
|
||||
display: inline-block;
|
||||
}
|
||||
nav.userNav .userNavProfile::after {
|
||||
display: none;
|
||||
}
|
||||
body .contentWrapper.userPage {
|
||||
flex-direction: column;
|
||||
}
|
||||
nav.userNav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
}
|
||||
.email_popup {
|
||||
margin: 10px;
|
||||
margin-top: 55px;
|
||||
}
|
||||
.contentCard {
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
nav.userNav .links {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-end;
|
||||
}
|
||||
nav.userNav .links .navItem {
|
||||
display: inline-block;
|
||||
}
|
||||
nav.userNav .userNavProfile::after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
.contentCard {
|
||||
width: 100vw;
|
||||
}
|
||||
.contentCard {
|
||||
width: 100vw;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 450px) {
|
||||
nav.userNav {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
nav.userNav .links {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
nav.userNav .userNavProfile::after {
|
||||
display: inline-block;
|
||||
}
|
||||
nav.userNav {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
nav.userNav .links {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
nav.userNav .userNavProfile::after {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,68 @@
|
||||
section.bigCardWrapper.double {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
max-width: 80vw;
|
||||
margin: auto;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
max-width: 80vw;
|
||||
margin: auto;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard {
|
||||
flex: 1;
|
||||
padding: 1em 6em;
|
||||
margin: 0;
|
||||
flex: 1;
|
||||
padding: 1em 6em;
|
||||
margin: 0;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard:first-child {
|
||||
margin-right: 3em;
|
||||
margin-right: 3em;
|
||||
}
|
||||
|
||||
.listItem {
|
||||
position: relative;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.listItem h2 {
|
||||
font-size: 1rem;
|
||||
color: #353535;
|
||||
margin: 1em 0 0 0;
|
||||
font-size: 1rem;
|
||||
color: #353535;
|
||||
margin: 1em 0 0 0;
|
||||
}
|
||||
.listItem p {
|
||||
margin: .2em 0 0 0;
|
||||
margin: .2em 0 0 0;
|
||||
}
|
||||
|
||||
.listItem.state1::before, .listItem.state2::before, .listItem.state3::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: .2em;
|
||||
left: -1.5em;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
border-radius: 50%;
|
||||
background-color: #f57c7c; /* state 1: no support */
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: .2em;
|
||||
left: -1.5em;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
border-radius: 50%;
|
||||
background-color: #f57c7c; /* state 1: no support */
|
||||
}
|
||||
.listItem.state2::before {
|
||||
background-color: #e6ae65; /* state 2: partial support/bugged */
|
||||
background-color: #e6ae65; /* state 2: partial support/bugged */
|
||||
}
|
||||
.listItem.state3::before {
|
||||
background-color: #58ef81; /* state 3: full support/working */
|
||||
background-color: #58ef81; /* state 3: full support/working */
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1000px) {
|
||||
section.bigCardWrapper.double {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard {
|
||||
flex: 0;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard:first-child {
|
||||
margin-right: 0;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
section.bigCardWrapper.double {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard {
|
||||
flex: 0;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard:first-child {
|
||||
margin-right: 0;
|
||||
margin-bottom: 3em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
section.bigCardWrapper.double {
|
||||
max-width: 100vw;
|
||||
margin: 0;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard {
|
||||
padding: 50px;
|
||||
}
|
||||
section.bigCardWrapper.double {
|
||||
max-width: 100vw;
|
||||
margin: 0;
|
||||
}
|
||||
section.bigCardWrapper.double > .bigCard {
|
||||
padding: 50px;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,21 @@
|
||||
function postAjax(url, data, success) {
|
||||
var params = (typeof data == 'string') ? data : Object.keys(data).map(function (k) {
|
||||
function postAjax(url, data, callbacks={}) {
|
||||
const params = (typeof data == 'string') ? data : Object.keys(data).map(function (k) {
|
||||
return encodeURIComponent(k) + '=' + encodeURIComponent(data[k])
|
||||
}).join('&');
|
||||
|
||||
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
|
||||
const xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
|
||||
for (const event in callbacks) {
|
||||
const handler = callbacks[event];
|
||||
|
||||
if (handler instanceof Function) {
|
||||
xhr.addEventListener(event, handler);
|
||||
}
|
||||
}
|
||||
|
||||
xhr.open('POST', url);
|
||||
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
xhr.send(params);
|
||||
xhr.send(data);
|
||||
return xhr;
|
||||
}
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
"register": {
|
||||
"card": {
|
||||
"title": "Register",
|
||||
"birthdate_text": "Birthday",
|
||||
"gender_text": "Gender",
|
||||
"email_text": "Email Address",
|
||||
"username_text": "Username",
|
||||
"password_text": "Password",
|
||||
@@ -125,6 +127,6 @@
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"text": "Copyright 2018 PretendoNetwork - Site designed and developed by MrJVS, ben and Jip"
|
||||
"text": "Copyright 2019 PretendoNetwork - Site designed and developed by MrJVS, ben and Jip"
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,8 @@
|
||||
"register": {
|
||||
"card": {
|
||||
"title": "ERROR",
|
||||
"birthdate_text": "ERROR",
|
||||
"gender_text": "ERROR",
|
||||
"email_text": "ERROR",
|
||||
"username_text": "ERROR",
|
||||
"password_text": "ERROR",
|
||||
|
||||
167
package-lock.json
generated
167
package-lock.json
generated
@@ -76,6 +76,7 @@
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
|
||||
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"kind-of": "^3.0.2",
|
||||
"longest": "^1.0.1",
|
||||
@@ -126,6 +127,11 @@
|
||||
"normalize-path": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"append-field": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
|
||||
"integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
|
||||
},
|
||||
"argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
@@ -801,11 +807,48 @@
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz",
|
||||
"integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg=="
|
||||
},
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
||||
},
|
||||
"buffer-shims": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
|
||||
"integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
|
||||
},
|
||||
"busboy": {
|
||||
"version": "0.2.14",
|
||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
|
||||
"integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
|
||||
"requires": {
|
||||
"dicer": "0.2.5",
|
||||
"readable-stream": "1.1.x"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.1.14",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
|
||||
@@ -1054,6 +1097,17 @@
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
|
||||
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^2.2.2",
|
||||
"typedarray": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"configstore": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
|
||||
@@ -1280,6 +1334,38 @@
|
||||
"kuler": "1.0.x"
|
||||
}
|
||||
},
|
||||
"dicer": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
|
||||
"integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
|
||||
"requires": {
|
||||
"readable-stream": "1.1.x",
|
||||
"streamsearch": "0.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.1.14",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"doctrine": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
|
||||
@@ -1944,7 +2030,8 @@
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
@@ -1965,12 +2052,14 @@
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
@@ -1985,17 +2074,20 @@
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
@@ -2112,7 +2204,8 @@
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
@@ -2124,6 +2217,7 @@
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
@@ -2138,6 +2232,7 @@
|
||||
"version": "3.0.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
@@ -2145,12 +2240,14 @@
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.2.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.1",
|
||||
"yallist": "^3.0.0"
|
||||
@@ -2169,6 +2266,7 @@
|
||||
"version": "0.5.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
@@ -2249,7 +2347,8 @@
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
@@ -2261,6 +2360,7 @@
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
@@ -2346,7 +2446,8 @@
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
@@ -2382,6 +2483,7 @@
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
@@ -2401,6 +2503,7 @@
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
@@ -2444,12 +2547,14 @@
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.2",
|
||||
"bundled": true,
|
||||
"dev": true
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3092,7 +3197,8 @@
|
||||
"longest": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
|
||||
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
|
||||
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
|
||||
"optional": true
|
||||
},
|
||||
"lowercase-keys": {
|
||||
"version": "1.0.1",
|
||||
@@ -3260,7 +3366,6 @@
|
||||
"version": "0.5.1",
|
||||
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
},
|
||||
@@ -3268,8 +3373,7 @@
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
||||
"dev": true
|
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3415,6 +3519,21 @@
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"multer": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.1.tgz",
|
||||
"integrity": "sha512-zzOLNRxzszwd+61JFuAo0fxdQfvku12aNJgnla0AQ+hHxFmfc/B7jBVuPr5Rmvu46Jze/iJrFpSOsD7afO8SDw==",
|
||||
"requires": {
|
||||
"append-field": "^1.0.0",
|
||||
"busboy": "^0.2.11",
|
||||
"concat-stream": "^1.5.2",
|
||||
"mkdirp": "^0.5.1",
|
||||
"object-assign": "^4.1.1",
|
||||
"on-finished": "^2.3.0",
|
||||
"type-is": "^1.6.4",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"mute-stream": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
||||
@@ -3544,8 +3663,7 @@
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
||||
"dev": true
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"object-copy": {
|
||||
"version": "0.1.0",
|
||||
@@ -4505,6 +4623,11 @@
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
|
||||
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
|
||||
},
|
||||
"streamsearch": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
|
||||
"integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
|
||||
@@ -4674,6 +4797,11 @@
|
||||
"mime-types": "~2.1.18"
|
||||
}
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "2.8.29",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
|
||||
@@ -5082,6 +5210,11 @@
|
||||
"integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
|
||||
},
|
||||
"y18n": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
"mongoose": "^5.3.2",
|
||||
"mongoose-unique-validator": "^2.0.2",
|
||||
"morgan": "^1.9.1",
|
||||
"multer": "^1.4.1",
|
||||
"nodemailer": "^4.7.0",
|
||||
"passport": "^0.4.0",
|
||||
"passport-local": "^1.0.0",
|
||||
|
||||
@@ -22,7 +22,7 @@ const PNID = require('../models/pnid');
|
||||
|
||||
// renders register page
|
||||
router.get('/pnid/register', (request, response) => {
|
||||
return response.render('register', {
|
||||
return response.render('pnid/register', {
|
||||
title: 'Pretendo | Register',
|
||||
description: 'On the Pretendo Network ID Dashboard you can manage your personal information and make new virtual consoles to use for login on your home console.',
|
||||
url: request.protocol + '://' + request.get('host') + request.originalUrl,
|
||||
@@ -33,7 +33,7 @@ router.get('/pnid/register', (request, response) => {
|
||||
});
|
||||
// renders login page
|
||||
router.get('/pnid/login', (request, response) => {
|
||||
return response.render('login', {
|
||||
return response.render('pnid/login', {
|
||||
title: 'Pretendo | Login',
|
||||
description: 'On the Pretendo Network ID Dashboard you can manage your personal information and make new virtual consoles to use for login on your home console.',
|
||||
url: request.protocol + '://' + request.get('host') + request.originalUrl,
|
||||
@@ -43,7 +43,7 @@ router.get('/pnid/login', (request, response) => {
|
||||
});
|
||||
// renders password forget
|
||||
router.get('/pnid/forgotpassword', (request, response) => {
|
||||
return response.render('forgot', {
|
||||
return response.render('pnid/forgotpassword', {
|
||||
title: 'Pretendo | Forgot password',
|
||||
description: 'On the Pretendo Network ID Dashboard you can manage your personal information and make new virtual consoles to use for login on your home console.',
|
||||
url: request.protocol + '://' + request.get('host') + request.originalUrl,
|
||||
@@ -54,7 +54,7 @@ router.get('/pnid/forgotpassword', (request, response) => {
|
||||
});
|
||||
// renders password reset page
|
||||
router.get('/pnid/passwordreset', (request, response) => {
|
||||
return response.render('password', {
|
||||
return response.render('passwordreset', {
|
||||
title: 'Pretendo | Password reset',
|
||||
description: 'On the Pretendo Network ID Dashboard you can manage your personal information and make new virtual consoles to use for login on your home console.',
|
||||
url: request.protocol + '://' + request.get('host') + request.originalUrl,
|
||||
@@ -70,7 +70,7 @@ router.get('/pnid/logout', userMiddleware.pnidAuthNeeded, (request, response) =>
|
||||
});
|
||||
// renders pnid dashboard
|
||||
router.get('/pnid/dashboard', userMiddleware.pnidAuthNeeded, (request, response) => {
|
||||
return response.render('dashboard', {
|
||||
return response.render('pnid/dashboard', {
|
||||
title: 'Pretendo | Dash',
|
||||
description: 'On the Pretendo Network ID Dashboard you can manage your personal information and make new virtual consoles to use for login on your home console.',
|
||||
url: request.protocol + '://' + request.get('host') + request.originalUrl,
|
||||
@@ -143,11 +143,18 @@ router.post('/api/v1/passwordreset', function (request, response) {
|
||||
* errors: Strings[messages]
|
||||
* }
|
||||
*/
|
||||
router.post('/api/v1/register', recaptcha.middleware.verify, async (request, response) => {
|
||||
|
||||
const multer = require('multer')();
|
||||
|
||||
router.post('/api/v1/register', multer.none(), recaptcha.middleware.verify, async (request, response) => {
|
||||
if (!request.body) {
|
||||
return apiHelper.sendApiGenericError(response);
|
||||
}
|
||||
|
||||
console.log(request.body);
|
||||
|
||||
return response.send(request.body);
|
||||
|
||||
if (request.recaptcha.error) {
|
||||
logger.log('warn', `[reCaptcha ERROR] ${request.recaptcha.error} | IP: ${request.ip} | Data: ${JSON.stringify(request.body)}`);
|
||||
return apiHelper.sendApiError(response, 500, ['Captcha error']);
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-contact.css">
|
||||
</head>
|
||||
<body class="flex">
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">ERROR</p>
|
||||
<h1 class="txt-title">{{ locale.404.title }}</h1>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-contact.css">
|
||||
</head>
|
||||
<body class="flex">
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">ERROR</p>
|
||||
<h1 class="txt-title">{{ locale.404.title }}</h1>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
244
views/admin.hbs
244
views/admin.hbs
@@ -1,134 +1,134 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
</head>
|
||||
<body>
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<h1 class="txt-title">login</h1>
|
||||
<form action="/admin/api/v1/login" method="POST">
|
||||
<input type="text" name="username">
|
||||
<input type="text" name="password">
|
||||
<button>submit login</button>
|
||||
</form>
|
||||
<head>
|
||||
{{> head-common }}
|
||||
</head>
|
||||
<body>
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<h1 class="txt-title">login</h1>
|
||||
<form action="/admin/api/v1/login" method="POST">
|
||||
<input type="text" name="username">
|
||||
<input type="text" name="password">
|
||||
<button>submit login</button>
|
||||
</form>
|
||||
|
||||
<div id="container">
|
||||
<h1 class="txt-title">register new admin</h1>
|
||||
<form action="/admin/api/v1/register" method="POST">
|
||||
<input type="text" name="username">
|
||||
<input type="text" name="password">
|
||||
<button>submit register</button>
|
||||
</form>
|
||||
<div id="container">
|
||||
<h1 class="txt-title">register new admin</h1>
|
||||
<form action="/admin/api/v1/register" method="POST">
|
||||
<input type="text" name="username">
|
||||
<input type="text" name="password">
|
||||
<button>submit register</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">delete admin</h1>
|
||||
<form action="/admin/api/v1/removeadmin" method="POST">
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<button>delete admin</button>
|
||||
</form>
|
||||
<h1 class="txt-title">delete admin</h1>
|
||||
<form action="/admin/api/v1/removeadmin" method="POST">
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<button>delete admin</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">new blogpost</h1>
|
||||
<form action="/admin/api/v1/newpost" method="POST">
|
||||
<p>content</p>
|
||||
<textarea name="content" cols="30" rows="10"></textarea>
|
||||
<p>short version</p>
|
||||
<textarea name="short" cols="30" rows="10"></textarea>
|
||||
<p>category</p>
|
||||
<input type="text" name="category">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>author id</p>
|
||||
<input type="text" name="author">
|
||||
<button>create post</button>
|
||||
</form>
|
||||
<h1 class="txt-title">new blogpost</h1>
|
||||
<form action="/admin/api/v1/newpost" method="POST">
|
||||
<p>content</p>
|
||||
<textarea name="content" cols="30" rows="10"></textarea>
|
||||
<p>short version</p>
|
||||
<textarea name="short" cols="30" rows="10"></textarea>
|
||||
<p>category</p>
|
||||
<input type="text" name="category">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>author id</p>
|
||||
<input type="text" name="author">
|
||||
<button>create post</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">edit blogpost</h1>
|
||||
<form action="/admin/api/v1/editpost" method="POST">
|
||||
<p>content</p>
|
||||
<textarea name="content" cols="30" rows="10"></textarea>
|
||||
<p>short version</p>
|
||||
<textarea name="short" cols="30" rows="10"></textarea>
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<p>category</p>
|
||||
<input type="text" name="category">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>author id</p>
|
||||
<input type="text" name="author">
|
||||
<button>edit post</button>
|
||||
</form>
|
||||
<h1 class="txt-title">edit blogpost</h1>
|
||||
<form action="/admin/api/v1/editpost" method="POST">
|
||||
<p>content</p>
|
||||
<textarea name="content" cols="30" rows="10"></textarea>
|
||||
<p>short version</p>
|
||||
<textarea name="short" cols="30" rows="10"></textarea>
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<p>category</p>
|
||||
<input type="text" name="category">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>author id</p>
|
||||
<input type="text" name="author">
|
||||
<button>edit post</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">new blogpost author</h1>
|
||||
<form action="/admin/api/v1/newauthor" method="POST">
|
||||
<p>name</p>
|
||||
<input type="text" name="name">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>image link</p>
|
||||
<input type="text" name="image">
|
||||
<button>submit author</button>
|
||||
</form>
|
||||
<h1 class="txt-title">new blogpost author</h1>
|
||||
<form action="/admin/api/v1/newauthor" method="POST">
|
||||
<p>name</p>
|
||||
<input type="text" name="name">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>image link</p>
|
||||
<input type="text" name="image">
|
||||
<button>submit author</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">edit author info</h1>
|
||||
<form action="/admin/api/v1/editauthor" method="POST">
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<p>name</p>
|
||||
<input type="text" name="name">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>image link</p>
|
||||
<input type="text" name="image">
|
||||
<button>edit author</button>
|
||||
</form>
|
||||
<h1 class="txt-title">edit author info</h1>
|
||||
<form action="/admin/api/v1/editauthor" method="POST">
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<p>name</p>
|
||||
<input type="text" name="name">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>image link</p>
|
||||
<input type="text" name="image">
|
||||
<button>edit author</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">new progress entry</h1>
|
||||
<form action="/admin/api/v1/newprogress" method="POST">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>state</p>
|
||||
<p>0 - backend service<br>1 - no support<br>2 - partial support<br>3 - fully working</p>
|
||||
<input type="text" name="state">
|
||||
<button>submit progress</button>
|
||||
</form>
|
||||
<h1 class="txt-title">new progress entry</h1>
|
||||
<form action="/admin/api/v1/newprogress" method="POST">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>state</p>
|
||||
<p>0 - backend service<br>1 - no support<br>2 - partial support<br>3 - fully working</p>
|
||||
<input type="text" name="state">
|
||||
<button>submit progress</button>
|
||||
</form>
|
||||
|
||||
<h1 class="txt-title">edit progress entry</h1>
|
||||
<form action="/admin/api/v1/editprogress" method="POST">
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>state</p>
|
||||
<p>0 - backend service<br>1 - no support<br>2 - partial support<br>3 - fully working</p>
|
||||
<input type="text" name="state">
|
||||
<button>edit progress</button>
|
||||
</form>
|
||||
<h1 class="txt-title">edit progress entry</h1>
|
||||
<form action="/admin/api/v1/editprogress" method="POST">
|
||||
<p>id</p>
|
||||
<input type="text" name="id">
|
||||
<p>title</p>
|
||||
<input type="text" name="title">
|
||||
<p>description</p>
|
||||
<input type="text" name="description">
|
||||
<p>state</p>
|
||||
<p>0 - backend service<br>1 - no support<br>2 - partial support<br>3 - fully working</p>
|
||||
<input type="text" name="state">
|
||||
<button>edit progress</button>
|
||||
</form>
|
||||
|
||||
<br>
|
||||
<a href="/admin/api/v1/listadmins">List of admin users</a>
|
||||
<br>
|
||||
<a href="/api/v1/listblog">List of blog posts</a>
|
||||
<br>
|
||||
<a href="/api/v1/listprogress">List of progress</a>
|
||||
<br>
|
||||
<a href="/api/v1/listauthors">List of authors</a>
|
||||
<br>
|
||||
<a href="/admin/api/v1/check">Check if logged in</a>
|
||||
<br>
|
||||
<a href="/admin/api/v1/logout">Logout</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
<br>
|
||||
<a href="/admin/api/v1/listadmins">List of admin users</a>
|
||||
<br>
|
||||
<a href="/api/v1/listblog">List of blog posts</a>
|
||||
<br>
|
||||
<a href="/api/v1/listprogress">List of progress</a>
|
||||
<br>
|
||||
<a href="/api/v1/listauthors">List of authors</a>
|
||||
<br>
|
||||
<a href="/admin/api/v1/check">Check if logged in</a>
|
||||
<br>
|
||||
<a href="/admin/api/v1/logout">Logout</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-contact.css">
|
||||
<!-- scripts -->
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.contact.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.contact.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<div id="successBox" class="success hide"></div>
|
||||
<form action="/api/v1/sendmessage" method="POST">
|
||||
<div class="input-container">
|
||||
<input type="text" id="email_input" name="email" placeholder="{{ locale.contact.email_placeholder }}">
|
||||
<input type="text" id="subject_input" name="subject" placeholder="{{ locale.contact.subject_placeholder }}">
|
||||
</div>
|
||||
<textarea name="message" id="message_input" placeholder="{{ locale.contact.message_placeholder }}"></textarea>
|
||||
</form>
|
||||
<div class="txt-center">
|
||||
<button onclick="sendMessage()" class="btn">{{ locale.contact.button_text }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-contact.css">
|
||||
<!-- scripts -->
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.contact.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.contact.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<div id="successBox" class="success hide"></div>
|
||||
<form action="/api/v1/sendmessage" method="POST">
|
||||
<div class="input-container">
|
||||
<input type="text" id="email_input" name="email" placeholder="{{ locale.contact.email_placeholder }}">
|
||||
<input type="text" id="subject_input" name="subject" placeholder="{{ locale.contact.subject_placeholder }}">
|
||||
</div>
|
||||
<textarea name="message" id="message_input" placeholder="{{ locale.contact.message_placeholder }}"></textarea>
|
||||
</form>
|
||||
<div class="txt-center">
|
||||
<button onclick="sendMessage()" class="btn">{{ locale.contact.button_text }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-pnid.css">
|
||||
<!-- scripts -->
|
||||
<script src="/assets/js/api.js"></script>
|
||||
<script src="/assets/js/pnid.js"></script>
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div id="email_verification_popup" class="email_popup{{#if_eq user.user.email_validated true}} hide{{/if_eq}}"><p>{{ locale.verify_email_popup.text }}</p><span><button class="btn-alt small" onclick="toggleEditInfo();">{{ locale.verify_email_popup.change_button_text }}</button> <button class="btn small" onclick="email_resend();">{{ locale.verify_email_popup.repeat_button_text }}</button></span></div>
|
||||
<div class="contentWrapper userPage">
|
||||
{{> nav-dashboard }}
|
||||
<section class="contentCard">
|
||||
<p class="txt-highlight">{{ locale.dashboard.account.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.dashboard.account.title }}</h1>
|
||||
<div class="infoContainer" id="userInfo">
|
||||
<p class="infoList"><span>Username:</span> {{ user.user.pnid.username }}</p>
|
||||
<p class="infoList"><span>Email:</span> {{ user.user.email }}</p>
|
||||
<button class="btn small btn-alt" onclick="toggleEditInfo();">Edit</button>
|
||||
</div>
|
||||
<div class="infoContainer hide" id="editInfo">
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<p class="infoList"><span>Username:</span>
|
||||
<input type="text" class="inline" name="username_input" id="username_input" value="{{ user.user.pnid.username }}">
|
||||
</p>
|
||||
<p class="infoList"><span>Email:</span>
|
||||
<input type="text" class="inline" name="email_input" id="email_input" value="{{ user.user.email }}">
|
||||
</p>
|
||||
<button class="btn small" onclick="editInfo();">Save</button><a href="#" class="link-margin" onclick="toggleEditInfo();">Cancel</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.forgot.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.forgot.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="email_input">{{ locale.forgot.card.email_text}}</label>
|
||||
<input type="text" class="hasLabel" id="email_input" name="email_input">
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="passwordForgot();">{{ locale.forgot.card.button_text }}</button>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
150
views/home.hbs
150
views/home.hbs
@@ -1,103 +1,103 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-home.css">
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-home.css">
|
||||
</head>
|
||||
<body>
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper">
|
||||
<header>
|
||||
<h1>{{ locale.home.header.title }}</h1>
|
||||
<hr>
|
||||
<h3>{{ locale.home.header.text }}</h3>
|
||||
</header>
|
||||
</div>
|
||||
<div class="contentWrapper bgLines">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.about.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.about.title }}</h1>
|
||||
<p>{{ locale.about.text }}</p>
|
||||
</div>
|
||||
</section>
|
||||
<div class="contentWrapper">
|
||||
<header>
|
||||
<h1>{{ locale.home.header.title }}</h1>
|
||||
<hr>
|
||||
<h3>{{ locale.home.header.text }}</h3>
|
||||
</header>
|
||||
</div>
|
||||
<div class="contentWrapper bgLines">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.about.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.about.title }}</h1>
|
||||
<p>{{ locale.about.text }}</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.about.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.credits.title }}</h1>
|
||||
<div class="cardProfiles">
|
||||
<!-- profile -->
|
||||
<div class="profile">
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.about.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.credits.title }}</h1>
|
||||
<div class="cardProfiles">
|
||||
<!-- profile -->
|
||||
<div class="profile">
|
||||
<img class="profileIcon" src="https://cdn.discordapp.com/avatars/117261997619412996/c0e34de348b8d45e7a16c0260173bc8c.webp?size=256">
|
||||
<div class="profileText">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">RedDucks</h2>
|
||||
<p>Project owner, lead developer, very violent young man. Splatoon obsessed as well.</p>
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
<img class="profileIcon" src="https://cdn.discordapp.com/avatars/117261997619412996/c0e34de348b8d45e7a16c0260173bc8c.webp?size=256">
|
||||
<div class="profileText">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">RedDucks</h2>
|
||||
<p>Project owner, lead developer, very violent young man. Splatoon obsessed as well.</p>
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
<img class="profileIcon" src="https://cdn.discordapp.com/avatars/117261997619412996/c0e34de348b8d45e7a16c0260173bc8c.webp?size=256">
|
||||
<div class="profileText">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">RedDucks</h2>
|
||||
<p>Project owner, lead developer, very violent young man. Splatoon obsessed as well.</p>
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
<img class="profileIcon" src="https://cdn.discordapp.com/avatars/117261997619412996/c0e34de348b8d45e7a16c0260173bc8c.webp?size=256">
|
||||
<div class="profileText">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">RedDucks</h2>
|
||||
<p>Project owner, lead developer, very violent young man. Splatoon obsessed as well.</p>
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
<img class="profileIcon" src="https://cdn.discordapp.com/avatars/117261997619412996/c0e34de348b8d45e7a16c0260173bc8c.webp?size=256">
|
||||
<div class="profileText">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">RedDucks</h2>
|
||||
<p>Project owner, lead developer, very violent young man. Splatoon obsessed as well.</p>
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
</div>
|
||||
</div><!--
|
||||
--><div class="profile">
|
||||
<img class="profileIcon" src="https://cdn.discordapp.com/avatars/117261997619412996/c0e34de348b8d45e7a16c0260173bc8c.webp?size=256">
|
||||
<div class="profileText">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">RedDucks</h2>
|
||||
<p>Project owner, lead developer, very violent young man. Splatoon obsessed as well.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard lessPadding cont-flex">
|
||||
<div class="flex-item">
|
||||
<p class="txt-highlight">{{ locale.latest_news.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.latest_news.title }}</h1>
|
||||
<p>{{ locale.latest_news.description }}</p>
|
||||
<a href="/news" class="btn">{{ locale.latest_news.button_text }}</a>
|
||||
</div>
|
||||
<div class="cont-flex">
|
||||
{{#each posts as |post| }}
|
||||
<div class="smallCardWidth">
|
||||
<div class="smallCard">
|
||||
<h3 class="txt-smallHeading">{{ post.title }}</h3>
|
||||
<p>{{ post.content }}</p>
|
||||
<a href="/news/{{ post.url }}" class="btn-alt">{{ ../locale.latest_news.news_button_text }}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard lessPadding cont-flex">
|
||||
<div class="flex-item">
|
||||
<p class="txt-highlight">{{ locale.latest_news.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.latest_news.title }}</h1>
|
||||
<p>{{ locale.latest_news.description }}</p>
|
||||
<a href="/news" class="btn">{{ locale.latest_news.button_text }}</a>
|
||||
</div>
|
||||
<div class="cont-flex">
|
||||
{{#each posts as |post| }}
|
||||
<div class="smallCardWidth">
|
||||
<div class="smallCard">
|
||||
<h3 class="txt-smallHeading">{{ post.title }}</h3>
|
||||
<p>{{ post.content }}</p>
|
||||
<a href="/news/{{ post.url }}" class="btn-alt">{{ ../locale.latest_news.news_button_text }}</a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,32 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.login.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.login.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="email">{{ locale.login.card.email_text }}</label>
|
||||
<input type="text" class="hasLabel" id="email_input" name="email">
|
||||
<label for="email">{{ locale.login.card.password_text }}</label>
|
||||
<input type="password" class="hasLabel" id="password_input" name="password">
|
||||
<p class="lowText">{{ locale.login.card.forgotpass_introduction }} <a href="/pnid/forgotpassword">{{ locale.login.card.forgotpass_text }}</a></p>
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="login();">{{ locale.login.card.button_text }}</button>
|
||||
<p class="lowText">{{ locale.login.card.link_introduction }} <a href="/pnid/register">{{ locale.login.card.link_text }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,5 +1,5 @@
|
||||
<footer>
|
||||
<div class="content">
|
||||
<p>{{ locale.footer.text }}</p>
|
||||
</div>
|
||||
<div class="content">
|
||||
<p>{{ locale.footer.text }}</p>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -1,10 +1,10 @@
|
||||
<nav class="userNav">
|
||||
<div class="userNavProfile">
|
||||
<img src="{{ user.user.pnid.avatar_url }}" alt="{{ user.user.pnid.username }}">
|
||||
<p class="name">{{ user.user.pnid.username }}</p>
|
||||
</div>
|
||||
<div class="links">
|
||||
<a class="navItem active" href="#">{{ locale.dashboard.navigation.links.account }}</a>
|
||||
<a class="navItem" href="#">{{ locale.dashboard.navigation.links.soon }}</a>
|
||||
</div>
|
||||
<div class="userNavProfile">
|
||||
<img src="{{ user.user.pnid.avatar_url }}" alt="{{ user.user.pnid.username }}">
|
||||
<p class="name">{{ user.user.pnid.username }}</p>
|
||||
</div>
|
||||
<div class="links">
|
||||
<a class="navItem active" href="#">{{ locale.dashboard.navigation.links.account }}</a>
|
||||
<a class="navItem" href="#">{{ locale.dashboard.navigation.links.soon }}</a>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -3,20 +3,20 @@
|
||||
<a class="navItem{{#if_eq page 'news'}} active{{/if_eq}}" {{#if_neq page 'news'}}href="/news"{{/if_neq}}>{{ locale.nav.links.news }}</a>
|
||||
<a class="navItem{{#if_eq page 'progress'}} active{{/if_eq}}" {{#if_neq page 'progress'}}href="/progress"{{/if_neq}}>{{ locale.nav.links.progress }}</a>
|
||||
<a class="navItem{{#if_eq page 'contact'}} active{{/if_eq}}" {{#if_neq page 'contact'}}href="/contact"{{/if_neq}}>{{ locale.nav.links.contact }}</a>
|
||||
<div class="navSpread"></div>
|
||||
<div class="navSpread"></div>
|
||||
{{#if user.isLoggedIn }}
|
||||
<a class="navItem navProfile" href="/pnid/dashboard">
|
||||
<img src="{{ user.user.pnid.avatar_url }}" alt="{{ user.user.pnid.username }}">
|
||||
<p>{{ user.user.pnid.username }}</p>
|
||||
</a>
|
||||
<a class="navItem navBtn" href="/pnid/logout">logout</a>
|
||||
<a class="navItem navProfile" href="/pnid/dashboard">
|
||||
<img src="{{ user.user.pnid.avatar_url }}" alt="{{ user.user.pnid.username }}">
|
||||
<p>{{ user.user.pnid.username }}</p>
|
||||
</a>
|
||||
<a class="navItem navBtn" href="/pnid/logout">logout</a>
|
||||
{{else}}
|
||||
<a class="navItem navBtnAlt" href="/pnid/login">{{ locale.nav.links.login }}</a>
|
||||
<a class="navItem navBtn" href="/pnid/register">{{ locale.nav.links.register }}</a>
|
||||
<a class="navItem navBtnAlt" href="/pnid/login">{{ locale.nav.links.login }}</a>
|
||||
<a class="navItem navBtn" href="/pnid/register">{{ locale.nav.links.register }}</a>
|
||||
{{/if}}
|
||||
<a class="navItem hamburger" id="navToggle">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</a>
|
||||
<a class="navItem hamburger" id="navToggle">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</a>
|
||||
</nav>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.password.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.password.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="password_input">{{ locale.password.card.password_text}}</label>
|
||||
<input type="password" class="hasLabel" id="password_input" name="password_input">
|
||||
<label for="password_confirm">{{ locale.password.card.password_confirm_text }}</label>
|
||||
<input type="password" class="hasLabel" id="password_confirm" name="password_confirm">
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="passwordReset();">{{ locale.password.card.button_text }}</button>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
38
views/pnid/dashboard.hbs
Normal file
38
views/pnid/dashboard.hbs
Normal file
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-pnid.css">
|
||||
<!-- scripts -->
|
||||
<script src="/assets/js/api.js"></script>
|
||||
<script src="/assets/js/pnid.js"></script>
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div id="email_verification_popup" class="email_popup{{#if_eq user.user.email_validated true}} hide{{/if_eq}}"><p>{{ locale.verify_email_popup.text }}</p><span><button class="btn-alt small" onclick="toggleEditInfo();">{{ locale.verify_email_popup.change_button_text }}</button> <button class="btn small" onclick="email_resend();">{{ locale.verify_email_popup.repeat_button_text }}</button></span></div>
|
||||
<div class="contentWrapper userPage">
|
||||
{{> nav-dashboard }}
|
||||
<section class="contentCard">
|
||||
<p class="txt-highlight">{{ locale.dashboard.account.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.dashboard.account.title }}</h1>
|
||||
<div class="infoContainer" id="userInfo">
|
||||
<p class="infoList"><span>Username:</span> {{ user.user.pnid.username }}</p>
|
||||
<p class="infoList"><span>Email:</span> {{ user.user.email }}</p>
|
||||
<button class="btn small btn-alt" onclick="toggleEditInfo();">Edit</button>
|
||||
</div>
|
||||
<div class="infoContainer hide" id="editInfo">
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<p class="infoList"><span>Username:</span>
|
||||
<input type="text" class="inline" name="username_input" id="username_input" value="{{ user.user.pnid.username }}">
|
||||
</p>
|
||||
<p class="infoList"><span>Email:</span>
|
||||
<input type="text" class="inline" name="email_input" id="email_input" value="{{ user.user.email }}">
|
||||
</p>
|
||||
<button class="btn small" onclick="editInfo();">Save</button><a href="#" class="link-margin" onclick="toggleEditInfo();">Cancel</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
28
views/pnid/forgotpassword.hbs
Normal file
28
views/pnid/forgotpassword.hbs
Normal file
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.forgot.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.forgot.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="email_input">{{ locale.forgot.card.email_text}}</label>
|
||||
<input type="text" class="hasLabel" id="email_input" name="email_input">
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="passwordForgot();">{{ locale.forgot.card.button_text }}</button>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
32
views/pnid/login.hbs
Normal file
32
views/pnid/login.hbs
Normal file
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.login.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.login.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="email">{{ locale.login.card.email_text }}</label>
|
||||
<input type="text" class="hasLabel" id="email_input" name="email">
|
||||
<label for="email">{{ locale.login.card.password_text }}</label>
|
||||
<input type="password" class="hasLabel" id="password_input" name="password">
|
||||
<p class="lowText">{{ locale.login.card.forgotpass_introduction }} <a href="/pnid/forgotpassword">{{ locale.login.card.forgotpass_text }}</a></p>
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="login();">{{ locale.login.card.button_text }}</button>
|
||||
<p class="lowText">{{ locale.login.card.link_introduction }} <a href="/pnid/register">{{ locale.login.card.link_text }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
30
views/pnid/passwordreset.hbs
Normal file
30
views/pnid/passwordreset.hbs
Normal file
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.password.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.password.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="password_input">{{ locale.password.card.password_text}}</label>
|
||||
<input type="password" class="hasLabel" id="password_input" name="password_input">
|
||||
<label for="password_confirm">{{ locale.password.card.password_confirm_text }}</label>
|
||||
<input type="password" class="hasLabel" id="password_confirm" name="password_confirm">
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="passwordReset();">{{ locale.password.card.button_text }}</button>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
147
views/pnid/register.hbs
Normal file
147
views/pnid/register.hbs
Normal file
@@ -0,0 +1,147 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
|
||||
<!-- date picker -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.js"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.css">
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.register.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.register.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
|
||||
<form id="registerForm" method="POST" action="http://account.pretendo.cc/v1/api/people/registerwp">
|
||||
<label for="birthdate">{{ locale.register.card.birthdate_text }}</label>
|
||||
<input required type="text" class="hasLabel" id="birthdate_input" name="birthdate">
|
||||
<label for="gender">{{ locale.register.card.gender_text }}</label>
|
||||
<input required type="text" class="hasLabel" id="gender_input" name="gender" list="gender-list" autocomplete="new-password">
|
||||
<datalist id="gender-list">
|
||||
<option value="M"></option>
|
||||
<option value="F"></option>
|
||||
</datalist>
|
||||
<label for="email">{{ locale.register.card.email_text }}</label>
|
||||
<input required type="text" class="hasLabel" id="email_input" name="email">
|
||||
<label for="username">{{ locale.register.card.username_text }}</label>
|
||||
<input required type="text" class="hasLabel" id="username_input" name="username" minlength="6" maxlength="16">
|
||||
<label for="password">{{ locale.register.card.password_text }}</label>
|
||||
<input required type="password" class="hasLabel" id="password_input" name="password">
|
||||
<label for="confirm_password">{{ locale.register.card.password_confirm_text }}</label>
|
||||
<input required type="password" class="hasLabel" id="confirm_password_input" name="confirm_password">
|
||||
|
||||
<div class="g-recaptcha"
|
||||
data-callback="capchaFilled"
|
||||
data-expired-callback="capchaExpired"
|
||||
data-sitekey="{{ recaptcha_sitekey }}"></div>
|
||||
|
||||
<input disabled type="submit" value="{{ locale.register.card.button_text }}" class="btn btnMargin"></input>
|
||||
</form>
|
||||
|
||||
<p class="lowText">{{ locale.register.card.link_introduction }} <a href="/pnid/login">{{ locale.register.card.link_text }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$('#birthdate_input').datepicker({
|
||||
autoPick: true,
|
||||
format: 'yyyy-mm-dd',
|
||||
startView: 2
|
||||
});
|
||||
|
||||
const form = document.getElementById('registerForm');
|
||||
form.addEventListener('submit', async e => {
|
||||
e.preventDefault();
|
||||
|
||||
// https://stackoverflow.com/a/34296482
|
||||
const elements = [].filter.call(form.elements, element => {
|
||||
return !(element.type in ['checkbox', 'radio']) || element.checked;
|
||||
})
|
||||
.filter(element => { return !!element.name })
|
||||
.filter(element => { return !element.disabled });
|
||||
|
||||
const data = {};
|
||||
for ({name, value} of elements) {
|
||||
data[name] = value;
|
||||
}
|
||||
|
||||
if (!data['g-recaptcha-response'] || data['g-recaptcha-response'].trim() === '') {
|
||||
alert('Fill in the captcha');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (
|
||||
!data.email ||
|
||||
!data.username ||
|
||||
!data.password ||
|
||||
!data.confirm_password ||
|
||||
data.email.trim() === '' ||
|
||||
data.username.trim() === '' ||
|
||||
data.password.trim() === '' ||
|
||||
data.confirm_password.trim() === ''
|
||||
) {
|
||||
// Handle error, there are missing fields
|
||||
console.log(data);
|
||||
alert('error')
|
||||
return false;
|
||||
}
|
||||
|
||||
if (data.password.trim() !== data.confirm_password.trim()) {
|
||||
alert('Passwords do not match');
|
||||
return false;
|
||||
}
|
||||
|
||||
const response = await fetch(`http://account.pretendo.cc/v1/api/people/${data.username}`, {
|
||||
headers: {
|
||||
'x-nintendo-client-id': 'a2efa818a34fa16b8afbc8a74eba3eda',
|
||||
'x-nintendo-client-secret': 'c91cdb5658bd4954ade78533a339cf9a'
|
||||
}
|
||||
});
|
||||
const text = await response.text();
|
||||
|
||||
if (text.trim() !== '') {
|
||||
const body = (new window.DOMParser()).parseFromString(text, 'text/xml');
|
||||
const error = body;
|
||||
alert('Username already in use');
|
||||
return; // Handle errors here
|
||||
}
|
||||
|
||||
const params = elements.map(({name, value}) => {
|
||||
return encodeURIComponent(name) + '=' + encodeURIComponent(value);
|
||||
}).join('&');
|
||||
|
||||
console.log(params);
|
||||
|
||||
postAjax(form.action, params, {
|
||||
load: event => {
|
||||
console.log(event.target.responseText)
|
||||
},
|
||||
error: event => {
|
||||
console.log(event)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function capchaFilled() {
|
||||
document.querySelector('input[type="submit"]').removeAttribute('disabled');
|
||||
}
|
||||
|
||||
function capchaExpired() {
|
||||
document.querySelector('input[type="submit"]').setAttribute('disabled', true);
|
||||
}
|
||||
</script>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,29 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-news.css">
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard lessPadding">
|
||||
<p class="txt-highlight">{{ locale.news.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.news.title }}</h1><!--
|
||||
{{#each posts as |post| }}
|
||||
--><article class="smallCard">
|
||||
<h3 class="txt-smallHeading">{{ post.title }}</h3>
|
||||
<p>{{ post.content }}</p>
|
||||
<a class="btn-alt" href="/news/{{ post.url }}">{{ ../locale.news.button_text }}</a>
|
||||
</article><!--
|
||||
{{/each}}
|
||||
-->
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-news.css">
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard lessPadding">
|
||||
<p class="txt-highlight">{{ locale.news.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.news.title }}</h1><!--
|
||||
{{#each posts as |post| }}
|
||||
--><article class="smallCard">
|
||||
<h3 class="txt-smallHeading">{{ post.title }}</h3>
|
||||
<p>{{ post.content }}</p>
|
||||
<a class="btn-alt" href="/news/{{ post.url }}">{{ ../locale.news.button_text }}</a>
|
||||
</article><!--
|
||||
{{/each}}
|
||||
-->
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,28 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ post.category }} — {{ post.dateString }}</p>
|
||||
<h1 class="txt-title">{{ post.title }}</h1>
|
||||
{{{ post.content }}}
|
||||
<div class="profile">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ post.category }} — {{ post.dateString }}</p>
|
||||
<h1 class="txt-title">{{ post.title }}</h1>
|
||||
{{{ post.content }}}
|
||||
<div class="profile">
|
||||
<img class="profileIcon" src="{{ post.author.profilePicture }}">
|
||||
<div class="profileText">
|
||||
<h2 class="txt-smallHeading">{{ post.author.name }}</h2>
|
||||
<p>{{ post.author.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-progress.css">
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.progress.summary.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.progress.summary.title }}</h1>
|
||||
<p>{{ locale.progress.summary.text }}</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="bigCardWrapper double">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.progress.compatibility.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.progress.compatibility.title }}</h1>
|
||||
{{#each games }}
|
||||
<div class="listItem state{{ this.state }}">
|
||||
<h2>{{ this.title }}</h2>
|
||||
<p>{{ this.description }}</p>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.progress.misc.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.progress.misc.title }}</h1>
|
||||
{{#each backends }}
|
||||
<div class="listItem">
|
||||
<h2>{{ this.title }}</h2>
|
||||
<p>{{ this.description }}</p>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
<head>
|
||||
{{> head-common }}
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-progress.css">
|
||||
</head>
|
||||
<body class="flex">
|
||||
{{> nav-default }}
|
||||
<div class="contentWrapper bgLinesSmall">
|
||||
<div class="bgExtrude"></div>
|
||||
<section class="bigCardWrapper">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.progress.summary.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.progress.summary.title }}</h1>
|
||||
<p>{{ locale.progress.summary.text }}</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="bigCardWrapper double">
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.progress.compatibility.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.progress.compatibility.title }}</h1>
|
||||
{{#each games }}
|
||||
<div class="listItem state{{ this.state }}">
|
||||
<h2>{{ this.title }}</h2>
|
||||
<p>{{ this.description }}</p>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="bigCard">
|
||||
<p class="txt-highlight">{{ locale.progress.misc.caption }}</p>
|
||||
<h1 class="txt-title">{{ locale.progress.misc.title }}</h1>
|
||||
{{#each backends }}
|
||||
<div class="listItem">
|
||||
<h2>{{ this.title }}</h2>
|
||||
<p>{{ this.description }}</p>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{> metatags }}
|
||||
<title>{{ title }}</title>
|
||||
<!-- css files -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-common.css">
|
||||
<!-- page specific -->
|
||||
<link rel="stylesheet" href="/assets/css/pretendo-auth.css">
|
||||
|
||||
<script src='https://www.google.com/recaptcha/api.js'></script>
|
||||
<script src="/assets/js/api.js" defer></script>
|
||||
</head>
|
||||
<body class="flex center">
|
||||
<div class="card">
|
||||
<h2 class="head">{{ locale.nav.brand }}</h2>
|
||||
<div class="content">
|
||||
<p class="txt-highlight">{{ locale.register.card.caption }}</p>
|
||||
<h1 class="txt-title small">{{ locale.register.card.title }}</h1>
|
||||
<div id="errorBox" class="error hide"></div>
|
||||
<form method="POST">
|
||||
<label for="email">{{ locale.register.card.email_text }}</label>
|
||||
<input type="text" class="hasLabel" id="email_input" name="email">
|
||||
<label for="username">{{ locale.register.card.username_text }}</label>
|
||||
<input type="text" class="hasLabel" id="username_input" name="username">
|
||||
<label for="password">{{ locale.register.card.password_text }}</label>
|
||||
<input type="password" class="hasLabel" id="password_input" name="password">
|
||||
<label for="confirm_password">{{ locale.register.card.password_confirm_text }}</label>
|
||||
<input type="password" class="hasLabel" id="password_confirm_input" name="confirm_password">
|
||||
|
||||
<div class="g-recaptcha" data-sitekey="{{ recaptcha_sitekey }}"></div>
|
||||
</form>
|
||||
<button class="btn btnMargin" onclick="register()">{{ locale.register.card.button_text }}</button>
|
||||
<p class="lowText">{{ locale.register.card.link_introduction }} <a href="/pnid/login">{{ locale.register.card.link_text }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
{{> footer-default }}
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user