Skip to content

Commit e9ad5e8

Browse files
authored
Merge pull request #22 from BeAPI/fix/blueprint-config
Fix/blueprint config
2 parents 46e427a + fd14041 commit e9ad5e8

2 files changed

Lines changed: 46 additions & 42 deletions

File tree

blueprint.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
3-
"landingPage": "/blockparty-modal-demo/",
3+
"landingPage": "/wp-admin/post.php?post=4&action=edit",
44
"preferredVersions": {
55
"php": "8.1",
66
"wp": "latest"
@@ -26,7 +26,11 @@
2626
},
2727
{
2828
"step": "runPHP",
29-
"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?>"
29+
"code": "<?php\nrequire_once '/wordpress/wp-load.php';\n$dir = WP_CONTENT_DIR . '/mu-plugins';\nif ( ! is_dir( $dir ) ) {\n\twp_mkdir_p( $dir );\n}\n$file = $dir . '/blockparty-modal-playground-svg-kses.php';\nfile_put_contents( $file, base64_decode( 'PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiBCbG9ja3BhcnR5IE1vZGFsIOKAlCBQbGF5Z3JvdW5kIChhbGxvdyBTVkcgaW4gcG9zdCBjb250ZW50KQogKiBEZXNjcmlwdGlvbjogTXVzdC11c2UgcGx1Z2luIGZvciB0aGUgQmxvY2twYXJ0eSBNb2RhbCBXb3JkUHJlc3MgUGxheWdyb3VuZCBibHVlcHJpbnQgb25seS4KICogVmVyc2lvbjogMS4wCiAqLwoKYWRkX2ZpbHRlcigKCSd3cF9rc2VzX2FsbG93ZWRfaHRtbCcsCglzdGF0aWMgZnVuY3Rpb24gKCAkdGFncywgJGNvbnRleHQgKSB7CgkJaWYgKCAncG9zdCcgIT09ICRjb250ZXh0ICkgewoJCQlyZXR1cm4gJHRhZ3M7CgkJfQoJCSR0YWdzWydzdmcnXSA9IGFycmF5KAoJCQkneG1sbnMnICAgICAgID0+IHRydWUsCgkJCSd2aWV3Ym94JyAgICAgPT4gdHJ1ZSwKCQkJJ3dpZHRoJyAgICAgICA9PiB0cnVlLAoJCQknaGVpZ2h0JyAgICAgID0+IHRydWUsCgkJCSdmaWxsJyAgICAgICAgPT4gdHJ1ZSwKCQkJJ2NsYXNzJyAgICAgICA9PiB0cnVlLAoJCQknYXJpYS1oaWRkZW4nID0+IHRydWUsCgkJCSdyb2xlJyAgICAgICAgPT4gdHJ1ZSwKCQkJJ2ZvY3VzYWJsZScgICA9PiB0cnVlLAoJCSk7CgkJJHRhZ3NbJ3BhdGgnXSA9IGFycmF5KAoJCQknZCcgICAgID0+IHRydWUsCgkJCSdmaWxsJyAgPT4gdHJ1ZSwKCQkJJ2NsYXNzJyA9PiB0cnVlLAoJCSk7CgkJcmV0dXJuICR0YWdzOwoJfSwKCTEwLAoJMgopOwo=' ) );\necho file_exists( $file ) ? 'mu-plugin installed' : 'mu-plugin failed';\n?>"
30+
},
31+
{
32+
"step": "runPHP",
33+
"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; ?>"
3034
}
3135
]
3236
}

src/blockparty-modal/index.js

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ import {
2727
addLinkedModalAttribute,
2828
} from './utils';
2929

30-
registerBlockType(metadata.name, {
30+
registerBlockType( metadata.name, {
3131
icon: modal,
3232
edit: Edit,
3333
save,
34-
});
34+
} );
3535

3636
/**
3737
* Returns the list of block names allowed as modal triggers (same as filter blockparty_modal_trigger_allowed_blocks).
@@ -41,99 +41,99 @@ registerBlockType(metadata.name, {
4141
*/
4242
function getModalTriggerAllowedBlocks() {
4343
try {
44-
const settings = select('core/block-editor').getSettings();
44+
const settings = select( 'core/block-editor' ).getSettings();
4545
const list = settings?.blockpartyModalTriggerAllowedBlocks;
46-
return Array.isArray(list) ? list : ['core/button'];
46+
return Array.isArray( list ) ? list : [ 'core/button' ];
4747
} catch {
48-
return ['core/button'];
48+
return [ 'core/button' ];
4949
}
5050
}
5151

