Skip to content

Commit

Permalink
Merge pull request #939 from wmde/toggle-paytypes
Browse files Browse the repository at this point in the history
Introduce payment type toggle for membership applications
  • Loading branch information
JeroenDeDauw committed Aug 18, 2017
2 parents ccefe8c + ac8cde2 commit 37c58bc
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 13 deletions.
15 changes: 10 additions & 5 deletions app/config/config.dist.json
Original file line number Diff line number Diff line change
Expand Up @@ -157,19 +157,24 @@
},
"payment-types": {
"BEZ": {
"donation-enabled": true
"donation-enabled": true,
"membership-enabled": true
},
"UEB": {
"donation-enabled": true
"donation-enabled": true,
"membership-enabled": false
},
"MCP": {
"donation-enabled": true
"donation-enabled": true,
"membership-enabled": false
},
"PPL": {
"donation-enabled": true
"donation-enabled": true,
"membership-enabled": false
},
"SUB": {
"donation-enabled": false
"donation-enabled": false,
"membership-enabled": false
}
}
}
10 changes: 8 additions & 2 deletions app/config/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -720,16 +720,22 @@
"type": "boolean",
"title": "Donation Enabled Flag",
"description": "Set to true if payment type is to be offered for donations"
},
"membership-enabled": {
"type": "boolean",
"title": "Membership application enabled flag",
"description": "Set to true if payment type is to be offered for membership applications"
}
},
"required": [
"donation-enabled"
"donation-enabled",
"membership-enabled"
],
"additionalProperties": false
}
},
"additionalProperties": false,
"minProperties": 1
"minProperties": 2
}
},
"additionalProperties": false,
Expand Down
2 changes: 1 addition & 1 deletion app/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ function( Request $request ) use ( $ffFactory ) {
$params['showMembershipTypeOption'] = false ;
}

return $ffFactory->getLayoutTemplate( 'Membership_Application.html.twig' )->render( $params );
return $ffFactory->getMembershipApplicationFormTemplate()->render( $params );
}
);

Expand Down
3 changes: 2 additions & 1 deletion app/templates/Membership_Application.html.twig
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{% set showMembershipTypeOption = showMembershipTypeOption is defined ? showMembershipTypeOption : 'true' %}
{% set membershipAppeal = 'Werden Sie Mitglied für Freies Wissen!' %}
{% set formSlideOpen = false %}
{% set initialPaymentType = paymentTypes|length == 1 ? paymentTypes|first : '' %}

{% extends 'Base_Layout.html.twig' %}

Expand All @@ -17,7 +18,7 @@
</div>

<script id="init-form" src="{$ basepath|e('html_attr') $}{$ '/res/js/membershipForm.js'|prefix_file $}"
data-initial-form-values="{% if initialFormValues %}{$ initialFormValues|merge({'paymentType': 'BEZ'})|json_encode|e('html_attr') $}{% else %}{$ {'paymentType': 'BEZ'}|json_encode|e('html_attr') $}{% endif %}"
data-initial-form-values="{% if initialFormValues %}{$ initialFormValues|merge({'paymentType': initialPaymentType})|json_encode|e('html_attr') $}{% else %}{$ {'paymentType': initialPaymentType}|json_encode|e('html_attr') $}{% endif %}"
data-violated-fields="{% if violatedFields %}{$ violatedFields|json_encode|e('html_attr') $}{% else %}{}{% endif %}"
data-validate-fee-url="{$ basepath|e('html_attr') $}/validate-fee"
data-validate-address-url="{$ basepath|e('html_attr') $}/validate-address"
Expand Down
3 changes: 2 additions & 1 deletion app/templates/Membership_Application_Embedded.html.twig
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{% set showMembershipTypeOption = false %}
{% set formSlideOpen = true %}
{% set initialPaymentType = paymentTypes|length == 1 ? paymentTypes|first : '' %}
{% set trackOutgoingLinks = true %}
{% if person.salutation and person.lastName %}
{% set membershipAppeal = "#{person.salutation} #{person.lastName}, werden Sie Fördermitglied!" %}
Expand All @@ -18,7 +19,7 @@
</div>

