From bddf118595ff1ac041a08e3d838ee1e3ae08abde Mon Sep 17 00:00:00 2001 From: efuller Date: Thu, 20 Jun 2024 15:54:34 -0400 Subject: [PATCH 01/11] Append the post title instead of its id --- src/class-wp-newsletter-builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/class-wp-newsletter-builder.php b/src/class-wp-newsletter-builder.php index e509d388..70d86808 100644 --- a/src/class-wp-newsletter-builder.php +++ b/src/class-wp-newsletter-builder.php @@ -172,7 +172,7 @@ public function on_after_insert_post( int $post_id ): void { // Publish the post, which should kick off the other transition listener to send the email. $breaking_post_id = wp_insert_post( [ - 'post_title' => "Breaking News {$post->ID}", + 'post_title' => "Breaking News: {$post->post_title}", // @phpstan-ignore-next-line cast to string is necessary. 'post_content' => (string) get_post_meta( $post->ID, 'nb_breaking_content', true ), 'post_status' => 'publish', From 8bc9dcda78a101477b6f84f1151d7d94123ad2f4 Mon Sep 17 00:00:00 2001 From: efuller Date: Thu, 20 Jun 2024 16:01:48 -0400 Subject: [PATCH 02/11] Remove the Sent Newsletters panel from the single send sidebar. In the future, we intend to bring this back with a list of dates and times of when the newsletter was sent --- .../components/sent-newsletter.tsx | 54 ------------------- .../newsletter-from-post/email-settings.tsx | 11 ---- 2 files changed, 65 deletions(-) delete mode 100644 plugins/newsletter-from-post/components/sent-newsletter.tsx diff --git a/plugins/newsletter-from-post/components/sent-newsletter.tsx b/plugins/newsletter-from-post/components/sent-newsletter.tsx deleted file mode 100644 index 5c5adc70..00000000 --- a/plugins/newsletter-from-post/components/sent-newsletter.tsx +++ /dev/null @@ -1,54 +0,0 @@ -/** - * SentNewsletter component - */ - -import { - Button, - PanelRow, -} from '@wordpress/components'; -import type { WP_REST_API_Post } from 'wp-types'; // eslint-disable-line camelcase - -import { usePost } from '@alleyinteractive/block-editor-tools'; - -interface SentNewsletterProps { - postId: number; -} - -interface Post extends WP_REST_API_Post { // eslint-disable-line camelcase - meta: { - nb_newsletter_subject?: string; - }; -} - -function SentNewsletter({ - postId, -}: SentNewsletterProps) { - const post = usePost(postId, 'nb_newsletter') as Post; - if (!post) { - return null; - } - - const { - meta: { - nb_newsletter_subject: title = '', - } = {}, - link = '', - } = post; - - return ( - - {link && title ? ( - - ) : null} - - ); -} - -export default SentNewsletter; diff --git a/plugins/newsletter-from-post/email-settings.tsx b/plugins/newsletter-from-post/email-settings.tsx index 2c1c4ae1..ba62630d 100644 --- a/plugins/newsletter-from-post/email-settings.tsx +++ b/plugins/newsletter-from-post/email-settings.tsx @@ -14,7 +14,6 @@ import useEmailLists, { Option } from '@/hooks/useEmailLists'; import RequiredFields from '@/plugins/newsletter-from-post/components/required-fields'; import EmailTypeSelector from '../../components/emailTypeSelector'; -import SentNewsletter from './components/sent-newsletter'; interface CoreEditor { getEditedPostAttribute: (attribute: string) => string; @@ -163,16 +162,6 @@ function EmailSettings() { - {meta.sentBreakingPostId ? ( - - {meta.sentBreakingPostId.map((id: number) => ( - - ))} - - ) : null} ); } From bea44c0b320dbfaa950774ba90b5ebbd60cba937 Mon Sep 17 00:00:00 2001 From: efuller Date: Fri, 21 Jun 2024 11:31:11 -0400 Subject: [PATCH 03/11] Change preview markup to work with SendGrid Add in a todo that will allow for different markup as each provider requirements vary --- single-nb_newsletter.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/single-nb_newsletter.php b/single-nb_newsletter.php index 29663531..eec35c4c 100644 --- a/single-nb_newsletter.php +++ b/single-nb_newsletter.php @@ -9,7 +9,7 @@ newrelic_disable_autorum(); } -$wp_newsletter_builder_preview = get_post_meta( get_the_ID(), 'nb_newsletter_preview', true ); +$wp_newsletter_builder_preview = get_post_meta( get_queried_object_id(), 'nb_newsletter_preview', true ); ?> @@ -35,8 +35,12 @@ - -
+ + From f51b50bda9e8b999568c79f72287edf29e6221a0 Mon Sep 17 00:00:00 2001 From: efuller Date: Fri, 21 Jun 2024 14:47:16 -0400 Subject: [PATCH 04/11] For single sends, update template if it has been updated --- .../newsletter-from-post/email-settings.tsx | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/plugins/newsletter-from-post/email-settings.tsx b/plugins/newsletter-from-post/email-settings.tsx index ba62630d..e7b6fb31 100644 --- a/plugins/newsletter-from-post/email-settings.tsx +++ b/plugins/newsletter-from-post/email-settings.tsx @@ -2,6 +2,10 @@ * EmailSettings component */ +import { useCallback, useEffect, useState } from '@wordpress/element'; +import apiFetch from '@wordpress/api-fetch'; +// eslint-disable-next-line camelcase +import { WP_REST_API_Post } from 'wp-types'; import { PluginSidebar } from '@wordpress/edit-post'; import { CheckboxControl, PanelBody, TextareaControl } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; @@ -28,6 +32,7 @@ interface Window { } function EmailSettings() { + const [fetched, setFetched] = useState(false); const { meta, setMeta } = useNewsletterMeta(); const { emailListOptions, selectedEmailList } = useEmailLists(); const manualSubject = meta.subject !== ''; @@ -67,7 +72,7 @@ function EmailSettings() { setMeta({ nb_breaking_list: listIds }); }); - const contentHandler = (html: string) => { + const contentHandler = useCallback((html: string) => { const blocks = parse(html); const postIndex = blocks.findIndex((block) => block.name === 'wp-newsletter-builder/post'); @@ -77,7 +82,7 @@ function EmailSettings() { }, blocks[postIndex].innerBlocks); setMeta({ nb_breaking_content: serialize(blocks) }); - }; + }, [postId, setMeta]); const areRequiredFieldsSet = meta.type === '' || meta.template === '' @@ -86,6 +91,20 @@ function EmailSettings() { || (meta.preview === '' && postExcerpt === '') || meta.list.length === 0; + useEffect(() => { + if (!meta.template || fetched) { + return; + } + + apiFetch({ + path: `/wp/v2/nb_template/${meta.template}?context=edit`, + }).then((response) => { + const { content } = response as WP_REST_API_Post; // eslint-disable-line camelcase + setFetched(true); + contentHandler(content.raw as string); + }); + }, [contentHandler, fetched, meta.template]); + return ( Date: Fri, 21 Jun 2024 15:28:59 -0400 Subject: [PATCH 05/11] Chores: phpcs --- single-nb_newsletter.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/single-nb_newsletter.php b/single-nb_newsletter.php index eec35c4c..b4bcb5d8 100644 --- a/single-nb_newsletter.php +++ b/single-nb_newsletter.php @@ -39,9 +39,12 @@ /** * TODO: Add in a way to allow for custom preview markup as each provider has different requirements. */ - if ( ! empty( $wp_newsletter_builder_preview ) ) : ?> + if ( ! empty( $wp_newsletter_builder_preview ) ) : + ?> - + From a20a7b33e906887d4bb46e65c3ed93bfbb5009ac Mon Sep 17 00:00:00 2001 From: efuller Date: Fri, 21 Jun 2024 15:44:49 -0400 Subject: [PATCH 06/11] Format preheader --- single-nb_newsletter.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/single-nb_newsletter.php b/single-nb_newsletter.php index b4bcb5d8..a7ea72c4 100644 --- a/single-nb_newsletter.php +++ b/single-nb_newsletter.php @@ -41,7 +41,12 @@ */ if ( ! empty( $wp_newsletter_builder_preview ) ) : ?> - + From 1c226a0142d2cef6c5a7f9447dc0af7706b89731 Mon Sep 17 00:00:00 2001 From: efuller Date: Fri, 21 Jun 2024 15:58:15 -0400 Subject: [PATCH 07/11] Alphabetize --- .../newsletter-from-post/email-settings.tsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/newsletter-from-post/email-settings.tsx b/plugins/newsletter-from-post/email-settings.tsx index e7b6fb31..51cecb4a 100644 --- a/plugins/newsletter-from-post/email-settings.tsx +++ b/plugins/newsletter-from-post/email-settings.tsx @@ -1,22 +1,22 @@ /** * EmailSettings component */ - -import { useCallback, useEffect, useState } from '@wordpress/element'; import apiFetch from '@wordpress/api-fetch'; -// eslint-disable-next-line camelcase -import { WP_REST_API_Post } from 'wp-types'; -import { PluginSidebar } from '@wordpress/edit-post'; +import { createBlock, parse, serialize } from '@wordpress/blocks'; import { CheckboxControl, PanelBody, TextareaControl } from '@wordpress/components'; -import { __ } from '@wordpress/i18n'; import { useSelect } from '@wordpress/data'; +import { PluginSidebar } from '@wordpress/edit-post'; +import { useCallback, useEffect, useState } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; import { MultiSelect } from 'react-multi-select-component'; -import { createBlock, parse, serialize } from '@wordpress/blocks'; +// eslint-disable-next-line camelcase +import { WP_REST_API_Post } from 'wp-types'; + import NewsletterSpinner from '@/components/newsletterSpinner'; -import useNewsletterMeta from '@/hooks/useNewsletterMeta'; import useEmailLists, { Option } from '@/hooks/useEmailLists'; -import RequiredFields from '@/plugins/newsletter-from-post/components/required-fields'; +import useNewsletterMeta from '@/hooks/useNewsletterMeta'; +import RequiredFields from './components/required-fields'; import EmailTypeSelector from '../../components/emailTypeSelector'; interface CoreEditor { From 3b1ee66118ea2ef3f196ec32a9bb0a0c2ae8ff2d Mon Sep 17 00:00:00 2001 From: efuller Date: Mon, 24 Jun 2024 10:12:11 -0400 Subject: [PATCH 08/11] Add in an action to allow for preview text to be used. Since each email provider requires different markup, this action allows the implementer to be in charge --- single-nb_newsletter.php | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/single-nb_newsletter.php b/single-nb_newsletter.php index a7ea72c4..931732be 100644 --- a/single-nb_newsletter.php +++ b/single-nb_newsletter.php @@ -36,19 +36,14 @@ - - From 88c02aaa457a681b4a4dbe7d58424c20978de37d Mon Sep 17 00:00:00 2001 From: efuller Date: Mon, 24 Jun 2024 10:59:08 -0400 Subject: [PATCH 09/11] Add a comment for useEffect responsible for updating template content --- plugins/newsletter-from-post/email-settings.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/newsletter-from-post/email-settings.tsx b/plugins/newsletter-from-post/email-settings.tsx index 51cecb4a..77160da6 100644 --- a/plugins/newsletter-from-post/email-settings.tsx +++ b/plugins/newsletter-from-post/email-settings.tsx @@ -91,6 +91,9 @@ function EmailSettings() { || (meta.preview === '' && postExcerpt === '') || meta.list.length === 0; + /** + * Update the template content when the template is changed. + */ useEffect(() => { if (!meta.template || fetched) { return; From d89c904cb8d166d462a751845580eb0594865fe5 Mon Sep 17 00:00:00 2001 From: efuller Date: Mon, 24 Jun 2024 14:38:29 -0400 Subject: [PATCH 10/11] Bump version --- README.md | 2 +- plugin.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c2a658fe..9781189b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Contributors: alleyinteractive Tags: alleyinteractive, wp-newsletter-builder -Stable tag: 0.3.26 +Stable tag: 0.3.27 Requires at least: 6.2 diff --git a/plugin.php b/plugin.php index 99e009c3..acdcf35b 100644 --- a/plugin.php +++ b/plugin.php @@ -3,7 +3,7 @@ * Plugin Name: Newsletter Builder * Plugin URI: https://github.com/alleyinteractive/wp-newsletter-builder * Description: Interface to manage email newsletters - * Version: 0.3.26 + * Version: 0.3.27 * Author: Alley Interactive * Author URI: https://github.com/alleyinteractive/wp-newsletter-builder * Requires at least: 6.2 From 62787b72323fed884bde94701b76c95d153a78bb Mon Sep 17 00:00:00 2001 From: efuller Date: Mon, 24 Jun 2024 14:40:40 -0400 Subject: [PATCH 11/11] Bump version - should be 0.3.28 --- README.md | 2 +- plugin.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9781189b..7c18f4ca 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Contributors: alleyinteractive Tags: alleyinteractive, wp-newsletter-builder -Stable tag: 0.3.27 +Stable tag: 0.3.28 Requires at least: 6.2 diff --git a/plugin.php b/plugin.php index acdcf35b..7099b8c8 100644 --- a/plugin.php +++ b/plugin.php @@ -3,7 +3,7 @@ * Plugin Name: Newsletter Builder * Plugin URI: https://github.com/alleyinteractive/wp-newsletter-builder * Description: Interface to manage email newsletters - * Version: 0.3.27 + * Version: 0.3.28 * Author: Alley Interactive * Author URI: https://github.com/alleyinteractive/wp-newsletter-builder * Requires at least: 6.2