Start redesign using Bootstrap 4

This commit is contained in:
Evert Prants 2018-01-28 21:15:53 +02:00
parent 92be101d3c
commit caf6ab8915
Signed by: evert
GPG Key ID: 1688DA83D222D0B5
23 changed files with 637 additions and 583 deletions

View File

@ -1,4 +1,4 @@
<div class="tos"> <div>
<h1>Privacy Policy</h1> <h1>Privacy Policy</h1>
<span class="last-modified">Last modified: Friday, 13 Oct 2017</span> <span class="last-modified">Last modified: Friday, 13 Oct 2017</span>
<p>By using Services of Icy Network, you acknowledge and agree to these policies.</p> <p>By using Services of Icy Network, you acknowledge and agree to these policies.</p>

View File

@ -1,4 +1,4 @@
<div class="tos"> <div>
<h1>Terms of Service</h1> <h1>Terms of Service</h1>
<span class="last-modified">Last modified: Wednesday, 03 Jan 2018</span> <span class="last-modified">Last modified: Wednesday, 03 Jan 2018</span>
<p>Please read the following Terms and Conditions carefully. By using Icy Network services, you signify that you have read, understood and agreed to be bound by these Terms and Conditions. Icy Network reserves the right to modify, replace or remove any of the Terms and Conditions written in this document at any given time without restrictions. We will try to notify you of any such amendments. If you do not agree to these Terms and Conditions, you may not use any of the services provided by Icy Network.</p> <p>Please read the following Terms and Conditions carefully. By using Icy Network services, you signify that you have read, understood and agreed to be bound by these Terms and Conditions. Icy Network reserves the right to modify, replace or remove any of the Terms and Conditions written in this document at any given time without restrictions. We will try to notify you of any such amendments. If you do not agree to these Terms and Conditions, you may not use any of the services provided by Icy Network.</p>

12
package-lock.json generated
View File

