@crombolo/backoffice-host 0.13.1 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/login.js +89 -2
- package/package.json +2 -2
- package/plugin/assistant/umbraco-package.json +1 -1
- package/plugin/branding/branding.js +9 -14
- package/plugin/branding/bundle-builder-labels.js +30 -1
- package/plugin/branding/localization-en.js +8 -0
- package/plugin/branding/sign-in.js +31 -0
- package/plugin/branding/theme.css +2 -0
- package/plugin/bundles-created-overview.js +31 -18
- package/plugin/bundles-installed.js +127 -61
- package/plugin/bundles-marketplace.js +1 -1
- package/plugin/changes-dashboard.js +8 -1
- package/plugin/download.js +19 -0
- package/plugin/form-picker.js +1 -1
- package/plugin/forms-client.js +5 -0
- package/plugin/forms-entries.js +30 -16
- package/plugin/forms-overview.js +55 -33
- package/plugin/localizations/ar.js +3 -39
- package/plugin/localizations/bs.js +3 -29
- package/plugin/localizations/cs.js +3 -24
- package/plugin/localizations/cy.js +3 -32
- package/plugin/localizations/da.js +3 -41
- package/plugin/localizations/de.js +3 -27
- package/plugin/localizations/es.js +3 -19
- package/plugin/localizations/fr.js +3 -26
- package/plugin/localizations/hr.js +3 -29
- package/plugin/localizations/it.js +3 -29
- package/plugin/localizations/ja.js +3 -11
- package/plugin/localizations/ko.js +3 -11
- package/plugin/localizations/nb.js +3 -18
- package/plugin/localizations/nl.js +3 -29
- package/plugin/localizations/pl.js +3 -11
- package/plugin/localizations/pt-br.js +0 -10
- package/plugin/localizations/pt.js +3 -39
- package/plugin/localizations/ru.js +3 -9
- package/plugin/localizations/sv.js +3 -20
- package/plugin/localizations/tr.js +3 -26
- package/plugin/localizations/uk.js +3 -9
- package/plugin/localizations/umbraco-package.json +22 -2
- package/plugin/localizations/vi.js +3 -42
- package/plugin/localizations/zh-tw.js +0 -6
- package/plugin/localizations/zh.js +0 -6
- package/plugin/seo/umbraco-package.json +1 -1
- package/plugin/sign-in/entry.js +20 -0
- package/plugin/sign-in/sign-in-dialog.js +127 -0
- package/plugin/sign-in/umbraco-package.json +15 -0
- package/plugin/two-factor-setup.js +147 -0
- package/plugin/umbraco-package.json +30 -30
- package/plugin/welcome-dashboard.js +2 -5
- package/plugin/workflow-designer.js +298 -187
- package/plugin/workflow-requests.js +19 -6
- package/src/shell.ts +4 -1
- package/plugin/branding/sysinfo.js +0 -89
|
@@ -141,7 +141,7 @@ export default class CromboloBundlesMarketplaceElement extends UmbLitElement {
|
|
|
141
141
|
${
|
|
142
142
|
this._installs
|
|
143
143
|
? nothing
|
|
144
|
-
: html`<div id="notice">
|
|
144
|
+
: html`<div id="notice">Bundles are added to this site by a deploy, so that every server has them: add one to the site's <code>package.json</code> and deploy it.</div>`
|
|
145
145
|
}
|
|
146
146
|
${
|
|
147
147
|
this._items.length === 0 && !this._error
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* kind allows, and the import runs once nothing is outstanding.
|
|
16
16
|
*/
|
|
17
17
|
import { css, html, LitElement, nothing } from '@umbraco-cms/backoffice/external/lit'
|
|
18
|
+
import { downloadFile } from './download.js'
|
|
18
19
|
import { answersUrl, fetchReport, transferAction } from './report-client.js'
|
|
19
20
|
|
|
20
21
|
const KIND_LABEL = { blocking: 'Blocking', person: 'Needs a person', auto: 'Automatic' }
|
|
@@ -351,7 +352,13 @@ export default class CromboloChangesDashboardElement extends LitElement {
|
|
|
351
352
|
})}
|
|
352
353
|
>Import</uui-button>
|
|
353
354
|
<uui-button look="secondary" ?disabled=${busy} label="Check again" @click=${() => this.#act(pending.bundleId, 'check')}>Check again</uui-button>
|
|
354
|
-
<uui-button look="secondary"
|
|
355
|
+
<uui-button look="secondary" label="Download answers" @click=${() =>
|
|
356
|
+
downloadFile(answersUrl(pending.bundleId), 'resolutions.json').catch((error) => {
|
|
357
|
+
this._outcome = {
|
|
358
|
+
...this._outcome,
|
|
359
|
+
[pending.bundleId]: { ok: false, message: error.message },
|
|
360
|
+
}
|
|
361
|
+
})}>Download answers</uui-button>
|
|
355
362
|
</div>
|
|
356
363
|
${outcome ? this.#renderOutcome(pending, outcome) : nothing}
|
|
357
364
|
</div>`
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Saves a file the server serves, for a button that downloads one. Fetched
|
|
3
|
+
* rather than linked: the backoffice router takes over every link click, a
|
|
4
|
+
* `download` one included, and answers an address it has no page for with
|
|
5
|
+
* "route could not be found".
|
|
6
|
+
*/
|
|
7
|
+
export async function downloadFile(url, fallbackName) {
|
|
8
|
+
const response = await fetch(url, { credentials: 'include' })
|
|
9
|
+
if (response.status === 403) throw new Error('You do not have permission for that.')
|
|
10
|
+
if (!response.ok) throw new Error(`The download responded ${response.status}.`)
|
|
11
|
+
const named = /filename="?([^";]+)"?/.exec(response.headers.get('content-disposition') ?? '')
|
|
12
|
+
const objectUrl = URL.createObjectURL(await response.blob())
|
|
13
|
+
// Never added to the page, so its click reaches no router.
|
|
14
|
+
const link = document.createElement('a')
|
|
15
|
+
link.href = objectUrl
|
|
16
|
+
link.download = named?.[1] ?? fallbackName
|
|
17
|
+
link.click()
|
|
18
|
+
setTimeout(() => URL.revokeObjectURL(objectUrl), 0)
|
|
19
|
+
}
|
package/plugin/form-picker.js
CHANGED
|
@@ -67,7 +67,7 @@ export default class CromboloFormPickerElement extends UmbLitElement {
|
|
|
67
67
|
if (this._items.length === 0)
|
|
68
68
|
return html`
|
|
69
69
|
<p class="empty">
|
|
70
|
-
This site has no forms. Add one
|
|
70
|
+
This site has no forms yet. Add one in the Forms section.
|
|
71
71
|
</p>
|
|
72
72
|
`
|
|
73
73
|
return html`
|
package/plugin/forms-client.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Reads and drives the Forms endpoints the server keeps at
|
|
3
3
|
* <backoffice>/crombolo/api/forms/*. The session cookie carries the auth.
|
|
4
4
|
*/
|
|
5
|
+
import { downloadFile } from './download.js'
|
|
6
|
+
|
|
5
7
|
const base = () => {
|
|
6
8
|
const href = document.querySelector('base')?.getAttribute('href') ?? '/umbraco/'
|
|
7
9
|
return `${href.replace(/\/$/, '')}/crombolo/api/forms`
|
|
@@ -57,3 +59,6 @@ export const deleteEntry = (id) => call(`/entries/${encodeURIComponent(id)}`, {
|
|
|
57
59
|
|
|
58
60
|
/** The CSV is a download, so it is a link rather than a fetch. */
|
|
59
61
|
export const entriesCsvUrl = (key) => `${base()}/${encodeURIComponent(key)}/entries.csv`
|
|
62
|
+
|
|
63
|
+
/** Downloads a form's entries as CSV. */
|
|
64
|
+
export const downloadEntriesCsv = (key) => downloadFile(entriesCsvUrl(key), 'entries.csv')
|
package/plugin/forms-entries.js
CHANGED
|
@@ -12,7 +12,7 @@ import { css, html, nothing, repeat } from '@umbraco-cms/backoffice/external/lit
|
|
|
12
12
|
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'
|
|
13
13
|
import {
|
|
14
14
|
deleteEntry,
|
|
15
|
-
|
|
15
|
+
downloadEntriesCsv,
|
|
16
16
|
listEntries,
|
|
17
17
|
listForms,
|
|
18
18
|
setEntryState,
|
|
@@ -102,28 +102,31 @@ export default class CromboloFormsEntriesElement extends UmbLitElement {
|
|
|
102
102
|
return html`
|
|
103
103
|
<uui-box headline="Entries">
|
|
104
104
|
<div class="filters">
|
|
105
|
-
<select
|
|
105
|
+
<uui-select
|
|
106
|
+
label="Form"
|
|
107
|
+
.options=${this._forms.map((form) => ({
|
|
108
|
+
name: form.name,
|
|
109
|
+
value: form.key,
|
|
110
|
+
selected: form.key === this._selected,
|
|
111
|
+
}))}
|
|
106
112
|
@change=${(event) => {
|
|
107
113
|
this._selected = event.target.value
|
|
108
114
|
this.#load()
|
|
109
115
|
}}
|
|
110
|
-
>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
></uui-select>
|
|
117
|
+
<uui-select
|
|
118
|
+
label="State"
|
|
119
|
+
.options=${[
|
|
120
|
+
['', 'Any state'],
|
|
121
|
+
['submitted', 'Submitted'],
|
|
122
|
+
['approved', 'Approved'],
|
|
123
|
+
['rejected', 'Rejected'],
|
|
124
|
+
].map(([value, name]) => ({ name, value, selected: value === (this._state ?? '') }))}
|
|
117
125
|
@change=${(event) => {
|
|
118
126
|
this._state = event.target.value
|
|
119
127
|
this.#load()
|
|
120
128
|
}}
|
|
121
|
-
>
|
|
122
|
-
<option value="">Any state</option>
|
|
123
|
-
<option value="submitted">Submitted</option>
|
|
124
|
-
<option value="approved">Approved</option>
|
|
125
|
-
<option value="rejected">Rejected</option>
|
|
126
|
-
</select>
|
|
129
|
+
></uui-select>
|
|
127
130
|
<uui-input
|
|
128
131
|
placeholder="Search the answers"
|
|
129
132
|
.value=${this._search}
|
|
@@ -140,7 +143,18 @@ export default class CromboloFormsEntriesElement extends UmbLitElement {
|
|
|
140
143
|
this.#load()
|
|
141
144
|
}}
|
|
142
145
|
></uui-toggle>
|
|
143
|
-
<
|
|
146
|
+
<uui-button
|
|
147
|
+
class="csv"
|
|
148
|
+
look="secondary"
|
|
149
|
+
label="Export CSV"
|
|
150
|
+
@click=${async () => {
|
|
151
|
+
try {
|
|
152
|
+
await downloadEntriesCsv(this._selected)
|
|
153
|
+
} catch (error) {
|
|
154
|
+
this._notice = error.message
|
|
155
|
+
}
|
|
156
|
+
}}
|
|
157
|
+
></uui-button>
|
|
144
158
|
</div>
|
|
145
159
|
|
|
146
160
|
${this._notice ? html`<p class="notice" role="alert">${this._notice}</p>` : nothing}
|
package/plugin/forms-overview.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import '@umbraco-cms/backoffice/document'
|
|
15
15
|
import { css, html, nothing, repeat } from '@umbraco-cms/backoffice/external/lit'
|
|
16
16
|
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'
|
|
17
|
+
import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'
|
|
17
18
|
import {
|
|
18
19
|
deleteForm,
|
|
19
20
|
listForms,
|
|
@@ -61,8 +62,13 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
61
62
|
_types: { state: true },
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
#notifications
|
|
66
|
+
|
|
64
67
|
constructor() {
|
|
65
68
|
super()
|
|
69
|
+
this.consumeContext(UMB_NOTIFICATION_CONTEXT, (context) => {
|
|
70
|
+
this.#notifications = context
|
|
71
|
+
})
|
|
66
72
|
this._forms = undefined
|
|
67
73
|
this._editing = undefined
|
|
68
74
|
this._problems = []
|
|
@@ -490,16 +496,19 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
490
496
|
try {
|
|
491
497
|
const result = await saveForm(this._editing)
|
|
492
498
|
if (result.ok) {
|
|
493
|
-
|
|
499
|
+
// The green toast every workspace shows on a save.
|
|
500
|
+
this.#notifications?.peek('positive', { data: { message: 'Form saved' } })
|
|
494
501
|
this._editing = undefined
|
|
495
502
|
await this.#load()
|
|
496
503
|
} else {
|
|
497
504
|
this._problems = result.body.problems ?? []
|
|
498
|
-
if (result.body.status === 'readOnly')
|
|
499
|
-
this.
|
|
505
|
+
if (result.body.status === 'readOnly' && this._problems.length === 0)
|
|
506
|
+
this._problems = [
|
|
507
|
+
{ path: '', message: 'The schema directory is read-only on this node.' },
|
|
508
|
+
]
|
|
500
509
|
}
|
|
501
510
|
} catch (error) {
|
|
502
|
-
this.
|
|
511
|
+
this._problems = [{ path: '', message: error.message }]
|
|
503
512
|
} finally {
|
|
504
513
|
this._busy = false
|
|
505
514
|
}
|
|
@@ -517,20 +526,19 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
517
526
|
}
|
|
518
527
|
|
|
519
528
|
render() {
|
|
520
|
-
if (this._forms === undefined) return html`<uui-loader></uui-loader>`
|
|
521
|
-
return
|
|
529
|
+
if (this._forms === undefined) return html`<div class="list"><uui-loader></uui-loader></div>`
|
|
530
|
+
if (this._editing) return this.#editor()
|
|
531
|
+
return html`<div class="list">
|
|
522
532
|
${this._notice ? html`<uui-box><p>${this._notice}</p></uui-box>` : nothing}
|
|
523
|
-
${this
|
|
524
|
-
|
|
533
|
+
${this.#list()}
|
|
534
|
+
</div>`
|
|
525
535
|
}
|
|
526
536
|
|
|
527
537
|
#list() {
|
|
538
|
+
// The create button above the list, as the workflows list has it.
|
|
528
539
|
return html`
|
|
540
|
+
<uui-button class="create" color="default" look="outline" label="Create" @click=${() => this.#new()}></uui-button>
|
|
529
541
|
<uui-box headline="Forms">
|
|
530
|
-
<p>
|
|
531
|
-
A form is a file in <code>schema/forms/</code>. Editing one here writes that
|
|
532
|
-
file, so the change can be reviewed in a pull request like any other type.
|
|
533
|
-
</p>
|
|
534
542
|
${
|
|
535
543
|
this._forms.length === 0
|
|
536
544
|
? html`<p>There are no forms yet.</p>`
|
|
@@ -562,9 +570,6 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
562
570
|
</uui-table>
|
|
563
571
|
`
|
|
564
572
|
}
|
|
565
|
-
<div class="actions">
|
|
566
|
-
<uui-button look="primary" label="Add a form" @click=${() => this.#new()}></uui-button>
|
|
567
|
-
</div>
|
|
568
573
|
</uui-box>
|
|
569
574
|
`
|
|
570
575
|
}
|
|
@@ -584,18 +589,14 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
584
589
|
></uui-input>
|
|
585
590
|
</uui-form-layout-item>
|
|
586
591
|
`
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
</ul>
|
|
596
|
-
</div>`
|
|
597
|
-
: nothing
|
|
598
|
-
}
|
|
592
|
+
const leave = () => {
|
|
593
|
+
this._editing = undefined
|
|
594
|
+
this._problems = []
|
|
595
|
+
}
|
|
596
|
+
// Umbraco's own layout, as the workflow designer has it: Save bottom right,
|
|
597
|
+
// and what stopped a save listed just above it.
|
|
598
|
+
return html`<umb-body-layout headline=${form.alias ? `Form: ${form.name || form.alias}` : 'A new form'}>
|
|
599
|
+
<uui-box>
|
|
599
600
|
${text('name', 'Name')}
|
|
600
601
|
${text('alias', 'Alias', 'Letters and numbers, starting with a letter. The file is named after it.')}
|
|
601
602
|
${text('messageOnSubmit', 'Message on submit')}
|
|
@@ -633,14 +634,26 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
633
634
|
${this._editing.pages.map((page, p) => this.#page(page, p))}
|
|
634
635
|
<div class="actions">
|
|
635
636
|
<uui-button look="secondary" label="Add a page" @click=${() => this.#apply(addPage)}></uui-button>
|
|
636
|
-
<uui-button look="primary" label="Save" ?disabled=${this._busy} @click=${() => this.#save()}></uui-button>
|
|
637
|
-
<uui-button look="secondary" label="Cancel" @click=${() => {
|
|
638
|
-
this._editing = undefined
|
|
639
|
-
this._problems = []
|
|
640
|
-
}}></uui-button>
|
|
641
637
|
</div>
|
|
642
638
|
</uui-box>
|
|
643
|
-
|
|
639
|
+
${
|
|
640
|
+
this._problems.length > 0
|
|
641
|
+
? html`<div class="problems" role="alert">
|
|
642
|
+
<p>This form was not saved:</p>
|
|
643
|
+
<ul>
|
|
644
|
+
${this._problems.map((problem) => html`<li>${problem.path ? html`<code>${problem.path}</code> ` : nothing}${problem.message}</li>`)}
|
|
645
|
+
</ul>
|
|
646
|
+
</div>`
|
|
647
|
+
: nothing
|
|
648
|
+
}
|
|
649
|
+
${
|
|
650
|
+
this._problems.length > 0
|
|
651
|
+
? html`<span slot="footer-info" class="not-saved">Not saved: ${this._problems.length} problem(s), listed above</span>`
|
|
652
|
+
: nothing
|
|
653
|
+
}
|
|
654
|
+
<uui-button slot="actions" look="secondary" label="Back to the list" @click=${leave}>Back to the list</uui-button>
|
|
655
|
+
<uui-button slot="actions" look="primary" color="positive" label="Save" ?disabled=${this._busy} @click=${() => this.#save()}>Save</uui-button>
|
|
656
|
+
</umb-body-layout>`
|
|
644
657
|
}
|
|
645
658
|
|
|
646
659
|
static styles = css`
|
|
@@ -701,8 +714,17 @@ export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
|
701
714
|
}
|
|
702
715
|
:host {
|
|
703
716
|
display: block;
|
|
717
|
+
height: 100%;
|
|
718
|
+
}
|
|
719
|
+
.list {
|
|
704
720
|
padding: var(--uui-size-layout-1, 24px);
|
|
705
721
|
}
|
|
722
|
+
.create {
|
|
723
|
+
margin-bottom: var(--uui-size-space-5, 18px);
|
|
724
|
+
}
|
|
725
|
+
.not-saved {
|
|
726
|
+
color: var(--uui-color-danger, #d42054);
|
|
727
|
+
}
|
|
706
728
|
p,
|
|
707
729
|
ul {
|
|
708
730
|
max-width: 70ch;
|
|
@@ -3,45 +3,6 @@
|
|
|
3
3
|
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
4
|
// Umbraco says "document type".
|
|
5
5
|
export default {
|
|
6
|
-
"login": {
|
|
7
|
-
"instruction": "سجل الدخول إلى Crombolo"
|
|
8
|
-
},
|
|
9
|
-
"user": {
|
|
10
|
-
"changePasswordDescription": "يمكنك تغيير كلمة مرورك للوصول إلى واجهة Crombolo من خلال ملء النموذج أدناه والنقر على زر 'تغيير كلمة المرور'",
|
|
11
|
-
"createUserHelp": "قم بإنشاء مستخدمين جدد لمنحهم الوصول إلى Crombolo. عند إنشاء مستخدم جديد، سيتم توليد كلمة مرور يمكنك مشاركتها مع المستخدم.",
|
|
12
|
-
"inviteUserHelp": "ادعُ مستخدمين جدد لمنحهم الوصول إلى Crombolo. سيتم إرسال بريد إلكتروني دعوة إلى المستخدم مع معلومات حول كيفية تسجيل الدخول إلى Crombolo. تدوم الدعوات لمدة 72 ساعة.",
|
|
13
|
-
"noConsole": "تعطيل الوصول إلى Crombolo",
|
|
14
|
-
"userCreatedSuccessHelp": "تم إنشاء المستخدم الجديد بنجاح. لتسجيل الدخول إلى Crombolo استخدم كلمة المرور أدناه.",
|
|
15
|
-
"userInvitedSuccessHelp": "تم إرسال دعوة إلى المستخدم الجديد مع تفاصيل حول كيفية تسجيل الدخول إلى Crombolo.",
|
|
16
|
-
"userinviteWelcomeMessage": "مرحباً بك في Crombolo! في دقيقة واحدة فقط ستكون جاهزاً، نحن فقط بحاجة منك لتعيين كلمة مرور وإضافة صورة لملفك الشخصي.",
|
|
17
|
-
"userinviteExpiredMessage": "مرحباً بك في Crombolo! للأسف انتهت صلاحية دعوتك. يرجى الاتصال بالمسؤول الخاص بك واطلب منهم إعادة إرسالها.",
|
|
18
|
-
"documentType": "نوع المحتوى"
|
|
19
|
-
},
|
|
20
|
-
"general": {
|
|
21
|
-
"umbracoInfo": "معلومات Crombolo"
|
|
22
|
-
},
|
|
23
|
-
"visuallyHiddenTexts": {
|
|
24
|
-
"searchOverlayTitle": "بحث في مكتب Crombolo الخلفي"
|
|
25
|
-
},
|
|
26
|
-
"languages": {
|
|
27
|
-
"defaultLanguageHelp": "يمكن لموقع Crombolo أن يحتوي فقط على لغة افتراضية واحدة."
|
|
28
|
-
},
|
|
29
|
-
"paste": {
|
|
30
|
-
"errorMessage": "النص الذي تحاول لصقه يحتوي على أحرف خاصة أو تنسيق. قد يكون ذلك بسبب نسخ النص من Microsoft Word. يمكن لـ Crombolo إزالة الأحرف الخاصة أو التنسيق تلقائيًا، بحيث يكون المحتوى الملصق أكثر ملاءمة للويب.\n"
|
|
31
|
-
},
|
|
32
|
-
"dashboard": {
|
|
33
|
-
"nothinghappens": "إذا لم يفتح Crombolo، قد تحتاج إلى السماح بالنوافذ المنبثقة من هذا الموقع"
|
|
34
|
-
},
|
|
35
|
-
"logViewer": {
|
|
36
|
-
"searchUmbracoSource": "البحث في مصدر Crombolo",
|
|
37
|
-
"searchWithinUmbracoSourceCodeOnGithub": "البحث ضمن كود مصدر Crombolo على Github",
|
|
38
|
-
"searchUmbracoIssues": "البحث في قضايا Crombolo",
|
|
39
|
-
"searchUmbracoIssuesOnGithub": "البحث في قضايا Crombolo على Github"
|
|
40
|
-
},
|
|
41
|
-
"defaultdialogs": {
|
|
42
|
-
"linkYourConfirm": "أنت على وشك ربط حسابك في Crombolo وحسابك في {0} وسيتم توجيهك إلى {0} للتأكيد.",
|
|
43
|
-
"unLinkYourConfirm": "أنت على وشك إلغاء ربط حسابك في Crombolo وحسابك في {0} وسيتم تسجيل خروجك."
|
|
44
|
-
},
|
|
45
6
|
"actions": {
|
|
46
7
|
"changeDocType": "تغيير نوع المحتوى",
|
|
47
8
|
"exportDocumentType": "تصدير نوع المحتوى",
|
|
@@ -87,6 +48,9 @@ export default {
|
|
|
87
48
|
"treeHeaders": {
|
|
88
49
|
"documentTypes": "أنواع المحتوى"
|
|
89
50
|
},
|
|
51
|
+
"user": {
|
|
52
|
+
"documentType": "نوع المحتوى"
|
|
53
|
+
},
|
|
90
54
|
"references": {
|
|
91
55
|
"labelUsedByDocumentTypes": "مستشهد به من قبل أنواع المحتوى التالية"
|
|
92
56
|
},
|
|
@@ -3,35 +3,6 @@
|
|
|
3
3
|
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
4
|
// Umbraco says "document type".
|
|
5
5
|
export default {
|
|
6
|
-
"user": {
|
|
7
|
-
"changePasswordDescription": "Možete promijeniti lozinku za pristup Crombolo backofficeu popunjavanjem\n izađite iz donjeg obrasca i kliknite na dugme 'Promijeni lozinku'\n ",
|
|
8
|
-
"createUserHelp": "Kreirajte nove korisnike da im date pristup Crombolo. Kada se novom korisniku kreira lozinka\n će biti generisano koje možete podijeliti s korisnikom.\n ",
|
|
9
|
-
"inviteUserHelp": "Pozovite nove korisnike da im daju pristup Crombolo. E-mail sa pozivom će biti poslan na\n korisnik s informacijama o tome kako se prijaviti na Crombolo. Pozivnice traju 72 sata.\n ",
|
|
10
|
-
"noConsole": "Onemogućite pristup Crombolo-u",
|
|
11
|
-
"userCreatedSuccessHelp": "Novi korisnik je uspješno kreiran. Za prijavu na Crombolo koristite\n lozinka ispod.\n ",
|
|
12
|
-
"userInvitedSuccessHelp": "Novom korisniku je poslana pozivnica s detaljima o tome kako se prijaviti\n Crombolo.\n ",
|
|
13
|
-
"userinviteWelcomeMessage": "Pozdrav i dobrodošli u Crombolo! Za samo 1 minut možete krenuti, mi samo trebate postaviti lozinku.",
|
|
14
|
-
"userinviteExpiredMessage": "Dobrodošli u Crombolo! Nažalost, vaš poziv je istekao. Molimo kontaktirajte svoju\n administratora i zamolite ih da ga ponovo pošalju.\n ",
|
|
15
|
-
"documentType": "Tip sadržaja"
|
|
16
|
-
},
|
|
17
|
-
"general": {
|
|
18
|
-
"umbracoInfo": "Crombolo info"
|
|
19
|
-
},
|
|
20
|
-
"languages": {
|
|
21
|
-
"defaultLanguageHelp": "Crombolo stranica može imati samo jedan zadani jezik."
|
|
22
|
-
},
|
|
23
|
-
"paste": {
|
|
24
|
-
"errorMessage": "Tekst koji pokušavate zalijepiti sadrži posebne znakove ili formatiranje. Ovo bi moglo biti\n uzrokovano kopiranjem teksta iz programa Microsoft Word. Crombolo može automatski ukloniti posebne znakove ili formatiranje, tako da\n zalijepljeni sadržaj će biti prikladniji za web.\n "
|
|
25
|
-
},
|
|
26
|
-
"dashboard": {
|
|
27
|
-
"nothinghappens": "Ako se Crombolo ne otvara, možda ćete morati dozvoliti iskačuće prozore sa ove stranice"
|
|
28
|
-
},
|
|
29
|
-
"logViewer": {
|
|
30
|
-
"searchUmbracoSource": "Pretraži Crombolo Source",
|
|
31
|
-
"searchWithinUmbracoSourceCodeOnGithub": "Pretraži Crombolo source code on Github-u",
|
|
32
|
-
"searchUmbracoIssues": "Pretraži Crombolo Issues",
|
|
33
|
-
"searchUmbracoIssuesOnGithub": "Pretraži Crombolo Issues na Github-u"
|
|
34
|
-
},
|
|
35
6
|
"actions": {
|
|
36
7
|
"changeDocType": "Promijeni Tip Sadržaja",
|
|
37
8
|
"exportDocumentType": "Izvezi Tip Sadržaja",
|
|
@@ -76,6 +47,9 @@ export default {
|
|
|
76
47
|
"treeHeaders": {
|
|
77
48
|
"documentTypes": "Tipovi sadržaja"
|
|
78
49
|
},
|
|
50
|
+
"user": {
|
|
51
|
+
"documentType": "Tip sadržaja"
|
|
52
|
+
},
|
|
79
53
|
"references": {
|
|
80
54
|
"labelUsedByDocumentTypes": "Koristi se u tipovima sadržaja"
|
|
81
55
|
},
|
|
@@ -3,30 +3,6 @@
|
|
|
3
3
|
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
4
|
// Umbraco says "document type".
|
|
5
5
|
export default {
|
|
6
|
-
"user": {
|
|
7
|
-
"createUserHelp": "Vytvořte nové uživatele a udělte mu přístup do Crombolo. Po vytvoření nového uživatele bude vygenerováno heslo, které s ním můžete sdílet.",
|
|
8
|
-
"inviteUserHelp": "Pozvěte nové uživatele, a poskytněte jim přístup do Crombolo. Uživatelům bude zaslán e-mail s pozvánkou a s informacemi o tom, jak se přihlásit do Crombolo. Pozvánky mají platnost 72 hodin.",
|
|
9
|
-
"userCreatedSuccessHelp": "Nový uživatel byl úspěšně vytvořen. Pro přihlášení do Crombolo použijte heslo níže.",
|
|
10
|
-
"userInvitedSuccessHelp": "Novému uživateli byla zaslána pozvánka s informacemi, jak se přihlásit do Crombolo.",
|
|
11
|
-
"userinviteWelcomeMessage": "Dobrý den, vítejte v Crombolo! Za pouhou 1 minutu budete moci používat Crombolo. Jenom od vás potřebujeme, abyste si nastavili heslo.",
|
|
12
|
-
"userinviteExpiredMessage": "Vítejte v Crombolo! Vaše pozvánka bohužel vypršela. Obraťte se na svého správce a požádejte jej, aby jí znovu odeslal.",
|
|
13
|
-
"documentType": "Typ obsahu"
|
|
14
|
-
},
|
|
15
|
-
"languages": {
|
|
16
|
-
"defaultLanguageHelp": "Web Crombolo může mít nastaven pouze jeden výchozí jazyk."
|
|
17
|
-
},
|
|
18
|
-
"paste": {
|
|
19
|
-
"errorMessage": "Text, který chcete vložit, obsahuje speciální znaky nebo formatování. Toto může být způsobeno kopirováním textu z Microsoft Wordu. Crombolo může odstranit speciální znaky nebo formatování, takže vložený obsah bude pro web vhodnější."
|
|
20
|
-
},
|
|
21
|
-
"dashboard": {
|
|
22
|
-
"nothinghappens": "Jestli se Crombolo neotevírá, možná budete muset povolit na tomto webu vyskakovací okna"
|
|
23
|
-
},
|
|
24
|
-
"logViewer": {
|
|
25
|
-
"searchUmbracoSource": "Prohledat Crombolo Source",
|
|
26
|
-
"searchWithinUmbracoSourceCodeOnGithub": "Vyhledat ve zdrojovém kódu Crombolo na Github",
|
|
27
|
-
"searchUmbracoIssues": "Prohledat Crombolo Issues",
|
|
28
|
-
"searchUmbracoIssuesOnGithub": "Prohledat Crombolo Issues na Github"
|
|
29
|
-
},
|
|
30
6
|
"actions": {
|
|
31
7
|
"changeDocType": "Změnit typ obsahu",
|
|
32
8
|
"exportDocumentType": "Exportovat typ obsahu",
|
|
@@ -67,6 +43,9 @@ export default {
|
|
|
67
43
|
"treeHeaders": {
|
|
68
44
|
"documentTypes": "Typy obsahu"
|
|
69
45
|
},
|
|
46
|
+
"user": {
|
|
47
|
+
"documentType": "Typ obsahu"
|
|
48
|
+
},
|
|
70
49
|
"references": {
|
|
71
50
|
"labelUsedByDocumentTypes": "Použito v typech obsahu"
|
|
72
51
|
}
|
|
@@ -3,38 +3,6 @@
|
|
|
3
3
|
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
4
|
// Umbraco says "document type".
|
|
5
5
|
export default {
|
|
6
|
-
"user": {
|
|
7
|
-
"changePasswordDescription": "Gallwch newid eich cyfrinair i gyrchu Swyddfa Gefn Crombologan lenwi allan y ffurflen isod a chlicio'r botwm 'Newid Cyfrinair'",
|
|
8
|
-
"createUserHelp": "Creu defnyddwyr newydd i roi hawliau iddynt gyrchu Crombolo. Pan mae defnyddiwr newydd yn cael ei greu, bydd cyfrinair yn cael ei generadu y gallwch chi rannu gyda'r defnyddiwr.",
|
|
9
|
-
"inviteUserHelp": "Gwahodd defnyddwyr newydd i roi hawliau iddynt gyrchu Crombolo. Bydd gwahoddiad ebost yn cael ei anfon at y defnyddiwr gyda gwybodaeth ar sut i fewngofnodi i Crombolo. Mae gwahoddiadau yn para am 72 awr.",
|
|
10
|
-
"noConsole": "Analluogi Mynediad Crombolo",
|
|
11
|
-
"userCreatedSuccessHelp": "Mae'r defnyddiwr newydd wedi'i greu. Er mwyn mewngofnodi i Crombolo defnyddiwch y cyfrinair isod.",
|
|
12
|
-
"userInvitedSuccessHelp": "Mae gwahoddiad wedi cael ei anfon at y defnyddiwr newydd gyda manylion ar sut i fewngofnodi i Crombolo.",
|
|
13
|
-
"userinviteWelcomeMessage": "Helo a chroeso i Crombolo! Mewn 1 munud yn unig, byddech chi'n barod i fynd, rydym dim ond angen gosod cyfrinair.",
|
|
14
|
-
"userinviteExpiredMessage": "Croeso i Crombolo! Yn anffodus, mae eich gwahoddiad wedi terfynu. Cysylltwch â'ch gweinyddwr a gofynnwch iddynt ail-anfon.",
|
|
15
|
-
"documentType": "Math o Gynnwys"
|
|
16
|
-
},
|
|
17
|
-
"general": {
|
|
18
|
-
"umbracoInfo": "Gwybodaeth Crombolo"
|
|
19
|
-
},
|
|
20
|
-
"visuallyHiddenTexts": {
|
|
21
|
-
"searchOverlayTitle": "Chwilio'r swyddfa gefn Crombolo"
|
|
22
|
-
},
|
|
23
|
-
"languages": {
|
|
24
|
-
"defaultLanguageHelp": "Gall wefan Crombolo ddim ond cael un iaith ddiofyn."
|
|
25
|
-
},
|
|
26
|
-
"paste": {
|
|
27
|
-
"errorMessage": "Mae'r testun yr ydych yn ceisio gludo yn cynnwys nodauneu fformatio arbennig. Gall hyn gael ei achosi gan ludo testun o Microsoft Word. Gall Crombolo ddileu nodau neu fformatio arbennig yn awtomatig, fel bod y cynnwys sy'n cael ei ludo yn fwy addas ar gyfer y we."
|
|
28
|
-
},
|
|
29
|
-
"dashboard": {
|
|
30
|
-
"nothinghappens": "Os nad yw Crombolo yn agor, efallai byddwch angen galluogi popups o'r safle yma"
|
|
31
|
-
},
|
|
32
|
-
"logViewer": {
|
|
33
|
-
"searchUmbracoSource": "Chwilio'r cod gwreiddiol Crombolo",
|
|
34
|
-
"searchWithinUmbracoSourceCodeOnGithub": "Chwilio tu fewn y cod gwreiddiol Crombolo ar Github",
|
|
35
|
-
"searchUmbracoIssues": "Chwilio Problemau Crombolo",
|
|
36
|
-
"searchUmbracoIssuesOnGithub": "Chwilio Problemau Crombolo ar Github"
|
|
37
|
-
},
|
|
38
6
|
"actions": {
|
|
39
7
|
"changeDocType": "Newid Math o Gynnwys",
|
|
40
8
|
"exportDocumentType": "Allforio Math o Gynnwys",
|
|
@@ -82,6 +50,9 @@ export default {
|
|
|
82
50
|
"treeHeaders": {
|
|
83
51
|
"documentTypes": "Mathau o Gynnwys"
|
|
84
52
|
},
|
|
53
|
+
"user": {
|
|
54
|
+
"documentType": "Math o Gynnwys"
|
|
55
|
+
},
|
|
85
56
|
"references": {
|
|
86
57
|
"labelUsedByDocumentTypes": "Defnyddir mewn Mathau o Gynnwys"
|
|
87
58
|
},
|
|
@@ -3,47 +3,6 @@
|
|
|
3
3
|
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
4
|
// Umbraco says "document type".
|
|
5
5
|
export default {
|
|
6
|
-
"login": {
|
|
7
|
-
"instruction": "Log ind på Crombolo",
|
|
8
|
-
"userInviteWelcomeMessage": "Hej og velkommen til Crombolo! På bare 1 minut vil du være klar til at komme i gang, vi skal bare have dig til at oprette en adgangskode.",
|
|
9
|
-
"userInviteExpiredMessage": "Velkommen til Crombolo! Desværre er din invitation udløbet. Kontakt din administrator og bed om at gensende invitationen."
|
|
10
|
-
},
|
|
11
|
-
"user": {
|
|
12
|
-
"changePasswordDescription": "Du kan ændre dit kodeord, som giver dig adgang til Crombolo backoffice ved at\n udfylde formularen og klikke på knappen 'Skift dit kodeord'\n ",
|
|
13
|
-
"createUserHelp": "Opret nye brugere for at give dem adgang til Crombolo. Når en ny bruger oprettes,\n genereres der en adgangskode, som du kan dele med brugeren.\n ",
|
|
14
|
-
"inviteUserHelp": "Invitér nye brugere til at give dem adgang til Crombolo. En invitation vil blive sendt\n via e-mail til brugeren med oplysninger om, hvordan man logger ind i Crombolo.\n ",
|
|
15
|
-
"noConsole": "Deaktivér adgang til Crombolo",
|
|
16
|
-
"userCreatedSuccessHelp": "Den nye bruger er blevet oprettet. For at logge ind i Crombolo skal du bruge\n adgangskoden nedenfor.\n ",
|
|
17
|
-
"userInvitedSuccessHelp": "En invitation er blevet sendt til den nye bruger med oplysninger om, hvordan man\n logger ind i Crombolo.\n ",
|
|
18
|
-
"userinviteWelcomeMessage": "Hej og velkommen til Crombolo! På bare 1 minut vil du være klar til at komme i\n gang, vi skal bare have dig til at oprette en adgangskode og tilføje et billede til din avatar.\n ",
|
|
19
|
-
"userinviteExpiredMessage": "Velkommen til Crombolo! Desværre er din invitation udløbet. Kontakt din\n administrator og bed om at gensende invitationen.\n ",
|
|
20
|
-
"documentType": "Indholdstype"
|
|
21
|
-
},
|
|
22
|
-
"general": {
|
|
23
|
-
"umbracoInfo": "Crombolo info"
|
|
24
|
-
},
|
|
25
|
-
"visuallyHiddenTexts": {
|
|
26
|
-
"searchOverlayTitle": "Søg i Crombolo backoffice"
|
|
27
|
-
},
|
|
28
|
-
"languages": {
|
|
29
|
-
"defaultLanguageHelp": "Et Crombolo-site kan kun have ét standardsprog."
|
|
30
|
-
},
|
|
31
|
-
"paste": {
|
|
32
|
-
"errorMessage": "Den tekst du er ved at indsætte indeholder specialtegn eller formatering. Dette kan\n skyldes at du kopierer fra f.eks. Microsoft Word. Crombolo kan fjerne denne specialformatering automatisk så\n indholdet er mere velegnet til visning på en webside.\n "
|
|
33
|
-
},
|
|
34
|
-
"dashboard": {
|
|
35
|
-
"nothinghappens": "Hvis Crombolo ikke starter, kan det skyldes at din browser ikke tillader pop-up vinduer\n "
|
|
36
|
-
},
|
|
37
|
-
"logViewer": {
|
|
38
|
-
"searchUmbracoSource": "Søg i Crombolo kildekoden",
|
|
39
|
-
"searchWithinUmbracoSourceCodeOnGithub": "Søg i Crombolo kildekoden på Github",
|
|
40
|
-
"searchUmbracoIssues": "Søg i Crombolo issues",
|
|
41
|
-
"searchUmbracoIssuesOnGithub": "Søg i Crombolo issues på Github"
|
|
42
|
-
},
|
|
43
|
-
"defaultdialogs": {
|
|
44
|
-
"linkYourConfirm": "For at linke dine Crombolo og {0} konti, vil du blive sendt til {0} for at bekræfte.",
|
|
45
|
-
"unLinkYourConfirm": "Du er ved at fjerne linket mellem dine Crombolo og {0} konti og du vil blive logget ud."
|
|
46
|
-
},
|
|
47
6
|
"actions": {
|
|
48
7
|
"changeDocType": "Skift indholdstype",
|
|
49
8
|
"exportDocumentType": "Eksportér indholdstype",
|
|
@@ -91,6 +50,9 @@ export default {
|
|
|
91
50
|
"treeHeaders": {
|
|
92
51
|
"documentTypes": "Indholdstyper"
|
|
93
52
|
},
|
|
53
|
+
"user": {
|
|
54
|
+
"documentType": "Indholdstype"
|
|
55
|
+
},
|
|
94
56
|
"references": {
|
|
95
57
|
"labelUsedByDocumentTypes": "Brugt i indholdstyper"
|
|
96
58
|
},
|
|
@@ -3,33 +3,6 @@
|
|
|
3
3
|
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
4
|
// Umbraco says "document type".
|
|
5
5
|
export default {
|
|
6
|
-
"login": {
|
|
7
|
-
"userInviteWelcomeMessage": "Hallo und Willkommen bei Crombolo! In nur einer Minute sind Sie bereit loszulegen, Sie müssen nur ein Kennwort festlegen.",
|
|
8
|
-
"userInviteExpiredMessage": "Willkommen bei Crombolo! Bedauerlicherweise ist Ihre Einladung verfallen. Bitte kontaktieren Sie Ihren Administrator und bitten Sie ihn, diese erneut zu schicken."
|
|
9
|
-
},
|
|
10
|
-
"user": {
|
|
11
|
-
"changePasswordDescription": "Sie können Ihr Kennwort für den Zugriff auf den Crombolo-Verwaltungsbereich ändern, indem Sie das nachfolgende Formular ausfüllen und auf 'Kennwort ändern' klicken",
|
|
12
|
-
"createUserHelp": "\n Lege neue Benutzer an, um ihnen Zugang zum Crombolo-Back-Office zu geben.\n Während des Anlegens eines neuen Benutzer wird ein Kennwort erzeugt, das Sie dem Benutzer mitteilen können.\n ",
|
|
13
|
-
"inviteUserHelp": "\n Laden Sie neue Benutzer ein, um ihnen Zugang zum Crombolo-Back-Office zu geben.\n Eine Einladungs-E-Mail wird an dem Benutzer geschickt. Diese enthält Informationen, wie sich der Benutzer im Crombolo-Back-Office anmelden kann.\n Einladungen sind 72 Stunden lang gültig.\n ",
|
|
14
|
-
"noConsole": "Crombolo-Back-Office sperren",
|
|
15
|
-
"userCreatedSuccessHelp": "Der Benutzer wurde erfolgreich angelegt. Zu Anmelden im Crombolo-Back-Office verwenden Sie bitte folgendes Kennwort:",
|
|
16
|
-
"userInvitedSuccessHelp": "Eine Einladung mit Anweisungen zur Anmeldung im Crombolo-Back-Office wurde dem neuen Benutzer zugeschickt.",
|
|
17
|
-
"userinviteWelcomeMessage": "Hallo und Willkommen bei Crombolo! In nur einer Minute sind Sie bereit loszulegen, Sie müssen nur ein Kennwort festlegen.",
|
|
18
|
-
"userinviteExpiredMessage": "Willkommen bei Crombolo! Bedauerlicherweise ist Ihre Einladung verfallen. Bitte kontaktieren Sie Ihren Administrator und bitten Sie ihn, diese erneut zu schicken.",
|
|
19
|
-
"documentType": "Inhaltstyp"
|
|
20
|
-
},
|
|
21
|
-
"general": {
|
|
22
|
-
"umbracoInfo": "Crombolo Information"
|
|
23
|
-
},
|
|
24
|
-
"languages": {
|
|
25
|
-
"defaultLanguageHelp": "Eine Crombolo site kann nur eine Standardsprache haben."
|
|
26
|
-
},
|
|
27
|
-
"paste": {
|
|
28
|
-
"errorMessage": "Der Text, den Sie einfügen möchten, enthält Sonderzeichen oder spezielle Formatierungen. Dies kann zum Beispiel beim Kopieren aus Microsoft Word heraus passieren. Crombolo kann Sonderzeichen und spezielle Formatierungen automatisch entfernen, damit der eingefügte Inhalt besser für die Veröffentlichung im Web geeignet ist."
|
|
29
|
-
},
|
|
30
|
-
"dashboard": {
|
|
31
|
-
"nothinghappens": "Wenn Crombolo nicht geöffnet wurde, wurde möglicherweise das Pop-Up unterdrückt."
|
|
32
|
-
},
|
|
33
6
|
"actions": {
|
|
34
7
|
"changeDocType": "Inhaltstyp ändern",
|
|
35
8
|
"exportDocumentType": "Inhaltstyp exportieren",
|
|
@@ -72,6 +45,9 @@ export default {
|
|
|
72
45
|
"treeHeaders": {
|
|
73
46
|
"documentTypes": "Inhaltstypen"
|
|
74
47
|
},
|
|
48
|
+
"user": {
|
|
49
|
+
"documentType": "Inhaltstyp"
|
|
50
|
+
},
|
|
75
51
|
"contentTemplatesDashboard": {
|
|
76
52
|
"createDescription": "\n <p>Es gibt zwei Möglichkeiten eine Inhaltsvorlage zu erstellen:</p>\n <ul>\n <li>Rechtsklicken Sie einen Inhaltsknoten und wählen Sie \"Inhaltsvorlage erstellen\" aus.</li>\n <li>Rechtsklicken Sie den Inhaltsvorlagen-Baum und wählen Sie den Inhaltstypen aus für den Sie eine Vorlage erstellen wollen.</li>\n </ul>\n <p>Wenn Sie einen Namen vergen haben können Reakteure diese als Vorlage für neue Seiten benutzen.</p>\n ",
|
|
77
53
|
"manageDescription": "Sie können Inhaltsvorlagen bearbeiten und löschen in dem Sie im Inhaltsvorlage-Baum die gewünschte\n Vorlage auswählen. Außerdem können Sie auch direkt den Inhaltstypen bearbeiten oder löschen auf dem die Vorlage basiert\n "
|