5252
// Add linkedModalId attribute only to blocks allowed as modal triggers.
5353
addFilter(
5454
'blocks.registerBlockType',
5555
'blockparty-modal/add-linked-modal-attribute',
56-
(settings, blockName) => {
56+
( settings, blockName ) => {
5757
const allowedBlocks = getModalTriggerAllowedBlocks();
58-
if (!allowedBlocks.includes(blockName)) {
58+
if ( ! allowedBlocks.includes( blockName ) ) {
5959
return settings;
6060
}
61-
return addLinkedModalAttribute(settings);
61+
return addLinkedModalAttribute( settings );
6262
}
6363
);
6464

6565
// Blocks registered before our script loaded (e.g. core blocks) didn't get the
6666
// filter — re-register only allowed blocks so linkedModalId is persisted on save.
6767
const allowedBlocks = getModalTriggerAllowedBlocks();
6868
const blockTypes = getBlockTypes();
69-
blockTypes.forEach((blockType) => {
69+
blockTypes.forEach( ( blockType ) => {
7070
if (
71-
allowedBlocks.includes(blockType.name) &&
72-
!blockType.attributes?.[LINKED_MODAL_ATTR]
71+
allowedBlocks.includes( blockType.name ) &&
72+
! blockType.attributes?.[ LINKED_MODAL_ATTR ]
7373
) {
7474
registerBlockType(
7575
blockType.name,
76-
addLinkedModalAttribute(blockType)
76+
addLinkedModalAttribute( blockType )
7777
);
7878
}
79-
});
79+
} );
8080

8181
// Add "Attached modal" panel with Combobox only to blocks allowed as modal triggers (see filter blockparty_modal_trigger_allowed_blocks).
8282
addFilter(
8383
'editor.BlockEdit',
8484
'blockparty-modal/with-modal-trigger-control',
85-
(BlockEdit) => (props) => {
85+
( BlockEdit ) => ( props ) => {
8686
const { name, attributes, setAttributes } = props;
8787

88-
if (name === MODAL_BLOCK_NAME) {
89-
return <BlockEdit {...props} />;
88+
if ( name === MODAL_BLOCK_NAME ) {
89+
return <BlockEdit { ...props } />;
9090
}
9191

92-
const triggerAllowedBlocks = useSelect((storeSelect) => {
93-
const settings = storeSelect('core/block-editor').getSettings();
92+
const triggerAllowedBlocks = useSelect( ( storeSelect ) => {
93+
const settings = storeSelect( 'core/block-editor' ).getSettings();
9494
const list = settings?.blockpartyModalTriggerAllowedBlocks;
95-
return Array.isArray(list) ? list : ['core/button'];
96-
}, []);
95+
return Array.isArray( list ) ? list : [ 'core/button' ];
96+
}, [] );
9797

98-
if (!triggerAllowedBlocks.includes(name)) {
99-
return <BlockEdit {...props} />;
98+
if ( ! triggerAllowedBlocks.includes( name ) ) {
99+
return <BlockEdit { ...props } />;
100100
}
101101

102-
const modalOptions = useSelect((storeSelect) => {
103-
return getModalOptionsFromEditor(storeSelect);
104-
}, []);
102+
const modalOptions = useSelect( ( storeSelect ) => {
103+
return getModalOptionsFromEditor( storeSelect );
104+
}, [] );
105105

106106
const options = [
107-
{ value: '', label: __('None', 'blockparty-modal') },
107+
{ value: '', label: __( 'None', 'blockparty-modal' ) },
108108
...modalOptions,
109109
];
110110

111-
const value = attributes[LINKED_MODAL_ATTR] || '';
111+
const value = attributes[ LINKED_MODAL_ATTR ] || '';
112112

113113
return (
114114
<>
115-
<BlockEdit {...props} />
115+
<BlockEdit { ...props } />
116116
<InspectorControls key="blockparty-modal-trigger">
117117
<PanelBody
118-
title={__('Attached modal', 'blockparty-modal')}
119-
initialOpen={false}
118+
title={ __( 'Attached modal', 'blockparty-modal' ) }
119+
initialOpen={ false }
120120
>
121121
<ComboboxControl
122-
label={__(
122+
label={ __(
123123
'Modal to open when block is clicked',
124124
'blockparty-modal'
125-
)}
126-
value={value}
127-
options={options}
128-
onChange={(newValue) =>
129-
setAttributes({
130-
[LINKED_MODAL_ATTR]: newValue || '',
131-
})
125+
) }
126+
value={ value }
127+
options={ options }
128+
onChange={ ( newValue ) =>
129+
setAttributes( {
130+
[ LINKED_MODAL_ATTR ]: newValue || '',
131+
} )
132132
}
133-
placeholder={__(
133+
placeholder={ __(
134134
'Select a modal…',
135135
'blockparty-modal'
136-
)}
136+
) }
137137
/>
138138
</PanelBody>
139139
</InspectorControls>

0 commit comments

Comments
 (0)