This commit is contained in:
gcch 2025-11-12 16:23:06 +01:00
commit e05e9553f5
1250 changed files with 23379 additions and 147730 deletions

6
.gitignore vendored
View file

@ -5,7 +5,7 @@ web/app/mu-plugins/*/
web/app/themes/twentytwentyfour/
web/app/upgrade
web/app/cache/*
web/app/languages/plugins/
web/app/languages/
web/app/object-cache.php
# WordPress
@ -59,3 +59,7 @@ containers/conf/angie/modules-available
containers/conf/angie/modules-enabled
containers/conf/angie/scripts
containers/conf/angie/snippets
# PHP et Twig
.php-cs-fixer.cache
.twig-cs-fixer.cache

1
.php-cs-fixer.cache Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,8 +1,262 @@
<?php
<?php declare(strict_types=1);
use PhpCsFixer\Config;
use PhpCsFixer\Finder;
use PhpCsFixer\Runner;
$finder = (new Finder())->in(__DIR__)->exclude(['vendor', 'web/vendor', 'web/wp', 'web/app/languages', 'web/app/plugins', 'web/app/mu-plugins']);
$finder = new Finder()->in(__DIR__)->exclude([
'containers',
'db',
'lib',
'tests',
'vendor',
'web/app/languages',
'web/app/mu-plugins',
'web/app/plugins',
'web/app/themes/twentytwentyfour',
'web/vendor',
'web/wp',
]);
return (new Config())->setRules(['@PhpCsFixer' => true])->setFinder($finder);
return new Config()
->setRiskyAllowed(true)
->setRules([
'array_syntax' => ['syntax' => 'short'],
'assign_null_coalescing_to_coalesce_equal' => true,
'attribute_empty_parentheses' => ['use_parentheses' => true],
'blank_line_after_namespace' => true,
'blank_lines_before_namespace' => ['min_line_breaks' => 1, 'max_line_breaks' => 2],
'cast_spaces' => true,
'class_attributes_separation' => ['elements' => [
'case' => 'none',
'const' => 'none',
'method' => 'one',
'property' => 'one',
'trait_import' => 'none',
]],
'class_reference_name_casing' => true,
'clean_namespace' => true,
'combine_consecutive_issets' => true,
'combine_consecutive_unsets' => true,
'combine_nested_dirname' => true,
'comment_to_phpdoc' => true,
'constant_case' => true,
'date_time_immutable' => true,
'declare_equal_normalize' => true,
'declare_parentheses' => true,
'declare_strict_types' => true,
'dir_constant' => true,
'echo_tag_syntax' => true,
'encoding' => true,
'ereg_to_preg' => true,
'error_suppression' => true,
'explicit_indirect_variable' => true,
'explicit_string_variable' => true,
'final_class' => true,
'final_internal_class' => true,
'full_opening_tag' => true,
'fully_qualified_strict_types' => ['import_symbols' => true],
'function_to_constant' => true,
'global_namespace_import' => ['import_classes' => true, 'import_constants' => true, 'import_functions' => true],
'heredoc_to_nowdoc' => true,
'integer_literal_case' => true,
'lambda_not_used_import' => true,
'list_syntax' => true,
'logical_operators' => true,
'long_to_shorthand_operator' => true,
'lowercase_cast' => true,
'lowercase_keywords' => true,
'lowercase_static_reference' => true,
'magic_constant_casing' => true,
'magic_method_casing' => true,
'mb_str_functions' => true,
'modernize_strpos' => ['modernize_stripos' => true],
'modernize_types_casting' => true,
'modifier_keywords' => true,
'multiline_comment_opening_closing' => true,
'native_constant_invocation' => true,
'native_function_casing' => true,
'native_function_invocation' => true,
'native_type_declaration_casing' => true,
'new_expression_parentheses' => true,
'no_alias_functions' => ['sets' => ['@all']],
'no_alias_language_construct_call' => true,
'no_alternative_syntax' => true,
'no_binary_string' => true,
'no_closing_tag' => true,
'no_empty_comment' => true,
'no_homoglyph_names' => true,
'no_leading_import_slash' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_multiple_statements_per_line' => true,
'no_null_property_initialization' => true,
'no_php4_constructor' => true,
'no_short_bool_cast' => true,
'no_trailing_comma_in_singleline' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unneeded_braces' => ['namespaces' => true],
'no_unneeded_control_parentheses' => ['statements' => [
'break',
'clone',
'continue',
'echo_print',
'negative_instanceof',
'others',
'return',
'switch_case',
'yield',
'yield_from',
]],
'no_unneeded_final_method' => true,
'no_unneeded_import_alias' => true,
'no_unreachable_default_argument_value' => true,
'no_unset_cast' => true,
'no_unset_on_property' => true,
'no_unused_imports' => true,
'no_useless_concat_operator' => true,
'no_useless_nullsafe_operator' => true,
'no_useless_printf' => true,
'no_useless_return' => true,
'no_useless_sprintf' => true,
'no_whitespace_before_comma_in_array' => ['after_heredoc' => true],
'non_printable_character' => true,
'normalize_index_brace' => true,
'nullable_type_declaration' => ['syntax' => 'union'],
'nullable_type_declaration_for_default_null_value' => true,
'numeric_literal_separator' => ['override_existing' => true, 'strategy' => 'use_separator'],
'ordered_attributes' => true,
'ordered_class_elements' => ['case_sensitive' => false, 'sort_algorithm' => 'alpha'],
'ordered_imports' => ['case_sensitive' => true],
'ordered_interfaces' => true,
'ordered_traits' => true,
'ordered_types' => ['null_adjustment' => 'always_last'],
'phpdoc_readonly_class_comment_to_keyword' => true,
'phpdoc_to_param_type' => true,
'phpdoc_to_property_type' => true,
'phpdoc_to_return_type' => true,
'pow_to_exponentiation' => true,
'protected_to_private' => true,
'psr_autoloading' => true,
'random_api_migration' => ['replacements' => [
'getrandmax' => 'mt_getrandmax',
'rand' => 'mt_rand',
'srand' => 'mt_srand',
]],
'return_assignment' => true,
'self_accessor' => true,
'self_static_accessor' => true,
'set_type_to_cast' => true,
'short_scalar_cast' => true,
'simple_to_complex_string_variable' => true,
'simplified_null_return' => true,
'single_class_element_per_statement' => true,
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_line_comment_spacing' => true,
'single_line_comment_style' => true,
'single_line_empty_body' => true,
'single_trait_insert_per_statement' => true,
'standardize_not_equals' => true,
'static_lambda' => true,
'strict_comparison' => true,
'strict_param' => true,
'string_implicit_backslashes' => true,
'string_length_to_empty' => true,
'switch_continue_to_break' => true,
'ternary_to_null_coalescing' => true,
'trim_array_spaces' => true,
'use_arrow_functions' => true,
'void_return' => true,
'whitespace_after_comma_in_array' => ['ensure_single_space' => true],
// ---
// Each line of multi-line DocComments must have an asterisk [PSR-5] and must be aligned with the first one.
'align_multiline_comment' => ['comment_type' => 'all_multiline'],
// There should not be blank lines between docblock and the documented element.
'no_blank_lines_after_phpdoc' => true,
// There should not be empty PHPDoc blocks.
'no_empty_phpdoc' => true,
// Removes @param, @return and @var tags that don't provide any useful information.
'no_superfluous_phpdoc_tags' => [
'allow_hidden_params' => false,
'allow_mixed' => false,
'allow_unused_params' => false,
],
// PHPDoc should contain @param for all params.
'phpdoc_add_missing_param_annotation' => ['only_untyped' => false],
// All items of the given PHPDoc tags must be either left-aligned or (by default) aligned vertically.
'phpdoc_align' => true,
// PHPDoc annotation descriptions should not be a sentence.
'phpdoc_annotation_without_dot' => true,
// PHPDoc array<T> type must be used instead of T[].
'phpdoc_array_type' => true,
// Docblocks should have the same indentation as the documented subject.
'phpdoc_indent' => true,
// Fixes PHPDoc inline tags.
'phpdoc_inline_tag_normalizer' => true,
// Changes doc blocks from single to multi line, or reversed. Works for class constants, properties and methods only.
'phpdoc_line_span' => ['const' => 'single', 'method' => 'multi', 'property' => 'single'],
// PHPDoc list type must be used instead of array without a key.
'phpdoc_list_type' => true,
// @access annotations must be removed from PHPDoc.
'phpdoc_no_access' => true,
// No alias PHPDoc tags should be used.
'phpdoc_no_alias_tag' => true,
// @return void and @return null annotations must be removed from PHPDoc.
'phpdoc_no_empty_return' => false,
// @package and @subpackage annotations must be removed from PHPDoc.
'phpdoc_no_package' => true,
// Classy that does not inherit must not have @inheritdoc tags.
'phpdoc_no_useless_inheritdoc' => true,
// Annotations in PHPDoc should be ordered in defined sequence.
'phpdoc_order' => true,
// Order PHPDoc tags by value.
'phpdoc_order_by_value' => true,
// Orders all @param annotations in DocBlocks according to method signature.
'phpdoc_param_order' => true,
// The type of @return annotations of methods returning a reference to itself must the configured one.
'phpdoc_return_self_reference' => true,
// Scalar types should always be written in the same form. int not integer, bool not boolean, float not real or double.
'phpdoc_scalar' => ['types' => [
'boolean',
'callback',
'double',
'integer',
'never-return',
'never-returns',
'no-return',
'real',
'str',
]],
// Annotations in PHPDoc should be grouped together so that annotations of the same type immediately follow each other. Annotations of a different type are separated by a single blank line.
'phpdoc_separation' => [
'groups' => [
['Annotation', 'NamedArgumentConstructor', 'Target'],
['author', 'copyright', 'license'],
['category', 'package', 'subpackage'],
['property', 'property-read', 'property-write'],
['deprecated', 'link', 'see', 'since'],
],
'skip_unlisted_annotations' => false,
],
// Single line @var PHPDoc should have proper spacing.
'phpdoc_single_line_var_spacing' => true,
// PHPDoc summary should end in either a full stop, exclamation mark, or question mark.
'phpdoc_summary' => true,
// Docblocks should only be used on structural elements.
'phpdoc_to_comment' => ['allow_before_return_statement' => true],
// PHPDoc should start and end with content, excluding the very first and last line of the docblocks.
'phpdoc_trim' => true,
// Removes extra blank lines after summary and after description in PHPDoc.
'phpdoc_trim_consecutive_blank_line_separation' => true,
// The correct case must be used for standard PHP types in PHPDoc.
'phpdoc_types' => true,
// Sorts PHPDoc types.
'phpdoc_types_order' => ['null_adjustment' => 'always_last'],
// @var and @type annotations must have type and name in the correct order.
'phpdoc_var_annotation_correct_order' => true,
// @var and @type annotations of classy properties should not contain the name.
'phpdoc_var_without_name' => true,
])
->setFinder($finder)
->setParallelConfig(Runner\Parallel\ParallelConfigFactory::detect());

31
.swcrc
View file

@ -1,31 +0,0 @@
{
"$schema": "https://swc.rs/schema.json",
"jsc": {
"externalHelpers": false,
"keepClassNames": false,
"loose": false,
"minify": {
"compress": true,
"mangle": true
},
"parser": {
"decorators": false,
"decoratorsBeforeExport": false,
"dynamicImport": false,
"exportDefaultFrom": false,
"exportNamespaceFrom": false,
"functionBind": false,
"importMeta": false,
"jsx": false,
"privateMethod": false,
"syntax": "typescript",
"topLevelAwait": false,
"tsx": false
},
"preserveAllComments": false,
"target": "es2020",
"transform": null
},
"minify": true,
"sourceMaps": true
}

View file

@ -1 +1 @@
{"php_version":"8.4.11","fixer_version":"ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6","rules":{"TwigCsFixer\\Rules\\Delimiter\\DelimiterSpacingRule":{"skipIfNewLine":true},"TwigCsFixer\\Rules\\Function\\NamedArgumentSeparatorRule":null,"TwigCsFixer\\Rules\\Function\\NamedArgumentSpacingRule":null,"TwigCsFixer\\Rules\\Operator\\OperatorNameSpacingRule":null,"TwigCsFixer\\Rules\\Operator\\OperatorSpacingRule":null,"TwigCsFixer\\Rules\\Punctuation\\PunctuationSpacingRule":{"before":{")":0,"]":0,"}":0,":":0,".":0,",":0,"|":0,"?:":0},"after":{"(":0,"[":0,"{":0,".":0,"|":0,":":1,",":1,"?:":1}},"TwigCsFixer\\Rules\\Whitespace\\BlankEOFRule":null,"TwigCsFixer\\Rules\\Delimiter\\BlockNameSpacingRule":null,"TwigCsFixer\\Rules\\Whitespace\\EmptyLinesRule":null,"TwigCsFixer\\Rules\\Literal\\CompactHashRule":{"compact":false},"TwigCsFixer\\Rules\\Literal\\HashQuoteRule":{"useQuote":false},"TwigCsFixer\\Rules\\Function\\IncludeFunctionRule":null,"TwigCsFixer\\Rules\\Whitespace\\IndentRule":{"spaceRatio":4,"useTab":false},"TwigCsFixer\\Rules\\Literal\\SingleQuoteRule":{"skipStringContainingSingleQuote":true},"TwigCsFixer\\Rules\\Punctuation\\TrailingCommaMultiLineRule":{"comma":true},"TwigCsFixer\\Rules\\Punctuation\\TrailingCommaSingleLineRule":null,"TwigCsFixer\\Rules\\Whitespace\\TrailingSpaceRule":null},"hashes":{"web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/shop\/grille-produits.twig":"325d4e0610df79c739eabfe751b2f709","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/grille-produits-similaires.twig":"eadf1a78a51084677aaaa56dafb1e708","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/photos-produit.twig":"5654c0382c5ef553a0b96a09194d909a","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/bandeau.twig":"1164a4e9baafbb15be2a4dc98c32ced1","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pied-de-page.twig":"d5f5afaa90db1db6590ea0ed0584c216","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/menu-categories-produits.twig":"e132a6035820545f704075ab9e89d119","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-commande-envoyee.twig":"e4e3bbc92a40eeae8925085b560dcb0d","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/informations-produit.twig":"4b7c756b4aa0f88942857e6c4969b354","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/produits-similaires.twig":"695492c5926dfeeb69c37eb6227e1f18","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/panier\/panneau-informations-client.twig":"095a41b6e4142d7c2d9ebe18e4ac24d0","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/panier\/panneau-panier.twig":"0b84a3113ceceaac82ee96aea753c8aa","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/html-head.twig":"691202d8b7719de34f604e42a74932af","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/en-tete.twig":"1cf26fa4e64cdc7c6ed29b4e5627841a","web\/app\/themes\/haiku-atelier-2024\/views\/macros\/images.twig":"4beca7e03e55ef0e46828befcc779677","web\/app\/themes\/haiku-atelier-2024\/views\/404.twig":"75335b023fcc6f5c83197e8c126384e1","web\/app\/themes\/haiku-atelier-2024\/views\/a-propos.twig":"b5bdf0962e089bc93d33f5d23b97f64c","web\/app\/themes\/haiku-atelier-2024\/views\/cgv.twig":"97984ba4344e2dcf8c3237796203c614","web\/app\/themes\/haiku-atelier-2024\/views\/succes-commande.twig":"712e54c1866a66988ccb1a79cbae53d6","web\/app\/themes\/haiku-atelier-2024\/views\/echec-commande.twig":"9cf475c2c19664e9ef92a71e670b2880","web\/app\/themes\/haiku-atelier-2024\/views\/produit.twig":"43bf608a266e8b8652a8f878fbe4580e","web\/app\/themes\/haiku-atelier-2024\/views\/panier.twig":"d008509105bb53253214344429163558","web\/app\/themes\/haiku-atelier-2024\/views\/contact.twig":"5d9dcae3e990c671404a8200b6c9815a","web\/app\/themes\/haiku-atelier-2024\/views\/boutique.twig":"10449e7c29289282366d754ec3360589","web\/app\/themes\/haiku-atelier-2024\/views\/accueil.twig":"beb4b2270ea3a1bcdbf8cd9e69f83ee7","web\/app\/themes\/haiku-atelier-2024\/views\/base.twig":"3e3ed592fb1c4bc8405be3b52f403725","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-base.twig":"7ef70033248d96d208f965dc4d885d9f","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-commande-recue.twig":"0b09e4586dd8eb4ca9513b9ae38e307b"}}
{"php_version":"8.4.11","fixer_version":"866af065fd09980b6390ee5c69e45b08053101e8","rules":{"TwigCsFixer\\Rules\\Delimiter\\DelimiterSpacingRule":{"skipIfNewLine":true},"TwigCsFixer\\Rules\\Function\\MacroArgumentNameRule":{"case":"snake_case"},"TwigCsFixer\\Rules\\Function\\NamedArgumentNameRule":{"case":"snake_case"},"TwigCsFixer\\Rules\\Function\\NamedArgumentSeparatorRule":null,"TwigCsFixer\\Rules\\Function\\NamedArgumentSpacingRule":null,"TwigCsFixer\\Rules\\Operator\\OperatorNameSpacingRule":null,"TwigCsFixer\\Rules\\Operator\\OperatorSpacingRule":null,"TwigCsFixer\\Rules\\Punctuation\\PunctuationSpacingRule":{"before":{")":0,"]":0,"}":0,":":0,".":0,",":0,"|":0,"?:":0},"after":{"(":0,"[":0,"{":0,".":0,"|":0,":":1,",":1,"?:":1}},"TwigCsFixer\\Rules\\Variable\\VariableNameRule":{"case":"snake_case","optionalPrefix":""},"TwigCsFixer\\Rules\\Whitespace\\BlankEOFRule":null,"TwigCsFixer\\Rules\\Delimiter\\BlockNameSpacingRule":null,"TwigCsFixer\\Rules\\Whitespace\\EmptyLinesRule":null,"TwigCsFixer\\Rules\\Literal\\CompactHashRule":{"compact":false},"TwigCsFixer\\Rules\\Literal\\HashQuoteRule":{"useQuote":false},"TwigCsFixer\\Rules\\Function\\IncludeFunctionRule":null,"TwigCsFixer\\Rules\\Whitespace\\IndentRule":{"spaceRatio":4,"useTab":false},"TwigCsFixer\\Rules\\Literal\\SingleQuoteRule":{"skipStringContainingSingleQuote":true},"TwigCsFixer\\Rules\\Punctuation\\TrailingCommaMultiLineRule":{"comma":true},"TwigCsFixer\\Rules\\Punctuation\\TrailingCommaSingleLineRule":null,"TwigCsFixer\\Rules\\Whitespace\\TrailingSpaceRule":null},"hashes":{"web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/shop\/grille-produits.twig":"ef4ff046636044e452eeb3fe9edefaeb","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/grille-produits-similaires.twig":"eadf1a78a51084677aaaa56dafb1e708","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/informations-produit.twig":"4b7c756b4aa0f88942857e6c4969b354","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/photos-produit.twig":"5654c0382c5ef553a0b96a09194d909a","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/produit\/produits-similaires.twig":"695492c5926dfeeb69c37eb6227e1f18","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/panier\/panneau-informations-client.twig":"095a41b6e4142d7c2d9ebe18e4ac24d0","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pages\/panier\/panneau-panier.twig":"684e37c3acba0ee0800421b635b3d515","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/pied-de-page.twig":"d5f5afaa90db1db6590ea0ed0584c216","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/bandeau.twig":"1164a4e9baafbb15be2a4dc98c32ced1","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/en-tete.twig":"1cf26fa4e64cdc7c6ed29b4e5627841a","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/html-head.twig":"691202d8b7719de34f604e42a74932af","web\/app\/themes\/haiku-atelier-2024\/views\/parts\/menu-categories-produits.twig":"e132a6035820545f704075ab9e89d119","web\/app\/themes\/haiku-atelier-2024\/views\/macros\/images.twig":"4beca7e03e55ef0e46828befcc779677","web\/app\/themes\/haiku-atelier-2024\/views\/404.twig":"75335b023fcc6f5c83197e8c126384e1","web\/app\/themes\/haiku-atelier-2024\/views\/a-propos.twig":"b5bdf0962e089bc93d33f5d23b97f64c","web\/app\/themes\/haiku-atelier-2024\/views\/accueil.twig":"beb4b2270ea3a1bcdbf8cd9e69f83ee7","web\/app\/themes\/haiku-atelier-2024\/views\/base.twig":"3e3ed592fb1c4bc8405be3b52f403725","web\/app\/themes\/haiku-atelier-2024\/views\/boutique.twig":"10449e7c29289282366d754ec3360589","web\/app\/themes\/haiku-atelier-2024\/views\/cgv.twig":"97984ba4344e2dcf8c3237796203c614","web\/app\/themes\/haiku-atelier-2024\/views\/contact.twig":"5d9dcae3e990c671404a8200b6c9815a","web\/app\/themes\/haiku-atelier-2024\/views\/echec-commande.twig":"9cf475c2c19664e9ef92a71e670b2880","web\/app\/themes\/haiku-atelier-2024\/views\/panier.twig":"6a423fea77a22c54e37fe8a7b6e1f34f","web\/app\/themes\/haiku-atelier-2024\/views\/produit.twig":"43bf608a266e8b8652a8f878fbe4580e","web\/app\/themes\/haiku-atelier-2024\/views\/succes-commande.twig":"712e54c1866a66988ccb1a79cbae53d6","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-commande-envoyee.twig":"e4e3bbc92a40eeae8925085b560dcb0d","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-base.twig":"7ef70033248d96d208f965dc4d885d9f","web\/app\/themes\/haiku-atelier-2024\/woocommerce\/emails\/views\/email-commande-recue.twig":"0b09e4586dd8eb4ca9513b9ae38e307b"}}

12
.twig-cs-fixer.php Normal file
View file

@ -0,0 +1,12 @@
<?php declare(strict_types=1);
use TwigCsFixer\Config\Config;
use TwigCsFixer\Ruleset\Ruleset;
use TwigCsFixer\Standard\TwigCsFixer;
$ruleset = new Ruleset()->addStandard(new TwigCsFixer());
$config = new Config()
->allowNonFixableRules()
->setRuleset($ruleset);
return $config;

View file

@ -1,7 +1,16 @@
{
"$schema": "https://biomejs.dev/schemas/2.0.4/schema.json",
"assist": { "enabled": false },
"css": { "formatter": { "enabled": false }, "linter": { "enabled": true } },
"assist": {
"enabled": false
},
"css": {
"formatter": {
"enabled": false
},
"linter": {
"enabled": true
}
},
"files": {
"experimentalScannerIgnores": [
"*.min.js",
@ -13,36 +22,61 @@
"ignoreUnknown": true,
"maxSize": 100000000
},
"formatter": { "enabled": false },
"graphql": { "formatter": { "enabled": false }, "linter": { "enabled": true } },
"json": { "formatter": { "enabled": false }, "linter": { "enabled": true } },
"formatter": {
"enabled": false
},
"graphql": {
"formatter": {
"enabled": false
},
"linter": {
"enabled": true
}
},
"json": {
"formatter": {
"enabled": false
},
"linter": {
"enabled": true
}
},
"linter": {
"enabled": false,
"rules": {
"complexity": { "noForEach": "off" },
"complexity": {
"noForEach": "off"
},
"nursery": {
"recommended": true,
"useSortedClasses": {
"fix": "unsafe",
"level": "error",
"options": { "attributes": ["class"], "functions": [""] }
"options": {
"attributes": [
"class"
],
"functions": [
""
]
}
}
},
"recommended": true,
"style": {
"recommended": true,
"noInferrableTypes": "error",
"noNonNullAssertion": "off",
"noParameterAssign": "error",
"noUnusedTemplateLiteral": "error",
"noUselessElse": "error",
"recommended": true,
"useAsConstAssertion": "error",
"useDefaultParameterLast": "error",
"useEnumInitializers": "error",
"useSelfClosingElements": "error",
"useSingleVarDeclarator": "error",
"noUnusedTemplateLiteral": "error",
"useNumberNamespace": "error",
"noInferrableTypes": "error",
"noUselessElse": "error"
},
"recommended": true
"useSelfClosingElements": "error",
"useSingleVarDeclarator": "error"
}
}
}
}

2214
bun.lock

File diff suppressed because it is too large Load diff

View file

@ -52,6 +52,21 @@ services:
- "14250:14250"
- "14268:14268"
- "14269:14269"
phpmyadmin:
container_name: "haikuatelier.fr-phpmyadmin"
depends_on:
- "db"
- "proxy"
- "traefik"
env_file:
- path: "./.env"
required: true
image: "docker.io/library/phpmyadmin:latest"
networks:
- "haiku-network"
ports:
- "127.0.0.1:8080:80"
restart: "on-failure:3"
proxy:
container_name: "haikuatelier.fr-proxy"
depends_on:
@ -118,13 +133,12 @@ services:
- "CMD-SHELL"
- "valkey-cli ping | grep PONG"
timeout: "5s"
image: "docker.io/valkey/valkey:8-alpine"
image: "docker.io/valkey/valkey:9-alpine"
restart: "unless-stopped"
sysctls:
- "net.core.somaxconn=512"
volumes:
- "./containers/conf/valkey.conf:/usr/local/etc/valkey/valkey.conf:ro"
- "./containers/data/valkey:/data:rw"
wordpress:
container_name: "haikuatelier.fr-wordpress"
depends_on:

View file

@ -1,65 +1,11 @@
{
"name": "roots/bedrock",
"type": "project",
"license": "MIT",
"description": "WordPress boilerplate with Composer, easier configuration, and an improved folder structure",
"homepage": "https://roots.io/bedrock/",
"authors": [
{ "name": "Scott Walkinshaw", "email": "scott.walkinshaw@gmail.com", "homepage": "https://github.com/swalkinshaw" },
{ "name": "Ben Word", "email": "ben@benword.com", "homepage": "https://github.com/retlehs" }
],
"keywords": ["bedrock", "composer", "roots", "wordpress", "wp", "wp-config"],
"support": {
"issues": "https://github.com/roots/bedrock/issues",
"forum": "https://discourse.roots.io/category/bedrock"
},
"repositories": [
{ "type": "composer", "url": "https://wpackagist.org", "only": ["wpackagist-plugin/*", "wpackagist-theme/*"] }
],
"require": {
"php": ">=8.4",
"composer/installers": "^2.3",
"crell/fp": "^1.0",
"htmlburger/carbon-fields": "^3.6",
"illuminate/support": "^12.18",
"laravel/helpers": "^1.7.1",
"log1x/wp-smtp": "^1.0.2",
"lstrojny/functional-php": "^1.17",
"mnsami/composer-custom-directory-installer": "^2.0",
"nesbot/carbon": "^3.8.2",
"oscarotero/env": "^2.1.1",
"ramsey/uuid": "^4.7.6",
"roots/bedrock-autoloader": "^1.0.4",
"roots/bedrock-disallow-indexing": "^2.0",
"roots/wordpress": "^6.8.1",
"roots/wp-config": "^1.0",
"stripe/stripe-php": "^16.3",
"symfony/uid": "^7.2.0",
"timber/timber": "^2.3",
"vlucas/phpdotenv": "^5.6.1",
"wpackagist-plugin/falcon": "^2.8.4",
"wpackagist-plugin/force-regenerate-thumbnails": "^2.2.1",
"wpackagist-plugin/query-monitor": "^3.17.0",
"wpackagist-plugin/redis-cache": "^2.5.4",
"wpackagist-plugin/woo-preview-emails": "^2.2.13",
"wpackagist-plugin/woocommerce": "^10",
"wpackagist-plugin/wp-mail-logging": "^1.13.1",
"wpackagist-plugin/wp-mail-smtp": "^4.2",
"wpackagist-plugin/wp-openapi": "^1.0.16",
"wpackagist-theme/twentytwentyfour": "^1.3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.89",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.0.3",
"roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^4.0",
"szepeviktor/phpstan-wordpress": "2.x-dev",
"vincentlanglet/twig-cs-fixer": "^3.10"
"authors": [],
"autoload": {
"psr-4": {
"HaikuAtelier\\": "web/app/themes/haiku-atelier-2024/src/inc"
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"allow-plugins": {
"carthage-software/mago": true,
"composer/installers": true,
@ -67,17 +13,87 @@
"phpstan/extension-installer": true,
"roots/wordpress-core-installer": true
},
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"minimum-stability": "dev",
"prefer-stable": true,
"extra": {
"installer-paths": {
"web/vendor/{$vendor}/{$name}": ["htmlburger/carbon-fields"],
"web/app/mu-plugins/{$name}/": ["type:wordpress-muplugin"],
"web/app/plugins/{$name}/": ["type:wordpress-plugin"],
"web/app/themes/{$name}/": ["type:wordpress-theme"]
"web/app/mu-plugins/{$name}/": [
"type:wordpress-muplugin"
],
"web/app/plugins/{$name}/": [
"type:wordpress-plugin"
],
"web/app/themes/{$name}/": [
"type:wordpress-theme"
],
"web/vendor/{$vendor}/{$name}": [
"htmlburger/carbon-fields"
]
},
"wordpress-install-dir": "web/wp"
}
},
"minimum-stability": "dev",
"name": "gcch/haiku-atelier",
"prefer-stable": true,
"repositories": [
{
"only": [
"wpackagist-plugin/*",
"wpackagist-theme/*"
],
"type": "composer",
"url": "https://wpackagist.org"
}
],
"require": {
"composer/installers": "^2.3",
"crell/fp": "^1.0",
"htmlburger/carbon-fields": "^3.6.9",
"illuminate/support": "^12.37",
"laravel/helpers": "^1.8.1",
"log1x/wp-smtp": "^1.0.2",
"lstrojny/functional-php": "^1.17",
"mnsami/composer-custom-directory-installer": "^2.0",
"mrottow/vite-wordpress": "^0.1.3",
"nesbot/carbon": "^3.10.3",
"oscarotero/env": "^2.1.1",
"php": ">=8.4",
"ramsey/uuid": "^4.9.1",
"roots/bedrock-autoloader": "^1.0.4",
"roots/bedrock-disallow-indexing": "^2.0",
"roots/wordpress": "^6.8.3",
"roots/wp-config": "^1.0",
"stripe/stripe-php": "^16.6",
"symfony/uid": "^8",
"timber/timber": "^2.3.3",
"vlucas/phpdotenv": "^5.6.2",
"webmozart/assert": "^1.12.1",
"wpackagist-plugin/falcon": "2.8.6",
"wpackagist-plugin/force-regenerate-thumbnails": "2.2.2",
"wpackagist-plugin/query-monitor": "^3.20.0",
"wpackagist-plugin/redis-cache": "^2.7.0",
"wpackagist-plugin/wc-multishipping": "3.0",
"wpackagist-plugin/woo-preview-emails": "2.2.14",
"wpackagist-plugin/woocommerce": "10.3.6",
"wpackagist-plugin/wp-mail-logging": "1.15.0",
"wpackagist-plugin/wp-mail-smtp": "4.7.1",
"wpackagist-plugin/wp-openapi": "1.0.27",
"wpackagist-theme/twentytwentyfour": "^1.4"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.89.2",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.32",
"phpstan/phpstan-deprecation-rules": "^2.0.3",
"phpstan/phpstan-webmozart-assert": "^2.0",
"rector/rector": "^2.2.7",
"roave/security-advisories": "dev-latest",
"squizlabs/php_codesniffer": "^4.0.1",
"swissspidy/phpstan-no-private": "^1.0",
"szepeviktor/phpstan-wordpress": "2.x-dev",
"vincentlanglet/twig-cs-fixer": "^3.10"
},
"type": "project"
}

961
composer.lock generated

File diff suppressed because it is too large Load diff

View file

@ -11,36 +11,34 @@
declare(strict_types=1);
use Roots\WPConfig\Config;
use function Env\env;
use Roots\WPConfig\Config;
// USE_ENV_ARRAY + CONVERT_* + STRIP_QUOTES
Env\Env::$options = 31;
/*
/**
* Directory containing all of the site's files.
*
* @var string
*/
$root_dir = dirname(__DIR__);
$root_dir = \dirname(__DIR__);
/*
/**
* Document Root.
*
* @var string
*/
$webroot_dir = $root_dir.'/web';
$webroot_dir = $root_dir . '/web';
/*
* Use Dotenv to set required environment variables and load .env file in root
* .env.local will override .env if it exists
*/
if (file_exists($root_dir.'/.env')) {
$env_files = file_exists($root_dir.'/.env.local') ? [
'.env',
'.env.local',
] : ['.env'];
if (file_exists($root_dir . '/.env')) {
$env_files = file_exists($root_dir . '/.env.local')
? ['.env', '.env.local']
: ['.env'];
$dotenv = Dotenv\Dotenv::createImmutable($root_dir, $env_files, false);
@ -56,10 +54,10 @@ if (file_exists($root_dir.'/.env')) {
* Set up our global environment constant and load its config first
* Default: production
*/
define('WP_ENV', env('WP_ENV') ?: 'production');
\define('WP_ENV', env('WP_ENV') ?: 'production');
// Infer WP_ENVIRONMENT_TYPE based on WP_ENV
if (!env('WP_ENVIRONMENT_TYPE') && in_array(WP_ENV, ['production', 'staging', 'development', 'local'])) {
if (!env('WP_ENVIRONMENT_TYPE') && \in_array(WP_ENV, ['production', 'staging', 'development', 'local'], true)) {
Config::define('WP_ENVIRONMENT_TYPE', WP_ENV);
}
@ -69,12 +67,12 @@ Config::define('WP_SITEURL', env('WP_SITEURL'));
// Custom Content Directory
Config::define('CONTENT_DIR', '/app');
Config::define('WP_CONTENT_DIR', $webroot_dir.Config::get('CONTENT_DIR'));
Config::define('WP_CONTENT_URL', Config::get('WP_HOME').Config::get('CONTENT_DIR'));
Config::define('WP_CONTENT_DIR', $webroot_dir . Config::get('CONTENT_DIR'));
Config::define('WP_CONTENT_URL', Config::get('WP_HOME') . Config::get('CONTENT_DIR'));
// DB settings
if (env('DB_SSL')) {
Config::define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);
Config::define('MYSQL_CLIENT_FLAGS', \MYSQLI_CLIENT_SSL);
}
Config::define('DB_NAME', env('DB_NAME'));
@ -88,9 +86,9 @@ $table_prefix = env('DB_PREFIX') ?: 'wp_';
if (env('DATABASE_URL')) {
$dsn = (object) parse_url(env('DATABASE_URL'));
Config::define('DB_NAME', substr($dsn->path, 1));
Config::define('DB_NAME', mb_substr($dsn->path, 1));
Config::define('DB_USER', $dsn->user);
Config::define('DB_PASSWORD', isset($dsn->pass) ? $dsn->pass : null);
Config::define('DB_PASSWORD', $dsn->pass ?? null);
Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host);
}
@ -124,8 +122,8 @@ Config::define('SCRIPT_DEBUG', false);
ini_set('display_errors', '0');
// Plugins
Config::define('WPMU_PLUGIN_DIR', Config::get('WP_CONTENT_DIR').'/mu-plugins');
Config::define('WP_PLUGIN_DIR', Config::get('WP_CONTENT_DIR').'/plugins');
Config::define('WPMU_PLUGIN_DIR', Config::get('WP_CONTENT_DIR') . '/mu-plugins');
Config::define('WP_PLUGIN_DIR', Config::get('WP_CONTENT_DIR') . '/plugins');
/*
* Allow WordPress to detect HTTPS when used behind a reverse proxy or a load balancer
@ -135,7 +133,7 @@ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && 'https' === $_SERVER['HTTP_X_FO
$_SERVER['HTTPS'] = 'on';
}
$env_config = __DIR__.'/environments/'.WP_ENV.'.php';
$env_config = __DIR__ . '/environments/' . WP_ENV . '.php';
if (file_exists($env_config)) {
include_once $env_config;
@ -144,6 +142,6 @@ if (file_exists($env_config)) {
Config::apply();
// Bootstrap WordPress
if (!defined('ABSPATH')) {
define('ABSPATH', $webroot_dir.'/wp/');
if (!\defined('ABSPATH')) {
\define('ABSPATH', $webroot_dir . '/wp/');
}

View file

@ -6,13 +6,12 @@
declare(strict_types=1);
use Roots\WPConfig\Config;
use function Env\env;
use Roots\WPConfig\Config;
Config::define('SAVEQUERIES', true);
Config::define('WP_DEBUG', true);
Config::define('WP_DEBUG_DISPLAY', false);
Config::define('WP_DEBUG_DISPLAY', true);
Config::define('WP_DEBUG_LOG', env('WP_DEBUG_LOG') ?? true);
Config::define('WP_DISABLE_FATAL_ERROR_HANDLER', true);
Config::define('SCRIPT_DEBUG', true);

View file

@ -6,9 +6,8 @@
declare(strict_types=1);
use Roots\WPConfig\Config;
use function Env\env;
use Roots\WPConfig\Config;
Config::define('WP_DEBUG', true);
Config::define('WP_DEBUG_DISPLAY', false);

View file

@ -6,9 +6,8 @@
declare(strict_types=1);
use Roots\WPConfig\Config;
use function Env\env;
use Roots\WPConfig\Config;
Config::define('DISALLOW_INDEXING', true);
Config::define('WOOCOMMERCE_API_CONSUMER_KEY', env('WOOCOMMERCE_API_CONSUMER_KEY'));

View file

@ -10,7 +10,7 @@ RUN set -eux && apk add --no-cache \
# Récupère les fichiers du site pour la branche « Production ».
RUN git clone --branch production --depth 1 http://git.gcch.fr/gcch/haiku-atelier-2024.git "/tmp/repo"
FROM docker.io/library/wordpress:php8.4-fpm-alpine AS php
FROM docker.io/library/wordpress:php8.5-fpm-alpine AS php
ENTRYPOINT []
LABEL org.opencontainers.image.title=wordpress-haiku-atelier \

View file

@ -53,4 +53,5 @@ http {
############# WP conf
include /etc/angie/haikuatelier.conf;
include /etc/angie/phpmyadmin.conf;
}

View file

@ -0,0 +1,27 @@
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream phpmyadmin-upstream {
server phpmyadmin:80;
}
server {
listen 80;
server_name "phpmyadmin.gcch.local";
access_log /var/log/angie/phpmyadmin-access.log;
error_log /var/log/angie/phpmyadmin-error.log;
location / {
proxy_pass http://phpmyadmin-upstream;
proxy_http_version 1.1;
proxy_read_timeout 86400;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

View file

@ -40,6 +40,13 @@ http:
service: api@internal
tls: true
phpmyadmin:
entryPoints:
- "websecure"
rule: "Host(`phpmyadmin.gcch.local`)"
service: "service-phpmyadmin"
tls: true
whoami:
entryPoints:
- websecure

View file

@ -18,6 +18,11 @@ http:
servers:
- url: "http://jaeger:4318"
service-phpmyadmin:
loadBalancer:
servers:
- url: "http://proxy:80"
service-whoami:
loadBalancer:
servers:

View file

@ -1,22 +1,7 @@
{
"dictionaries": ["fr-fr", "en-gb"],
"words": [
"GLITCHTIP",
"Vali",
"fdir",
"mobily",
"oxlint",
"valibot",
"zstandard",
"Eles",
"logtape",
"wpackagist",
"phpdotenv",
"friendsofphp",
"htmlburger",
"Crell",
"wpdb",
"classlike"
"dictionaries": [
"fr-fr",
"en-gb"
],
"userWords": [
"lightningcss",
@ -37,6 +22,33 @@
"muplugin",
"wpautop",
"ERRMODE",
"laravel"
"laravel",
"Surchargement"
],
"words": [
"GLITCHTIP",
"Vali",
"fdir",
"mobily",
"oxlint",
"valibot",
"zstandard",
"Eles",
"logtape",
"wpackagist",
"phpdotenv",
"friendsofphp",
"htmlburger",
"Crell",
"wpdb",
"classlike",
"dashicons",
"buddicons",
"mago",
"gcch",
"metaboxes",
"multiformats",
"titlewrap",
"FidelityProgramError"
]
}

File diff suppressed because one or more lines are too long

18
docs/code_fidélité.md Normal file
View file

@ -0,0 +1,18 @@
# Code de fidélité
- Un programme de fidélité vise à récompenser les achats répétés auprès de Haiku Atelier par l'obtention de réductions progressivement plus importantes à chaque commande.
- Le pourcentage de réduction s'applique à chaque commande où le programme de fidélité est invoqué.
- Chaque commande successive augmente le pourcentage de réduction, de 5% (un commande) jusqu'à 20% (cinq commandes).
- Une fois la cinquième commande effectuée, la réduction retourne à 5%.
- Un programme de fidélité est créé, à la demande explicite de l'acheteur lors d'une commande, en l'associant à l'adresse email qu'il a renseigné.
- Lorsqu'un acheteur potentiel renseigne ses informations personnelles et les fait valider, le backoffice vérifie que son adresse email correspond à un programme de fidélité. Si c'est le cas, proposer le choix à l'acheteur d'appliquer ou non la réduction.
## Technique
- Il ne semble pas trop viable d'utiliser de créer une taxonomie pour les **Commandes**.
- Les **Coupons** sont un type de post, `shop_coupon`.
- Peut-être créer un nouveau type de post, `fidelity_program` ?
## Liens
- [Ajouter manuellement une réduction à un Panier](https://stackoverflow.com/questions/22928367/how-to-create-custom-discount-for-the-cart-in-woocommerce).

View file

@ -11,8 +11,19 @@
"exec": {
"cacheKey": "1",
"commands": [
{ "command": "prettier --ignore-unknown --write --stdin-filepath {{file_path}}", "exts": ["xml"] },
{ "command": "just --dump", "fileNames": ["justfile"], "stdin": true }
{
"command": "prettier --ignore-unknown --write --stdin-filepath {{file_path}}",
"exts": [
"xml"
]
},
{
"command": "just --dump",
"fileNames": [
"justfile"
],
"stdin": true
}
],
"cwd": "${originConfigDir}",
"indentWidth": 2,
@ -24,7 +35,12 @@
"json": {
"commentLine.forceSpaceAfterSlashes": true,
"indentWidth": 2,
"jsonTrailingCommaFiles": [".swcrc", "biome.jsonc", "settings.json", "tsconfig.json"],
"jsonTrailingCommaFiles": [
".swcrc",
"biome.jsonc",
"settings.json",
"tsconfig.json"
],
"lineWidth": 120,
"newLineKind": "lf",
"preferSingleLine": true,
@ -47,7 +63,7 @@
"omitNumberLeadingZero": false,
"operatorLinebreak": "before",
"preferSingleLine": true,
"printWidth": 100,
"printWidth": 120,
"quotes": "alwaysDouble",
"singleLineBlockThreshold": null,
"singleLineTopLevelDeclarations": false,
@ -81,7 +97,7 @@
"https://plugins.dprint.dev/markdown-0.20.0.wasm",
"https://plugins.dprint.dev/toml-0.7.0.wasm",
"https://plugins.dprint.dev/g-plane/malva-v0.15.0.wasm",
"https://plugins.dprint.dev/g-plane/markup_fmt-v0.24.0.wasm",
"https://plugins.dprint.dev/g-plane/markup_fmt-v0.24.1.wasm",
"https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.1.wasm",
"https://plugins.dprint.dev/exec-0.6.0.json@a054130d458f124f9b5c91484833828950723a5af3f8ff2bd1523bd47b83b364"
],
@ -99,6 +115,7 @@
"conditionalExpression.preferSingleLine": true,
"exportDeclaration.sortNamedExports": "maintain",
"importDeclaration.sortNamedImports": "maintain",
"lineWidth": 120,
"module.sortExportDeclarations": "maintain",
"module.sortImportDeclarations": "maintain",
"quoteProps": "asNeeded",

View file

@ -1,61 +0,0 @@
import js from "@eslint/js";
import oxlint from "eslint-plugin-oxlint";
import perfectionist from "eslint-plugin-perfectionist";
import globals from "globals";
import tseslint from "typescript-eslint";
export default tseslint.config(
js.configs.recommended,
perfectionist.configs["recommended-natural"],
...tseslint.configs.strictTypeChecked,
...tseslint.configs.stylisticTypeChecked,
oxlint.configs["flat/recommended"],
{
files: ["*.js", "web/app/themes/haiku-atelier-2024/src/**/*.ts"],
languageOptions: {
ecmaVersion: "latest",
globals: {
...globals.browser,
...globals.es2020,
},
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
/* Utilise Array<T> plutôt que T[]. */
"@typescript-eslint/array-type": [
"error",
{
default: "generic",
readonly: "generic",
},
],
/* L'usage d'interfaces ou de types doit être à la discrétion du développeur. */
"@typescript-eslint/consistent-type-definitions": "off",
/* Désactive cette règle pour les fonctions fléchées pour rendre le code moins verbeux. */
"@typescript-eslint/no-confusing-void-expression": [
"error",
{
ignoreArrowShorthand: true,
ignoreVoidOperator: false,
},
],
/* Chiant avec certaines Promises. */
"@typescript-eslint/no-misused-promises": "off",
/* Cette règle empêche l'usage de génériques précisant les types de retour de fonctions. */
"@typescript-eslint/no-unnecessary-type-parameters": "off",
// Pour utiliser LogTape.
"@typescript-eslint/no-unused-expressions": "off",
/* Cette règle est doublon avec les règles noUnused* de TypeScript. */
"@typescript-eslint/no-unused-vars": "off",
/* Cette règle empêche de lever des erreurs génériques (p.ex. `E extends Error`). */
"@typescript-eslint/only-throw-error": "off",
/* Cette règle empêche le style fonctionnel « point free ». */
"@typescript-eslint/unbound-method": "off",
/* Cette règle interdit l'usage de fonctions vides sauf pour les fonctions fléchées. */
"no-empty-function": ["error", { allow: ["arrowFunctions"] }],
},
},
);

