Skip to content

Chore/blueprint#18

Merged
firestar300 merged 5 commits intover/1.0.6from
chore/blueprint
Mar 26, 2026
Merged

Chore/blueprint#18
firestar300 merged 5 commits intover/1.0.6from
chore/blueprint

Conversation

@firestar300
Copy link
Copy Markdown
Collaborator

@firestar300 firestar300 commented Mar 26, 2026

Note

Medium Risk
Removes the block’s deprecated save handler and changes the close-label CSS class, which could cause block validation issues for existing content if older markup is still in use. Other changes are mostly demo/blueprint and styling updates.

Overview
Updates the WordPress Playground blueprint.json to land on a new /blockparty-modal-demo/ page and creates that page via runPHP using base64-encoded block content (with an explicit post_name).

Simplifies the modal close-button label from screen-reader-text sr-only to just sr-only in both editor (edit.js) and frontend serialization (save.js), and adds matching .sr-only visually-hidden styling in style.scss.

Drops the block’s deprecated.js implementation and stops registering it in index.js (plus minor JSON/formatting tidy-ups).

Written by Cursor Bugbot for commit 6120247. This will update automatically on new commits. Configure here.

Fixes the broken PHP script in the blueprint and uses base64 encoding for the demo page content to prevent escaping issues. Updates the landing page to point directly to the newly created demo page.
…d code

Replaces the dual `screen-reader-text sr-only` classes with a localized `sr-only` class and corresponding CSS to reduce external dependencies. Removes the deprecated block version and applies general code style formatting updates across the modal components.
Updates the blockparty-modal resource reference from the 1.0.5 tag to the chore/blueprint branch to incorporate recent changes.
Adds a leading slash to the wp-load.php path to ensure the script correctly bootstraps WordPress within the Playground environment.
@firestar300 firestar300 merged commit 0d24561 into ver/1.0.6 Mar 26, 2026
2 of 3 checks passed
@firestar300 firestar300 deleted the chore/blueprint branch March 26, 2026 14:57
Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

save,
deprecated,
} );
});
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing block deprecation breaks existing saved blocks

High Severity

The deprecated array is removed from registerBlockType while simultaneously changing the save function output (class 'screen-reader-text sr-only''sr-only'). Blocks saved with version 1.0.5 have screen-reader-text sr-only in the serialized HTML. Without a deprecation entry containing the old save function, WordPress block validation will fail for all those existing blocks, causing "This block contains unexpected or invalid content" errors in the editor.

Additional Locations (1)
Fix in Cursor Fix in Web

