From 0201be29334557317c91d8a82f3b32b6c7018ec1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=9E=C3=B3r=C3=B0ur=20H?=
Date: Fri, 14 Jun 2024 13:45:41 +0000
Subject: [PATCH] fix(regulations-admin): Content handling in wysiwyg (#15166)
* Content handling in wysiwyg
* Update reg tools version
---
.../src/components/EditBasics.tsx | 9 +--
.../src/components/EditImpacts.tsx | 8 +++
.../src/components/EditorInput.tsx | 2 +
.../regulations-admin/src/utils/dataHooks.ts | 4 +-
.../src/utils/formatAmendingRegulation.ts | 55 +++++++++++++------
package.json | 2 +-
yarn.lock | 10 ++--
7 files changed, 63 insertions(+), 27 deletions(-)
diff --git a/libs/portals/admin/regulations-admin/src/components/EditBasics.tsx b/libs/portals/admin/regulations-admin/src/components/EditBasics.tsx
index e380ffb3c4bb..333df35ec545 100644
--- a/libs/portals/admin/regulations-admin/src/components/EditBasics.tsx
+++ b/libs/portals/admin/regulations-admin/src/components/EditBasics.tsx
@@ -26,6 +26,9 @@ import ConfirmModal from './ConfirmModal/ConfirmModal'
import { ReferenceText } from './impacts/ReferenceText'
import { DraftChangeForm, DraftImpactForm } from '../state/types'
+const updateText =
+ 'Ósamræmi er í texta stofnreglugerðar og breytingareglugerðar. Texti breytingareglugerðar þarf að samræmast breytingum sem gerðar hafa verið á stofnreglugerð, eigi breytingarnar að færast inn með réttum hætti.'
+
export const EditBasics = () => {
const t = useLocale().formatMessage
const { draft, actions } = useDraftingState()
@@ -174,7 +177,7 @@ export const EditBasics = () => {
{
isModalVisible
}
title="Uppfæra texta"
- message={
- 'Uppfæra texta reglugerðar með breytingum frá fyrsta skrefi. Allur viðbættur texti í núverandi skrefi verður hreinsaður út.'
- }
+ message={updateText}
onConfirm={() => {
updateEditorText()
setIsModalVisible(false)
diff --git a/libs/portals/admin/regulations-admin/src/components/EditImpacts.tsx b/libs/portals/admin/regulations-admin/src/components/EditImpacts.tsx
index b5b64e888141..65bced317d36 100644
--- a/libs/portals/admin/regulations-admin/src/components/EditImpacts.tsx
+++ b/libs/portals/admin/regulations-admin/src/components/EditImpacts.tsx
@@ -138,6 +138,14 @@ export const EditImpacts = () => {
{' '}
hefur ekki verið flutt á island.is.
Vinsamlegast hafið samband við ritstjóra.
+
+
+ reglugerdir@dmr.is
+
) : lastItem(draft.impacts[selRegOption.value])?.type === 'repeal' ? (
diff --git a/libs/portals/admin/regulations-admin/src/components/EditorInput.tsx b/libs/portals/admin/regulations-admin/src/components/EditorInput.tsx
index 8fd7bd1d5f6e..d818b05940cf 100644
--- a/libs/portals/admin/regulations-admin/src/components/EditorInput.tsx
+++ b/libs/portals/admin/regulations-admin/src/components/EditorInput.tsx
@@ -11,6 +11,7 @@ import cn from 'classnames'
import { HTMLText, useDomid } from '@island.is/regulations'
import { RegulationDraftId } from '@island.is/regulations/admin'
import { useFileUploader } from '../utils/fileUploader'
+import { fileUrl } from '../utils/dataHooks'
const KB = 1024
@@ -80,6 +81,7 @@ export const EditorInput = (props: EditorInputProps) => {
classes={classes}
fileUploader={fileUploader()}
baseText={baseText}
+ uploadUrl={`${fileUrl}/admin-drafts/files/${props.draftId}`}
onFocus={() => {
setHasFocus(true)
}}
diff --git a/libs/portals/admin/regulations-admin/src/utils/dataHooks.ts b/libs/portals/admin/regulations-admin/src/utils/dataHooks.ts
index e824195c2f18..cba4e71d4a79 100644
--- a/libs/portals/admin/regulations-admin/src/utils/dataHooks.ts
+++ b/libs/portals/admin/regulations-admin/src/utils/dataHooks.ts
@@ -24,6 +24,8 @@ import { getEditUrl } from './routing'
import { createHash } from 'crypto'
import { RegulationDraftTypes, StepNames } from '../types'
+export const fileUrl = 'https://files.reglugerd.is'
+
type QueryResult =
| {
data: T
@@ -133,7 +135,7 @@ export const useS3Upload = () => {
})
return
}
- const location = `https://files.reglugerd.is/${key}`
+ const location = `${fileUrl}/${key}`
setUploadLocation(location)
setUploadStatus({ uploading: false })
})
diff --git a/libs/portals/admin/regulations-admin/src/utils/formatAmendingRegulation.ts b/libs/portals/admin/regulations-admin/src/utils/formatAmendingRegulation.ts
index e1e7f2b5ad2c..16e5cb96c244 100644
--- a/libs/portals/admin/regulations-admin/src/utils/formatAmendingRegulation.ts
+++ b/libs/portals/admin/regulations-admin/src/utils/formatAmendingRegulation.ts
@@ -16,6 +16,13 @@ const removeRegPrefix = (title: string) => {
return title
}
+const removeRegNamePrefix = (name: string) => {
+ if (/^0+/.test(name)) {
+ return name.replace(/^0+/, '')
+ }
+ return name
+}
+
export const formatAmendingRegTitle = (draft: RegDraftForm) => {
const impactArray = Object.values(draft.impacts)
@@ -27,18 +34,16 @@ export const formatAmendingRegTitle = (draft: RegDraftForm) => {
const amendingTitles = amendingArray.map(
(item, i) =>
- `${i === 0 ? `${PREFIX_AMENDING}` : ''}${item.name.replace(
- /^0+/,
- '',
- )}${removeRegPrefix(item.regTitle)}`,
+ `${i === 0 ? `${PREFIX_AMENDING}` : ''}${removeRegNamePrefix(
+ item.name,
+ )} ${removeRegPrefix(item.regTitle)}`,
)
const repealTitles = repealArray.map(
(item, i) =>
- `${i === 0 ? `${PREFIX_REPEALING}` : ''}${item.name.replace(
- /^0+/,
- '',
- )}${removeRegPrefix(item.regTitle)}`,
+ `${i === 0 ? `${PREFIX_REPEALING}` : ''}${removeRegNamePrefix(
+ item.name,
+ )} ${removeRegPrefix(item.regTitle)}`,
)
return PREFIX + [...amendingTitles, ...repealTitles].join(' og ')
@@ -50,13 +55,16 @@ export const formatAmendingRegTitle = (draft: RegDraftForm) => {
// ----------------------------------------------------------------------
export const formatAmendingRegBody = (
- regName: string,
+ name: string,
repeal?: boolean,
diff?: HTMLText | string | undefined,
+ regTitle?: string,
) => {
+ const regName = removeRegNamePrefix(name)
if (repeal) {
- const text =
- `Reglugerð nr. ${regName} ásamt síðari breytingum fellur brott
` as HTMLText
+ const text = `Reglugerð nr. ${regName} ${
+ regTitle ? regTitle.replace(/\.$/, '') + ' ' : ''
+ }fellur brott.
` as HTMLText
const gildistaka =
`Reglugerð þessi er sett með heimild í [].
Reglugerðin öðlast þegar gildi
` as HTMLText
return [text, gildistaka]
@@ -104,7 +112,21 @@ export const formatAmendingRegBody = (
let isNumberList = false
let isLetterList = false
if (element.classList.contains('article__title')) {
- articleTitle = element.innerText
+ const clone = element.cloneNode(true)
+
+ if (clone instanceof Element) {
+ const emElement = clone.querySelector('em')
+ if (emElement) {
+ emElement.parentNode?.removeChild(emElement)
+ }
+
+ const textContent = clone.textContent?.trim() ?? ''
+
+ articleTitle = textContent
+ console.log(textContent)
+ } else {
+ articleTitle = element.innerText
+ }
testGroup.title = articleTitle
isArticleTitle = true
paragraph = 0 // Reset paragraph count for the new article
@@ -156,16 +178,16 @@ export const formatAmendingRegBody = (
if (isParagraph) {
// Paragraph was deleted
pushHtml =
- `${paragraph}. mgr. ${articleTitle} ${regNameDisplay} fellur brott
` as HTMLText
+ `${paragraph}. mgr. ${articleTitle} ${regNameDisplay} fellur brott.
` as HTMLText
} else if (isArticleTitle) {
// Title was deleted
pushHtml =
- `Fyrirsögn ${articleTitle} ${regNameDisplay} fellur brott
` as HTMLText
+ `Fyrirsögn ${articleTitle} ${regNameDisplay} fellur brott.
` as HTMLText
} else if (isLetterList || isNumberList) {
// List was deleted
pushHtml = `${
isLetterList ? 'Stafliðir' : 'Töluliðir'
- } eftir ${paragraph}. mgr. ${articleTitle} ${regNameDisplay} falla brott
` as HTMLText
+ } eftir ${paragraph}. mgr. ${articleTitle} ${regNameDisplay} falla brott.
` as HTMLText
} else {
// We don't know what you deleted, but there was a deletion, and here's the deletelog:
pushHtml =
@@ -249,7 +271,7 @@ export const formatAmendingRegBody = (
if (testGroup.isDeletion === true) {
const articleTitleNumber = testGroup.title
additionArray.push([
- `${articleTitleNumber} ${regNameDisplay} fellur brott
` as HTMLText,
+ `${articleTitleNumber} ${regNameDisplay} fellur brott.
` as HTMLText,
])
} else if (testGroup.isAddition === true) {
let prevArticleTitle = ''
@@ -286,6 +308,7 @@ export const formatAmendingBodyWithArticlePrefix = (
item.type === 'repeal' || draftImpactLength > 1 ? item.name : '',
item.type === 'repeal',
item.type === 'amend' ? item.diff?.value : undefined,
+ item.regTitle,
),
)
const flatArray = flatten(impactArray)
diff --git a/package.json b/package.json
index fafbbdd7c66f..b2bcbdeadf89 100644
--- a/package.json
+++ b/package.json
@@ -91,7 +91,7 @@
"@formatjs/intl-locale": "2.4.33",
"@formatjs/intl-numberformat": "7.1.5",
"@hookform/error-message": "2.0.1",
- "@island.is/regulations-tools": "0.8.1",
+ "@island.is/regulations-tools": "0.9.0",
"@keyv/redis": "2.6.1",
"@livechat/widget-core": "1.3.2",
"@nestjs/apollo": "10.1.0",
diff --git a/yarn.lock b/yarn.lock
index e1401215aa77..0813a74c5607 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10809,9 +10809,9 @@ __metadata:
languageName: unknown
linkType: soft
-"@island.is/regulations-tools@npm:0.8.1":
- version: 0.8.1
- resolution: "@island.is/regulations-tools@npm:0.8.1"
+"@island.is/regulations-tools@npm:0.9.0":
+ version: 0.9.0
+ resolution: "@island.is/regulations-tools@npm:0.9.0"
dependencies:
"@hugsmidjan/htmldiff-js": ^1.3.0
"@hugsmidjan/qj": ^4.10.2
@@ -10825,7 +10825,7 @@ __metadata:
peerDependencies:
react: ">=16.8 <20"
react-dom: ">=16.8 <20"
- checksum: bdf33c19b3b69e1661c08befb5ab1d578b4aa3923da22bef6665a8f1890ba3b46895d0a919b6f110ef25d8f84757050187ccd014c8bfefc0c2866cbc7764608e
+ checksum: 9d4950e590721f78c60644ee7f2c16dfb132960c9383e71cce3dbe9037b8e734c6e8609eb44a623e843ec13187759efd45245078ba4e9c60d456068378a28e62
languageName: node
linkType: hard
@@ -34284,7 +34284,7 @@ __metadata:
"@graphql-codegen/typescript-react-apollo": 3.3.3
"@graphql-codegen/typescript-resolvers": 2.7.3
"@hookform/error-message": 2.0.1
- "@island.is/regulations-tools": 0.8.1
+ "@island.is/regulations-tools": 0.9.0
"@keyv/redis": 2.6.1
"@livechat/widget-core": 1.3.2
"@nestjs/apollo": 10.1.0