<script id="init-form" src="{$ basepath|e('html_attr') $}/res/js/membershipForm.js"
data-initial-form-values="{% if initialFormValues %}{$ initialFormValues|merge({'paymentType': 'BEZ'})|json_encode|e('html_attr') $}{% else %}{$ {'paymentType': 'BEZ'}|json_encode|e('html_attr') $}{% endif %}"
data-initial-form-values="{% if initialFormValues %}{$ initialFormValues|merge({'paymentType': initialPaymentType})|json_encode|e('html_attr') $}{% else %}{$ {'paymentType': initialPaymentType}|json_encode|e('html_attr') $}{% endif %}"
data-violated-fields="{% if violatedFields %}{$ violatedFields|json_encode|e('html_attr') $}{% else %}{}{% endif %}"
data-validate-fee-url="{$ basepath|e('html_attr') $}/validate-fee"
data-validate-address-url="{$ basepath|e('html_attr') $}/validate-address"
Expand Down
10 changes: 9 additions & 1 deletion app/templates/Membership_Application_Form.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -245,17 +245,22 @@

<div class="container clearfix">

<ul class="horizontal clearfix payment-type-list">
<ul class="horizontal clearfix payment-type-list" style="{% if paymentTypes|length < 2 %}display: none;{% endif %}">
{% if 'BEZ' in paymentTypes %}
<li class="first">
<input type="radio" title="Lastschrift" value="BEZ" class="payment-type-select" name="payment_type" id="paymentType-1">
<label for="paymentType-1">Lastschrift</label>
</li>
{% endif %}
{% if 'PPL' in paymentTypes %}
<li>
<input type="radio" title="PayPal" value="PPL" class="payment-type-select" name="payment_type" id="paymentType-2">
<label for="paymentType-2">PayPal</label>
</li>
{% endif %}
</ul>

{% if 'PPL' in paymentTypes %}
<div class="notice-ppl-recurrent">
<p>
{$ 'notice_membership_paypal'|trans $}
Expand All @@ -266,6 +271,7 @@
</div>

<hr />
{% endif %}

<ul class="horizontal clearfix interval-list">
<li class="first">
Expand Down Expand Up @@ -339,6 +345,7 @@
</ul>
</div>

{% if 'BEZ' in paymentTypes %}
<div class="fields-direct-debit">

<hr />
Expand Down Expand Up @@ -400,6 +407,7 @@
<div style="margin-left: 180px" class="input-container">
<span id="bank-name"></span>
</div>
{% endif %}

<hr>
</div>
Expand Down
22 changes: 20 additions & 2 deletions src/Factories/FunFunFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -1011,7 +1011,13 @@ public function getTokenGenerator(): TokenGenerator {

public function newDonationConfirmationPresenter(): DonationConfirmationHtmlPresenter {
return new DonationConfirmationHtmlPresenter(
$this->getIncludeTemplate( 'Donation_Confirmation.html.twig', [ 'piwikGoals' => [ 3 ] ] )
$this->getIncludeTemplate(
'Donation_Confirmation.html.twig',
[
'piwikGoals' => [ 3 ],
'paymentTypes' => $this->getEnabledMembershipApplicationPaymentTypes()
]
)
);
}

Expand Down Expand Up @@ -1168,6 +1174,18 @@ private function getEnabledDonationPaymentTypes(): array {
} ) );
}

public function getMembershipApplicationFormTemplate(): TwigTemplate {
return $this->getLayoutTemplate( 'Membership_Application.html.twig', [
'paymentTypes' => $this->getEnabledMembershipApplicationPaymentTypes()
] );
}

private function getEnabledMembershipApplicationPaymentTypes(): array {
return array_keys( array_filter( $this->config['payment-types'], function ( $config ) {
return ( $config['membership-enabled'] === true );
} ) );
}

public function newHandleSofortPaymentNotificationUseCase( string $updateToken ): SofortPaymentNotificationUseCase {
return new SofortPaymentNotificationUseCase(
$this->getDonationRepository(),
Expand Down Expand Up @@ -1244,7 +1262,7 @@ public function newMembershipApplicationConfirmationHtmlPresenter(): MembershipA

public function newMembershipFormViolationPresenter(): MembershipFormViolationPresenter {
return new MembershipFormViolationPresenter(
$this->getLayoutTemplate( 'Membership_Application.html.twig' )
$this->getMembershipApplicationFormTemplate()
);
}

Expand Down

0 comments on commit 37c58bc

Please sign in to comment.