@ -962,6 +962,12 @@
"hoek": "4.2.0" "hoek": "4.2.0"
} }
}, },
"bootstrap": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0.tgz",
"integrity": "sha512-gulJE5dGFo6Q61V/whS6VM4WIyrlydXfCgkE+Gxe5hjrJ8rXLLZlALq7zq2RPhOc45PSwQpJkrTnc2KgD6cvmA==",
"dev": true
},
"brace-expansion": { "brace-expansion": {
"version": "1.1.8", "version": "1.1.8",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
@ -5690,6 +5696,12 @@
"integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
"dev": true "dev": true
}, },
"popper.js": {
"version": "1.12.9",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.12.9.tgz",
"integrity": "sha1-DfvC3/lsRRuzMu3Pz6r1ZtMx1bM=",
"dev": true
},
"postcss": { "postcss": {
"version": "6.0.14", "version": "6.0.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",

View File

@ -62,11 +62,13 @@
"devDependencies": { "devDependencies": {
"babel-loader": "^7.1.2", "babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1", "babel-preset-env": "^1.6.1",
"bootstrap": "^4.0.0",
"concurrently": "^3.5.1", "concurrently": "^3.5.1",
"eslint-plugin-import": "^2.8.0", "eslint-plugin-import": "^2.8.0",
"jquery": "^3.2.1", "jquery": "^3.2.1",
"morgan": "^1.9.0", "morgan": "^1.9.0",
"mustache": "^2.3.0", "mustache": "^2.3.0",
"popper.js": "^1.12.9",
"standard": "^10.0.3", "standard": "^10.0.3",
"uglifyjs-webpack-plugin": "^1.1.2", "uglifyjs-webpack-plugin": "^1.1.2",
"vue-clickaway": "^2.1.0", "vue-clickaway": "^2.1.0",

View File

@ -1,4 +1,6 @@
window.$ = require('jquery') window.$ = require('jquery')
window.Popper = require('popper.js')
require('bootstrap')
$(document).ready(function () { $(document).ready(function () {
function pwcheck (e) { function pwcheck (e) {
@ -201,11 +203,10 @@ $(document).ready(function () {
var html = '' var html = ''
for (var i in data) { for (var i in data) {
var article = data[i] var article = data[i]
html += '<div class="prvarticle">' html += '<div class="news-article">'
html += '<a class="title" href="/news/' + article.id + '-' + article.slug + '">' + article.title + '</a>' html += '<h2 class="news-title"><a href="/news/' + article.id + '-' + article.slug + '">' + article.title + '</a></h2>'
html += '<span class="timestamp">Published at ' + new Date(article.created_at) + '</span>' html += '<p class="news-meta">Published at ' + new Date(article.created_at) + '</p>'
html += '<div class="prvcontent">' + article.description + '</div>' html += '<div class="news-content">' + article.content + '</div>'
html += '<a href="/news/' + article.id + '-' + article.slug + '">Read More</a>'
html += '</div>' html += '</div>'
} }
$('.newsfeed').html(html) $('.newsfeed').html(html)
@ -303,7 +304,7 @@ $(document).ready(function () {
}) })
} }
$('.loginDiag').click(function (e) { $('.login-dialog-pop').click(function (e) {
e.preventDefault() e.preventDefault()
var url = $(this).attr('href') var url = $(this).attr('href')
var popup = PopupCenter(url, '_blank', 800, 620) var popup = PopupCenter(url, '_blank', 800, 620)

View File

@ -1,22 +1,6 @@
body body
margin: 0 margin: 0
color: black color: black
font-family: sans-serif
/*background-color: #82fff4;
background-image: linear-gradient(-45deg, #80d7ff 25%, transparent 25.5%, transparent 50%,
#80d7ff 50.5%, #80d7ff 75%, transparent 75.5%, transparent)
height: 100vh;
background-size: 50px 50px;*/
background: #6fefff
background: -moz-linear-gradient(top, #6fefff 0%, #53cbf1 51%, #05abe0 100%)
background: -webkit-linear-gradient(top, #6fefff 0%,#53cbf1 51%,#05abe0 100%)
background: linear-gradient(to bottom, #6fefff 0%,#53cbf1 51%,#05abe0 100%)
a
color: green
text-decoration: none
&:hover
text-decoration: underline
.logo .logo
font-size: 8vw font-size: 8vw
@ -109,30 +93,44 @@ a
&:checked ~ .list &:checked ~ .list
max-height: 500px max-height: 500px
section .carousel
font-family: "Open Sans" margin-bottom: 4rem
position: relative
min-height: 100vh .carousel-item
.content height: 40rem
background-color: #777
& > img
position: absolute position: absolute
left: 0
right: 0
top: 0 top: 0
bottom: 40% left: 0
overflow: auto min-width: 100%
background-color: #ffffff height: 40rem
padding: 20px
&#home .marketing .col-lg-4
h1 margin-bottom: 1.5rem
font-size: 300%
text-align: center text-align: center
color: green
margin-bottom: 0 .circular-header
p width: 140px
text-align: center; height: 140px
font-size: 200% vertical-align: middle
color: #0074d0; display: inline-block
font-weight: bold; border-radius: 50% !important
line-height: 9rem
font-size: 5rem
color: #fff
.news-article
margin-bottom: 4rem
.news-title
margin-bottom: .25rem
font-size: 2.5rem
.news-meta
margin-bottom: 1.25rem
color: #999
.divboxes .divboxes
text-align: center text-align: center
@ -178,35 +176,6 @@ section
code code
white-space: pre white-space: pre
label
display: block
margin-top: 20px
input:not([type="submit"])
padding: 5px
font-size: 120%
border-radius: 5px
border: 1px solid #c1c1c1
background-color: #f5f5f5
color: #000
box-shadow: inset 2px 2px 5px #ddd
transition: border 0.1s linear
button, .button, input[type="submit"]
display: block
padding: 5px 10px
background-color: #fbfbfb
color: #000
border: 1px solid #c1c1c1
border-radius: 5px
font-size: 120%
margin: 10px 0
cursor: pointer
&.active
background-color: #ddd
input[disabled]
color: #959595
.button .button
display: inline-block display: inline-block
@ -260,8 +229,8 @@ input[disabled]
color: #a9a9a9 color: #a9a9a9
font-style: italic font-style: italic
.dlbtn .app-button
display: block display: inline-block
img img
width: 200px width: 200px
&.apple &.apple
@ -269,15 +238,21 @@ input[disabled]
width: 175px width: 175px
padding: 0 12px padding: 0 12px
.twitterLogin .login-btn
display: block display: block
padding: 10px text-decoration: none
width: 215px border-radius: 5px
margin-top: 5px margin-top: 5px
padding: 5px 5px
width: 215px
height: 50px
cursor: pointer
&.twitter-login
background-color: #fff background-color: #fff
border: 1px solid #ddd border: 1px solid #ddd
border-radius: 5px line-height: 2.2rem
text-decoration: none
i i
color: #03A9F4 color: #03A9F4
font-size: 22px font-size: 22px
@ -285,38 +260,26 @@ input[disabled]
color: #000 color: #000
display: inline-block display: inline-block
vertical-align: top vertical-align: top
margin-top: 3px
margin-left: 12px margin-left: 12px
.discordLogin &.discord-login
display: block background-color: #99aab5
background-color: #99AAB5 line-height: 2.4rem
width: 225px
height: 40px
margin-top: 5px
padding: 5px 5px
border-radius: 5px
text-decoration: none
span span
color: white color: white
vertical-align: top vertical-align: top
margin-top: 11px
margin-left: 3px margin-left: 3px
display: inline-block display: inline-block
img img
width: 45px width: 45px
display: inline-block display: inline-block
.googleLogin &.google-login
padding: 10px
width: 215px
margin-top: 5px
background-color: #4285f4 background-color: #4285f4
border: 1px solid #ddd border: 1px solid #ddd
border-radius: 5px line-height: 2.2rem
text-decoration: none
display: block
cursor: pointer
i i
color: #fff color: #fff
font-size: 22px font-size: 22px
@ -324,7 +287,6 @@ input[disabled]
color: #fff color: #fff
display: inline-block display: inline-block
vertical-align: top vertical-align: top
margin-top: 3px
margin-left: 12px margin-left: 12px
.accdisconnect .accdisconnect
@ -462,9 +424,6 @@ span.load
.prvcontent .prvcontent
margin: 10px 0 margin: 10px 0
.return
margin-top: 40px
.content .content
hr hr
border-color: #ffffff border-color: #ffffff

View File

@ -4,5 +4,5 @@ block title
|Icy Network |Icy Network
block body block body
.document .container.mt-4
.content !{doc} .content !{doc}

View File

@ -3,11 +3,9 @@ block title
|Icy Network - Donate |Icy Network - Donate
block body block body
.wrapper .container.mb-4.mt-4
.boxcont
.box#donate
h1 Donate h1 Donate
p Donations help us pay for the services required to keep Icy Network running. Donating any amount would be highly appreciated! p Donations help us pay for the servers required to keep Icy Network running. Donating any amount would be highly appreciated!
- var formurl = "https://www.paypal.com/cgi-bin/webscr" - var formurl = "https://www.paypal.com/cgi-bin/webscr"
if sandbox if sandbox
@ -23,8 +21,11 @@ block body
input(type="hidden" name="tax" value="0") input(type="hidden" name="tax" value="0")
input(type="hidden" name="notify_url" value=ipn_url) input(type="hidden" name="notify_url" value=ipn_url)
label(for="amount") Amount label(for="amount") Amount
input(type="number", name="amount" value="1.00") .row.form-group
select(name="currency_code") .col-10
input.form-control(type="number", name="amount" value="1.00")
.col
select.form-control(name="currency_code")
option(value="EUR") EUR option(value="EUR") EUR
option(value="USD") USD option(value="USD") USD
if user if user
@ -32,14 +33,13 @@ block body
else else
input#custominfo(type="hidden", name="custom", value="") input#custominfo(type="hidden", name="custom", value="")
if minecraft if minecraft
.check .form-check.form-check-inline
label(for="mcinclude") Include Minecraft Username input.form-check-input(id="mcinclude" type="checkbox" checked="false")
input(id="mcinclude" type="checkbox") label.form-check-label(for="mcinclude") Include Minecraft Username
.mcuname(style="display: none;") .mcuname.form-group(style="display: none;")
input(id="mcusername", autocomplete="off") label(for="mcusername") Minecraft Username
input.form-control(id="mcusername", autocomplete="off")
.buttoncont .buttoncont
a.button.donate(name="submit", onclick="$(this).closest('form').submit()") a.btn.btn-primary.text-light(name="submit", onclick="$(this).closest('form').submit()")
i.fa.fa-fw.fa-paypal i.fa.fa-fw.fa-paypal
|Donate |&nbsp;Donate
br
b Currently you can only donate using PayPal.

View File

@ -22,7 +22,7 @@
fb:login-button(scope="public_profile,email", onlogin="checkLoginState();" data-max-rows="1", data-size="large", data-button-type="login_with", data-show-faces="false", data-auto-logout-link="false", data-use-continue-as="false") fb:login-button(scope="public_profile,email", onlogin="checkLoginState();" data-max-rows="1", data-size="large", data-button-type="login_with", data-show-faces="false", data-auto-logout-link="false", data-use-continue-as="false")
if google_auth if google_auth
script(src="https://apis.google.com/js/api:client.js") script(src="https://apis.google.com/js/api:client.js")
a.googleLogin a.login-btn.google-login
i.fa.fa-fw.fa-google i.fa.fa-fw.fa-google
span Log in With Google span Log in With Google
script. script.
@ -35,7 +35,7 @@
cookiepolicy: 'single_host_origin', cookiepolicy: 'single_host_origin',
fetch_basic_profile: true fetch_basic_profile: true
}); });
attachSignin(document.querySelector('.googleLogin')); attachSignin(document.querySelector('.google-login'));
}); });
}; };
@ -60,10 +60,10 @@
startApp() startApp()
if twitter_auth if twitter_auth
a.twitterLogin.loginDiag(href="/api/external/twitter/login") a.login-btn.twitter-login.login-dialog-pop(href="/api/external/twitter/login")
i.fa.fa-fw.fa-twitter i.fa.fa-fw.fa-twitter
span Log in With Twitter span Log in With Twitter
if discord_auth if discord_auth
a.discordLogin.loginDiag(href="/api/external/discord/login") a.login-btn.discord-login.login-dialog-pop(href="/api/external/discord/login")
img(src="/static/image/Discord-Logo-White.svg") img(src="/static/image/Discord-Logo-White.svg")
span Log in With Discord span Log in With Discord

View File

@ -3,25 +3,46 @@ block title
|Icy Network |Icy Network
block body block body
section#home .carousel.slide#myCarousel(data-ride="carousel")
.content ol.carousel-indicators
h1 Welcome to Icy Network! li.active(data-target="#myCarousel" data-slide-to="0")
li(data-target="#myCarousel" data-slide-to="1")
.carousel-inner
.carousel-item.active
img.first-slide(src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==", alt="First Slide")
.container
.carousel-caption.text-left
h1 Welcome to Icy Network
p Icy Network is a Global Network of Communities and Websites, United by a Single Login p Icy Network is a Global Network of Communities and Websites, United by a Single Login
.divboxes a.btn.btn-lg.btn-primary(href="#" role="button") Learn More
.divbox#secure .carousel-item
span.head img.second-slide(src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==", alt="Second Slide")
i.fa.fa-lock.fa-fw .container
span.text Secure Login .carousel-caption.text-left
span.text A secure login system with Two-Factor Authentication possibility h1 Join our Minecraft Server
.divbox#secure p We have a Minecraft Server up at mc.icynet.eu, join now!
span.head a.carousel-control-prev(href="#myCarousel" role="button" data-slide="prev")
i.fa.fa-github.fa-fw span.carousel-control-prev-icon(aria-hidden="true")
span.text Open Source span.sr-only Previous
span.text All of our platforms are Open Source Software hosted on our a.carousel-control-next(href="#myCarousel" role="button" data-slide="next")
a(href="https://github.com/IcyNet", target="_blank") GitHub Organization span.carousel-control-next-icon(aria-hidden="true")
section#news span.sr-only Next
.content .container.marketing
h1 Icy Network News .row
.newsfeed .col-lg-4
p Please enable JavaScript to view this content. span.circular-header.bg-warning
a.older(href="/news") View all articles i.fa.fa-fw.fa-lock
h2 Secure Login
p We have a secure login system with the possibility to even further secure your account with Two-Factor Authentication.
.col-lg-4
span.circular-header.bg-success
i.fa.fa-fw.fa-github
h2 Open Source
p All of our services are Free and Open Source Software (FOSS) hosted on GitHub.
p
a.btn.btn-secondary(href="https://github.com/IcyNet", target="_blank") Browse Repositories
.col-lg-4
span.circular-header.bg-info
i.fa.fa-fw.fa-users
h2 Community-oriented
p Our services are made to serve communities. We unite them all with a single login system with support for multiple authentication protocols.

View File

@ -2,7 +2,7 @@ doctype html
html html
head head
meta(charset="utf8") meta(charset="utf8")
meta(name="viewport", content="width=device-width, initial-scale=1") meta(name="viewport", content="width=device-width, initial-scale=1, shrink-to-fit=no")
block meta block meta
meta(name="og:title", content="Icy Network") meta(name="og:title", content="Icy Network")
meta(name="og:description", content="Icy Network is a Global Network of Communities and Websites, United by a Single Login") meta(name="og:description", content="Icy Network is a Global Network of Communities and Websites, United by a Single Login")
@ -27,8 +27,8 @@ html
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})(); })();
block links block links
link(rel="stylesheet", type="text/css", href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css")
link(rel="stylesheet", type="text/css", href="/style/main.css") link(rel="stylesheet", type="text/css", href="/style/main.css")
link(rel="stylesheet", type="text/css", href="/style/footer.css")
link(rel="stylesheet", type="text/css", href="//fonts.googleapis.com/css?family=Open+Sans") link(rel="stylesheet", type="text/css", href="//fonts.googleapis.com/css?family=Open+Sans")
link(rel="stylesheet", type="text/css", href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css") link(rel="stylesheet", type="text/css", href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css")
script(src="/script/main.js") script(src="/script/main.js")
@ -59,69 +59,51 @@ html
p Please consider enabling JavaScript for the full experience. p Please consider enabling JavaScript for the full experience.
if matomo if matomo
p p
img(src="#{matomo.track_url}piwik.php?idsite=1&rec=1" style="border:0;" alt="") img.d-inline-block.align-top(src="#{matomo.track_url}piwik.php?idsite=1&rec=1" style="border:0;" alt="")
block banner
.banner
.logo
.part1 Icy
.part2 Network
block dialog
.dialog-drop#dialog
.dialog
.head
#title
#close
i.fa.fa-fw.fa-times
.content#content
block nav block nav
.anchor nav.navbar.navbar-expand-lg.navbar-light.bg-light.sticky-top
nav.navigator a.navbar-brand(href="/")
li.hidden#navlogo img(src="/static/image/icynet-icon.svg" width="30" heigth="30")
a(href="/") |Icy Network
.logo.small
.part1 Icy button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navCollapse" aria-controls="navCollapse" aria-expanded="false" aria-label="Toggle navigation")
.part2 Network span.navbar-toggler-icon
.menu
label.showButton(for="show-menu") .navbar-collapse.collapse#navCollapse
i.fa.fa-fw.fa-bars ul.mr-auto.navbar-nav
input(type="checkbox" id="show-menu") li.nav-item
.list a.nav-link(href="/") Home
ul li.nav-item
li a.nav-link(href="/news") News
a.scroll(href="/#home") Home li.nav-item
li a.nav-link(href="https://forum.icynet.eu/") Forum
a.scroll(href="/#news") News ul.navbar-nav.my-2.my-lg-0
li
a(href="https://forum.icynet.eu/") Forum
ul.floating
if user if user
li#user li.nav-item
a(href="/user/manage") #{user.display_name} a.nav-link(href="/user/manage") #{user.display_name}
li li.nav-item
a(href="/logout") Log out a.nav-link(href="/logout") Log out
else else
li li.nav-item
a(href="/login") Log in a.nav-link(href="/login") Log in
main(role="main")
block body block body
block footer block footer
footer //FOOTER
img.squeebot(src="/static/image/squeebot.svg") footer.container
span.copyright p.float-right
.logo.small
.part1 Icy
.part2 Network
.social
a.socialbtn#github(href="https://github.com/IcyNet/" target="_blank") a.socialbtn#github(href="https://github.com/IcyNet/" target="_blank")
i.fa.fa-fw.fa-github i.fa.fa-fw.fa-github
a.socialbtn#twitter(href="https://twitter.com/IcyNet" target="_blank") a.socialbtn#twitter(href="https://twitter.com/IcyNet" target="_blank")
i.fa.fa-fw.fa-twitter i.fa.fa-fw.fa-twitter
a.socialbtn#discord(href="https://discord.gg/Xe7MKSx" target="_blank") a.socialbtn#discord(href="https://discord.gg/Xe7MKSx" target="_blank")
span.discordlogo span.discordlogo
span &copy; 2018 - Icy Network - Some Rights Reserved p
br |&copy; 2017-2018 Icy Network
span | ·
a(href="/docs/terms-of-service") Terms of Service a(href="/docs/terms-of-service") Terms
span.divider | | ·
a(href="/docs/privacy-policy") Privacy Policy a(href="/docs/privacy-policy") Privacy
span.divider | | ·
a(href="/donate") Donate a(href="/donate") Donate

View File

@ -24,25 +24,31 @@ block title
|Icy Network - News - 404 |Icy Network - News - 404
block body block body
.document .container.mt-4
.content
if !article if !article
span.error No such article span.error No such article
else else
.article nav(aria-label="breadcrumb")
ol.breadcrumb
li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item
a(href="/news") News
li.breadcrumb-item.active(aria-current="page")= article.title
.news-article
if user && user.privilege && user.privilege > 0 && !editing if user && user.privilege && user.privilege > 0 && !editing
a.button(style="float: right;" href="?edit=1") Edit a.btn.btn-primary.float-right(href="?edit=1") Edit
.title= article.title h1.news-title= article.title
.author Published by p.news-meta Published by
span #{article.author.display_name} span #{article.author.display_name}
|at |at #{new Date(article.created_at)}
.timestamp #{new Date(article.created_at)}
if editing if editing
.content(contenteditable="true" id="editor1")!= article.content .content(contenteditable="true" id="editor1")!= article.content
else else
.content!= article.content .content!= article.content
if editing if editing
.button(id="done") Done editing .btn.btn-success(id="done") Done editing
br br
script. script.
CKEDITOR.disableAutoInline = true; CKEDITOR.disableAutoInline = true;
@ -62,7 +68,3 @@ block body
} }
}); });
}); });
.return
a(href="/news") Back to the news archive