11
eslint.config.ts Executable file
View file

@ -0,0 +1,11 @@
import { configTypescriptNavigateur } from "@gcch/configuration-eslint";
import { defineConfig } from "eslint/config";
export default defineConfig([...configTypescriptNavigateur], {
rules: {
"@typescript-eslint/no-empty-object-type": "off",
"perfectionist/sort-modules": "off",
"unicorn/no-array-method-this-argument": "off",
"unicorn/no-useless-undefined": "off",
},
});

View file

@ -4,6 +4,11 @@ set unstable := true
cacheFolder := ".cache"
prettierCacheFile := "prettiercache"
# Aliases
alias up := up-services
alias down := down-services
# Recette par défaut.
default: dev
@ -21,17 +26,19 @@ update:
# Formatte avec Prettier et dprint.
[group('qualité')]
format:
@echo "Formatage de l'ensemble du code avec Prettier et dprint."
bun prettier \
--cache \
--cache-location "{{ cacheFolder }}/{{ prettierCacheFile }}" \
--ignore-unknown \
--write \
.
--cache \
--cache-location "{{ cacheFolder }}/{{ prettierCacheFile }}" \
--ignore-unknown \
--write \
.
-dprint fmt
# TwigCsFixher
jsonsort *.json
taplo fmt **/*.toml
-vendor/bin/twig-cs-fixer fix web/app/themes/haiku-atelier-2024/
# Mago
./vendor/bin/php-cs-fixer fix --diff
mago fmt
# Compile, minifie et optimise Sass vers CSS.

View file

@ -3,8 +3,8 @@ php-version = "8.4.0"
[source]
excludes = ["web/wp/wp-admin/includes/noop.php"]
extensions = ["php"]
includes = ["config", "vendor", "web/app/plugins", "web/vendor", "web/wp"]
paths = ["web/app/themes/haiku-atelier-2024/"]
includes = ["config", "vendor", "web/app/plugins", "web/wp"]
paths = ["web/app/themes/haiku-atelier-2024"]
[formatter]
# Brace style for classes, traits, etc.
@ -24,7 +24,7 @@ php-version = "8.4.0"
# Prefer single quotes over double quotes for strings.
single-quote = true
# Number of spaces per indentation level.
tab-width = 4
tab-width = 2
# Add a trailing comma to multi-line arrays, parameter lists, etc.
trailing-comma = true
# Use tabs instead of spaces for indentation.
@ -52,7 +52,7 @@ php-version = "8.4.0"
# Preserve existing line breaks in attribute lists.
preserve-breaking-attribute-list = false
# Preserve existing line breaks in ternary expressions.
preserve-breaking-conditional-expression = false
preserve-breaking-conditional-expression = true
# Always break parameter lists with promoted properties.
break-promoted-properties-list = true
# Place the binary operator on the next line when breaking.
@ -64,11 +64,11 @@ php-version = "8.4.0"
# Use table-style alignment for arrays.
array-table-style-alignment = true
# Sort use statements alphabetically.
sort-uses = true
sort-uses = false
# Insert a blank line between different types of use statements.
separate-use-types = true
separate-use-types = false
# Expand grouped use statements into individual statements.
expand-use-groups = true
expand-use-groups = false
# How to format null type hints (null|T vs ?T).
null-type-hint = "null_pipe"
# Add parentheses around new in member access ((new Foo)->bar()).
@ -82,6 +82,8 @@ php-version = "8.4.0"
# Add a space before arrow function parameters.
space-before-arrow-function-parameter-list-parenthesis = false
excludes = ["vendor"]
[linter]
integrations = ["wordpress"]
@ -89,9 +91,11 @@ php-version = "8.4.0"
ambiguous-function-call = { enabled = true }
halstead = { effort-threshold = 7000 }
literal-named-argument = { enabled = false }
no-else-clause = { enabled = false }
no-redundant-readonly = { enabled = true }
no-redundant-use = { enabled = true }
no-variable-variable = { enabled = true }
tagged-todo = { enabled = false }
[analyzer]
allow-possibly-undefined-array-keys = true

View file

@ -1,72 +1,14 @@
{
"name": "haikuatelier.fr",
"version": "1.0.0",
"type": "module",
"description": "",
"author": "",
"license": "ISC",
"main": "index.js",
"keywords": [],
"scripts": { "knip": "knip" },
"dependencies": {
"@logtape/logtape": "^1.1.2",
"@mobily/ts-belt": "v4.0.0-rc.5",
"@sentry/browser": "^10.24.0",
"a11y-dialog": "^8.1.4",
"chalk": "^5.6.2",
"effect": "^3.19.3",
"lit-html": "^3.3.1",
"loglevel": "^1.9.2",
"loglevel-plugin-prefix": "^0.8.4",
"optics-ts": "^2.4.1",
"purify-ts": "2.1.2",
"ts-pattern": "^5.9.0",
"valibot": "1.1.0"
},
"devDependencies": {
"@biomejs/biome": "^2.3.4",
"@cspell/dict-fr-fr": "^2.3.2",
"@eslint/js": "^9.39.1",
"@gcch/configuration-prettier": "^0.0.10",
"@playwright/test": "^1.56.1",
"@prettier/plugin-xml": "^3.4.2",
"@sentry/core": "^10.24.0",
"@swc/cli": "0.7.8",
"@types/eslint__js": "^9.14.0",
"@types/node": "^24.10.0",
"@vitejs/plugin-legacy": "^7.2.1",
"better-typescript-lib": "^2.12.0",
"browserslist": "^4.27.0",
"caniuse-lite": "^1.0.30001754",
"eslint": "^9.39.1",
"eslint-plugin-oxlint": "^1.26.0",
"eslint-plugin-perfectionist": "^4.15.1",
"fdir": "^6.5.0",
"globals": "^16.5.0",
"knip": "^5.68.0",
"lightningcss-cli": "^1.30.2",
"oxlint": "^1.27.0",
"picomatch": "^4.0.3",
"playwright": "^1.56.1",
"prettier": "^3.6.2",
"prettier-plugin-pkg": "^0.21.2",
"prettier-plugin-sh": "^0.18.0",
"sass-embedded": "^1.93.3",
"stylelint": "^16.25.0",
"stylelint-config-clean-order": "^7.0.0",
"stylelint-config-sass-guidelines": "^12.1.0",
"stylelint-config-standard-scss": "^16.0.0",
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
"stylelint-plugin-logical-css": "^1.2.3",
"typescript": "5.9.3",
"typescript-eslint": "^8.46.3",
"vite": "^7.2.2",
"vite-plugin-compression2": "^2.3.1",
"vite-plugin-manifest-sri": "^0.2.0",
"vite-plugin-node-polyfills": "^0.24.0",
"vite-plugin-valibot-env": "^1.0.1",
"vite-tsconfig-paths": "^5.1.4",
"wp-types": "^4.68.3"
"license": "ISC",
"author": "",
"type": "module",
"main": "index.js",
"scripts": {
"knip": "knip"
},
"browserslist": [
"chrome >0 and last 3 years",
@ -77,9 +19,80 @@
"and_ff >0 and last 3 years",
"ios >0 and last 3 years"
],
"knip": {
"entry": ["web/app/themes/haiku-atelier-2024/src/scripts/*.ts"],
"project": ["web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"]
"dependencies": {
"@effect/platform": "^0.93.6",
"@effect/platform-browser": "^0.73.0",
"@gcch/ideale-standard": "^0.0.6",
"@mobily/ts-belt": "v4.0.0-rc.5",
"@sentry/browser": "^10.29.0",
"a11y-dialog": "^8.1.4",
"effect": "^3.19.9",
"lit-html": "^3.3.1",
"nimble-html": "^0.1.5",
"purify-ts": "2.1.2",
"ts-pattern": "^5.9.0",
"valibot": "1.1.0"
},
"trustedDependencies": ["@biomejs/biome", "@parcel/watcher", "@swc/core", "core-js", "esbuild", "lightningcss-cli"]
"devDependencies": {
"@biomejs/biome": "^2.3.8",
"@cspell/dict-fr-fr": "^2.3.2",
"@effect/language-service": "^0.60.0",
"@eslint/js": "^9.39.1",
"@gcch/configuration-eslint": "^0.0.10",
"@gcch/configuration-prettier": "^0.0.10",
"@playwright/test": "^1.57.0",
"@prettier/plugin-xml": "^3.4.2",
"@sentry/core": "^10.29.0",
"@types/eslint__js": "^9.14.0",
"@types/node": "^24.10.1",
"better-typescript-lib": "^2.12.0",
"browserslist": "^4.28.1",
"caniuse-lite": "^1.0.30001759",
"eslint": "^9.39.1",
"eslint-plugin-oxlint": "^1.31.0",
"eslint-plugin-perfectionist": "^4.15.1",
"fdir": "^6.5.0",
"globals": "^16.5.0",
"knip": "^5.71.0",
"lightningcss-cli": "^1.30.2",
"oxlint": "^1.31.0",
"picomatch": "^4.0.3",
"playwright": "^1.57.0",
"prettier": "^3.7.4",
"prettier-plugin-curly": "^0.4.1",
"prettier-plugin-pkg": "^0.21.2",
"prettier-plugin-sh": "^0.18.0",
"sass-embedded": "^1.93.3",
"stylelint": "^16.26.1",
"stylelint-config-clean-order": "^8.0.0",
"stylelint-config-sass-guidelines": "^12.1.0",
"stylelint-config-standard-scss": "^16.0.0",
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
"stylelint-no-unsupported-browser-features": "^8.0.5",
"stylelint-order": "^7.0.0",
"stylelint-plugin-logical-css": "^1.2.3",
"stylelint-value-no-unknown-custom-properties": "^6.0.1",
"typescript": "5.9.3",
"typescript-eslint": "^8.48.1",
"vite": "8.0.0-beta.0",
"vite-php-manifest": "^0.1.1",
"vite-plugin-valibot-env": "^1.0.1",
"vite-tsconfig-paths": "^5.1.4",
"wp-types": "^4.69.0"
},
"knip": {
"entry": [
"web/app/themes/haiku-atelier-2024/src/scripts/*.ts"
],
"project": [
"web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"
]
},
"trustedDependencies": [
"@biomejs/biome",
"core-js",
"esbuild",
"lightningcss-cli",
"msgpackr-extract"
]
}

View file

@ -1,29 +0,0 @@
<?xml version="1.0"?>
<ruleset name="Roots">
<description>Roots Coding Standards</description>
<!-- Scan all files in directory -->
<file>.</file>
<!-- Scan only PHP files -->
<arg
name="extensions"
value="php"
/>
<!-- Ignore WordPress and Composer dependencies -->
<exclude-pattern>vendor/</exclude-pattern>
<exclude-pattern>web/app/languages/</exclude-pattern>
<exclude-pattern>web/app/mu-plugins/</exclude-pattern>
<exclude-pattern>web/app/plugins/</exclude-pattern>
<exclude-pattern>web/app/themes/twentytwentyfour/</exclude-pattern>
<exclude-pattern>web/wp</exclude-pattern>
<!-- Show colors in console -->
<arg value="-colors" />
<!-- Show sniff codes in all reports -->
<arg value="ns" />
<rule ref="Squiz" />
</ruleset>

View file

@ -1,22 +1,49 @@
parameters:
parallel:
maximumNumberOfProcesses: 8
level: 6
paths:
- web/app/themes/haiku-atelier-2024
scanDirectories:
- vendor
- web/app
- web/vendor
- web/wp
scanFiles:
- .php-cs-fixer.dist.php
- web/index.php
- web/wp-config.php
# Utilise la version de développement de PHPStan
includes:
- phar://phpstan.phar/conf/bleedingEdge.neon
excludePaths:
analyse:
- web/app/themes/la-fille-davril/vendor
analyseAndScan:
- web/app/themes/twentytwentyfour
- web/app/languages
parameters:
# When set to true, it reports use of dynamic properties as undefined.
checkDynamicProperties: true
checkExplicitMixedMissingReturn: true
# When set to true, it reports function and method calls with incorrect name case.
checkFunctionNameCase: true
# When set to true, it reports references to built-in classes with incorrect name case.
checkInternalClassCaseSensitivity: true
# When set to true, it reports return typehints that could be narrowed down because some of the listed types are never returned from a public or protected method.
checkTooWideReturnTypesInProtectedAndPublicMethods: true
# When set to true, it reports properties with native types that werent initialized in the class constructor.
checkUninitializedProperties: false
reportUnmatchedIgnoredErrors: false
# When set to true, it reports violations of parameter type contravariance and return type covariance.
reportMaybesInMethodSignatures: true
# By default PHPStan reports wrong type in @var tag only for native types on the right side of =. With reportWrongPhpDocTypeInVarTag set to true it will consider PHPDoc types too.
reportWrongPhpDocTypeInVarTag: true
# Setting treatPhpDocTypesAsCertain to false relaxes some of the rules around type-checking.
treatPhpDocTypesAsCertain: false
parallel:
jobSize: 20
maximumNumberOfProcesses: 32
minimumNumberOfJobsPerProcess: 2
level: max
scanDirectories:
- config
- vendor
- web/app
- web/wp
scanFiles:
- .php-cs-fixer.dist.php
- web/index.php
- web/wp-config.php
paths:
- web/app/themes/haiku-atelier-2024
excludePaths:
analyseAndScan:
- web/app/languages
- web/app/themes/twentytwentyfour

16
rector.php Normal file
View file

@ -0,0 +1,16 @@
<?php declare(strict_types=1);
use Rector\Config\RectorConfig;
return RectorConfig::configure()
->withPaths([__DIR__ . '/web/app/themes/haiku-atelier-2024'])
->withPhpSets(php84: true)
->withTypeCoverageLevel(10)
->withTypeCoverageDocblockLevel(10)
->withDeadCodeLevel(10)
->withCodeQualityLevel(10)
->withPreparedSets(
carbon: true,
instanceOf: true,
privatization: true,
);

View file

@ -1,9 +1,9 @@
<?php
<?php declare(strict_types=1);
require_once 'web/wp/wp-load.php';
ini_set('max_execution_time', 3600);
set_time_limit(3600);
ini_set('max_execution_time', 3_600);
set_time_limit(3_600);
$pdo = new PDO('mysql:dbname=haiku_atelier;host=localhost', 'haiku_utilisateur', 'spNFx5EAYwvF7o7XFMjiHpNPYJimDtmKWv');

View file

@ -13,7 +13,11 @@
"exactOptionalPropertyTypes": true,
"forceConsistentCasingInFileNames": true,
"isolatedModules": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"lib": [
"DOM",
"DOM.Iterable",
"ESNext"
],
"module": "ESNext",
"moduleDetection": "force",
"moduleResolution": "Bundler",
@ -30,6 +34,11 @@
"noUncheckedSideEffectImports": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"plugins": [
{
"name": "@effect/language-service"
}
],
"skipLibCheck": false,
"strict": true,
"strictBindCallApply": true,
@ -39,10 +48,23 @@
"suppressExcessPropertyErrors": false,
"suppressImplicitAnyIndexErrors": false,
"target": "ESNext",
"types": ["node", "vite/client"],
"types": [
"node",
"vite/client"
],
"useDefineForClassFields": true,
"useUnknownInCatchVariables": true
},
"exclude": ["vendor", "web/app/plugins", "web/wp"],
"include": ["*.js", "lib", "web/app/themes/haiku-atelier-2024/src", "vite.config.ts"]
"exclude": [
"vendor",
"web/app/plugins",
"web/wp"
],
"include": [
"*.js",
"lib",
"web/app/themes/haiku-atelier-2024/src",
"vite.config.ts",
"eslint.config.ts"
]
}

View file

@ -1,12 +1,9 @@
import legacy from "@vitejs/plugin-legacy";
import { fdir, PathsOutput } from "fdir";
import { resolve } from "node:path";
import path from "node:path";
import process from "node:process";
import * as v from "valibot";
import { defineConfig, loadEnv } from "vite";
import { compression } from "vite-plugin-compression2";
import manifestSRI from "vite-plugin-manifest-sri";
import { nodePolyfills } from "vite-plugin-node-polyfills";
import { VitePhpManifest } from "vite-php-manifest";
import valibot from "vite-plugin-valibot-env";
const SLUG_THEME = "haiku-atelier-2024";
@ -16,6 +13,7 @@ const SRC_TYPESCRIPT_PATHS: Promise<PathsOutput> = new fdir()
.withMaxDepth(0)
.crawl(`web/app/themes/${SLUG_THEME}/src/scripts`)
.withPromise();
const PATHS = await SRC_TYPESCRIPT_PATHS;
// Voir le fichier vite.env.d.ts.
const SCHEMA_ENVIRONNEMENT = v.object({
@ -27,31 +25,13 @@ const SCHEMA_ENVIRONNEMENT = v.object({
const basePlugins = [
// Permet de valider les variables d'environnements définies à partir d'un schéma Valibot
valibot(SCHEMA_ENVIRONNEMENT),
manifestSRI({ algorithms: ["sha512"] }),
nodePolyfills({
include: [],
protocolImports: true,
}),
];
// Les extensions activées en production.
const prodPlugins = [
legacy({
modernPolyfills: true,
modernTargets:
"chrome >0 and last 3 years, edge >0 and last 3 years, safari >0 and last 3 years, firefox >0 and last 3 years, and_chr >0 and last 3 years, and_ff >0 and last 3 years, ios >0 and last 3 years",
renderLegacyChunks: true,
}),
compression({
algorithms: [
"brotliCompress",
"gzip",
"zstandard",
],
threshold: 1000,
VitePhpManifest({
shortArraySyntax: true,
unlinkOriginManifest: false,
}),
];
export default defineConfig(async ({ mode }) => {
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), "VITE");
console.debug(env);
@ -59,22 +39,18 @@ export default defineConfig(async ({ mode }) => {
base: "/",
build: {
assetsDir: ".",
cssMinify: "lightningcss",
emptyOutDir: true,
// Génère un fichier manifeste dans outDir.
manifest: true,
minify: env["VITE_MODE"] === "production",
outDir: resolve("./web/app/themes/haiku-atelier-2024/assets/js"),
outDir: "./web/app/themes/haiku-atelier-2024/assets/js",
reportCompressedSize: true,
rollupOptions: {
input: await SRC_TYPESCRIPT_PATHS,
experimental: {
incrementalBuild: true,
nativeMagicString: true,
},
input: PATHS,
output: {
assetFileNames: "[name].[hash].[extname]",
chunkFileNames: "[name].[hash].js",
entryFileNames: "[name].js",
assetFileNames: "[hash].[extname]",
chunkFileNames: "[hash].js",
entryFileNames: "[name].[hash].js",
minify: env["VITE_MODE"] === "production",
},
treeshake: true,
@ -83,7 +59,11 @@ export default defineConfig(async ({ mode }) => {
target: "es2020",
write: true,
},
css: {
devSourcemap: true,
transformer: "lightningcss",
},
mode: env["VITE_MODE"] ?? "production",
plugins: env["VITE_MODE"] === "production" ? [...basePlugins, ...prodPlugins] : [...basePlugins],
plugins: [...basePlugins],
};
});

View file

@ -1 +0,0 @@
/var/www/wordpress/web/app/plugins/query-monitor/wp-content/db.php

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"The suggested policy text has been copied to your clipboard.":["The suggested policy text has been copied to your clipboard."],"This user&#8217;s personal data export file was downloaded.":["This user&#8217;s personal data export file was downloaded."],"This user&#8217;s personal data export link was sent.":["This user&#8217;s personal data export link was sent."],"An error occurred while attempting to find and erase personal data.":["An error occurred while attempting to find and erase personal data."],"Personal data was found for this user but some of the personal data found was not erased.":["Personal data was found for this user, but some of the personal data found was not erased."],"All of the personal data found for this user was erased.":["All of the personal data found for this user was erased."],"Personal data was found for this user but was not erased.":["Personal data was found for this user, but was not erased."],"No personal data was found for this user.":["No personal data was found for this user."],"An error occurred while attempting to export personal data.":["An error occurred while attempting to export personal data."],"No personal data export file was generated.":["No personal data export file was generated."]}},"comment":{"reference":"wp-admin\/js\/privacy-tools.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Editor tips":["Editor tips"],"Disable tips":["Disable tips"],"Got it":["Got it"],"See next tip":["See next tip"]}},"comment":{"reference":"wp-includes\/js\/dist\/nux.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"%1$s is deprecated since version %2$s! Use %3$s instead. Please consider writing more inclusive code.":["%1$s is deprecated since version %2$s! Use %3$s instead. Please consider writing more inclusive code."]}},"comment":{"reference":"wp-admin\/js\/password-strength-meter.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"%s applied.":["%s applied."],"%s removed.":["%s removed."]}},"comment":{"reference":"wp-includes\/js\/dist\/rich-text.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"pattern (singular)\u0004Synced":["Synced"],"Sync this pattern across multiple locations.":["Sync this pattern across multiple locations."],"Unsynced pattern created: %s":["Unsynced pattern created: %s"],"Synced pattern created: %s":["Synced pattern created: %s"],"Untitled pattern block":["Untitled pattern block"],"My pattern":["My pattern"],"Create pattern":["Create pattern"],"Manage patterns":["Manage patterns"],"Create":["Create"],"Detach":["Detach"],"Cancel":["Cancel"],"Name":["Name"]}},"comment":{"reference":"wp-includes\/js\/dist\/reusable-blocks.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"%1$s Block. Row %2$d":["%1$s Block. Row %2$d"],"Design":["Design"],"%s Block":["%s Block"],"%1$s Block. %2$s":["%1$s Block. %2$s"],"%1$s Block. Column %2$d":["%1$s Block. Column %2$d"],"%1$s Block. Column %2$d. %3$s":["%1$s Block. Column %2$d. %3$s"],"%1$s Block. Row %2$d. %3$s":["%1$s Block. Row %2$d. %3$s"],"Reusable blocks":["Reusable blocks"],"Embeds":["Embeds"],"Text":["Text"],"Widgets":["Widgets"],"Theme":["Theme"],"Media":["Media"]}},"comment":{"reference":"wp-includes\/js\/dist\/blocks.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"You are probably offline.":["You are probably offline."],"Media upload failed. If this is a photo or a large image, please scale it down and try again.":["Media upload failed. If this is a photo or a large image, please scale it down and try again."],"The response is not a valid JSON response.":["The response is not a valid JSON response."],"An unknown error occurred.":["An unknown error occurred."]}},"comment":{"reference":"wp-includes\/js\/dist\/api-fetch.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Submitted on:":["Submitted on:"],"%1$s %2$s, %3$s at %4$s:%5$s":["%1$s %2$s, %3$s at %4$s:%5$s"]}},"comment":{"reference":"wp-admin\/js\/comment.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Selected crop ratio exceeds the boundaries of the image. Try a different ratio.":["Selected crop ratio exceeds the boundaries of the image. Try a different ratio."],"Could not load the preview image.":["Could not load the preview image."],"Could not load the preview image. Please reload the page and try again.":["Could not load the preview image. Please reload the page and try again."],"Image updated.":["Image updated."]}},"comment":{"reference":"wp-admin\/js\/image-edit.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"pattern\u0004\"%s\" duplicated.":["\"%s\" duplicated."],"pattern\u0004%s (Copy)":["%s (Copy)"],"These blocks are editable using overrides.":["These blocks are editable using overrides."],"This %1$s is editable using the \"%2$s\" override.":["This %1$s is editable using the \"%2$s\" override."],"Allow changes to this block throughout instances of this pattern.":["Allow changes to this block throughout instances of this pattern."],"Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides.":["Overrides currently don't support image captions or links. Remove the caption or link first before enabling overrides."],"Disable":["Disable"],"Are you sure you want to disable overrides? Disabling overrides will revert all applied overrides for this block throughout instances of this pattern.":["Are you sure you want to disable overrides? Disabling overrides will revert all applied overrides for this block throughout instances of this pattern."],"Disable overrides":["Disable overrides"],"For example, if you are creating a recipe pattern, you use \"Recipe Title\", \"Recipe Description\", etc.":["For example, if you are creating a recipe pattern, you use \"Recipe Title\", \"Recipe Description\", etc."],"Overrides are changes you make to a block within a synced pattern instance. Use overrides to customize a synced pattern instance to suit its new context. Name this block to specify an override.":["Overrides are changes you make to a block within a synced pattern instance. Use overrides to customise a synced pattern instance to suit its new context. Name this block to specify an override."],"Enable overrides":["Enable overrides"],"Overrides":["Overrides"],"pattern (singular)\u0004Synced":["Synced"],"Pattern category renamed.":["Pattern category renamed."],"This category already exists. Please use a different name.":["This category already exists. Please use a different name."],"Please enter a new name for this category.":["Please enter a new name for this category."],"Pattern renamed":["Pattern renamed"],"Sync this pattern across multiple locations.":["Sync this pattern across multiple locations."],"Duplicate pattern":["Duplicate pattern"],"Block name changed to: \"%s\".":["Block name changed to: \"%s\"."],"Unsynced pattern created: %s":["Unsynced pattern created: %s"],"Synced pattern created: %s":["Synced pattern created: %s"],"My pattern":["My pattern"],"Create pattern":["Create pattern"],"An error occurred while renaming the pattern.":["An error occurred while renaming the pattern."],"Manage patterns":["Manage patterns"],"Rename":["Rename"],"Duplicate":["Duplicate"],"Reset":["Reset"],"Detach":["Detach"],"Enable":["Enable"],"Add":["Add"],"Cancel":["Cancel"],"Name":["Name"],"Categories":["Categories"],"Save":["Save"]}},"comment":{"reference":"wp-includes\/js\/dist\/patterns.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Search commands and settings":["Search commands and settings"],"Command suggestions":["Command suggestions"],"Command palette":["Command palette"],"Open the command palette.":["Open the command palette."],"No results found.":["No results found."]}},"comment":{"reference":"wp-includes\/js\/dist\/commands.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Pattern imported successfully!":["Pattern imported successfully!"],"Invalid pattern JSON file":["Invalid pattern JSON file"],"button label\u0004Import":["Import"],"Unknown error":["Unknown error"],"Invalid JSON file":["Invalid JSON file"],"Import from JSON":["Import from JSON"],"File":["File"]}},"comment":{"reference":"wp-includes\/js\/dist\/list-reusable-blocks.js"}}

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Annotation":["Annotation"]}},"comment":{"reference":"wp-includes\/js\/dist\/annotations.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Notifications":["Notifications"]}},"comment":{"reference":"wp-includes\/js\/dist\/a11y.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Add non breaking space.":["Add non-breaking space."],"https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/":["https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/"],"Convert the current paragraph or heading to a heading of level 1 to 6.":["Convert the current paragraph or heading to a heading of level 1 to 6."],"Convert the current heading to a paragraph.":["Convert the current heading to a paragraph."],"Make the selected text inline code.":["Make the selected text inline code."],"Strikethrough the selected text.":["Strikethrough the selected text."],"Insert a link to a post or page.":["Insert a link to a post or page."],"https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/":["https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/"],"New to the block editor?":["New to the block editor?"],"Get the Classic Widgets plugin.":["Get the Classic Widgets plugin."],"https:\/\/wordpress.org\/plugins\/classic-widgets\/":["https:\/\/en-gb.wordpress.org\/plugins\/classic-widgets\/"],"Want to stick with the old widgets?":["Want to stick with the old widgets?"],"You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favorite widgets still work flawlessly.":["You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favourite widgets still work flawlessly."],"Your theme provides different \u201cblock\u201d areas for you to add and edit content.\u00a0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site.":["Your theme provides different \u201cblock\u201d areas for you to add and edit content.\u00a0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site."],"Welcome to block Widgets":["Welcome to block widgets"],"Contain text cursor inside block deactivated":["Contain text cursor inside block deactivated"],"Contain text cursor inside block activated":["Contain text cursor inside block activated"],"Close inserter":["Close inserter"],"Aids screen readers by stopping text caret from leaving blocks.":["Aids screen readers by stopping text caret from leaving blocks."],"Preferences":["Preferences"],"Show more settings":["Show more settings"],"Contain text cursor inside block":["Contain text cursor inside block"],"Here's a detailed guide.":["Here's a detailed guide."],"Welcome Guide":["Welcome Guide"],"Keyboard shortcuts":["Keyboard shortcuts"],"Generic label for block inserter button\u0004Add block":["Add block"],"Display these keyboard shortcuts.":["Display these keyboard shortcuts."],"Add a block":["Add a block"],"Top toolbar deactivated":["Top toolbar deactivated"],"Top toolbar activated":["Top toolbar activated"],"Top toolbar":["Top toolbar"],"Got it":["Got it"],"Block Settings":["Block Settings"],"Remove a link.":["Remove a link."],"Convert the selected text into a link.":["Convert the selected text into a link."],"Underline the selected text.":["Underline the selected text."],"Make the selected text italic.":["Make the selected text italic."],"Make the selected text bold.":["Make the selected text bold."],"Text formatting":["Text formatting"],"Forward-slash":["Forward-slash"],"Change the block type after adding a new paragraph.":["Change the block type after adding a new paragraph."],"Block shortcuts":["Block shortcuts"],"Selection shortcuts":["Selection shortcuts"],"Redo your last undo.":["Redo your last undo."],"Undo your last changes.":["Undo your last changes."],"Save your changes.":["Save your changes."],"Global shortcuts":["Global shortcuts"],"Access all block and document tools in a single place":["Access all block and document tools in a single place"],"noun\u0004View":["View"],"Options":["Options"],"Document tools":["Document tools"],"The editor has encountered an unexpected error.":["The editor has encountered an unexpected error."],"Copy Error":["Copy Error"],"(opens in a new tab)":["(opens in a new tab)"],"Customizing":["Customising"],"Tools":["Tools"],"Widgets":["Widgets"],"Help":["Help"],"Redo":["Redo"],"Undo":["Undo"]}},"comment":{"reference":"wp-includes\/js\/dist\/customize-widgets.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Global Styles":["Global Styles"],"Widget types":["Widget types"],"Menu Item":["Menu Item"],"Comment":["Comment"],"Widget areas":["Widget areas"],"Site":["Site"],"Post Type":["Post Type"],"Taxonomy":["Taxonomy"],"Menu Location":["Menu Location","Menu Locations"],"Status":["Status"],"Menu":["Menu"],"User":["User"],"Base":["Base"],"Widgets":["Widgets"],"Themes":["Themes"],"(no title)":["(no title)"],"Media":["Media"],"Plugins":["Plugins"]}},"comment":{"reference":"wp-includes\/js\/dist\/core-data.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Running additional tests... please wait.":["Running additional tests... please wait."],"All site health tests have finished running. There are items that should be addressed.":["All site health tests have finished running. There are items that should be addressed."],"All site health tests have finished running. Your site is looking good.":["All site health tests have finished running. Your site is looking good."],"Unavailable":["Unavailable"],"No details available":["No details available"],"A test is unavailable":["A test is unavailable"],"Should be improved":["Should be improved"],"Good":["Good"],"%s critical issue":["%s critical issue","%s critical issues"],"%s item with no issues detected":["%s item with no issues detected","%s items with no issues detected"],"%s recommended improvement":["%s recommended improvement","%s recommended improvements"],"Site information has been copied to your clipboard.":["Site information has been copied to your clipboard."]}},"comment":{"reference":"wp-admin\/js\/site-health.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Use as featured image":["Use as featured image"],"Saving\u2026":["Saving\u2026"],"Could not set that as the thumbnail image. Try a different attachment.":["Could not set that as the thumbnail image. Try a different attachment."],"Done":["Done"]}},"comment":{"reference":"wp-admin\/js\/set-post-thumbnail.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Screen Options updated.":["Screen Options updated."],"Drag boxes here":["Drag boxes here"],"Add boxes from the Screen Options menu":["Add boxes from the Screen Options menu"],"The boxes order has been saved.":["The boxes order has been saved."],"The box is on the last position":["The box is on the last position"],"The box is on the first position":["The box is on the first position"]}},"comment":{"reference":"wp-admin\/js\/postbox.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Widget has been added to the selected sidebar":["Widget has been added to the selected sidebar"],"Saved":["Saved"],"The changes you made will be lost if you navigate away from this page.":["The changes you made will be lost if you navigate away from this page."],"Save":["Save"]}},"comment":{"reference":"wp-admin\/js\/widgets.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"All application passwords revoked.":["All application passwords revoked."],"Are you sure you want to revoke all passwords? This action cannot be undone.":["Are you sure you want to revoke all passwords? This action cannot be undone."],"Application password revoked.":["Application password revoked."],"Are you sure you want to revoke this password? This action cannot be undone.":["Are you sure you want to revoke this password? This action cannot be undone."],"Dismiss this notice.":["Dismiss this notice."]}},"comment":{"reference":"wp-admin\/js\/application-passwords.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"URL Slug":["URL Slug"],"Permalink saved":["Permalink saved"],"Published on:":["Published on:"],"Publish on:":["Publish on:"],"Schedule for:":["Schedule for:"],"Saving Draft\u2026":["Saving Draft\u2026"],"No more comments found.":["No more comments found."],"Show more comments":["Show more comments"],"post action\/button label\u0004Schedule":["Schedule"],"%1$s %2$s, %3$s at %4$s:%5$s":["%1$s %2$s, %3$s at %4$s:%5$s"],"Public, Sticky":["Public, Sticky"],"Privately Published":["Privately Published"],"Save as Pending":["Save as Pending"],"Password Protected":["Password Protected"],"The file URL has been copied to your clipboard":["The file URL has been copied to your clipboard"],"Could not set that as the thumbnail image. Try a different attachment.":["Could not set that as the thumbnail image. Try a different attachment."],"The changes you made will be lost if you navigate away from this page.":["The changes you made will be lost if you navigate away from this page."],"Update":["Update"],"Public":["Public"],"Private":["Private"],"OK":["OK"],"Save Draft":["Save Draft"],"Cancel":["Cancel"],"Publish":["Publish"],"Published":["Published"]}},"comment":{"reference":"wp-admin\/js\/post.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Are you sure you want to do this?\nThe comment changes you made will be lost.":["Are you sure you want to do this?\nThe comment changes you made will be lost."],"Are you sure you want to edit this comment?\nThe changes you made will be lost.":["Are you sure you want to edit this comment?\nThe changes you made will be lost."],"Approve and Reply":["Approve and Reply"],"Comments (%s)":["Comments (%s)"],"Reply":["Reply"],"Comments":["Comments"]}},"comment":{"reference":"wp-admin\/js\/edit-comments.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Preference activated - %s":["Preference activated \u2013 %s"],"Preference deactivated - %s":["Preference deactivated \u2013 %s"],"Preferences":["Preferences"],"Back":["Back"]}},"comment":{"reference":"wp-includes\/js\/dist\/preferences.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Non breaking space":["Non-breaking space"],"https:\/\/www.w3.org\/WAI\/tutorials\/images\/decision-tree\/":["https:\/\/www.w3.org\/WAI\/tutorials\/images\/decision-tree\/"],"Mark as nofollow":["Mark as nofollow"],"Text direction":["Text direction"],"A valid language attribute, like \"en\" or \"fr\".":["A valid language attribute, like \"en\" or \"fr\"."],"Leave empty if decorative.":["Leave empty if decorative."],"Clear Unknown Formatting":["Clear Unknown Formatting"],"Create page: <mark>%s<\/mark>":["Create page: <mark>%s<\/mark>"],"Highlight":["Highlight"],"Keyboard input":["Keyboard input"],"Inline code":["Inline code"],"Describe the purpose of the image.":["Describe the purpose of the image."],"Link edited.":["Link edited."],"Link removed.":["Link removed."],"Inline image":["Inline image"],"media":["media"],"photo":["photo"],"Warning: the link has been inserted but may have errors. Please test it.":["Warning: the link has been inserted but may have errors. Please test it."],"Link inserted.":["Link inserted."],"Left to right":["Left to right"],"Right to left":["Right to left"],"Link":["Link"],"Background":["Background"],"Superscript":["Superscript"],"Subscript":["Subscript"],"Strikethrough":["Strikethrough"],"Underline":["Underline"],"Italic":["Italic"],"Bold":["Bold"],"Language":["Language"],"Text":["Text"],"Width":["Width"],"Alternative text":["Alternative text"],"Apply":["Apply"]}},"comment":{"reference":"wp-includes\/js\/dist\/format-library.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Legacy widget":["Legacy widget"],"Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas.":["Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas."],"Widget Group":["Widget group"],"The \"%s\" block was affected by errors and may not function properly. Check the developer tools for more details.":["The \"%s\" block was affected by errors and may not function properly. Check the developer tools for more details."],"Move to widget area":["Move to widget area"],"Widget is missing.":["Widget is missing."],"No preview available.":["No preview available."],"Legacy Widget Preview":["Legacy Widget Preview"],"Select widget":["Select widget"],"Convert to blocks":["Convert to blocks"],"Move to":["Move to"],"Legacy Widget":["Legacy Widget"],"There are no widgets available.":["There are no widgets available."],"Save":["Save"],"Title":["Title"]}},"comment":{"reference":"wp-includes\/js\/dist\/widgets.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"The file URL has been copied to your clipboard":["The file URL has been copied to your clipboard"],"An error has occurred. Please reload the page and try again.":["An error has occurred. Please reload the page and try again."]}},"comment":{"reference":"wp-admin\/js\/media.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Plugin details":["Plugin details"],"Plugin: %s":["Plugin: %s"]}},"comment":{"reference":"wp-admin\/js\/plugin-install.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Screen Options updated.":["Screen Options updated."],"%1$s is deprecated since version %2$s with no alternative available.":["%1$s is deprecated since version %2$s with no alternative available."],"%1$s is deprecated since version %2$s! Use %3$s instead.":["%1$s is deprecated since version %2$s! Use %3$s instead."],"Please select at least one item to perform this action on.":["Please select at least one item to perform this action on."],"Expand Main menu":["Expand Main menu"],"Dismiss this notice.":["Dismiss this notice."],"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n'Cancel' to stop, 'OK' to delete.":["You are about to permanently delete these items from your site.\nThis action cannot be undone.\n'Cancel' to stop, 'OK' to delete."],"Collapse Main menu":["Collapse Main menu"]}},"comment":{"reference":"wp-admin\/js\/common.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"An error occurred while processing your request. Please try again later.":["An error occurred while processing your request. Please try again later."],"Sorry, you are not allowed to do that.":["Sorry, you are not allowed to do that."]}},"comment":{"reference":"wp-admin\/js\/tags.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Hide":["Hide"],"Hide password":["Hide password"],"Show password":["Show password"],"Show":["Show"]}},"comment":{"reference":"wp-admin\/js\/password-toggle.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"%d result found. Use up and down arrow keys to navigate.":["%d result found. Use up and down arrow keys to navigate.","%d results found. Use up and down arrow keys to navigate."],"Term selected.":["Term selected."],"tag delimiter\u0004,":[","],"No results found.":["No results found."]}},"comment":{"reference":"wp-admin\/js\/tags-suggest.js"}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Showing %1$s of %2$s media items":["Showing %1$s of %2$s media items"],"Jump to first loaded item":["Jump to first loaded item"],"Load more":["Load more"],"Number of media items displayed: %d. Click load more for more results.":["Number of media items displayed: %d. Click \u201cload more\u201d for more results."],"The file URL has been copied to your clipboard":["The file URL has been copied to your clipboard"],"%s item selected":["%s item selected","%s items selected"],"Number of media items displayed: %d. Scroll the page for more results.":["Number of media items displayed: %d. Scroll the page for more results."]}},"comment":{"reference":"wp-includes\/js\/media-views.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Application password has been copied to your clipboard.":["Application password has been copied to your clipboard."],"Your new password has not been saved.":["Your new password has not been saved."],"Hide":["Hide"],"Confirm use of weak password":["Confirm use of weak password"],"Hide password":["Hide password"],"Show password":["Show password"],"Show":["Show"],"The changes you made will be lost if you navigate away from this page.":["The changes you made will be lost if you navigate away from this page."]}},"comment":{"reference":"wp-admin\/js\/user-profile.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-05-25 12:26:44+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"An error occurred while saving your changes. Please try again. If the problem persists, you may need to manually update the file via FTP.":["An error occurred while saving your changes. Please try again. If the problem persists, you may need to manually update the file via FTP."],"There is %s error which must be fixed before you can update this file.":["There is %s error which must be fixed before you can update this file.","There are %s errors which must be fixed before you can update this file."],"The changes you made will be lost if you navigate away from this page.":["The changes you made will be lost if you navigate away from this page."]}},"comment":{"reference":"wp-admin\/js\/theme-plugin-editor.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Explore all blocks":["Explore all blocks"],"Customize each block":["Customise each block"],"Welcome to the editor":["Welcome to the editor"],"Enable or disable fullscreen mode.":["Enable or disable fullscreen mode."],"Use up and down arrow keys to resize the meta box panel.":["Use up and down arrow keys to resize the meta box panel."],"Meta Boxes":["Meta boxes"],"New to the block editor? Want to learn more about using it? <a>Here's a detailed guide.<\/a>":["New to the block editor? Want to learn more about using it? <a>Here's a detailed guide.<\/a>"],"pattern (singular)\u0004Synced":["Synced"],"Sync this pattern across multiple locations.":["Sync this pattern across multiple locations."],"Fullscreen on.":["Fullscreen on."],"Fullscreen off.":["Fullscreen off."],"Show and hide the admin user interface":["Show and hide the admin user interface"],"Enter fullscreen":["Enter fullscreen"],"My pattern":["My pattern"],"Create pattern":["Create pattern"],"Hide & Reload Page":["Hide & Reload Page"],"Show & Reload Page":["Show & Reload Page"],"Manage patterns":["Manage patterns"],"https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/":["https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/"],"\"%s\" successfully created.":["\"%s\" successfully created."],"The \"%s\" plugin has encountered an error and cannot be rendered.":["The \"%s\" plugin has encountered an error and cannot be rendered."],"Drag to resize":["Drag to resize"],"Templates help define the layout of the site. You can customize all aspects of your posts and pages using blocks and patterns in this editor.":["Templates help define the layout of the site. You can customise all aspects of your posts and pages using blocks and patterns in this editor."],"Welcome to the template editor":["Welcome to the template editor"],"Use theme styles":["Use theme styles"],"Make the editor look like your theme.":["Make the editor look like your theme."],"All of the blocks available to you live in the block library. You\u2019ll find it wherever you see the <InserterIconImage \/> icon.":["All of the blocks available to you live in the block library. You\u2019ll find it wherever you see the <InserterIconImage \/> icon."],"Each block comes with its own set of controls for changing things like color, width, and alignment. These will show and hide automatically when you have a block selected.":["Each block comes with its own set of controls for changing things like colour, width and alignment. These will show and hide automatically when you have a block selected."],"In the WordPress editor, each paragraph, image, or video is presented as a distinct \u201cblock\u201d of content.":["In the WordPress editor, each paragraph, image or video is presented as a distinct \u201cblock\u201d of content."],"Get started":["Get started"],"inserter":["inserter"],"Welcome Guide":["Welcome Guide"],"A page reload is required for this change. Make sure your content is saved before reloading.":["A page reload is required for this change. Make sure your content is saved before reloading."],"Fullscreen mode deactivated.":["Fullscreen mode deactivated."],"Fullscreen mode activated.":["Fullscreen mode activated."],"Custom fields":["Custom fields"],"Create":["Create"],"Fullscreen mode":["Fullscreen mode"],"Site Icon":["Site Icon"],"Back":["Back"],"Exit fullscreen":["Exit fullscreen"],"Learn more":["Learn more"],"Name":["Name"],"Advanced":["Advanced"],"Undo":["Undo"],"Edit":["Edit"]}},"comment":{"reference":"wp-includes\/js\/dist\/edit-post.js"}}

View file

@ -1 +0,0 @@
{"translation-revision-date":"2025-10-08 12:55:00+0000","generator":"GlotPress\/4.0.1","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Your session has expired. You can log in again from this page or go to the login page.":["Your session has expired. You can log in again from this page or go to the login page."]}},"comment":{"reference":"wp-includes\/js\/wp-auth-check.js"}}

Some files were not shown because too many files have changed in this diff Show more