mirror of https://github.com/Requarks/wiki.git
Nicolas Giard
6 years ago
47 changed files with 189 additions and 1055 deletions
Split View
Diff Options
-
4client/app.js
-
10client/components/admin.vue
-
2client/components/admin/admin-theme.vue
-
29client/components/common/nav-footer.vue
-
36client/components/login.vue
-
9client/scss/app.scss
-
67client/scss/base/base.scss
-
39client/scss/base/icons.scss
-
25client/scss/base/variables.scss
-
317client/scss/components/login.scss
-
0client/scss/components/v-btn.scss
-
0client/scss/components/v-data-table.scss
-
0client/scss/components/v-dialog.scss
-
27client/scss/components/vue-tree-navigation.scss
-
7client/scss/global.scss
-
2client/store/site.js
-
81client/themes/default/components/app.vue
-
2package.json
-
2server/controllers/auth.js
-
10server/controllers/common.js
-
5server/views/admin.pug
-
65server/views/admin/_layout.pug
-
62server/views/admin/profile.pug
-
9server/views/admin/settings.pug
-
15server/views/admin/stats.pug
-
47server/views/admin/system.pug
-
32server/views/admin/theme.pug
-
122server/views/admin/users-edit.pug
-
47server/views/admin/users.pug
-
14server/views/common/alerts.pug
-
8server/views/common/footer.pug
-
19server/views/common/header.pug
-
0server/views/common/mixins.pug
-
4server/views/editor.pug
-
4server/views/error.pug
-
30server/views/errors/error-forbidden.pug
-
30server/views/errors/error-notexist.pug
-
11server/views/layout.pug
-
5server/views/login.pug
-
5server/views/main/admin.pug
-
5server/views/main/login.pug
-
5server/views/main/profile.pug
-
4server/views/page.pug
-
5server/views/profile.pug
-
4server/views/setup.pug
-
4server/views/welcome.pug
-
14yarn.lock
@ -1,39 +0,0 @@ |
|||
.icons { |
|||
display: inline-block; |
|||
color: mc('grey', '800'); |
|||
|
|||
&.is-text { |
|||
display: inline-block; |
|||
width: 1em; |
|||
height: 1em; |
|||
vertical-align: middle; |
|||
position: relative; |
|||
top: -0.0625em; |
|||
stroke: none; |
|||
fill: none; |
|||
} |
|||
|
|||
@each $size in 16,18,20,24,32,48,64,96,128 { |
|||
&.is-#{$size} { |
|||
width: #{$size}px; |
|||
height: #{$size}px; |
|||
} |
|||
} |
|||
|
|||
&.has-right-pad { |
|||
margin-right: .5rem; |
|||
} |
|||
|
|||
&.is-outlined { |
|||
stroke-width: 2px; |
|||
use { |
|||
fill: inherit; |
|||
stroke: mc('grey', '800'); |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
.material-design-icon { |
|||
display: inline-flex; |
|||
} |
@ -1,25 +0,0 @@ |
|||
|
|||
// -------------------------------------- |
|||
// FONTS |
|||
// -------------------------------------- |
|||
|
|||
$core-font-standard: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; |
|||
$core-font-monospace: Consolas, "Liberation Mono", Menlo, Courier, monospace; |
|||
|
|||
// -------------------------------------- |
|||
// LAYOUT |
|||
// -------------------------------------- |
|||
|
|||
$tablet: 769px !default; |
|||
$desktop: 980px !default; |
|||
$widescreen: 1180px !default; |
|||
|
|||
// -------------------------------------- |
|||
// COLORS |
|||
// -------------------------------------- |
|||
|
|||
$color-text: mc('grey', '800'); |
|||
$color-link: mc('blue', '500'); |
|||
$color-link-hover: mc('blue', '700'); |
|||
$color-link-active: mc('purple', '500'); |
|||
$color-bg: #F4F5F9; |
@ -1,317 +0,0 @@ |
|||
.login { |
|||
background-color: mc('blue', '800'); |
|||
background-image: url('../svg/login-bg-motif.svg'); |
|||
background-repeat: repeat; |
|||
background-size: 200px; |
|||
width: 100%; |
|||
height: 100%; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
animation: loginBgReveal 20s linear infinite; |
|||
|
|||
@include keyframes(loginBgReveal) { |
|||
0% { |
|||
background-position-y: 0; |
|||
} |
|||
100% { |
|||
background-position-y: -800px; |
|||
} |
|||
} |
|||
|
|||
&::before { |
|||
content: ''; |
|||
position: absolute; |
|||
background-image: url('../svg/login-bg.svg'); |
|||
background-position: center bottom; |
|||
background-size: cover; |
|||
top: 0; |
|||
left: 0; |
|||
width: 100vw; |
|||
height: 100vh; |
|||
|
|||
@include until($tablet) { |
|||
display: none; |
|||
} |
|||
} |
|||
|
|||
&::after { |
|||
content: ''; |
|||
position: absolute; |
|||
background-image: linear-gradient(to bottom, rgba(mc('blue', '800'), 1) 0%, rgba(mc('blue', '800'), 0) 100%); |
|||
top: 0; |
|||
left: 0; |
|||
width: 100vw; |
|||
height: 25vh; |
|||
} |
|||
|
|||
&-container { |
|||
position: relative; |
|||
display: flex; |
|||
width: 400px; |
|||
align-items: stretch; |
|||
box-shadow: 0 14px 28px rgba(0,0,0,0.2); |
|||
border-radius: 6px; |
|||
animation: zoomIn .5s ease; |
|||
|
|||
&::after { |
|||
position: absolute; |
|||
top: 1rem; |
|||
right: 1rem; |
|||
content: " "; |
|||
@include spinner(mc('blue', '500'),0.5s,16px); |
|||
display: none; |
|||
} |
|||
|
|||
&.is-expanded { |
|||
width: 650px; |
|||
|
|||
.login-frame { |
|||
border-radius: 0 6px 6px 0; |
|||
border-left: none; |
|||
|
|||
@include until($tablet) { |
|||
border-radius: 0; |
|||
} |
|||
} |
|||
} |
|||
|
|||
&.is-loading::after { |
|||
display: block; |
|||
} |
|||
|
|||
@include until($tablet) { |
|||
width: 100%; |
|||
border-radius: 0; |
|||
|
|||
&.is-expanded { |
|||
width: 100%; |
|||
} |
|||
} |
|||
} |
|||
|
|||
&-providers { |
|||
display: flex; |
|||
flex-direction: column; |
|||
width: 250px; |
|||
|
|||
border-right: none; |
|||
border-radius: 6px 0 0 6px; |
|||
z-index: 1; |
|||
overflow: hidden; |
|||
|
|||
@include until($tablet) { |
|||
width: 50px; |
|||
border-radius: 0; |
|||
} |
|||
|
|||
button { |
|||
flex: 0 1 50px; |
|||
padding: 5px 15px; |
|||
border: none; |
|||
color: #FFF; |
|||
// background: linear-gradient(to right, rgba(mc('light-blue', '800'), .7), rgba(mc('light-blue', '800'), 1)); |
|||
// border-top: 1px solid rgba(mc('light-blue', '900'), .5); |
|||
background: linear-gradient(to right, rgba(0,0,0, .5), rgba(0,0,0, .7)); |
|||
border-top: 1px solid rgba(0,0,0, .2); |
|||
font-family: $core-font-standard; |
|||
font-weight: 600; |
|||
text-align: left; |
|||
min-height: 40px; |
|||
display: flex; |
|||
justify-content: flex-start; |
|||
align-items: center; |
|||
transition: all .4s ease; |
|||
|
|||
&:focus { |
|||
outline: none; |
|||
} |
|||
|
|||
@include until($tablet) { |
|||
justify-content: center; |
|||
} |
|||
|
|||
&:hover { |
|||
background-color: rgba(0,0,0, .4); |
|||
} |
|||
|
|||
&:first-child { |
|||
border-top: none; |
|||
|
|||
&.is-active { |
|||
border-top: 1px solid rgba(255,255,255, .5); |
|||
} |
|||
} |
|||
|
|||
&.is-active { |
|||
background-image: linear-gradient(to right, rgba(255,255,255,1) 0%,rgba(255,255,255,.77) 100%); |
|||
color: mc('grey', '800'); |
|||
cursor: default; |
|||
|
|||
&:hover { |
|||
background-color: transparent; |
|||
} |
|||
|
|||
svg path { |
|||
fill: mc('grey', '800'); |
|||
} |
|||
} |
|||
|
|||
i { |
|||
margin-right: 10px; |
|||
font-size: 16px; |
|||
|
|||
@include until($tablet) { |
|||
margin-right: 0; |
|||
font-size: 20px; |
|||
} |
|||
} |
|||
|
|||
svg { |
|||
margin-right: 10px; |
|||
width: auto; |
|||
height: 20px; |
|||
max-width: 18px; |
|||
max-height: 20px; |
|||
|
|||
path { |
|||
fill: #FFF; |
|||
} |
|||
|
|||
@include until($tablet) { |
|||
margin-right: 0; |
|||
font-size: 20px; |
|||
} |
|||
} |
|||
|
|||
span { |
|||
font-weight: 600; |
|||
|
|||
@include until($tablet) { |
|||
display: none; |
|||
} |
|||
} |
|||
} |
|||
|
|||
&-fill { |
|||
flex: 1 1 0; |
|||
background: linear-gradient(to right, rgba(mc('light-blue', '800'), .7), rgba(mc('light-blue', '800'), 1)); |
|||
} |
|||
} |
|||
|
|||
&-frame { |
|||
background-image: radial-gradient(circle at top center, rgba(255,255,255,1) 5%,rgba(255,255,255,.6) 100%); |
|||
border: 1px solid rgba(255,255,255, .5); |
|||
border-radius: 6px; |
|||
width: 400px; |
|||
padding: 1rem; |
|||
color: mc('grey', '700'); |
|||
display: flex; |
|||
justify-content: center; |
|||
flex-direction: column; |
|||
text-align: center; |
|||
|
|||
@include until($tablet) { |
|||
width: 100%; |
|||
border-radius: 0; |
|||
border: none; |
|||
} |
|||
|
|||
h1 { |
|||
font-size: 2rem; |
|||
font-weight: 600; |
|||
color: mc('light-blue', '700'); |
|||
text-shadow: 1px 1px 0 #FFF; |
|||
padding: 0; |
|||
margin: 0; |
|||
} |
|||
|
|||
h2 { |
|||
font-size: 1.5rem; |
|||
font-weight: 300; |
|||
color: mc('grey', '700'); |
|||
text-shadow: 1px 1px 0 #FFF; |
|||
padding: 0; |
|||
margin: 0 0 25px 0; |
|||
} |
|||
|
|||
form { |
|||
display: flex; |
|||
flex-direction: column; |
|||
} |
|||
|
|||
input[type=text], input[type=password] { |
|||
width: 100%; |
|||
border: 1px solid rgba(mc('blue-grey','500'), .5); |
|||
border-radius: 3px; |
|||
background-color: rgba(255,255,255,.9); |
|||
box-shadow: inset 0 0 0 3px rgba(255,255,255, .25); |
|||
padding: 0 15px; |
|||
height: 40px; |
|||
margin: 0 0 10px 0; |
|||
color: mc('grey', '700'); |
|||
font-weight: 600; |
|||
font-size: .8rem; |
|||
transition: all 0.4s ease; |
|||
text-align: center; |
|||
|
|||
&:focus { |
|||
outline: none; |
|||
border-color: mc('light-blue','500'); |
|||
background-color: rgba(255,255,255,1); |
|||
box-shadow: inset 0 0 8px rgba(mc('light-blue','500'), .5); |
|||
color: mc('light-blue', '800'); |
|||
} |
|||
|
|||
} |
|||
|
|||
.button { |
|||
background-image: linear-gradient(to bottom, mc('blue', '400') 0%, mc('blue', '600') 50%, mc('blue', '700') 100%); |
|||
background-repeat: no-repeat; |
|||
background-size: 100% 200%; |
|||
|
|||
&:hover { |
|||
background-position-y: 100%; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
&-tfa { |
|||
position: relative; |
|||
display: flex; |
|||
width: 400px; |
|||
align-items: stretch; |
|||
box-shadow: 0 14px 28px rgba(0,0,0,0.2); |
|||
border-radius: 6px; |
|||
animation: zoomIn .5s ease; |
|||
} |
|||
|
|||
&-copyright { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
position: absolute; |
|||
left: 0; |
|||
bottom: 10vh; |
|||
width: 100%; |
|||
z-index: 2; |
|||
color: mc('grey', '500'); |
|||
font-weight: 400; |
|||
|
|||
a { |
|||
font-weight: 600; |
|||
color: mc('blue', '500'); |
|||
margin-left: .25rem; |
|||
|
|||
@include until($tablet) { |
|||
color: mc('blue', '200'); |
|||
} |
|||
} |
|||
|
|||
@include until($tablet) { |
|||
color: mc('blue', '50'); |
|||
} |
|||
|
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
.TreeNavigation.treenav { |
|||
font-size: 13px; |
|||
|
|||
li { |
|||
padding-left: 24px; |
|||
} |
|||
a { |
|||
text-decoration: none; |
|||
color: mc('grey', '800'); |
|||
} |
|||
|
|||
.NavigationLevel__parent { |
|||
// font-weight: 600; |
|||
} |
|||
|
|||
.NavigationItem { |
|||
padding: 3px 0; |
|||
} |
|||
|
|||
.NavigationItem--active { |
|||
color: #42b883; |
|||
} |
|||
|
|||
.NavigationToggle__icon { |
|||
border-color: mc('blue', '600'); |
|||
} |
|||
} |
@ -1,7 +1,8 @@ |
|||
@charset "utf-8"; |
|||
|
|||
$primary: 'indigo'; |
|||
|
|||
@import "base/variables"; |
|||
@import "base/material"; |
|||
@import "base/mixins"; |
|||
|
|||
$tablet: 769px !default; |
|||
$desktop: 980px !default; |
|||
$widescreen: 1180px !default; |
@ -0,0 +1,5 @@ |
|||
extends master.pug |
|||
|
|||
block body |
|||
#root |
|||
admin |
@ -1,65 +0,0 @@ |
|||
extends ../../layout.pug |
|||
|
|||
block rootNavCenter |
|||
h2.nav-item= t('nav.settings') |
|||
|
|||
block rootNavRight |
|||
loading-spinner |
|||
.nav-item |
|||
a.button.btn-edit-discard(href='/') |
|||
i.nc-icon-outline.ui-1_home-minimal |
|||
span= t('nav.root') |
|||
|
|||
block content |
|||
|
|||
#page-type-account |
|||
.container.is-fluid |
|||
.columns.is-gapless |
|||
|
|||
.column.is-narrow.is-hidden-touch.sidebar |
|||
|
|||
aside |
|||
.sidebar-label |
|||
span= t('sidebar.navigation') |
|||
ul.sidebar-menu |
|||
li |
|||
a(href='/') |
|||
i.nc-icon-outline.ui-1_home-minimal |
|||
span= t('nav.root') |
|||
|
|||
aside |
|||
.sidebar-label |
|||
span= t('nav.account') |
|||
ul.sidebar-menu |
|||
li |
|||
a(href='/admin/profile') |
|||
i.nc-icon-outline.business_business-contact-86 |
|||
span= t('nav.myprofile') |
|||
li |
|||
a(href='/admin/stats') |
|||
i.nc-icon-outline.ui-3_chart-bars |
|||
span= t('nav.stats') |
|||
if rights.manage |
|||
li |
|||
a(href='/admin/users') |
|||
i.nc-icon-outline.users_multiple-19 |
|||
span= t('nav.users') |
|||
li |
|||
a(href='/admin/theme') |
|||
i.nc-icon-outline.ui-1_drop |
|||
span= t('nav.theme') |
|||
//-li |
|||
a(href='/admin/settings') |
|||
i.nc-icon-outline.ui-1_settings-gear-63 |
|||
span= t('nav.syssettings') |
|||
li |
|||
a(href='/admin/system') |
|||
i.nc-icon-outline.objects_planet |
|||
span= t('nav.sysinfo') |
|||
li |
|||
a(href='/logout') |
|||
i.nc-icon-outline.arrows-1_log-out |
|||
span= t('nav.logout') |
|||
|
|||
.column |
|||
block adminContent |
@ -1,62 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block adminContent |
|||
.hero |
|||
h1.title#title= t('nav.myprofile') |
|||
h2.subtitle= t('admin:profile.subtitle') |
|||
i.pageicon.nc-icon-outline.business_business-contact-86 |
|||
.form-sections |
|||
.columns.is-gapless |
|||
.column.is-two-thirds |
|||
admin-profile(inline-template, email=user.email, name=user.name, provider=user.provider) |
|||
div |
|||
section |
|||
label.label= t('admin:profile.email') |
|||
p.control.is-fullwidth |
|||
input.input(type='text', placeholder=t('admin:profile.email'), value=user.email, disabled) |
|||
if user.provider === 'local' |
|||
section |
|||
label.label= t('admin:profile.password') |
|||
p.control.is-fullwidth |
|||
input.input(type='password', placeholder=t('admin:profile.password'), value='********', v-model='password') |
|||
section |
|||
label.label= t('admin:profile.passwordverify') |
|||
p.control.is-fullwidth |
|||
input.input(type='password', placeholder=t('admin:profile.password'), value='********', v-model='passwordVerify') |
|||
section |
|||
label.label= t('admin:profile.displayname') |
|||
p.control.is-fullwidth |
|||
input.input(type='text', placeholder=t('admin:profile.displaynameexample'), v-model='name') |
|||
//-section |
|||
label.label #{t('admin:profile.tfa')}: #[strong.is-red(v-cloak) {{ tfaStatus }}] |
|||
button.button.is-blue(@click='$store.dispatch("modalProfile2fa/open")', :disabled='tfaIsActive') |
|||
i.nc-icon-outline.ui-1_circle-add |
|||
span= t('admin:profile.tfaenable') |
|||
button.button.is-blue(@click='saveUser', :disabled='!tfaIsActive') |
|||
i.nc-icon-outline.ui-1_circle-delete |
|||
span= t('admin:profile.tfadisable') |
|||
section |
|||
button.button.is-green(@click='saveUser') |
|||
i.nc-icon-outline.ui-1_check |
|||
span= t('admin:profile.savechanges') |
|||
.column |
|||
.panel-aside |
|||
label.label= t('admin:profile.provider') |
|||
p.control.account-profile-provider |
|||
case user.provider |
|||
when 'local': i.nc-icon-outline.ui-1_database |
|||
when 'windowslive': i.icon-windows2.is-blue |
|||
when 'azure': i.icon-windows2.is-blue |
|||
when 'google': i.icon-google.is-blue |
|||
when 'facebook': i.icon-facebook.is-indigo |
|||
when 'github': i.icon-github.is-grey |
|||
when 'slack': i.icon-slack.is-purple |
|||
when 'ldap': i.icon-arrow-repeat-outline |
|||
default: i.icon-warning |
|||
= t('auth:providers.' + user.provider) |
|||
label.label= t('admin:profile.membersince') |
|||
p.control= moment(user.createdAt).format('LL') |
|||
label.label= t('admin:profile.lastprofileupdate') |
|||
p.control= moment(user.updatedAt).format('LL') |
|||
|
|||
//-modal-profile-2fa |
@ -1,9 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block adminContent |
|||
.hero |
|||
h1.title#title= t('nav.syssettings') |
|||
h2.subtitle= t('admin:settings.subtitle') |
|||
i.pageicon.nc-icon-outline.ui-1_settings-gear-63 |
|||
.form-sections |
|||
section Coming soon |
@ -1,15 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block adminContent |
|||
.hero |
|||
h1.title#title= t('nav.stats') |
|||
h2.subtitle= t('admin:stats.subtitle') |
|||
i.pageicon.nc-icon-outline.ui-3_chart-bars |
|||
.form-sections |
|||
section |
|||
label.label= t('admin:stats.entries') |
|||
p.control= totalEntries |
|||
label.label= t('admin:stats.uploads') |
|||
p.control= totalUploads |
|||
label.label= t('admin:stats.users') |
|||
p.control= totalUsers |
@ -1,47 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block adminContent |
|||
.hero |
|||
h1.title#title= t('nav.sysinfo') |
|||
h2.subtitle= t('admin:system.subtitle') |
|||
i.pageicon.nc-icon-outline.objects_planet |
|||
admin-settings(inline-template) |
|||
.form-sections |
|||
section |
|||
img(src='/images/logo.png', style={width:'200px', float:'right'}) |
|||
label.label= t('admin:system.systemversion') |
|||
.section-block |
|||
p #{t('admin:system.currentversion')}: #[strong= sysversion.current] |
|||
if sysversion.latest |
|||
p #{t('admin:system.latestversion')}: #[strong= sysversion.latest] #[em (Published #{moment(sysversion.latestPublishedAt).fromNow()})] |
|||
p |
|||
if sysversion.current !== sysversion.latest |
|||
button.button.is-deep-orange(@click='$store.dispatch("modalUpgradeSystem/open", { mode: "upgrade"})')= t('admin:system.upgrade') |
|||
else |
|||
button.button.is-disabled= t('admin:system.upgrade') |
|||
button.button.is-deep-orange.is-outlined(@click='$store.dispatch("modalUpgradeSystem/open", { mode: "reinstall"})')= t('admin:system.reinstall') |
|||
else |
|||
p: em= t('admin:system.versioncheckfailed') |
|||
section |
|||
label.label= t('admin:system.hostinfo') |
|||
.section-block |
|||
p #{t('admin:system.os')}: #[strong= hostInfo.os] |
|||
p #{t('admin:system.nodeversion')}: #[strong= hostInfo.nodeversion] |
|||
p #{t('admin:system.hostname')}: #[strong= hostInfo.hostname] |
|||
p #{t('admin:system.cores')}: #[strong= hostInfo.cpus.length] |
|||
p #{t('admin:system.totalmem')}: #[strong= hostInfo.totalmem] |
|||
p #{t('admin:system.cwd')}: #[strong= hostInfo.cwd] |
|||
section |
|||
label.label= t('admin:system.administrativetools') |
|||
.section-block |
|||
h6 #{t('admin:system.flushcache')}: |
|||
p.is-small= t('admin:system.flushcachetext') |
|||
p: button.button.is-teal.is-outlined(v-on:click='flushcache')= t('admin:system.flushcachebtn') |
|||
h6 #{t('admin:system.resetaccounts')}: |
|||
p.is-small= t('admin:system.resetaccountstext') |
|||
p: button.button.is-teal.is-outlined(v-on:click='resetaccounts')= t('admin:system.resetaccountsbtn') |
|||
h6 #{t('admin:system.flushsessions')}: |
|||
p.is-small= t('admin:system.flushsessionstext') |
|||
p: button.button.is-teal.is-outlined(v-on:click='flushsessions')= t('admin:system.flushsessionsbtn') |
|||
|
|||
modal-upgrade-system |
@ -1,32 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block adminContent |
|||
.hero |
|||
h1.title#title= t('nav.theme') |
|||
h2.subtitle= t('admin:theme.subtitle') |
|||
i.pageicon.nc-icon-outline.ui-1_drop |
|||
admin-theme(inline-template, themedata=JSON.stringify(appconfig.theme)) |
|||
.form-sections |
|||
section |
|||
label.label= t('admin:theme.primarycolor') |
|||
color-picker(v-model='primary') |
|||
span.desc= t('admin:theme.primarycolordesc') |
|||
section |
|||
label.label= t('admin:theme.altcolor') |
|||
color-picker(v-model='alt') |
|||
span.desc= t('admin:theme.altcolordesc') |
|||
section |
|||
label.label= t('admin:theme.footercolor') |
|||
color-picker(v-model='footer') |
|||
span.desc= t('admin:theme.footercolordesc') |
|||
section |
|||
label.label= t('admin:theme.codeblock.title') |
|||
toggle(v-model='codedark', desc=t('admin:theme.codeblock.dark')) |
|||
toggle(v-model='codecolorize', desc=t('admin:theme.codeblock.colorize')) |
|||
section |
|||
button.button.is-grey(@click='resetTheme') |
|||
i.nc-icon-outline.design_paint-37 |
|||
span= t('admin:theme.reset') |
|||
button.button.is-green(@click='saveTheme') |
|||
i.nc-icon-outline.ui-1_check |
|||
span= t('admin:theme.savechanges') |
@ -1,122 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block rootNavRight |
|||
loading-spinner |
|||
.nav-item |
|||
a.button(href='/admin/users') |
|||
i.nc-icon-outline.arrows-2_corner-left-round |
|||
span= t('admin:users.returntousers') |
|||
|
|||
block adminContent |
|||
admin-edit-user(inline-template, usrdata=JSON.stringify(usr)) |
|||
div |
|||
.hero |
|||
h1.title= t('admin:users.edituser') |
|||
h2.subtitle= usr.email |
|||
i.pageicon.nc-icon-outline.users_single-05 |
|||
table.table |
|||
thead |
|||
tr |
|||
th= t('admin:users.uniqueid') |
|||
th= t('admin:users.provider') |
|||
th= t('admin:users.createdon') |
|||
th= t('admin:users.updatedon') |
|||
tbody |
|||
tr |
|||
td.is-centered= usr._id |
|||
td.is-centered.has-icons |
|||
case usr.provider |
|||
when 'local': i.nc-icon-outline.ui-1_database |
|||
when 'windowslive': i.icon-windows2.is-blue |
|||
when 'azure': i.icon-windows2.is-blue |
|||
when 'google': i.icon-google.is-blue |
|||
when 'facebook': i.icon-facebook.is-indigo |
|||
when 'github': i.icon-github.is-grey |
|||
when 'slack': i.icon-slack.is-purple |
|||
when 'ldap': i.icon-arrow-repeat-outline |
|||
default: i.icon-warning |
|||
= t('auth:providers.' + usr.provider) |
|||
td.is-centered= moment(usr.createdAt).format('lll') |
|||
td.is-centered= moment(usr.updatedAt).format('lll') |
|||
.form-sections |
|||
section |
|||
label.label= t('admin:profile.email') |
|||
p.control.is-fullwidth |
|||
input.input(type='text', placeholder='john.smith@example.com', v-model='email', disabled=!usrOpts.canChangeEmail) |
|||
section |
|||
label.label= t('admin:profile.displayname') |
|||
p.control.is-fullwidth |
|||
input.input(type='text', placeholder=t('admin:profile.displaynameexample'), v-model='name', disabled=!usrOpts.canChangeName) |
|||
if usrOpts.canChangePassword |
|||
section |
|||
label.label= t('admin:profile.password') |
|||
p.control.is-fullwidth |
|||
input.input(type='password', placeholder=t('admin:profile.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.nc-icon-outline.ui-2_square-add-08.is-green(v-if='right.deny === false || right.deny === "false"') |
|||
i.nc-icon-outline.ui-2_square-delete-10.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.nc-icon-outline.ui-1_simple-add |
|||
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.nc-icon-outline.ui-1_check |
|||
span Save Changes |
|||
a.button.button.is-grey.is-outlined(href='/admin/users') |
|||
i.nc-icon-outline.ui-1_simple-remove |
|||
span Discard |
|||
.column.is-narrow |
|||
section |
|||
if usrOpts.canBeDeleted |
|||
button.button.is-red(v-on:click='$store.dispatch("modalDeleteUser/open")') |
|||
i.nc-icon-outline.ui-1_trash |
|||
span Delete Account |
|||
|
|||
modal-delete-user(current-user=usr._id) |
@ -1,47 +0,0 @@ |
|||
extends ./_layout.pug |
|||
|
|||
block rootNavRight |
|||
loading-spinner |
|||
.nav-item |
|||
a.button(v-on:click='$store.dispatch("modalCreateUser/open")') |
|||
i.nc-icon-outline.ui-1_simple-add |
|||
span= t('admin:users.createauthorize') |
|||
|
|||
block adminContent |
|||
.hero |
|||
h1.title#title= t('nav.users') |
|||
h2.subtitle= t('admin:users.subtitle') |
|||
i.pageicon.nc-icon-outline.users_multiple-19 |
|||
table.table |
|||
thead |
|||
tr |
|||
th |
|||
th= t('admin:users.name') |
|||
th= t('admin:users.email') |
|||
th= t('admin:users.provider') |
|||
th= t('admin:users.createdon') |
|||
th= t('admin:users.updatedon') |
|||
tbody |
|||
each usr in usrs |
|||
tr |
|||
td.is-icon |
|||
i.nc-icon-outline.users_single-05.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.nc-icon-outline.ui-1_database |
|||
when 'windowslive': i.icon-windows2.is-blue |
|||
when 'azure': i.icon-windows2.is-blue |
|||
when 'google': i.icon-google.is-blue |
|||
when 'facebook': i.icon-facebook.is-indigo |
|||
when 'github': i.icon-github.is-grey |
|||
when 'slack': i.icon-slack.is-purple |
|||
when 'ldap': i.icon-arrow-repeat-outline |
|||
default: i.icon-warning |
|||
= t('auth:providers.' + usr.provider) |
|||
td.is-centered= moment(usr.createdAt).format('lll') |
|||
td.is-centered= moment(usr.updatedAt).format('lll') |
|||
|
|||
modal-create-user |
@ -1,14 +0,0 @@ |
|||
#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 }} |
|||
|
|||
if appflash.length > 0 |
|||
script(type='text/javascript'). |
|||
var alertsData = !{JSON.stringify(appflash)}; |
|||
else |
|||
script(type='text/javascript'). |
|||
var alertsData = []; |
@ -1,8 +0,0 @@ |
|||
footer.footer(class=['is-' + appconfig.theme.footer], ref='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') |
@ -1,19 +0,0 @@ |
|||
|
|||
#header-container |
|||
nav.nav#header(class=['is-' + appconfig.theme.primary], ref='header') |
|||
.nav-left |
|||
block rootNavLeft |
|||
a.nav-item(href='/') |
|||
h1 |
|||
i.nc-icon-outline.ui-2_layers |
|||
= appconfig.title |
|||
.nav-center |
|||
block rootNavCenter |
|||
search |
|||
span.nav-toggle |
|||
span |
|||
span |
|||
span |
|||
.nav-right |
|||
block rootNavRight |
|||
loading-spinner |
@ -1,6 +1,6 @@ |
|||
extends ../master.pug |
|||
extends master.pug |
|||
|
|||
block body |
|||
#app |
|||
#root |
|||
v-app |
|||
editor |
@ -1,30 +0,0 @@ |
|||
doctype html |
|||
html(data-logic='error') |
|||
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=appconfig.host + '/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=appconfig.host + '/favicons/apple-icon-' + favsize + 'x' + favsize + '.png') |
|||
link(rel='icon', type='image/png', sizes='192x192', href=appconfig.host + '/favicons/android-icon-192x192.png') |
|||
each favsize in [32, 96, 16] |
|||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href=appconfig.host + '/favicons/favicon-' + favsize + 'x' + favsize + '.png') |
|||
link(rel='manifest', href=appconfig.host + '/manifest.json') |
|||
|
|||
// JS / CSS |
|||
script(type='text/javascript', src=appconfig.host + '/js/vendor.js') |
|||
script(type='text/javascript', src=appconfig.host + '/js/app.js') |
|||
|
|||
body(class='is-forbidden') |
|||
.container |
|||
a(href='/'): img(src=appconfig.host + '/images/logo.png') |
|||
h1= t('errors:forbidden') |
|||
h2= t('errors:forbiddendetail') |
|||
a.button.is-amber.is-inverted(href=appconfig.host + '/')= t('errors:actions.gohome') |
|||
a.button.is-amber.is-inverted(href=appconfig.host + '/login')= t('errors:actions.loginas') |
@ -1,30 +0,0 @@ |
|||
doctype html |
|||
html(data-logic='error') |
|||
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=appconfig.host + '/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=appconfig.host + '/favicons/apple-icon-' + favsize + 'x' + favsize + '.png') |
|||
link(rel='icon', type='image/png', sizes='192x192', href=appconfig.host + '/favicons/android-icon-192x192.png') |
|||
each favsize in [32, 96, 16] |
|||
link(rel='icon', type='image/png', sizes=favsize + 'x' + favsize, href=appconfig.host + '/favicons/favicon-' + favsize + 'x' + favsize + '.png') |
|||
link(rel='manifest', href=appconfig.host + '/manifest.json') |
|||
|
|||
// JS / CSS |
|||
script(type='text/javascript', src=appconfig.host + '/js/vendor.js') |
|||
script(type='text/javascript', src=appconfig.host + '/js/app.js') |
|||
|
|||
body(class='is-notexist') |
|||
.container |
|||
a(href='/'): img(src=appconfig.host + '/images/logo.png') |
|||
h1 !{message} |
|||
h2= t('errors:notexistdetail') |
|||
a.button.is-amber.is-inverted.is-featured(href=appconfig.host + '/create/' + newpath)= t('errors:actions.create') |
|||
a.button.is-amber.is-inverted(href=appconfig.host + '/')= t('errors:actions.gohome') |
@ -1,11 +0,0 @@ |
|||
extends ./master.pug |
|||
|
|||
block body |
|||
body |
|||
#app |
|||
navigator |
|||
main |
|||
block content |
|||
footer |
|||
|
|||
block outside |
@ -0,0 +1,5 @@ |
|||
extends master.pug |
|||
|
|||
block body |
|||
#root.is-fullscreen |
|||
login |
@ -1,5 +0,0 @@ |
|||
extends ../master.pug |
|||
|
|||
block body |
|||
#app |
|||
admin |
@ -1,5 +0,0 @@ |
|||
extends ../master.pug |
|||
|
|||
block body |
|||
#app.is-fullscreen |
|||
login |
@ -1,5 +0,0 @@ |
|||
extends ../master.pug |
|||
|
|||
block body |
|||
#app |
|||
profile |
@ -1,9 +1,9 @@ |
|||
extends ../master.pug |
|||
extends master.pug |
|||
|
|||
block head |
|||
|
|||
block body |
|||
#app |
|||
#root |
|||
page(title='Planet Earth', description='The 3rd planet of the solar system') |
|||
template(slot='contents') |
|||
p Earth is the third planet from the Sun and the only astronomical object known to harbor life. According to radiometric dating and other sources of evidence, Earth formed over 4.5 billion years ago.[24][25][26] Earth's gravity interacts with other objects in space, especially the Sun and the Moon, Earth's only natural satellite. Earth revolves around the Sun in 365.26 days, a period known as an Earth year. During this time, Earth rotates about its axis about 366.26 times.[n 5] |
@ -0,0 +1,5 @@ |
|||
extends master.pug |
|||
|
|||
block body |
|||
#root |
|||
profile |
@ -1,5 +1,5 @@ |
|||
extends ../master.pug |
|||
extends master.pug |
|||
|
|||
block body |
|||
#app |
|||
#root |
|||
setup(telemetry-id=telemetryClientID, wiki-version=packageObj.version) |
@ -1,7 +1,7 @@ |
|||
extends ../master.pug |
|||
extends master.pug |
|||
|
|||
block body |
|||
#app.is-fullscreen |
|||
#root.is-fullscreen |
|||
v-app |
|||
.onboarding |
|||
img.animated.fadeIn(src='/svg/logo-wikijs.svg', alt='Wiki.js') |
Write
Preview
Loading…
Cancel
Save