diff --git a/e2e/tests/global-settings.spec.ts b/e2e/tests/global-settings.spec.ts index 8ef74aa573..9183359e71 100644 --- a/e2e/tests/global-settings.spec.ts +++ b/e2e/tests/global-settings.spec.ts @@ -116,71 +116,4 @@ test.describe( 'Global Settings', () => { await deleteRequest await expect( resetButton ).not.toBeVisible() } ) - - test( 'When a default block is created, adding the block should have the default block\'s attributes', async ( { - page, - editor, - } ) => { - await page.getByLabel( 'Stackable Design System' ).click() - await page.getByRole( 'button', { name: 'Block Defaults' } ).click() - - // Open the Default Text Block Editor - const defaultBlockPagePromise = page.waitForEvent( 'popup' ) - - // Reset the block defaults first if it has been edited - const resetButton = page.locator( '.components-panel__body', { hasText: 'Block Defaults' } ).locator( '.stk-block-default-control', { hasText: /^Text$/ } ).first().getByLabel( 'Reset' ) - - if ( await resetButton.isVisible() ) { - await resetButton.click() - } - - const textBlock = page.locator( '.components-panel__body', { hasText: 'Block Defaults' } ).locator( '.stk-block-default-control', { hasText: /^Text$/ } ).first().getByLabel( 'Edit' ) - await textBlock.click() - const defaultBlockPage = await defaultBlockPagePromise - - // Set a color for the default Text Block - await defaultBlockPage.locator( '.stk-color-palette-control .stk-control-content > .components-dropdown > .components-button' ).first().click() - await defaultBlockPage.getByLabel( 'Hex color' ).fill( 'ff0000' ) - await defaultBlockPage.locator( '.stk-color-palette-control .stk-control-content > .components-dropdown > .components-button' ).first().click() - - // The default timeout is 30s, extend it to 90s - const updateRequest = defaultBlockPage.waitForResponse( response => response.url().includes( 'update_block_style' ) && response.request().method() === 'POST', { timeout: 90_000 } ) - - // In older WP versions, the button text is 'Update' instead of 'Save' - if ( await defaultBlockPage.getByRole( 'button', { - name: 'Save', exact: true, disabled: false, - } ).isVisible() ) { - await defaultBlockPage.getByRole( 'button', { name: 'Save', exact: true } ).click() - } else if ( await defaultBlockPage.getByRole( 'button', { name: 'Update', disabled: false } ).isVisible() ) { - await defaultBlockPage.getByRole( 'button', { name: 'Update' } ).click() - } - - // Make sure default block has been updated - await ( await updateRequest ).finished() - - // Insert a Stackable Text Block, and check if the color is the same as the one set in the default block - const timeouts = [ 1_000, 5_000, 30_000 ] - for ( const timeout of timeouts ) { - try { - await page.reload() - await editor.insertBlock( { - name: 'stackable/text', - attributes: { - text: 'test', - }, - } ) - - await expect( editor.canvas.locator( '[data-type="stackable/text"] > .stk-block-text > p[role="textbox"]' ) ).toHaveCSS( 'color', 'rgb(255, 0, 0)' ) - break - } catch ( e ) { - // Ignore the error and try again because the default block might not be updated yet - await page.waitForTimeout( timeout ) - } - } - - // Reset Default Block - await page.getByLabel( 'Stackable Design System' ).click() - await page.getByRole( 'button', { name: 'Block Defaults' } ).click() - await page.locator( '.components-panel__body', { hasText: 'Block Defaults' } ).locator( '.stk-block-default-control', { hasText: /^Text$/ } ).first().getByLabel( 'Reset' ).click() - } ) } ) diff --git a/plugin.php b/plugin.php index ca5bf4e027..ae01b88bf6 100644 --- a/plugin.php +++ b/plugin.php @@ -239,7 +239,6 @@ function is_frontend() { require_once( plugin_dir_path( __FILE__ ) . 'src/plugins/global-settings/color-schemes/deprecated/index.php' ); // We need to add this so the filter for deprecation gets applied. require_once( plugin_dir_path( __FILE__ ) . 'src/plugins/global-settings/color-schemes/index.php' ); require_once( plugin_dir_path( __FILE__ ) . 'src/plugins/global-settings/preset-controls/index.php' ); -require_once( plugin_dir_path( __FILE__ ) . 'src/custom-block-styles.php' ); require_once( plugin_dir_path( __FILE__ ) . 'src/css-optimize.php' ); require_once( plugin_dir_path( __FILE__ ) . 'src/compatibility/index.php' ); if ( ! is_admin() ) { @@ -292,6 +291,7 @@ function is_frontend() { require_once( plugin_dir_path( __FILE__ ) . 'src/deprecated/navigation-panel-pre-enabled.php' ); require_once( plugin_dir_path( __FILE__ ) . 'src/deprecated/font-awesome-version.php' ); require_once( plugin_dir_path( __FILE__ ) . 'src/deprecated/global-color-schemes.php' ); +require_once( plugin_dir_path( __FILE__ ) . 'src/deprecated/block-defaults.php' ); /** * V2 Deprecated diff --git a/src/deprecated/block-defaults.php b/src/deprecated/block-defaults.php new file mode 100644 index 0000000000..0c02fd0409 --- /dev/null +++ b/src/deprecated/block-defaults.php @@ -0,0 +1,64 @@ + 'boolean', + 'description' => __( 'Use Block Defaults in the editor', STACKABLE_I18N ), + 'sanitize_callback' => 'sanitize_text_field', + 'show_in_rest' => true, + 'default' => false, + ) + ); + } + + function stackable_add_deprecated_block_defaults_setting( $settings ) { + $settings['stackable_enable_block_defaults'] = boolval( get_option( 'stackable_enable_block_defaults', false ) ); + return $settings; + } + + // Make setting available in the editor. + add_filter( 'stackable_js_settings', 'stackable_add_deprecated_block_defaults_setting' ); + add_action( 'init', 'stackable_deprecated_block_defaults_option' ); +} + +if ( ! function_exists( 'stackable_deprecated_block_defaults' ) ) { + + /** + * Upon upgrading to v3.18.0 or later, Block Defaults will be enabled only if existing Block Defaults are present; + * otherwise, they will be disabled. + * For new installations, Block Defaults will be disabled by default. + */ + function stackable_deprecated_block_defaults( $old_version, $new_version ) { + if ( ! empty( $old_version ) && version_compare( $old_version, "3.18.0", "<" ) ) { + + // set option to true if there are saved block defaults + if ( ! empty( get_option( 'stackable_block_styles', [] ) ) ) { + update_option( 'stackable_enable_block_defaults', true, false ); + } + } + } + + function stackable_require_block_defaults_script() { + if ( get_option( 'stackable_enable_block_defaults', false ) ) { + require_once( plugin_dir_path( __FILE__ ) . 'block-defaults/custom-block-styles.php' ); + } + } + + add_action( 'stackable_early_version_upgraded', 'stackable_deprecated_block_defaults', 10, 2 ); + add_action( 'init', 'stackable_require_block_defaults_script' ); +} diff --git a/src/custom-block-styles.php b/src/deprecated/block-defaults/custom-block-styles.php similarity index 100% rename from src/custom-block-styles.php rename to src/deprecated/block-defaults/custom-block-styles.php diff --git a/src/plugins/global-settings/block-defaults/editor.scss b/src/deprecated/block-defaults/global-settings/editor.scss similarity index 100% rename from src/plugins/global-settings/block-defaults/editor.scss rename to src/deprecated/block-defaults/global-settings/editor.scss diff --git a/src/plugins/global-settings/block-defaults/index.js b/src/deprecated/block-defaults/global-settings/index.js similarity index 93% rename from src/plugins/global-settings/block-defaults/index.js rename to src/deprecated/block-defaults/global-settings/index.js index aa1f96f78b..3852fa19a7 100644 --- a/src/plugins/global-settings/block-defaults/index.js +++ b/src/deprecated/block-defaults/global-settings/index.js @@ -50,8 +50,11 @@ addFilter( 'stackable.global-settings.inspector', 'stackable/default-blocks', ou onToggle={ isOpen => setIsOpen( isOpen ) } >
+
+ { __( 'Please use the Design System options instead of this. Block Defaults will be sunset and removed from a future version.', i18n ) }
+
{ __( 'Manage how Stackable blocks look when they\'re inserted.', i18n ) }
-
+
{ __( 'Learn more about Block Defaults', i18n ) }
diff --git a/src/plugins/global-settings/block-defaults/readme.md b/src/deprecated/block-defaults/global-settings/readme.md
similarity index 100%
rename from src/plugins/global-settings/block-defaults/readme.md
rename to src/deprecated/block-defaults/global-settings/readme.md
diff --git a/src/deprecated/block-defaults/index.js b/src/deprecated/block-defaults/index.js
new file mode 100644
index 0000000000..3b9bdcee03
--- /dev/null
+++ b/src/deprecated/block-defaults/index.js
@@ -0,0 +1,7 @@
+import { settings as stackableSettings } from 'stackable'
+
+// Conditionally import scripts
+if ( stackableSettings.stackable_enable_block_defaults ) {
+ import( './save-block' )
+ import( './global-settings' )
+}
diff --git a/src/plugins/save-block/custom-block-styles-editor.js b/src/deprecated/block-defaults/save-block/custom-block-styles-editor.js
similarity index 100%
rename from src/plugins/save-block/custom-block-styles-editor.js
rename to src/deprecated/block-defaults/save-block/custom-block-styles-editor.js
diff --git a/src/plugins/save-block/editor.scss b/src/deprecated/block-defaults/save-block/editor.scss
similarity index 100%
rename from src/plugins/save-block/editor.scss
rename to src/deprecated/block-defaults/save-block/editor.scss
diff --git a/src/plugins/save-block/index.js b/src/deprecated/block-defaults/save-block/index.js
similarity index 93%
rename from src/plugins/save-block/index.js
rename to src/deprecated/block-defaults/save-block/index.js
index bb8c594de4..1d6c0dc054 100644
--- a/src/plugins/save-block/index.js
+++ b/src/deprecated/block-defaults/save-block/index.js
@@ -5,7 +5,7 @@ import './store'
import './variation-picker'
import './custom-block-styles-editor'
import SaveMenu from './save-menu'
-import { useSavedDefaultBlockStyle } from '~stackable/hooks'
+import { useSavedDefaultBlockStyle } from './use-saved-default-block-style'
import { settings } from 'stackable'
/**
diff --git a/src/plugins/save-block/save-hooks.js b/src/deprecated/block-defaults/save-block/save-hooks.js
similarity index 100%
rename from src/plugins/save-block/save-hooks.js
rename to src/deprecated/block-defaults/save-block/save-hooks.js
diff --git a/src/plugins/save-block/save-menu.js b/src/deprecated/block-defaults/save-block/save-menu.js
similarity index 100%
rename from src/plugins/save-block/save-menu.js
rename to src/deprecated/block-defaults/save-block/save-menu.js
diff --git a/src/plugins/save-block/store.js b/src/deprecated/block-defaults/save-block/store.js
similarity index 100%
rename from src/plugins/save-block/store.js
rename to src/deprecated/block-defaults/save-block/store.js
diff --git a/src/hooks/use-saved-default-block-style.js b/src/deprecated/block-defaults/save-block/use-saved-default-block-style.js
similarity index 98%
rename from src/hooks/use-saved-default-block-style.js
rename to src/deprecated/block-defaults/save-block/use-saved-default-block-style.js
index 12103da5a6..c6a54d8f2e 100644
--- a/src/hooks/use-saved-default-block-style.js
+++ b/src/deprecated/block-defaults/save-block/use-saved-default-block-style.js
@@ -1,7 +1,7 @@
/**
* Internal dependencies
*/
-import { getDefinedBlockStyles } from './use-block-style'
+import { getDefinedBlockStyles } from '~stackable/hooks'
import { CONTENT_ATTRIBUTES, recursivelyAddUniqueIdToInnerBlocks } from '~stackable/util'
/**
diff --git a/src/plugins/save-block/variation-picker.js b/src/deprecated/block-defaults/save-block/variation-picker.js
similarity index 100%
rename from src/plugins/save-block/variation-picker.js
rename to src/deprecated/block-defaults/save-block/variation-picker.js
diff --git a/src/hooks/index.js b/src/hooks/index.js
index 26a2e2bc77..5664d5f3fc 100644
--- a/src/hooks/index.js
+++ b/src/hooks/index.js
@@ -5,7 +5,6 @@ export * from './use-block-attributes'
export * from './use-block-attributes-context'
export * from './use-block-style'
export * from './use-context-selector'
-export * from './use-saved-default-block-style'
export * from './use-font-loader'
export * from './use-attribute-edit-handlers'
export * from './use-attribute-name'
diff --git a/src/plugins/global-settings/editor-loader.js b/src/plugins/global-settings/editor-loader.js
index 878d5ca058..981710bbbe 100644
--- a/src/plugins/global-settings/editor-loader.js
+++ b/src/plugins/global-settings/editor-loader.js
@@ -11,7 +11,6 @@ import { GlobalTypographyStyles } from './typography'
import { GlobalSpacingAndBordersStyles } from './spacing-and-borders'
import { GlobalButtonsAndIconsStyles } from './buttons-and-icons'
import { GlobalPresetControlsStyles } from './preset-controls'
-import './block-defaults'
/**
* External dependencies
diff --git a/src/plugins/global-settings/index.js b/src/plugins/global-settings/index.js
index 156b26e68a..6de44fc83f 100644
--- a/src/plugins/global-settings/index.js
+++ b/src/plugins/global-settings/index.js
@@ -5,7 +5,6 @@ import './editor-loader'
import './color-schemes'
import './buttons-and-icons'
import './spacing-and-borders'
-import './block-defaults'
import './icon-library'
import './preset-controls'
diff --git a/src/plugins/index.js b/src/plugins/index.js
index 7f5880c507..5622a0ef99 100644
--- a/src/plugins/index.js
+++ b/src/plugins/index.js
@@ -6,7 +6,6 @@ import './theme-block-size'
import './design-library-button'
import './layout-picker-reset'
// import './v2-migration-popup' // Probably 1.5yrs of checking for backward compatibility is enough.
-import './save-block'
import './editor-device-preview-class'
import './theme-block-style-inheritance'
import { BlockLinking } from './block-linking'
@@ -27,6 +26,7 @@ import { registerPlugin } from '@wordpress/plugins'
import { ConvertToContainerButton, GetBlockAttributesButton } from '~stackable/components'
import { devMode } from 'stackable'
import { fetchSettings } from '~stackable/util'
+import '~stackable/deprecated/block-defaults'
registerPlugin( 'stackable-convert-to-container-button', { render: ConvertToContainerButton } )
registerPlugin( 'stackable-block-hover-state', { render: BlockHoverState } )
diff --git a/src/welcome/admin.js b/src/welcome/admin.js
index e6dd3682a2..63ee636319 100644
--- a/src/welcome/admin.js
+++ b/src/welcome/admin.js
@@ -219,6 +219,7 @@ const SEARCH_TREE = [
__( 'Generate Global Colors for native blocks', i18n ),
__( 'Inherit Block Styles from theme.json', i18n ),
__( 'Use v3.16.0 Color Scheme Inheritance', i18n ),
+ __( 'Block Defaults (Sunsetted)', i18n ),
],
},
{
@@ -775,7 +776,7 @@ const EditorSettings = props => {
} }
help={ __( 'Adds a toolbar button for resetting the layout of a stackble block back to the original', i18n ) }
/>
-