diff --git a/src/Sylius/Abstraction/StateMachine/composer.json b/src/Sylius/Abstraction/StateMachine/composer.json index 8ff77e68958..d5c05226858 100644 --- a/src/Sylius/Abstraction/StateMachine/composer.json +++ b/src/Sylius/Abstraction/StateMachine/composer.json @@ -27,6 +27,9 @@ "winzou/state-machine": "^0.4", "winzou/state-machine-bundle": "^0.6" }, + "suggest": { + "twig/twig": "Access the state machine in your twig templates (^2.12|^3.3)" + }, "require-dev": { "matthiasnoback/symfony-config-test": "^4.2", "phpunit/phpunit": "^9.5", diff --git a/src/Sylius/Abstraction/StateMachine/config/services.xml b/src/Sylius/Abstraction/StateMachine/config/services.xml index 8ec1b9840e4..6edb530acd9 100644 --- a/src/Sylius/Abstraction/StateMachine/config/services.xml +++ b/src/Sylius/Abstraction/StateMachine/config/services.xml @@ -35,5 +35,10 @@ + + + + + diff --git a/src/Sylius/Abstraction/StateMachine/src/Twig/StateMachineExtension.php b/src/Sylius/Abstraction/StateMachine/src/Twig/StateMachineExtension.php new file mode 100644 index 00000000000..bd3c4f30385 --- /dev/null +++ b/src/Sylius/Abstraction/StateMachine/src/Twig/StateMachineExtension.php @@ -0,0 +1,33 @@ +stateMachine->can(...)), + new TwigFunction('sylius_sm_transitions', $this->stateMachine->getEnabledTransitions(...)), + ]; + } +} diff --git a/src/Sylius/Bundle/AdminBundle/templates/order/show/content/header/title_block/actions/cancel.html.twig b/src/Sylius/Bundle/AdminBundle/templates/order/show/content/header/title_block/actions/cancel.html.twig index 1ddd328968c..aef17c61cb6 100644 --- a/src/Sylius/Bundle/AdminBundle/templates/order/show/content/header/title_block/actions/cancel.html.twig +++ b/src/Sylius/Bundle/AdminBundle/templates/order/show/content/header/title_block/actions/cancel.html.twig @@ -1,6 +1,6 @@ {% set order = hookable_metadata.context.resource %} -{% if sm_can(order, constant('Sylius\\Component\\Order\\OrderTransitions::TRANSITION_CANCEL'), constant('Sylius\\Component\\Order\\OrderTransitions::GRAPH')) %} +{% if sylius_sm_can(order, constant('Sylius\\Component\\Order\\OrderTransitions::GRAPH'), constant('Sylius\\Component\\Order\\OrderTransitions::TRANSITION_CANCEL')) %} {% from '@SyliusAdmin/shared/helper/icon.html.twig' import icon as icon %}
diff --git a/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/complete.html.twig b/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/complete.html.twig index 38f6e3342b0..d263503ae25 100644 --- a/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/complete.html.twig +++ b/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/complete.html.twig @@ -1,7 +1,7 @@ {% set order = hookable_metadata.context.resource %} {% set payment = hookable_metadata.context.payment %} -{% if sm_can(payment, constant('Sylius\\Component\\Payment\\PaymentTransitions::TRANSITION_COMPLETE'), constant('Sylius\\Component\\Payment\\PaymentTransitions::GRAPH')) %} +{% if sylius_sm_can(payment, constant('Sylius\\Component\\Payment\\PaymentTransitions::GRAPH'), constant('Sylius\\Component\\Payment\\PaymentTransitions::TRANSITION_COMPLETE')) %} {% from '@SyliusAdmin/shared/helper/icon.html.twig' import icon as icon %} diff --git a/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/refund.html.twig b/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/refund.html.twig index 45a86f2d045..dc716c5ab1d 100644 --- a/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/refund.html.twig +++ b/src/Sylius/Bundle/AdminBundle/templates/order/show/content/sections/payments/item/actions/refund.html.twig @@ -1,7 +1,7 @@ {% set order = hookable_metadata.context.resource %} {% set payment = hookable_metadata.context.payment %} -{% if sm_can(payment, constant('Sylius\\Component\\Payment\\PaymentTransitions::TRANSITION_REFUND'), constant('Sylius\\Component\\Payment\\PaymentTransitions::GRAPH')) %} +{% if sylius_sm_can(payment, constant('Sylius\\Component\\Payment\\PaymentTransitions::GRAPH'), constant('Sylius\\Component\\Payment\\PaymentTransitions::TRANSITION_REFUND')) %} {% from '@SyliusAdmin/shared/helper/icon.html.twig' import icon as icon %} diff --git a/src/Sylius/Bundle/AdminBundle/templates/shared/grid/item_action/apply_transition.html.twig b/src/Sylius/Bundle/AdminBundle/templates/shared/grid/item_action/apply_transition.html.twig index f9b2f4940e5..ea5d4d5c422 100644 --- a/src/Sylius/Bundle/AdminBundle/templates/shared/grid/item_action/apply_transition.html.twig +++ b/src/Sylius/Bundle/AdminBundle/templates/shared/grid/item_action/apply_transition.html.twig @@ -2,7 +2,7 @@ {% set labeled = options.labeled is defined ? options.labeled : true %} -{% if sm_can(data, options.transition, options.graph) %} +{% if sylius_sm_can(data, options.graph, options.transition) %} diff --git a/src/Sylius/Bundle/AdminBundle/templates/shipment/component/ship.html.twig b/src/Sylius/Bundle/AdminBundle/templates/shipment/component/ship.html.twig index b1ca40cd634..dac593666ba 100644 --- a/src/Sylius/Bundle/AdminBundle/templates/shipment/component/ship.html.twig +++ b/src/Sylius/Bundle/AdminBundle/templates/shipment/component/ship.html.twig @@ -2,7 +2,7 @@ {% form_theme form '@SyliusAdmin/shared/form_theme.html.twig' %} -{% if sm_can(shipment, 'ship', 'sylius_shipment') %} +{% if sylius_sm_can(shipment, 'sylius_shipment', 'ship') %}
{{ form_start(form, {'action': path('sylius_admin_shipment_ship', {id: shipment.id}), 'attr': {'class': 'ui loadable form', 'novalidate': 'novalidate'}}) }} diff --git a/src/Sylius/Bundle/UiBundle/Resources/views/Grid/Action/applyTransition.html.twig b/src/Sylius/Bundle/UiBundle/Resources/views/Grid/Action/applyTransition.html.twig index bb8c50d877b..8d2847b4d01 100644 --- a/src/Sylius/Bundle/UiBundle/Resources/views/Grid/Action/applyTransition.html.twig +++ b/src/Sylius/Bundle/UiBundle/Resources/views/Grid/Action/applyTransition.html.twig @@ -1,6 +1,6 @@ {% set labeled = options.labeled is defined ? options.labeled : true %} -{% if sm_can(data, options.transition, options.graph) %} +{% if sylius_sm_can(data, options.graph, options.transition) %}