feat: translations (wip)
This commit is contained in:
		| @@ -3,7 +3,7 @@ | ||||
|     nav-header(hide-search) | ||||
|       template(slot='mid') | ||||
|         v-spacer | ||||
|         .subheading.grey--text Administration Area | ||||
|         .subheading.grey--text {{$t('admin:adminArea')}} | ||||
|         v-spacer | ||||
|     v-navigation-drawer.pb-0.admin-sidebar(v-model='adminDrawerShown', app, fixed, clipped, :right='$vuetify.rtl', permanent) | ||||
|       vue-scroll(:ops='scrollStyle') | ||||
|   | ||||
| @@ -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 Strategy Configuration | ||||
|               .body-1.ml-3(v-if='!strategy.config || strategy.config.length < 1'): em This strategy has no configuration options you can modify. | ||||
|               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')}} | ||||
|               template(v-else, v-for='cfg in strategy.config') | ||||
|                 v-select( | ||||
|                   v-if='cfg.value.type === "string" && cfg.value.enum' | ||||
| @@ -119,13 +119,13 @@ | ||||
|                   :class='cfg.value.hint ? "mb-2" : ""' | ||||
|                   ) | ||||
|               v-divider.mt-3 | ||||
|               v-subheader.pl-0 Registration | ||||
|               v-subheader.pl-0 {{$t('admin:auth.registration')}} | ||||
|               .pr-3 | ||||
|                 v-switch.ml-3( | ||||
|                   v-model='strategy.selfRegistration' | ||||
|                   label='Allow self-registration' | ||||
|                   :label='$t(`admin:auth.selfRegistration`)' | ||||
|                   color='primary' | ||||
|                   hint='Allow any user successfully authorized by the strategy to access the wiki.' | ||||
|                   :hint='$t(`admin:auth.selfRegistrationHint`)' | ||||
|                   persistent-hint | ||||
|                 ) | ||||
|                 v-switch.ml-3( | ||||
| @@ -138,12 +138,12 @@ | ||||
|                   persistent-hint | ||||
|                 ) | ||||
|                 v-combobox.ml-3.mt-3( | ||||
|                   label='Limit to specific email domains' | ||||
|                   :label='$t(`admin:auth.domainsWhitelist`)' | ||||
|                   v-model='strategy.domainWhitelist' | ||||
|                   prepend-icon='mail_outline' | ||||
|                   outline | ||||
|                   :disabled='!strategy.selfRegistration' | ||||
|                   hint='A list of domains authorized to register. The user email address domain must match one of these to gain access.' | ||||
|                   :hint='$t(`admin:auth.domainsWhitelistHint`)' | ||||
|                   persistent-hint | ||||
|                   small-chips | ||||
|                   deletable-chips | ||||
| @@ -157,10 +157,10 @@ | ||||
|                   :items='groups' | ||||
|                   item-text='name' | ||||
|                   item-value='id' | ||||
|                   label='Assign to group' | ||||
|                   :label='$t(`admin:auth.autoEnrollGroups`)' | ||||
|                   v-model='strategy.autoEnrollGroups' | ||||
|                   prepend-icon='people' | ||||
|                   hint='Automatically assign new users to these groups.' | ||||
|                   :hint='$t(`admin:auth.autoEnrollGroupsHint`)' | ||||
|                   small-chips | ||||
|                   persistent-hint | ||||
|                   deletable-chips | ||||
| @@ -170,36 +170,39 @@ | ||||
|                   ) | ||||
|               template(v-if='strategy.useForm') | ||||
|                 v-divider.mt-3 | ||||
|                 v-subheader.pl-0 Security | ||||
|                 v-subheader.pl-0 {{$t('admin:auth.security')}} | ||||
|                 v-switch.ml-3( | ||||
|                   v-model='strategy.recaptcha' | ||||
|                   :disabled='true' | ||||
|                   label='Force all users to use Two-Factor Authentication (2FA)' | ||||
|                   :label='$t(`admin:auth.force2fa`)' | ||||
|                   color='primary' | ||||
|                   hint='Users will be required to setup 2FA the first time they login and cannot be disabled by the user.' | ||||
|                   :hint='$t(`admin:auth.force2faHint`)' | ||||
|                   persistent-hint | ||||
|                 ) | ||||
|  | ||||
|         v-card.mt-3.wiki-form.animated.fadeInUp.wait-p4s | ||||
|           v-toolbar(color='primary', dense, flat, dark) | ||||
|             .subheading Configuration Reference | ||||
|             .subheading {{$t('admin:auth.configReference')}} | ||||
|           v-card-text | ||||
|             .body-1 Some strategies may require some configuration values to be set on your provider. These are provided for reference only and may not be needed by the current strategy. | ||||
|             v-alert.mt-3.radius-7(v-if='host.length < 8', color='red', outline, :value='true', icon='warning') You must set a valid #[strong Site URL] first! Click on #[strong General] in the left sidebar. | ||||
|             .body-1 {{$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 Allowed Web Origins | ||||
|               .body-2 {{$t('admin:auth.allowedWebOrigins')}} | ||||
|               .body-1 {{host}} | ||||
|               v-divider.my-3 | ||||
|               .body-2 Callback URL / Redirect URI | ||||
|               .body-2 {{$t('admin:auth.callbackUrl')}} | ||||
|               .body-1 {{host}}/login/{{strategy.key}}/callback | ||||
|               v-divider.my-3 | ||||
|               .body-2 Login URL | ||||
|               .body-2 {{$t('admin:auth.loginUrl')}} | ||||
|               .body-1 {{host}}/login | ||||
|               v-divider.my-3 | ||||
|               .body-2 Logout URL | ||||
|               .body-2 {{$t('admin:auth.logoutUrl')}} | ||||
|               .body-1 {{host}} | ||||
|               v-divider.my-3 | ||||
|               .body-2 Token Endpoint Authentication Method | ||||
|               .body-2 {{$t('admin:auth.tokenEndpointAuthMethod')}} | ||||
|               .body-1 HTTP-POST | ||||
| </template> | ||||
|  | ||||
|   | ||||
| @@ -5,8 +5,8 @@ | ||||
|         .admin-header | ||||
|           img.animated.fadeInUp(src='/svg/icon-paint-palette.svg', alt='Theme', style='width: 80px;') | ||||
|           .admin-header-title | ||||
|             .headline.primary--text.animated.fadeInLeft Theme | ||||
|             .subheading.grey--text.animated.fadeInLeft.wait-p2s Modify the look & feel of your wiki | ||||
|             .headline.primary--text.animated.fadeInLeft {{$t('admin:theme.title')}} | ||||
|             .subheading.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) check | ||||
| @@ -17,7 +17,7 @@ | ||||
|               v-card.wiki-form.animated.fadeInUp | ||||
|                 v-toolbar(color='primary', dark, dense, flat) | ||||
|                   v-toolbar-title | ||||
|                     .subheading Theme | ||||
|                     .subheading {{$t('admin:theme.title')}} | ||||
|                 v-card-text | ||||
|                   v-select( | ||||
|                     :items='themes' | ||||
| @@ -25,9 +25,9 @@ | ||||
|                     background-color='grey lighten-2' | ||||
|                     prepend-icon='palette' | ||||
|                     v-model='config.theme' | ||||
|                     label='Site Theme' | ||||
|                     :label='$t(`admin:theme.siteTheme`)' | ||||
|                     persistent-hint | ||||
|                     hint='Themes affect how content pages are displayed. Other site sections (such as the editor or admin area) are not affected.' | ||||
|                     :hint='$t(`admin:theme.siteThemeHint`)' | ||||
|                     ) | ||||
|                     template(slot='item', slot-scope='data') | ||||
|                       v-list-tile-avatar | ||||
| @@ -38,51 +38,51 @@ | ||||
|                   v-divider.mt-3 | ||||
|                   v-switch( | ||||
|                     v-model='darkMode' | ||||
|                     label='Dark Mode' | ||||
|                     :label='$t(`admin:theme.darkMode`)' | ||||
|                     color='primary' | ||||
|                     persistent-hint | ||||
|                     hint='Not recommended for accessibility. May not be supported by all themes.' | ||||
|                     :hint='$t(`admin:theme.darkModeHint`)' | ||||
|                     ) | ||||
|               v-card.wiki-form.mt-3.animated.fadeInUp.wait-p2s | ||||
|                 v-toolbar(color='primary', dark, dense, flat) | ||||
|                   v-toolbar-title | ||||
|                     .subheading Code Injection | ||||
|                     .subheading {{$t(`admin:theme.codeInjection`)}} | ||||
|                 v-card-text | ||||
|                   v-textarea( | ||||
|                     v-model='config.injectCSS' | ||||
|                     label='CSS Override' | ||||
|                     :label='$t(`admin:theme.cssOverride`)' | ||||
|                     outline | ||||
|                     background-color='grey lighten-1' | ||||
|                     color='primary' | ||||
|                     persistent-hint | ||||
|                     hint='CSS code to inject after system default CSS. Consider using custom themes if you have a large amount of css code. Injecting too much CSS code will result in poor page load performance! CSS will automatically be minified.' | ||||
|                     :hint='$t(`admin:theme.cssOverrideHint`)' | ||||
|                     auto-grow | ||||
|                     ) | ||||
|                   v-textarea.mt-2( | ||||
|                     v-model='config.injectHead' | ||||
|                     label='Head HTML Injection' | ||||
|                     :label='$t(`admin:theme.headHtmlInjection`)' | ||||
|                     outline | ||||
|                     background-color='grey lighten-1' | ||||
|                     color='primary' | ||||
|                     persistent-hint | ||||
|                     hint='HTML code to be injected just before the closing head tag. Usually for script tags.' | ||||
|                     :hint='$t(`admin:theme.headHtmlInjectionHint`)' | ||||
|                     auto-grow | ||||
|                     ) | ||||
|                   v-textarea.mt-2( | ||||
|                     v-model='config.injectBody' | ||||
|                     label='Body HTML Injection' | ||||
|                     :label='$t(`admin:theme.bodyHtmlInjection`)' | ||||
|                     outline | ||||
|                     background-color='grey lighten-1' | ||||
|                     color='primary' | ||||
|                     persistent-hint | ||||
|                     hint='HTML code to be injected just before the closing body tag.' | ||||
|                     :hint='$t(`admin:theme.bodyHtmlInjectionHint`)' | ||||
|                     auto-grow | ||||
|                     ) | ||||
|             v-flex(lg6 xs12) | ||||
|               v-card.animated.fadeInUp.wait-p2s | ||||
|                 v-toolbar(color='teal', dark, dense, flat) | ||||
|                   v-toolbar-title | ||||
|                     .subheading Download Themes | ||||
|                     .subheading {{$t('admin:theme.downloadThemes')}} | ||||
|                   v-spacer | ||||
|                   v-chip(label, color='white', small).teal--text coming soon | ||||
|                 v-card-text.caption -- Coming soon -- | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
|           v-spacer | ||||
|           v-btn.animated.fadeInDown.wait-p2s(outline, color='grey', large, @click='refresh') | ||||
|             v-icon refresh | ||||
|           v-btn.animated.fadeInDown(color='primary', large, depressed, @click='createUser', disabled) | ||||
|           v-btn.animated.fadeInDown(color='primary', large, depressed, @click='createUser') | ||||
|             v-icon(left) add | ||||
|             span New User | ||||
|         v-card.wiki-form.mt-3.animated.fadeInUp | ||||
|   | ||||
| @@ -25,36 +25,36 @@ | ||||
|             v-list(dense, :light='!$vuetify.dark', :dark='$vuetify.dark', :class='$vuetify.dark ? `grey darken-4` : ``').py-0 | ||||
|               v-list-tile(avatar, href='/') | ||||
|                 v-list-tile-avatar: v-icon(color='blue') home | ||||
|                 v-list-tile-content Home | ||||
|                 v-list-tile-content {{$t('common:header.home')}} | ||||
|               v-list-tile(avatar, @click='pageNew') | ||||
|                 v-list-tile-avatar: v-icon(color='green') add_box | ||||
|                 v-list-tile-content New Page | ||||
|                 v-list-tile-content {{$t('common:header.newPage')}} | ||||
|               template(v-if='path && path.length') | ||||
|                 v-divider.my-0 | ||||
|                 v-subheader Current Page | ||||
|                 v-subheader {{$t('common:header.currentPage')}} | ||||
|                 v-list-tile(avatar, @click='pageView', v-if='mode !== `view`') | ||||
|                   v-list-tile-avatar: v-icon(color='indigo') subject | ||||
|                   v-list-tile-content View | ||||
|                   v-list-tile-content {{$t('common:header.view')}} | ||||
|                 v-list-tile(avatar, @click='pageEdit', v-if='mode !== `edit`') | ||||
|                   v-list-tile-avatar: v-icon(color='indigo') edit | ||||
|                   v-list-tile-content Edit | ||||
|                   v-list-tile-content {{$t('common:header.edit')}} | ||||
|                 v-list-tile(avatar, @click='pageHistory', v-if='mode !== `history`') | ||||
|                   v-list-tile-avatar: v-icon(color='indigo') history | ||||
|                   v-list-tile-content History | ||||
|                   v-list-tile-content {{$t('common:header.history')}} | ||||
|                 v-list-tile(avatar, @click='pageSource', v-if='mode !== `source`') | ||||
|                   v-list-tile-avatar: v-icon(color='indigo') code | ||||
|                   v-list-tile-content View Source | ||||
|                   v-list-tile-content {{$t('common:header.viewSource')}} | ||||
|                 v-list-tile(avatar, @click='pageMove') | ||||
|                   v-list-tile-avatar: v-icon(color='grey lighten-2') forward | ||||
|                   v-list-tile-content.grey--text.text--ligten-2 Move / Rename | ||||
|                   v-list-tile-content.grey--text.text--ligten-2 {{$t('common:header.move')}} | ||||
|                 v-list-tile(avatar, @click='pageDelete') | ||||
|                   v-list-tile-avatar: v-icon(color='red darken-2') delete | ||||
|                   v-list-tile-content Delete | ||||
|                   v-list-tile-content {{$t('common:header.delete')}} | ||||
|               v-divider.my-0 | ||||
|               v-subheader Assets | ||||
|               v-subheader {{$t('common:header.assets')}} | ||||
|               v-list-tile(avatar, @click='assets') | ||||
|                 v-list-tile-avatar: v-icon(color='grey lighten-2') burst_mode | ||||
|                 v-list-tile-content.grey--text.text--ligten-2 Images & Files | ||||
|                 v-list-tile-content.grey--text.text--ligten-2 {{$t('common:header.imagesFiles')}} | ||||
|           v-toolbar-title(:class='{ "ml-2": $vuetify.breakpoint.mdAndUp, "ml-0": $vuetify.breakpoint.smAndDown }') | ||||
|             span.subheading {{title}} | ||||
|       v-flex(md4, v-if='$vuetify.breakpoint.mdAndUp') | ||||
| @@ -66,7 +66,7 @@ | ||||
|                 v-if='searchIsShown && $vuetify.breakpoint.mdAndUp', | ||||
|                 v-model='search', | ||||
|                 color='white', | ||||
|                 label='Search...', | ||||
|                 :label='$t(`common:header.search`)', | ||||
|                 single-line, | ||||
|                 solo | ||||
|                 flat | ||||
| @@ -151,14 +151,14 @@ | ||||
|           v-tooltip(bottom, v-if='isAuthenticated && isAdmin') | ||||
|             v-btn.btn-animate-rotate(icon, href='/a', slot='activator') | ||||
|               v-icon(color='grey') settings | ||||
|             span Admin | ||||
|             span {{$t('common:header.admin')}} | ||||
|           v-menu(v-if='isAuthenticated', offset-y, min-width='300', left, transition='slide-y-transition') | ||||
|             v-tooltip(bottom, slot='activator') | ||||
|               v-btn(icon, slot='activator', outline, color='blue') | ||||
|                 v-icon(v-if='picture.kind === `initials`', color='grey') account_circle | ||||
|                 v-avatar(v-else-if='picture.kind === `image`', :size='29') | ||||
|                   v-img(:src='picture.url') | ||||
|               span Account | ||||
|               span {{$t('common:header.account')}} | ||||
|             v-list.py-0 | ||||
|               v-list-tile.py-3.grey(avatar, :class='$vuetify.dark ? `darken-4-l5` : `lighten-5`') | ||||
|                 v-list-tile-avatar | ||||
| @@ -172,20 +172,20 @@ | ||||
|               v-divider.my-0 | ||||
|               v-list-tile(href='/w', disabled) | ||||
|                 v-list-tile-action: v-icon(color='blue') web | ||||
|                 v-list-tile-title My Wiki | ||||
|                 v-list-tile-title {{$t('common:header.myWiki')}} | ||||
|               v-divider.my-0 | ||||
|               v-list-tile(href='/p', disabled) | ||||
|                 v-list-tile-action: v-icon(color='blue') person | ||||
|                 v-list-tile-title Profile | ||||
|                 v-list-tile-title {{$t('common:header.profile')}} | ||||
|               v-divider.my-0 | ||||
|               v-list-tile(@click='logout') | ||||
|                 v-list-tile-action: v-icon(color='red') exit_to_app | ||||
|                 v-list-tile-title Logout | ||||
|                 v-list-tile-title {{$t('common:header.logout')}} | ||||
|  | ||||
|           v-tooltip(v-else, left) | ||||
|             v-btn(icon, slot='activator', outline, color='grey darken-3', href='/login') | ||||
|               v-icon(color='grey') account_circle | ||||
|             span Login | ||||
|             span {{$t('common:header.login')}} | ||||
|  | ||||
|     page-selector(mode='create', v-model='newPageModal', :open-handler='pageNewCreate') | ||||
|     page-delete(v-model='deletePageModal', v-if='path && path.length') | ||||
|   | ||||
| @@ -21,7 +21,7 @@ | ||||
|           :class='{ "is-icon": $vuetify.breakpoint.mdAndDown, "mx-0": !welcomeMode, "ml-0": welcomeMode }' | ||||
|           ) | ||||
|           v-icon(color='blue', :left='$vuetify.breakpoint.lgAndUp') sort_by_alpha | ||||
|           span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('editor:page') }} | ||||
|           span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.page') }} | ||||
|         v-btn.animated.fadeInDown.wait-p2s( | ||||
|           v-if='!welcomeMode' | ||||
|           flat | ||||
| @@ -30,7 +30,7 @@ | ||||
|           @click.native.stop='exit' | ||||
|           ) | ||||
|           v-icon(color='red', :left='$vuetify.breakpoint.lgAndUp') close | ||||
|           span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('editor:close') }} | ||||
|           span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.close') }} | ||||
|     v-content | ||||
|       component(:is='currentEditor', :save='save') | ||||
|       editor-modal-properties(v-model='dialogProps') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user