diff --git a/helpers.js b/helpers.js index 9f35b04..2bef0ed 100644 --- a/helpers.js +++ b/helpers.js @@ -156,15 +156,7 @@ export async function zipProject(srcDir, outputFileName = 'dist.zip') { export async function buildExportFiles(blockName, platform) { if (platform.name.startsWith('wordpress')) { - if (platform.name === 'wordpress-acf-block') { - await buildWordPress(blockName, {block: true}); - } else if (platform.name === 'wordpress-elementor') { - await buildWordPress(blockName, {elementor: true}); - } else if (platform.name === 'wordpress-component-manager') { - await buildWordPress(blockName, {componentManager: true}); - } else { - await buildWordPress(blockName); - } + await buildWordPress(blockName, {platform: platform.name}); } else if (platform.name === 'hubspot-email') { await buildHubspotEmail(blockName) } else if (platform.name === 'hubspot') { diff --git a/package.json b/package.json index a82b7bc..40e320b 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "url": "https://axe-web.com/" }, "scripts": { - "info": "NODE_ENV=development BLOCK_NAME=header MODULE_PATH= node debug.js", - "dev": "NODE_ENV=development BLOCK_NAME=header MODULE_PATH= node server.js", - "build-platform": "NODE_ENV=development BLOCK_NAME=header MODULE_PATH= node ./build.js", + "info": "NODE_ENV=development BLOCK_NAME=drinks-slider MODULE_PATH= node debug.js", + "dev": "NODE_ENV=development BLOCK_NAME=drinks-slider MODULE_PATH= node server.js", + "build-platform": "NODE_ENV=development BLOCK_NAME=drinks-slider MODULE_PATH= node ./build.js", "dev-dev-tool": "NODE_ENV=development rollup --config rollup.config.js --watch", "build-dev-tool": "rollup --config rollup.config.js" }, diff --git a/platforms/php/build.php b/platforms/php/build.php index bb1d822..0aa0e15 100644 --- a/platforms/php/build.php +++ b/platforms/php/build.php @@ -11,7 +11,7 @@ use Brick\VarExporter\VarExporter; trait Custom_Handlebars { public array $custom_handlebars = []; - public function register_default_handlebar_helpers() { + public function register_default_handlebar_helpers(): void { $this->add_handlebar( 'esc_url', function ( $context ) { if ( function_exists( 'esc_url' ) ) { return esc_url( $context ); @@ -45,7 +45,7 @@ trait Custom_Handlebars { } ); } - public function add_handlebar( $key, $func ) { + public function add_handlebar( $key, $func ): void { $this->custom_handlebars[ $key ] = $func; } } @@ -56,11 +56,14 @@ class Component_Builder { public string $component_name = ''; public string $module_path = ''; public string $project_path = ''; + private string $dist_path = ''; - function __construct( $component_name, $module_path, $project_path ) { - $this->module_path = $module_path; - $this->project_path = $project_path; - $this->component_name = $component_name; + function __construct( $args = [] ) { + $this->module_path = $args['backPath']; + $this->project_path = $args['projectPath']; + $this->component_name = $args['blockName']; + + $this->dist_path = __DIR__ . '/' . $this->module_path . '../../' . $this->project_path . '/exports' . '/' . $args['platform']; $this->register_default_handlebar_helpers(); } @@ -70,10 +73,10 @@ class Component_Builder { $this->buildTemplatePhpFile( $root_path ); } - private function buildTemplatePhpFile( $root_path ) { + private function buildTemplatePhpFile( $root_path, $platform = 'wordpress' ): void { $file_name = $this->get_handlebars_template( "$root_path/src/$this->component_name.template.hbs" ); - $output_folder = $root_path . '/exports/wordpress/templates'; + $output_folder = $this->dist_path . '/templates'; rename( $file_name, "$output_folder/$this->component_name.template.php" ); } @@ -121,8 +124,12 @@ class Component_Builder { } } -function build( $args = [] ) { - ( new Component_Builder( $args['blockName'], $args['backPath'], $args['projectPath'] ) )->build(); +/** + * Functions below will be triggered by JavaScript (index.js). + */ + +function build( $args = [] ): void { + ( new Component_Builder( $args ) )->build(); } /** diff --git a/platforms/wordpress/templates/Template_Basic_Component.php b/platforms/wordpress/templates/Template_Basic_Component.php index 6c297f6..ad3ca54 100644 --- a/platforms/wordpress/templates/Template_Basic_Component.php +++ b/platforms/wordpress/templates/Template_Basic_Component.php @@ -3,12 +3,11 @@ namespace AXEWEB_Blocks\Blocks\<%= ownerClass %>\<%= blockClassModel %>; class <%= blockClassModel %>_Component <% if (isComponentManager || isElementor) { %>extends \Core\Component <% } %>{ - const VERSION = '<%= version %>';<% if (isComponentManager) { %> - public $hook_prefix = 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>';<% } %> + const VERSION = '<%= version %>'; - <% if (!isComponentManager) { %>public function __construct() { - <% if (isElementor) { %>parent::__construct(); - <% } %>// add_action( 'wp_enqueue_scripts', [ $this, 'register_assets' ] ); + <% if (!isComponentManager && !isElementor) { %>public function __construct() { + parent::__construct(); + // add_action( 'wp_enqueue_scripts', [ $this, 'register_assets' ] ); add_action( 'after_setup_theme', [ $this, 'register_assets' ] ); } @@ -16,13 +15,16 @@ class <%= blockClassModel %>_Component <% if (isComponentManager || isElementor) $base_path = plugin_dir_url( __FILE__ ); // In Plugins // $base_path = get_template_directory_uri() . '/components/partials/<%= blockFilename %>/'; // In Theme - wp_register_style( 'block-<%= blockFilename %>', $base_path . 'templates/styles/<%= blockFilename %>.min.css', [ 'assets-style' ], self::VERSION ); - wp_register_script( 'block-<%= blockFilename %>', $base_path . 'templates/scripts/<%= blockFilename %>.min.js', [ 'assets-script' ], self::VERSION, true ); + $style_deps = apply_filters( 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>::style_deps', [ 'assets-style' ] ); + wp_register_style( 'block-<%= blockFilename %>', $base_path . 'templates/styles/<%= blockFilename %>.min.css', $style_deps, self::VERSION ); - if ( ! is_admin() ) { + $script_deps = apply_filters( 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>::script_deps', [ 'assets-script' ] ); + wp_register_script( 'block-<%= blockFilename %>', $base_path . 'templates/scripts/<%= blockFilename %>.min.js', $script_deps, self::VERSION, true ); + + <% if (!isElementor) { %>if ( ! is_admin() ) { wp_enqueue_style( 'block-<%= blockFilename %>' ); wp_enqueue_script( 'block-<%= blockFilename %>' ); - } + }<% } %> } public function get_content( $args = [] ): string { @@ -40,9 +42,9 @@ class <%= blockClassModel %>_Component <% if (isComponentManager || isElementor) } function register_elementor_widget( $widgets_manager ): void { - require_once "helpers/<%= blockClassModel %>_Elementor_Widget.php"; - $widgets_manager->register_widget_type( new Helpers\<%= blockClassModel %>_Elementor_Widget() ); - } + require_once "helpers/<%= blockClassModel %>_Elementor_Widget.php"; + $widgets_manager->register_widget_type( new Helpers\<%= blockClassModel %>_Elementor_Widget() ); + } <% } %> } diff --git a/platforms/wordpress/templates/Template_Component.php b/platforms/wordpress/templates/Template_Component.php index 14ab8cb..3e98e8d 100644 --- a/platforms/wordpress/templates/Template_Component.php +++ b/platforms/wordpress/templates/Template_Component.php @@ -4,7 +4,6 @@ namespace AXEWEB_Blocks\Blocks\<%= ownerClass %>\<%= blockClassModel %>; class <%= blockClassModel %>_Component extends \Core\Component { const VERSION = '<%= version %>'; - public $hook_prefix = 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>'; public function get_content( $args = [] ): string { $default_args = apply_filters( 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>::default_args', [] ); // Not really practical. diff --git a/platforms/wordpress/wordpress-adapter.js b/platforms/wordpress/wordpress-adapter.js index 92429a4..9d8bb56 100644 --- a/platforms/wordpress/wordpress-adapter.js +++ b/platforms/wordpress/wordpress-adapter.js @@ -10,13 +10,13 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export async function buildWordPress(blockName, args = {}) { - const isBlock = !!args.block; - const isElementor = !!args.elementor; - const isComponentManager = !!args.componentManager; + const isBlock = args.platform === 'wordpress-acf-block'; + const isElementor = args.platform === 'wordpress-elementor'; + const isComponentManager = args.platform === 'wordpress-component-manager' const {modulesPath, projectPath} = getConfigs(); - const distPath = path.join(projectPath, 'exports', 'wordpress'); + const distPath = path.join(projectPath, 'exports', args.platform); // await mkdir(distPath, {recursive: true}) await mkdir(path.join(distPath, 'templates'), {recursive: true}) @@ -51,7 +51,12 @@ export async function buildWordPress(blockName, args = {}) { const phpGeneratorPath = path.join(modulesPath, 'platforms', 'php'); await execCommand(`cd ${phpGeneratorPath} && composer install`); - await execPHPFile(path.join(phpGeneratorPath, 'build.php'), 'build', {blockName, backPath, projectPath}); + await execPHPFile(path.join(phpGeneratorPath, 'build.php'), 'build', { + blockName, + backPath, + projectPath, + platform: args.platform + }); await copyStaticFile( path.join(projectPath, 'src', 'styles', `${data.blockFilename}.min.css`),