Skip to content

Commit d5e719a

Browse files
[Admin][PaymentMethod] Initial views refactor
1 parent 1d7741d commit d5e719a

File tree

15 files changed

+277
-7
lines changed

15 files changed

+277
-7
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
sylius_twig_hooks:
2+
hooks:
3+
'sylius_admin.payment_method.create.content.form.sections.gateway_configuration.mollie':
4+
mollie:
5+
template: '@SyliusMolliePlugin/admin/payment_method/form/sections/gateway_configuration/mollie.html.twig'
6+
priority: 0
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
sylius_twig_hooks:
2+
hooks:
3+
'sylius_admin.payment_method.update.content.form.sections.gateway_configuration.mollie':
4+
mollie:
5+
template: '@SyliusMolliePlugin/admin/payment_method/form/sections/gateway_configuration/mollie.html.twig'
6+
priority: 0

src/Controller/Admin/TestApiKeysAction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public function __invoke(Request $request): Response
3131
$data = $this->apiKeysTestResolver->fromRequest($request);
3232

3333
return new Response($this->twig->render(
34-
'@SyliusMolliePlugin/Admin/PaymentMethod/testApiKeys.html.twig',
34+
'@SyliusMolliePlugin/admin/payment_method/test_api_keys.html.twig',
3535
[
3636
'tests' => $data,
3737
],

src/Creator/ApiKeysTestCreator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function create(string $keyType, ?string $key = null): ApiKeyTest
3838

3939
if (null === $key || '' === (trim($key))) {
4040
$apiKeyTest->setStatus(self::ERROR_STATUS);
41-
$apiKeyTest->setMessage($this->translator->trans('sylius_mollie.ui.insert_you_key_first'));
41+
$apiKeyTest->setMessage($this->translator->trans('sylius_mollie.ui.no_api_key_provided'));
4242

4343
return $apiKeyTest;
4444
}

src/Form/Type/MollieGatewayConfigType.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
145145
$form = $event->getForm();
146146
/** @var MollieGatewayConfigInterface $object */
147147
$object = $form->getData();
148-
$data = $event->getData();
149148

150149
if (in_array($object->getMethodId(), ApiTypeRestrictedPaymentMethods::onlyOrderApi(), true)) {
151150
$form->remove('paymentType');
@@ -155,8 +154,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
155154
],
156155
]);
157156
}
158-
159-
$event->setData($data);
160157
})
161158
->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event): void {
162159
/** @var MollieGatewayConfigInterface $object */

src/Form/Type/MollieGatewayConfigurationType.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
4747
'sylius_mollie.ui.api_key_choice_live' => true,
4848
],
4949
])
50-
->add('profile_id', HiddenType::class, [
51-
])
50+
->add('profile_id', HiddenType::class)
5251
->add(self::API_KEY_TEST, PasswordType::class, [
5352
'always_empty' => false,
5453
'label' => 'sylius_mollie.ui.api_key_test',
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{{ form_row(gateway_configuration.config.api_key_live) }}
2+
{#<button id="{{ gateway_configuration.config.api_key_live.vars.name }}" type="button" class="ui button primary">#}
3+
{# {{ 'sylius_mollie.ui.show_hide'|trans }}#}
4+
{#</button>#}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{{ form_row(gateway_configuration.config.api_key_test) }}
2+
{#<button id="{{ gateway_configuration.config.api_key_test.vars.name }}" type="button" class="ui button primary">#}
3+
{# {{ 'sylius_mollie.ui.show_hide'|trans }}#}
4+
{#</button>#}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<button
2+
class="btn test-api-key-button"
3+
type="button"
4+
data-url="{{ path('mollie_admin_test_api_keys') }}"
5+
>
6+
{{ 'sylius_mollie.ui.test_api_keys'|trans }}
7+
</button>
8+
<div class="ui test-api-key-div"></div>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{% set resource = hookable_metadata.context.resource %}
2+
{% set form = hookable_metadata.context.form %}
3+
4+
{% set gateway_configuration = form.gatewayConfig %}
5+
{% set general_config = gateway_configuration.config %}
6+
7+
{{ form_row(general_config.environment, {'attr': {'class': 'js-onboardingWizard-environment'}}) }}
8+
9+
<div class="two field js-onboardingWizard-profile-api">
10+
<div class="js-two-fields-test">
11+
{{ form_widget(general_config.profile_id) }}
12+
{% include '@SyliusMolliePlugin/admin/payment_method/form/sections/gateway_configuration/general/api_key_test.html.twig' %}
13+
</div>
14+
{% include '@SyliusMolliePlugin/admin/payment_method/form/sections/gateway_configuration/general/api_key_live.html.twig' %}
15+
{% include '@SyliusMolliePlugin/admin/payment_method/form/sections/gateway_configuration/general/test_api_keys.html.twig' %}
16+
</div>
17+
18+
{{ form_rest(general_config) }}
19+
20+
<div id="mollie-payment-form" data-status="{{ resource.id }}">
21+
{% include '@SyliusMolliePlugin/admin/payment_method/form/sections/gateway_configuration/payment_methods/form.html.twig' %}
22+
</div>
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
{% set mealvouchersId = constant('Sylius\\MolliePlugin\\Model\\PaymentMethod\\MealVoucher::MEAL_VOUCHERS') %}
2+
{% set ideal = constant('Mollie\\Api\\Types\\PaymentMethod::IDEAL') %}
3+
{% set bancontact = constant('Mollie\\Api\\Types\\PaymentMethod::BANCONTACT') %}
4+
{% set applePay = constant('Mollie\\Api\\Types\\PaymentMethod::APPLEPAY') %}
5+
{% set klarnaOne = constant('Mollie\\Api\\Types\\PaymentMethod::KLARNA_ONE') %}
6+
{% set klarnaPayLater = constant('Mollie\\Api\\Types\\PaymentMethod::KLARNA_PAY_LATER') %}
7+
{% set klarnaSliceIt = constant('Mollie\\Api\\Types\\PaymentMethod::KLARNA_SLICE_IT') %}
8+
{% set billie = constant('Mollie\\Api\\Types\\PaymentMethod::BILLIE') %}
9+
{% set in3 = constant('Mollie\\Api\\Types\\PaymentMethod::IN3') %}
10+
{% set alma = constant('Mollie\\Api\\Types\\PaymentMethod::ALMA') %}
11+
{% set riverty = constant('Mollie\\Api\\Types\\PaymentMethod::RIVERTY') %}
12+
{#{% import '@SyliusUi/Macro/flags.html.twig' as flags %}#}
13+
14+
<div class="ui segment" id="mollie-payment-form" data-status="{{resource.id}}">
15+
{% if resource.id is null %}
16+
<h4 class="ui header">
17+
<div class="ui two column stackable grid js-onboardingWizard-load-methods">
18+
<div class="middle aligned column">
19+
{{ 'sylius_mollie.ui.payment_mathod_conf_title'|trans }}
20+
</div>
21+
</div>
22+
</h4>
23+
<div class="ui mini message center float js-payment-method-not-loaded">
24+
{{ 'sylius_mollie.ui.create_methods_before_loading'|trans|raw }}
25+
</div>
26+
{% else %}
27+
<h4 class="ui header">
28+
<div class="ui two column stackable grid js-onboardingWizard-load-methods">
29+
<div class="middle aligned column">
30+
{{ 'sylius_mollie.ui.payment_mathod_conf_title'|trans }}
31+
</div>
32+
<div class="right aligned column">
33+
<div class="ui buttons js-header-btn">
34+
<a href="#" id="get_methods" data-url="{{ path('mollie_admin_methods', {id: resource.gatewayConfig.id}) }}"
35+
class="ui button primary">{{ 'sylius_mollie.ui.load_methods_button'|trans }}</a>
36+
</div>
37+
</div>
38+
</div>
39+
<div class="sub header">
40+
<i class="info circle icon"></i>
41+
{{ 'sylius_mollie.ui.you_can_sort_methods_via_drag_and_drop'|trans }}
42+
</div>
43+
</h4>
44+
45+
<div
46+
class="ui styled fluid accordion js-sortable"
47+
id="payment_methods"
48+
data-ajax-url="{{ path('mollie_admin_change_position') }}"
49+
>
50+
{% set nameFieldRendered = false %}
51+
{% for name, methodForm in form.gatewayConfig.mollieGatewayConfig|sort((a, b) => a.vars.value.position <=> b.vars.value.position) %}
52+
{% set methodImage = methodForm.vars.value.image.svg %}
53+
{% if methodForm.vars.value.customizeMethodImage != null and methodForm.vars.value.customizeMethodImage.path != null %}
54+
{% set methodImage = methodForm.vars.value.customizeMethodImage.path|imagine_filter('sylius_original') %}
55+
{% endif %}
56+
<div
57+
class="draggable js-draggable"
58+
draggable="true"
59+
data-payment-method="{{ methodForm.vars.value.methodId }}"
60+
data-payment-id="{{ methodForm.vars.value.id }}"
61+
>
62+
<div class="draggable-button-enable">
63+
{{ form_row(methodForm.enabled, { id: methodForm.vars.value.name }) }}
64+
</div>
65+
<div class="title{% if loop.index0 == 0 %} active{% endif %}">
66+
<i class="dropdown icon"></i>
67+
<img class="ui mini avatar image" src="{{ methodImage }}"/>
68+
{{ methodForm.vars.value.name }}
69+
</div>
70+
<div class="content{% if loop.index0 == 0 %} active{% endif %}" data-method-id="{{methodForm.vars.name}}">
71+
<div class="field">
72+
{{ form_label(methodForm.translations) }}
73+
<div class="accordion">
74+
{% for locale, translationForm in methodForm.translations %}
75+
<div class="title{% if 0 == loop.index0 %} active{% endif %}">
76+
<i class="dropdown icon"></i>
77+
{# {{ flags.fromLocaleCode(locale) }} {{ locale|sylius_locale_name }}#}
78+
</div>
79+
<div class="content{% if 0 == loop.index0 %} active{% endif %}">
80+
{% if nameFieldRendered is same as (false) %}
81+
{{ form_row(translationForm.name, { 'attr': { 'class': 'js-onboardingWizard-paymentName' } }) }}
82+
{% set nameFieldRendered = true %}
83+
{% else %}
84+
{{ form_row(translationForm.name) }}
85+
{% endif %}
86+
</div>
87+
{% endfor %}
88+
</div>
89+
</div>
90+
{% if methodForm.vars.value.methodId == mealvouchersId %}
91+
<div class="field">
92+
{{ form_widget(methodForm.defaultCategory) }}
93+
{{ methodForm.defaultCategory.vars.help|trans }}
94+
</div>
95+
{% elseif methodForm.vars.value.methodId == applePay %}
96+
<div class="field">
97+
{{ form_row(methodForm.applePayDirectButton) }}
98+
{{ form_help(methodForm.applePayDirectButton) }}
99+
</div>
100+
{% endif %}
101+
<div class="field">
102+
<div class="twelve wide column">
103+
{{ form_row(methodForm.customizeMethodImage, { 'attr': { 'class': 'js-onboardingWizard-customizeMethodImage' } }) }}
104+
</div>
105+
{% if
106+
methodForm.vars.value.customizeMethodImage != null and
107+
methodForm.vars.value.customizeMethodImage.path != null
108+
%}
109+
<div class="four wide column">
110+
<div
111+
class="ui button red form_button--delete-img"
112+
id="{{ name }}"
113+
data-value="{{ methodForm.vars.value.name }}"
114+
data-url="{{ path('mollie_admin_delete_logo') }}"
115+
>{{ 'sylius.ui.delete'|trans }}
116+
</div>
117+
</div>
118+
{% endif %}
119+
</div>
120+
121+
<div class="js-onboardingWizard-countryRestrictions">
122+
<div class="field">
123+
{{ form_row(methodForm.country_restriction, { 'attr': { 'class': 'js-onboardingWizard-countryRestriction' } }) }}
124+
</div>
125+
<div class="field">
126+
<div id="country-allowed_{{ loop.index0 }}">
127+
{{ form_row(methodForm.countryLevel_allowed, { 'attr': {'class': 'fluid search'} }) }}
128+
</div>
129+
</div>
130+
</div>
131+
<div class="field">
132+
<div id="country-excluded_{{ loop.index0 }}">
133+
{{ form_row(methodForm.countryLevel_excluded, { 'attr': {'class': 'fluid search'} }) }}
134+
</div>
135+
</div>
136+
<div class="field">
137+
<div class="fields">
138+
<div class="twelve wide field">
139+
{% if
140+
methodForm.vars.value.methodId == mealvouchersId or
141+
methodForm.vars.value.methodId == klarnaOne or
142+
methodForm.vars.value.methodId == klarnaPayLater or
143+
methodForm.vars.value.methodId == klarnaSliceIt or
144+
methodForm.vars.value.methodId == billie or
145+
methodForm.vars.value.methodId == alma or
146+
methodForm.vars.value.methodId == riverty or
147+
methodForm.vars.value.methodId == in3
148+
%}
149+
{{ form_row(methodForm.paymentType, {'attr': {'disabled': 'disabled', 'class': 'js-onboardingWizard-PaymentMethod'}}) }}
150+
{{ form_help(methodForm.paymentType) }}
151+
{% else %}
152+
{{ form_row(methodForm.paymentType, { 'attr': { 'class': 'js-onboardingWizard-PaymentMethod' } }) }}
153+
{{ form_help(methodForm.paymentType) }}
154+
{% endif %}
155+
</div>
156+
<div class="four wide field">
157+
{{ form_row(methodForm.orderExpirationDays) }}
158+
</div>
159+
</div>
160+
</div>
161+
<div class="field">
162+
{% if
163+
methodForm.vars.value.methodId == ideal or
164+
methodForm.vars.value.methodId == bancontact %}
165+
{{ form_row(methodForm.qrCodeEnabled) }}
166+
{% endif %}
167+
</div>
168+
<div class="field">
169+
<div class="js-onboardingWizard-order-number">
170+
{{ form_widget(methodForm.paymentDescription, { 'attr': { 'class': 'js-onboardingWizard-paymentDescription' } }) }}
171+
<div id="payment_description_{{ name }}">
172+
{{ methodForm.paymentDescription.vars.help|trans|raw|nl2br }}
173+
</div>
174+
</div>
175+
</div>
176+
<h4 class="ui horizontal divider header">
177+
{{ 'sylius_mollie.ui.payment_fee'|trans }}
178+
</h4>
179+
{{ form_row(methodForm.paymentSurchargeFee, { 'attr': { 'class': 'js-onboardingWizard-paymentFee' } }) }}
180+
<h4 class="ui horizontal divider header">
181+
{{ 'sylius_mollie.ui.min_max'|trans }}
182+
</h4>
183+
<h5>{{ 'sylius_mollie.form.amount_limit_help'|trans }}</h5>
184+
{{ form_row(methodForm.amountLimits, { 'attr': { 'class': 'js-onboardingWizard-minMax fields' } }) }}
185+
</div>
186+
</div>
187+
{% else %}
188+
<div class="ui mini message center float js-payment-method-not-loaded">
189+
{{ 'sylius_mollie.ui.no_methods_found_message'|trans }}
190+
</div>
191+
{% endfor %}
192+
</div>
193+
{% endif %}
194+
</div>
195+
196+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<div class="ui message">
2+
{% for test in tests %}
3+
{% include '@SyliusMolliePlugin/admin/payment_method/test_api_keys/test.html.twig' %}
4+
{% endfor %}
5+
</div>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{% set value = 'sylius_mollie.ui.' ~ test.type %}
2+
3+
{% if test.methods is not empty %}
4+
<i class="checkmark icon green"></i><strong>{{ value|trans }}:</strong>
5+
{{ 'sylius_mollie.ui.success'|trans }}!
6+
{% else %}
7+
<i class="x icon red"></i> <strong>{{ value|trans }}:</strong>
8+
{{ 'sylius_mollie.ui.fail'|trans }}!
9+
{% endif %}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<div class="row">
2+
{% include '@SyliusMolliePlugin/admin/payment_method/test_api_keys/status.html.twig' %}
3+
4+
{% if test.status == constant('Sylius\\MolliePlugin\\Creator\\ApiKeysTestCreatorInterface::ERROR_STATUS') %}
5+
{{ test.message }}
6+
{% endif %}
7+
<br>
8+
<i class="cog icon green"></i>
9+
{{ 'sylius_mollie.ui.available_methods'|trans }}:
10+
{% for method in test.methods %}
11+
{{ method.description }},
12+
{% endfor %}
13+
</div>

translations/messages.en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ sylius_mollie:
99
api_key_live: 'Live API Key'
1010
api_key_start_with_api_key_live: 'API key must start with live_'
1111
api_key_start_with_api_key_test: 'API key must start with test_'
12+
no_api_key_provided: 'No API key provided'
1213
api_key_test: 'Test API Key'
1314
available_methods: 'Available methods'
1415
breadcrumbs:

0 commit comments

Comments
 (0)