{
"step": "runPHP",
"code": "<?php require_once 'wordpress/wp-load.php'; $page_content = '<?php require_once 'wordpress/wp-load.php'; $page_content = '<!-- wp:buttons -->\n<div class=\"wp-block-buttons\"><!-- wp:button {\"linkedModalId\":\"m-e16de3fe79f9\"} -->\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\">Open my modal window</a></div>\n<!-- /wp:button --></div>\n<!-- /wp:buttons -->\n\n<!-- wp:blockparty/modal {\"title\":\"My Modal\",\"modalId\":\"m-e16de3fe79f9\",\"displayIconOnly\":true,\"style\":{\"spacing\":{\"padding\":{\"top\":\"var:preset|spacing|40\",\"bottom\":\"var:preset|spacing|40\",\"left\":\"var:preset|spacing|40\",\"right\":\"var:preset|spacing|40\"}}}} -->\n<dialog class=\"wp-block-blockparty-modal\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\" id=\"modal-m-e16de3fe79f9\" aria-modal=\"true\" closedby=\"any\"><div class=\"wp-block-blockparty-modal__header\"><h2 class=\"wp-block-blockparty-modal__title\">My Modal</h2></div><div class=\"wp-block-blockparty-modal__content\"><!-- wp:paragraph -->\n<p>Blockparty Modal is a WordPress plugin that lets you add accessible modal dialogs to your content via the Gutenberg block editor. You define the modal content and behaviour in the editor; on the frontend, the modal is shown when the user activates a linked trigger (such as a button block).</p>\n<!-- /wp:paragraph --></div><button type=\"button\" class=\"wp-block-blockparty-modal__close-button\"><span class=\"sr-only\">Close this dialog window</span><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\"><path d=\"m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z\"></path></svg></button></dialog>\n<!-- /wp:blockparty/modal -->'; $page_id = wp_insert_post(array('post_title' => 'Blockparty Modal', 'post_content' => $page_content, 'post_status' => 'publish', 'post_type' => 'page')); echo 'Page created with ID: ' . $page_id; ?>'; $page_id = wp_insert_post(array('post_title' => 'Blockparty Modal', 'post_content' => $page_content, 'post_status' => 'publish', 'post_type' => 'page')); echo 'Page created with ID: ' . $page_id; ?>"
"code": "<?php\nrequire_once '/wordpress/wp-load.php';\n$page_content = base64_decode( 'PCEtLSB3cDpidXR0b25zIC0tPgo8ZGl2IGNsYXNzPSJ3cC1ibG9jay1idXR0b25zIj48IS0tIHdwOmJ1dHRvbiB7ImxpbmtlZE1vZGFsSWQiOiJtLWUxNmRlM2ZlNzlmOSJ9IC0tPgo8ZGl2IGNsYXNzPSJ3cC1ibG9jay1idXR0b24iPjxhIGNsYXNzPSJ3cC1ibG9jay1idXR0b25fX2xpbmsgd3AtZWxlbWVudC1idXR0b24iPk9wZW4gbXkgbW9kYWwgd2luZG93PC9hPjwvZGl2Pgo8IS0tIC93cDpidXR0b24gLS0+PC9kaXY+CjwhLS0gL3dwOmJ1dHRvbnMgLS0+Cgo8IS0tIHdwOmJsb2NrcGFydHkvbW9kYWwgeyJ0aXRsZSI6Ik15IE1vZGFsIiwibW9kYWxJZCI6Im0tZTE2ZGUzZmU3OWY5IiwiZGlzcGxheUljb25Pbmx5Ijp0cnVlLCJzdHlsZSI6eyJzcGFjaW5nIjp7InBhZGRpbmciOnsidG9wIjoidmFyOnByZXNldHxzcGFjaW5nfDQwIiwiYm90dG9tIjoidmFyOnByZXNldHxzcGFjaW5nfDQwIiwibGVmdCI6InZhcjpwcmVzZXR8c3BhY2luZ3w0MCIsInJpZ2h0IjoidmFyOnByZXNldHxzcGFjaW5nfDQwIn19fX0gLS0+CjxkaWFsb2cgY2xhc3M9IndwLWJsb2NrLWJsb2NrcGFydHktbW9kYWwiIHN0eWxlPSJwYWRkaW5nLXRvcDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7cGFkZGluZy1yaWdodDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCk7cGFkZGluZy1ib3R0b206dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApO3BhZGRpbmctbGVmdDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCkiIGlkPSJtb2RhbC1tLWUxNmRlM2ZlNzlmOSIgYXJpYS1tb2RhbD0idHJ1ZSIgY2xvc2VkYnk9ImFueSI+PGRpdiBjbGFzcz0id3AtYmxvY2stYmxvY2twYXJ0eS1tb2RhbF9faGVhZGVyIj48aDIgY2xhc3M9IndwLWJsb2NrLWJsb2NrcGFydHktbW9kYWxfX3RpdGxlIj5NeSBNb2RhbDwvaDI+PC9kaXY+PGRpdiBjbGFzcz0id3AtYmxvY2stYmxvY2twYXJ0eS1tb2RhbF9fY29udGVudCI+PCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPkJsb2NrcGFydHkgTW9kYWwgaXMgYSBXb3JkUHJlc3MgcGx1Z2luIHRoYXQgbGV0cyB5b3UgYWRkIGFjY2Vzc2libGUgbW9kYWwgZGlhbG9ncyB0byB5b3VyIGNvbnRlbnQgdmlhIHRoZSBHdXRlbmJlcmcgYmxvY2sgZWRpdG9yLiBZb3UgZGVmaW5lIHRoZSBtb2RhbCBjb250ZW50IGFuZCBiZWhhdmlvdXIgaW4gdGhlIGVkaXRvcjsgb24gdGhlIGZyb250ZW5kLCB0aGUgbW9kYWwgaXMgc2hvd24gd2hlbiB0aGUgdXNlciBhY3RpdmF0ZXMgYSBsaW5rZWQgdHJpZ2dlciAoc3VjaCBhcyBhIGJ1dHRvbiBibG9jaykuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+PC9kaXY+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3cC1ibG9jay1ibG9ja3BhcnR5LW1vZGFsX19jbG9zZS1idXR0b24iPjxzcGFuIGNsYXNzPSJzci1vbmx5Ij5DbG9zZSB0aGlzIGRpYWxvZyB3aW5kb3c8L3NwYW4+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0ibTEzLjA2IDEyIDYuNDctNi40Ny0xLjA2LTEuMDZMMTIgMTAuOTQgNS41MyA0LjQ3IDQuNDcgNS41MyAxMC45NCAxMmwtNi40NyA2LjQ3IDEuMDYgMS4wNkwxMiAxMy4wNmw2LjQ3IDYuNDcgMS4wNi0xLjA2TDEzLjA2IDEyWiI+PC9wYXRoPjwvc3ZnPjwvYnV0dG9uPjwvZGlhbG9nPgo8IS0tIC93cDpibG9ja3BhcnR5L21vZGFsIC0tPg==' );\n$page_id = wp_insert_post( array(\n\t'post_title' => 'Blockparty Modal',\n\t'post_name' => 'blockparty-modal-demo',\n\t'post_content' => $page_content,\n\t'post_status' => 'publish',\n\t'post_type' => 'page',\n) );\necho 'Page created with ID: ' . $page_id;\n?>"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blueprint demo content mismatches installed plugin version

Low Severity

The blueprint installs the plugin from the 1.0.5 git tag, which doesn't include the new .sr-only CSS class added in style.scss. However, the base64-encoded demo page content uses class="sr-only" (the new save output). Since v1.0.5's built stylesheet has no .sr-only rule, the close button label text ("Close this dialog window") will render as visible text on the Playground demo frontend instead of being visually hidden. The ref needs to point to a version that includes the .sr-only CSS, or the demo content needs to match v1.0.5's expected markup.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant