mirror of https://github.com/requarks/wiki
parent
3566a78cff
commit
15e4341fed
@ -1,67 +1,67 @@
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/login.css')
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/login.css')
|
||||
|
||||
// JS
|
||||
script(type='text/javascript', src='/js/libs.js')
|
||||
script(type='text/javascript', src='/js/login.js')
|
||||
// JS
|
||||
script(type='text/javascript', src='/js/libs.js')
|
||||
script(type='text/javascript', src='/js/login.js')
|
||||
|
||||
body
|
||||
#bg
|
||||
each bg in _.sampleSize([1, 2, 3],3)
|
||||
div(style="background-image:url(/images/bg_" + bg + ".jpg);")
|
||||
#root
|
||||
h1= appconfig.title
|
||||
h2 Login required
|
||||
if appflash.length > 0
|
||||
h3
|
||||
i.fa.fa-warning
|
||||
= appflash[0].title
|
||||
h4= appflash[0].message
|
||||
if appconfig.auth.local.enabled
|
||||
form(method='post', action='/login')
|
||||
input#login-user(type='text', name='email', placeholder='Email address')
|
||||
input#login-pass(type='password', name='password', placeholder='Password')
|
||||
button(type='submit') Log In
|
||||
if appconfig.authStrategies.socialEnabled
|
||||
#social
|
||||
if appconfig.auth.local.enabled
|
||||
span Or, log in using...
|
||||
else
|
||||
span Log in using...
|
||||
if appconfig.auth.microsoft && appconfig.auth.microsoft.enabled
|
||||
button.ms(onclick="window.location.assign('/login/ms')")
|
||||
i.fa.fa-windows
|
||||
span Microsoft Account
|
||||
if appconfig.auth.google && appconfig.auth.google.enabled
|
||||
button.google(onclick="window.location.assign('/login/google')")
|
||||
i.fa.fa-google
|
||||
span Google ID
|
||||
if appconfig.auth.facebook && appconfig.auth.facebook.enabled
|
||||
button.facebook(onclick="window.location.assign('/login/facebook')")
|
||||
i.fa.fa-facebook
|
||||
span Facebook
|
||||
#copyright
|
||||
= t('footer.poweredby') + ' '
|
||||
a.icon(href='https://github.com/Requarks/wiki')
|
||||
i.icon-github
|
||||
a(href='https://github.com/Requarks/wiki') Requarks Wiki
|
||||
body
|
||||
#bg
|
||||
each bg in _.sampleSize([1, 2, 3],3)
|
||||
div(style='background-image:url(/images/bg_' + bg + '.jpg);')
|
||||
#root
|
||||
h1= appconfig.title
|
||||
h2 Login required
|
||||
if appflash.length > 0
|
||||
h3
|
||||
i.fa.fa-warning
|
||||
= appflash[0].title
|
||||
h4= appflash[0].message
|
||||
if appconfig.auth.local.enabled
|
||||
form(method='post', action='/login')
|
||||
input#login-user(type='text', name='email', placeholder='Email address')
|
||||
input#login-pass(type='password', name='password', placeholder='Password')
|
||||
button(type='submit') Log In
|
||||
if appconfig.authStrategies.socialEnabled
|
||||
#social
|
||||
if appconfig.auth.local.enabled
|
||||
span Or, log in using...
|
||||
else
|
||||
span Log in using...
|
||||
if appconfig.auth.microsoft && appconfig.auth.microsoft.enabled
|
||||
button.ms(onclick='window.location.assign("/login/ms")')
|
||||
i.fa.fa-windows
|
||||
span Microsoft Account
|
||||
if appconfig.auth.google && appconfig.auth.google.enabled
|
||||
button.google(onclick='window.location.assign("/login/google")')
|
||||
i.fa.fa-google
|
||||
span Google ID
|
||||
if appconfig.auth.facebook && appconfig.auth.facebook.enabled
|
||||
button.facebook(onclick='window.location.assign("/login/facebook")')
|
||||
i.fa.fa-facebook
|
||||
span Facebook
|
||||
#copyright
|
||||
= t('footer.poweredby') + ' '
|
||||
a.icon(href='https://github.com/Requarks/wiki')
|
||||
i.icon-github
|
||||
a(href='https://github.com/Requarks/wiki') Requarks Wiki
|
||||
|
@ -1,14 +1,14 @@
|
||||
#alerts
|
||||
ul
|
||||
template(v-for="aItem in children", track-by='_uid')
|
||||
li(v-bind:class='aItem.class')
|
||||
button(v-on:click='acknowledge(aItem._uid)')
|
||||
strong {{ aItem.title }}
|
||||
span {{ aItem.message }}
|
||||
ul
|
||||
template(v-for='aItem in children', track-by='_uid')
|
||||
li(v-bind:class='aItem.class')
|
||||
button(v-on:click='acknowledge(aItem._uid)')
|
||||
strong {{ aItem.title }}
|
||||
span {{ aItem.message }}
|
||||
|
||||
if appflash.length > 0
|
||||
script(type='text/javascript').
|
||||
var alertsData = !{JSON.stringify(appflash)};
|
||||
script(type='text/javascript').
|
||||
var alertsData = !{JSON.stringify(appflash)};
|
||||
else
|
||||
script(type='text/javascript').
|
||||
var alertsData = [];
|
||||
script(type='text/javascript').
|
||||
var alertsData = [];
|
||||
|
@ -1,9 +1,8 @@
|
||||
footer.footer
|
||||
span
|
||||
= t('footer.poweredby') + ' '
|
||||
a(href='https://github.com/Requarks/wiki') Wiki.js
|
||||
| .
|
||||
ul
|
||||
li: a(href='/')= t('footer.home')
|
||||
li: a(href='#root')= t('footer.top')
|
||||
|
||||
span
|
||||
= t('footer.poweredby') + ' '
|
||||
a(href='https://github.com/Requarks/wiki') Wiki.js
|
||||
| .
|
||||
ul
|
||||
li: a(href='/')= t('footer.home')
|
||||
li: a(href='#root')= t('footer.top')
|
||||
|
@ -1,36 +1,34 @@
|
||||
|
||||
#header-container
|
||||
nav.nav.stickyscroll#header
|
||||
.nav-left
|
||||
block rootNavLeft
|
||||
a.nav-item(href='/')
|
||||
h1
|
||||
i.icon-layers
|
||||
= appconfig.title
|
||||
.nav-center
|
||||
block rootNavCenter
|
||||
.nav-item
|
||||
p.control(v-bind:class="{ 'is-loading': searchload > 0 }")
|
||||
input.input#search-input(type='text', v-model='searchq', @keyup.esc='closeSearch', @keyup.down='moveDownSearch', @keyup.up='moveUpSearch', @keyup.enter='moveSelectSearch', debounce='400', placeholder='Search...')
|
||||
span.nav-toggle
|
||||
span
|
||||
span
|
||||
span
|
||||
.nav-right
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
|
||||
transition(name="searchresults-anim", enter-active-class="slideInDown", leave-active-class="fadeOutUp")
|
||||
.searchresults.animated(v-show='searchactive', v-cloak, style={'display':'none'})
|
||||
p.searchresults-label Search Results
|
||||
ul.searchresults-list
|
||||
li(v-if="searchres.length === 0")
|
||||
a: em No results matching your query
|
||||
li(v-for='sres in searchres', v-bind:class="{ 'is-active': searchmovekey === 'res.' + sres._id }")
|
||||
a(v-bind:href="'/' + sres._id") {{ sres.title }}
|
||||
p.searchresults-label(v-if='searchsuggest.length > 0') Did you mean...?
|
||||
ul.searchresults-list(v-if='searchsuggest.length > 0')
|
||||
li(v-for='sug in searchsuggest', v-bind:class="{ 'is-active': searchmovekey === 'sug.' + sug }")
|
||||
a(v-on:click="useSuggestion(sug)") {{ sug }}
|
||||
|
||||
nav.nav.stickyscroll#header
|
||||
.nav-left
|
||||
block rootNavLeft
|
||||
a.nav-item(href='/')
|
||||
h1
|
||||
i.icon-layers
|
||||
= appconfig.title
|
||||
.nav-center
|
||||
block rootNavCenter
|
||||
.nav-item
|
||||
p.control(v-bind:class='{ "is-loading": searchload > 0 }')
|
||||
input.input#search-input(type='text', v-model='searchq', @keyup.esc='closeSearch', @keyup.down='moveDownSearch', @keyup.up='moveUpSearch', @keyup.enter='moveSelectSearch', debounce='400', placeholder='Search...')
|
||||
span.nav-toggle
|
||||
span
|
||||
span
|
||||
span
|
||||
.nav-right
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
|
||||
transition(name='searchresults-anim', enter-active-class='slideInDown', leave-active-class='fadeOutUp')
|
||||
.searchresults.animated(v-show='searchactive', v-cloak, style={'display':'none'})
|
||||
p.searchresults-label Search Results
|
||||
ul.searchresults-list
|
||||
li(v-if='searchres.length === 0')
|
||||
a: em No results matching your query
|
||||
li(v-for='sres in searchres', v-bind:class='{ "is-active": searchmovekey === "res." + sres._id }')
|
||||
a(v-bind:href='"/" + sres._id') {{ sres.title }}
|
||||
p.searchresults-label(v-if='searchsuggest.length > 0') Did you mean...?
|
||||
ul.searchresults-list(v-if='searchsuggest.length > 0')
|
||||
li(v-for='sug in searchsuggest', v-bind:class='{ "is-active": searchmovekey === "sug." + sug }')
|
||||
a(v-on:click='useSuggestion(sug)') {{ sug }}
|
||||
|
@ -1,29 +1,29 @@
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/error.css')
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/error.css')
|
||||
|
||||
body(class='is-forbidden')
|
||||
.container
|
||||
a(href='/'): img(src='/favicons/android-icon-96x96.png')
|
||||
h1 Forbidden
|
||||
h2 Sorry, you don't have the necessary permissions to access this page.
|
||||
a.button.is-amber.is-inverted(href='/') Go Home
|
||||
body(class='is-forbidden')
|
||||
.container
|
||||
a(href='/'): img(src='/favicons/android-icon-96x96.png')
|
||||
h1 Forbidden
|
||||
h2 Sorry, you don't have the necessary permissions to access this page.
|
||||
a.button.is-amber.is-inverted(href='/') Go Home
|
||||
|
@ -1,30 +1,30 @@
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/error.css')
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/error.css')
|
||||
|
||||
body(class='is-notexist')
|
||||
.container
|
||||
a(href='/'): img(src='/favicons/android-icon-96x96.png')
|
||||
h1= message
|
||||
h2 Would you like to create this entry?
|
||||
a.button.is-amber.is-inverted.is-featured(href='/create/' + newpath) Create
|
||||
a.button.is-amber.is-inverted(href='/') Go Home
|
||||
body(class='is-notexist')
|
||||
.container
|
||||
a(href='/'): img(src='/favicons/android-icon-96x96.png')
|
||||
h1= message
|
||||
h2 Would you like to create this entry?
|
||||
a.button.is-amber.is-inverted.is-featured(href='/create/' + newpath) Create
|
||||
a.button.is-amber.is-inverted(href='/') Go Home
|
||||
|
@ -1,33 +1,33 @@
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/error.css')
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/error.css')
|
||||
|
||||
body(class='is-error')
|
||||
.container
|
||||
a(href='/'): img(src='/favicons/android-icon-96x96.png')
|
||||
h1= message
|
||||
h2 Oops, something went wrong
|
||||
a.button.is-amber.is-inverted.is-featured(href='/') Go Home
|
||||
body(class='is-error')
|
||||
.container
|
||||
a(href='/'): img(src='/favicons/android-icon-96x96.png')
|
||||
h1= message
|
||||
h2 Oops, something went wrong
|
||||
a.button.is-amber.is-inverted.is-featured(href='/') Go Home
|
||||
|
||||
if error.stack
|
||||
h3 Detailed debug trail:
|
||||
pre: code #{error.stack}
|
||||
if error.stack
|
||||
h3 Detailed debug trail:
|
||||
pre: code #{error.stack}
|
||||
|
@ -1,38 +1,38 @@
|
||||
doctype html
|
||||
html
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
head
|
||||
meta(http-equiv='X-UA-Compatible', content='IE=edge')
|
||||
meta(charset='UTF-8')
|
||||
meta(name='viewport', content='width=device-width, initial-scale=1')
|
||||
meta(name='theme-color', content='#009688')
|
||||
meta(name='msapplication-TileColor', content='#009688')
|
||||
meta(name='msapplication-TileImage', content='/favicons/ms-icon-144x144.png')
|
||||
title= appconfig.title
|
||||
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
// Favicon
|
||||
each favsize in [57, 60, 72, 76, 114, 120, 144, 152, 180]
|
||||
link(rel='apple-touch-icon', sizes=favsize + 'x' + favsize, href='/favicons/apple-icon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='icon', type='image/png', sizes='192x192', href='/favicons/android-icon-192x192.png')
|
||||
each favsize in [32, 96, 16]
|
||||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href='/favicons/favicon-' + favsize + 'x' + favsize + '.png')
|
||||
link(rel='manifest', href='/manifest.json')
|
||||
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/app.css')
|
||||
// CSS
|
||||
link(type='text/css', rel='stylesheet', href='/css/libs.css')
|
||||
link(type='text/css', rel='stylesheet', href='/css/app.css')
|
||||
|
||||
// JS
|
||||
script(type='text/javascript', src='/js/libs.js')
|
||||
script(type='text/javascript', src='/js/app.js')
|
||||
// JS
|
||||
script(type='text/javascript', src='/js/libs.js')
|
||||
script(type='text/javascript', src='/js/app.js')
|
||||
|
||||
block head
|
||||
block head
|
||||
|
||||
body
|
||||
#root.has-stickynav
|
||||
include ./common/header.pug
|
||||
include ./common/alerts.pug
|
||||
main
|
||||
block content
|
||||
include ./common/footer.pug
|
||||
body
|
||||
#root.has-stickynav
|
||||
include ./common/header.pug
|
||||
include ./common/alerts.pug
|
||||
main
|
||||
block content
|
||||
include ./common/footer.pug
|
||||
|
||||
block outside
|
||||
block outside
|
||||
|
@ -1,33 +1,33 @@
|
||||
|
||||
.modal#modal-admin-users-create
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-blue Create / Authorize User
|
||||
section
|
||||
label.label Email address:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='e.g. john.doe@company.com', v-model='email')
|
||||
span.help.is-red.is-hidden This email is invalid!
|
||||
section
|
||||
label.label Provider:
|
||||
p.control.is-fullwidth
|
||||
select(v-model='provider')
|
||||
option(value='local') Local Database
|
||||
option(value='windowslive') Microsoft Account
|
||||
option(value='google') Google ID
|
||||
option(value='facebook') Facebook
|
||||
section(v-if="provider=='local'")
|
||||
label.label Password:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='', v-model='password')
|
||||
span.help.is-red.is-hidden This password is invalid!
|
||||
section(v-if="provider=='local'")
|
||||
label.label Full Name:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='e.g. John Doe', v-model='name')
|
||||
span.help.is-red.is-hidden This name is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="cancel") Discard
|
||||
a.button.is-blue(v-on:click="create", v-if="provider=='local'") Create User
|
||||
a.button.is-blue(v-on:click="create", v-if="provider!='local'") Authorize User
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-blue Create / Authorize User
|
||||
section
|
||||
label.label Email address:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='e.g. john.doe@company.com', v-model='email')
|
||||
span.help.is-red.is-hidden This email is invalid!
|
||||
section
|
||||
label.label Provider:
|
||||
p.control.is-fullwidth
|
||||
select(v-model='provider')
|
||||
option(value='local') Local Database
|
||||
option(value='windowslive') Microsoft Account
|
||||
option(value='google') Google ID
|
||||
option(value='facebook') Facebook
|
||||
section(v-if='provider=="local"')
|
||||
label.label Password:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='', v-model='password')
|
||||
span.help.is-red.is-hidden This password is invalid!
|
||||
section(v-if='provider=="local"')
|
||||
label.label Full Name:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='e.g. John Doe', v-model='name')
|
||||
span.help.is-red.is-hidden This name is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
|
||||
a.button.is-blue(v-on:click='create', v-if='provider=="local"') Create User
|
||||
a.button.is-blue(v-on:click='create', v-if='provider!="local"') Authorize User
|
||||
|
@ -1,10 +1,10 @@
|
||||
.modal#modal-admin-users-delete
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-red Delete User Account?
|
||||
section
|
||||
span Are you sure you want to delete this user account? This action cannot be undone!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="cancel") Abort
|
||||
a.button.is-red(v-on:click="deleteUser") Delete
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-red Delete User Account?
|
||||
section
|
||||
span Are you sure you want to delete this user account? This action cannot be undone!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='cancel') Abort
|
||||
a.button.is-red(v-on:click='deleteUser') Delete
|
||||
|
@ -1,10 +1,10 @@
|
||||
.modal#modal-create-discard
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-orange Discard?
|
||||
section
|
||||
span Are you sure you want to leave this page and loose anything you wrote so far?
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-create-discard Stay on page
|
||||
a.button.is-orange(href='/') Discard
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-orange Discard?
|
||||
section
|
||||
span Are you sure you want to leave this page and loose anything you wrote so far?
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-create-discard Stay on page
|
||||
a.button.is-orange(href='/') Discard
|
||||
|
@ -1,14 +1,14 @@
|
||||
|
||||
.modal#modal-create-prompt
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue Create New Document
|
||||
section
|
||||
label.label Enter the new document path:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='page-name')#txt-create-prompt
|
||||
span.help.is-danger.is-hidden This document path is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-create-prompt Discard
|
||||
a.button.is-light-blue.btn-create-go Create
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue Create New Document
|
||||
section
|
||||
label.label Enter the new document path:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-create-prompt(type='text', placeholder='page-name')
|
||||
span.help.is-danger.is-hidden This document path is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-create-prompt Discard
|
||||
a.button.is-light-blue.btn-create-go Create
|
||||
|
@ -1,11 +1,11 @@
|
||||
|
||||
.modal#modal-edit-discard
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-orange Discard?
|
||||
section
|
||||
span Are you sure you want to leave this page and loose any modifications?
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-edit-discard Stay on page
|
||||
a.button.is-orange(href='/' + pageData.meta.path) Discard
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-orange Discard?
|
||||
section
|
||||
span Are you sure you want to leave this page and loose any modifications?
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-edit-discard Stay on page
|
||||
a.button.is-orange(href='/' + pageData.meta.path) Discard
|
||||
|
@ -1,23 +1,23 @@
|
||||
|
||||
.modal#modal-editor-codeblock
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content.is-expanded
|
||||
|
||||
header.is-green
|
||||
span Insert Code Block
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content.is-expanded
|
||||
|
||||
header.is-green
|
||||
span Insert Code Block
|
||||
|
||||
section.is-gapless
|
||||
.columns.is-stretched
|
||||
.column.is-one-quarter.modal-sidebar.is-green(style={'max-width':'350px'})
|
||||
.model-sidebar-header Language
|
||||
.model-sidebar-content
|
||||
p.control.is-fullwidth
|
||||
select(v-model='modeSelected')
|
||||
option(v-for="mode in modes" v-bind:value='mode.name') {{ mode.caption }}
|
||||
.column.ace-container
|
||||
#codeblock-editor
|
||||
section.is-gapless
|
||||
.columns.is-stretched
|
||||
.column.is-one-quarter.modal-sidebar.is-green(style={'max-width':'350px'})
|
||||
.model-sidebar-header Language
|
||||
.model-sidebar-content
|
||||
p.control.is-fullwidth
|
||||
select(v-model='modeSelected')
|
||||
option(v-for='mode in modes', v-bind:value='mode.name') {{ mode.caption }}
|
||||
.column.ace-container
|
||||
#codeblock-editor
|
||||
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="cancel") Discard
|
||||
a.button.is-green(v-on:click="insertCode") Insert Code Block
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
|
||||
a.button.is-green(v-on:click='insertCode') Insert Code Block
|
||||
|
@ -1,80 +1,80 @@
|
||||
|
||||
.modal#modal-editor-file
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content.is-expanded
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content.is-expanded
|
||||
|
||||
header.is-green
|
||||
span Insert File
|
||||
p.modal-notify(v-bind:class="{ 'is-active': isLoading }")
|
||||
span {{ isLoadingText }}
|
||||
i
|
||||
.modal-toolbar.is-green
|
||||
a.button(v-on:click="newFolder")
|
||||
i.fa.fa-folder
|
||||
span New Folder
|
||||
a.button#btn-editor-file-upload
|
||||
i.fa.fa-upload
|
||||
span Upload File
|
||||
label
|
||||
input(type="file", multiple)
|
||||
section.is-gapless
|
||||
.columns.is-stretched
|
||||
.column.is-one-quarter.modal-sidebar.is-green(style={'max-width':'350px'})
|
||||
.model-sidebar-header Folders
|
||||
ul.model-sidebar-list
|
||||
li(v-for="fld in folders")
|
||||
a(v-on:click="selectFolder(fld)", v-bind:class="{ 'is-active': currentFolder === fld }")
|
||||
i.icon-folder2
|
||||
span / {{ fld }}
|
||||
.column.editor-modal-file-choices
|
||||
figure(v-for="fl in files", v-bind:class="{ 'is-active': currentFile === fl._id }", v-on:click="selectFile(fl._id)", v-bind:data-uid="fl._id")
|
||||
i(class='icon-file')
|
||||
span: strong {{ fl.filename }}
|
||||
span {{ fl.mime }}
|
||||
span {{ fl.filesize | filesize }}
|
||||
em(v-show="files.length < 1")
|
||||
i.icon-marquee-minus
|
||||
| This folder is empty.
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="cancel") Discard
|
||||
a.button.is-green(v-on:click="insertFileLink") Insert Link to File
|
||||
header.is-green
|
||||
span Insert File
|
||||
p.modal-notify(v-bind:class='{ "is-active": isLoading }')
|
||||
span {{ isLoadingText }}
|
||||
i
|
||||
.modal-toolbar.is-green
|
||||
a.button(v-on:click='newFolder')
|
||||
i.fa.fa-folder
|
||||
span New Folder
|
||||
a.button#btn-editor-file-upload
|
||||
i.fa.fa-upload
|
||||
span Upload File
|
||||
label
|
||||
input(type='file', multiple)
|
||||
section.is-gapless
|
||||
.columns.is-stretched
|
||||
.column.is-one-quarter.modal-sidebar.is-green(style={'max-width':'350px'})
|
||||
.model-sidebar-header Folders
|
||||
ul.model-sidebar-list
|
||||
li(v-for='fld in folders')
|
||||
a(v-on:click='selectFolder(fld)', v-bind:class='{ "is-active": currentFolder === fld }')
|
||||
i.icon-folder2
|
||||
span / {{ fld }}
|
||||
.column.editor-modal-file-choices
|
||||
figure(v-for='fl in files', v-bind:class='{ "is-active": currentFile === fl._id }', v-on:click='selectFile(fl._id)', v-bind:data-uid='fl._id')
|
||||
i(class='icon-file')
|
||||
span: strong {{ fl.filename }}
|
||||
span {{ fl.mime }}
|
||||
span {{ fl.filesize | filesize }}
|
||||
em(v-show='files.length < 1')
|
||||
i.icon-marquee-minus
|
||||
| This folder is empty.
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
|
||||
a.button.is-green(v-on:click='insertFileLink') Insert Link to File
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': newFolderShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue New Folder
|
||||
section
|
||||
label.label Enter the new folder name:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-file-newfoldername(type='text', placeholder='folder name', v-model='newFolderName', v-on:keyup.enter="newFolderCreate", v-on:keyup.esc="newFolderDiscard")
|
||||
span.help.is-danger(v-show="newFolderError") This folder name is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="newFolderDiscard") Discard
|
||||
a.button.is-light-blue(v-on:click="newFolderCreate") Create
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": newFolderShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue New Folder
|
||||
section
|
||||
label.label Enter the new folder name:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-file-newfoldername(type='text', placeholder='folder name', v-model='newFolderName', v-on:keyup.enter='newFolderCreate', v-on:keyup.esc='newFolderDiscard')
|
||||
span.help.is-danger(v-show='newFolderError') This folder name is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='newFolderDiscard') Discard
|
||||
a.button.is-light-blue(v-on:click='newFolderCreate') Create
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': renameFileShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-indigo Rename File
|
||||
section
|
||||
label.label Enter the new filename (without the extension) of the file:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-file-rename(type='text', placeholder='filename', v-model='renameFileFilename')
|
||||
span.help.is-danger.is-hidden This filename is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="renameFileDiscard") Discard
|
||||
a.button.is-light-blue(v-on:click="renameFileGo") Rename
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": renameFileShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-indigo Rename File
|
||||
section
|
||||
label.label Enter the new filename (without the extension) of the file:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-file-rename(type='text', placeholder='filename', v-model='renameFileFilename')
|
||||
span.help.is-danger.is-hidden This filename is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='renameFileDiscard') Discard
|
||||
a.button.is-light-blue(v-on:click='renameFileGo') Rename
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': deleteFileShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-red Delete file?
|
||||
section
|
||||
span Are you sure you want to delete #[strong {{deleteFileFilename}}]?
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="deleteFileWarn(false)") Discard
|
||||
a.button.is-red(v-on:click="deleteFileGo") Delete
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": deleteFileShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-red Delete file?
|
||||
section
|
||||
span Are you sure you want to delete #[strong {{deleteFileFilename}}]?
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='deleteFileWarn(false)') Discard
|
||||
a.button.is-red(v-on:click='deleteFileGo') Delete
|
||||
|
@ -1,104 +1,104 @@
|
||||
|
||||
.modal#modal-editor-image
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content.is-expanded
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content.is-expanded
|
||||
|
||||
header.is-green
|
||||
span Insert Image
|
||||
p.modal-notify(v-bind:class="{ 'is-active': isLoading }")
|
||||
span {{ isLoadingText }}
|
||||
i
|
||||
.modal-toolbar.is-green
|
||||
a.button(v-on:click="newFolder")
|
||||
i.fa.fa-folder
|
||||
span New Folder
|
||||
a.button#btn-editor-image-upload
|
||||
i.fa.fa-upload
|
||||
span Upload Image
|
||||
label
|
||||
input(type="file", multiple)
|
||||
a.button(v-on:click="fetchFromUrl")
|
||||
i.fa.fa-download
|
||||
span Fetch from URL
|
||||
section.is-gapless
|
||||
.columns.is-stretched
|
||||
.column.is-one-quarter.modal-sidebar.is-green(style={'max-width':'350px'})
|
||||
.model-sidebar-header Folders
|
||||
ul.model-sidebar-list
|
||||
li(v-for="fld in folders")
|
||||
a(v-on:click="selectFolder(fld)", v-bind:class="{ 'is-active': currentFolder === fld }")
|
||||
i.icon-folder2
|
||||
span / {{ fld }}
|
||||
.model-sidebar-header Alignment
|
||||
.model-sidebar-content
|
||||
p.control.is-fullwidth
|
||||
select(v-model='currentAlign')
|
||||
option(value='left') Left (default)
|
||||
option(value='center') Centered
|
||||
option(value='right') Right
|
||||
option(value='logo') Page Logo
|
||||
.column.editor-modal-image-choices
|
||||
figure(v-for="img in images", v-bind:class="{ 'is-active': currentImage === img._id }", v-on:click="selectImage(img._id)", v-bind:data-uid="img._id")
|
||||
img(v-bind:src="'/uploads/t/' + img._id + '.png'")
|
||||
span: strong {{ img.basename }}
|
||||
span {{ img.filesize | filesize }}
|
||||
em(v-show="images.length < 1")
|
||||
i.icon-marquee-minus
|
||||
| This folder is empty.
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="cancel") Discard
|
||||
a.button.is-green(v-on:click="insertImage") Insert Image
|
||||
header.is-green
|
||||
span Insert Image
|
||||
p.modal-notify(v-bind:class='{ "is-active": isLoading }')
|
||||
span {{ isLoadingText }}
|
||||
i
|
||||
.modal-toolbar.is-green
|
||||
a.button(v-on:click='newFolder')
|
||||
i.fa.fa-folder
|
||||
span New Folder
|
||||
a.button#btn-editor-image-upload
|
||||
i.fa.fa-upload
|
||||
span Upload Image
|
||||
label
|
||||
input(type='file', multiple)
|
||||
a.button(v-on:click='fetchFromUrl')
|
||||
i.fa.fa-download
|
||||
span Fetch from URL
|
||||
section.is-gapless
|
||||
.columns.is-stretched
|
||||
.column.is-one-quarter.modal-sidebar.is-green(style={'max-width':'350px'})
|
||||
.model-sidebar-header Folders
|
||||
ul.model-sidebar-list
|
||||
li(v-for='fld in folders')
|
||||
a(v-on:click='selectFolder(fld)', v-bind:class='{ "is-active": currentFolder === fld }')
|
||||
i.icon-folder2
|
||||
span / {{ fld }}
|
||||
.model-sidebar-header Alignment
|
||||
.model-sidebar-content
|
||||
p.control.is-fullwidth
|
||||
select(v-model='currentAlign')
|
||||
option(value='left') Left (default)
|
||||
option(value='center') Centered
|
||||
option(value='right') Right
|
||||
option(value='logo') Page Logo
|
||||
.column.editor-modal-image-choices
|
||||
figure(v-for='img in images', v-bind:class='{ "is-active": currentImage === img._id }', v-on:click='selectImage(img._id)', v-bind:data-uid='img._id')
|
||||
img(v-bind:src='"/uploads/t/" + img._id + ".png"')
|
||||
span: strong {{ img.basename }}
|
||||
span {{ img.filesize | filesize }}
|
||||
em(v-show='images.length < 1')
|
||||
i.icon-marquee-minus
|
||||
| This folder is empty.
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
|
||||
a.button.is-green(v-on:click='insertImage') Insert Image
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': newFolderShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue New Folder
|
||||
section
|
||||
label.label Enter the new folder name:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-image-newfoldername(type='text', placeholder='folder name', v-model='newFolderName', v-on:keyup.enter="newFolderCreate", v-on:keyup.esc="newFolderDiscard")
|
||||
span.help.is-danger(v-show="newFolderError") This folder name is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="newFolderDiscard") Discard
|
||||
a.button.is-light-blue(v-on:click="newFolderCreate") Create
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": newFolderShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue New Folder
|
||||
section
|
||||
label.label Enter the new folder name:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-image-newfoldername(type='text', placeholder='folder name', v-model='newFolderName', v-on:keyup.enter='newFolderCreate', v-on:keyup.esc='newFolderDiscard')
|
||||
span.help.is-danger(v-show='newFolderError') This folder name is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='newFolderDiscard') Discard
|
||||
a.button.is-light-blue(v-on:click='newFolderCreate') Create
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': fetchFromUrlShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue Fetch Image from URL
|
||||
section
|
||||
label.label Enter full URL path to the image:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-image-fetchurl(type='text', placeholder='http://www.example.com/some-image.png', v-model='fetchFromUrlURL')
|
||||
span.help.is-danger.is-hidden This URL path is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="fetchFromUrlDiscard") Discard
|
||||
a.button.is-light-blue(v-on:click="fetchFromUrlGo") Fetch
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": fetchFromUrlShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-light-blue Fetch Image from URL
|
||||
section
|
||||
label.label Enter full URL path to the image:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-image-fetchurl(type='text', placeholder='http://www.example.com/some-image.png', v-model='fetchFromUrlURL')
|
||||
span.help.is-danger.is-hidden This URL path is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='fetchFromUrlDiscard') Discard
|
||||
a.button.is-light-blue(v-on:click='fetchFromUrlGo') Fetch
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': renameImageShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-indigo Rename Image
|
||||
section
|
||||
label.label Enter the new filename (without the extension) of the image:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-image-rename(type='text', placeholder='filename', v-model='renameImageFilename')
|
||||
span.help.is-danger.is-hidden This filename is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="renameImageDiscard") Discard
|
||||
a.button.is-light-blue(v-on:click="renameImageGo") Rename
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": renameImageShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-indigo Rename Image
|
||||
section
|
||||
label.label Enter the new filename (without the extension) of the image:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-editor-image-rename(type='text', placeholder='filename', v-model='renameImageFilename')
|
||||
span.help.is-danger.is-hidden This filename is invalid!
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='renameImageDiscard') Discard
|
||||
a.button.is-light-blue(v-on:click='renameImageGo') Rename
|
||||
|
||||
.modal.is-superimposed(v-bind:class="{ 'is-active': deleteImageShow }")
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-red Delete image?
|
||||
section
|
||||
span Are you sure you want to delete #[strong {{deleteImageFilename}}]?
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="deleteImageWarn(false)") Discard
|
||||
a.button.is-red(v-on:click="deleteImageGo") Delete
|
||||
.modal.is-superimposed(v-bind:class='{ "is-active": deleteImageShow }')
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-red Delete image?
|
||||
section
|
||||
span Are you sure you want to delete #[strong {{deleteImageFilename}}]?
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='deleteImageWarn(false)') Discard
|
||||
a.button.is-red(v-on:click='deleteImageGo') Delete
|
||||
|
@ -1,28 +1,28 @@
|
||||
|
||||
.modal#modal-editor-video
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-green Insert Video Player
|
||||
section
|
||||
label.label Enter the link to the video to be embedded:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='https://www.youtube.com/watch?v=xxxxxxxxxxx', v-model='link')
|
||||
span.help.is-red.is-hidden This URL is invalid or not supported!
|
||||
.note The following are supported:
|
||||
ul
|
||||
li
|
||||
i.icon-youtube-play
|
||||
span Youtube
|
||||
li
|
||||
i.icon-vimeo
|
||||
span Vimeo
|
||||
li
|
||||
i.icon-film
|
||||
span Dailymotion
|
||||
li
|
||||
i.icon-video
|
||||
span Any standard MP4 file
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click="cancel") Discard
|
||||
a.button.is-green(v-on:click="insertVideo") Insert Video
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-green Insert Video Player
|
||||
section
|
||||
label.label Enter the link to the video to be embedded:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='https://www.youtube.com/watch?v=xxxxxxxxxxx', v-model='link')
|
||||
span.help.is-red.is-hidden This URL is invalid or not supported!
|
||||
.note The following are supported:
|
||||
ul
|
||||
li
|
||||
i.icon-youtube-play
|
||||
span Youtube
|
||||
li
|
||||
i.icon-vimeo
|
||||
span Vimeo
|
||||
li
|
||||
i.icon-film
|
||||
span Dailymotion
|
||||
li
|
||||
i.icon-video
|
||||
span Any standard MP4 file
|
||||
footer
|
||||
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
|
||||
a.button.is-green(v-on:click='insertVideo') Insert Video
|
||||
|
@ -1,15 +1,15 @@
|
||||
|
||||
.modal#modal-move-prompt
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-indigo Move document
|
||||
section
|
||||
label.label Enter the new document path:
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='page-name')#txt-move-prompt
|
||||
span.help.is-red.is-hidden This document path is invalid or not allowed!
|
||||
span.note Note that moving or renaming documents can lead to broken links. Make sure to edit any page that links to this document afterwards!
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-move-prompt Discard
|
||||
a.button.is-indigo.btn-move-go Move
|
||||
.modal-background
|
||||
.modal-container
|
||||
.modal-content
|
||||
header.is-indigo Move document
|
||||
section
|
||||
label.label Enter the new document path:
|
||||
p.control.is-fullwidth
|
||||
input.input#txt-move-prompt(type='text', placeholder='page-name')
|
||||
span.help.is-red.is-hidden This document path is invalid or not allowed!
|
||||
span.note Note that moving or renaming documents can lead to broken links. Make sure to edit any page that links to this document afterwards!
|
||||
footer
|
||||
a.button.is-grey.is-outlined.btn-move-prompt Discard
|
||||
a.button.is-indigo.btn-move-go Move
|
||||
|
@ -1,59 +1,59 @@
|
||||
extends ../../layout.pug
|
||||
|
||||
block rootNavCenter
|
||||
h2.nav-item Account
|
||||
h2.nav-item Account
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
a.button.btn-edit-discard(href='/')
|
||||
i.icon-home
|
||||
span Home
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
a.button.btn-edit-discard(href='/')
|
||||
i.icon-home
|
||||
span Home
|
||||
|
||||
block content
|
||||
|
||||
#page-type-account
|
||||
.container.is-fluid
|
||||
.columns.is-gapless
|
||||
|
||||
.column.is-narrow.is-hidden-touch.sidebar
|
||||
|
||||
aside
|
||||
.sidebar-label
|
||||
i.icon-th-small
|
||||
span Navigation
|
||||
ul.sidebar-menu
|
||||
li
|
||||
a(href='/')
|
||||
i.icon-home
|
||||
span Home
|
||||
|
||||
aside
|
||||
.sidebar-label
|
||||
i.icon-head
|
||||
span Account
|
||||
ul.sidebar-menu
|
||||
li
|
||||
a(href='/admin/profile')
|
||||
i.icon-user
|
||||
span My Profile
|
||||
li
|
||||
a(href='/admin/stats')
|
||||
i.icon-bar-graph-2
|
||||
span Stats
|
||||
if rights.manage
|
||||
li
|
||||
a(href='/admin/users')
|
||||
i.icon-users
|
||||
span Users
|
||||
li
|
||||
a(href='/admin/settings')
|
||||
i.icon-cog
|
||||
span Site Settings
|
||||
li
|
||||
a(href='/logout')
|
||||
i.icon-delete2
|
||||
span Logout
|
||||
|
||||
.column
|
||||
block adminContent
|
||||
#page-type-account
|
||||
.container.is-fluid
|
||||
.columns.is-gapless
|
||||
|
||||
.column.is-narrow.is-hidden-touch.sidebar
|
||||
|
||||
aside
|
||||
.sidebar-label
|
||||
i.icon-th-small
|
||||
span Navigation
|
||||
ul.sidebar-menu
|
||||
li
|
||||
a(href='/')
|
||||
i.icon-home
|
||||
span Home
|
||||
|
||||
aside
|
||||
.sidebar-label
|
||||
i.icon-head
|
||||
span Account
|
||||
ul.sidebar-menu
|
||||
li
|
||||
a(href='/admin/profile')
|
||||
i.icon-user
|
||||
span My Profile
|
||||
li
|
||||
a(href='/admin/stats')
|
||||
i.icon-bar-graph-2
|
||||
span Stats
|
||||
if rights.manage
|
||||
li
|
||||
a(href='/admin/users')
|
||||
i.icon-users
|
||||
span Users
|
||||
li
|
||||
a(href='/admin/settings')
|
||||
i.icon-cog
|
||||
span Site Settings
|
||||
li
|
||||
a(href='/logout')
|
||||
i.icon-delete2
|
||||
span Logout
|
||||
|
||||
.column
|
||||
block adminContent
|
||||
|
@ -1,49 +1,49 @@
|
||||
extends ./_layout.pug
|
||||
|
||||
block adminContent
|
||||
#page-type-admin-profile
|
||||
.hero
|
||||
h1.title#title My Profile
|
||||
h2.subtitle Profile and authentication info
|
||||
.form-sections
|
||||
.columns.is-gapless
|
||||
.column.is-two-thirds
|
||||
section
|
||||
label.label Email
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='Email', value=user.email, disabled)
|
||||
if user.provider == 'local'
|
||||
section
|
||||
label.label Password
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='Password', value='********', v-model='password')
|
||||
section
|
||||
label.label Verify Password
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='Password', value='********', v-model='passwordVerify')
|
||||
section
|
||||
label.label Display Name
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='John Smith', v-model='name')
|
||||
section
|
||||
button.button.is-green(v-on:click='saveUser')
|
||||
i.icon-check
|
||||
span Save Changes
|
||||
.column
|
||||
.panel
|
||||
label.label Provider
|
||||
p.control.account-profile-provider
|
||||
case user.provider
|
||||
when 'local': i.icon-server
|
||||
when 'windowslive': i.icon-windows2.is-blue
|
||||
when 'google': i.icon-google.is-blue
|
||||
when 'facebook': i.icon-facebook.is-purple
|
||||
default: i.icon-warning
|
||||
= t('auth:providers.' + user.provider)
|
||||
label.label Member since
|
||||
p.control= userMoment(user.createdAt).format('LL')
|
||||
label.label Last Profile Update
|
||||
p.control= userMoment(user.updatedAt).format('LL')
|
||||
#page-type-admin-profile
|
||||
.hero
|
||||
h1.title#title My Profile
|
||||
h2.subtitle Profile and authentication info
|
||||
.form-sections
|
||||
.columns.is-gapless
|
||||
.column.is-two-thirds
|
||||
section
|
||||
label.label Email
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='Email', value=user.email, disabled)
|
||||
if user.provider === 'local'
|
||||
section
|
||||
label.label Password
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='Password', value='********', v-model='password')
|
||||
section
|
||||
label.label Verify Password
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='Password', value='********', v-model='passwordVerify')
|
||||
section
|
||||
label.label Display Name
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='John Smith', v-model='name')
|
||||
section
|
||||
button.button.is-green(v-on:click='saveUser')
|
||||
i.icon-check
|
||||
span Save Changes
|
||||
.column
|
||||
.panel
|
||||
label.label Provider
|
||||
p.control.account-profile-provider
|
||||
case user.provider
|
||||
when 'local': i.icon-server
|
||||
when 'windowslive': i.icon-windows2.is-blue
|
||||
when 'google': i.icon-google.is-blue
|
||||
when 'facebook': i.icon-facebook.is-purple
|
||||
default: i.icon-warning
|
||||
= t('auth:providers.' + user.provider)
|
||||
label.label Member since
|
||||
p.control= userMoment(user.createdAt).format('LL')
|
||||
label.label Last Profile Update
|
||||
p.control= userMoment(user.updatedAt).format('LL')
|
||||
|
||||
script(type='text/javascript').
|
||||
var usrDataName = "!{user.name}";
|
||||
script(type='text/javascript').
|
||||
var usrDataName = "!{user.name}";
|
||||
|
@ -1,9 +1,9 @@
|
||||
extends ./_layout.pug
|
||||
|
||||
block adminContent
|
||||
.hero
|
||||
h1.title#title Site Settings
|
||||
h2.subtitle Manage site configuration
|
||||
.form-sections
|
||||
section
|
||||
| Coming soon
|
||||
.hero
|
||||
h1.title#title Site Settings
|
||||
h2.subtitle Manage site configuration
|
||||
.form-sections
|
||||
section
|
||||
| Coming soon
|
||||
|
@ -1,14 +1,14 @@
|
||||
extends ./_layout.pug
|
||||
|
||||
block adminContent
|
||||
.hero
|
||||
h1.title#title Stats
|
||||
h2.subtitle General site-wide statistics
|
||||
.form-sections
|
||||
section
|
||||
label.label Entries
|
||||
p.control= totalEntries
|
||||
label.label Uploads
|
||||
p.control= totalUploads
|
||||
label.label Users
|
||||
p.control= totalUsers
|
||||
.hero
|
||||
h1.title#title Stats
|
||||
h2.subtitle General site-wide statistics
|
||||
.form-sections
|
||||
section
|
||||
label.label Entries
|
||||
p.control= totalEntries
|
||||
label.label Uploads
|
||||
p.control= totalUploads
|
||||
label.label Users
|
||||
p.control= totalUsers
|
||||
|
@ -1,126 +1,126 @@
|
||||
extends ./_layout.pug
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
a.button(href='/admin/users')
|
||||
i.icon-reply
|
||||
span Return to Users
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
a.button(href='/admin/users')
|
||||
i.icon-reply
|
||||
span Return to Users
|
||||
|
||||
block adminContent
|
||||
#page-type-admin-users-edit
|
||||
.hero
|
||||
h1.title#title Edit User
|
||||
h2.subtitle= usr.email
|
||||
table.table
|
||||
thead
|
||||
tr
|
||||
th Unique ID
|
||||
th Provider
|
||||
th Created On
|
||||
th Updated On
|
||||
tbody
|
||||
tr
|
||||
td.is-centered= usr._id
|
||||
td.is-centered.has-icons
|
||||
case usr.provider
|
||||
when 'local'
|
||||
i.icon-server.is-deep-orange
|
||||
| Local Database
|
||||
when 'windowslive'
|
||||
i.icon-windows2.is-blue
|
||||
| Microsoft Account
|
||||
when 'google'
|
||||
i.icon-google.is-blue
|
||||
| Google ID
|
||||
when 'facebook'
|
||||
i.icon-facebook.is-purple
|
||||
| Facebook
|
||||
default: i.icon-warning
|
||||
td.is-centered= userMoment(usr.createdAt).format('lll')
|
||||
td.is-centered= userMoment(usr.updatedAt).format('lll')
|
||||
.form-sections
|
||||
section
|
||||
label.label Email Address
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='john.smith@example.com', v-model='email', disabled=!usrOpts.canChangeEmail)
|
||||
section
|
||||
label.label Display Name
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='John Smith', v-model='name', disabled=!usrOpts.canChangeName)
|
||||
if usrOpts.canChangePassword
|
||||
section
|
||||
label.label Password
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='Password', v-model='password', value='********')
|
||||
section
|
||||
label.label Access Rights
|
||||
table.table
|
||||
thead.is-teal
|
||||
tr
|
||||
th
|
||||
th(style={width: '200px'}) Permission(s)
|
||||
th Path
|
||||
th(style={width: '150px'}) Access
|
||||
th(style={width: '50px'})
|
||||
tbody
|
||||
tr(v-for='(right, idx) in rights', v-cloak)
|
||||
td.is-icon
|
||||
i.icon-marquee-plus.is-green(v-if='right.deny === false || right.deny === "false"')
|
||||
i.icon-marquee-minus.is-red(v-if='right.deny === true || right.deny === "true"')
|
||||
td
|
||||
p.control.is-fullwidth
|
||||
select(v-model='right.role')
|
||||
option(value='write') Read and Write
|
||||
option(value='read') Read Only
|
||||
td
|
||||
.columns
|
||||
.column.is-narrow
|
||||
p.control
|
||||
select(v-model='right.exact')
|
||||
option(value='false') Path starts with:
|
||||
option(value='true') Path match exactly:
|
||||
.column
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='/', v-model='right.path')
|
||||
td
|
||||
p.control.is-fullwidth
|
||||
select(v-model='right.deny')
|
||||
option(value='false') Allow
|
||||
option(value='true') Deny
|
||||
td.is-centered.has-action-icons
|
||||
i.icon-delete.is-red(v-on:click='removeRightsRow(idx)')
|
||||
tr(v-if='rights.length < 1', v-cloak)
|
||||
td.is-icon
|
||||
td.is-centered(colspan='3'): em No additional access rights
|
||||
td.is-centered.has-action-icons
|
||||
.table-actions
|
||||
button.button.is-blue(v-on:click='addRightsRow')
|
||||
i.icon-plus
|
||||
span Add New Row
|
||||
section
|
||||
label.label Role Override
|
||||
p.control.is-fullwidth
|
||||
select(v-model='roleoverride', disabled=!usrOpts.canChangeRole)
|
||||
option(value='none') None
|
||||
option(value='admin') Global Administrator
|
||||
.columns.is-gapless
|
||||
.column
|
||||
section
|
||||
button.button.is-green(v-on:click='saveUser')
|
||||
i.icon-check
|
||||
span Save Changes
|
||||
a.button.button.is-grey.is-outlined(href='/admin/users')
|
||||
i.icon-cancel
|
||||
span Discard
|
||||
.column.is-narrow
|
||||
section
|
||||
if usrOpts.canBeDeleted
|
||||
button.button.is-red.btn-deluser-prompt
|
||||
i.icon-trash2
|
||||
span Delete Account
|
||||
#page-type-admin-users-edit
|
||||
.hero
|
||||
h1.title#title Edit User
|
||||
h2.subtitle= usr.email
|
||||
table.table
|
||||
thead
|
||||
tr
|
||||
th Unique ID
|
||||
th Provider
|
||||
th Created On
|
||||
th Updated On
|
||||
tbody
|
||||
tr
|
||||
td.is-centered= usr._id
|
||||
td.is-centered.has-icons
|
||||
case usr.provider
|
||||
when 'local'
|
||||
i.icon-server.is-deep-orange
|
||||
| Local Database
|
||||
when 'windowslive'
|
||||
i.icon-windows2.is-blue
|
||||
| Microsoft Account
|
||||
when 'google'
|
||||
i.icon-google.is-blue
|
||||
| Google ID
|
||||
when 'facebook'
|
||||
i.icon-facebook.is-purple
|
||||
| Facebook
|
||||
default: i.icon-warning
|
||||
td.is-centered= userMoment(usr.createdAt).format('lll')
|
||||
td.is-centered= userMoment(usr.updatedAt).format('lll')
|
||||
.form-sections
|
||||
section
|
||||
label.label Email Address
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='john.smith@example.com', v-model='email', disabled=!usrOpts.canChangeEmail)
|
||||
section
|
||||
label.label Display Name
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='John Smith', v-model='name', disabled=!usrOpts.canChangeName)
|
||||
if usrOpts.canChangePassword
|
||||
section
|
||||
label.label Password
|
||||
p.control.is-fullwidth
|
||||
input.input(type='password', placeholder='Password', v-model='password', value='********')
|
||||
section
|
||||
label.label Access Rights
|
||||
table.table
|
||||
thead.is-teal
|
||||
tr
|
||||
th
|
||||
th(style={width: '200px'}) Permission(s)
|
||||
th Path
|
||||
th(style={width: '150px'}) Access
|
||||
th(style={width: '50px'})
|
||||
tbody
|
||||
tr(v-for='(right, idx) in rights', v-cloak)
|
||||
td.is-icon
|
||||
i.icon-marquee-plus.is-green(v-if='right.deny === false || right.deny === "false"')
|
||||
i.icon-marquee-minus.is-red(v-if='right.deny === true || right.deny === "true"')
|
||||
td
|
||||
p.control.is-fullwidth
|
||||
select(v-model='right.role')
|
||||
option(value='write') Read and Write
|
||||
option(value='read') Read Only
|
||||
td
|
||||
.columns
|
||||
.column.is-narrow
|
||||
p.control
|
||||
select(v-model='right.exact')
|
||||
option(value='false') Path starts with:
|
||||
option(value='true') Path match exactly:
|
||||
.column
|
||||
p.control.is-fullwidth
|
||||
input.input(type='text', placeholder='/', v-model='right.path')
|
||||
td
|
||||
p.control.is-fullwidth
|
||||
select(v-model='right.deny')
|
||||
option(value='false') Allow
|
||||
option(value='true') Deny
|
||||
td.is-centered.has-action-icons
|
||||
i.icon-delete.is-red(v-on:click='removeRightsRow(idx)')
|
||||
tr(v-if='rights.length < 1', v-cloak)
|
||||
td.is-icon
|
||||
td.is-centered(colspan='3'): em No additional access rights
|
||||
td.is-centered.has-action-icons
|
||||
.table-actions
|
||||
button.button.is-blue(v-on:click='addRightsRow')
|
||||
i.icon-plus
|
||||
span Add New Row
|
||||
section
|
||||
label.label Role Override
|
||||
p.control.is-fullwidth
|
||||
select(v-model='roleoverride', disabled=!usrOpts.canChangeRole)
|
||||
option(value='none') None
|
||||
option(value='admin') Global Administrator
|
||||
.columns.is-gapless
|
||||
.column
|
||||
section
|
||||
button.button.is-green(v-on:click='saveUser')
|
||||
i.icon-check
|
||||
span Save Changes
|
||||
a.button.button.is-grey.is-outlined(href='/admin/users')
|
||||
i.icon-cancel
|
||||
span Discard
|
||||
.column.is-narrow
|
||||
section
|
||||
if usrOpts.canBeDeleted
|
||||
button.button.is-red.btn-deluser-prompt
|
||||
i.icon-trash2
|
||||
span Delete Account
|
||||
|
||||
include ../../modals/admin-deleteuser.pug
|
||||
include ../../modals/admin-deleteuser.pug
|
||||
|
||||
script(type='text/javascript').
|
||||
var usrData = !{JSON.stringify(usr)};
|
||||
script(type='text/javascript').
|
||||
var usrData = !{JSON.stringify(usr)};
|
||||
|
@ -1,50 +1,50 @@
|
||||
extends ./_layout.pug
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
a.button.btn-create-prompt
|
||||
i.icon-plus
|
||||
span Create / Authorize User
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
a.button.btn-create-prompt
|
||||
i.icon-plus
|
||||
span Create / Authorize User
|
||||
|
||||
block adminContent
|
||||
#page-type-admin-users
|
||||
.hero
|
||||
h1.title#title Users
|
||||
h2.subtitle Manage users and access rights
|
||||
table.table
|
||||
thead
|
||||
tr
|
||||
th
|
||||
th Name
|
||||
th Email
|
||||
th Provider
|
||||
th Created On
|
||||
th Updated On
|
||||
tbody
|
||||
each usr in usrs
|
||||
tr
|
||||
td.is-icon
|
||||
i.icon-user.is-grey
|
||||
td
|
||||
a(href='/admin/users/' + usr._id)= usr.name
|
||||
td= usr.email
|
||||
td.is-centered.has-icons
|
||||
case usr.provider
|
||||
when 'local'
|
||||
i.icon-server.is-deep-orange
|
||||
| Local Database
|
||||
when 'windowslive'
|
||||
i.icon-windows2.is-blue
|
||||
| Microsoft Account
|
||||
when 'google'
|
||||
i.icon-google.is-blue
|
||||
| Google ID
|
||||
when 'facebook'
|
||||
i.icon-facebook.is-purple
|
||||
| Facebook
|
||||
default: i.icon-warning
|
||||
td.is-centered= userMoment(usr.createdAt).format('lll')
|
||||
td.is-centered= userMoment(usr.updatedAt).format('lll')
|
||||
#page-type-admin-users
|
||||
.hero
|
||||
h1.title#title Users
|
||||
h2.subtitle Manage users and access rights
|
||||
table.table
|
||||
thead
|
||||
tr
|
||||
th
|
||||
th Name
|
||||
th Email
|
||||
th Provider
|
||||
th Created On
|
||||
th Updated On
|
||||
tbody
|
||||
each usr in usrs
|
||||
tr
|
||||
td.is-icon
|
||||
i.icon-user.is-grey
|
||||
td
|
||||
a(href='/admin/users/' + usr._id)= usr.name
|
||||
td= usr.email
|
||||
td.is-centered.has-icons
|
||||
case usr.provider
|
||||
when 'local'
|
||||
i.icon-server.is-deep-orange
|
||||
| Local Database
|
||||
when 'windowslive'
|
||||
i.icon-windows2.is-blue
|
||||
| Microsoft Account
|
||||
when 'google'
|
||||
i.icon-google.is-blue
|
||||
| Google ID
|
||||
when 'facebook'
|
||||
i.icon-facebook.is-purple
|
||||
| Facebook
|
||||
default: i.icon-warning
|
||||
td.is-centered= userMoment(usr.createdAt).format('lll')
|
||||
td.is-centered= userMoment(usr.updatedAt).format('lll')
|
||||
|
||||
include ../../modals/admin-createuser.pug
|
||||
include ../../modals/admin-createuser.pug
|
||||
|
@ -1,27 +1,27 @@
|
||||
extends ../layout.pug
|
||||
|
||||
block rootNavCenter
|
||||
h2.nav-item Create New Document
|
||||
h2.nav-item Create New Document
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
span.nav-item
|
||||
a.button.is-outlined.btn-create-discard
|
||||
i.icon-cross
|
||||
span Discard
|
||||
a.button.btn-create-save
|
||||
i.icon-check
|
||||
span Save Document
|
||||
i.nav-item#notifload
|
||||
span.nav-item
|
||||
a.button.is-outlined.btn-create-discard
|
||||
i.icon-cross
|
||||
span Discard
|
||||
a.button.btn-create-save
|
||||
i.icon-check
|
||||
span Save Document
|
||||
|
||||
block content
|
||||
|
||||
#page-type-create(data-entrypath=pageData.meta.path)
|
||||
.editor-area
|
||||
textarea#mk-editor= pageData.markdown
|
||||
#page-type-create(data-entrypath=pageData.meta.path)
|
||||
.editor-area
|
||||
textarea#mk-editor= pageData.markdown
|
||||
|
||||
include ../modals/create-discard.pug
|
||||
include ../modals/editor-link.pug
|
||||
include ../modals/editor-image.pug
|
||||
include ../modals/editor-file.pug
|
||||
include ../modals/editor-video.pug
|
||||
include ../modals/editor-codeblock.pug
|
||||
include ../modals/create-discard.pug
|
||||
include ../modals/editor-link.pug
|
||||
include ../modals/editor-image.pug
|
||||
include ../modals/editor-file.pug
|
||||
include ../modals/editor-video.pug
|
||||
include ../modals/editor-codeblock.pug
|
||||
|
@ -1,27 +1,27 @@
|
||||
extends ../layout.pug
|
||||
|
||||
block rootNavCenter
|
||||
h2.nav-item= pageData.meta.title
|
||||
h2.nav-item= pageData.meta.title
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
span.nav-item
|
||||
a.button.is-outlined.btn-edit-discard
|
||||
i.icon-cross
|
||||
span Discard
|
||||
a.button.btn-edit-save
|
||||
i.icon-check
|
||||
span Save Changes
|
||||
i.nav-item#notifload
|
||||
span.nav-item
|
||||
a.button.is-outlined.btn-edit-discard
|
||||
i.icon-cross
|
||||
span Discard
|
||||
a.button.btn-edit-save
|
||||
i.icon-check
|
||||
span Save Changes
|
||||
|
||||
block content
|
||||
|
||||
#page-type-edit(data-entrypath=pageData.meta.path)
|
||||
.editor-area
|
||||
textarea#mk-editor= pageData.markdown
|
||||
#page-type-edit(data-entrypath=pageData.meta.path)
|
||||
.editor-area
|
||||
textarea#mk-editor= pageData.markdown
|
||||
|
||||
include ../modals/edit-discard.pug
|
||||
include ../modals/editor-link.pug
|
||||
include ../modals/editor-image.pug
|
||||
include ../modals/editor-file.pug
|
||||
include ../modals/editor-video.pug
|
||||
include ../modals/editor-codeblock.pug
|
||||
include ../modals/edit-discard.pug
|
||||
include ../modals/editor-link.pug
|
||||
include ../modals/editor-image.pug
|
||||
include ../modals/editor-file.pug
|
||||
include ../modals/editor-video.pug
|
||||
include ../modals/editor-codeblock.pug
|
||||
|
@ -1,31 +1,31 @@
|
||||
extends ../layout.pug
|
||||
|
||||
block rootNavCenter
|
||||
h2.nav-item= pageData.meta.title
|
||||
h2.nav-item= pageData.meta.title
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
span.nav-item
|
||||
if rights.write
|
||||
a.button.is-outlined.btn-move-prompt.is-hidden
|
||||
i.icon-shuffle
|
||||
span Move
|
||||
a.button.is-outlined(href='/' + pageData.meta.path)
|
||||
i.icon-loader
|
||||
span Normal View
|
||||
if rights.write
|
||||
a.button.is-orange(href='/edit/' + pageData.meta.path)
|
||||
i.fa.fa-edit
|
||||
span Edit
|
||||
a.button.is-blue.btn-create-prompt
|
||||
i.fa.fa-plus
|
||||
span Create
|
||||
i.nav-item#notifload
|
||||
span.nav-item
|
||||
if rights.write
|
||||
a.button.is-outlined.btn-move-prompt.is-hidden
|
||||
i.icon-shuffle
|
||||
span Move
|
||||
a.button.is-outlined(href='/' + pageData.meta.path)
|
||||
i.icon-loader
|
||||
span Normal View
|
||||
if rights.write
|
||||
a.button.is-orange(href='/edit/' + pageData.meta.path)
|
||||
i.fa.fa-edit
|
||||
span Edit
|
||||
a.button.is-blue.btn-create-prompt
|
||||
i.fa.fa-plus
|
||||
span Create
|
||||
|
||||
block content
|
||||
|
||||
#page-type-source(data-entrypath=pageData.meta.path)
|
||||
.ace-container
|
||||
#source-display= pageData.markdown
|
||||
#page-type-source(data-entrypath=pageData.meta.path)
|
||||
.ace-container
|
||||
#source-display= pageData.markdown
|
||||
|
||||
include ../modals/create.pug
|
||||
include ../modals/move.pug
|
||||
include ../modals/create.pug
|
||||
include ../modals/move.pug
|
||||
|
@ -1,79 +1,79 @@
|
||||
extends ../layout.pug
|
||||
|
||||
mixin tocMenu(ti)
|
||||
each node in ti
|
||||
li
|
||||
a(href='#' + node.anchor, title=node.content)= node.content
|
||||
if node.nodes.length > 0
|
||||
ul
|
||||
+tocMenu(node.nodes)
|
||||
each node in ti
|
||||
li
|
||||
a(href='#' + node.anchor, title=node.content)= node.content
|
||||
if node.nodes.length > 0
|
||||
ul
|
||||
+tocMenu(node.nodes)
|
||||
|
||||
block rootNavRight
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
if rights.write
|
||||
a.button.is-outlined.btn-move-prompt.is-hidden
|
||||
i.icon-shuffle
|
||||
span Move
|
||||
a.button.is-outlined(href='/source/' + pageData.meta.path)
|
||||
i.icon-loader
|
||||
span Source
|
||||
if rights.write
|
||||
a.button(href='/edit/' + pageData.meta.path)
|
||||
i.icon-document-text
|
||||
span Edit
|
||||
a.button.btn-create-prompt
|
||||
i.icon-plus
|
||||
span Create
|
||||
i.nav-item#notifload
|
||||
.nav-item
|
||||
if rights.write
|
||||
a.button.is-outlined.btn-move-prompt.is-hidden
|
||||
i.icon-shuffle
|
||||
span Move
|
||||
a.button.is-outlined(href='/source/' + pageData.meta.path)
|
||||
i.icon-loader
|
||||
span Source
|
||||
if rights.write
|
||||
a.button(href='/edit/' + pageData.meta.path)
|
||||
i.icon-document-text
|
||||
span Edit
|
||||
a.button.btn-create-prompt
|
||||
i.icon-plus
|
||||
span Create
|
||||
|
||||
block content
|
||||
|
||||
#page-type-view(data-entrypath=pageData.meta.path)
|
||||
.container.is-fluid
|
||||
.columns.is-gapless
|
||||
#page-type-view(data-entrypath=pageData.meta.path)
|
||||
.container.is-fluid
|
||||
.columns.is-gapless
|
||||
|
||||
.column.is-narrow.is-hidden-touch.sidebar
|
||||
.column.is-narrow.is-hidden-touch.sidebar
|
||||
|
||||
aside
|
||||
.sidebar-label
|
||||
i.icon-th-small
|
||||
span Navigation
|
||||
ul.sidebar-menu
|
||||
li
|
||||
a(href='/')
|
||||
i.icon-home
|
||||
span Home
|
||||
if pageData.parent
|
||||
li
|
||||
a(href='/' + pageData.parent.path)
|
||||
i.icon-reply
|
||||
span= pageData.parent.title
|
||||
if !isGuest
|
||||
li
|
||||
a(href='/admin')
|
||||
i.icon-head
|
||||
span Account
|
||||
else
|
||||
li
|
||||
a(href='/login')
|
||||
i.icon-unlock
|
||||
span Login
|
||||
aside.stickyscroll(data-margin-top=40)
|
||||
.sidebar-label
|
||||
i.icon-th-list
|
||||
span Contents
|
||||
ul.sidebar-menu
|
||||
li: a(href='#root', title='Start') Start
|
||||
+tocMenu(pageData.tree)
|
||||
aside
|
||||
.sidebar-label
|
||||
i.icon-th-small
|
||||
span Navigation
|
||||
ul.sidebar-menu
|
||||
li
|
||||
a(href='/')
|
||||
i.icon-home
|
||||
span Home
|
||||
if pageData.parent
|
||||
li
|
||||
a(href='/' + pageData.parent.path)
|
||||
i.icon-reply
|
||||
span= pageData.parent.title
|
||||
if !isGuest
|
||||
li
|
||||
a(href='/admin')
|
||||
i.icon-head
|
||||
span Account
|
||||
else
|
||||
li
|
||||
a(href='/login')
|
||||
i.icon-unlock
|
||||
span Login
|
||||
aside.stickyscroll(data-margin-top=40)
|
||||
.sidebar-label
|
||||
i.icon-th-list
|
||||
span Contents
|
||||
ul.sidebar-menu
|
||||
li: a(href='#root', title='Start') Start
|
||||
+tocMenu(pageData.tree)
|
||||
|
||||
.column
|
||||
.column
|
||||
|
||||
.hero
|
||||
h1.title#title= pageData.meta.title
|
||||
if pageData.meta.subtitle
|
||||
h2.subtitle= pageData.meta.subtitle
|
||||
.content.mkcontent
|
||||
!= pageData.html
|
||||
.hero
|
||||
h1.title#title= pageData.meta.title
|
||||
if pageData.meta.subtitle
|
||||
h2.subtitle= pageData.meta.subtitle
|
||||
.content.mkcontent
|
||||
!= pageData.html
|
||||
|
||||
include ../modals/create.pug
|
||||
include ../modals/move.pug
|
||||
include ../modals/create.pug
|
||||
include ../modals/move.pug
|
||||
|
Loading…
Reference in new issue