fix: editor locale redirect + welcome page localization
This commit is contained in:
parent
d546695143
commit
6974811658
@ -205,7 +205,7 @@ export default {
|
|||||||
})
|
})
|
||||||
this.$store.set('editor/id', _.get(resp, 'page.id'))
|
this.$store.set('editor/id', _.get(resp, 'page.id'))
|
||||||
this.$store.set('editor/mode', 'update')
|
this.$store.set('editor/mode', 'update')
|
||||||
window.location.assign(`/${this.$store.get('page/path')}`)
|
window.location.assign(`/${this.$store.get('page/locale')}/${this.$store.get('page/path')}`)
|
||||||
} else {
|
} else {
|
||||||
throw new Error(_.get(resp, 'responseResult.message'))
|
throw new Error(_.get(resp, 'responseResult.message'))
|
||||||
}
|
}
|
||||||
|
@ -171,6 +171,8 @@ router.get('/*', async (req, res, next) => {
|
|||||||
return res.redirect(`/${pageArgs.locale}/${pageArgs.path}`)
|
return res.redirect(`/${pageArgs.locale}/${pageArgs.path}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
req.i18n.changeLanguage(pageArgs.locale)
|
||||||
|
|
||||||
if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
|
if (!WIKI.auth.checkAccess(req.user, ['read:pages'], pageArgs)) {
|
||||||
_.set(res.locals, 'pageMeta.title', 'Unauthorized')
|
_.set(res.locals, 'pageMeta.title', 'Unauthorized')
|
||||||
return res.status(403).render('unauthorized', { action: 'view' })
|
return res.status(403).render('unauthorized', { action: 'view' })
|
||||||
@ -206,7 +208,7 @@ router.get('/*', async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
} else if (pageArgs.path === 'home') {
|
} else if (pageArgs.path === 'home') {
|
||||||
_.set(res.locals, 'pageMeta.title', 'Welcome')
|
_.set(res.locals, 'pageMeta.title', 'Welcome')
|
||||||
res.render('welcome')
|
res.render('welcome', { locale: pageArgs.locale })
|
||||||
} else {
|
} else {
|
||||||
_.set(res.locals, 'pageMeta.title', 'Page Not Found')
|
_.set(res.locals, 'pageMeta.title', 'Page Not Found')
|
||||||
if (WIKI.auth.checkAccess(req.user, ['write:pages'], pageArgs)) {
|
if (WIKI.auth.checkAccess(req.user, ['write:pages'], pageArgs)) {
|
||||||
|
@ -14,18 +14,32 @@ extend type Mutation {
|
|||||||
# QUERIES
|
# QUERIES
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
|
||||||
|
"""
|
||||||
|
Queries for Analytics
|
||||||
|
"""
|
||||||
type AnalyticsQuery {
|
type AnalyticsQuery {
|
||||||
|
"""
|
||||||
|
Fetch list of Analytics providers and their configuration
|
||||||
|
"""
|
||||||
providers(
|
providers(
|
||||||
|
"Return only active providers"
|
||||||
isEnabled: Boolean
|
isEnabled: Boolean
|
||||||
): [AnalyticsProvider]
|
): [AnalyticsProvider] @auth(requires: ["manage:system"])
|
||||||
}
|
}
|
||||||
|
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
# MUTATIONS
|
# MUTATIONS
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
|
||||||
|
"""
|
||||||
|
Mutations for Analytics
|
||||||
|
"""
|
||||||
type AnalyticsMutation {
|
type AnalyticsMutation {
|
||||||
|
"""
|
||||||
|
Update a list of Analytics providers and their configuration
|
||||||
|
"""
|
||||||
updateProviders(
|
updateProviders(
|
||||||
|
"List of providers"
|
||||||
providers: [AnalyticsProviderInput]!
|
providers: [AnalyticsProviderInput]!
|
||||||
): DefaultResponse @auth(requires: ["manage:system"])
|
): DefaultResponse @auth(requires: ["manage:system"])
|
||||||
}
|
}
|
||||||
@ -34,20 +48,48 @@ type AnalyticsMutation {
|
|||||||
# TYPES
|
# TYPES
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
|
||||||
|
"""
|
||||||
|
Analytics Provider
|
||||||
|
"""
|
||||||
type AnalyticsProvider {
|
type AnalyticsProvider {
|
||||||
|
"Is the provider active"
|
||||||
isEnabled: Boolean!
|
isEnabled: Boolean!
|
||||||
|
|
||||||
|
"Unique identifier for this provider"
|
||||||
key: String!
|
key: String!
|
||||||
|
|
||||||
|
"List of configuration properties, formatted as stringified JSON objects"
|
||||||
props: [String]
|
props: [String]
|
||||||
|
|
||||||
|
"Name of the provider"
|
||||||
title: String!
|
title: String!
|
||||||
|
|
||||||
|
"Short description of the provider"
|
||||||
description: String
|
description: String
|
||||||
|
|
||||||
|
"Is the provider available for use"
|
||||||
isAvailable: Boolean
|
isAvailable: Boolean
|
||||||
|
|
||||||
|
"Path to the provider logo"
|
||||||
logo: String
|
logo: String
|
||||||
|
|
||||||
|
"Website of the provider"
|
||||||
website: String
|
website: String
|
||||||
icon: String
|
|
||||||
config: [KeyValuePair] @auth(requires: ["manage:system"])
|
"Configuration values for this provider"
|
||||||
|
config: [KeyValuePair]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
Analytics Configuration Input
|
||||||
|
"""
|
||||||
input AnalyticsProviderInput {
|
input AnalyticsProviderInput {
|
||||||
|
"Is the provider active"
|
||||||
isEnabled: Boolean!
|
isEnabled: Boolean!
|
||||||
|
|
||||||
|
"Unique identifier of the provider"
|
||||||
key: String!
|
key: String!
|
||||||
|
|
||||||
|
"Configuration values for this provider"
|
||||||
config: [KeyValuePairInput]
|
config: [KeyValuePairInput]
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ module.exports = async (localeCode) => {
|
|||||||
const locales = await WIKI.cache.get('locales')
|
const locales = await WIKI.cache.get('locales')
|
||||||
if (locales) {
|
if (locales) {
|
||||||
const currentLocale = _.find(locales, ['code', localeCode]) || {}
|
const currentLocale = _.find(locales, ['code', localeCode]) || {}
|
||||||
const existingLocale = await WIKI.models.locales.query().where('code', localeCode)
|
const existingLocale = await WIKI.models.locales.query().where('code', localeCode).first()
|
||||||
if (existingLocale) {
|
if (existingLocale) {
|
||||||
await WIKI.models.locales.query().patch({
|
await WIKI.models.locales.query().patch({
|
||||||
strings: lcObj
|
strings: lcObj
|
||||||
|
@ -2,7 +2,7 @@ extends master.pug
|
|||||||
|
|
||||||
block body
|
block body
|
||||||
#root
|
#root
|
||||||
.login-deprecated Your browser is outdated. Upgrade to a #[a(href='https://bestvpn.org/outdatedbrowser/en', rel='nofollow') modern browser].
|
.login-deprecated!= t('outdatedBrowserWarning', { modernBrowser: '<a href="https://bestvpn.org/outdatedbrowser/en" rel="nofollow">' + t('modernBrowser') + '</a>', interpolation: { escapeValue: false } })
|
||||||
.login
|
.login
|
||||||
.login-dialog
|
.login-dialog
|
||||||
if err
|
if err
|
||||||
@ -12,12 +12,12 @@ block body
|
|||||||
select(name='strategy')
|
select(name='strategy')
|
||||||
each str in formStrategies
|
each str in formStrategies
|
||||||
option(value=str.key, selected)= str.title
|
option(value=str.key, selected)= str.title
|
||||||
input(type='text', name='user', placeholder='Username / Email')
|
input(type='text', name='user', placeholder=t('auth:fields.emailUser'))
|
||||||
input(type='password', name='pass', placeholder='Password')
|
input(type='password', name='pass', placeholder=t('auth:fields.password'))
|
||||||
button(type='submit') Login
|
button(type='submit')= t('auth:actions.login')
|
||||||
if socialStrategies.length
|
if socialStrategies.length
|
||||||
.login-social
|
.login-social
|
||||||
h2 or login using...
|
h2= t('auth:orLoginUsingStrategy')
|
||||||
each str in socialStrategies
|
each str in socialStrategies
|
||||||
a.login-social-icon(href='/login/' + str.key, class=str.color)
|
a.login-social-icon(href='/login/' + str.key, class=str.color)
|
||||||
!= str.icon
|
!= str.icon
|
||||||
|
@ -10,7 +10,7 @@ block body
|
|||||||
#root
|
#root
|
||||||
.header
|
.header
|
||||||
span.header-title= siteConfig.title
|
span.header-title= siteConfig.title
|
||||||
span.header-deprecated Your browser is outdated. Upgrade to a #[a(href='https://bestvpn.org/outdatedbrowser/en', rel='nofollow') modern browser].
|
span.header-deprecated!= t('outdatedBrowserWarning', { modernBrowser: '<a href="https://bestvpn.org/outdatedbrowser/en" rel="nofollow">' + t('modernBrowser') + '</a>', interpolation: { escapeValue: false } })
|
||||||
span.header-login
|
span.header-login
|
||||||
if !isAuthenticated
|
if !isAuthenticated
|
||||||
a(href='/login', title='Login')
|
a(href='/login', title='Login')
|
||||||
@ -43,7 +43,7 @@ block body
|
|||||||
div!= page.render
|
div!= page.render
|
||||||
if page.toc.length
|
if page.toc.length
|
||||||
.toc
|
.toc
|
||||||
.toc-title Table of Contents
|
.toc-title= t('page.toc')
|
||||||
each tocItem, tocIdx in page.toc
|
each tocItem, tocIdx in page.toc
|
||||||
a.toc-tile(href='#' + tocItem.anchor)
|
a.toc-tile(href='#' + tocItem.anchor)
|
||||||
i.material-icons arrow_right
|
i.material-icons arrow_right
|
||||||
|
@ -8,6 +8,6 @@ block body
|
|||||||
img.animated.fadeIn(src='/svg/logo-wikijs.svg', alt='Wiki.js')
|
img.animated.fadeIn(src='/svg/logo-wikijs.svg', alt='Wiki.js')
|
||||||
.headline= t('welcome.title')
|
.headline= t('welcome.title')
|
||||||
.subheading.mt-3= t('welcome.subtitle')
|
.subheading.mt-3= t('welcome.subtitle')
|
||||||
v-btn.mt-5(color='primary', href='/e/home', large)
|
v-btn.mt-5(color='primary', href='/e/' + locale + '/home', large)
|
||||||
v-icon(left) add
|
v-icon(left) add
|
||||||
span= t('welcome.createhome')
|
span= t('welcome.createhome')
|
||||||
|
Loading…
Reference in New Issue
Block a user