View File

@ -7,25 +7,34 @@ block title
|Icy Network - News - Compose |Icy Network - News - Compose
block body block body
.document .container.mt-4.mb-4
.content nav(aria-label="breadcrumb")
ol.breadcrumb
li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item
a(href="/news") News
li.breadcrumb-item.active(aria-current="page") Compose
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-warning
span #{message.text} span #{message.text}
form(action="", method="post") form(action="", method="post")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="title") Title label(for="title") Title
input(type="text", name="title", id="title", value=formkeep.title) input.form-control(type="text", name="title", id="title", value=formkeep.title, aria-describedby="titleHelp")
small.form-text.text-muted#titleHelp Describe your article in a short sentence
.form-group
label(for="composer1") Content label(for="composer1") Content
textarea(name="content" id="composer1") #{formkeep.content} textarea.form-control(name="content" id="composer1") #{formkeep.content}
.form-group
label(for="tags") Tags label(for="tags") Tags
input(type="text", name="tags", id="tags", value=formkeep.tags) input.form-control(type="text", name="tags", id="tags", value=formkeep.tags)
input(type="submit", value="Submit") button.btn.btn-primary(type="submit") Submit
script. script.
CKEDITOR.replace('composer1') CKEDITOR.replace('composer1')
a(href="/news") Back to news directory

View File

@ -7,33 +7,49 @@ block title
|Icy Network - News |Icy Network - News
block body block body
.document .container.mt-4
.content nav(aria-label="breadcrumb")
ol.breadcrumb
li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item.active(aria-current="page") News
if user && user.privilege && user.privilege > 0 if user && user.privilege && user.privilege > 0
a.button(style="float: right;" href="/news/compose") New Article a.btn.btn-light.float-right(href="/news/compose") New Article
h1 Icy Network News Archive h1.pb-3.mb-4.border-bottom Icy Network News
if news.error if news.error
span.error There are no articles to show. span.error There are no articles to show.
else else
if news.page if news.page
span.pagenum nav(aria-label="pagination")
|Page #{news.page.page} of #{news.page.pages} ul.pagination
.pgn
if news.page.page > 1 if news.page.page > 1
a.button(href="/news/?page=" + (news.page.page - 1)) Previous li.page-item
a.page-link(href="/news/?page=" + (news.page.page - 1)) Previous
else
li.page-item.disabled
a.page-link(href="#" tabindex="-1") Previous
- var n = 0 - var n = 0
while n < news.page.pages while n < news.page.pages
a.button(href="/news/?page=" + (n + 1))= n + 1 - var current = n + 1 == news.page.page
li.page-item(class=(current ? 'active' : ''))
a.page-link(href="/news/?page=" + (n + 1))= n + 1
if current
span.sr-only &nbsp;(current)
- n++ - n++
if news.page.pages > news.page.page if news.page.pages > news.page.page
a.button(href="/news/?page=" + (news.page.page + 1)) Next li.page-item
a.page-link(href="/news/?page=" + (news.page.page + 1)) Next
else
li.page-item.disabled
a.page-link(href="#" tabindex="-1") Next
each val in news.articles each val in news.articles
.article .news-article
a.title(href="/news/" + val.id + "-" + val.slug)= val.title h2.news-title
.author Published by a(href="/news/" + val.id + "-" + val.slug)= val.title
p.news-meta Published by
span #{val.author.display_name} span #{val.author.display_name}
|at |at #{new Date(val.created_at)}
.timestamp #{new Date(val.created_at)}
.content!= val.content .content!= val.content
hr hr

View File

@ -3,21 +3,22 @@ block title
|Icy Network - Banned Account |Icy Network - Banned Account
block body block body
.wrapper .container.mt-4.mb-4
.boxcont
.box#login
if ipban if ipban
h1 This IP Address is BANNED! h1 This IP Address is banned from accessing Icy Network
else else
h1 This User is BANNED! h1 This user is banned from accessing Icy Network.
p This user currently has #{bans.length} ban(s) active p This user currently has #{bans.length} ban(s) active.
each ban in bans each ban in bans
.message.error.ban .ban.alert.alert-danger
label Banned p
b Banned at
.date #{new Date(ban.banned)} .date #{new Date(ban.banned)}
label Reason p
b Reason
.reason #{ban.reason} .reason #{ban.reason}
label Expires at p
b Expires at
.expiry .expiry
if !ban.expiry if !ban.expiry
b This ban is permanent. b This ban is permanent.

View File

@ -3,27 +3,34 @@ block title
|Icy Network - Change User Email |Icy Network - Change User Email
block body block body
.wrapper .container.mt-4.mb-4
.boxcont nav(aria-label="breadcrumb")
.box#totpcheck ol.breadcrumb
h1 Change Your Email li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item
a(href="/user/manage") User Settings
li.breadcrumb-item.active(aria-current="page") Change Email Address
h1 Change Your Email Address
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-success
span #{message.text} span #{message.text}
form#loginForm(method="POST", action="") form#loginForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
if email if email
.form-group
label(for="email") Current Email Address label(for="email") Current Email Address
input.form-control(type="email", name="email", id="email")
small Email Hint: #{email} small Email Hint: #{email}
br .form-group
input(type="email", name="email", id="email")
label(for="email_new") New Email Address label(for="email_new") New Email Address
input(type="email", name="email_new", id="email_new") input.form-control(type="email", name="email_new", id="email_new")
if password if password
.form-group
label(for="password") Password label(for="password") Password
input(type="password", name="password", id="password") input.form-control(type="password", name="password", id="password")
input(type="submit", value="Change") button.btn.btn-primary(type="submit") Done

View File

@ -3,27 +3,28 @@ block title
|Icy Network - Log In |Icy Network - Log In
block body block body
.wrapper .container.mb-4.mt-4
.boxcont
.box#login
h1 Log in h1 Log in
.left .row
.col
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-success
span #{message.text} span #{message.text}
form#loginForm(method="POST", action="") form#loginForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="username") Username or Email Address label(for="username") Username or Email Address
input(type="text", name="username", id="username") input.form-control(type="text", name="username", id="username")
.form-group
label(for="password") Password label(for="password") Password
input(type="password", name="password", id="password") input.form-control(type="password", name="password", id="password")
input(type="submit", value="Log in") button.btn.btn-primary(type="submit") Log in
a#create(href="/register") Create an account a(href="/register") Create an account
span.divider &middot; | ·
a#create(href="/login/reset") Forgot password? a(href="/login/reset") Forgot password?
.right aside.col
include ../includes/external.pug include ../includes/external.pug

View File

@ -3,20 +3,19 @@ block title
|Icy Network - Password Required |Icy Network - Password Required
block body block body
.wrapper .container.mt-4.mb-4
.boxcont
.box#totpcheck
h1 Enter your password h1 Enter your password
small.descr This action requires your password to continue p This action requires your password to continue
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-warning
span #{message.text} span #{message.text}
form#loginForm(method="POST", action=post) form#loginForm(method="POST", action=post)
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="password") Password label(for="password") Password
input(type="password", name="password", id="password") input.form-control#password(type="password", name="password")
input(type="submit", value="Continue") button.btn.btn-primary(type="submit") Continue

View File

@ -3,25 +3,34 @@ block title
|Icy Network - Change User Password |Icy Network - Change User Password
block body block body
.wrapper .container.mt-4.mb-4
.boxcont if user
.box#totpcheck nav(aria-label="breadcrumb")
ol.breadcrumb
li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item
a(href="/user/manage") User Settings
li.breadcrumb-item.active(aria-current="page") Change Password
h1 Change Your Password h1 Change Your Password
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-success
span #{message.text} span #{message.text}
form#loginForm(method="POST", action="") form#loginForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
if !token if !token
.form-group
label(for="password_old") Current Password label(for="password_old") Current Password
input(type="password", name="password_old", id="password_old") input.form-control#password_old(type="password", name="password_old")
.form-group
label(for="password") New Password label(for="password") New Password
input(type="password", name="password", id="password") input.form-control#password(type="password", name="password")
.form-group
label(for="password_repeat") Repeat New Password label(for="password_repeat") Repeat New Password
input(type="password", name="password_repeat", id="password_repeat", autocomplete="off") input.form-control#password_repeat(type="password", name="password_repeat", autocomplete="off")
div#repeatcheck(style="display: none") small#repeatcheck(style="display: none")
input(type="submit", value="Change") button.btn.btn-primary(type="submit") Change

View File

@ -3,35 +3,45 @@ block title
|Icy Network - Register |Icy Network - Register
block body block body
.wrapper .container.mb-4.mt-4
.boxcont
.box#login
h1 Create a new account h1 Create a new account
.left .row
.col
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-success
span #{message.text} span #{message.text}
form#loginForm(method="POST", action="") form#loginForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="username") Username label(for="username") Username
input(type="text", name="username", id="username", value=formkeep.username) input.form-control#username(type="text", name="username", value=formkeep.username, aria-labelledby="usernameText")
small#usernameText English characters, numbers and -_ only.
.form-group
label(for="display_name") Display Name label(for="display_name") Display Name
input(type="text", name="display_name", id="display_name", value=formkeep.display_name) input.form-control#display_name(type="text", name="display_name", value=formkeep.display_name, aria-labelledby="display_nameText")
small#display_nameText The name displayed on your public profiles.
.form-group
label(for="email") Email Address label(for="email") Email Address
input(type="email", name="email", id="email", value=formkeep.email) input.form-control#email(type="email", name="email", value=formkeep.email)
.form-group
label(for="password") Password label(for="password") Password
input(type="password", name="password", id="password") input.form-control#password(type="password", name="password", aria-labelledby="passwordText")
small#passwordText 8 characters minimum.
.form-group
label(for="password_repeat") Repeat Password label(for="password_repeat") Repeat Password
input(type="password", name="password_repeat", id="password_repeat", autocomplete="off") input.form-control#password_repeat(type="password", name="password_repeat", autocomplete="off")
div#repeatcheck(style="display: none") small#repeatcheck(style="display: none")
if recaptcha if recaptcha
.form-group
label Captcha
script(src='https://www.google.com/recaptcha/api.js') script(src='https://www.google.com/recaptcha/api.js')
.g-recaptcha(data-sitekey=recaptcha) .g-recaptcha(data-sitekey=recaptcha)
input(type="submit", value="Register") button.btn.btn-primary(type="submit") Register
a#create(href="/login") Log in with an existing account | or
.right a(href="/login") log in with an existing account
aside.col
include ../includes/external.pug include ../includes/external.pug

View File

@ -3,24 +3,39 @@ block title
|Icy Network - User Settings |Icy Network - User Settings
block body block body
.wrapper .container.mt-4.mb-4
.boxcont nav(aria-label="breadcrumb")
.box#settings ol.breadcrumb
li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item.active(aria-current="page") User Settings
h1 User Settings h1 User Settings
.left .row
.col-3
.nav.flex-column.nav-pills#v-pills-tab(role="tablist", aria-orientation="vertical")
a.nav-link.active#v-pills-main-tab(data-toggle="tab", href="#v-pills-main", role="tab", aria-control="v-pills-main", aria-selected="true") General Settings
a.nav-link#v-pills-social-tab(data-toggle="tab", href="#v-pills-social", role="tab", aria-control="v-pills-social", aria-selected="false") Social Accounts
a.nav-link#v-pills-oauth2-tab(data-toggle="tab", href="#v-pills-oauth2", role="tab", aria-control="v-pills-oauth2", aria-selected="false") OAuth2 Authorizations
a.nav-link#v-pills-actions-tab(data-toggle="tab", href="#v-pills-actions", role="tab", aria-control="v-pills-actions", aria-selected="false") Account Actions
.col-9
.tab-content#v-pills-tabContent
.tab-pane.fade.show.active#v-pills-main(role="tabpanel", aria-labelledby="v-pills-main")
h2 General Settings
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-success
span #{message.text} span #{message.text}
form#loginForm(method="POST", action="") form#loginForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="username") Username label(for="username") Username
input(type="text", name="username", id="username", value=user.username, disabled) input.form-control(type="text", name="username", id="username", value=user.username, disabled)
.form-group
label(for="display_name") Display Name label(for="display_name") Display Name
input(type="text", name="display_name", id="display_name", value=user.display_name) input.form-control(type="text", name="display_name", id="display_name", value=user.display_name)
label Avatar label Avatar
.avatarCont .avatarCont
include ../includes/avatar.pug include ../includes/avatar.pug
@ -28,10 +43,10 @@ block body
a#newAvatar(href='#') Change Avatar a#newAvatar(href='#') Change Avatar
if user.avatar_file if user.avatar_file
a#removeAvatar(href='#') Remove Avatar a#removeAvatar(href='#') Remove Avatar
input(type="submit", value="Save Settings") button.btn.btn-primary(type="submit") Save Settings
.right .tab-pane.fade#v-pills-social(role="tabpanel", aria-labelledby="v-pills-social")
h3 Social Media Accounts h3 Social Media Accounts
.specify(title="You can add social media accounts to your account for ease of login. Once added, logging in from linked sources logs you into this account automatically.") ? p You can add social media accounts to your account for ease of login. Once added, logging in from linked sources logs you into this account automatically.
include ../includes/external.pug include ../includes/external.pug
if google_auth == false if google_auth == false
a.option.accdisconnect(href="/api/external/google/remove") a.option.accdisconnect(href="/api/external/google/remove")
@ -49,7 +64,14 @@ block body
a.option.accdisconnect(href="/api/external/discord/remove") a.option.accdisconnect(href="/api/external/discord/remove")
i.fa.fa-fw.fa-times i.fa.fa-fw.fa-times
|Unlink Discord |Unlink Discord
h3 Other Options .tab-pane.fade#v-pills-oauth2(role="tabpanel", aria-labelledby="v-pills-oauth2")
.clients
h2 Authorized Applications
p Applications which have access to basic user information. You may restrict access at any time by pressing the red icon on the top right of the application card.
.cl#clientlist
p Please enable JavaScript to view this content.
.tab-pane.fade#v-pills-actions(role="tabpanel", aria-labelledby="v-pills-actions")
h3 Account Actions
if password if password
a.option(href="/user/manage/password") a.option(href="/user/manage/password")
i.fa.fa-fw.fa-lock i.fa.fa-fw.fa-lock
@ -65,8 +87,3 @@ block body
a.option(href="/user/manage/email") a.option(href="/user/manage/email")
i.fa.fa-fw.fa-envelope i.fa.fa-fw.fa-envelope
|Change Email Address |Change Email Address
.clients
h2 Authorized Applications
.specify(title="Applications which have access to basic user information. You may restrict access at any time by pressing the red icon on the top right of the application card.") ?
.cl#clientlist
p Please enable JavaScript to view this content.

