fix: editor locale redirect + welcome page localization

This commit is contained in:
Nick 2019-07-13 20:27:31 -04:00
parent d546695143
commit 6974811658
7 changed files with 58 additions and 14 deletions

View File

@ -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'))
} }

View File

@ -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)) {

View File

@ -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]
} }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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')