1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 21:29:42 +02:00

i18n page strings

This commit is contained in:
McMatts 2022-03-04 13:07:11 -05:00
parent 4ab48cc67d
commit 59dc6ea991
29 changed files with 125 additions and 107 deletions

View file

@ -87,10 +87,5 @@ export default Component.extend(AuthProvider, {
set(this, 'password.confirmation', ''); set(this, 'password.confirmation', '');
}); });
} }
// onThemeChange(theme) {
// this.get('appMeta').setTheme(theme);
// this.set('model.theme', theme);
// }
} }
}); });

View file

@ -1,12 +1,12 @@
{{#if (is-equal model.mode "login")}} {{#if (is-equal model.mode "login")}}
<div class="sso-box"> <div class="sso-box">
<p>Authenticating with CAS...</p> <p>{{localize 'login_cas'}}</p>
<img src="/assets/img/busy-gray.gif"> <img src="/assets/img/busy-gray.gif">
</div> </div>
{{/if}} {{/if}}
{{#if (is-equal model.mode "reject")}} {{#if (is-equal model.mode "reject")}}
<div class="sso-box"> <div class="sso-box">
<p>CAS authentication failure</p> <p>{{localize 'login_cas_error'}}</p>
</div> </div>
{{/if}} {{/if}}

View file

@ -1,8 +1,7 @@
<div class="auth-center"> <div class="auth-center">
<div class="auth-box"> <div class="auth-box">
<div class="logo"> <div class="logo">
<img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" <img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" title={{appMeta.title}} alt={{appMeta.title}} class="img-fluid">
title="Community" alt="Community" class="img-fluid">
<div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div> <div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div>
</div> </div>
<div class="login-form"> <div class="login-form">

View file

@ -18,6 +18,7 @@ export default Route.extend({
appMeta: service(), appMeta: service(),
kcAuth: service(), kcAuth: service(),
localStorage: service(), localStorage: service(),
queryParams: { queryParams: {
mode: { mode: {
refreshModel: true refreshModel: true

View file

@ -1,13 +1,13 @@
{{#if (is-equal model.mode "login")}} {{#if (is-equal model.mode "login")}}
<div class="sso-box"> <div class="sso-box">
<p>Authenticating with Keycloak...</p> <p>{{localize 'login_keycloak'}}</p>
<img src="/assets/img/busy-gray.gif"> <img src="/assets/img/busy-gray.gif">
</div> </div>
{{/if}} {{/if}}
{{#if (is-equal model.mode "reject")}} {{#if (is-equal model.mode "reject")}}
<div class="sso-box"> <div class="sso-box">
<p>Keycloak authentication failure</p> <p>{{localize 'login_keycloak_error'}}</p>
<p>{{model.message}}</p> <p>{{model.message}}</p>
</div> </div>
{{/if}} {{/if}}

View file

@ -65,15 +65,6 @@ export default Controller.extend(AuthProvider, {
this.set('invalidCredentials', true); this.set('invalidCredentials', true);
}); });
} }
// if (this.get('isAuthProviderCAS')) {
//
// this.get('session').authenticate('authenticator:cas').then((response) => {
// this.transitionToRoute('folders');
// return response;
// }).catch(() => {
// this.set('invalidCredentials', true);
// });
// }
} }
} }
}); });

View file

@ -2,37 +2,35 @@
{{#if model.showLogin}} {{#if model.showLogin}}
<div class="auth-box"> <div class="auth-box">
<div class="logo"> <div class="logo">
<img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" <img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" title="{{appMeta.title}}" alt="{{appMeta.title}}" class="img-fluid">
title="Community" alt="Community" class="img-fluid">
<div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div> <div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div>
</div> </div>
<form {{action "login" on="submit"}}> <form {{action "login" on="submit"}}>
<div class="form-group"> <div class="form-group">
{{#if isAuthProviderDocumize}} {{#if isAuthProviderDocumize}}
<label for="authEmail">Email</label> <label for="authEmail">{{localize 'email'}}</label>
{{focus-input type="email" value=email id="authEmail" class="form-control mousetrap" placeholder="" autocomplete="username email"}} {{focus-input type="email" value=email id="authEmail" class="form-control mousetrap" placeholder="" autocomplete="username email"}}
{{/if}} {{/if}}
{{#if isAuthProviderLDAP}} {{#if isAuthProviderLDAP}}
<label for="authUsername">Username</label> <label for="authUsername">{{localize 'username'}}</label>
{{focus-input type="text" value=username id="authUsername" class="form-control mousetrap" placeholder="network domain username" autocomplete="username"}} {{focus-input type="text" value=username id="authUsername" class="form-control mousetrap" placeholder="" autocomplete="username"}}
{{/if}} {{/if}}
</div> </div>
<div class="form-group"> <div class="form-group">
{{#if isAuthProviderDocumize}} {{#if isAuthProviderDocumize}}
<label for="authPassword">Password</label> <label for="authPassword">{{localize 'password'}}</label>
{{input type="password" value=password id="authPassword" class="form-control" autocomplete="current-password"}} {{input type="password" value=password id="authPassword" class="form-control" autocomplete="current-password"}}
{{/if}} {{/if}}
{{#if isAuthProviderLDAP}} {{#if isAuthProviderLDAP}}
<label for="authPassword">Password</label> <label for="authPassword">{{localize 'password'}}</label>
{{input type="password" value=password id="authPassword" class="form-control" autocomplete="current-password"}} {{input type="password" value=password id="authPassword" class="form-control" autocomplete="current-password"}}
{{/if}} {{/if}}
</div> </div>
{{ui/ui-button color=constants.Color.Green light=true label=(localize 'signin') onClick=(action "login")}} {{ui/ui-button color=constants.Color.Green light=true label=(localize 'signin') onClick=(action "login")}}
<div class="{{unless invalidCredentials "invisible"}} color-red-600 mt-3"></div>
<div class="{{unless invalidCredentials "invisible"}} color-red-600 mt-3">Invalid credentials</div>
{{#if isAuthProviderDocumize}} {{#if isAuthProviderDocumize}}
{{#link-to "auth.forgot"}}Forgot your password?{{/link-to}} {{#link-to "auth.forgot"}}{{localize 'forgor_password'}}{{/link-to}}
{{/if}} {{/if}}
</form> </form>
</div> </div>

View file

@ -1,4 +1,4 @@
<div class="sso-box"> <div class="sso-box">
<p>Logging out...</p> <p>{{localize 'logout'}}</p>
<img src="/assets/img/busy-gray.gif"> <img src="/assets/img/busy-gray.gif">
</div> </div>

View file

@ -11,14 +11,17 @@
import $ from 'jquery'; import $ from 'jquery';
import Route from '@ember/routing/route'; import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default Route.extend({ export default Route.extend({
i18n: service(),
model: function (params) { model: function (params) {
return params.token; return params.token;
}, },
activate() { activate() {
this.get('browser').setTitleAsPhrase('Reset Password'); this.get('browser').setTitleAsPhrase(this.i18n.localize('reset_password'));
$('body').addClass('background-color-theme-100 d-flex justify-content-center align-items-center'); $('body').addClass('background-color-theme-100 d-flex justify-content-center align-items-center');
}, },

View file

@ -1,8 +1,7 @@
<div class="auth-center"> <div class="auth-center">
<div class="auth-box"> <div class="auth-box">
<div class="logo"> <div class="logo">
<img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" <img src="{{appMeta.endpoint}}/public/logo?cb={{random-id}}" title="{{appMeta.title}}" alt="{{appMeta.title}}" class="img-fluid">
title="Community" alt="Community" class="img-fluid">
<div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div> <div class="url">{{appMeta.title}} ({{appMeta.appHost}})</div>
</div> </div>
{{user/password-reset reset=(action "reset")}} {{user/password-reset reset=(action "reset")}}

View file

@ -37,6 +37,6 @@ export default Route.extend(AuthenticatedRouteMixin, {
}, },
activate() { activate() {
this.get('browser').setTitleWithoutSuffix('Welcome to Documize'); this.get('browser').setTitleWithoutSuffix('Documize Community');
} }
}); });

View file

@ -5,8 +5,8 @@
<Layout::Grid::Sidebar> <Layout::Grid::Sidebar>
<div class="sidebar-content"> <div class="sidebar-content">
<div class="section"> <div class="section">
<div class="title">welcome to documize</div> <div class="title">{{localize 'welcome'}}</div>
<p>Let's set up your account and get you started</p> <p>{{localize 'welcome_explain'}}</p>
</div> </div>
</div> </div>
</Layout::Grid::Sidebar> </Layout::Grid::Sidebar>

View file

@ -1,4 +1,4 @@
<div class="sso-box"> <div class="sso-box">
<p>Signing in...</p> <p>{{localize 'authentication'}}</p>
<img src="/assets/img/busy-gray.gif" alt="busy"> <img src="/assets/img/busy-gray.gif" alt="busy">
</div> </div>

View file

@ -27,7 +27,7 @@
<div class="sidebar-content"> <div class="sidebar-content">
<Layout::Grid::SidebarGoTop /> <Layout::Grid::SidebarGoTop />
<Layout::Grid::SidebarCustomAction> <Layout::Grid::SidebarCustomAction>
<i class="dicon {{constants.Icon.Expand}} {{if (gt expandState.length 0) "color-green-500"}}" {{action "onExpandAll"}} title="Expand/collapse" /> <i class="dicon {{constants.Icon.Expand}} {{if (gt expandState.length 0) "color-green-500"}}" {{action "onExpandAll"}} title={{localize 'expand_collapse'}} />
</Layout::Grid::SidebarCustomAction> </Layout::Grid::SidebarCustomAction>
<Ui::UiSpacer @size="200" /> <Ui::UiSpacer @size="200" />

View file

@ -2,8 +2,7 @@
<Layout::MasterToolbar> <Layout::MasterToolbar>
<div class="zone-1"> <div class="zone-1">
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{ui/ui-toolbar-button themed=true uppercase=false {{ui/ui-toolbar-button themed=true uppercase=false icon=constants.Icon.ArrowLeft label=document.name onClick=(action "onBack")}}
icon=constants.Icon.ArrowLeft label=document.name onClick=(action "onBack")}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
</div> </div>
<div class="zone-2" /> <div class="zone-2" />
@ -14,7 +13,7 @@
<Layout::Grid::Sidebar> <Layout::Grid::Sidebar>
<div class="sidebar-content"> <div class="sidebar-content">
<div class="section"> <div class="section">
<div class="title">REVISIONS</div> <div class="title">{{localize 'revisions'}}</div>
<div class="list"> <div class="list">
{{#each revisions as |revision|}} {{#each revisions as |revision|}}
<div class="item {{if (eq selectedRevision revision) "selected"}}" {{action "onRevision" revision}}> <div class="item {{if (eq selectedRevision revision) "selected"}}" {{action "onRevision" revision}}>
@ -29,8 +28,8 @@
<Layout::Grid::Content> <Layout::Grid::Content>
{{layout/logo-heading {{layout/logo-heading
title="Content Revisions" title=(localize 'content_revisions')
desc="Review previous content changes and roll back edits" desc=(localize 'content_revisions_explain')
icon=constants.Icon.TimeBack}} icon=constants.Icon.TimeBack}}
{{document/view-revision {{document/view-revision

View file

@ -2,8 +2,7 @@
<Layout::MasterToolbar> <Layout::MasterToolbar>
<div class="zone-1"> <div class="zone-1">
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{ui/ui-toolbar-button themed=true uppercase=false {{ui/ui-toolbar-button themed=true uppercase=false icon=constants.Icon.ArrowLeft label=model.document.name onClick=(action "onCancel")}}
icon=constants.Icon.ArrowLeft label=model.document.name onClick=(action "onCancel")}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
</div> </div>
<div class="zone-2" /> <div class="zone-2" />
@ -19,7 +18,7 @@
attachments=model.attachments attachments=model.attachments
onCancel=(action "onCancel") onAction=(action "onAction")}} onCancel=(action "onCancel") onAction=(action "onAction")}}
{{document/section-attachment uploadLabel="Upload Attachments" {{document/section-attachment uploadLabel=(localize 'upload_attachment')
editMode=true page=model.page document=model.document editMode=true page=model.page document=model.document
files=model.attachments files=model.attachments
onAttachmentUpload=(action "onAttachmentUpload") onAttachmentUpload=(action "onAttachmentUpload")

View file

@ -2,8 +2,7 @@
<Layout::MasterToolbar> <Layout::MasterToolbar>
<div class="zone-1"> <div class="zone-1">
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{ui/ui-toolbar-button themed=true uppercase=false {{ui/ui-toolbar-button themed=true uppercase=false icon=constants.Icon.ArrowLeft label=model.document.name onClick=(action "onBack")}}
icon=constants.Icon.ArrowLeft label=model.document.name onClick=(action "onBack")}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
</div> </div>
<div class="zone-2" /> <div class="zone-2" />
@ -14,31 +13,31 @@
<Layout::Grid::Sidebar> <Layout::Grid::Sidebar>
<div class="sidebar-content"> <div class="sidebar-content">
<div class="section"> <div class="section">
<div class="title">Options</div> <div class="title">{{localize 'options'}}</div>
<div class="list"> <div class="list">
<div class="item {{if (eq tab "general") "selected"}}" {{action "onTab" "general"}}> <div class="item {{if (eq tab "general") "selected"}}" {{action "onTab" "general"}}>
<i class={{concat "dicon " constants.Icon.Settings}} /> <i class={{concat "dicon " constants.Icon.Settings}} />
<div class="name">Content Settings</div> <div class="name">{{localize 'settings'}}</div>
</div> </div>
<div class="item {{if (eq tab "category") "selected"}}" {{action "onTab" "category"}}> <div class="item {{if (eq tab "category") "selected"}}" {{action "onTab" "category"}}>
<i class={{concat "dicon " constants.Icon.Category}} /> <i class={{concat "dicon " constants.Icon.Category}} />
<div class="name">Categories</div> <div class="name">{{localize 'categories'}}</div>
</div> </div>
<div class="item {{if (eq tab "tag") "selected"}}" {{action "onTab" "tag"}}> <div class="item {{if (eq tab "tag") "selected"}}" {{action "onTab" "tag"}}>
<i class={{concat "dicon " constants.Icon.Tag}} /> <i class={{concat "dicon " constants.Icon.Tag}} />
<div class="name">Tags</div> <div class="name">{{localize 'tags'}}</div>
</div> </div>
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}} {{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
{{#if model.permissions.documentApprove}} {{#if model.permissions.documentApprove}}
<div class="item {{if (eq tab "protection") "selected"}}" {{action "onTab" "protection"}}> <div class="item {{if (eq tab "protection") "selected"}}" {{action "onTab" "protection"}}>
<i class={{concat "dicon " constants.Icon.Locked}} /> <i class={{concat "dicon " constants.Icon.Locked}} />
<div class="name">Change Control</div> <div class="name">{{localize 'change_control'}}</div>
</div> </div>
{{/if}} {{/if}}
{{#if model.permissions.documentVersion}} {{#if model.permissions.documentVersion}}
<div class="item {{if (eq tab "versions") "selected"}}" {{action "onTab" "versions"}}> <div class="item {{if (eq tab "versions") "selected"}}" {{action "onTab" "versions"}}>
<i class={{concat "dicon " constants.Icon.Copy}} /> <i class={{concat "dicon " constants.Icon.Copy}} />
<div class="name">Versions</div> <div class="name">{{localize 'versions'}}</div>
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}

View file

@ -2,8 +2,7 @@
<Layout::MasterToolbar> <Layout::MasterToolbar>
<div class="zone-1"> <div class="zone-1">
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{ui/ui-toolbar-button themed=true uppercase=false {{ui/ui-toolbar-button themed=true uppercase=false icon=constants.Icon.ArrowLeft label=model.space.name onClick=(action "onBack")}}
icon=constants.Icon.ArrowLeft label=model.space.name onClick=(action "onBack")}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
</div> </div>
</Layout::MasterToolbar> </Layout::MasterToolbar>
@ -12,16 +11,16 @@
<Layout::Grid::Sidebar> <Layout::Grid::Sidebar>
<div class="sidebar-content"> <div class="sidebar-content">
<div class="section"> <div class="section">
<div class="title">about</div> <div class="title">{{localize 'about'}}</div>
<div class="text">Manage reusable snippets of content for this space</div> <div class="text">{{localize 'block_explain'}}</div>
</div> </div>
</div> </div>
</Layout::Grid::Sidebar> </Layout::Grid::Sidebar>
<Layout::Grid::Content> <Layout::Grid::Content>
{{layout/logo-heading {{layout/logo-heading
title="Content Blocks" title=(localize 'blocks')
desc="Content blocks provide re-usable content that can be inserted into any document" desc=(localize 'block_explain')
icon=constants.Icon.Integrations}} icon=constants.Icon.Integrations}}
{{document/block-editor document=model.document folder=model.space block=model.block {{document/block-editor document=model.document folder=model.space block=model.block

View file

@ -21,6 +21,8 @@ export default Controller.extend(NotifierMixin, {
localStorage: service('localStorage'), localStorage: service('localStorage'),
browserSvc: service('browser'), browserSvc: service('browser'),
documentSvc: service('document'), documentSvc: service('document'),
i18n: service(),
queryParams: ['category'], queryParams: ['category'],
category: '', category: '',
filteredDocs: null, filteredDocs: null,
@ -88,7 +90,7 @@ export default Controller.extend(NotifierMixin, {
this.get('documentSvc').export(spec).then((htmlExport) => { this.get('documentSvc').export(spec).then((htmlExport) => {
this.get('browserSvc').downloadFile(htmlExport, this.get('model.folder.slug') + '.html'); this.get('browserSvc').downloadFile(htmlExport, this.get('model.folder.slug') + '.html');
this.notifySuccess('Exported'); this.notifySuccess(this.i18n.localize('exported'));
}); });
}, },
@ -126,21 +128,21 @@ export default Controller.extend(NotifierMixin, {
onPin(documentId) { onPin(documentId) {
this.get('documentSvc').pin(documentId).then(() => { this.get('documentSvc').pin(documentId).then(() => {
this.notifySuccess('Pinned'); this.notifySuccess(this.i18n.localize('pinned'));
this.send('onRefresh'); this.send('onRefresh');
}); });
}, },
onUnpin(documentId) { onUnpin(documentId) {
this.get('documentSvc').unpin(documentId).then(() => { this.get('documentSvc').unpin(documentId).then(() => {
this.notifySuccess('Unpinned'); this.notifySuccess(this.i18n.localize('unpinned'));
this.send('onRefresh'); this.send('onRefresh');
}); });
}, },
onPinSequence(documentId, direction) { onPinSequence(documentId, direction) {
this.get('documentSvc').onPinSequence(documentId, direction).then(() => { this.get('documentSvc').onPinSequence(documentId, direction).then(() => {
this.notifySuccess('Moved'); this.notifySuccess(this.i18n.localize('moved'));
this.send('onRefresh'); this.send('onRefresh');
}); });
}, },

View file

@ -2,8 +2,7 @@
<Layout::MasterToolbar> <Layout::MasterToolbar>
<div class="zone-1"> <div class="zone-1">
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{ui/ui-toolbar-button themed=true uppercase=true {{ui/ui-toolbar-button themed=true uppercase=true icon=constants.Icon.ArrowLeft label=(localize 'spaces') onClick=(action "onBack")}}
icon=constants.Icon.ArrowLeft label=(localize 'spaces') onClick=(action "onBack")}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
</div> </div>
<div class="zone-2" /> <div class="zone-2" />
@ -42,7 +41,7 @@
<Layout::Grid::Content> <Layout::Grid::Content>
{{#if (eq model.folder.labelId "")}} {{#if (eq model.folder.labelId "")}}
<div class="space-label">Unclassified</div> <div class="space-label">{{localize 'label_unclassified'}}</div>
{{else}} {{else}}
<div class="space-label" style={{{model.label.bgColor}}}>{{model.label.name}}</div> <div class="space-label" style={{{model.label.bgColor}}}>{{model.label.name}}</div>
{{#if (gt model.labelSpaces.length 1)}} {{#if (gt model.labelSpaces.length 1)}}

View file

@ -2,8 +2,7 @@
<Layout::MasterToolbar> <Layout::MasterToolbar>
<div class="zone-1"> <div class="zone-1">
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{ui/ui-toolbar-button themed=true uppercase=false {{ui/ui-toolbar-button themed=true uppercase=false icon=constants.Icon.ArrowLeft label=model.folder.name onClick=(action "onBack")}}
icon=constants.Icon.ArrowLeft label=model.folder.name onClick=(action "onBack")}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
</div> </div>
</Layout::MasterToolbar> </Layout::MasterToolbar>
@ -12,34 +11,34 @@
<Layout::Grid::Sidebar> <Layout::Grid::Sidebar>
<div class="sidebar-content"> <div class="sidebar-content">
<div class="section"> <div class="section">
<div class="title">space management</div> <div class="title">{{localize 'space'}}</div>
<div class="list"> <div class="list">
<div class="item {{if (eq tab "general") "selected"}}" {{action "onTab" "general"}}> <div class="item {{if (eq tab "general") "selected"}}" {{action "onTab" "general"}}>
<i class={{concat "dicon " constants.Icon.Settings}} /> <i class={{concat "dicon " constants.Icon.Settings}} />
<div class="name">Meta</div> <div class="name">{{localize 'meta'}}</div>
</div> </div>
<div class="item {{if (eq tab "categories") "selected"}}" {{action "onTab" "categories"}}> <div class="item {{if (eq tab "categories") "selected"}}" {{action "onTab" "categories"}}>
<i class={{concat "dicon " constants.Icon.Category}} /> <i class={{concat "dicon " constants.Icon.Category}} />
<div class="name">Categories</div> <div class="name">{{localize 'categories'}}</div>
</div> </div>
<div class="item {{if (eq tab "permissions") "selected"}}" {{action "onTab" "permissions"}}> <div class="item {{if (eq tab "permissions") "selected"}}" {{action "onTab" "permissions"}}>
<i class={{concat "dicon " constants.Icon.Locked}} /> <i class={{concat "dicon " constants.Icon.Locked}} />
<div class="name">Permissions</div> <div class="name">{{localize 'permissions'}}</div>
</div> </div>
<div class="item {{if (eq tab "blocks") "selected"}}" {{action "onTab" "blocks"}}> <div class="item {{if (eq tab "blocks") "selected"}}" {{action "onTab" "blocks"}}>
<i class={{concat "dicon " constants.Icon.Blocks}} /> <i class={{concat "dicon " constants.Icon.Blocks}} />
<div class="name">Content Blocks</div> <div class="name">{{localize 'blocks'}}</div>
</div> </div>
{{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}} {{#if (eq appMeta.edition constants.Product.EnterpriseEdition)}}
<div class="item {{if (eq tab "archived") "selected"}}" {{action "onTab" "archived"}}> <div class="item {{if (eq tab "archived") "selected"}}" {{action "onTab" "archived"}}>
<i class={{concat "dicon " constants.Icon.Archive}} /> <i class={{concat "dicon " constants.Icon.Archive}} />
<div class="name">Archived Content</div> <div class="name">{{localize 'archived'}}</div>
</div> </div>
{{/if}} {{/if}}
{{#if model.permissions.spaceOwner}} {{#if model.permissions.spaceOwner}}
<div class="item {{if (eq tab "deletion") "selected"}}" {{action "onTab" "deletion"}}> <div class="item {{if (eq tab "deletion") "selected"}}" {{action "onTab" "deletion"}}>
<i class={{concat "dicon " constants.Icon.Delete}} /> <i class={{concat "dicon " constants.Icon.Delete}} />
<div class="name">Deletion</div> <div class="name">{{localize 'delete'}}</div>
</div> </div>
{{/if}} {{/if}}
</div> </div>

View file

@ -20,6 +20,7 @@ export default Route.extend(AuthenticatedRouteMixin, {
iconSvc: service('icon'), iconSvc: service('icon'),
localStorage: service(), localStorage: service(),
labelSvc: service('label'), labelSvc: service('label'),
i18n: service(),
beforeModel() { beforeModel() {
if (this.get('appMeta.setupMode')) { if (this.get('appMeta.setupMode')) {
@ -72,6 +73,6 @@ export default Route.extend(AuthenticatedRouteMixin, {
}, },
activate() { activate() {
this.get('browser').setTitle('Spaces'); this.get('browser').setTitle(this.i18n.localize('spaces'));
} }
}); });

View file

@ -6,13 +6,11 @@
{{#if (or session.isEditor session.isAdmin)}} {{#if (or session.isEditor session.isAdmin)}}
{{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}} {{#ui/ui-toolbar dark=false light=false raised=false large=false bordered=false}}
{{#if session.isEditor}} {{#if session.isEditor}}
{{ui/ui-toolbar-button icon=constants.Icon.Plus color=constants.Color.Green {{ui/ui-toolbar-button icon=constants.Icon.Plus color=constants.Color.Green label=(localize 'space') onClick=(action "onShowModal")}}
label=(localize 'space') onClick=(action "onShowModal")}}
{{ui/ui-toolbar-divider}} {{ui/ui-toolbar-divider}}
{{/if}} {{/if}}
{{#if session.isAdmin}} {{#if session.isAdmin}}
{{ui/ui-toolbar-icon icon=constants.Icon.Settings color=constants.Color.Green {{ui/ui-toolbar-icon icon=constants.Icon.Settings color=constants.Color.Green linkTo="customize"}}
linkTo="customize"}}
{{/if}} {{/if}}
{{/ui/ui-toolbar}} {{/ui/ui-toolbar}}
{{/if}} {{/if}}

View file

@ -11,14 +11,17 @@
import Route from '@ember/routing/route'; import Route from '@ember/routing/route';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
import { inject as service } from '@ember/service';
export default Route.extend(AuthenticatedRouteMixin, { export default Route.extend(AuthenticatedRouteMixin, {
i18n: service(),
beforeModel() { beforeModel() {
// this.transitionTo('folders'); // this.transitionTo('folders');
}, },
activate: function () { activate: function () {
this._super(...arguments); this._super(...arguments);
this.browser.setTitleWithoutSuffix('Aw, Snap!'); this.browser.setTitleWithoutSuffix(this.i18n.localize('not_found'));
} }
}); });

View file

@ -1,7 +1,7 @@
<div class="not-found"> <div class="not-found">
<h1>Oops! That page couldn't be found.</h1> <h1>{{localize '404'}}</h1>
<p>Maybe the content you're looking for is no longer available?</p> <p>{{localize '404_explain'}}</p>
<p>&nbsp;</p> <p>&nbsp;</p>
<a href="/">Return to Documize home page</a> <a href="/">{{localize 'spaces'}}</a>
</div> </div>
{{outlet}} {{outlet}}

View file

@ -1,17 +1,17 @@
<form {{action "forgot" on="submit"}}> <form {{action "forgot" on="submit"}}>
{{#if sayThanks}} {{#if sayThanks}}
<p class="color-green-700 margin-bottom-30">Thanks. Check your email for instructions.</p> <p class="color-green-700 margin-bottom-30">{{localize 'reset_password_next'}}.</p>
{{else}} {{else}}
<div class="form-group"> <div class="form-group">
<label for="email">Email</label> <label for="email">{{localize 'email'}}</label>
{{focus-input type="email" value=email id="email" class=(if hasEmptyEmailError "form-control is-invalid" "form-control")}} {{focus-input type="email" value=email id="email" class=(if hasEmptyEmailError "form-control is-invalid" "form-control")}}
{{#if sayError}} {{#if sayError}}
<p class="color-red-700 margin-top-10">Email not found</p> <p class="color-red-700 margin-top-10">{{localize 'not_found'}}</p>
{{/if}} {{/if}}
</div> </div>
{{ui/ui-button color=constants.Color.Yellow light=true label=(localize 'reset') onClick=(action "forgot")}} {{ui/ui-button color=constants.Color.Yellow light=true label=(localize 'reset') onClick=(action "forgot")}}
{{/if}} {{/if}}
<Ui::UiSpacer @size="400" /> <Ui::UiSpacer @size="400" />
{{#link-to "auth.login"}}Click here to sign in{{/link-to}} {{#link-to "auth.login"}}{{localize 'signin'}}{{/link-to}}
</form> </form>

View file

@ -1,18 +1,17 @@
<div class="login-form"> <div class="login-form">
<form {{action "reset" on="submit"}}> <form {{action "reset" on="submit"}}>
<div class="form-group"> <div class="form-group">
<label>New Password</label> <label>{{localize 'password_new'}}</label>
{{focus-input type="password" value=password id="newPassword" autocomplete="new-password" class=(if hasPasswordError "form-control is-invalid" "form-control")}} {{focus-input type="password" value=password id="newPassword" autocomplete="new-password" class=(if hasPasswordError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Choose a strong password</small> <small class="form-text text-muted">{{localize 'password_strong'}}</small>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>Confirm Password</label> <label>{{localize 'confirm_password'}}</label>
{{input type="password" value=passwordConfirm id="passwordConfirm" autocomplete="new-password" class=(if hasConfirmError "form-control is-invalid" "form-control")}} {{input type="password" value=passwordConfirm id="passwordConfirm" autocomplete="new-password" class=(if hasConfirmError "form-control is-invalid" "form-control")}}
<small class="form-text text-muted">Please type your new password again</small>
</div> </div>
<div class="margin-top-10 margin-bottom-20"> <div class="margin-top-10 margin-bottom-20">
{{ui/ui-button color=constants.Color.Green light=true label=(localize 'reset') onClick=(action "reset")}} {{ui/ui-button color=constants.Color.Green light=true label=(localize 'reset') onClick=(action "reset")}}
<span class="{{unless mustMatch "d-none"}} color-red-600 margin-left-20">Passwords must match</span> <span class="{{unless mustMatch "d-none"}} color-red-600 margin-left-20">{{localize 'password_match'}}</span>
</div> </div>
</form> </form>
</div> </div>

View file

@ -1,23 +1,23 @@
<div class="view-profile"> <div class="view-profile">
<div class="form-group"> <div class="form-group">
<label for="firstname">Firstname</label> <label for="firstname">{{localize 'firstname'}}</label>
{{focus-input id="firstname" type="text" value=model.firstname class=(if hasFirstnameError "form-control is-invalid" "form-control")}} {{focus-input id="firstname" type="text" value=model.firstname class=(if hasFirstnameError "form-control is-invalid" "form-control")}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="lastname">Lastname</label> <label for="lastname">{{localize 'lastname'}}</label>
{{input id="lastname" type="text" value=model.lastname class=(if hasLastnameError "form-control is-invalid" "form-control")}} {{input id="lastname" type="text" value=model.lastname class=(if hasLastnameError "form-control is-invalid" "form-control")}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="email">Email</label> <label for="email">{{localize 'email'}}</label>
{{input id="email" type="email" value=model.email class=(if hasEmailError "form-control is-invalid" "form-control")}} {{input id="email" type="email" value=model.email class=(if hasEmailError "form-control is-invalid" "form-control")}}
</div> </div>
{{#if isAuthProviderDocumize}} {{#if isAuthProviderDocumize}}
<div class="form-group"> <div class="form-group">
<label for="password">Password</label> <label for="password">{{localize 'password'}}</label>
{{input id="password" type="password" value=password.password class=(if hasPasswordError "form-control is-invalid" "form-control")}} {{input id="password" type="password" value=password.password class=(if hasPasswordError "form-control is-invalid" "form-control")}}
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="confirmPassword">Confirm Password</label> <label for="confirmPassword">{{localize 'confirm_password'}}</label>
{{input id="confirmPassword" type="password" value=password.confirmation class=(if hasConfirmPasswordError "form-control is-invalid" "form-control")}} {{input id="confirmPassword" type="password" value=password.confirmation class=(if hasConfirmPasswordError "form-control is-invalid" "form-control")}}
</div> </div>
{{/if}} {{/if}}

View file

@ -15,6 +15,7 @@
"edit": "Edit", "edit": "Edit",
"import": "Import", "import": "Import",
"export": "Export", "export": "Export",
"exported": "Exported",
"test": "Test", "test": "Test",
"error": "Error", "error": "Error",
"file": "File", "file": "File",
@ -23,8 +24,10 @@
"join": "Join", "join": "Join",
"leave": "Leave", "leave": "Leave",
"login": "Login", "login": "Login",
"logout": "logout",
"authentication": "Authentication", "authentication": "Authentication",
"move": "Move", "move": "Move",
"moved": "Moved",
"next": "Next", "next": "Next",
"ok": "OK", "ok": "OK",
"preview": "Preview", "preview": "Preview",
@ -44,7 +47,6 @@
"sort": "Sort", "sort": "Sort",
"unassigned": "Unassigned", "unassigned": "Unassigned",
"update": "Update", "update": "Update",
"version": "Version",
"viewed": "Viewed", "viewed": "Viewed",
"edited": "Edited", "edited": "Edited",
"draft": "Draft", "draft": "Draft",
@ -62,6 +64,8 @@
"lastname": "Lastname", "lastname": "Lastname",
"email": "Email", "email": "Email",
"password": "Password", "password": "Password",
"password_new": "New Password",
"username": "Username",
"password_confirm": "Confirm Password", "password_confirm": "Confirm Password",
"encryption": "Encryption", "encryption": "Encryption",
"notice": "Notice", "notice": "Notice",
@ -69,18 +73,34 @@
"restore": "Restore", "restore": "Restore",
"completed": "Completed", "completed": "Completed",
"please_wait": "Please wait..", "please_wait": "Please wait..",
"filter": "Filter", "filter": "Filter",
"all": "All", "all": "All",
"not_found": "Not found",
"expand_collapse": "Expand/collapse",
"options": "Options",
"settings": "Settings",
"about": "About",
"meta": "Meta",
"permissions": "Permissions",
"public": "Public", "public": "Public",
"protected": "Protected", "protected": "Protected",
"personal": "Personal", "personal": "Personal",
"label": "Label", "label": "Label",
"labels": "Labels", "labels": "Labels",
"labels_none": "No labels", "labels_none": "No labels",
"label_unclassified": "Unclassified",
"space": "Space", "space": "Space",
"spaces": "Spaces", "spaces": "Spaces",
"categories": "Categories",
"tags": "Tags",
"revisions": "revisions",
"versions": "Versions",
"version": "Version",
"change_control": "Change Control",
"pinned": "Pinned",
"unpinned": "Unpinned",
"blocks": "Content Blocks",
"space_new": "New Space", "space_new": "New Space",
"space_name": "Space name", "space_name": "Space name",
@ -91,7 +111,6 @@
"space_copy_template": "Copy templates", "space_copy_template": "Copy templates",
"space_copy_permission": "Copy permissions", "space_copy_permission": "Copy permissions",
"space_copy_document": "Copy documents", "space_copy_document": "Copy documents",
"protection_none": "Changes permitted without approval", "protection_none": "Changes permitted without approval",
"protection_lock": "Locked, changes not permitted", "protection_lock": "Locked, changes not permitted",
"protection_review": "Changes require approval before publication", "protection_review": "Changes require approval before publication",
@ -99,7 +118,24 @@
"approval_majority": "Majority approval required from approvers", "approval_majority": "Majority approval required from approvers",
"approval_unanimous": "Unanimous approval required from all approvers", "approval_unanimous": "Unanimous approval required from all approvers",
"template_published": "Published Template", "template_published": "Published Template",
"block_explain": "Content blocks provide re-usable content that can be inserted into any document",
"block_published": "Published Block", "block_published": "Published Block",
"upload_attachment": "Upload Attachments",
"content_revisions": "Content Revisions",
"content_revisions_explain": "Review previous content changes and roll back edits",
"login_cas": "Authenticating with CAS...",
"login_cass_error": "CAS authentication failure",
"login_keycloak": "Authenticating with Keycloak...",
"login_keycloak_error": "Keycloak authentication failure",
"login_invalid": "Invalid credentials",
"forgot_password": "Forgot your password?",
"reset_password": "Reset Password",
"reset_password_next": "Thanks. Check your email for instructions.",
"password_strong": "Choose a strong password",
"password_match": "Passwords must match",
"welcome": "Welcome to Documize",
"welcome_explain": "Let's set up your account and get you started",
"backup_explain1": "Documize Community is a multi-tenanted application enabling both 'tech.mycompany.com' and 'sales.mycompany.com' to run using the same executable/database. As a Documize Community Global Administrator, you will be performing a complete system-wide backup across all tenants. The Documize Community Tenant Administrator can login to perform a tenant-level backup (e.g. marketing.mycompany.com).", "backup_explain1": "Documize Community is a multi-tenanted application enabling both 'tech.mycompany.com' and 'sales.mycompany.com' to run using the same executable/database. As a Documize Community Global Administrator, you will be performing a complete system-wide backup across all tenants. The Documize Community Tenant Administrator can login to perform a tenant-level backup (e.g. marketing.mycompany.com).",
"backup_explain2": "Documize Community is a multi-tenanted application enabling both 'tech.mycompany.com' and 'sales.mycompany.com' to run using the same executable/database. A Documize Community Global Administrator, you will be performing a complete system-wide backup across all tenants. As a Documize Community Tenant Administrator you can perform a tenant-level backup (e.g. marketing.mycompany.com).", "backup_explain2": "Documize Community is a multi-tenanted application enabling both 'tech.mycompany.com' and 'sales.mycompany.com' to run using the same executable/database. A Documize Community Global Administrator, you will be performing a complete system-wide backup across all tenants. As a Documize Community Tenant Administrator you can perform a tenant-level backup (e.g. marketing.mycompany.com).",
@ -204,7 +240,6 @@
"user_delete_confirm": "Are you sure you want to delete user {1}?", "user_delete_confirm": "Are you sure you want to delete user {1}?",
"user_selected_delete_confirm": "Are you sure you want to delete selected users?", "user_selected_delete_confirm": "Are you sure you want to delete selected users?",
"user_delete": "Delete User", "user_delete": "Delete User",
"permissions": "Permissions",
"permission_spaces": "Spaces", "permission_spaces": "Spaces",
"permission_spaces_explain": "Can add spaces, both personal and shared with others", "permission_spaces_explain": "Can add spaces, both personal and shared with others",
"permission_visible": "Visible", "permission_visible": "Visible",
@ -215,7 +250,6 @@
"permission_analytics_explain": "Can view analytical reports", "permission_analytics_explain": "Can view analytical reports",
"permission_active": "Active", "permission_active": "Active",
"permission_active_explain": "Can login and use Documize Community", "permission_active_explain": "Can login and use Documize Community",
"auth_role_space": "Can Create Spaces", "auth_role_space": "Can Create Spaces",
"auth_disable_logout": "Disable Logout", "auth_disable_logout": "Disable Logout",
"auth_dual_login": "Dual Login", "auth_dual_login": "Dual Login",
@ -272,7 +306,6 @@
"auth_cas_url_explain": "e.g. http://localhost:8888/auth", "auth_cas_url_explain": "e.g. http://localhost:8888/auth",
"auth_cas_back_url": "Documize CAS URL", "auth_cas_back_url": "Documize CAS URL",
"auth_cas_back_url_explain": "e.g. http://Documize-URL/auth/cas", "auth_cas_back_url_explain": "e.g. http://Documize-URL/auth/cas",
"administration": "Administration", "administration": "Administration",
"admin_general": "General", "admin_general": "General",
"admin_general_explain": "Options to help you customize Documize Community", "admin_general_explain": "Options to help you customize Documize Community",
@ -294,6 +327,8 @@
"admin_labels_explain": "Group and navigate spaces with visual labels", "admin_labels_explain": "Group and navigate spaces with visual labels",
"admin_search_explain": "Rebuild the search index", "admin_search_explain": "Rebuild the search index",
"404": "Oops! That page couldn't be found.",
"404_explain": "Maybe the content you're looking for is no longer available?",
"close_account": "Please close my Documize account.", "close_account": "Please close my Documize account.",
"third_party": "Documize Community utilizes open source libraries and components from third parties" "third_party": "Documize Community utilizes open source libraries and components from third parties"
} }