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