From f5a6d8b13fd7c5e5e71bf5095598aaeff85d282b Mon Sep 17 00:00:00 2001
From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Date: Mon, 7 Oct 2024 13:14:49 +0200
Subject: [PATCH 1/2] Merge commit from fork
* fix: remove unwanted HTML from translation values
* feat: add a general sanitizeHTML function
* fix: use the `sanitizeHTML` function where values are showed in the Backoffice
---
src/assets/lang/bs.ts | 4 ++--
src/assets/lang/cs-cz.ts | 4 ++--
src/assets/lang/cy-gb.ts | 4 ++--
src/assets/lang/da-dk.ts | 4 ++--
src/assets/lang/de-de.ts | 4 ++--
src/assets/lang/en-us.ts | 4 ++--
src/assets/lang/en.ts | 4 ++--
src/assets/lang/es-es.ts | 6 +++---
src/assets/lang/fr-fr.ts | 5 ++---
src/assets/lang/he-il.ts | 2 +-
src/assets/lang/hr-hr.ts | 4 ++--
src/assets/lang/it-it.ts | 2 +-
src/assets/lang/ja-jp.ts | 2 +-
src/assets/lang/ko-kr.ts | 2 +-
src/assets/lang/nb-no.ts | 4 +++-
src/assets/lang/nl-nl.ts | 4 ++--
src/assets/lang/pl-pl.ts | 4 ++--
src/assets/lang/pt-br.ts | 2 +-
src/assets/lang/ru-ru.ts | 4 ++--
src/assets/lang/tr-tr.ts | 4 ++--
src/assets/lang/uk-ua.ts | 4 ++--
src/assets/lang/zh-cn.ts | 4 ++--
src/assets/lang/zh-tw.ts | 3 +--
src/packages/core/utils/index.ts | 1 +
.../utils/sanitize/sanitize-html.function.ts | 10 ++++++++++
.../workspace-view-dictionary-editor.element.ts | 17 +++++++++++------
.../input-markdown.element.ts | 4 ++--
27 files changed, 66 insertions(+), 50 deletions(-)
create mode 100644 src/packages/core/utils/sanitize/sanitize-html.function.ts
diff --git a/src/assets/lang/bs.ts b/src/assets/lang/bs.ts
index bfc3158628..d7b50553cf 100644
--- a/src/assets/lang/bs.ts
+++ b/src/assets/lang/bs.ts
@@ -566,9 +566,9 @@ export default {
createNew: 'Kreirajte stavku iz rječnika',
},
dictionaryItem: {
- description: "\n Uredite različite jezičke verzije za stavku rječnika '%0%' ispod\n ",
+ description: "Uredite različite jezičke verzije za stavku rječnika '%0%' ispod",
displayName: 'Kultura',
- changeKeyError: "\n Ključ '%0%' već postoji.\n ",
+ changeKeyError: "Ključ '%0%' već postoji.",
overviewTitle: 'Pregled riječnika',
},
examineManagement: {
diff --git a/src/assets/lang/cs-cz.ts b/src/assets/lang/cs-cz.ts
index 08ac94fae7..5190da61f0 100644
--- a/src/assets/lang/cs-cz.ts
+++ b/src/assets/lang/cs-cz.ts
@@ -498,9 +498,9 @@ export default {
},
dictionaryItem: {
description:
- "\n Editujte různé jazykové verze pro položku slovníku '%0%' níže.
Můžete přidat další jazyky v nabídce 'jazyky' nalevo.",
+ "Editujte různé jazykové verze pro položku slovníku '%0%' níže.
Můžete přidat další jazyky v nabídce 'jazyky' nalevo.",
displayName: 'Název jazyka',
- changeKeyError: "\n Klíč '%0%' již existuje.\n ",
+ changeKeyError: "Klíč '%0%' již existuje.",
overviewTitle: 'Přehled slovníku',
},
examineManagement: {
diff --git a/src/assets/lang/cy-gb.ts b/src/assets/lang/cy-gb.ts
index 4d320ab231..afea7d0aff 100644
--- a/src/assets/lang/cy-gb.ts
+++ b/src/assets/lang/cy-gb.ts
@@ -591,9 +591,9 @@ export default {
},
dictionaryItem: {
description:
- "\n Golygwch y fersiynau iaith gwahanol ar gyfer yr eitem geiriadur '%0%' islaw
Gallwch ychwanegu ieithoedd ychwanegol o dan 'ieithoedd' yn y ddewislen ar y chwith\n ",
+ "Golygwch y fersiynau iaith gwahanol ar gyfer yr eitem geiriadur '%0%' islaw
Gallwch ychwanegu ieithoedd ychwanegol o dan 'ieithoedd' yn y ddewislen ar y chwith",
displayName: 'Enw Diwylliant',
- changeKeyError: "\n Mae'r allwedd '%0%' yn bodoli eisoes.\n ",
+ changeKeyError: "Mae'r allwedd '%0%' yn bodoli eisoes.",
overviewTitle: 'Trosolwg Geiriadur',
},
examineManagement: {
diff --git a/src/assets/lang/da-dk.ts b/src/assets/lang/da-dk.ts
index a56efd4c07..b108b364d2 100644
--- a/src/assets/lang/da-dk.ts
+++ b/src/assets/lang/da-dk.ts
@@ -585,9 +585,9 @@ export default {
},
dictionaryItem: {
description:
- "\n Rediger de forskellige sprogversioner for ordbogselementet '%0%' herunder.
Du tilføjer flere sprog under 'sprog' i menuen til venstre \n ",
+ "Rediger de forskellige sprogversioner for ordbogselementet '%0%' herunder. Du tilføjer flere sprog under 'sprog' i menuen til venstre.",
displayName: 'Kulturnavn',
- changeKeyError: "\n Navnet '%0%' eksisterer allerede.\n ",
+ changeKeyError: "Navnet '%0%' eksisterer allerede.",
overviewTitle: 'Ordbogsoversigt',
},
examineManagement: {
diff --git a/src/assets/lang/de-de.ts b/src/assets/lang/de-de.ts
index 3d4af17cd2..fed36b1c08 100644
--- a/src/assets/lang/de-de.ts
+++ b/src/assets/lang/de-de.ts
@@ -590,9 +590,9 @@ export default {
},
dictionaryItem: {
description:
- "\n Bearbeiten Sie nachfolgend die verschiedenen Sprachversionen für den Wörterbucheintrag '%0%'.\n
Unter dem links angezeigten Menüpunkt 'Sprachen' können Sie weitere hinzufügen.",
+ "Bearbeiten Sie nachfolgend die verschiedenen Sprachversionen für den Wörterbucheintrag '%0%'.
Unter dem links angezeigten Menüpunkt 'Sprachen' können Sie weitere hinzufügen.",
displayName: 'Name der Kultur',
- changeKeyError: "\n Der Wert '%0%' ist bereits vorhanden.\n ",
+ changeKeyError: "Der Wert '%0%' ist bereits vorhanden.",
overviewTitle: 'Wörterbuch Übersicht',
},
examineManagement: {
diff --git a/src/assets/lang/en-us.ts b/src/assets/lang/en-us.ts
index 175e8c78d8..f6bc327907 100644
--- a/src/assets/lang/en-us.ts
+++ b/src/assets/lang/en-us.ts
@@ -595,9 +595,9 @@ export default {
createNew: 'Create dictionary item',
},
dictionaryItem: {
- description: "\n Edit the different language versions for the dictionary item '%0%' below\n ",
+ description: "Edit the different language versions for the dictionary item '%0%' below",
displayName: 'Culture Name',
- changeKeyError: "\n The key '%0%' already exists.\n ",
+ changeKeyError: "The key '%0%' already exists.",
overviewTitle: 'Dictionary overview',
},
examineManagement: {
diff --git a/src/assets/lang/en.ts b/src/assets/lang/en.ts
index 495129c5cc..4f56678a8b 100644
--- a/src/assets/lang/en.ts
+++ b/src/assets/lang/en.ts
@@ -606,9 +606,9 @@ export default {
createNew: 'Create dictionary item',
},
dictionaryItem: {
- description: "\n Edit the different language versions for the dictionary item '%0%' below\n ",
+ description: "Edit the different language versions for the dictionary item '%0%' below",
displayName: 'Culture Name',
- changeKeyError: "\n The key '%0%' already exists.\n ",
+ changeKeyError: "The key '%0%' already exists.",
overviewTitle: 'Dictionary overview',
},
examineManagement: {
diff --git a/src/assets/lang/es-es.ts b/src/assets/lang/es-es.ts
index 58c612db2c..1e815027ef 100644
--- a/src/assets/lang/es-es.ts
+++ b/src/assets/lang/es-es.ts
@@ -370,9 +370,9 @@ export default {
createNew: 'Crear elemento de diccionario',
},
dictionaryItem: {
- description: "Editar las diferentes versiones lingüísticas para la entrada en el diccionario '% 0%' debajo",
- displayName: 'nombre de la cultura\n',
- changeKeyError: "\n La clave '%0%' ya existe.\n ",
+ description: "Editar las diferentes versiones lingüísticas para la entrada en el diccionario '%0%' debajo",
+ displayName: 'nombre de la cultura',
+ changeKeyError: "La clave '%0%' ya existe.",
},
placeholders: {
username: 'Escribe tu nombre de usuario',
diff --git a/src/assets/lang/fr-fr.ts b/src/assets/lang/fr-fr.ts
index 5413b2e03c..88ec99abfa 100644
--- a/src/assets/lang/fr-fr.ts
+++ b/src/assets/lang/fr-fr.ts
@@ -517,10 +517,9 @@ export default {
createNew: 'Créer un élément de dictionnaire',
},
dictionaryItem: {
- description:
- "\n Editez les différentes versions de langues pour l'élément de dictionnaire '%0%' ci-dessous.\n ",
+ description: "Editez les différentes versions de langues pour l'élément de dictionnaire '%0%' ci-dessous.",
displayName: 'Nom de Culture',
- changeKeyError: "\n La clé '%0%' existe déjà.\n ",
+ changeKeyError: "La clé '%0%' existe déjà.",
overviewTitle: 'Aperçu du dictionaire',
},
examineManagement: {
diff --git a/src/assets/lang/he-il.ts b/src/assets/lang/he-il.ts
index fd9ee14b19..146ec4f545 100644
--- a/src/assets/lang/he-il.ts
+++ b/src/assets/lang/he-il.ts
@@ -204,7 +204,7 @@ export default {
},
dictionaryItem: {
description:
- '\n ערוך את גרסאות השפות השונות לפריט המילון \'%0%\' למטה
ניתן להוסיף שפות נוספות תחת "שפות" בתפריט בצד שמאל\n ',
+ 'ערוך את גרסאות השפות השונות לפריט המילון \'%0%\' למטה ניתן להוסיף שפות נוספות תחת "שפות" בתפריט בצד שמאל',
displayName: 'שם התצוגה לשפה',
},
editdatatype: {
diff --git a/src/assets/lang/hr-hr.ts b/src/assets/lang/hr-hr.ts
index 3597b95fc9..d08b4d332e 100644
--- a/src/assets/lang/hr-hr.ts
+++ b/src/assets/lang/hr-hr.ts
@@ -568,9 +568,9 @@ export default {
createNew: 'Kreirajte stavku iz rječnika',
},
dictionaryItem: {
- description: "\n Uredite različite jezičke varijante za stavku rječnika '%0%' ispod\n ",
+ description: "Uredite različite jezičke varijante za stavku rječnika '%0%' ispod",
displayName: 'Kultura',
- changeKeyError: "\n Stavka '%0%' već postoji.\n ",
+ changeKeyError: "Stavka '%0%' već postoji.",
overviewTitle: 'Pregled riječnika',
},
examineManagement: {
diff --git a/src/assets/lang/it-it.ts b/src/assets/lang/it-it.ts
index 2f2d5f60b7..bef4e1f0eb 100644
--- a/src/assets/lang/it-it.ts
+++ b/src/assets/lang/it-it.ts
@@ -569,7 +569,7 @@ export default {
noItems: 'Non ci sono oggetti nel Dizionario.',
},
dictionaryItem: {
- description: "Modifica le lingue per l'elemento '%0%' qui sotto.",
+ description: "Modifica le lingue per l'elemento '%0%' qui sotto.",
displayName: 'Nome della cultura',
changeKeyError: "La chiave '%0%' esiste già.",
overviewTitle: 'Panoramica del Dizionario',
diff --git a/src/assets/lang/ja-jp.ts b/src/assets/lang/ja-jp.ts
index 2b812c42aa..d16087a107 100644
--- a/src/assets/lang/ja-jp.ts
+++ b/src/assets/lang/ja-jp.ts
@@ -275,7 +275,7 @@ export default {
},
dictionaryItem: {
description:
- "\n ディクショナリのアイテム '%0%' の別の言語版を編集するには、左側のメニューの'言語'でその言語を追加します\n ",
+ "ディクショナリのアイテム '%0%' の別の言語版を編集するには、左側のメニューの'言語'でその言語を追加します",
displayName: 'カルチャ名',
},
placeholders: {
diff --git a/src/assets/lang/ko-kr.ts b/src/assets/lang/ko-kr.ts
index f2cfcab172..16ab5e6ba9 100644
--- a/src/assets/lang/ko-kr.ts
+++ b/src/assets/lang/ko-kr.ts
@@ -204,7 +204,7 @@ export default {
},
dictionaryItem: {
description:
- "\n '%0%'사전 항목 아래에 다른 언어버전들을 편집하세요
왼쪽 '언어'메뉴를 사용하여 추가 언어들을 설정할 수 있습니다.\n ",
+ "'%0%'사전 항목 아래에 다른 언어버전들을 편집하세요
왼쪽 '언어'메뉴를 사용하여 추가 언어들을 설정할 수 있습니다.",
displayName: '국가명',
},
editdatatype: {
diff --git a/src/assets/lang/nb-no.ts b/src/assets/lang/nb-no.ts
index 14ff0ab87a..94c3cb5eb2 100644
--- a/src/assets/lang/nb-no.ts
+++ b/src/assets/lang/nb-no.ts
@@ -250,8 +250,10 @@ export default {
},
dictionaryItem: {
description:
- "Rediger de forskjellige språkversjonene for ordbokelementet '%0%' under.
Du kan legge til flere språk under 'språk' i menyen til venstre.",
+ "Rediger de forskjellige språkversjonene for ordbokelementet '%0%' under. Du kan legge til flere språk under 'språk' i menyen til venstre.",
displayName: 'Språk',
+ changeKeyError: "Kan ikke endre nøkkel for '%0%' fordi det allerede finnes en oversettelse for denne nøkkelen",
+ overviewTitle: 'Ordbok',
},
placeholders: {
username: 'Skriv inn ditt brukernavn',
diff --git a/src/assets/lang/nl-nl.ts b/src/assets/lang/nl-nl.ts
index 3f7bb995ae..8cb9748c6a 100644
--- a/src/assets/lang/nl-nl.ts
+++ b/src/assets/lang/nl-nl.ts
@@ -529,9 +529,9 @@ export default {
},
dictionaryItem: {
description:
- "\n Wijzig de verschillende taalversies voor het woordenboek item '%0%'. Je kunt extra talen toevoegen bij 'talen' in het menu links\n ",
+ "Wijzig de verschillende taalversies voor het woordenboek item '%0%'. Je kunt extra talen toevoegen bij 'talen' in het menu links",
displayName: 'Cultuurnaam',
- changeKeyError: "\n De key '%0%' bestaat al.\n ",
+ changeKeyError: "De key '%0%' bestaat al.",
overviewTitle: 'Woordenboek overzicht',
},
examineManagement: {
diff --git a/src/assets/lang/pl-pl.ts b/src/assets/lang/pl-pl.ts
index 3dbfc8a21a..c91545622e 100644
--- a/src/assets/lang/pl-pl.ts
+++ b/src/assets/lang/pl-pl.ts
@@ -364,9 +364,9 @@ export default {
},
dictionaryItem: {
description:
- '\n Edytuj różne wersje językowe dla elementu słownika \'%0%\' poniżej.
\n Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.',
+ 'Edytuj różne wersje językowe dla elementu słownika \'%0%\' poniżej. Możesz dodać dodatkowe języki w menu "Języki" po lewej stronie.',
displayName: 'Nazwa języka',
- changeKeyError: "\n Klucz '%0%' już istnieje.\n ",
+ changeKeyError: "Klucz '%0%' już istnieje.",
},
placeholders: {
username: 'Wpisz nazwę użytkownika',
diff --git a/src/assets/lang/pt-br.ts b/src/assets/lang/pt-br.ts
index 1253547fef..501692b6d4 100644
--- a/src/assets/lang/pt-br.ts
+++ b/src/assets/lang/pt-br.ts
@@ -206,7 +206,7 @@ export default {
},
dictionaryItem: {
description:
- "Editar as diferente versões de linguagem para o item de dicionário '%0%' abaixo
Você pode adicionar mais linguagens sob 'linguagens' no menu à esquerda",
+ "Editar as diferente versões de linguagem para o item de dicionário '%0%' abaixo. Você pode adicionar mais linguagens sob 'linguagens' no menu à esquerda.",
displayName: 'Nome da Cultura',
},
editdatatype: {
diff --git a/src/assets/lang/ru-ru.ts b/src/assets/lang/ru-ru.ts
index 4e7a769eb4..042853eed7 100644
--- a/src/assets/lang/ru-ru.ts
+++ b/src/assets/lang/ru-ru.ts
@@ -423,9 +423,9 @@ export default {
},
dictionaryItem: {
description:
- "\n\t\tНиже Вы можете указать различные переводы данной статьи словаря '%0%'
Добавить другие языки можно, воспользовавшись пунктом 'Языки' в меню слева\n\t\t",
+ "Ниже Вы можете указать различные переводы данной статьи словаря '%0%'. Добавить другие языки можно, воспользовавшись пунктом 'Языки' в меню слева.",
displayName: 'Название языка (культуры)',
- changeKeyError: "\n Ключ '%0%' уже существует в словаре.\n ",
+ changeKeyError: "Ключ '%0%' уже существует в словаре.",
overviewTitle: 'Обзор словаря',
},
editcontenttype: {
diff --git a/src/assets/lang/tr-tr.ts b/src/assets/lang/tr-tr.ts
index dfe98dd10e..a7a1c8186b 100644
--- a/src/assets/lang/tr-tr.ts
+++ b/src/assets/lang/tr-tr.ts
@@ -510,9 +510,9 @@ export default {
noItems: 'Sözlük öğesi yok.',
},
dictionaryItem: {
- description: "\n Aşağıdaki sözlük öğesi '%0%' için farklı dil sürümlerini düzenleyin\n ",
+ description: "Aşağıdaki sözlük öğesi '%0%' için farklı dil sürümlerini düzenleyin",
displayName: 'Kültür Adı',
- changeKeyError: "\n '%0%' anahtarı zaten var.\n ",
+ changeKeyError: "'%0%' anahtarı zaten var.",
overviewTitle: 'Sözlüğe genel bakış',
},
examineManagement: {
diff --git a/src/assets/lang/uk-ua.ts b/src/assets/lang/uk-ua.ts
index eaa3f06a06..f54696ab06 100644
--- a/src/assets/lang/uk-ua.ts
+++ b/src/assets/lang/uk-ua.ts
@@ -422,9 +422,9 @@ export default {
},
dictionaryItem: {
description:
- "\n\t\tНиже Ви можете вказати різні переклади даної статті словника '%0%'
Додати інші мови можна, скориставшись пунктом 'Мови' в меню зліва\n\t\t",
+ "Ниже Ви можете вказати різні переклади даної статті словника '%0%'. Додати інші мови можна, скориставшись пунктом 'Мови' в меню зліва.",
displayName: 'Назва мови (культури)',
- changeKeyError: "\n Ключ '%0%' вже існує у словнику.\n ",
+ changeKeyError: "Ключ '%0%' вже існує у словнику.",
overviewTitle: 'Огляд словника',
},
editcontenttype: {
diff --git a/src/assets/lang/zh-cn.ts b/src/assets/lang/zh-cn.ts
index 50715aa84e..b9038734bd 100644
--- a/src/assets/lang/zh-cn.ts
+++ b/src/assets/lang/zh-cn.ts
@@ -280,9 +280,9 @@ export default {
selectEditor: '选择编辑器',
},
dictionaryItem: {
- description: '\n 为字典项编辑不同语言的版本‘%0%’
您可以在左侧的“语言”中添加一种语言\n ',
+ description: '为字典项编辑不同语言的版本‘%0%’, 您可以在左侧的“语言”中添加一种语言',
displayName: '语言名称',
- changeKeyError: "\n 关键字 '%0%' 已经存在。\n ",
+ changeKeyError: "关键字 '%0%' 已经存在。",
},
placeholders: {
username: '输入您的用户名',
diff --git a/src/assets/lang/zh-tw.ts b/src/assets/lang/zh-tw.ts
index 62d39dae16..da9413e108 100644
--- a/src/assets/lang/zh-tw.ts
+++ b/src/assets/lang/zh-tw.ts
@@ -278,8 +278,7 @@ export default {
selectEditor: '選擇編輯器',
},
dictionaryItem: {
- description:
- "\n 為此字典項目 '%0%' 編輯不同語言版本,
您可以在左方選單「語言」中增添新的語言\n ",
+ description: "為此字典項目 '%0%' 編輯不同語言版本,您可以在左方選單「語言」中增添新的語言",
displayName: '語言名稱',
},
placeholders: {
diff --git a/src/packages/core/utils/index.ts b/src/packages/core/utils/index.ts
index 483767c50a..f19dbaeb6f 100644
--- a/src/packages/core/utils/index.ts
+++ b/src/packages/core/utils/index.ts
@@ -17,6 +17,7 @@ export * from './path/stored-path.function.js';
export * from './path/transform-server-path-to-client-path.function.js';
export * from './path/umbraco-path.function.js';
export * from './path/url-pattern-to-string.function.js';
+export * from './sanitize/sanitize-html.function.js';
export * from './selection-manager/selection.manager.js';
export * from './state-manager/index.js';
export * from './string/from-camel-case.function.js';
diff --git a/src/packages/core/utils/sanitize/sanitize-html.function.ts b/src/packages/core/utils/sanitize/sanitize-html.function.ts
new file mode 100644
index 0000000000..56c2902218
--- /dev/null
+++ b/src/packages/core/utils/sanitize/sanitize-html.function.ts
@@ -0,0 +1,10 @@
+import { DOMPurify } from '@umbraco-cms/backoffice/external/dompurify';
+
+/**
+ * Sanitize a HTML string by removing any potentially harmful content such as scripts.
+ * @param {string} html The HTML string to sanitize.
+ * @returns The sanitized HTML string.
+ */
+export function sanitizeHTML(html: string): string {
+ return DOMPurify.sanitize(html);
+}
diff --git a/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts b/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts
index 2982f9a2dd..56fb515af0 100644
--- a/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts
+++ b/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts
@@ -6,6 +6,7 @@ import { css, html, customElement, state, repeat, ifDefined, unsafeHTML } from '
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UmbLanguageCollectionRepository, type UmbLanguageDetailModel } from '@umbraco-cms/backoffice/language';
import { UMB_CURRENT_USER_CONTEXT } from '@umbraco-cms/backoffice/current-user';
+import { sanitizeHTML } from '@umbraco-cms/backoffice/utils';
@customElement('umb-workspace-view-dictionary-editor')
export class UmbWorkspaceViewDictionaryEditorElement extends UmbLitElement {
@@ -21,8 +22,12 @@ export class UmbWorkspaceViewDictionaryEditorElement extends UmbLitElement {
@state()
private _currentUserHasAccessToAllLanguages?: boolean = false;
- #languageCollectionRepository = new UmbLanguageCollectionRepository(this);
- #workspaceContext!: typeof UMB_DICTIONARY_WORKSPACE_CONTEXT.TYPE;
+ get #dictionaryName() {
+ return typeof this._dictionary?.name !== 'undefined' ? sanitizeHTML(this._dictionary.name) : '...';
+ }
+
+ readonly #languageCollectionRepository = new UmbLanguageCollectionRepository(this);
+ #workspaceContext?: typeof UMB_DICTIONARY_WORKSPACE_CONTEXT.TYPE;
#currentUserContext?: typeof UMB_CURRENT_USER_CONTEXT.TYPE;
constructor() {
@@ -59,7 +64,7 @@ export class UmbWorkspaceViewDictionaryEditorElement extends UmbLitElement {
}
#observeDictionary() {
- this.observe(this.#workspaceContext.dictionary, (dictionary) => {
+ this.observe(this.#workspaceContext?.dictionary, (dictionary) => {
this._dictionary = dictionary;
});
}
@@ -77,14 +82,14 @@ export class UmbWorkspaceViewDictionaryEditorElement extends UmbLitElement {
const translation = (target.value as string).toString();
const isoCode = target.getAttribute('name')!;
- this.#workspaceContext.setPropertyValue(isoCode, translation);
+ this.#workspaceContext?.setPropertyValue(isoCode, translation);
}
}
override render() {
return html`
- ${unsafeHTML(this.localize.term('dictionaryItem_description', this._dictionary?.name || ''))}
+ ${this.localize.term('dictionaryItem_description', this.#dictionaryName)}
${repeat(
this._languages,
(item) => item.unique,
@@ -105,7 +110,7 @@ export class UmbWorkspaceViewDictionaryEditorElement extends UmbLitElement {
name=${language.unique}
label="translation"
@change=${this.#onTextareaChange}
- value=${ifDefined(translation?.translation)}
+ .value=${translation?.translation ?? ''}
?readonly=${this.#isReadOnly(language.unique)}>
`;
}
diff --git a/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts b/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts
index 5d2b5bb964..381d3f906c 100644
--- a/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts
+++ b/src/packages/markdown-editor/components/input-markdown-editor/input-markdown.element.ts
@@ -12,7 +12,6 @@ import { createExtensionApi } from '@umbraco-cms/backoffice/extension-api';
import { marked } from '@umbraco-cms/backoffice/external/marked';
import { monaco } from '@umbraco-cms/backoffice/external/monaco-editor';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
-import { DOMPurify } from '@umbraco-cms/backoffice/external/dompurify';
import { UmbChangeEvent, type UmbInputEvent } from '@umbraco-cms/backoffice/event';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
@@ -22,6 +21,7 @@ import { UmbCodeEditorLoadedEvent } from '@umbraco-cms/backoffice/code-editor';
import type { UmbCodeEditorController, UmbCodeEditorElement } from '@umbraco-cms/backoffice/code-editor';
import type { UUIModalSidebarSize } from '@umbraco-cms/backoffice/external/uui';
import { UmbFormControlMixin } from '@umbraco-cms/backoffice/validation';
+import { sanitizeHTML } from '@umbraco-cms/backoffice/utils';
const elementName = 'umb-input-markdown';
@@ -560,7 +560,7 @@ export class UmbInputMarkdownElement extends UmbFormControlMixin(UmbLitElement,
#renderPreview() {
if (!this.preview || !this.value) return;
const markdownAsHtml = marked.parse(this.value as string) as string;
- const sanitizedHtml = markdownAsHtml ? DOMPurify.sanitize(markdownAsHtml) : '';
+ const sanitizedHtml = markdownAsHtml ? sanitizeHTML(markdownAsHtml) : '';
return html`${unsafeHTML(sanitizedHtml)}`;
}
From 6d3844f90d766753a6fbfe40eff327c0dfc5f003 Mon Sep 17 00:00:00 2001
From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com>
Date: Mon, 7 Oct 2024 13:22:59 +0200
Subject: [PATCH 2/2] chore: fix linting
---
.../workspace/views/workspace-view-dictionary-editor.element.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts b/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts
index 56fb515af0..fdeaf2130b 100644
--- a/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts
+++ b/src/packages/dictionary/workspace/views/workspace-view-dictionary-editor.element.ts
@@ -2,7 +2,7 @@ import { UMB_DICTIONARY_WORKSPACE_CONTEXT } from '../dictionary-workspace.contex
import type { UmbDictionaryDetailModel } from '../../types.js';
import type { UUITextareaElement } from '@umbraco-cms/backoffice/external/uui';
import { UUITextareaEvent } from '@umbraco-cms/backoffice/external/uui';
-import { css, html, customElement, state, repeat, ifDefined, unsafeHTML } from '@umbraco-cms/backoffice/external/lit';
+import { css, html, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UmbLanguageCollectionRepository, type UmbLanguageDetailModel } from '@umbraco-cms/backoffice/language';
import { UMB_CURRENT_USER_CONTEXT } from '@umbraco-cms/backoffice/current-user';