misc: migrate to vuetify 2.0 (wip)
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-line-chart.svg', alt='Analytics', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:analytics.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:analytics.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:analytics.subtitle') }}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s.mr-3(outlined, color='grey', @click='refresh', large)
|
||||
v-icon mdi-refresh
|
||||
@@ -17,7 +17,7 @@
|
||||
v-flex(lg3, xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{$t('admin:analytics.providers')}}
|
||||
.subtitle-1 {{$t('admin:analytics.providers')}}
|
||||
v-list(two-line, dense).py-0
|
||||
template(v-for='(str, idx) in providers')
|
||||
v-list-item(:key='str.key', @click='selectedProvider = str.key', :disabled='!str.isAvailable')
|
||||
@@ -36,15 +36,15 @@
|
||||
|
||||
v-card.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(color='primary', dense, flat, dark)
|
||||
.subheading {{provider.title}}
|
||||
.subtitle-1 {{provider.title}}
|
||||
v-card-text
|
||||
v-form
|
||||
.analytic-provider-logo
|
||||
img(:src='provider.logo', :alt='provider.title')
|
||||
.caption.pt-3 {{provider.description}}
|
||||
.caption.pb-3: a(:href='provider.website') {{provider.website}}
|
||||
v-divider.mt-3
|
||||
.overline.py-4 {{$t('admin:analytics.providerConfiguration')}}
|
||||
.body-2.pt-3 {{provider.description}}
|
||||
.body-2.pt-3: a(:href='provider.website') {{provider.website}}
|
||||
v-divider.mt-5
|
||||
.overline.py-5 {{$t('admin:analytics.providerConfiguration')}}
|
||||
.body-1.ml-3(v-if='!provider.config || provider.config.length < 1'): em {{$t('admin:analytics.providerNoConfiguration')}}
|
||||
template(v-else, v-for='cfg in provider.config')
|
||||
v-select(
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img(src='/svg/icon-rest-api.svg', alt='API', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2 API Access
|
||||
.subheading.grey--text Manage keys to access the API #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
.subtitle-1.grey--text Manage keys to access the API #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
v-spacer
|
||||
v-btn(outline, color='grey', large, @click='refresh', disabled)
|
||||
v-icon refresh
|
||||
|
||||
@@ -6,41 +6,41 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-unlock.svg', alt='Authentication', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:auth.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:auth.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:auth.subtitle') }}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s.mr-3(outlined, color='grey', @click='refresh', large)
|
||||
v-icon refresh
|
||||
v-icon mdi-refresh
|
||||
v-btn.animated.fadeInDown(color='success', @click='save', depressed, large)
|
||||
v-icon(left) check
|
||||
v-icon(left) mdi-check
|
||||
span {{$t('common:actions.apply')}}
|
||||
|
||||
v-flex(lg3, xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{$t('admin:auth.strategies')}}
|
||||
.subtitle-1 {{$t('admin:auth.strategies')}}
|
||||
v-list(two-line, dense).py-0
|
||||
template(v-for='(str, idx) in strategies')
|
||||
v-list-item(:key='str.key', @click='selectedStrategy = str.key', :disabled='!str.isAvailable')
|
||||
v-list-item-avatar
|
||||
v-icon(color='grey', v-if='!str.isAvailable') indeterminate_check_box
|
||||
v-icon(color='primary', v-else-if='str.isEnabled && str.key !== `local`', v-ripple, @click='str.isEnabled = false') check_box
|
||||
v-icon(color='primary', v-else-if='str.isEnabled && str.key === `local`') check_box
|
||||
v-icon(color='grey', v-else, v-ripple, @click='str.isEnabled = true') check_box_outline_blank
|
||||
v-list-item-avatar(size='24')
|
||||
v-icon(color='grey', v-if='!str.isAvailable') mdi-minus-box-outline
|
||||
v-icon(color='primary', v-else-if='str.isEnabled && str.key !== `local`', v-ripple, @click='str.isEnabled = false') mdi-checkbox-marked-outline
|
||||
v-icon(color='primary', v-else-if='str.isEnabled && str.key === `local`') mdi-checkbox-marked-outline
|
||||
v-icon(color='grey', v-else, v-ripple, @click='str.isEnabled = true') mdi-checkbox-blank-outline
|
||||
v-list-item-content
|
||||
v-list-item-title.body-2(:class='!str.isAvailable ? `grey--text` : (selectedStrategy === str.key ? `primary--text` : ``)') {{ str.title }}
|
||||
v-list-item-sub-title.caption(:class='!str.isAvailable ? `grey--text text--lighten-1` : (selectedStrategy === str.key ? `blue--text ` : ``)') {{ str.description }}
|
||||
v-list-item-subtitle: .caption(:class='!str.isAvailable ? `grey--text text--lighten-1` : (selectedStrategy === str.key ? `blue--text ` : ``)') {{ str.description }}
|
||||
v-list-item-avatar(v-if='selectedStrategy === str.key')
|
||||
v-icon.animated.fadeInLeft(color='primary') arrow_forward_ios
|
||||
v-icon.animated.fadeInLeft(color='primary', large) mdi-chevron-right
|
||||
v-divider(v-if='idx < strategies.length - 1')
|
||||
|
||||
v-card.wiki-form.mt-3.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{$t('admin:auth.globalAdvSettings')}}
|
||||
.subtitle-1 {{$t('admin:auth.globalAdvSettings')}}
|
||||
v-card-text
|
||||
v-text-field.md2(
|
||||
v-model='jwtAudience'
|
||||
outlined
|
||||
prepend-icon='account_balance'
|
||||
prepend-icon='mdi-account-group-outline'
|
||||
:label='$t(`admin:auth.jwtAudience`)'
|
||||
:hint='$t(`admin:auth.jwtAudienceHint`)'
|
||||
persistent-hint
|
||||
@@ -48,7 +48,7 @@
|
||||
v-text-field.mt-3.md2(
|
||||
v-model='jwtExpiration'
|
||||
outlined
|
||||
prepend-icon='schedule'
|
||||
prepend-icon='mdi-clock-outline'
|
||||
:label='$t(`admin:auth.tokenExpiration`)'
|
||||
:hint='$t(`admin:auth.tokenExpirationHint`)'
|
||||
persistent-hint
|
||||
@@ -56,7 +56,7 @@
|
||||
v-text-field.mt-3.md2(
|
||||
v-model='jwtRenewablePeriod'
|
||||
outlined
|
||||
prepend-icon='update'
|
||||
prepend-icon='mdi-update'
|
||||
:label='$t(`admin:auth.tokenRenewalPeriod`)'
|
||||
:hint='$t(`admin:auth.tokenRenewalPeriodHint`)'
|
||||
persistent-hint
|
||||
@@ -66,13 +66,13 @@
|
||||
|
||||
v-card.wiki-form.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(color='primary', dense, flat, dark)
|
||||
.subheading {{strategy.title}}
|
||||
.subtitle-1 {{strategy.title}}
|
||||
v-card-text
|
||||
v-form
|
||||
.authlogo
|
||||
img(:src='strategy.logo', :alt='strategy.title')
|
||||
.caption.pt-3 {{strategy.description}}
|
||||
.caption.pb-3: a(:href='strategy.website') {{strategy.website}}
|
||||
.body-2.pt-3 {{strategy.description}}
|
||||
.body-2.pt-3.pb-5: a(:href='strategy.website') {{strategy.website}}
|
||||
i18next.body-2(path='admin:auth.strategyState', tag='div', v-if='strategy.isEnabled')
|
||||
v-chip(color='green', small, dark, label, place='state') {{$t('admin:auth.strategyStateActive')}}
|
||||
span(v-if='selectedStrategy === `local`', place='locked') {{$t('admin:auth.strategyStateLocked')}}
|
||||
@@ -80,8 +80,8 @@
|
||||
i18next.body-2(path='admin:auth.strategyState', tag='div', v-else)
|
||||
v-chip(color='red', small, dark, label, place='state') {{$t('admin:auth.strategyStateInactive')}}
|
||||
v-divider.mt-3
|
||||
v-subheader.pl-0 {{$t('admin:auth.strategyConfiguration')}}
|
||||
.body-1.ml-3(v-if='!strategy.config || strategy.config.length < 1'): em {{$t('admin:auth.strategyNoConfiguration')}}
|
||||
.overline.my-5 {{$t('admin:auth.strategyConfiguration')}}
|
||||
.body-2.ml-3(v-if='!strategy.config || strategy.config.length < 1'): em {{$t('admin:auth.strategyNoConfiguration')}}
|
||||
template(v-else, v-for='cfg in strategy.config')
|
||||
v-select(
|
||||
v-if='cfg.value.type === "string" && cfg.value.enum'
|
||||
@@ -90,7 +90,7 @@
|
||||
:key='cfg.key'
|
||||
:label='cfg.value.title'
|
||||
v-model='cfg.value.value'
|
||||
prepend-icon='settings_applications'
|
||||
prepend-icon='mdi-settings-box'
|
||||
:hint='cfg.value.hint ? cfg.value.hint : ""'
|
||||
persistent-hint
|
||||
:class='cfg.value.hint ? "mb-2" : ""'
|
||||
@@ -101,7 +101,7 @@
|
||||
:label='cfg.value.title'
|
||||
v-model='cfg.value.value'
|
||||
color='primary'
|
||||
prepend-icon='settings_applications'
|
||||
prepend-icon='mdi-settings-box'
|
||||
:hint='cfg.value.hint ? cfg.value.hint : ""'
|
||||
persistent-hint
|
||||
)
|
||||
@@ -111,7 +111,7 @@
|
||||
:key='cfg.key'
|
||||
:label='cfg.value.title'
|
||||
v-model='cfg.value.value'
|
||||
prepend-icon='settings_applications'
|
||||
prepend-icon='mdi-settings-box'
|
||||
:hint='cfg.value.hint ? cfg.value.hint : ""'
|
||||
persistent-hint
|
||||
:class='cfg.value.hint ? "mb-2" : ""'
|
||||
@@ -122,13 +122,13 @@
|
||||
:key='cfg.key'
|
||||
:label='cfg.value.title'
|
||||
v-model='cfg.value.value'
|
||||
prepend-icon='settings_applications'
|
||||
prepend-icon='mdi-settings-box'
|
||||
:hint='cfg.value.hint ? cfg.value.hint : ""'
|
||||
persistent-hint
|
||||
:class='cfg.value.hint ? "mb-2" : ""'
|
||||
)
|
||||
v-divider.mt-3
|
||||
v-subheader.pl-0 {{$t('admin:auth.registration')}}
|
||||
.overline.my-5 {{$t('admin:auth.registration')}}
|
||||
.pr-3
|
||||
v-switch.ml-3(
|
||||
v-model='strategy.selfRegistration'
|
||||
@@ -149,7 +149,7 @@
|
||||
v-combobox.ml-3.mt-3(
|
||||
:label='$t(`admin:auth.domainsWhitelist`)'
|
||||
v-model='strategy.domainWhitelist'
|
||||
prepend-icon='mail_outline'
|
||||
prepend-icon='mdi-email-check-outline'
|
||||
outlined
|
||||
:disabled='!strategy.selfRegistration'
|
||||
:hint='$t(`admin:auth.domainsWhitelistHint`)'
|
||||
@@ -168,7 +168,7 @@
|
||||
item-value='id'
|
||||
:label='$t(`admin:auth.autoEnrollGroups`)'
|
||||
v-model='strategy.autoEnrollGroups'
|
||||
prepend-icon='people'
|
||||
prepend-icon='mdi-account-group'
|
||||
:hint='$t(`admin:auth.autoEnrollGroupsHint`)'
|
||||
small-chips
|
||||
persistent-hint
|
||||
@@ -179,7 +179,7 @@
|
||||
)
|
||||
template(v-if='strategy.useForm')
|
||||
v-divider.mt-3
|
||||
v-subheader.pl-0 {{$t('admin:auth.security')}}
|
||||
.overline.my-5 {{$t('admin:auth.security')}}
|
||||
v-switch.ml-3(
|
||||
v-model='strategy.recaptcha'
|
||||
:disabled='true'
|
||||
@@ -189,30 +189,30 @@
|
||||
persistent-hint
|
||||
)
|
||||
|
||||
v-card.mt-3.wiki-form.animated.fadeInUp.wait-p4s
|
||||
v-card.mt-4.wiki-form.animated.fadeInUp.wait-p4s
|
||||
v-toolbar(color='primary', dense, flat, dark)
|
||||
.subheading {{$t('admin:auth.configReference')}}
|
||||
.subtitle-1 {{$t('admin:auth.configReference')}}
|
||||
v-card-text
|
||||
.body-1 {{$t('admin:auth.configReferenceSubtitle')}}
|
||||
.body-2 {{$t('admin:auth.configReferenceSubtitle')}}
|
||||
v-alert.mt-3.radius-7(v-if='host.length < 8', color='red', outline, :value='true', icon='warning')
|
||||
i18next(path='admin:auth.siteUrlNotSetup', tag='span')
|
||||
strong(place='siteUrl') {{$t('admin:general.siteUrl')}}
|
||||
strong(place='general') {{$t('admin:general.title')}}
|
||||
.pa-3.mt-3.radius-7.grey(v-else, :class='$vuetify.dark ? `darken-3-d5` : `lighten-3`')
|
||||
.body-2 {{$t('admin:auth.allowedWebOrigins')}}
|
||||
.body-1 {{host}}
|
||||
.body-2: strong {{$t('admin:auth.allowedWebOrigins')}}
|
||||
.body-2 {{host}}
|
||||
v-divider.my-3
|
||||
.body-2 {{$t('admin:auth.callbackUrl')}}
|
||||
.body-1 {{host}}/login/{{strategy.key}}/callback
|
||||
.body-2: strong {{$t('admin:auth.callbackUrl')}}
|
||||
.body-2 {{host}}/login/{{strategy.key}}/callback
|
||||
v-divider.my-3
|
||||
.body-2 {{$t('admin:auth.loginUrl')}}
|
||||
.body-1 {{host}}/login
|
||||
.body-2: strong {{$t('admin:auth.loginUrl')}}
|
||||
.body-2 {{host}}/login
|
||||
v-divider.my-3
|
||||
.body-2 {{$t('admin:auth.logoutUrl')}}
|
||||
.body-1 {{host}}
|
||||
.body-2: strong {{$t('admin:auth.logoutUrl')}}
|
||||
.body-2 {{host}}
|
||||
v-divider.my-3
|
||||
.body-2 {{$t('admin:auth.tokenEndpointAuthMethod')}}
|
||||
.body-1 HTTP-POST
|
||||
.body-2: strong {{$t('admin:auth.tokenEndpointAuthMethod')}}
|
||||
.body-2 HTTP-POST
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -337,6 +337,7 @@ export default {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-left: 16px;
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
|
||||
@@ -6,49 +6,50 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-heart-health.svg', alt='Contribute', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:contribute.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:contribute.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:contribute.subtitle') }}
|
||||
v-card.mt-3.animated.fadeInUp
|
||||
v-card-text
|
||||
i18next.body-1.pl-3(path='admin:contribute.openSource', tag='div')
|
||||
v-icon(color='red') favorite
|
||||
i18next.body-2.pl-3(path='admin:contribute.openSource', tag='div')
|
||||
v-icon(color='red') mdi-heart
|
||||
a(href='https://requarks.io', target='_blank') requarks.io
|
||||
a(href='https://github.com/Requarks/wiki/graphs/contributors', target='_blank') {{ $t('admin:contribute.openSourceContributors') }}
|
||||
.body-1.pt-3.pl-3 {{ $t('admin:contribute.needYourHelp') }}
|
||||
.body-2.pt-3.pl-3 {{ $t('admin:contribute.needYourHelp') }}
|
||||
v-divider.mt-3
|
||||
v-subheader {{ $t('admin:contribute.fundOurWork') }}
|
||||
v-subheader.subtitle-2 {{ $t('admin:contribute.fundOurWork') }}
|
||||
v-tabs.mx-3.radius-7.admin-contribute-tabs(
|
||||
centered
|
||||
fixed-tabs
|
||||
color='primary'
|
||||
background-color='primary'
|
||||
color='white'
|
||||
dark
|
||||
slider-color='#FFF'
|
||||
icons-and-text
|
||||
)
|
||||
v-tab
|
||||
span Patreon
|
||||
img(src='/svg/icon-patreon.svg')
|
||||
img.my-1(src='/svg/icon-patreon.svg', style='height: 24px;')
|
||||
v-tab
|
||||
span OpenCollective
|
||||
img(src='/svg/icon-opencollective.svg')
|
||||
img.my-1(src='/svg/icon-opencollective.svg', style='height: 24px;')
|
||||
v-tab
|
||||
span PayPal
|
||||
img(src='/svg/icon-paypal.svg')
|
||||
img.my-1(src='/svg/icon-paypal.svg', style='height: 24px;')
|
||||
v-tab
|
||||
span Ethereum
|
||||
img(src='/svg/icon-ethereum.svg')
|
||||
img.my-1(src='/svg/icon-ethereum.svg', style='height: 24px;')
|
||||
v-tab
|
||||
span T-Shirts
|
||||
img(src='/svg/icon-t-shirt.svg')
|
||||
img.my-1(src='/svg/icon-t-shirt.svg', style='height: 24px;')
|
||||
v-tab-item(:transition='false', :reverse-transition='false')
|
||||
.body-1.pa-3 {{ $t('admin:contribute.patreon') }}
|
||||
.body-2.pa-3 {{ $t('admin:contribute.patreon') }}
|
||||
a.ml-3(href='https://www.patreon.com/bePatron?u=16744039', :title='$t(`admin:contribute.becomeAPatron`)')
|
||||
img(src='/img/donate_patreon.png', :alt='$t(`admin:contribute.becomeAPatron`)' style='width:200px;')
|
||||
v-tab-item(:transition='false', :reverse-transition='false')
|
||||
.body-1.pa-3 {{ $t('admin:contribute.openCollective') }}
|
||||
.body-2.pa-3 {{ $t('admin:contribute.openCollective') }}
|
||||
a.ml-3(href='https://opencollective.com/wikijs/donate', :title='$t(`admin:contribute.makeADonation`)')
|
||||
img(src='/img/donate_opencollective.png', :alt='$t(`admin:contribute.makeADonation`)' style='width:300px;')
|
||||
v-tab-item(:transition='false', :reverse-transition='false')
|
||||
.body-1.pa-3 {{ $t('admin:contribute.paypal') }}
|
||||
.body-2.pa-3 {{ $t('admin:contribute.paypal') }}
|
||||
.ml-3
|
||||
form(action='https://www.paypal.com/cgi-bin/webscr', method='post', target='_top')
|
||||
input(type='hidden', name='cmd', value='_s-xclick')
|
||||
@@ -66,11 +67,11 @@
|
||||
.body-1.pa-3 {{ $t('admin:contribute.tshirts') }}
|
||||
v-card-actions.ml-2
|
||||
v-btn(outline, :color='darkMode ? `blue lighten-1` : `primary`', href='https://wikijs.threadless.com', large)
|
||||
v-icon(left) shopping_cart
|
||||
v-icon(left) mdi-tshirt-crew
|
||||
span {{ $t('admin:contribute.shop') }}
|
||||
v-divider.mt-3
|
||||
v-subheader {{ $t('admin:contribute.contribute') }}
|
||||
.body-1.pl-3
|
||||
v-subheader.subtitle-2 {{ $t('admin:contribute.contribute') }}
|
||||
.body-2.pl-3
|
||||
ul
|
||||
i18next(path='admin:contribute.submitAnIdea', tag='li')
|
||||
a(href='https://wiki.js.org/feedback', target='_blank') {{ $t('admin:contribute.submitAnIdeaLink') }}
|
||||
@@ -79,126 +80,126 @@
|
||||
i18next(path='admin:contribute.helpTranslate', tag='li')
|
||||
a(href='https://wiki.requarks.io/slack', target='_blank') Slack
|
||||
v-divider.mt-3
|
||||
v-subheader {{ $t('admin:contribute.spreadTheWord') }}
|
||||
.body-1.pl-3
|
||||
v-subheader.subtitle-2 {{ $t('admin:contribute.spreadTheWord') }}
|
||||
.body-2.pl-3
|
||||
ul
|
||||
li {{ $t('admin:contribute.talkToFriends') }}
|
||||
i18next(path='admin:contribute.followUsOnTwitter', tag='li')
|
||||
a(href='https://twitter.com/requarks', target='_blank') Twitter
|
||||
v-toolbar(color='teal', dense, dark)
|
||||
.subheading Sponsors
|
||||
.subtitle-1 Sponsors
|
||||
v-spacer
|
||||
v-btn(outline, small, href='https://opencollective.com/wikijs/order/1273') Become a Sponsor
|
||||
v-btn(outlined, small, href='https://opencollective.com/wikijs/order/1273') Become a Sponsor
|
||||
v-list(two-line)
|
||||
template(v-for='(sponsor, idx) in sponsors')
|
||||
v-list-item(:key='sponsor.id')
|
||||
v-list-item-avatar
|
||||
img(v-if='sponsor.image', :src='sponsor.image')
|
||||
v-avatar(v-else, color='teal', size='40')
|
||||
span.white--text.subheading {{sponsor.name[0].toUpperCase()}}
|
||||
span.white--text.subtitle-1 {{sponsor.name[0].toUpperCase()}}
|
||||
v-list-item-content
|
||||
v-list-item-title {{sponsor.name}}
|
||||
v-list-item-sub-title {{sponsor.description}}
|
||||
v-list-item-subtitle {{sponsor.description}}
|
||||
v-list-item-action(v-if='sponsor.twitter')
|
||||
v-btn(icon, :href='sponsor.twitter', target='_blank')
|
||||
icon-twitter(fillColor='#9e9e9e')
|
||||
v-icon mdi-twitter
|
||||
v-list-item-action(v-if='sponsor.website')
|
||||
v-btn(icon, :href='sponsor.website', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider(v-if='idx < sponsors.length - 1')
|
||||
v-toolbar(color='blue-grey', dense, dark)
|
||||
.subheading Backers
|
||||
.subtitle-1 Backers
|
||||
v-spacer
|
||||
v-btn(outline, small, href='https://opencollective.com/wikijs/order/1272') Become a Backer
|
||||
v-btn(outlined, small, href='https://opencollective.com/wikijs/order/1272') Become a Backer
|
||||
v-list(two-line, dense)
|
||||
template(v-for='(backer, idx) in backers')
|
||||
v-list-item(:key='backer.id')
|
||||
v-list-item-avatar
|
||||
img(v-if='backer.image', :src='backer.image')
|
||||
v-avatar(v-else, color='blue-grey', size='40')
|
||||
span.white--text.subheading {{backer.name[0].toUpperCase()}}
|
||||
span.white--text.subtitle-1 {{backer.name[0].toUpperCase()}}
|
||||
v-list-item-content
|
||||
v-list-item-title {{backer.name}}
|
||||
v-list-item-sub-title {{backer.description}}
|
||||
v-list-item-subtitle {{backer.description}}
|
||||
v-list-item-action(v-if='backer.twitter')
|
||||
v-btn(icon, :href='backer.twitter', target='_blank')
|
||||
icon-twitter(fillColor='#9e9e9e')
|
||||
v-icon mdi-twitter
|
||||
v-list-item-action(v-if='backer.website')
|
||||
v-btn(icon, :href='backer.website', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider(v-if='idx < backers.length - 1')
|
||||
v-toolbar(color='primary', dense, dark)
|
||||
.subheading Special Thanks
|
||||
.subtitle-1 Special Thanks
|
||||
v-list(two-line)
|
||||
v-list-item
|
||||
v-list-item-avatar
|
||||
img(src='https://static.requarks.io/logo/algolia.svg', alt='Algolia')
|
||||
v-list-item-content
|
||||
v-list-item-title Algolia
|
||||
v-list-item-sub-title Algolia is a powerful search-as-a-service solution, made easy to use with API clients, UI libraries, and pre-built integrations.
|
||||
v-list-item-subtitle Algolia is a powerful search-as-a-service solution, made easy to use with API clients, UI libraries, and pre-built integrations.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://www.algolia.com/', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider
|
||||
v-list-item
|
||||
v-list-item-avatar
|
||||
img(src='https://static.requarks.io/logo/browserstack.svg', alt='Browserstack')
|
||||
v-list-item-content
|
||||
v-list-item-title BrowserStack
|
||||
v-list-item-sub-title BrowserStack is a cloud web and mobile testing platform that enables developers to test their websites and mobile applications.
|
||||
v-list-item-subtitle BrowserStack is a cloud web and mobile testing platform that enables developers to test their websites and mobile applications.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://www.browserstack.com/', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider
|
||||
v-list-item
|
||||
v-list-item-avatar
|
||||
img(src='https://static.requarks.io/logo/cloudflare.svg', alt='Cloudflare')
|
||||
v-list-item-content
|
||||
v-list-item-title Cloudflare
|
||||
v-list-item-sub-title Providing content delivery network services, DDoS mitigation, Internet security and distributed domain name server services.
|
||||
v-list-item-subtitle Providing content delivery network services, DDoS mitigation, Internet security and distributed domain name server services.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://www.cloudflare.com/', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider
|
||||
v-list-item
|
||||
v-list-item-avatar
|
||||
img(src='https://static.requarks.io/logo/digitalocean.svg', alt='DigitalOcean')
|
||||
v-list-item-content
|
||||
v-list-item-title DigitalOcean
|
||||
v-list-item-sub-title Providing developers and businesses a reliable, easy-to-use cloud computing platform of virtual servers (Droplets), object storage (Spaces), and more.
|
||||
v-list-item-subtitle Providing developers and businesses a reliable, easy-to-use cloud computing platform of virtual servers (Droplets), object storage (Spaces), and more.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://m.do.co/c/5f7445bfa4d0', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider
|
||||
v-list-item
|
||||
v-list-item-avatar(tile)
|
||||
img(src='/svg/logo-icons8.svg', alt='Icons8')
|
||||
v-list-item-content
|
||||
v-list-item-title Icons8
|
||||
v-list-item-sub-title All the Icons You Need. Guaranteed.
|
||||
v-list-item-subtitle All the Icons You Need. Guaranteed.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://icons8.com', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider
|
||||
v-list-item
|
||||
v-list-item-avatar(tile)
|
||||
img(src='https://static.requarks.io/logo/lokalise.png', alt='Lokalise')
|
||||
v-list-item-content
|
||||
v-list-item-title Lokalise
|
||||
v-list-item-sub-title Lokalise is a translation management system built for agile teams who want to automate their localization process.
|
||||
v-list-item-subtitle Lokalise is a translation management system built for agile teams who want to automate their localization process.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://lokalise.co', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
v-divider
|
||||
v-list-item
|
||||
v-list-item-avatar(tile)
|
||||
img(src='https://static.requarks.io/logo/netlify.svg', alt='Netlify')
|
||||
v-list-item-content
|
||||
v-list-item-title Netlify
|
||||
v-list-item-sub-title Deploy modern static websites with Netlify. Get CDN, Continuous deployment, 1-click HTTPS, and all the services you need.
|
||||
v-list-item-subtitle Deploy modern static websites with Netlify. Get CDN, Continuous deployment, 1-click HTTPS, and all the services you need.
|
||||
v-list-item-action
|
||||
v-btn(icon, href='https://wwwnetlify.com', target='_blank')
|
||||
v-icon(color='grey') public
|
||||
v-icon(color='grey') mdi-earth
|
||||
|
||||
</template>
|
||||
|
||||
@@ -208,12 +209,7 @@ import { get } from 'vuex-pathify'
|
||||
|
||||
import groupsQuery from 'gql/admin/contribute/contribute-query-contributors.gql'
|
||||
|
||||
import IconTwitter from 'mdi/Twitter'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
IconTwitter
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
contributors: []
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-browse-page.svg', alt='Dashboard', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:dashboard.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s {{ $t('admin:dashboard.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s {{ $t('admin:dashboard.subtitle') }}
|
||||
v-flex(xs12 md6 lg4 xl3 d-flex)
|
||||
v-card.primary.dashboard-card.animated.fadeInUp(dark)
|
||||
v-card-text
|
||||
@@ -49,7 +49,7 @@
|
||||
v-icon(:color='isLatestVersion ? `teal` : `red darken-4`', small) mdi-wrench
|
||||
v-card-text
|
||||
v-icon.dashboard-icon mdi-blur
|
||||
.subheading Wiki.js {{info.currentVersion}}
|
||||
.subtitle-1 Wiki.js {{info.currentVersion}}
|
||||
.body-2(v-if='isLatestVersion') {{$t('admin:dashboard.versionLatest')}}
|
||||
.body-2(v-else) {{$t('admin:dashboard.versionNew', { version: info.latestVersion })}}
|
||||
v-flex(xs12, xl6)
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
img(src='/svg/icon-console.svg', alt='Developer Tools', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text Developer Tools
|
||||
.subheading.grey--text Flags
|
||||
.subtitle-1.grey--text Flags
|
||||
v-spacer
|
||||
v-btn(color='success', depressed, @click='save', large)
|
||||
v-icon(left) check
|
||||
v-icon(left) mdi-check
|
||||
span {{$t('common:actions.apply')}}
|
||||
|
||||
v-card.mt-3.white.grey--text.text--darken-3
|
||||
v-alert(color='red', value='true', icon='warning')
|
||||
v-alert(color='red', value='true', icon='mdi-alert', dark, prominent)
|
||||
span Do NOT enable these flags unless you know what you're doing!
|
||||
.caption Doing so may result in data loss or broken installation!
|
||||
v-card-text
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img(src='/svg/icon-console.svg', alt='Developer Tools', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text Developer Tools
|
||||
.subheading.grey--text GraphiQL
|
||||
.subtitle-1.grey--text GraphiQL
|
||||
|
||||
v-card.mt-3.white.grey--text.text--darken-3
|
||||
#graphiql
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img(src='/svg/icon-console.svg', alt='Developer Tools', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text Developer Tools
|
||||
.subheading.grey--text Voyager
|
||||
.subtitle-1.grey--text Voyager
|
||||
|
||||
v-card.mt-3.white.grey--text.text--darken-3
|
||||
#voyager
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img(src='/svg/icon-web-design.svg', alt='Editor', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text Editor
|
||||
.subheading.grey--text Configure the content editors #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
.subtitle-1.grey--text Configure the content editors #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
v-spacer
|
||||
v-btn(outline, color='grey', @click='refresh', large)
|
||||
v-icon refresh
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-categorize.svg', alt='General', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:general.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft {{ $t('admin:general.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft {{ $t('admin:general.subtitle') }}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown(color='success', depressed, @click='save', large)
|
||||
v-icon(left) mdi-check
|
||||
@@ -18,7 +18,7 @@
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(color='primary', dark, dense, flat)
|
||||
v-toolbar-title.subtitle-1 {{ $t('admin:general.siteInfo') }}
|
||||
v-subheader {{$t('admin:general.general')}}
|
||||
.overline.grey--text.pa-4 {{$t('admin:general.general')}}
|
||||
.px-3.pb-3
|
||||
v-text-field(
|
||||
outlined
|
||||
@@ -41,7 +41,7 @@
|
||||
persistent-hint
|
||||
)
|
||||
v-divider
|
||||
v-subheader {{$t('admin:general.logo')}} #[v-chip.ml-2(label, color='grey', small, outlined) coming soon]
|
||||
.overline.grey--text.pa-4 {{$t('admin:general.logo')}} #[v-chip.ml-2(label, color='grey', small, outlined) coming soon]
|
||||
v-card-text.pb-4.pl-5
|
||||
v-layout.px-3(row, align-center)
|
||||
v-avatar(size='100', :color='$vuetify.dark ? `grey darken-2` : `grey lighten-3`', :tile='config.logoIsSquare')
|
||||
@@ -55,7 +55,7 @@
|
||||
.caption.mt-3.grey--text {{$t('admin:general.uploadSizeHint', { size: '120x120' })}}
|
||||
.caption.grey--text {{$t('admin:general.uploadTypesHint', { typeList: 'SVG, PNG', lastType: 'JPG' })}}.
|
||||
v-divider
|
||||
v-subheader {{$t('admin:general.footerCopyright')}}
|
||||
.overline.grey--text.pa-4 {{$t('admin:general.footerCopyright')}}
|
||||
.px-3.pb-3
|
||||
v-text-field(
|
||||
outlined
|
||||
@@ -67,7 +67,7 @@
|
||||
:hint='$t(`admin:general.companyNameHint`)'
|
||||
)
|
||||
v-divider
|
||||
v-subheader SEO
|
||||
.overline.grey--text.pa-4 SEO
|
||||
.px-3.pb-3
|
||||
v-text-field(
|
||||
outlined
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img(src='/svg/icon-social-group.svg', alt='Edit Group', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2 Edit Group
|
||||
.subheading.grey--text {{group.name}}
|
||||
.subtitle-1.grey--text {{group.name}}
|
||||
v-spacer
|
||||
.caption.grey--text ID #[strong {{group.id}}]
|
||||
v-divider.mx-3(vertical)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-people.svg', alt='Groups', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2.animated.fadeInLeft Groups
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s Manage groups and their permissions
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s Manage groups and their permissions
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s.mr-3(color='grey', outlined, @click='refresh', large)
|
||||
v-icon mdi-refresh
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-globe-earth.svg', alt='Locale', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:locale.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:locale.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:locale.subtitle') }}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown(color='success', depressed, @click='save', large, :loading='loading')
|
||||
v-icon(left) mdi-check
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
img(src='/svg/icon-registry-editor.svg', alt='Logging', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text Logging
|
||||
.subheading.grey--text Configure the system logger(s) #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
.subtitle-1.grey--text Configure the system logger(s) #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
v-spacer
|
||||
v-btn(outline, color='grey', @click='refresh', large)
|
||||
v-icon refresh
|
||||
v-btn(color='black', disabled, depressed, @click='toggleConsole', large)
|
||||
ConsoleLineIcon.mr-3
|
||||
v-icon check
|
||||
span Live Trail
|
||||
v-btn(color='success', @click='save', depressed, large)
|
||||
v-icon(left) check
|
||||
@@ -113,12 +113,9 @@ import LoggingConsole from './admin-logging-console.vue'
|
||||
import loggersQuery from 'gql/admin/logging/logging-query-loggers.gql'
|
||||
import loggersSaveMutation from 'gql/admin/logging/logging-mutation-save-loggers.gql'
|
||||
|
||||
import ConsoleLineIcon from 'mdi/ConsoleLine'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
LoggingConsole,
|
||||
ConsoleLineIcon
|
||||
LoggingConsole
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -6,28 +6,27 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-new-post.svg', alt='Mail', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:mail.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:mail.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:mail.subtitle') }}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown(color='success', depressed, @click='save', large)
|
||||
v-icon(left) check
|
||||
v-icon(left) mdi-check
|
||||
span {{$t('common:actions.apply')}}
|
||||
v-form.pt-3
|
||||
v-layout(row wrap)
|
||||
v-flex(lg6 xs12)
|
||||
v-form
|
||||
v-card.wiki-form.animated.fadeInUp
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(color='primary', dark, dense, flat)
|
||||
v-toolbar-title
|
||||
.subheading {{ $t('admin:mail.configuration') }}
|
||||
v-subheader {{ $t('admin:mail.sender') }}
|
||||
.px-3.pb-3
|
||||
v-toolbar-title.subtitle-1 {{ $t('admin:mail.configuration') }}
|
||||
.overline.pa-4.grey--text {{ $t('admin:mail.sender') }}
|
||||
.px-4
|
||||
v-text-field(
|
||||
outlined
|
||||
v-model='config.senderName'
|
||||
:label='$t(`admin:mail.senderName`)'
|
||||
required
|
||||
:counter='255'
|
||||
prepend-icon='person'
|
||||
prepend-icon='mdi-contact-mail'
|
||||
)
|
||||
v-text-field(
|
||||
outlined
|
||||
@@ -35,25 +34,25 @@
|
||||
:label='$t(`admin:mail.senderEmail`)'
|
||||
required
|
||||
:counter='255'
|
||||
prepend-icon='email'
|
||||
prepend-icon='mdi-at'
|
||||
)
|
||||
v-divider
|
||||
v-subheader {{ $t('admin:mail.smtp') }}
|
||||
.px-3.pb-3
|
||||
.overline.pa-4.grey--text {{ $t('admin:mail.smtp') }}
|
||||
.px-4
|
||||
v-text-field(
|
||||
outlined
|
||||
v-model='config.host'
|
||||
:label='$t(`admin:mail.smtpHost`)'
|
||||
required
|
||||
:counter='255'
|
||||
prepend-icon='memory'
|
||||
prepend-icon='mdi-memory'
|
||||
)
|
||||
v-text-field(
|
||||
outlined
|
||||
v-model='config.port'
|
||||
:label='$t(`admin:mail.smtpPort`)'
|
||||
required
|
||||
prepend-icon='router'
|
||||
prepend-icon='mdi-serial-port'
|
||||
persistent-hint
|
||||
:hint='$t(`admin:mail.smtpPortHint`)'
|
||||
style='max-width: 300px;'
|
||||
@@ -64,7 +63,7 @@
|
||||
color='primary'
|
||||
persistent-hint
|
||||
:hint='$t(`admin:mail.smtpTLSHint`)'
|
||||
prepend-icon='vpn_lock'
|
||||
prepend-icon='mdi-security-network'
|
||||
)
|
||||
v-text-field.mt-3(
|
||||
outlined
|
||||
@@ -72,37 +71,36 @@
|
||||
:label='$t(`admin:mail.smtpUser`)'
|
||||
required
|
||||
:counter='255'
|
||||
prepend-icon='lock_outline'
|
||||
prepend-icon='mdi-shield-account-outline'
|
||||
)
|
||||
v-text-field(
|
||||
outlined
|
||||
v-model='config.pass'
|
||||
:label='$t(`admin:mail.smtpPwd`)'
|
||||
required
|
||||
prepend-icon='lock'
|
||||
prepend-icon='mdi-textbox-password'
|
||||
type='password'
|
||||
)
|
||||
|
||||
v-flex(lg6 xs12)
|
||||
v-card.wiki-form.animated.fadeInUp.wait-p2s
|
||||
v-card.animated.fadeInUp.wait-p2s
|
||||
v-form
|
||||
v-toolbar(color='primary', dark, dense, flat)
|
||||
v-toolbar-title
|
||||
.subheading {{ $t('admin:mail.dkim') }}
|
||||
.pa-3
|
||||
v-toolbar-title.subtitle-1 {{ $t('admin:mail.dkim') }}
|
||||
.pa-4
|
||||
.body-2.grey--text.text--darken-2 {{ $t('admin:mail.dkimHint') }}
|
||||
v-switch(
|
||||
v-model='config.useDKIM'
|
||||
:label='$t(`admin:mail.dkimUse`)'
|
||||
color='primary'
|
||||
prepend-icon='vpn_key'
|
||||
prepend-icon='mdi-key'
|
||||
)
|
||||
v-text-field(
|
||||
outlined
|
||||
v-model='config.dkimDomainName'
|
||||
:label='$t(`admin:mail.dkimDomainName`)'
|
||||
:counter='255'
|
||||
prepend-icon='vpn_key'
|
||||
prepend-icon='mdi-key'
|
||||
:disabled='!config.useDKIM'
|
||||
)
|
||||
v-text-field(
|
||||
@@ -110,37 +108,38 @@
|
||||
v-model='config.dkimKeySelector'
|
||||
:label='$t(`admin:mail.dkimKeySelector`)'
|
||||
:counter='255'
|
||||
prepend-icon='vpn_key'
|
||||
prepend-icon='mdi-key'
|
||||
:disabled='!config.useDKIM'
|
||||
)
|
||||
v-text-field(
|
||||
v-textarea(
|
||||
outlined
|
||||
v-model='config.dkimPrivateKey'
|
||||
:label='$t(`admin:mail.dkimPrivateKey`)'
|
||||
prepend-icon='vpn_key'
|
||||
prepend-icon='mdi-key'
|
||||
persistent-hint
|
||||
:hint='$t(`admin:mail.dkimPrivateKeyHint`)'
|
||||
:disabled='!config.useDKIM'
|
||||
)
|
||||
|
||||
v-card.mt-3.wiki-form.animated.fadeInUp.wait-p3s
|
||||
v-card.mt-3.animated.fadeInUp.wait-p3s
|
||||
v-form
|
||||
v-toolbar(color='teal', dark, dense, flat)
|
||||
v-toolbar-title
|
||||
.subheading {{ $t('admin:mail.test') }}
|
||||
.pa-3
|
||||
v-toolbar-title.subtitle-1 {{ $t('admin:mail.test') }}
|
||||
.pa-4
|
||||
.body-2.grey--text.text--darken-2 {{ $t('admin:mail.testHint') }}
|
||||
v-text-field.mt-3(
|
||||
outlined
|
||||
v-model='testEmail'
|
||||
:label='$t(`admin:mail.testRecipient`)'
|
||||
:counter='255'
|
||||
prepend-icon='mail'
|
||||
prepend-icon='mdi-email-outline'
|
||||
:disabled='testLoading'
|
||||
)
|
||||
v-card-chin
|
||||
v-spacer
|
||||
v-btn(color='teal', dark, @click='sendTest', :loading='testLoading') {{ $t('admin:mail.testSend') }}
|
||||
v-btn.px-4(color='teal', dark, @click='sendTest', :loading='testLoading')
|
||||
v-icon(left) mdi-send
|
||||
span {{ $t('admin:mail.testSend') }}
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-triangle-arrow.svg', alt='Navigation', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{$t('navigation.title')}}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{$t('navigation.subtitle')}}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{$t('navigation.subtitle')}}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s.mr-3(outlined, color='grey', @click='refresh', large)
|
||||
v-icon mdi-refresh
|
||||
@@ -123,7 +123,7 @@
|
||||
span {{$t('navigation.delete', { kind: $t('navigation.link') })}}
|
||||
v-card(v-else-if='current.kind === "header"')
|
||||
v-toolbar(dense, color='blue', flat, dark)
|
||||
.subheading {{$t('navigation.edit', { kind: $t('navigation.header') })}}
|
||||
.subtitle-1 {{$t('navigation.edit', { kind: $t('navigation.header') })}}
|
||||
v-card-text
|
||||
v-text-field(
|
||||
outlined
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-view-details.svg', alt='Edit Page', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2.animated.fadeInLeft Page Details
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s
|
||||
v-chip.ml-0.mr-2(label, small).caption ID {{page.id}}
|
||||
span /{{page.locale}}/{{page.path}}
|
||||
v-spacer
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-file.svg', alt='Page', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2.animated.fadeInLeft Pages
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s Manage pages
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s Manage pages
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p1s(color='grey', outlined, @click='refresh', large)
|
||||
v-icon.grey--text mdi-refresh
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-process.svg', alt='Rendering', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft Rendering
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s Configure how content is rendered #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s Configure how content is rendered #[v-chip(label, color='primary', small).white--text coming soon]
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s(outline, color='grey', @click='refresh', large)
|
||||
v-icon refresh
|
||||
@@ -22,7 +22,7 @@
|
||||
dark
|
||||
)
|
||||
v-icon.mr-2 line_weight
|
||||
.subheading Pipeline
|
||||
.subtitle-1 Pipeline
|
||||
v-expansion-panel.adm-rendering-pipeline(v-model='selectedCore')
|
||||
v-expansion-panel-content(
|
||||
hide-actions
|
||||
@@ -68,7 +68,7 @@
|
||||
dense
|
||||
)
|
||||
v-icon.mr-2 {{currentRenderer.icon}}
|
||||
.subheading {{currentRenderer.title}}
|
||||
.subtitle-1 {{currentRenderer.title}}
|
||||
v-spacer
|
||||
.pt-3.mt-1
|
||||
v-switch(
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-search.svg', alt='Search Engine', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{$t('admin:search.title')}}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s {{$t('admin:search.subtitle')}}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s {{$t('admin:search.subtitle')}}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s(outline, color='grey', @click='refresh', large)
|
||||
v-icon refresh
|
||||
@@ -20,7 +20,7 @@
|
||||
v-flex(lg3, xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{$t('admin:search.searchEngine')}}
|
||||
.subtitle-1 {{$t('admin:search.searchEngine')}}
|
||||
v-list.py-0(two-line, dense)
|
||||
template(v-for='(eng, idx) in engines')
|
||||
v-list-item(:key='eng.key', @click='selectedEngine = eng.key', :disabled='!eng.isAvailable')
|
||||
@@ -38,7 +38,7 @@
|
||||
v-flex(lg9, xs12)
|
||||
v-card.wiki-form.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(color='primary', dense, flat, dark)
|
||||
.subheading {{engine.title}}
|
||||
.subtitle-1 {{engine.title}}
|
||||
v-card-text
|
||||
.enginelogo
|
||||
img(:src='engine.logo', :alt='engine.title')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
v-flex(xs12)
|
||||
.admin-header-icon: v-icon(size='80', color='grey lighten-2') show_chart
|
||||
.headline.primary--text Statistics
|
||||
.subheading.grey--text Useful information about your wiki
|
||||
.subtitle-1.grey--text Useful information about your wiki
|
||||
.pa-3
|
||||
fingerprint-spinner(
|
||||
:animation-duration='1500'
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-cloud-storage.svg', alt='Storage', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{$t('admin:storage.title')}}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{$t('admin:storage.subtitle')}}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{$t('admin:storage.subtitle')}}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s(outline, color='grey', @click='refresh', large)
|
||||
v-icon refresh
|
||||
@@ -17,7 +17,7 @@
|
||||
v-flex(lg3, xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{$t('admin:storage.targets')}}
|
||||
.subtitle-1 {{$t('admin:storage.targets')}}
|
||||
v-list(two-line, dense).py-0
|
||||
template(v-for='(tgt, idx) in targets')
|
||||
v-list-item(:key='tgt.key', @click='selectedTarget = tgt.key', :disabled='!tgt.isAvailable')
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
v-card.mt-3.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(flat, :color='$vuetify.dark ? `grey darken-3-l5` : `grey darken-3`', dark, dense)
|
||||
.subheading {{$t('admin:storage.status')}}
|
||||
.subtitle-1 {{$t('admin:storage.status')}}
|
||||
v-spacer
|
||||
looping-rhombuses-spinner(
|
||||
:animation-duration='5000'
|
||||
@@ -79,7 +79,7 @@
|
||||
v-flex(xs12, lg9)
|
||||
v-card.wiki-form.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(color='primary', dense, flat, dark)
|
||||
.subheading {{target.title}}
|
||||
.subtitle-1 {{target.title}}
|
||||
v-card-text
|
||||
v-form
|
||||
.targetlogo
|
||||
@@ -188,7 +188,7 @@
|
||||
v-flex(xs12, lg6, xl4, v-for='act of target.actions', :key='act.handler')
|
||||
v-card.radius-7.grey(flat, :class='$vuetify.dark ? `darken-3-d5` : `lighten-3`', height='100%')
|
||||
v-card-text
|
||||
.subheading(v-html='act.label')
|
||||
.subtitle-1(v-html='act.label')
|
||||
.body-1.mt-2(v-html='act.hint')
|
||||
v-btn.mx-0.mt-3(
|
||||
@click='executeAction(target.key, act.handler)'
|
||||
|
||||
@@ -6,107 +6,100 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-tune.svg', alt='System Info', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:system.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s {{ $t('admin:system.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s {{ $t('admin:system.subtitle') }}
|
||||
v-layout.mt-3(row wrap)
|
||||
v-flex(lg6 xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-btn.animated.fadeInLeft.wait-p2s.btn-animate-rotate(fab, absolute, right, top, small, light, @click='refresh'): v-icon refresh
|
||||
v-btn.animated.fadeInLeft.wait-p2s.btn-animate-rotate(fab, absolute, right, top, small, light, @click='refresh'): v-icon(color='grey') mdi-refresh
|
||||
v-subheader Wiki.js
|
||||
v-list(two-line, dense)
|
||||
v-subheader Wiki.js
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue.white--text system_update_alt
|
||||
v-icon.blue.white--text mdi-application-export
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.currentVersion') }}
|
||||
v-list-item-sub-title {{ info.currentVersion }}
|
||||
v-list-item-subtitle {{ info.currentVersion }}
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue.white--text open_in_browser
|
||||
v-icon.blue.white--text mdi-inbox-arrow-up
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.latestVersion') }}
|
||||
v-list-item-sub-title {{ info.latestVersion }}
|
||||
v-list-item-subtitle {{ info.latestVersion }}
|
||||
v-list-item-action
|
||||
v-list-item-action-text {{ $t('admin:system.published') }} {{ info.latestVersionReleaseDate | moment('from') }}
|
||||
|
||||
v-divider.mt-3
|
||||
|
||||
v-subheader {{ $t('admin:system.hostInfo') }}
|
||||
v-divider.mt-3
|
||||
v-subheader {{ $t('admin:system.hostInfo') }}
|
||||
v-list(two-line, dense)
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-avatar.blue-grey(size='40')
|
||||
img(:src='`/svg/icon-` + platformLogo + `-logo.svg`', alt='Platform', style='width: 24px;')
|
||||
v-icon(color='white') {{platformLogo}}
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.os') }}
|
||||
v-list-item-sub-title {{ (info.platform === 'docker') ? 'Docker Container (Linux)' : info.operatingSystem }}
|
||||
v-list-item-subtitle {{ (info.platform === 'docker') ? 'Docker Container (Linux)' : info.operatingSystem }}
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue-grey.white--text computer
|
||||
v-icon.blue-grey.white--text mdi-desktop-classic
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.hostname') }}
|
||||
v-list-item-sub-title {{ info.hostname }}
|
||||
v-list-item-subtitle {{ info.hostname }}
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue-grey.white--text nfc
|
||||
v-icon.blue-grey.white--text mdi-cpu-64-bit
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.cpuCores') }}
|
||||
v-list-item-sub-title {{ info.cpuCores }}
|
||||
v-list-item-subtitle {{ info.cpuCores }}
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue-grey.white--text memory
|
||||
v-icon.blue-grey.white--text mdi-memory
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.totalRAM') }}
|
||||
v-list-item-sub-title {{ info.ramTotal }}
|
||||
v-list-item-subtitle {{ info.ramTotal }}
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue-grey.white--text last_page
|
||||
v-icon.blue-grey.white--text mdi-iframe-outline
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.workingDirectory') }}
|
||||
v-list-item-sub-title {{ info.workingDirectory }}
|
||||
v-list-item-subtitle {{ info.workingDirectory }}
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-icon.blue-grey.white--text settings
|
||||
v-icon.blue-grey.white--text mdi-card-bulleted-settings-outline
|
||||
v-list-item-content
|
||||
v-list-item-title {{ $t('admin:system.configFile') }}
|
||||
v-list-item-sub-title {{ info.configFile }}
|
||||
v-list-item-subtitle {{ info.configFile }}
|
||||
|
||||
v-flex(lg6 xs12)
|
||||
v-card.pb-3.animated.fadeInUp.wait-p4s
|
||||
v-subheader Node.js
|
||||
v-list(dense)
|
||||
v-subheader Node.js
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-avatar.light-green(size='40')
|
||||
icon-node-js(fillColor='#FFFFFF')
|
||||
v-icon(color='white') mdi-nodejs
|
||||
v-list-item-content
|
||||
v-list-item-title {{ info.nodeVersion }}
|
||||
|
||||
v-divider.mt-3
|
||||
|
||||
v-subheader {{ info.dbType }}
|
||||
v-divider.mt-3
|
||||
v-subheader {{ info.dbType }}
|
||||
v-list(dense)
|
||||
v-list-item(avatar)
|
||||
v-list-item-avatar
|
||||
v-avatar.indigo.darken-1(size='40')
|
||||
icon-database(fillColor='#FFFFFF')
|
||||
v-icon(color='white') mdi-database
|
||||
v-list-item-content
|
||||
v-list-item-title(v-html='dbVersion')
|
||||
v-list-item-sub-title {{ info.dbHost }}
|
||||
v-list-item-subtitle {{ info.dbHost }}
|
||||
|
||||
v-alert.mt-3(:value='isDbLimited', color='deep-orange', icon='warning') {{ $t('admin:system.dbPartialSupport') }}
|
||||
v-alert.mt-3.mx-4(:value='isDbLimited', color='deep-orange darken-2', icon='mdi-alert', dark) {{ $t('admin:system.dbPartialSupport') }}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import _ from 'lodash'
|
||||
|
||||
import IconDatabase from 'mdi/Database'
|
||||
import IconNodeJs from 'mdi/Nodejs'
|
||||
|
||||
import systemInfoQuery from 'gql/admin/system/system-query-info.gql'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
IconDatabase,
|
||||
IconNodeJs
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
info: {}
|
||||
@@ -119,13 +112,17 @@ export default {
|
||||
platformLogo() {
|
||||
switch (this.info.platform) {
|
||||
case 'docker':
|
||||
return 'docker'
|
||||
return 'mdi-docker'
|
||||
case 'darwin':
|
||||
return 'apple'
|
||||
return 'mdi-apple'
|
||||
case 'linux':
|
||||
return 'linux'
|
||||
if (this.info.operatingSystem.indexOf('Ubuntu')) {
|
||||
return 'mdi-ubuntu'
|
||||
} else {
|
||||
return 'mdi-linux'
|
||||
}
|
||||
case 'win32':
|
||||
return 'windows'
|
||||
return 'mdi-windows'
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-paint-palette.svg', alt='Theme', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{$t('admin:theme.title')}}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s {{$t('admin:theme.subtitle')}}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s {{$t('admin:theme.subtitle')}}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInRight(color='success', depressed, @click='save', large, :loading='loading')
|
||||
v-icon(left) mdi-check
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-male-user.svg', alt='Edit User', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2.animated.fadeInLeft Edit User
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s {{user.name}}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s {{user.name}}
|
||||
v-spacer
|
||||
.caption.grey--text.animated.fadeInRight.wait-p5s ID #[strong {{user.id}}]
|
||||
v-divider.animated.fadeInRight.wait-p3s.mx-3(vertical)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-customer.svg', alt='Users', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.blue--text.text--darken-2.animated.fadeInLeft Users
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p2s Manage users
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p2s Manage users
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown.wait-p2s.mr-3(outlined, color='grey', large, @click='refresh')
|
||||
v-icon mdi-refresh
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template lang='pug'>
|
||||
v-card
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{ $t('admin:utilities.authTitle') }}
|
||||
.subtitle-1 {{ $t('admin:utilities.authTitle') }}
|
||||
v-card-text
|
||||
v-subheader.pl-0.primary--text Generate New Authentication Public / Private Key Certificates
|
||||
.body-1 This will invalidate all current session tokens and cause all users to be logged out.
|
||||
.body-1.red--text You will need to log back in after the operation.
|
||||
v-btn(outline, color='primary', @click='regenCerts', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) build
|
||||
.subtitle-1.pb-3.primary--text Generate New Authentication Public / Private Key Certificates
|
||||
.body-2 This will invalidate all current session tokens and cause all users to be logged out.
|
||||
.body-2.red--text You will need to log back in after the operation.
|
||||
v-btn(outlined, color='primary', @click='regenCerts', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) mdi-gesture-double-tap
|
||||
span Proceed
|
||||
v-divider.my-3
|
||||
v-subheader.pl-0.primary--text Reset Guest User
|
||||
.body-1 This will reset the guest user to its default parameters and permissions.
|
||||
v-btn(outline, color='primary', @click='resetGuest', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) build
|
||||
v-divider.my-5
|
||||
.subtitle-1.pb-3.primary--text Reset Guest User
|
||||
.body-2 This will reset the guest user to its default parameters and permissions.
|
||||
v-btn(outlined, color='primary', @click='resetGuest', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) mdi-gesture-double-tap
|
||||
span Proceed
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<template lang='pug'>
|
||||
v-card
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{ $t('admin:utilities.cacheTitle') }}
|
||||
.subtitle-1 {{ $t('admin:utilities.cacheTitle') }}
|
||||
v-card-text
|
||||
v-subheader.pl-0.primary--text Flush Pages and Assets Cache
|
||||
.body-1 Pages and Assets are cached to disk for better performance. You can flush the cache to force all content to be fetched from the DB again.
|
||||
v-btn(outline, color='primary', @click='flushCache', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) build
|
||||
.subtitle-1.pb-3.primary--text Flush Pages and Assets Cache
|
||||
.body-2 Pages and Assets are cached to disk for better performance. You can flush the cache to force all content to be fetched from the DB again.
|
||||
v-btn(outlined, color='primary', @click='flushCache', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) mdi-gesture-double-tap
|
||||
span Proceed
|
||||
v-divider.my-3
|
||||
v-subheader.pl-0.primary--text Flush Temporary Uploads
|
||||
.body-1 New uploads are temporarily saved to disk while they are being processed. They are automatically deleted after processing, but you can force an immediate cleanup using this tool.
|
||||
.body-1.red--text Note that performing this action while an upload is in progress can result in a failed upload.
|
||||
v-btn(outline, color='primary', @click='flushUploads', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) build
|
||||
v-divider.my-5
|
||||
.subtitle-1.pb-3.primary--text Flush Temporary Uploads
|
||||
.body-2 New uploads are temporarily saved to disk while they are being processed. They are automatically deleted after processing, but you can force an immediate cleanup using this tool.
|
||||
.body-2.red--text Note that performing this action while an upload is in progress can result in a failed upload.
|
||||
v-btn(outlined, color='primary', @click='flushUploads', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) mdi-gesture-double-tap
|
||||
span Proceed
|
||||
v-divider.my-3
|
||||
v-subheader.pl-0.primary--text Flush Client-Side Locale Cache
|
||||
.body-1 Locale strings are cached in the browser local storage for 24h. You can delete your current cache in order to fetch the latest data during the next page load.
|
||||
.body-1 Note that this affects only #[strong your own browser] and not everyone.
|
||||
v-btn(outline, color='primary', @click='flushClientLocaleCache', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) build
|
||||
v-divider.my-5
|
||||
.subtitle-1.pb-3.primary--text Flush Client-Side Locale Cache
|
||||
.body-2 Locale strings are cached in the browser local storage for 24h. You can delete your current cache in order to fetch the latest data during the next page load.
|
||||
.body-2 Note that this affects only #[strong your own browser] and not everyone.
|
||||
v-btn(outlined, color='primary', @click='flushClientLocaleCache', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) mdi-gesture-double-tap
|
||||
span Proceed
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<template lang='pug'>
|
||||
v-card
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{ $t('admin:utilities.contentTitle') }}
|
||||
.subtitle-1 {{ $t('admin:utilities.contentTitle') }}
|
||||
v-card-text
|
||||
v-subheader.pl-0.primary--text Migrate all pages to target locale
|
||||
.body-1 If you created content before selecting a different locale and activating the namespacing capabilities, you may want to transfer all content to the base locale.
|
||||
.body-1.red--text: strong This operation is destructive and cannot be reversed! Make sure you have proper backups!
|
||||
v-toolbar.radius-7.mt-3.wiki-form(flat, color='grey lighten-4', height='80')
|
||||
.subtitle-1.pb-3.pl-0.primary--text Migrate all pages to target locale
|
||||
.body-2 If you created content before selecting a different locale and activating the namespacing capabilities, you may want to transfer all content to the base locale.
|
||||
.body-2.red--text: strong This operation is destructive and cannot be reversed! Make sure you have proper backups!
|
||||
v-toolbar.mt-5(flat, color='grey lighten-4', height='80')
|
||||
v-select(
|
||||
label='Source Locale'
|
||||
outlined
|
||||
@@ -16,7 +16,7 @@
|
||||
item-value='code'
|
||||
v-model='sourceLocale'
|
||||
)
|
||||
v-icon.mx-3(large) arrow_forward
|
||||
v-icon.mx-3(large) mdi-chevron-right-box-outline
|
||||
v-select(
|
||||
label='Target Locale'
|
||||
outlined
|
||||
@@ -26,9 +26,9 @@
|
||||
item-value='code'
|
||||
v-model='targetLocale'
|
||||
)
|
||||
.body-1.mt-3 Pages that are already in the target locale will not be touched. If a page already exists at the target, the source page will not be modified as it would create a conflict. If you want to overwrite the target page, you must first delete it.
|
||||
v-btn(outline, color='primary', @click='migrateToLocale', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) build
|
||||
.body-2.mt-5 Pages that are already in the target locale will not be touched. If a page already exists at the target, the source page will not be modified as it would create a conflict. If you want to overwrite the target page, you must first delete it.
|
||||
v-btn(outlined, color='primary', @click='migrateToLocale', :disabled='loading').ml-0.mt-3
|
||||
v-icon(left) mdi-gesture-double-tap
|
||||
span Proceed
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template lang='pug'>
|
||||
v-card.wiki-form
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{ $t('admin:utilities.importv1Title') }}
|
||||
.subtitle-1 {{ $t('admin:utilities.importv1Title') }}
|
||||
v-card-text
|
||||
.text-xs-center
|
||||
img.animated.fadeInUp.wait-p1s(src='/svg/icon-software.svg')
|
||||
|
||||
@@ -1,54 +1,54 @@
|
||||
<template lang='pug'>
|
||||
v-card
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{ $t('admin:utilities.telemetryTitle') }}
|
||||
.subtitle-1 {{ $t('admin:utilities.telemetryTitle') }}
|
||||
v-form
|
||||
v-card-text
|
||||
v-subheader What is telemetry?
|
||||
.body-1.pl-3 Telemetry allows the developers of Wiki.js to improve the software by collecting basic anonymized data about its usage and the host info. #[br] This is entirely optional and #[strong absolutely no] private data (such as content or personal data) is collected.
|
||||
.body-1.pt-3.pl-3 For maximum privacy, a random client ID is generated during setup. This ID is used to group requests together while keeping complete anonymity. You can reset and generate a new one below at any time.
|
||||
v-divider.my-3
|
||||
v-subheader What is collected?
|
||||
.body-1.pl-3 When telemetry is enabled, only the following data is transmitted:
|
||||
.subtitle-2 What is telemetry?
|
||||
.body-2.mt-3 Telemetry allows the developers of Wiki.js to improve the software by collecting basic anonymized data about its usage and the host info. #[br] This is entirely optional and #[strong absolutely no] private data (such as content or personal data) is collected.
|
||||
.body-2.mt-3 For maximum privacy, a random client ID is generated during setup. This ID is used to group requests together while keeping complete anonymity. You can reset and generate a new one below at any time.
|
||||
v-divider.my-4
|
||||
.subtitle-2 What is collected?
|
||||
.body-2.mt-3 When telemetry is enabled, only the following data is transmitted:
|
||||
v-list
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon info_outline
|
||||
v-list-item-avatar: v-icon mdi-information-outline
|
||||
v-list-item-content
|
||||
v-list-item-title.body-1 Version of Wiki.js installed
|
||||
v-list-item-sub-title.caption: em e.g. v2.0.123
|
||||
v-list-item-title.body-2 Version of Wiki.js installed
|
||||
v-list-item-subtitle.caption: em e.g. v2.0.123
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon info_outline
|
||||
v-list-item-avatar: v-icon mdi-information-outline
|
||||
v-list-item-content
|
||||
v-list-item-title.body-1 Basic OS information
|
||||
v-list-item-sub-title.caption: em Platform (Linux, macOS or Windows), Total CPU cores and DB type (PostgreSQL, MySQL, MariaDB, SQLite or SQL Server)
|
||||
v-list-item-title.body-2 Basic OS information
|
||||
v-list-item-subtitle.caption: em Platform (Linux, macOS or Windows), Total CPU cores and DB type (PostgreSQL, MySQL, MariaDB, SQLite or SQL Server)
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon info_outline
|
||||
v-list-item-avatar: v-icon mdi-information-outline
|
||||
v-list-item-content
|
||||
v-list-item-title.body-1 Crash debug data
|
||||
v-list-item-sub-title.caption: em Stack trace of the error
|
||||
v-list-item-title.body-2 Crash debug data
|
||||
v-list-item-subtitle.caption: em Stack trace of the error
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon info_outline
|
||||
v-list-item-avatar: v-icon mdi-information-outline
|
||||
v-list-item-content
|
||||
v-list-item-title.body-1 Setup analytics
|
||||
v-list-item-sub-title.caption: em Installation checkpoint reached
|
||||
.body-1.pl-3 Note that crash debug data is stored for a maximum of 30 days while analytics are stored for a maximum of 16 months, after which it is permanently deleted.
|
||||
v-divider.my-3
|
||||
v-subheader What is it used for?
|
||||
.body-1.pl-3 Telemetry is used by developers to improve Wiki.js, mostly for the following reasons:
|
||||
v-list-item-title.body-2 Setup analytics
|
||||
v-list-item-subtitle.caption: em Installation checkpoint reached
|
||||
.body-2 Note that crash debug data is stored for a maximum of 30 days while analytics are stored for a maximum of 16 months, after which it is permanently deleted.
|
||||
v-divider.my-4
|
||||
.subtitle-2 What is it used for?
|
||||
.body-2.mt-3 Telemetry is used by developers to improve Wiki.js, mostly for the following reasons:
|
||||
v-list(dense)
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon chevron_right
|
||||
v-list-item-content: v-list-item-title.body-1 Identify critical bugs more easily and fix them in a timely manner.
|
||||
v-list-item-avatar: v-icon mdi-chevron-right
|
||||
v-list-item-content: v-list-item-title: .body-2 Identify critical bugs more easily and fix them in a timely manner.
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon chevron_right
|
||||
v-list-item-content: v-list-item-title.body-1 Understand the upgrade rate of current installations.
|
||||
v-list-item-avatar: v-icon mdi-chevron-right
|
||||
v-list-item-content: v-list-item-title: .body-2 Understand the upgrade rate of current installations.
|
||||
v-list-item
|
||||
v-list-item-avatar: v-icon chevron_right
|
||||
v-list-item-content: v-list-item-title.body-1 Optimize performance and testing scenarios based on most popular environments.
|
||||
.body-1.pl-3 Only authorized developers have access to the data. It is not shared to any 3rd party nor is it used for any other application than improving Wiki.js.
|
||||
v-divider.my-3
|
||||
v-subheader Settings
|
||||
.pl-3
|
||||
v-list-item-avatar: v-icon mdi-chevron-right
|
||||
v-list-item-content: v-list-item-title: .body-2 Optimize performance and testing scenarios based on most popular environments.
|
||||
.body-2 Only authorized developers have access to the data. It is not shared to any 3rd party nor is it used for any other application than improving Wiki.js.
|
||||
v-divider.my-4
|
||||
.subtitle-2 Settings
|
||||
.mt-3
|
||||
v-switch.mt-0(
|
||||
v-model='telemetry',
|
||||
label='Enable Telemetry',
|
||||
@@ -56,15 +56,16 @@
|
||||
hint='Allow Wiki.js to transmit telemetry data.',
|
||||
persistent-hint
|
||||
)
|
||||
.subheading.mt-3.grey--text.text--darken-1 Client ID
|
||||
.body-1 {{clientId}}
|
||||
v-divider.my-4
|
||||
.subtitle-2.mt-3.grey--text.text--darken-1 Client ID
|
||||
.body-2.mt-2 {{clientId}}
|
||||
v-card-chin
|
||||
v-btn(depressed, color='success', @click='updateTelemetry')
|
||||
v-icon(left) chevron_right
|
||||
v-btn.px-3(depressed, color='success', @click='updateTelemetry')
|
||||
v-icon(left) mdi-chevron-right
|
||||
| Save Changes
|
||||
v-spacer
|
||||
v-btn(outline, color='grey', @click='resetClientId')
|
||||
v-icon(left) autorenew
|
||||
v-btn.px-3(outlined, color='grey', @click='resetClientId')
|
||||
v-icon(left) mdi-autorenew
|
||||
span Reset Client ID
|
||||
|
||||
</template>
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
img(src='/svg/icon-maintenance.svg', alt='Utilities', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text {{$t('admin:utilities.title')}}
|
||||
.subheading.grey--text {{$t('admin:utilities.subtitle')}}
|
||||
.subtitle-1.grey--text {{$t('admin:utilities.subtitle')}}
|
||||
|
||||
v-flex(lg3, xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading {{$t('admin:utilities.tools')}}
|
||||
.subtitle-1 {{$t('admin:utilities.tools')}}
|
||||
v-list(two-line, dense).py-0
|
||||
template(v-for='(tool, idx) in tools')
|
||||
v-list-item(:key='tool.key', @click='selectedTool = tool.key', :disabled='!tool.isAvailable')
|
||||
@@ -19,9 +19,9 @@
|
||||
v-icon(:color='!tool.isAvailable ? `grey lighten-1` : (selectedTool === tool.key ? `blue ` : `grey darken-1`)') {{ tool.icon }}
|
||||
v-list-item-content
|
||||
v-list-item-title.body-2(:class='!tool.isAvailable ? `grey--text` : (selectedTool === tool.key ? `primary--text` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Title') }}
|
||||
v-list-item-sub-title.caption(:class='!tool.isAvailable ? `grey--text text--lighten-1` : (selectedTool === tool.key ? `blue--text ` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Subtitle') }}
|
||||
v-list-item-subtitle: .caption(:class='!tool.isAvailable ? `grey--text text--lighten-1` : (selectedTool === tool.key ? `blue--text ` : ``)') {{ $t('admin:utilities.' + tool.i18nKey + 'Subtitle') }}
|
||||
v-list-item-avatar(v-if='selectedTool === tool.key')
|
||||
v-icon.animated.fadeInLeft(color='primary') arrow_forward_ios
|
||||
v-icon.animated.fadeInLeft(color='primary', large) mdi-chevron-right
|
||||
v-divider(v-if='idx < tools.length - 1')
|
||||
|
||||
v-flex.animated.fadeInUp.wait-p2s(xs12, lg9)
|
||||
@@ -46,37 +46,37 @@ export default {
|
||||
tools: [
|
||||
{
|
||||
key: 'UtilityAuth',
|
||||
icon: 'lock_outline',
|
||||
icon: 'mdi-lock-open-outline',
|
||||
i18nKey: 'auth',
|
||||
isAvailable: true
|
||||
},
|
||||
{
|
||||
key: 'UtilityContent',
|
||||
icon: 'insert_drive_file',
|
||||
icon: 'mdi-content-duplicate',
|
||||
i18nKey: 'content',
|
||||
isAvailable: true
|
||||
},
|
||||
{
|
||||
key: 'UtilityCache',
|
||||
icon: 'invert_colors',
|
||||
icon: 'mdi-database-refresh',
|
||||
i18nKey: 'cache',
|
||||
isAvailable: true
|
||||
},
|
||||
{
|
||||
key: 'UtilityGraphEndpoint',
|
||||
icon: 'settings_ethernet',
|
||||
icon: 'mdi-graphql',
|
||||
i18nKey: 'graphEndpoint',
|
||||
isAvailable: false
|
||||
},
|
||||
{
|
||||
key: 'UtilityImportv1',
|
||||
icon: 'present_to_all',
|
||||
icon: 'mdi-database-import',
|
||||
i18nKey: 'importv1',
|
||||
isAvailable: false
|
||||
},
|
||||
{
|
||||
key: 'UtilityTelemetry',
|
||||
icon: 'wifi_tethering',
|
||||
icon: 'mdi-math-compass',
|
||||
i18nKey: 'telemetry',
|
||||
isAvailable: true
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
img.animated.fadeInUp(src='/svg/icon-winter.svg', alt='Mail', style='width: 80px;')
|
||||
.admin-header-title
|
||||
.headline.primary--text.animated.fadeInLeft {{ $t('admin:webhooks.title') }}
|
||||
.subheading.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:webhooks.subtitle') }}
|
||||
.subtitle-1.grey--text.animated.fadeInLeft.wait-p4s {{ $t('admin:webhooks.subtitle') }}
|
||||
v-spacer
|
||||
v-btn.animated.fadeInDown(color='success', depressed, @click='save', large, disabled)
|
||||
v-icon(left) check
|
||||
@@ -15,7 +15,7 @@
|
||||
v-flex(lg3, xs12)
|
||||
v-card.animated.fadeInUp
|
||||
v-toolbar(flat, color='primary', dark, dense)
|
||||
.subheading Webhooks
|
||||
.subtitle-1 Webhooks
|
||||
v-spacer
|
||||
v-btn(outline, small)
|
||||
v-icon.mr-2 add
|
||||
@@ -36,7 +36,7 @@
|
||||
v-flex(xs12, lg9)
|
||||
v-card.wiki-form.animated.fadeInUp.wait-p2s
|
||||
v-toolbar(color='primary', dense, flat, dark)
|
||||
.subheading {{hook.title}}
|
||||
.subtitle-1 {{hook.title}}
|
||||
v-card-text
|
||||
v-form
|
||||
.authlogo
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
<script>
|
||||
import _ from 'lodash'
|
||||
import { get } from 'vuex-pathify'
|
||||
// import { get } from 'vuex-pathify'
|
||||
import mailConfigQuery from 'gql/admin/mail/mail-query-config.gql'
|
||||
import mailUpdateConfigMutation from 'gql/admin/mail/mail-mutation-save-config.gql'
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
v-list-item-title.body-2 {{$t('common:header.newPage')}}
|
||||
template(v-if='path && path.length')
|
||||
v-divider.my-0
|
||||
v-subheader {{$t('common:header.currentPage')}}
|
||||
.overline.pa-4.grey--text {{$t('common:header.currentPage')}}
|
||||
v-list-item.pl-4(@click='pageView', v-if='mode !== `view`')
|
||||
v-list-item-avatar(size='24'): v-icon(color='indigo') subject
|
||||
v-list-item-title.body-2 {{$t('common:header.view')}}
|
||||
@@ -52,7 +52,7 @@
|
||||
v-list-item-avatar(size='24'): v-icon(color='red darken-2') mdi-trash-can-outline
|
||||
v-list-item-title.body-2 {{$t('common:header.delete')}}
|
||||
v-divider.my-0
|
||||
v-subheader {{$t('common:header.assets')}}
|
||||
.overline.pa-4.grey--text {{$t('common:header.assets')}}
|
||||
v-list-item.pl-4(@click='assets')
|
||||
v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-folder-multiple-image
|
||||
v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.imagesFiles')}}
|
||||
@@ -318,7 +318,7 @@ export default {
|
||||
this.$store.commit('showNotification', {
|
||||
style: 'indigo',
|
||||
message: `Coming soon...`,
|
||||
icon: 'directions_boat'
|
||||
icon: 'ferry'
|
||||
})
|
||||
},
|
||||
pageDelete () {
|
||||
@@ -329,7 +329,7 @@ export default {
|
||||
this.$store.commit('showNotification', {
|
||||
style: 'indigo',
|
||||
message: `Coming soon...`,
|
||||
icon: 'directions_boat'
|
||||
icon: 'ferry'
|
||||
})
|
||||
},
|
||||
async changeLocale(locale) {
|
||||
|
||||
@@ -2,20 +2,20 @@
|
||||
v-dialog(v-model='isShown', max-width='550', persistent)
|
||||
v-card.wiki-form
|
||||
.dialog-header.is-short.is-red
|
||||
v-icon.mr-2(color='white') highlight_off
|
||||
v-icon.mr-2(color='white') mdi-file-document-box-remove-outline
|
||||
span {{$t('common:page.delete')}}
|
||||
v-card-text
|
||||
i18next.body-2(path='common:page.deleteTitle', tag='div')
|
||||
i18next.body-1(path='common:page.deleteTitle', tag='div')
|
||||
span.red--text.text--darken-2(place='title') {{pageTitle}}
|
||||
.caption {{$t('common:page.deleteSubtitle')}}
|
||||
v-chip.mt-3.ml-0.mr-1(label, color='red lighten-4', disabled, small)
|
||||
v-chip.mt-3.ml-0.mr-1(label, color='red lighten-4', small)
|
||||
.caption.red--text.text--darken-2 {{pageLocale.toUpperCase()}}
|
||||
v-chip.mt-3.mx-0(label, color='red lighten-5', disabled, small)
|
||||
v-chip.mt-3.mx-0(label, color='red lighten-5', small)
|
||||
span.red--text.text--darken-2 /{{pagePath}}
|
||||
v-card-chin
|
||||
v-spacer
|
||||
v-btn(flat, @click='discard', :disabled='loading') {{$t('common:actions.cancel')}}
|
||||
v-btn(color='red darken-2', @click='deletePage', :loading='loading').white--text {{$t('common:actions.delete')}}
|
||||
v-btn(text, @click='discard', :disabled='loading') {{$t('common:actions.cancel')}}
|
||||
v-btn.px-4(color='red darken-2', @click='deletePage', :loading='loading').white--text {{$t('common:actions.delete')}}
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
v-dialog(v-model='isShown', max-width='850px')
|
||||
v-card.page-selector
|
||||
.dialog-header.is-dark
|
||||
v-icon.mr-2(color='white') find_in_page
|
||||
v-icon.mr-3(color='white') mdi-page-next-outline
|
||||
span Select Page Location
|
||||
v-spacer
|
||||
v-progress-circular(
|
||||
@@ -71,9 +71,9 @@
|
||||
)
|
||||
v-card-chin
|
||||
v-spacer
|
||||
v-btn(outline, @click='close') Cancel
|
||||
v-btn(color='primary', @click='open')
|
||||
v-icon(left) check
|
||||
v-btn(text, @click='close') Cancel
|
||||
v-btn.px-4(color='primary', @click='open')
|
||||
v-icon(left) mdi-check
|
||||
span Select
|
||||
</template>
|
||||
|
||||
|
||||
@@ -7,29 +7,29 @@
|
||||
v-spacer
|
||||
template(slot='actions')
|
||||
v-btn.animated.fadeInDown(
|
||||
flat
|
||||
text
|
||||
color='green'
|
||||
@click.native.stop='save'
|
||||
:class='{ "is-icon": $vuetify.breakpoint.mdAndDown }'
|
||||
)
|
||||
v-icon(color='green', :left='$vuetify.breakpoint.lgAndUp') check
|
||||
v-icon(color='green', :left='$vuetify.breakpoint.lgAndUp') mdi-check
|
||||
span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ mode === 'create' ? $t('common:actions.create') : $t('common:actions.save') }}
|
||||
v-btn.animated.fadeInDown.wait-p1s(
|
||||
flat
|
||||
text
|
||||
color='blue'
|
||||
@click.native.stop='openPropsModal'
|
||||
:class='{ "is-icon": $vuetify.breakpoint.mdAndDown, "mx-0": !welcomeMode, "ml-0": welcomeMode }'
|
||||
)
|
||||
v-icon(color='blue', :left='$vuetify.breakpoint.lgAndUp') sort_by_alpha
|
||||
v-icon(color='blue', :left='$vuetify.breakpoint.lgAndUp') mdi-tag-text-outline
|
||||
span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.page') }}
|
||||
v-btn.animated.fadeInDown.wait-p2s(
|
||||
v-if='!welcomeMode'
|
||||
flat
|
||||
text
|
||||
color='red'
|
||||
:class='{ "is-icon": $vuetify.breakpoint.mdAndDown }'
|
||||
@click.native.stop='exit'
|
||||
)
|
||||
v-icon(color='red', :left='$vuetify.breakpoint.lgAndUp') close
|
||||
v-icon(color='red', :left='$vuetify.breakpoint.lgAndUp') mdi-close
|
||||
span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.close') }}
|
||||
v-content
|
||||
component(:is='currentEditor', :save='save')
|
||||
|
||||
@@ -9,37 +9,38 @@
|
||||
template(v-else)
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn(icon, slot='activator', @click='toggleMarkup({ start: `**` })').mx-0
|
||||
v-icon format_bold
|
||||
v-icon mdi-format-bold
|
||||
span {{$t('editor:markup.bold')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p1s(icon, slot='activator', @click='toggleMarkup({ start: `*` })').mx-0
|
||||
v-icon format_italic
|
||||
v-icon mdi-format-italic
|
||||
span {{$t('editor:markup.italic')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p2s(icon, slot='activator', @click='toggleMarkup({ start: `~~` })').mx-0
|
||||
v-icon format_strikethrough
|
||||
v-icon mdi-format-strikethrough
|
||||
span {{$t('editor:markup.strikethrough')}}
|
||||
v-menu(offset-y, open-on-hover)
|
||||
v-btn.animated.fadeIn.wait-p3s(icon, slot='activator').mx-0
|
||||
v-icon text_fields
|
||||
template(v-slot:activator='{ on }')
|
||||
v-btn.animated.fadeIn.wait-p3s(icon, v-on='on').mx-0
|
||||
v-icon mdi-format-header-pound
|
||||
v-list.py-0
|
||||
template(v-for='(n, idx) in 6')
|
||||
v-list-item(@click='setHeaderLine(n)', :key='idx')
|
||||
v-list-item-action
|
||||
v-icon(:size='24 - (idx - 1) * 2') title
|
||||
v-icon(:size='24 - (idx - 1) * 2') mdi-format-header-{{n}}
|
||||
v-list-item-title {{$t('editor:markup.heading', { level: n })}}
|
||||
v-divider(v-if='idx < 5')
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p4s(icon, slot='activator', @click='toggleMarkup({ start: `~` })').mx-0
|
||||
v-icon vertical_align_bottom
|
||||
v-icon mdi-format-subscript
|
||||
span {{$t('editor:markup.subscript')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p5s(icon, slot='activator', @click='toggleMarkup({ start: `^` })').mx-0
|
||||
v-icon vertical_align_top
|
||||
v-icon mdi-format-superscript
|
||||
span {{$t('editor:markup.superscript')}}
|
||||
v-menu(offset-y, open-on-hover)
|
||||
v-btn.animated.fadeIn.wait-p6s(icon, slot='activator').mx-0
|
||||
v-icon format_quote
|
||||
v-icon mdi-alpha-t-box-outline
|
||||
v-list.py-0
|
||||
v-list-item(@click='insertBeforeEachLine({ content: `> `})')
|
||||
v-list-item-action
|
||||
@@ -68,73 +69,73 @@
|
||||
v-divider
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p7s(icon, slot='activator', @click='insertBeforeEachLine({ content: `- `})').mx-0
|
||||
v-icon format_list_bulleted
|
||||
v-icon mdi-format-list-bulleted
|
||||
span {{$t('editor:markup.unorderedList')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p8s(icon, slot='activator', @click='insertBeforeEachLine({ content: `1. `})').mx-0
|
||||
v-icon format_list_numbered
|
||||
v-icon mdi-format-list-numbered
|
||||
span {{$t('editor:markup.orderedList')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p9s(icon, slot='activator', @click='toggleMarkup({ start: "`" })').mx-0
|
||||
v-icon space_bar
|
||||
v-icon mdi-code-tags
|
||||
span {{$t('editor:markup.inlineCode')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p10s(icon, slot='activator', @click='toggleMarkup({ start: `<kbd>`, end: `</kbd>` })').mx-0
|
||||
v-icon font_download
|
||||
v-icon mdi-keyboard-variant
|
||||
span {{$t('editor:markup.keyboardKey')}}
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p11s(icon, slot='activator', @click='insertAfter({ content: `---`, newLine: true })').mx-0
|
||||
v-icon remove
|
||||
v-icon mdi-minus
|
||||
span {{$t('editor:markup.horizontalBar')}}
|
||||
template(v-if='$vuetify.breakpoint.mdAndUp')
|
||||
v-spacer
|
||||
v-tooltip(bottom, color='primary')
|
||||
v-btn.animated.fadeIn.wait-p11s(icon, slot='activator', @click='previewShown = !previewShown').mx-0
|
||||
v-icon flip
|
||||
v-icon mdi-book-open-outline
|
||||
span {{$t('editor:markup.togglePreviewPane')}}
|
||||
.editor-markdown-main
|
||||
.editor-markdown-sidebar
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft(icon, slot='activator', dark, disabled).mx-0
|
||||
v-icon link
|
||||
v-icon mdi-link-plus
|
||||
span {{$t('editor:markup.insertLink')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p1s(icon, slot='activator', dark, @click='toggleModal(`editorModalMedia`)').mx-0
|
||||
v-icon(:color='activeModal === `editorModalMedia` ? `teal` : ``') burst_mode
|
||||
v-icon(:color='activeModal === `editorModalMedia` ? `teal` : ``') mdi-folder-multiple-image
|
||||
span {{$t('editor:markup.insertAssets')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p2s(icon, slot='activator', dark, @click='toggleModal(`editorModalBlocks`)').mx-0
|
||||
v-icon(:color='activeModal === `editorModalBlocks` ? `teal` : ``') dashboard
|
||||
v-icon(:color='activeModal === `editorModalBlocks` ? `teal` : ``') mdi-post
|
||||
span {{$t('editor:markup.insertBlock')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p3s(icon, slot='activator', dark, disabled).mx-0
|
||||
v-icon code
|
||||
v-icon mdi-code-braces
|
||||
span {{$t('editor:markup.insertCodeBlock')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p4s(icon, slot='activator', dark, disabled).mx-0
|
||||
v-icon play_circle_outline
|
||||
v-icon mdi-library-video
|
||||
span {{$t('editor:markup.insertVideoAudio')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p5s(icon, slot='activator', dark, disabled).mx-0
|
||||
v-icon multiline_chart
|
||||
v-icon mdi-chart-multiline
|
||||
span {{$t('editor:markup.insertDiagram')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p6s(icon, slot='activator', dark, disabled).mx-0
|
||||
v-icon functions
|
||||
v-icon mdi-function-variant
|
||||
span {{$t('editor:markup.insertMathExpression')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p7s(icon, slot='activator', dark, disabled).mx-0
|
||||
v-icon border_outer
|
||||
v-icon mdi-table-plus
|
||||
span {{$t('editor:markup.tableHelper')}}
|
||||
template(v-if='$vuetify.breakpoint.mdAndUp')
|
||||
v-spacer
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p8s(icon, slot='activator', dark, @click='toggleFullscreen').mx-0
|
||||
v-icon crop_free
|
||||
v-icon mdi-overscan
|
||||
span {{$t('editor:markup.distractionFreeMode')}}
|
||||
v-tooltip(right, color='teal')
|
||||
v-btn.animated.fadeInLeft.wait-p9s(icon, slot='activator', dark, @click='toggleHelp').mx-0
|
||||
v-icon(:color='helpShown ? `teal` : ``') help
|
||||
v-icon(:color='helpShown ? `teal` : ``') mdi-help-circle
|
||||
span {{$t('editor:markup.markdownFormattingHelp')}}
|
||||
.editor-markdown-editor
|
||||
codemirror(ref='cm', v-model='code', :options='cmOptions', @ready='onCmReady', @input='onCmInput')
|
||||
|
||||
@@ -7,30 +7,28 @@
|
||||
:fullscreen='$vuetify.breakpoint.smAndDown'
|
||||
)
|
||||
.dialog-header
|
||||
v-icon(color='white') sort_by_alpha
|
||||
.subheading.white--text.ml-2 {{$t('editor:props.pageProperties')}}
|
||||
v-icon(color='white') mdi-tag-text-outline
|
||||
.subheading.white--text.ml-3 {{$t('editor:props.pageProperties')}}
|
||||
v-spacer
|
||||
v-btn.mx-0(
|
||||
outline
|
||||
outlined
|
||||
dark
|
||||
@click.native='close'
|
||||
)
|
||||
v-icon(left) check
|
||||
v-icon(left) mdi-check
|
||||
span {{ $t('common:actions.ok') }}
|
||||
v-card.wiki-form(tile)
|
||||
v-card-text
|
||||
v-subheader.pl-0 {{$t('editor:props.pageInfo')}}
|
||||
.overline.pb-5 {{$t('editor:props.pageInfo')}}
|
||||
v-text-field(
|
||||
ref='iptTitle'
|
||||
outline
|
||||
background-color='grey lighten-2'
|
||||
outlined
|
||||
:label='$t(`editor:props.title`)'
|
||||
counter='255'
|
||||
v-model='title'
|
||||
)
|
||||
v-text-field(
|
||||
outline
|
||||
background-color='grey lighten-2'
|
||||
outlined
|
||||
:label='$t(`editor:props.shortDescription`)'
|
||||
counter='255'
|
||||
v-model='description'
|
||||
@@ -39,13 +37,12 @@
|
||||
)
|
||||
v-divider
|
||||
v-card-text.grey(:class='darkMode ? `darken-3-d3` : `lighten-5`')
|
||||
v-subheader.pl-0 {{$t('editor:props.pathCategorization')}}
|
||||
.overline.pb-5 {{$t('editor:props.pathCategorization')}}
|
||||
v-container.pa-0(fluid, grid-list-lg)
|
||||
v-layout(row, wrap)
|
||||
v-flex(xs12, md2)
|
||||
v-select(
|
||||
outline
|
||||
background-color='grey lighten-2'
|
||||
outlined
|
||||
:label='$t(`editor:props.locale`)'
|
||||
suffix='/'
|
||||
:items='namespaces'
|
||||
@@ -55,10 +52,9 @@
|
||||
)
|
||||
v-flex(xs12, md10)
|
||||
v-text-field(
|
||||
outline
|
||||
background-color='grey lighten-2'
|
||||
outlined
|
||||
:label='$t(`editor:props.path`)'
|
||||
append-icon='folder'
|
||||
append-icon='mdi-folder-search'
|
||||
v-model='path'
|
||||
:hint='$t(`editor:props.pathHint`)'
|
||||
persistent-hint
|
||||
@@ -66,11 +62,10 @@
|
||||
:disabled='mode !== "create"'
|
||||
)
|
||||
v-combobox(
|
||||
background-color='grey lighten-2'
|
||||
chips
|
||||
deletable-chips
|
||||
:label='$t(`editor:props.tags`)'
|
||||
outline
|
||||
outlined
|
||||
multiple
|
||||
v-model='tags'
|
||||
single-line
|
||||
@@ -80,7 +75,7 @@
|
||||
)
|
||||
v-divider
|
||||
v-card-text.pb-5.grey(:class='darkMode ? `darken-3-d5` : `lighten-4`')
|
||||
v-subheader.pl-0 {{$t('editor:props.publishState')}} #[v-chip.ml-3(label, color='grey', small, outline).white--text coming soon]
|
||||
.overline.pb-5 {{$t('editor:props.publishState')}} #[v-chip.ml-3(label, color='grey', small, outline).white--text coming soon]
|
||||
v-container.pa-0(fluid, grid-list-lg)
|
||||
v-layout(row, wrap)
|
||||
v-flex(xs12, md4)
|
||||
@@ -107,10 +102,9 @@
|
||||
slot='activator'
|
||||
:label='$t(`editor:props.publishStart`)'
|
||||
v-model='publishStartDate'
|
||||
prepend-icon='event'
|
||||
prepend-icon='mdi-calendar-check'
|
||||
readonly
|
||||
outline
|
||||
background-color='grey lighten-2'
|
||||
outlined
|
||||
clearable
|
||||
:hint='$t(`editor:props.publishStartHint`)'
|
||||
persistent-hint
|
||||
@@ -150,10 +144,9 @@
|
||||
slot='activator'
|
||||
:label='$t(`editor:props.publishEnd`)'
|
||||
v-model='publishEndDate'
|
||||
prepend-icon='event'
|
||||
prepend-icon='mdi-calendar-remove'
|
||||
readonly
|
||||
outline
|
||||
background-color='grey lighten-2'
|
||||
outlined
|
||||
clearable
|
||||
:hint='$t(`editor:props.publishEndHint`)'
|
||||
persistent-hint
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -76,7 +76,12 @@
|
||||
.overline.indigo--text.d-flex.align-center
|
||||
span {{$t('common:page.lastEditedBy')}}
|
||||
v-spacer
|
||||
v-tooltip(left, v-if='isAuthenticated')
|
||||
v-tooltip(top, v-if='isAuthenticated')
|
||||
template(v-slot:activator='{ on }')
|
||||
v-btn.btn-animate-edit(icon, :href='"/h/" + locale + "/" + path', v-on='on', x-small)
|
||||
v-icon(color='grey', dense) mdi-history
|
||||
span History
|
||||
v-tooltip(top, v-if='isAuthenticated')
|
||||
template(v-slot:activator='{ on }')
|
||||
v-btn.btn-animate-edit(icon, :href='"/e/" + locale + "/" + path', v-on='on', x-small)
|
||||
v-icon(color='grey', dense) mdi-pencil
|
||||
@@ -84,7 +89,7 @@
|
||||
.body-2.grey--text(:class='darkMode ? `` : `text--darken-3`') {{ authorName }}
|
||||
.caption.grey--text.text--darken-1 {{ updatedAt | moment('calendar') }}
|
||||
|
||||
v-card.mt-5
|
||||
v-card.mt-5(v-if='tags.length > 0')
|
||||
.pa-5
|
||||
.overline.teal--text.pb-2 Tags
|
||||
v-chip.mr-1(
|
||||
@@ -96,7 +101,8 @@
|
||||
)
|
||||
v-icon(color='teal', left, small) mdi-label
|
||||
span.teal--text.text--darken-2 {{tag.text}}
|
||||
v-divider
|
||||
|
||||
v-card.mt-5
|
||||
.pa-5
|
||||
.overline.pb-2.yellow--text.text--darken-4 Rating
|
||||
.text-center
|
||||
|
||||
Reference in New Issue
Block a user