@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,80 @@
|
|
|
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": "Aşağıdaki formu doldurarak ve 'Şifreyi Değiştir' düğmesini tıklayarak Crombolo Arka Ofisine erişim şifrenizi değiştirebilirsiniz",
|
|
8
|
+
"createUserHelp": "Crombolo'ya erişim sağlamak için yeni kullanıcılar oluşturun. Yeni bir kullanıcı oluşturulduğunda, kullanıcıyla paylaşabileceğiniz bir şifre oluşturulacaktır.",
|
|
9
|
+
"inviteUserHelp": "Yeni kullanıcıları Crombolo'ya erişim vermeleri için davet edin. Kullanıcıya, Crombolo'da nasıl oturum açılacağına dair bilgiler içeren bir davet e-postası gönderilecektir. Davetler 72 saat sürer.",
|
|
10
|
+
"noConsole": "Crombolo Erişimini Devre Dışı Bırak",
|
|
11
|
+
"userCreatedSuccessHelp": "Yeni kullanıcı başarıyla oluşturuldu. Crombolo'da oturum açmak için aşağıdaki şifreyi kullanın.",
|
|
12
|
+
"userInvitedSuccessHelp": "Yeni kullanıcıya, Crombolo'da nasıl oturum açılacağına ilişkin ayrıntıları içeren bir davetiye gönderildi.",
|
|
13
|
+
"userinviteWelcomeMessage": "Merhabalar, Crombolo'ya hoş geldiniz! Sadece 1 dakika içinde hazır olacaksınız, sadece bir şifre belirlemeniz.",
|
|
14
|
+
"userinviteExpiredMessage": "Crombolo'ya hoş geldiniz! Maalesef davetinizin süresi doldu. Lütfen yöneticinizle iletişime geçin ve yeniden göndermesini isteyin.",
|
|
15
|
+
"documentType": "İçerik Türü"
|
|
16
|
+
},
|
|
17
|
+
"languages": {
|
|
18
|
+
"defaultLanguageHelp": "Bir Crombolo sitesinde yalnızca bir varsayılan dil ayarı olabilir."
|
|
19
|
+
},
|
|
20
|
+
"paste": {
|
|
21
|
+
"errorMessage": "Yapıştırmaya çalıştığınız metin özel karakterler veya biçimlendirme içeriyor. Bunun nedeni Microsoft Word'den metin kopyalanması olabilir. Crombolo, özel karakterleri veya biçimlendirmeyi otomatik olarak kaldırabilir, böylece yapıştırılan içerik web için daha uygun olacaktır."
|
|
22
|
+
},
|
|
23
|
+
"dashboard": {
|
|
24
|
+
"nothinghappens": "Crombolo açılmıyorsa, bu siteden pop-up'lara izin vermeniz gerekebilir"
|
|
25
|
+
},
|
|
26
|
+
"logViewer": {
|
|
27
|
+
"searchUmbracoSource": "Crombolo Kaynağını Ara",
|
|
28
|
+
"searchWithinUmbracoSourceCodeOnGithub": "Github'da Crombolo kaynak kodu içinde arama",
|
|
29
|
+
"searchUmbracoIssues": "Crombolo Sorunlarını Ara",
|
|
30
|
+
"searchUmbracoIssuesOnGithub": "Github'da Crombolo Sorunlarını Ara"
|
|
31
|
+
},
|
|
32
|
+
"actions": {
|
|
33
|
+
"changeDocType": "İçerik Türünü Değiştir",
|
|
34
|
+
"exportDocumentType": "İçerik Türünü Dışa Aktar",
|
|
35
|
+
"importdocumenttype": "İçerik Türünü İçe Aktar"
|
|
36
|
+
},
|
|
37
|
+
"actionDescriptions": {
|
|
38
|
+
"changeDocType": "Bir düğüm için içerik türünü değiştirmek üzere erişime izin ver"
|
|
39
|
+
},
|
|
40
|
+
"content": {
|
|
41
|
+
"documentType": "İçerik Türü"
|
|
42
|
+
},
|
|
43
|
+
"create": {
|
|
44
|
+
"createContentBlueprint": "İçerik şablonu yapmak istediğiniz içerik türünü seçin",
|
|
45
|
+
"noDocumentTypes": "Burada içerik oluşturmak için izin verilen doküman türü yok. Bunları, <strong>Yapı</strong> altında <strong>İzin verilen alt düğüm türlerini</strong> düzenleyerek <strong>Ayarlar</strong> bölümündeki <strong>İçerik Türleri</strong> 'nde etkinleştirmelisiniz.",
|
|
46
|
+
"noDocumentTypesAtRoot": "Burada içerik oluşturmak için uygun bir içerik türü yok. Öncelikle içerik türlerini <strong>Ayarlar</strong> bölümündeki <strong>İçerik Türleri</strong> 'nde oluşturmanız gerekiyor.",
|
|
47
|
+
"noDocumentTypesEditPermissions": "Şu içerik türü için izinleri düzenleyin",
|
|
48
|
+
"noDocumentTypesCreateNew": "Yeni bir içerik türü oluşturun",
|
|
49
|
+
"noDocumentTypesAllowedAtRoot": "Burada içerik oluşturmak için izin verilen içerik türü yok. Bunları, <strong>Yapı</strong> altında <strong>Kök olarak izin ver</strong> seçeneğini değiştirerek, <strong>Ayarlar</strong> bölümündeki <strong>İçerik Türleri</strong> 'nde etkinleştirmeniz gerekir. ",
|
|
50
|
+
"documentTypeWithoutTemplate": "Şablonsuz İçerik Türü"
|
|
51
|
+
},
|
|
52
|
+
"prompt": {
|
|
53
|
+
"doctypeChangeWarning": "Kaydedilmemiş değişiklikleriniz var. İçerik Türü'nde değişiklik yapmak bu kaydedilmemiş değişikliklerinizi geçersiz kılacaktır."
|
|
54
|
+
},
|
|
55
|
+
"settings": {
|
|
56
|
+
"importDocumentTypeHelp": "\n Bir içerik türünü içe aktarmak için, \"Gözat\" düğmesini tıklayarak bilgisayarınızda \".udt\" dosyasını bulun ve \"İçe Aktar\" ı tıklayın (sonraki ekranda onay vermeniz istenir) "
|
|
57
|
+
},
|
|
58
|
+
"speechBubbles": {
|
|
59
|
+
"contentTypeSavedHeader": "İçerik Türü kaydedildi",
|
|
60
|
+
"documentTypeExportedSuccess": "İçerik türü dosyaya aktarıldı",
|
|
61
|
+
"documentTypeExportedError": "İçerik türü dışa aktarılırken bir hata oluştu"
|
|
62
|
+
},
|
|
63
|
+
"contentTypeEditor": {
|
|
64
|
+
"compositionsDescription": "Mevcut bir içerik türünden sekmeleri ve özellikleri devralın. Mevcut içerik türüne yeni sekmeler eklenecek veya aynı ada sahip bir sekme varsa birleştirilecektir.",
|
|
65
|
+
"compositionRemoveWarning": "Bir kompozisyonun kaldırılması, ilişkili tüm özellik verilerini silecektir. İçerik türünü kaydettikten sonra geri dönüş yoktur.",
|
|
66
|
+
"allDocumentTypes": "Tüm İçerik türleri",
|
|
67
|
+
"usingThisDocument": "bu içerik türünün kullanılması kalıcı olarak silinecektir, lütfen bunları da silmek istediğinizi onaylayın.",
|
|
68
|
+
"elementCannotToggle": "Bir içerik türü, bir veya daha fazla içerik öğesi oluşturmak için kullanıldıktan sonra Öğe türü olarak değiştirilemez."
|
|
69
|
+
},
|
|
70
|
+
"treeHeaders": {
|
|
71
|
+
"documentTypes": "İçerik Türleri"
|
|
72
|
+
},
|
|
73
|
+
"references": {
|
|
74
|
+
"labelUsedByDocumentTypes": "İçerik Türlerinde Kullanılır"
|
|
75
|
+
},
|
|
76
|
+
"contentTemplatesDashboard": {
|
|
77
|
+
"createDescription": "\n <p> İçerik Şablonu oluşturmanın iki yolu vardır: </p>\n <ul>\n <li> Bir içerik düğümünü sağ tıklayın ve yeni bir İçerik Şablonu oluşturmak için \"İçerik Şablonu Oluştur\" u seçin. </li>\n <li> Ayarlar bölümündeki İçerik Şablonları ağacını sağ tıklayın ve İçerik Şablonu oluşturmak istediğiniz İçerik Türünü seçin. </li>\n </ul>\n <p> Bir ad verildiğinde, editörler İçerik Şablonunu yeni sayfalarının temeli olarak kullanmaya başlayabilir. </p>\n ",
|
|
78
|
+
"manageDescription": "Ayarlar bölümündeki \"İçerik Şablonları\" ağacından İçerik Şablonlarını düzenleyebilir ve silebilirsiniz. İçerik Şablonunun dayandığı İçerik Türünü genişletin ve düzenlemek veya silmek için tıklayın."
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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": "Ви можете змінити свій пароль для доступу до адміністративної панелі Crombolo, заповнивши нижченаведені поля та натиснувши кнопку 'Змінити пароль'",
|
|
8
|
+
"createUserHelp": "Створюйте нових користувачів, яким потрібний доступ до адміністративної панелі Crombolo. При створенні користувача генерується новий первинний пароль, який потрібно повідомити користувачеві.",
|
|
9
|
+
"inviteUserHelp": "Запросіть нових користувачів, яким потрібний доступ до адміністративної панелі Crombolo. Запрошеному буде надіслано електронного листа з інструкціями щодо доступу до Crombolo.",
|
|
10
|
+
"noConsole": "Вимкнути доступ до адміністративної панелі Crombolo",
|
|
11
|
+
"userInvitedSuccessHelp": "Новому користувачеві було надіслано запрошення, яке містить інструкції для входу в панель Crombolo.",
|
|
12
|
+
"userinviteWelcomeMessage": "Привіт і ласкаво просимо до Crombolo! Все буде готове протягом декількох хвилин, нам потрібно задати пароль для входу.",
|
|
13
|
+
"documentType": "Тип контенту"
|
|
14
|
+
},
|
|
15
|
+
"actions": {
|
|
16
|
+
"changeDocType": "Змінити тип контенту"
|
|
17
|
+
},
|
|
18
|
+
"actionDescriptions": {
|
|
19
|
+
"changeDocType": "Дозволити доступ до зміни типу контенту для вузла"
|
|
20
|
+
},
|
|
21
|
+
"content": {
|
|
22
|
+
"documentType": "Тип контенту"
|
|
23
|
+
},
|
|
24
|
+
"create": {
|
|
25
|
+
"createContentBlueprint": "Виберіть тип контенту, для якого потрібно створити шаблон вмісту",
|
|
26
|
+
"noDocumentTypes": "Немає жодного дозволеного типу контенту для створення. Необхідно дозволити потрібні Вам типи у секції \"Налаштування\" в дереві <strong>\"Типи контенту\"</strong>.",
|
|
27
|
+
"documentTypeWithoutTemplate": "Тип контенту без зіставленого шаблону"
|
|
28
|
+
},
|
|
29
|
+
"settings": {
|
|
30
|
+
"importDocumentTypeHelp": "Щоб імпортувати тип контенту, знайдіть файл \".udt\" на своєму комп'ютері, натиснувши кнопку \"Огляд\", потім натисніть \"Імпортувати\" (на наступному екрані буде запитано підтвердження для цієї операції)."
|
|
31
|
+
},
|
|
32
|
+
"speechBubbles": {
|
|
33
|
+
"contentTypeSavedHeader": "Тип контенту збережено"
|
|
34
|
+
},
|
|
35
|
+
"contentTypeEditor": {
|
|
36
|
+
"compositionsDescription": "Успадкувати вкладки та властивості з існуючого типу контенту. Вкладки будуть або додані до створюваного типу, або у разі збігу назв вкладок будуть додані успадковані властивості.",
|
|
37
|
+
"compositionInUse": "Цей тип контенту вже бере участь у композиції іншого типу, тому сам може бути композицією.",
|
|
38
|
+
"noAvailableCompositions": "Наразі немає типів контенту, допустимих побудови композиції.",
|
|
39
|
+
"allDocumentTypes": "Всі типи контенту",
|
|
40
|
+
"usingThisDocument": ", що використовують цей тип контенту, будуть безповоротно видалені, будь ласка, підтвердьте цю дію.",
|
|
41
|
+
"compositionUsageSpecification": "Ця композиція зараз використовується при створенні таких типів контенту:"
|
|
42
|
+
},
|
|
43
|
+
"treeHeaders": {
|
|
44
|
+
"documentTypes": "Типи контенту"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../backoffice-dist/dist/umbraco-package-schema.json",
|
|
3
|
+
"name": "Crombolo Localizations",
|
|
4
|
+
"id": "Crombolo.Localizations",
|
|
5
|
+
"version": "0.10.0",
|
|
6
|
+
"allowPublicAccess": false,
|
|
7
|
+
"extensions": [
|
|
8
|
+
{
|
|
9
|
+
"type": "localization",
|
|
10
|
+
"alias": "Crombolo.Localization.Overrides.AR",
|
|
11
|
+
"name": "Crombolo Localization Overrides (ar)",
|
|
12
|
+
"weight": 0,
|
|
13
|
+
"meta": {
|
|
14
|
+
"culture": "ar"
|
|
15
|
+
},
|
|
16
|
+
"js": "/crombolo-plugin/localizations/ar.js"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "localization",
|
|
20
|
+
"alias": "Crombolo.Localization.Overrides.BS",
|
|
21
|
+
"name": "Crombolo Localization Overrides (bs)",
|
|
22
|
+
"weight": 0,
|
|
23
|
+
"meta": {
|
|
24
|
+
"culture": "bs"
|
|
25
|
+
},
|
|
26
|
+
"js": "/crombolo-plugin/localizations/bs.js"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "localization",
|
|
30
|
+
"alias": "Crombolo.Localization.Overrides.CS",
|
|
31
|
+
"name": "Crombolo Localization Overrides (cs)",
|
|
32
|
+
"weight": 0,
|
|
33
|
+
"meta": {
|
|
34
|
+
"culture": "cs"
|
|
35
|
+
},
|
|
36
|
+
"js": "/crombolo-plugin/localizations/cs.js"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"type": "localization",
|
|
40
|
+
"alias": "Crombolo.Localization.Overrides.CY",
|
|
41
|
+
"name": "Crombolo Localization Overrides (cy)",
|
|
42
|
+
"weight": 0,
|
|
43
|
+
"meta": {
|
|
44
|
+
"culture": "cy"
|
|
45
|
+
},
|
|
46
|
+
"js": "/crombolo-plugin/localizations/cy.js"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "localization",
|
|
50
|
+
"alias": "Crombolo.Localization.Overrides.DA",
|
|
51
|
+
"name": "Crombolo Localization Overrides (da)",
|
|
52
|
+
"weight": 0,
|
|
53
|
+
"meta": {
|
|
54
|
+
"culture": "da"
|
|
55
|
+
},
|
|
56
|
+
"js": "/crombolo-plugin/localizations/da.js"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "localization",
|
|
60
|
+
"alias": "Crombolo.Localization.Overrides.DE",
|
|
61
|
+
"name": "Crombolo Localization Overrides (de)",
|
|
62
|
+
"weight": 0,
|
|
63
|
+
"meta": {
|
|
64
|
+
"culture": "de"
|
|
65
|
+
},
|
|
66
|
+
"js": "/crombolo-plugin/localizations/de.js"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "localization",
|
|
70
|
+
"alias": "Crombolo.Localization.Overrides.EN",
|
|
71
|
+
"name": "Crombolo Localization Overrides (en)",
|
|
72
|
+
"weight": 0,
|
|
73
|
+
"meta": {
|
|
74
|
+
"culture": "en"
|
|
75
|
+
},
|
|
76
|
+
"js": "/crombolo-plugin/localizations/en.js"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "localization",
|
|
80
|
+
"alias": "Crombolo.Localization.Overrides.ES",
|
|
81
|
+
"name": "Crombolo Localization Overrides (es)",
|
|
82
|
+
"weight": 0,
|
|
83
|
+
"meta": {
|
|
84
|
+
"culture": "es"
|
|
85
|
+
},
|
|
86
|
+
"js": "/crombolo-plugin/localizations/es.js"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"type": "localization",
|
|
90
|
+
"alias": "Crombolo.Localization.Overrides.FR",
|
|
91
|
+
"name": "Crombolo Localization Overrides (fr)",
|
|
92
|
+
"weight": 0,
|
|
93
|
+
"meta": {
|
|
94
|
+
"culture": "fr"
|
|
95
|
+
},
|
|
96
|
+
"js": "/crombolo-plugin/localizations/fr.js"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"type": "localization",
|
|
100
|
+
"alias": "Crombolo.Localization.Overrides.HE",
|
|
101
|
+
"name": "Crombolo Localization Overrides (he)",
|
|
102
|
+
"weight": 0,
|
|
103
|
+
"meta": {
|
|
104
|
+
"culture": "he"
|
|
105
|
+
},
|
|
106
|
+
"js": "/crombolo-plugin/localizations/he.js"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"type": "localization",
|
|
110
|
+
"alias": "Crombolo.Localization.Overrides.HR",
|
|
111
|
+
"name": "Crombolo Localization Overrides (hr)",
|
|
112
|
+
"weight": 0,
|
|
113
|
+
"meta": {
|
|
114
|
+
"culture": "hr"
|
|
115
|
+
},
|
|
116
|
+
"js": "/crombolo-plugin/localizations/hr.js"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "localization",
|
|
120
|
+
"alias": "Crombolo.Localization.Overrides.IT",
|
|
121
|
+
"name": "Crombolo Localization Overrides (it)",
|
|
122
|
+
"weight": 0,
|
|
123
|
+
"meta": {
|
|
124
|
+
"culture": "it"
|
|
125
|
+
},
|
|
126
|
+
"js": "/crombolo-plugin/localizations/it.js"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"type": "localization",
|
|
130
|
+
"alias": "Crombolo.Localization.Overrides.JA",
|
|
131
|
+
"name": "Crombolo Localization Overrides (ja)",
|
|
132
|
+
"weight": 0,
|
|
133
|
+
"meta": {
|
|
134
|
+
"culture": "ja"
|
|
135
|
+
},
|
|
136
|
+
"js": "/crombolo-plugin/localizations/ja.js"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"type": "localization",
|
|
140
|
+
"alias": "Crombolo.Localization.Overrides.KO",
|
|
141
|
+
"name": "Crombolo Localization Overrides (ko)",
|
|
142
|
+
"weight": 0,
|
|
143
|
+
"meta": {
|
|
144
|
+
"culture": "ko"
|
|
145
|
+
},
|
|
146
|
+
"js": "/crombolo-plugin/localizations/ko.js"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"type": "localization",
|
|
150
|
+
"alias": "Crombolo.Localization.Overrides.NB",
|
|
151
|
+
"name": "Crombolo Localization Overrides (nb)",
|
|
152
|
+
"weight": 0,
|
|
153
|
+
"meta": {
|
|
154
|
+
"culture": "nb"
|
|
155
|
+
},
|
|
156
|
+
"js": "/crombolo-plugin/localizations/nb.js"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"type": "localization",
|
|
160
|
+
"alias": "Crombolo.Localization.Overrides.NL",
|
|
161
|
+
"name": "Crombolo Localization Overrides (nl)",
|
|
162
|
+
"weight": 0,
|
|
163
|
+
"meta": {
|
|
164
|
+
"culture": "nl"
|
|
165
|
+
},
|
|
166
|
+
"js": "/crombolo-plugin/localizations/nl.js"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"type": "localization",
|
|
170
|
+
"alias": "Crombolo.Localization.Overrides.PL",
|
|
171
|
+
"name": "Crombolo Localization Overrides (pl)",
|
|
172
|
+
"weight": 0,
|
|
173
|
+
"meta": {
|
|
174
|
+
"culture": "pl"
|
|
175
|
+
},
|
|
176
|
+
"js": "/crombolo-plugin/localizations/pl.js"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"type": "localization",
|
|
180
|
+
"alias": "Crombolo.Localization.Overrides.PT",
|
|
181
|
+
"name": "Crombolo Localization Overrides (pt)",
|
|
182
|
+
"weight": 0,
|
|
183
|
+
"meta": {
|
|
184
|
+
"culture": "pt"
|
|
185
|
+
},
|
|
186
|
+
"js": "/crombolo-plugin/localizations/pt.js"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"type": "localization",
|
|
190
|
+
"alias": "Crombolo.Localization.Overrides.PT_BR",
|
|
191
|
+
"name": "Crombolo Localization Overrides (pt-br)",
|
|
192
|
+
"weight": 0,
|
|
193
|
+
"meta": {
|
|
194
|
+
"culture": "pt-br"
|
|
195
|
+
},
|
|
196
|
+
"js": "/crombolo-plugin/localizations/pt-br.js"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"type": "localization",
|
|
200
|
+
"alias": "Crombolo.Localization.Overrides.RO",
|
|
201
|
+
"name": "Crombolo Localization Overrides (ro)",
|
|
202
|
+
"weight": 0,
|
|
203
|
+
"meta": {
|
|
204
|
+
"culture": "ro"
|
|
205
|
+
},
|
|
206
|
+
"js": "/crombolo-plugin/localizations/ro.js"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"type": "localization",
|
|
210
|
+
"alias": "Crombolo.Localization.Overrides.RU",
|
|
211
|
+
"name": "Crombolo Localization Overrides (ru)",
|
|
212
|
+
"weight": 0,
|
|
213
|
+
"meta": {
|
|
214
|
+
"culture": "ru"
|
|
215
|
+
},
|
|
216
|
+
"js": "/crombolo-plugin/localizations/ru.js"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"type": "localization",
|
|
220
|
+
"alias": "Crombolo.Localization.Overrides.SV",
|
|
221
|
+
"name": "Crombolo Localization Overrides (sv)",
|
|
222
|
+
"weight": 0,
|
|
223
|
+
"meta": {
|
|
224
|
+
"culture": "sv"
|
|
225
|
+
},
|
|
226
|
+
"js": "/crombolo-plugin/localizations/sv.js"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"type": "localization",
|
|
230
|
+
"alias": "Crombolo.Localization.Overrides.TR",
|
|
231
|
+
"name": "Crombolo Localization Overrides (tr)",
|
|
232
|
+
"weight": 0,
|
|
233
|
+
"meta": {
|
|
234
|
+
"culture": "tr"
|
|
235
|
+
},
|
|
236
|
+
"js": "/crombolo-plugin/localizations/tr.js"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"type": "localization",
|
|
240
|
+
"alias": "Crombolo.Localization.Overrides.UK",
|
|
241
|
+
"name": "Crombolo Localization Overrides (uk)",
|
|
242
|
+
"weight": 0,
|
|
243
|
+
"meta": {
|
|
244
|
+
"culture": "uk"
|
|
245
|
+
},
|
|
246
|
+
"js": "/crombolo-plugin/localizations/uk.js"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"type": "localization",
|
|
250
|
+
"alias": "Crombolo.Localization.Overrides.ZH",
|
|
251
|
+
"name": "Crombolo Localization Overrides (zh)",
|
|
252
|
+
"weight": 0,
|
|
253
|
+
"meta": {
|
|
254
|
+
"culture": "zh"
|
|
255
|
+
},
|
|
256
|
+
"js": "/crombolo-plugin/localizations/zh.js"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"type": "localization",
|
|
260
|
+
"alias": "Crombolo.Localization.Overrides.ZH_TW",
|
|
261
|
+
"name": "Crombolo Localization Overrides (zh-tw)",
|
|
262
|
+
"weight": 0,
|
|
263
|
+
"meta": {
|
|
264
|
+
"culture": "zh-tw"
|
|
265
|
+
},
|
|
266
|
+
"js": "/crombolo-plugin/localizations/zh-tw.js"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"type": "localization",
|
|
270
|
+
"alias": "Crombolo.Localization.Overrides.VI",
|
|
271
|
+
"name": "Crombolo Localization Overrides (vi)",
|
|
272
|
+
"weight": 0,
|
|
273
|
+
"meta": {
|
|
274
|
+
"culture": "vi"
|
|
275
|
+
},
|
|
276
|
+
"js": "/crombolo-plugin/localizations/vi.js"
|
|
277
|
+
}
|
|
278
|
+
]
|
|
279
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
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": "Đăng nhập vào Crombolo"
|
|
8
|
+
},
|
|
9
|
+
"user": {
|
|
10
|
+
"changePasswordDescription": "Bạn có thể thay đổi mật khẩu của mình để truy cập vào Crombolo backoffice bằng cách điền vào mẫu dưới đây và nhấp vào nút 'Đổi mật khẩu'",
|
|
11
|
+
"createUserHelp": "Tạo người dùng mới để cấp quyền truy cập cho họ vào Crombolo. Khi một người dùng mới được tạo, một mật khẩu sẽ được tạo ra mà bạn có thể chia sẻ với người dùng đó.",
|
|
12
|
+
"inviteUserHelp": "Mời người dùng mới để cấp quyền truy cập cho họ vào Crombolo. Một email mời sẽ được gửi đến người dùng với thông tin về cách đăng nhập vào Crombolo. Thời gian hiệu lực của lời mời là 72 giờ.",
|
|
13
|
+
"noConsole": "Vô hiệu hóa quyền truy cập Crombolo",
|
|
14
|
+
"userCreatedSuccessHelp": "Người dùng mới đã được tạo thành công. Để đăng nhập vào Crombolo, hãy sử dụng mật khẩu bên dưới.",
|
|
15
|
+
"userInvitedSuccessHelp": "Một lời mời đã được gửi đến người dùng mới với thông tin chi tiết về cách đăng nhập vào Crombolo.",
|
|
16
|
+
"userinviteWelcomeMessage": "Xin chào và chào mừng bạn đến với Crombolo! Chỉ trong 1 phút, bạn sẽ sẵn sàng sử dụng. Chúng tôi chỉ cần bạn tạo mật khẩu và thêm hình đại diện cho tài khoản.",
|
|
17
|
+
"userinviteExpiredMessage": "Chào mừng bạn đến với Crombolo! Rất tiếc, lời mời của bạn đã hết hạn. Vui lòng liên hệ với quản trị viên của bạn và yêu cầu họ gửi lại lời mời.",
|
|
18
|
+
"documentType": "Loại nội dung"
|
|
19
|
+
},
|
|
20
|
+
"general": {
|
|
21
|
+
"umbracoInfo": "Thông tin Crombolo"
|
|
22
|
+
},
|
|
23
|
+
"buttons": {
|
|
24
|
+
"viewSystemDetails": "Xem thông tin hệ thống Crombolo CMS và số phiên bản"
|
|
25
|
+
},
|
|
26
|
+
"visuallyHiddenTexts": {
|
|
27
|
+
"searchOverlayTitle": "Tìm kiếm trong Crombolo backoffice"
|
|
28
|
+
},
|
|
29
|
+
"languages": {
|
|
30
|
+
"defaultLanguageHelp": "Một trang Crombolo chỉ có thể có một ngôn ngữ mặc định được thiết lập."
|
|
31
|
+
},
|
|
32
|
+
"paste": {
|
|
33
|
+
"errorMessage": "Văn bản bạn đang cố dán chứa các ký tự hoặc định dạng đặc biệt. Điều này có thể do việc sao chép văn bản từ Microsoft Word. Crombolo có thể tự động loại bỏ các ký tự hoặc định dạng đặc biệt, vì vậy nội dung được dán sẽ phù hợp hơn với web."
|
|
34
|
+
},
|
|
35
|
+
"dashboard": {
|
|
36
|
+
"nothinghappens": "Nếu Crombolo không mở, bạn có thể cần cho phép cửa sổ bật lên từ trang này"
|
|
37
|
+
},
|
|
38
|
+
"logViewer": {
|
|
39
|
+
"searchUmbracoSource": "Tìm kiếm mã nguồn Crombolo",
|
|
40
|
+
"searchWithinUmbracoSourceCodeOnGithub": "Tìm trong mã nguồn Crombolo trên GitHub",
|
|
41
|
+
"searchUmbracoIssues": "Tìm kiếm vấn đề của Crombolo",
|
|
42
|
+
"searchUmbracoIssuesOnGithub": "Tìm vấn đề của Crombolo trên GitHub"
|
|
43
|
+
},
|
|
44
|
+
"defaultdialogs": {
|
|
45
|
+
"linkYourConfirm": "Bạn sắp liên kết tài khoản Crombolo và {0} của mình và bạn sẽ được chuyển hướng đến {0} để xác nhận.",
|
|
46
|
+
"unLinkYourConfirm": "Bạn sắp hủy liên kết tài khoản Crombolo và {0} của mình và bạn sẽ bị đăng xuất."
|
|
47
|
+
},
|
|
48
|
+
"actions": {
|
|
49
|
+
"changeDocType": "Thay đổi loại nội dung",
|
|
50
|
+
"exportDocumentType": "Xuất khẩu loại nội dung",
|
|
51
|
+
"importdocumenttype": "Nhập khẩu loại nội dung"
|
|
52
|
+
},
|
|
53
|
+
"actionDescriptions": {
|
|
54
|
+
"changeDocType": "Cho phép truy cập để thay đổi loại nội dung cho một tài liệu"
|
|
55
|
+
},
|
|
56
|
+
"content": {
|
|
57
|
+
"documentType": "Loại Nội dung"
|
|
58
|
+
},
|
|
59
|
+
"create": {
|
|
60
|
+
"createContentBlueprint": "Chọn loại nội dung bạn muốn tạo bản mẫu tài liệu cho",
|
|
61
|
+
"noDocumentTypes": "Không có loại nội dung nào được phép để tạo nội dung ở đây. Bạn phải kích hoạt chúng trong <strong>Content Types</strong> trong phần <strong>Settings</strong>, bằng cách chỉnh sửa <strong>Allowed child node types</strong> dưới <strong>Structure</strong>.",
|
|
62
|
+
"noDocumentTypesAtRoot": "Không có loại nội dung nào có sẵn để tạo nội dung ở đây. Bạn phải tạo chúng trong <strong>Content Types</strong> trong phần <strong>Settings</strong>.",
|
|
63
|
+
"noDocumentTypesEditPermissions": "Chỉnh sửa quyền cho loại nội dung này",
|
|
64
|
+
"noDocumentTypesCreateNew": "Tạo một loại nội dung mới",
|
|
65
|
+
"noDocumentTypesAllowedAtRoot": "Không có loại nội dung nào được phép có sẵn để tạo nội dung ở đây. Bạn phải kích hoạt chúng trong <strong>Content Types</strong> trong phần <strong>Settings</strong>, bằng cách thay đổi tùy chọn <strong>Allow as root</strong> dưới <strong>Structure</strong>.",
|
|
66
|
+
"documentTypeWithoutTemplate": "Loại nội dung không có mẫu",
|
|
67
|
+
"documentTypeWithTemplate": "Loại nội dung có mẫu",
|
|
68
|
+
"documentType": "Loại nội dung",
|
|
69
|
+
"compositionDescription": "Xác định một tập hợp thuộc tính có thể tái sử dụng, được đưa vào định nghĩa của nhiều Loại nội dung khác nhau. Ví dụ: một tập hợp 'Cài đặt trang chung'."
|
|
70
|
+
},
|
|
71
|
+
"prompt": {
|
|
72
|
+
"doctypeChangeWarning": "Bạn có thay đổi chưa lưu. Thay đổi Loại nội dung sẽ hủy bỏ các thay đổi."
|
|
73
|
+
},
|
|
74
|
+
"settings": {
|
|
75
|
+
"importDocumentTypeHelp": "Để nhập một loại nội dung, hãy tìm tệp \".udt\" trên máy tính của bạn bằng cách nhấp vào nút \"Nhập\" (bạn sẽ được yêu cầu xác nhận trên màn hình tiếp theo)"
|
|
76
|
+
},
|
|
77
|
+
"speechBubbles": {
|
|
78
|
+
"contentTypeSavedHeader": "Loại nội dung đã được lưu",
|
|
79
|
+
"documentTypeExportedSuccess": "Content Type đã được xuất ra file",
|
|
80
|
+
"documentTypeExportedError": "Đã xảy ra lỗi khi xuất Content Type"
|
|
81
|
+
},
|
|
82
|
+
"contentTypeEditor": {
|
|
83
|
+
"compositionsDescription": "Kế thừa các tab và thuộc tính từ một loại nội dung hiện có. Các tab mới sẽ được thêm vào loại nội dung hiện tại hoặc được hợp nhất nếu một tab có tên giống hệt tồn tại.",
|
|
84
|
+
"compositionRemoveWarning": "Việc xóa một thành phần sẽ xóa tất cả dữ liệu thuộc tính liên quan. Khi bạn lưu loại nội dung, sẽ không có cách nào quay lại.",
|
|
85
|
+
"allDocumentTypes": "Tất cả các loại nội dung",
|
|
86
|
+
"usingThisDocument": "Việc sử dụng loại nội dung này sẽ bị xóa vĩnh viễn, vui lòng xác nhận bạn muốn xóa những cái này.",
|
|
87
|
+
"compositionUsageSpecification": "Loại nội dung này hiện đang được sử dụng trong thành phần của các loại nội dung sau:",
|
|
88
|
+
"elementDescription": "Một loại phần tử được sử dụng trong các loại nội dung khác, và không nằm trong cây nội dung.",
|
|
89
|
+
"elementCannotToggle": "Loại nội dung không thể được thay đổi thành loại phần tử một khi nó đã được sử dụng để tạo một hoặc nhiều mục nội dung."
|
|
90
|
+
},
|
|
91
|
+
"webhooks": {
|
|
92
|
+
"addDocumentType": "Thêm loại nội dung"
|
|
93
|
+
},
|
|
94
|
+
"treeHeaders": {
|
|
95
|
+
"documentTypes": "Loại nội dung"
|
|
96
|
+
},
|
|
97
|
+
"references": {
|
|
98
|
+
"labelUsedByDocumentTypes": "Được sử dụng trong các Loại Nội dung"
|
|
99
|
+
},
|
|
100
|
+
"contentTemplatesDashboard": {
|
|
101
|
+
"createDescription": "<p>Có hai cách để tạo một Mẫu tài liệu:</p><ul><li>Nhấp chuột phải vào một nút nội dung và chọn \"Tạo Mẫu tài liệu\" để tạo một Mẫu tài liệu mới.</li><li>Nhấp chuột phải vào cây Mẫu tài liệu trong phần Cài đặt và chọn Loại nội dung mà bạn muốn tạo Mẫu tài liệu cho.</li></ul><p>Sau khi được đặt tên, các biên tập viên có thể bắt đầu sử dụng Mẫu tài liệu như một nền tảng cho trang mới của họ.</p>",
|
|
102
|
+
"manageDescription": "Bạn có thể chỉnh sửa và xóa Mẫu tài liệu từ cây \"Mẫu tài liệu\" trong phần Cài đặt. Mở rộng Loại nội dung mà Mẫu tài liệu dựa trên đó và nhấp vào để chỉnh sửa hoặc xóa."
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
"paste": {
|
|
7
|
+
"errorMessage": "您所粘貼的文本含有特殊字元或格式,Crombolo將清除以適應網頁。"
|
|
8
|
+
},
|
|
9
|
+
"dashboard": {
|
|
10
|
+
"nothinghappens": "如果Crombolo沒有打開,您可能需要允許彈出式視窗。"
|
|
11
|
+
},
|
|
12
|
+
"actions": {
|
|
13
|
+
"changeDocType": "改變內容類型",
|
|
14
|
+
"exportDocumentType": "匯出內容類型",
|
|
15
|
+
"importdocumenttype": "導入內容類型"
|
|
16
|
+
},
|
|
17
|
+
"content": {
|
|
18
|
+
"documentType": "內容類型"
|
|
19
|
+
},
|
|
20
|
+
"create": {
|
|
21
|
+
"noDocumentTypes": "此處沒有被允許的內容類型。請至設定中的 <strong>\"內容類型\"</strong>處變更。",
|
|
22
|
+
"documentTypeWithoutTemplate": "內容類型沒有相關範本"
|
|
23
|
+
},
|
|
24
|
+
"settings": {
|
|
25
|
+
"importDocumentTypeHelp": "要導入內容類型,請點擊“流覽”按鈕,再點擊“導入”,然後在您電腦上查找 \".udt\"檔導入(下一頁中需要您再次確認)"
|
|
26
|
+
},
|
|
27
|
+
"contentTypeEditor": {
|
|
28
|
+
"compositionsDescription": "從已存在的內容類型中繼承選項卡以及屬性。新選項卡將被新增至目前內容類型或合併至已存在同名的選項卡中。",
|
|
29
|
+
"allDocumentTypes": "所有內容類型",
|
|
30
|
+
"usingThisDocument": "使用此內容類型的將被永久刪除,請確認您也想要將它們刪除。"
|
|
31
|
+
},
|
|
32
|
+
"treeHeaders": {
|
|
33
|
+
"documentTypes": "內容類型"
|
|
34
|
+
},
|
|
35
|
+
"user": {
|
|
36
|
+
"documentType": "內容類型"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
"paste": {
|
|
7
|
+
"errorMessage": "您所粘贴的文本含有特殊字符或格式,Crombolo将清除以适应网页。"
|
|
8
|
+
},
|
|
9
|
+
"dashboard": {
|
|
10
|
+
"nothinghappens": "如果Crombolo没有打开,您可能需要允许弹出式窗口。"
|
|
11
|
+
},
|
|
12
|
+
"actions": {
|
|
13
|
+
"changeDocType": "改变内容类型",
|
|
14
|
+
"exportDocumentType": "导出内容类型",
|
|
15
|
+
"importdocumenttype": "导入内容类型"
|
|
16
|
+
},
|
|
17
|
+
"content": {
|
|
18
|
+
"documentType": "内容类型"
|
|
19
|
+
},
|
|
20
|
+
"create": {
|
|
21
|
+
"noDocumentTypes": "没有允许的内容类型可用。必须在 <strong> \"内容类型\" </strong> 下的 \"设置\" 部分中启用这些内容。",
|
|
22
|
+
"documentTypeWithoutTemplate": "没有模板的内容类型"
|
|
23
|
+
},
|
|
24
|
+
"settings": {
|
|
25
|
+
"importDocumentTypeHelp": "要导入内容类型,请点击“浏览”按钮,再点击“导入”,然后在您电脑上查找 \".udt\"文件导入(下一页中需要您再次确认)"
|
|
26
|
+
},
|
|
27
|
+
"contentTypeEditor": {
|
|
28
|
+
"compositionsDescription": "从现有内容类型继承选项卡和属性。如果存在同名的选项卡, 则新选项卡将添加到当前内容类型或合并。",
|
|
29
|
+
"allDocumentTypes": "所有内容类型",
|
|
30
|
+
"usingThisDocument": "使用此内容类型将被永久删除, 请确认您还要删除这些文件。"
|
|
31
|
+
},
|
|
32
|
+
"treeHeaders": {
|
|
33
|
+
"documentTypes": "内容类型"
|
|
34
|
+
},
|
|
35
|
+
"user": {
|
|
36
|
+
"documentType": "内容类型"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A header app that shows when this server has fallen behind the database:
|
|
3
|
+
* reads keep working, writes answer 409, and the load balancer is draining it.
|
|
4
|
+
*/
|
|
5
|
+
import { css, html, LitElement, nothing } from '@umbraco-cms/backoffice/external/lit'
|
|
6
|
+
import { fetchReport } from './report-client.js'
|
|
7
|
+
|
|
8
|
+
export default class CromboloReadOnlyBannerElement extends LitElement {
|
|
9
|
+
static properties = { _health: { state: true } }
|
|
10
|
+
|
|
11
|
+
constructor() {
|
|
12
|
+
super()
|
|
13
|
+
this._health = undefined
|
|
14
|
+
this._timer = undefined
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
connectedCallback() {
|
|
18
|
+
super.connectedCallback()
|
|
19
|
+
this.#poll()
|
|
20
|
+
this._timer = setInterval(() => this.#poll(), 15_000)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
disconnectedCallback() {
|
|
24
|
+
super.disconnectedCallback()
|
|
25
|
+
clearInterval(this._timer)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async #poll() {
|
|
29
|
+
try {
|
|
30
|
+
this._health = (await fetchReport()).health
|
|
31
|
+
} catch {
|
|
32
|
+
// The report is not reachable; say nothing rather than something wrong.
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
render() {
|
|
37
|
+
if (!this._health?.readOnly) return nothing
|
|
38
|
+
return html`<uui-tag color="warning" look="primary" title="An upgrade moved the database past this server (${this._health.version}+${this._health.revision}). Editing resumes on the new servers.">
|
|
39
|
+
Read-only: upgrade in progress
|
|
40
|
+
</uui-tag>`
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static styles = css`
|
|
44
|
+
:host { display: flex; align-items: center; padding: 0 var(--uui-size-space-3); }
|
|
45
|
+
`
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
customElements.define('crombolo-read-only-banner', CromboloReadOnlyBannerElement)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads the change report the server keeps at <backoffice>/crombolo/api/change-report.
|
|
3
|
+
* The cookie carries the session, so no token handling is needed here.
|
|
4
|
+
*/
|
|
5
|
+
export async function fetchReport() {
|
|
6
|
+
const base = document.querySelector('base')?.getAttribute('href') ?? '/umbraco/'
|
|
7
|
+
const response = await fetch(`${base.replace(/\/$/, '')}/crombolo/api/change-report`, {
|
|
8
|
+
credentials: 'include',
|
|
9
|
+
headers: { accept: 'application/json' },
|
|
10
|
+
})
|
|
11
|
+
if (!response.ok) throw new Error(`change report responded ${response.status}`)
|
|
12
|
+
return response.json()
|
|
13
|
+
}
|