@crombolo/backoffice-host 0.0.0-stage → 0.10.0
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/LICENSE +21 -0
- package/NOTICE +69 -0
- package/assets/login.js +352 -0
- package/package.json +35 -4
- package/plugin/assistant/client.js +53 -0
- package/plugin/assistant/drawer.js +865 -0
- package/plugin/assistant/umbraco-package.json +16 -0
- package/plugin/branding/backdrop.svg +1 -0
- package/plugin/branding/branding.js +100 -0
- package/plugin/branding/bundle-builder-labels.js +63 -0
- package/plugin/branding/client-credentials.js +49 -0
- package/plugin/branding/components-tree.js +40 -0
- package/plugin/branding/content-type-labels.js +27 -0
- package/plugin/branding/favicon.svg +1 -0
- package/plugin/branding/help-menu.js +46 -0
- package/plugin/branding/icon-mark.js +15 -0
- package/plugin/branding/icon-registry.js +40 -0
- package/plugin/branding/localization-en.js +115 -0
- package/plugin/branding/log-viewer-menu.js +70 -0
- package/plugin/branding/logo-header.svg +1 -0
- package/plugin/branding/logo-surface.svg +1 -0
- package/plugin/branding/query-builder.js +28 -0
- package/plugin/branding/sign-in.js +80 -0
- package/plugin/branding/sysinfo.js +89 -0
- package/plugin/branding/theme.css +102 -0
- package/plugin/bundles-carries.js +16 -0
- package/plugin/bundles-client.js +40 -0
- package/plugin/bundles-created-overview.js +244 -0
- package/plugin/bundles-created.js +70 -0
- package/plugin/bundles-installed.js +176 -0
- package/plugin/bundles-marketplace.js +236 -0
- package/plugin/changes-dashboard.js +169 -0
- package/plugin/element-type-hint.js +58 -0
- package/plugin/form-picker.js +116 -0
- package/plugin/forms-client.js +52 -0
- package/plugin/forms-entries.js +244 -0
- package/plugin/forms-overview.js +380 -0
- package/plugin/localizations/ar.js +97 -0
- package/plugin/localizations/bs.js +86 -0
- package/plugin/localizations/cs.js +73 -0
- package/plugin/localizations/cy.js +92 -0
- package/plugin/localizations/da.js +101 -0
- package/plugin/localizations/de.js +79 -0
- package/plugin/localizations/en.js +71 -0
- package/plugin/localizations/es.js +52 -0
- package/plugin/localizations/fr.js +78 -0
- package/plugin/localizations/he.js +24 -0
- package/plugin/localizations/hr.js +89 -0
- package/plugin/localizations/it.js +86 -0
- package/plugin/localizations/ja.js +43 -0
- package/plugin/localizations/ko.js +24 -0
- package/plugin/localizations/nb.js +44 -0
- package/plugin/localizations/nl.js +85 -0
- package/plugin/localizations/pl.js +44 -0
- package/plugin/localizations/pt-br.js +25 -0
- package/plugin/localizations/pt.js +100 -0
- package/plugin/localizations/ro.js +9 -0
- package/plugin/localizations/ru.js +46 -0
- package/plugin/localizations/sv.js +46 -0
- package/plugin/localizations/tr.js +80 -0
- package/plugin/localizations/uk.js +46 -0
- package/plugin/localizations/umbraco-package.json +279 -0
- package/plugin/localizations/vi.js +104 -0
- package/plugin/localizations/zh-tw.js +38 -0
- package/plugin/localizations/zh.js +38 -0
- package/plugin/read-only-banner.js +48 -0
- package/plugin/report-client.js +13 -0
- package/plugin/seo/client.js +35 -0
- package/plugin/seo/dashboard.js +242 -0
- package/plugin/seo/document-view.js +161 -0
- package/plugin/seo/type-hint.js +45 -0
- package/plugin/seo/umbraco-package.json +61 -0
- package/plugin/settings-dashboard.js +123 -0
- package/plugin/tsx-editors.js +337 -0
- package/plugin/tsx-snippets.js +63 -0
- package/plugin/umbraco-package.json +298 -0
- package/plugin/welcome-dashboard.js +106 -0
- package/src/branding.ts +59 -0
- package/src/bundle-package.ts +266 -0
- package/src/extensions.ts +189 -0
- package/src/graphics.ts +87 -0
- package/src/index.ts +8 -0
- package/src/login-assets.ts +18 -0
- package/src/manifests.ts +154 -0
- package/src/paths.ts +117 -0
- package/src/shell.ts +139 -0
- package/src/static.ts +107 -0
- package/src/text-imports.d.ts +23 -0
- package/README.md +0 -3
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Forms section's list, and the editor for one form.
|
|
3
|
+
*
|
|
4
|
+
* Umbraco Forms' designer is drag-and-drop over a canvas. This is a table: a
|
|
5
|
+
* form is a file, and what somebody edits here is written straight back to
|
|
6
|
+
* TOML, so the shape that matters is the one a diff will show. Reordering,
|
|
7
|
+
* multi-page layout and the richer per-type settings are refinements on top.
|
|
8
|
+
*
|
|
9
|
+
* Saving sends the whole definition. The server writes it to TOML and reads it
|
|
10
|
+
* back with the strict parser before keeping it, so a refusal here is the same
|
|
11
|
+
* refusal a hand-written file would get.
|
|
12
|
+
*/
|
|
13
|
+
import { css, html, nothing, repeat } from '@umbraco-cms/backoffice/external/lit'
|
|
14
|
+
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'
|
|
15
|
+
import { deleteForm, listForms, readForm, saveForm } from './forms-client.js'
|
|
16
|
+
|
|
17
|
+
const FIELD_TYPES = [
|
|
18
|
+
'shortAnswer',
|
|
19
|
+
'longAnswer',
|
|
20
|
+
'email',
|
|
21
|
+
'number',
|
|
22
|
+
'date',
|
|
23
|
+
'checkbox',
|
|
24
|
+
'dropdown',
|
|
25
|
+
'singleChoice',
|
|
26
|
+
'multipleChoice',
|
|
27
|
+
'fileUpload',
|
|
28
|
+
'dataConsent',
|
|
29
|
+
'titleAndDescription',
|
|
30
|
+
'richText',
|
|
31
|
+
'hidden',
|
|
32
|
+
]
|
|
33
|
+
const CHOICE_TYPES = new Set(['dropdown', 'singleChoice', 'multipleChoice'])
|
|
34
|
+
|
|
35
|
+
export default class CromboloFormsOverviewElement extends UmbLitElement {
|
|
36
|
+
static properties = {
|
|
37
|
+
_forms: { state: true },
|
|
38
|
+
_editing: { state: true },
|
|
39
|
+
_problems: { state: true },
|
|
40
|
+
_notice: { state: true },
|
|
41
|
+
_busy: { state: true },
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
constructor() {
|
|
45
|
+
super()
|
|
46
|
+
this._forms = undefined
|
|
47
|
+
this._editing = undefined
|
|
48
|
+
this._problems = []
|
|
49
|
+
this._notice = ''
|
|
50
|
+
this._busy = false
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
connectedCallback() {
|
|
54
|
+
super.connectedCallback()
|
|
55
|
+
this.#load()
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async #load() {
|
|
59
|
+
try {
|
|
60
|
+
this._forms = await listForms()
|
|
61
|
+
} catch (error) {
|
|
62
|
+
this._forms = []
|
|
63
|
+
this._notice = error.message
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async #edit(key) {
|
|
68
|
+
this._problems = []
|
|
69
|
+
this._notice = ''
|
|
70
|
+
const detail = await readForm(key)
|
|
71
|
+
this._editing = structuredClone(detail.definition)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#new() {
|
|
75
|
+
this._problems = []
|
|
76
|
+
this._notice = ''
|
|
77
|
+
this._editing = {
|
|
78
|
+
key: crypto.randomUUID(),
|
|
79
|
+
alias: '',
|
|
80
|
+
name: '',
|
|
81
|
+
storeEntries: true,
|
|
82
|
+
requiresApproval: false,
|
|
83
|
+
honeypot: true,
|
|
84
|
+
pages: [{ groups: [{ columns: 1, fields: [] }] }],
|
|
85
|
+
workflows: [],
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get #fields() {
|
|
90
|
+
return this._editing?.pages?.[0]?.groups?.[0]?.fields ?? []
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#touch() {
|
|
94
|
+
// Lit tracks the reference, not what is inside it.
|
|
95
|
+
this._editing = { ...this._editing }
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async #save() {
|
|
99
|
+
this._busy = true
|
|
100
|
+
this._problems = []
|
|
101
|
+
this._notice = ''
|
|
102
|
+
try {
|
|
103
|
+
const result = await saveForm(this._editing)
|
|
104
|
+
if (result.ok) {
|
|
105
|
+
this._notice = 'Saved.'
|
|
106
|
+
this._editing = undefined
|
|
107
|
+
await this.#load()
|
|
108
|
+
} else {
|
|
109
|
+
this._problems = result.body.problems ?? []
|
|
110
|
+
if (result.body.status === 'readOnly')
|
|
111
|
+
this._notice = 'The schema directory is read-only on this node.'
|
|
112
|
+
}
|
|
113
|
+
} catch (error) {
|
|
114
|
+
this._notice = error.message
|
|
115
|
+
} finally {
|
|
116
|
+
this._busy = false
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async #remove(form) {
|
|
121
|
+
if (!confirm(`Delete the form "${form.name}"? Its entries are kept.`)) return
|
|
122
|
+
try {
|
|
123
|
+
const result = await deleteForm(form.key)
|
|
124
|
+
if (!result.ok) this._notice = 'That form could not be deleted.'
|
|
125
|
+
await this.#load()
|
|
126
|
+
} catch (error) {
|
|
127
|
+
this._notice = error.message
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
render() {
|
|
132
|
+
if (this._forms === undefined) return html`<uui-loader></uui-loader>`
|
|
133
|
+
return html`
|
|
134
|
+
${this._notice ? html`<uui-box><p>${this._notice}</p></uui-box>` : nothing}
|
|
135
|
+
${this._editing ? this.#editor() : this.#list()}
|
|
136
|
+
`
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
#list() {
|
|
140
|
+
return html`
|
|
141
|
+
<uui-box headline="Forms">
|
|
142
|
+
<p>
|
|
143
|
+
A form is a file in <code>schema/forms/</code>. Editing one here writes that
|
|
144
|
+
file, so the change can be reviewed in a pull request like any other type.
|
|
145
|
+
</p>
|
|
146
|
+
${
|
|
147
|
+
this._forms.length === 0
|
|
148
|
+
? html`<p>There are no forms yet.</p>`
|
|
149
|
+
: html`
|
|
150
|
+
<uui-table>
|
|
151
|
+
<uui-table-head>
|
|
152
|
+
<uui-table-head-cell>Name</uui-table-head-cell>
|
|
153
|
+
<uui-table-head-cell>Alias</uui-table-head-cell>
|
|
154
|
+
<uui-table-head-cell>Fields</uui-table-head-cell>
|
|
155
|
+
<uui-table-head-cell>Entries</uui-table-head-cell>
|
|
156
|
+
<uui-table-head-cell></uui-table-head-cell>
|
|
157
|
+
</uui-table-head>
|
|
158
|
+
${repeat(
|
|
159
|
+
this._forms,
|
|
160
|
+
(form) => form.key,
|
|
161
|
+
(form) => html`
|
|
162
|
+
<uui-table-row>
|
|
163
|
+
<uui-table-cell>${form.name}</uui-table-cell>
|
|
164
|
+
<uui-table-cell><code>${form.alias}</code></uui-table-cell>
|
|
165
|
+
<uui-table-cell>${form.fieldCount}</uui-table-cell>
|
|
166
|
+
<uui-table-cell>${form.storeEntries ? 'stored' : 'not stored'}</uui-table-cell>
|
|
167
|
+
<uui-table-cell>
|
|
168
|
+
<uui-button look="secondary" label="Edit" @click=${() => this.#edit(form.key)}></uui-button>
|
|
169
|
+
<uui-button look="secondary" color="danger" label="Delete" @click=${() => this.#remove(form)}></uui-button>
|
|
170
|
+
</uui-table-cell>
|
|
171
|
+
</uui-table-row>
|
|
172
|
+
`,
|
|
173
|
+
)}
|
|
174
|
+
</uui-table>
|
|
175
|
+
`
|
|
176
|
+
}
|
|
177
|
+
<div class="actions">
|
|
178
|
+
<uui-button look="primary" label="Add a form" @click=${() => this.#new()}></uui-button>
|
|
179
|
+
</div>
|
|
180
|
+
</uui-box>
|
|
181
|
+
`
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
#editor() {
|
|
185
|
+
const form = this._editing
|
|
186
|
+
const text = (key, label, hint) => html`
|
|
187
|
+
<uui-form-layout-item>
|
|
188
|
+
<uui-label slot="label">${label}</uui-label>
|
|
189
|
+
${hint ? html`<span slot="description">${hint}</span>` : nothing}
|
|
190
|
+
<uui-input
|
|
191
|
+
.value=${form[key] ?? ''}
|
|
192
|
+
@change=${(event) => {
|
|
193
|
+
form[key] = event.target.value
|
|
194
|
+
this.#touch()
|
|
195
|
+
}}
|
|
196
|
+
></uui-input>
|
|
197
|
+
</uui-form-layout-item>
|
|
198
|
+
`
|
|
199
|
+
return html`
|
|
200
|
+
<uui-box headline=${form.alias ? `Form: ${form.name || form.alias}` : 'A new form'}>
|
|
201
|
+
${
|
|
202
|
+
this._problems.length > 0
|
|
203
|
+
? html`<div class="problems" role="alert">
|
|
204
|
+
<p>This form was not saved:</p>
|
|
205
|
+
<ul>
|
|
206
|
+
${this._problems.map((problem) => html`<li><code>${problem.path}</code> ${problem.message}</li>`)}
|
|
207
|
+
</ul>
|
|
208
|
+
</div>`
|
|
209
|
+
: nothing
|
|
210
|
+
}
|
|
211
|
+
${text('name', 'Name')}
|
|
212
|
+
${text('alias', 'Alias', 'Letters and numbers, starting with a letter. The file is named after it.')}
|
|
213
|
+
${text('messageOnSubmit', 'Message on submit')}
|
|
214
|
+
${text('submitLabel', 'Submit button')}
|
|
215
|
+
<uui-form-layout-item>
|
|
216
|
+
<uui-label slot="label">Store entries</uui-label>
|
|
217
|
+
<uui-toggle
|
|
218
|
+
.checked=${form.storeEntries !== false}
|
|
219
|
+
@change=${(event) => {
|
|
220
|
+
form.storeEntries = event.target.checked
|
|
221
|
+
this.#touch()
|
|
222
|
+
}}
|
|
223
|
+
></uui-toggle>
|
|
224
|
+
</uui-form-layout-item>
|
|
225
|
+
|
|
226
|
+
<h4>Fields</h4>
|
|
227
|
+
<uui-table>
|
|
228
|
+
<uui-table-head>
|
|
229
|
+
<uui-table-head-cell>Caption</uui-table-head-cell>
|
|
230
|
+
<uui-table-head-cell>Alias</uui-table-head-cell>
|
|
231
|
+
<uui-table-head-cell>Type</uui-table-head-cell>
|
|
232
|
+
<uui-table-head-cell>Choices</uui-table-head-cell>
|
|
233
|
+
<uui-table-head-cell>Required</uui-table-head-cell>
|
|
234
|
+
<uui-table-head-cell>Sensitive</uui-table-head-cell>
|
|
235
|
+
<uui-table-head-cell></uui-table-head-cell>
|
|
236
|
+
</uui-table-head>
|
|
237
|
+
${repeat(
|
|
238
|
+
this.#fields,
|
|
239
|
+
(_field, index) => index,
|
|
240
|
+
(field, index) => html`
|
|
241
|
+
<uui-table-row>
|
|
242
|
+
<uui-table-cell>
|
|
243
|
+
<uui-input
|
|
244
|
+
.value=${field.caption ?? ''}
|
|
245
|
+
@change=${(event) => {
|
|
246
|
+
field.caption = event.target.value
|
|
247
|
+
this.#touch()
|
|
248
|
+
}}
|
|
249
|
+
></uui-input>
|
|
250
|
+
</uui-table-cell>
|
|
251
|
+
<uui-table-cell>
|
|
252
|
+
<uui-input
|
|
253
|
+
.value=${field.alias ?? ''}
|
|
254
|
+
@change=${(event) => {
|
|
255
|
+
field.alias = event.target.value
|
|
256
|
+
this.#touch()
|
|
257
|
+
}}
|
|
258
|
+
></uui-input>
|
|
259
|
+
</uui-table-cell>
|
|
260
|
+
<uui-table-cell>
|
|
261
|
+
<select
|
|
262
|
+
@change=${(event) => {
|
|
263
|
+
field.type = event.target.value
|
|
264
|
+
if (!CHOICE_TYPES.has(field.type)) field.values = []
|
|
265
|
+
this.#touch()
|
|
266
|
+
}}
|
|
267
|
+
>
|
|
268
|
+
${FIELD_TYPES.map(
|
|
269
|
+
(type) =>
|
|
270
|
+
html`<option value=${type} ?selected=${type === field.type}>${type}</option>`,
|
|
271
|
+
)}
|
|
272
|
+
</select>
|
|
273
|
+
</uui-table-cell>
|
|
274
|
+
<uui-table-cell>
|
|
275
|
+
${
|
|
276
|
+
CHOICE_TYPES.has(field.type)
|
|
277
|
+
? html`<uui-input
|
|
278
|
+
placeholder="One, Two, Three"
|
|
279
|
+
.value=${(field.values ?? []).join(', ')}
|
|
280
|
+
@change=${(event) => {
|
|
281
|
+
field.values = event.target.value
|
|
282
|
+
.split(',')
|
|
283
|
+
.map((value) => value.trim())
|
|
284
|
+
.filter(Boolean)
|
|
285
|
+
this.#touch()
|
|
286
|
+
}}
|
|
287
|
+
></uui-input>`
|
|
288
|
+
: nothing
|
|
289
|
+
}
|
|
290
|
+
</uui-table-cell>
|
|
291
|
+
<uui-table-cell>
|
|
292
|
+
<uui-toggle
|
|
293
|
+
.checked=${field.mandatory === true}
|
|
294
|
+
@change=${(event) => {
|
|
295
|
+
field.mandatory = event.target.checked
|
|
296
|
+
this.#touch()
|
|
297
|
+
}}
|
|
298
|
+
></uui-toggle>
|
|
299
|
+
</uui-table-cell>
|
|
300
|
+
<uui-table-cell>
|
|
301
|
+
<uui-toggle
|
|
302
|
+
.checked=${field.sensitive === true}
|
|
303
|
+
@change=${(event) => {
|
|
304
|
+
field.sensitive = event.target.checked
|
|
305
|
+
this.#touch()
|
|
306
|
+
}}
|
|
307
|
+
></uui-toggle>
|
|
308
|
+
</uui-table-cell>
|
|
309
|
+
<uui-table-cell>
|
|
310
|
+
<uui-button
|
|
311
|
+
look="secondary"
|
|
312
|
+
color="danger"
|
|
313
|
+
label="Remove"
|
|
314
|
+
@click=${() => {
|
|
315
|
+
this.#fields.splice(index, 1)
|
|
316
|
+
this.#touch()
|
|
317
|
+
}}
|
|
318
|
+
></uui-button>
|
|
319
|
+
</uui-table-cell>
|
|
320
|
+
</uui-table-row>
|
|
321
|
+
`,
|
|
322
|
+
)}
|
|
323
|
+
</uui-table>
|
|
324
|
+
<div class="actions">
|
|
325
|
+
<uui-button
|
|
326
|
+
look="secondary"
|
|
327
|
+
label="Add a field"
|
|
328
|
+
@click=${() => {
|
|
329
|
+
this.#fields.push({
|
|
330
|
+
alias: '',
|
|
331
|
+
type: 'shortAnswer',
|
|
332
|
+
caption: '',
|
|
333
|
+
mandatory: false,
|
|
334
|
+
sensitive: false,
|
|
335
|
+
values: [],
|
|
336
|
+
accept: [],
|
|
337
|
+
})
|
|
338
|
+
this.#touch()
|
|
339
|
+
}}
|
|
340
|
+
></uui-button>
|
|
341
|
+
<uui-button look="primary" label="Save" ?disabled=${this._busy} @click=${() => this.#save()}></uui-button>
|
|
342
|
+
<uui-button look="secondary" label="Cancel" @click=${() => {
|
|
343
|
+
this._editing = undefined
|
|
344
|
+
this._problems = []
|
|
345
|
+
}}></uui-button>
|
|
346
|
+
</div>
|
|
347
|
+
</uui-box>
|
|
348
|
+
`
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
static styles = css`
|
|
352
|
+
:host {
|
|
353
|
+
display: block;
|
|
354
|
+
padding: var(--uui-size-layout-1, 24px);
|
|
355
|
+
}
|
|
356
|
+
p,
|
|
357
|
+
ul {
|
|
358
|
+
max-width: 70ch;
|
|
359
|
+
line-height: 1.5;
|
|
360
|
+
}
|
|
361
|
+
h4 {
|
|
362
|
+
margin-top: var(--uui-size-layout-1, 24px);
|
|
363
|
+
}
|
|
364
|
+
.actions {
|
|
365
|
+
display: flex;
|
|
366
|
+
gap: var(--uui-size-space-4, 12px);
|
|
367
|
+
margin-top: var(--uui-size-layout-1, 24px);
|
|
368
|
+
}
|
|
369
|
+
.problems {
|
|
370
|
+
border-left: 3px solid var(--uui-color-danger, #d42054);
|
|
371
|
+
padding-left: var(--uui-size-space-4, 12px);
|
|
372
|
+
margin-bottom: var(--uui-size-layout-1, 24px);
|
|
373
|
+
}
|
|
374
|
+
code {
|
|
375
|
+
font-size: 0.9em;
|
|
376
|
+
}
|
|
377
|
+
`
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
customElements.define('crombolo-forms-overview', CromboloFormsOverviewElement)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Generated by `bun run localizations:build`. Do not edit.
|
|
2
|
+
// The product name in this language's own wording, for the keys
|
|
3
|
+
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
|
+
// Umbraco says "document type".
|
|
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
|
+
"actions": {
|
|
46
|
+
"changeDocType": "تغيير نوع المحتوى",
|
|
47
|
+
"exportDocumentType": "تصدير نوع المحتوى",
|
|
48
|
+
"importdocumenttype": "استيراد نوع محتوى"
|
|
49
|
+
},
|
|
50
|
+
"actionDescriptions": {
|
|
51
|
+
"changeDocType": "السماح بالوصول لتغيير نوع محتوى للعقدة"
|
|
52
|
+
},
|
|
53
|
+
"content": {
|
|
54
|
+
"documentType": "نوع المحتوى"
|
|
55
|
+
},
|
|
56
|
+
"create": {
|
|
57
|
+
"createContentBlueprint": "حدد نوع المحتوى الذي تريد إنشاء نموذج وثيقة له",
|
|
58
|
+
"noDocumentTypes": "لا توجد أنواع محتوى مسموح بها متاحة لإنشاء المحتوى هنا. يجب تمكينها في <strong>أنواع المحتوى</strong> ضمن قسم <strong>الإعدادات</strong>، عن طريق تعديل <strong>أنواع العقد الفرعية المسموح بها</strong> ضمن <strong>الهيكل</strong>.",
|
|
59
|
+
"noDocumentTypesAtRoot": "لا توجد أنواع محتوى متاحة لإنشاء المحتوى هنا. يجب عليك إنشاء هذه الأنواع في <strong>أنواع المحتوى</strong> ضمن قسم <strong>الإعدادات</strong>.",
|
|
60
|
+
"noDocumentTypesEditPermissions": "تعديل الأذونات لهذا النوع من المحتوى",
|
|
61
|
+
"noDocumentTypesCreateNew": "إنشاء نوع محتوى جديد",
|
|
62
|
+
"noDocumentTypesAllowedAtRoot": "لا توجد أنواع محتوى مسموح بها لإنشاء المحتوى هنا. يجب تمكينها في <strong>أنواع المحتوى</strong> ضمن قسم <strong>الإعدادات</strong>، عن طريق تغيير خيار <strong>السماح كجذر</strong> ضمن <strong>الهيكل</strong>.",
|
|
63
|
+
"documentTypeWithoutTemplate": "نوع المحتوى بدون قالب",
|
|
64
|
+
"documentTypeWithTemplate": "نوع المحتوى مع قالب",
|
|
65
|
+
"documentType": "نوع المحتوى",
|
|
66
|
+
"compositionDescription": "يحدد مجموعة قابلة لإعادة الاستخدام من الخصائص يمكن تضمينها في تعريف أنواع محتوى متعددة. على سبيل المثال، مجموعة من 'إعدادات الصفحة المشتركة'."
|
|
67
|
+
},
|
|
68
|
+
"prompt": {
|
|
69
|
+
"doctypeChangeWarning": "لديك تغييرات غير محفوظة. إجراء تغييرات على نوع المحتوى سيتسبب في تجاهل التغييرات."
|
|
70
|
+
},
|
|
71
|
+
"settings": {
|
|
72
|
+
"importDocumentTypeHelp": "للاستيراد نوع المحتوى ابحث عن ملف \".udt\" على جهاز الكمبيوتر الخاص بك بالنقر على زر \"استيراد\" (سيُطلب منك تأكيد ذلك في الشاشة التالية)"
|
|
73
|
+
},
|
|
74
|
+
"speechBubbles": {
|
|
75
|
+
"contentTypeSavedHeader": "تم حفظ نوع المحتوى",
|
|
76
|
+
"documentTypeExportedSuccess": "تم تصدير نوع المحتوى إلى ملف",
|
|
77
|
+
"documentTypeExportedError": "حدث خطأ أثناء تصدير نوع المحتوى"
|
|
78
|
+
},
|
|
79
|
+
"contentTypeEditor": {
|
|
80
|
+
"compositionsDescription": "ارث التبويبات والخصائص من نوع محتوى موجود. سيتم إضافة التبويبات الجديدة إلى نوع المحتوى الحالي أو دمجها إذا كان هناك تبويب بنفس الاسم.",
|
|
81
|
+
"compositionRemoveWarning": "إزالة التركيب ستؤدي إلى حذف جميع بيانات الخصائص المرتبطة. بمجرد حفظ نوع المحتوى لا يوجد طريق للعودة.",
|
|
82
|
+
"allDocumentTypes": "جميع أنواع المحتوى",
|
|
83
|
+
"usingThisDocument": "استخدام هذا النوع من المحتوى سيتم حذفه نهائيًا، يرجى تأكيد أنك تريد حذف هذه أيضًا.\n ",
|
|
84
|
+
"elementDescription": "نوع العنصر مخصص للاستخدام ضمن أنواع محتوى أخرى، وليس في شجرة المحتوى.\n ",
|
|
85
|
+
"elementCannotToggle": "لا يمكن تغيير نوع محتوى إلى نوع عنصر بمجرد أن يتم استخدامه لإنشاء عنصر أو أكثر من محتوى.\n "
|
|
86
|
+
},
|
|
87
|
+
"treeHeaders": {
|
|
88
|
+
"documentTypes": "أنواع المحتوى"
|
|
89
|
+
},
|
|
90
|
+
"references": {
|
|
91
|
+
"labelUsedByDocumentTypes": "مستشهد به من قبل أنواع المحتوى التالية"
|
|
92
|
+
},
|
|
93
|
+
"contentTemplatesDashboard": {
|
|
94
|
+
"createDescription": "<p>هناك طريقتان لإنشاء مخطط وثائقي:</p><ul><li>انقر بزر الماوس الأيمن على عقدة المحتوى واختر \"إنشاء مخطط وثائقي\" لإنشاء مخطط وثائقي جديد.</li><li>انقر بزر الماوس الأيمن على شجرة المخططات الوثائقية في قسم الإعدادات واختر نوع المحتوى الذي تريد إنشاء مخطط وثائقي له.</li></ul><p>بمجرد إعطائها اسمًا، يمكن للمحررين البدء في استخدام المخطط الوثائقي كأساس لصفحتهم الجديدة.</p>",
|
|
95
|
+
"manageDescription": "يمكنك تعديل وحذف المخططات الوثائقية من \"شجرة المخططات الوثائقية\" في قسم الإعدادات. قم بتوسيع نوع المحتوى الذي يعتمد عليه المخطط الوثائقي وانقر عليه لتعديله أو حذفه."
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Generated by `bun run localizations:build`. Do not edit.
|
|
2
|
+
// The product name in this language's own wording, for the keys
|
|
3
|
+
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
|
+
// Umbraco says "document type".
|
|
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
|
+
"actions": {
|
|
36
|
+
"changeDocType": "Promijeni Tip Sadržaja",
|
|
37
|
+
"exportDocumentType": "Izvezi Tip Sadržaja",
|
|
38
|
+
"importdocumenttype": "Uvezi Tip Sadržaja"
|
|
39
|
+
},
|
|
40
|
+
"actionDescriptions": {
|
|
41
|
+
"changeDocType": "Dozvolite pristup za promjenu Tipa Sadržaja za čvor"
|
|
42
|
+
},
|
|
43
|
+
"content": {
|
|
44
|
+
"documentType": "Tip sadržaja"
|
|
45
|
+
},
|
|
46
|
+
"create": {
|
|
47
|
+
"createContentBlueprint": "Odaberite vrstu sadržaja za koju želite da napravite predložak sadržaja",
|
|
48
|
+
"noDocumentTypes": "Nema dozvoljenih tipova sadržaja dostupnih za kreiranje sadržaja ovdje. Morate ih omogućiti u <strong>Tip sadržaja</strong> unutar sekcije <strong>Postavke</strong>, uređivanjem <strong>Dozvoljeni tipovi podređenih čvorova</strong> unutar <strong>Struktura</strong>.",
|
|
49
|
+
"noDocumentTypesAtRoot": "Nema dozvoljenih tipova sadržaja dostupnih za kreiranje sadržaja ovdje. Morate ih kreirati u <strong>Tip sadržaja</strong> unutar sekcije <strong>Postavke</strong>.",
|
|
50
|
+
"noDocumentTypesEditPermissions": "Uredi dozvole za ovaj tip sadržaja",
|
|
51
|
+
"noDocumentTypesCreateNew": "Kreiraj novi tip sadržaja",
|
|
52
|
+
"noDocumentTypesAllowedAtRoot": "Nema dozvoljenih tipova sadržaja dostupnih za kreiranje sadržaja ovdje. Morate ih omogućiti u <strong>Tip sadržaja</strong> unutar sekcije <strong>Postavke</strong>, izmjenom <strong>Dozvoli kao root</strong> opcije unutar <strong>Struktura</strong>.",
|
|
53
|
+
"documentTypeWithoutTemplate": "Tip sadržaja bez predloška",
|
|
54
|
+
"documentTypeWithTemplate": "Tip sadržaja sa predloškom",
|
|
55
|
+
"documentType": "Tip sadržaja",
|
|
56
|
+
"compositionDescription": "Definira višekratni skup svojstava koja se mogu uključiti u definiciju\n više drugih vrsta sadržaja. Na primjer, skup 'Common Page Settings'.\n "
|
|
57
|
+
},
|
|
58
|
+
"prompt": {
|
|
59
|
+
"doctypeChangeWarning": "Imate nesačuvane promjene. Promjenom vrste sadržaja odbacit će se promjene."
|
|
60
|
+
},
|
|
61
|
+
"settings": {
|
|
62
|
+
"importDocumentTypeHelp": "Da biste uvezli vrstu sadržaja, pronađite \".udt\" datoteku na svom računaru klikom na\n dugme \"Uvezi\" (na sljedećem ekranu će se tražiti da potvrdite)\n "
|
|
63
|
+
},
|
|
64
|
+
"speechBubbles": {
|
|
65
|
+
"contentTypeSavedHeader": "Tip sadržaja sačuvan",
|
|
66
|
+
"documentTypeExportedSuccess": "Tip sadržaja je izvezen u fajl",
|
|
67
|
+
"documentTypeExportedError": "Došlo je do greške prilikom izvoza tipa sadržaja"
|
|
68
|
+
},
|
|
69
|
+
"contentTypeEditor": {
|
|
70
|
+
"compositionsDescription": "Naslijediti kartice i svojstva iz postojeće vrste sadržaja. Nove kartice će biti\n dodano trenutnoj vrsti sadržaja ili spojeno ako postoji kartica s identičnim imenom.\n ",
|
|
71
|
+
"compositionRemoveWarning": "Uklanjanje kompozicije će izbrisati sve povezane podatke o svojstvu. Jednom ti\n sačuvajte tip sadržaja, nema povratka.\n ",
|
|
72
|
+
"allDocumentTypes": "Svi tipovi sadržaja",
|
|
73
|
+
"usingThisDocument": "korištenje ovog tipa sadržaja će biti trajno izbrisano, potvrdite da želite\n izbrišite i ove.\n ",
|
|
74
|
+
"elementCannotToggle": "Tip sadržaja se ne može promijeniti u tip elementa nakon što je naviknut\n kreirati jednu ili više stavki sadržaja.\n "
|
|
75
|
+
},
|
|
76
|
+
"treeHeaders": {
|
|
77
|
+
"documentTypes": "Tipovi sadržaja"
|
|
78
|
+
},
|
|
79
|
+
"references": {
|
|
80
|
+
"labelUsedByDocumentTypes": "Koristi se u tipovima sadržaja"
|
|
81
|
+
},
|
|
82
|
+
"contentTemplatesDashboard": {
|
|
83
|
+
"createDescription": "\n <p>Postoje dva načina za kreiranje predloška sadržaja:</p>\n <ul>\n <li>Desnom tipkom miša kliknite čvor sadržaja i odaberite \"Kreiraj predložak sadržaja\" da kreirate novi predložak sadržaja.</li>\n <li>Kliknite desnim tasterom miša na stablo predložaka sadržaja u odjeljku Postavke i odaberite vrstu sadržaja za koju želite da kreirate predložak sadržaja.</li>\n </ul>\n <p>Nakon što dobiju ime, urednici mogu početi koristiti predložak sadržaja kao osnovu za svoju novu stranicu.</p>\n ",
|
|
84
|
+
"manageDescription": "Možete uređivati i brisati predloške sadržaja iz stabla \"Šabloni sadržaja\" u\n odjeljak postavki. Proširite vrstu sadržaja na kojoj se temelji predložak sadržaja i kliknite na nju da biste uredili ili izbrisali to.\n "
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Generated by `bun run localizations:build`. Do not edit.
|
|
2
|
+
// The product name in this language's own wording, for the keys
|
|
3
|
+
// plugin/branding/localization-en.js curates, and "content type" where
|
|
4
|
+
// Umbraco says "document type".
|
|
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
|
+
"actions": {
|
|
31
|
+
"changeDocType": "Změnit typ obsahu",
|
|
32
|
+
"exportDocumentType": "Exportovat typ obsahu",
|
|
33
|
+
"importdocumenttype": "Importovat typ obsahu"
|
|
34
|
+
},
|
|
35
|
+
"actionDescriptions": {
|
|
36
|
+
"changeDocType": "Povolit přístup ke změně typu obsahu daného uzlu"
|
|
37
|
+
},
|
|
38
|
+
"content": {
|
|
39
|
+
"documentType": "Typ obsahu"
|
|
40
|
+
},
|
|
41
|
+
"create": {
|
|
42
|
+
"createContentBlueprint": "Vyberte typ obsahu, pro který chcete vytvořit šablonu obsahu",
|
|
43
|
+
"noDocumentTypes": "Nejsou dostupné žádné povolené typy obsahu. Tyto musíte povolit v sekci nastavení pod <strong>\"typy obsahu\"</strong>.",
|
|
44
|
+
"noDocumentTypesAtRoot": "Nejsou zde k dispozici žádné typy obsahu pro vytváření obsahu. Musíte je vytvořit v <strong>Typy obsahu</strong> v části <strong>Nastavení</strong>.",
|
|
45
|
+
"noDocumentTypesEditPermissions": "Oprávnění k úpravám pro tento typ obsahu",
|
|
46
|
+
"noDocumentTypesCreateNew": "Vytvořit nový typ obsahu",
|
|
47
|
+
"noDocumentTypesAllowedAtRoot": "Nejsou zde k dispozici žádné povolené typy obsahu pro vytváření obsahu. Musíte je povolit v sekci <strong>Typy obsahu</strong> v části <strong>Nastavení</strong> změnou možnosti <strong>Povolit jako root</strong> v části <strong>Struktura</strong>.",
|
|
48
|
+
"documentTypeWithoutTemplate": "Typ obsahu bez šablony"
|
|
49
|
+
},
|
|
50
|
+
"prompt": {
|
|
51
|
+
"doctypeChangeWarning": "Máte neuložené změny. Provedením změn typu obsahu změny zahodíte."
|
|
52
|
+
},
|
|
53
|
+
"settings": {
|
|
54
|
+
"importDocumentTypeHelp": "Pro importování typu obsahu vyhledejte soubor \".udt\" ve svém počítači tak, že kliknete na tlačítko \"Prohledat\" a pak kliknete na \"Import\" (na následující obrazovce budete vyzváni k potvrzení)"
|
|
55
|
+
},
|
|
56
|
+
"speechBubbles": {
|
|
57
|
+
"documentTypeExportedSuccess": "Typ obsahu byl exportován do souboru",
|
|
58
|
+
"documentTypeExportedError": "Při exportu typu obsahu došlo k chybě"
|
|
59
|
+
},
|
|
60
|
+
"contentTypeEditor": {
|
|
61
|
+
"compositionsDescription": "Zdědí záložky a vlastnosti z existujícího typu obsahu. Nové záložky budou přidány do aktuálního typu obsahu nebo sloučeny, pokud existuje záložka se stejným názvem.",
|
|
62
|
+
"compositionRemoveWarning": "Odebráním složení odstraníte všechna související data vlastností. Jakmile uložíte typ obsahu, již není cesta zpět.",
|
|
63
|
+
"allDocumentTypes": "Všechny typy obsahu",
|
|
64
|
+
"usingThisDocument": "použití tohoto typu obsahu bude trvale smazáno, prosím potvrďte, že je chcete také odstranit.",
|
|
65
|
+
"elementCannotToggle": "Jakmile byl typ obsahu použit k vytvoření jedné nebo více položek obsahu, nelze jej změnit na typ prvku."
|
|
66
|
+
},
|
|
67
|
+
"treeHeaders": {
|
|
68
|
+
"documentTypes": "Typy obsahu"
|
|
69
|
+
},
|
|
70
|
+
"references": {
|
|
71
|
+
"labelUsedByDocumentTypes": "Použito v typech obsahu"
|
|
72
|
+
}
|
|
73
|
+
}
|