From 11cb966832ee38fb8429957a6e29f15ae7a26768 Mon Sep 17 00:00:00 2001 From: Tomas Kikutis Date: Mon, 8 Apr 2024 12:50:18 +0200 Subject: [PATCH 1/4] copy embed code --- client/app.js | 2 - client/app.tsx | 34 +++++++++++++++++ client/copy-embed-code-banner.tsx | 59 ++++++++++++++++++++++++++++++ client/tsconfig.json | 6 +++ server/theme/360-Logo.png | Bin 0 -> 10339 bytes 5 files changed, 99 insertions(+), 2 deletions(-) delete mode 100644 client/app.js create mode 100644 client/app.tsx create mode 100644 client/copy-embed-code-banner.tsx create mode 100644 client/tsconfig.json create mode 100644 server/theme/360-Logo.png diff --git a/client/app.js b/client/app.js deleted file mode 100644 index c0c021d..0000000 --- a/client/app.js +++ /dev/null @@ -1,2 +0,0 @@ -// custom client js -// alert('alert from client code') diff --git a/client/app.tsx b/client/app.tsx new file mode 100644 index 0000000..6c7cff7 --- /dev/null +++ b/client/app.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import {registerExtensions} from 'newsroom-core/assets/index'; +import {CopyEmbedCodeBanner} from './copy-embed-code-banner'; + +registerExtensions({ + prepareWirePreview: (previewHtmlElement) => { + for (const embedBlockHtmlElement of previewHtmlElement.querySelectorAll('.embed-block')) { + + const div = document.createElement('div'); + + div.style.textAlign = 'center'; + + ReactDOM.render( + { + navigator.clipboard.writeText(embedBlockHtmlElement.innerHTML); + }} + />, + div, + ); + + const parent = embedBlockHtmlElement.parentElement; + + if (parent != null) { + parent.insertBefore(div, embedBlockHtmlElement.nextSibling); + } + + } + + return previewHtmlElement; + + } +}); diff --git a/client/copy-embed-code-banner.tsx b/client/copy-embed-code-banner.tsx new file mode 100644 index 0000000..f86da32 --- /dev/null +++ b/client/copy-embed-code-banner.tsx @@ -0,0 +1,59 @@ +import React, {useState} from 'react'; +import {exposed} from 'newsroom-core/assets/index'; + +const bannerStyle: React.CSSProperties = { + display: 'flex', + gap: 16, + alignItems: 'center', + background: 'var(--color-background--muted)', + padding: 'var(--space--1-5)', + border: '1px solid var(--color-line--light)', + borderRadius: 'var(--border-radius--m)', + color: 'var(--color-text--muted)', + marginTop: 16, +}; + +const textStyle: React.CSSProperties = { + margin: 0, + textAlign: 'justify', + lineHeight: 1.2, + fontSize: 'var(--text-size--medium)', +} + +const {Button} = exposed.ui; +const {gettext} = exposed.locale; + +interface IProps { + onCopy(): void; +} + +export function CopyEmbedCodeBanner(props: IProps) { + const initialLabel = gettext('copy'); + const [label, setLabel] = useState(initialLabel); + + return ( +
+
+ +
+ +

+ {gettext('Copy this into your own story. Available under {{x}} license.', {x: 'xyz'})} +

+ +
+ ); +} diff --git a/client/tsconfig.json b/client/tsconfig.json new file mode 100644 index 0000000..07f79e1 --- /dev/null +++ b/client/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "newsroom-core/tsconfig", + "include": [ + "." + ], +} diff --git a/server/theme/360-Logo.png b/server/theme/360-Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2e24d3e2838b2e16894a7980baeed05e596d22 GIT binary patch literal 10339 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 literal 0 HcmV?d00001 From 4fe856b1da2016baba6e4a73f9877c28bec80e21 Mon Sep 17 00:00:00 2001 From: Tomas Kikutis Date: Mon, 8 Apr 2024 12:54:23 +0200 Subject: [PATCH 2/4] fix lint --- server/settings.py | 1 - 1 file changed, 1 deletion(-) diff --git a/server/settings.py b/server/settings.py index 02b7a4d..a183c00 100644 --- a/server/settings.py +++ b/server/settings.py @@ -93,4 +93,3 @@ ] PUBLIC_DASHBOARD = True - From fad221df9df2ff600352f681ffcc8ed2aea295e3 Mon Sep 17 00:00:00 2001 From: Tomas Kikutis Date: Mon, 8 Apr 2024 12:56:50 +0200 Subject: [PATCH 3/4] add a TODO --- client/copy-embed-code-banner.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/client/copy-embed-code-banner.tsx b/client/copy-embed-code-banner.tsx index f86da32..4ca6d3c 100644 --- a/client/copy-embed-code-banner.tsx +++ b/client/copy-embed-code-banner.tsx @@ -38,6 +38,7 @@ export function CopyEmbedCodeBanner(props: IProps) {

+ {/** TODO: use license from metadata */} {gettext('Copy this into your own story. Available under {{x}} license.', {x: 'xyz'})}

From 7b5b9a22fec4bf3ba88145f4ee64d83587bd3fdd Mon Sep 17 00:00:00 2001 From: Tomas Kikutis Date: Mon, 8 Apr 2024 13:44:25 +0200 Subject: [PATCH 4/4] get license name --- client/app.tsx | 20 +++++++++++++++++++- client/copy-embed-code-banner.tsx | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/client/app.tsx b/client/app.tsx index 6c7cff7..a3976c8 100644 --- a/client/app.tsx +++ b/client/app.tsx @@ -4,8 +4,25 @@ import {registerExtensions} from 'newsroom-core/assets/index'; import {CopyEmbedCodeBanner} from './copy-embed-code-banner'; registerExtensions({ - prepareWirePreview: (previewHtmlElement) => { + prepareWirePreview: (previewHtmlElement, article) => { for (const embedBlockHtmlElement of previewHtmlElement.querySelectorAll('.embed-block')) { + const embeddedArticleId = embedBlockHtmlElement.getAttribute('data-association-key'); + + if (embeddedArticleId == null) { + continue; + } + + const embeddedArticle = article.associations?.[embeddedArticleId]; + + if (embeddedArticle == null) { + continue; + } + + const licenseName = (embeddedArticle.subject ?? []).find(({scheme}) => scheme === 'licence_type')?.name; + + if (licenseName == null) { + continue; + } const div = document.createElement('div'); @@ -13,6 +30,7 @@ registerExtensions({ ReactDOM.render( { navigator.clipboard.writeText(embedBlockHtmlElement.innerHTML); }} diff --git a/client/copy-embed-code-banner.tsx b/client/copy-embed-code-banner.tsx index 4ca6d3c..973832f 100644 --- a/client/copy-embed-code-banner.tsx +++ b/client/copy-embed-code-banner.tsx @@ -25,6 +25,7 @@ const {gettext} = exposed.locale; interface IProps { onCopy(): void; + license: string; } export function CopyEmbedCodeBanner(props: IProps) { @@ -38,8 +39,7 @@ export function CopyEmbedCodeBanner(props: IProps) {

- {/** TODO: use license from metadata */} - {gettext('Copy this into your own story. Available under {{x}} license.', {x: 'xyz'})} + {gettext('Copy this into your own story. Available under {{x}} license.', {x: props.license})}