diff --git a/plugins/carhop-blocks/carhop-blocks.php b/plugins/carhop-blocks/carhop-blocks.php
index 91df22d..9d5663f 100644
--- a/plugins/carhop-blocks/carhop-blocks.php
+++ b/plugins/carhop-blocks/carhop-blocks.php
@@ -22,23 +22,21 @@ if (! defined('ABSPATH')) {
##### REGISTER BLOCKS #####
function create_block_carhop_blocks_block_init()
{
-
-
- ##### REGISTER ACF BLOCKS #####
+ // ##### REGISTER ACF BLOCKS #####
register_block_type(__DIR__ . '/acf-blocks/gallery');
register_block_type(__DIR__ . '/acf-blocks/social-networks');
register_block_type(__DIR__ . '/acf-blocks/custom-video');
register_block_type(__DIR__ . '/acf-blocks/team-carhop');
- if (function_exists('wp_register_block_types_from_metadata_collection')) {
- wp_register_block_types_from_metadata_collection(__DIR__ . '/build', __DIR__ . '/build/blocks-manifest.php');
- return;
- }
+ // if (function_exists('wp_register_block_types_from_metadata_collection')) {
+ // wp_register_block_types_from_metadata_collection(__DIR__ . '/build', __DIR__ . '/build/blocks-manifest.php');
+ // return;
+ // }
- if (function_exists('wp_register_block_metadata_collection')) {
- wp_register_block_metadata_collection(__DIR__ . '/build', __DIR__ . '/build/blocks-manifest.php');
- }
+ // if (function_exists('wp_register_block_metadata_collection')) {
+ // wp_register_block_metadata_collection(__DIR__ . '/build', __DIR__ . '/build/blocks-manifest.php');
+ // }
$manifest_data = require __DIR__ . '/build/blocks-manifest.php';
foreach (array_keys($manifest_data) as $block_type) {
@@ -85,10 +83,6 @@ function carhop_register_blocks()
if (!function_exists('register_block_type')) {
return;
}
- register_block_type(__DIR__ . '/acf-blocks/gallery');
- register_block_type(__DIR__ . '/acf-blocks/social-networks');
- register_block_type(__DIR__ . '/acf-blocks/custom-video');
- register_block_type(__DIR__ . '/acf-blocks/team-carhop');
// Enregistrer le script pour le bloc gallery
wp_register_script(
@@ -98,6 +92,12 @@ function carhop_register_blocks()
filemtime(__DIR__ . '/acf-blocks/gallery/view.js'),
true
);
+
+ wp_enqueue_style(
+ 'carhop-blocks-variations',
+ plugins_url('build/variations.css', __FILE__),
+
+ );
}
add_action('init', 'carhop_register_blocks');
@@ -105,23 +105,29 @@ add_action('init', 'carhop_register_blocks');
##### EDITOR EXTENSIONS
------------------------------------------------------------------*/
/**
- * Étend le bloc Titre (core/heading) avec un attribut "carhopVariant"
- * et ajoute une interface pour choisir une variante (ajoute une classe CSS).
+ * Enqueue plusieurs extensions éditeur (variantes/styles pour blocs core).
*/
function carhop_enqueue_editor_assets()
{
- $script_path = __DIR__ . '/src/core-heading-variant/editor.js';
- if (!file_exists($script_path)) {
- return;
- }
-
-
+ $asset_file = include __DIR__ . '/build/variations.asset.php';
wp_enqueue_script(
- 'carhop-heading-variant',
- plugins_url('src/core-heading-variant/editor.js', __FILE__),
- array('wp-blocks', 'wp-element', 'wp-dom-ready', 'wp-components', 'wp-compose', 'wp-data', 'wp-hooks', 'wp-i18n', 'wp-block-editor', 'wp-edit-post'),
- filemtime($script_path),
- true
+ 'carhop-variants',
+ plugins_url('build/variations.js', __FILE__),
);
}
add_action('enqueue_block_editor_assets', 'carhop_enqueue_editor_assets');
+
+
+function carhop_enqueue_variants_admin_scripts()
+{
+ $css = __DIR__ . '/build/variations.css';
+ if (file_exists($css)) {
+ wp_enqueue_style(
+ 'carhop-variants',
+ plugins_url('build/variations.css', __FILE__),
+ array(),
+ filemtime($css)
+ );
+ }
+}
+add_action('admin_enqueue_scripts', 'carhop_enqueue_admin_scripts');
diff --git a/plugins/carhop-blocks/package.json b/plugins/carhop-blocks/package.json
index bdafde7..d63f92b 100644
--- a/plugins/carhop-blocks/package.json
+++ b/plugins/carhop-blocks/package.json
@@ -23,4 +23,4 @@
"@wordpress/icons": "^11.2.0",
"url-loader": "^4.1.1"
}
-}
+}
\ No newline at end of file
diff --git a/plugins/carhop-blocks/src/core-variants/core-embed-variant/editor.js b/plugins/carhop-blocks/src/core-variants/core-embed-variant/editor.js
new file mode 100644
index 0000000..d279194
--- /dev/null
+++ b/plugins/carhop-blocks/src/core-variants/core-embed-variant/editor.js
@@ -0,0 +1,4 @@
+wp.blocks.registerBlockStyle("core/embed", {
+ name: "stacked-background",
+ label: "Fond empilé",
+});
diff --git a/plugins/carhop-blocks/src/core-variants/core-heading-variant/editor.js b/plugins/carhop-blocks/src/core-variants/core-heading-variant/editor.js
new file mode 100644
index 0000000..ada2fc7
--- /dev/null
+++ b/plugins/carhop-blocks/src/core-variants/core-heading-variant/editor.js
@@ -0,0 +1,4 @@
+wp.blocks.registerBlockStyle("core/heading", {
+ name: "stroked-after",
+ label: "Titre + trait ",
+});
diff --git a/plugins/carhop-blocks/src/core-variants/core-image-variant/editor.js b/plugins/carhop-blocks/src/core-variants/core-image-variant/editor.js
new file mode 100644
index 0000000..5bd1c37
--- /dev/null
+++ b/plugins/carhop-blocks/src/core-variants/core-image-variant/editor.js
@@ -0,0 +1,10 @@
+wp.blocks.registerBlockStyle("core/image", {
+ name: "framed",
+ label: "Encadré",
+ isDefault: true,
+});
+wp.blocks.registerBlockStyle("core/image", {
+ name: "stacked",
+ label: "Empilé",
+ isDefault: false,
+});
diff --git a/plugins/carhop-blocks/src/core-variants/core-list-variant/.DS_Store b/plugins/carhop-blocks/src/core-variants/core-list-variant/.DS_Store
new file mode 100644
index 0000000..511ff00
Binary files /dev/null and b/plugins/carhop-blocks/src/core-variants/core-list-variant/.DS_Store differ
diff --git a/plugins/carhop-blocks/src/core-variants/core-list-variant/editor.js b/plugins/carhop-blocks/src/core-variants/core-list-variant/editor.js
new file mode 100644
index 0000000..0619c43
--- /dev/null
+++ b/plugins/carhop-blocks/src/core-variants/core-list-variant/editor.js
@@ -0,0 +1,168 @@
+import { registerBlockVariation } from "@wordpress/blocks";
+import { __ } from "@wordpress/i18n";
+import {
+ InspectorControls,
+ BlockControls,
+ AlignmentToolbar,
+} from "@wordpress/block-editor";
+import { ToolbarGroup, ToolbarDropdownMenu } from "@wordpress/components";
+import { Fragment } from "@wordpress/element";
+import { addFilter } from "@wordpress/hooks";
+import { createHigherOrderComponent } from "@wordpress/compose";
+
+import { check, arrowRight, starFilled } from "@wordpress/icons";
+
+// Variation du bloc "Liste" pour ajouter une classe spéciale
+registerBlockVariation("core/list", {
+ name: "iconed-list",
+ title: "Liste avec icônes",
+ description: "Liste dont chaque élément peut avoir une icône personnalisée.",
+ attributes: {
+ className: "is-iconed-list",
+ },
+ scope: ["inserter", "transform"],
+ isActive: (blockAttributes) => {
+ const cls = (blockAttributes && blockAttributes.className) || "";
+ return cls.split(" ").includes("is-iconed-list");
+ },
+});
+
+// -----------------------------
+// 1. On étend les attributs de core/list-item
+// -----------------------------
+
+addFilter(
+ "blocks.registerBlockType",
+ "am/iconed-list-item-attributes",
+ (settings, name) => {
+ if (name !== "core/list-item") {
+ return settings;
+ }
+
+ return {
+ ...settings,
+ attributes: {
+ ...settings.attributes,
+ icon: {
+ type: "string",
+ default: "",
+ },
+ },
+ };
+ }
+);
+
+// -----------------------------
+// 2. On ajoute un panneau de réglages pour choisir l'icône
+// -----------------------------
+
+addFilter(
+ "editor.BlockEdit",
+ "am/iconed-list-item-controls",
+ (BlockEdit) => (props) => {
+ if (props.name !== "core/list-item") {
+ return