View File

@ -3,20 +3,19 @@ block title
|Icy Network - Log In - Verification Required |Icy Network - Log In - Verification Required
block body block body
.wrapper .container
.boxcont
.box#totpcheck
h1 Enter Code h1 Enter Code
small.descr This user has Two Factor Authentication enabled. Enter the code to log in. p This user has Two Factor Authentication enabled. Enter the code to log in.
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-success
span #{message.text} span #{message.text}
form#loginForm(method="POST", action="") form#loginForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="code") Code label(for="code") Code
input(type="text", name="code", id="code", autocomplete="off") input.form-control#code(type="text", name="code", autocomplete="off")
input(type="submit", value="Log in") button.btn.btn-primary(type="submit") Log in

View File

@ -3,33 +3,40 @@ block title
|Icy Network - Activate Authenticator |Icy Network - Activate Authenticator
block body block body
.wrapper .container.mt-5.mb-5
.boxcont nav(aria-label="breadcrumb")
.box#login ol.breadcrumb
li.breadcrumb-item
a(href="/") Home
li.breadcrumb-item
a(href="/user/manage") User Settings
li.breadcrumb-item.active(aria-current="page") Enable Two Factor Authentication
h1 Two Factor Authentication h1 Two Factor Authentication
.left .row
.col
if message.text if message.text
if message.error if message.error
.message.error .alert.alert-danger
span #{message.text} span #{message.text}
else else
.message .alert.alert-warning
span #{message.text} span #{message.text}
img.qr(src="//api.qrserver.com/v1/create-qr-code/?data=" + uri) img.qr(src="//api.qrserver.com/v1/create-qr-code/?data=" + uri)
form#totpForm(method="POST", action="") form#totpForm(method="POST", action="")
input(type="hidden", name="csrf", value=csrf) input(type="hidden", name="csrf", value=csrf)
.form-group
label(for="code") Enter the Code label(for="code") Enter the Code
input(type="text", name="code", id="code", autocomplete="off") input.form-control#code(type="text", name="code", autocomplete="off")
input(type="submit", value="Enable Now") button.btn.btn-primary(type="submit") Enable Now
.right aside.col
h3 How to use h3 How to use
ol ol
li Scan the QR Code with your authenticator app li Scan the QR Code with your authenticator app
li Enter the one-time code given to you li Enter the one-time code given to you
li You will now be asked for a code every time you log in li You will now be asked for a code every time you log in
h3 Authenticator app h3 Authenticator app
p We recommend using Google Authenticator p We recommend using Google Authenticator. You can download it below for your smartphone:
a.dlbtn(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank") a.app-button(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
img(alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png') img(alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png')
a.dlbtn.apple(href='https://itunes.apple.com/us/app/google-authenticator/id388497605', target="_blank") a.app-button.apple(href='https://itunes.apple.com/us/app/google-authenticator/id388497605', target="_blank")
img(alt='Download on the App Store' src='https://devimages-cdn.apple.com/app-store/marketing/guidelines/images/badge-download-on-the-app-store.svg') img(alt='Download on the App Store' src='https://devimages-cdn.apple.com/app-store/marketing/guidelines/images/badge-download-on-the-app-store.svg')