Merge pull request #17981 from eileenmcnaughton/merge_form
[civicrm-core.git] / templates / CRM / Contribute / Form / Contribution / Main.tpl
1 {*
2 +--------------------------------------------------------------------+
3 | Copyright CiviCRM LLC. All rights reserved. |
4 | |
5 | This work is published under the GNU AGPLv3 license with some |
6 | permitted exceptions and without any warranty. For full license |
7 | and copyright information, see https://civicrm.org/licensing |
8 +--------------------------------------------------------------------+
9 *}
10 {* Callback snippet: On-behalf profile *}
11 {if $snippet and !empty($isOnBehalfCallback) and !$ccid}
12 <div class="crm-public-form-item crm-section">
13 {include file="CRM/Contribute/Form/Contribution/OnBehalfOf.tpl" context="front-end"}
14 </div>
15 {else}
16 {literal}
17 <script type="text/javascript">
18
19 // Putting these functions directly in template so they are available for standalone forms
20 function useAmountOther() {
21 var priceset = {/literal}{if $contriPriceset}'{$contriPriceset}'{else}0{/if}{literal};
22
23 for( i=0; i < document.Main.elements.length; i++ ) {
24 element = document.Main.elements[i];
25 if ( element.type == 'radio' && element.name == priceset ) {
26 if (element.value == '0' ) {
27 element.click();
28 }
29 else {
30 element.checked = false;
31 }
32 }
33 }
34 }
35
36 function clearAmountOther() {
37 var priceset = {/literal}{if $priceset}'#{$priceset}'{else}0{/if}{literal}
38 if( priceset ){
39 cj(priceset).val('');
40 cj(priceset).blur();
41 }
42 if (document.Main.amount_other == null) return; // other_amt field not present; do nothing
43 document.Main.amount_other.value = "";
44 }
45
46 </script>
47 {/literal}
48
49 {if $action & 1024}
50 {include file="CRM/Contribute/Form/Contribution/PreviewHeader.tpl"}
51 {/if}
52
53 {if $displayCaptchaWarning}
54 <div class="messages status no-popup">
55 {ts}To display reCAPTCHA on form you must get an API key from<br /> <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>{/ts}
56 </div>
57 {/if}
58
59 {if call_user_func(array('CRM_Core_Permission','check'), 'administer CiviCRM') }
60 {capture assign="buttonTitle"}{ts}Configure Contribution Page{/ts}{/capture}
61 {crmButton target="_blank" p="civicrm/admin/contribute/settings" q="reset=1&action=update&id=`$contributionPageID`" title="$buttonTitle" icon="fa-wrench"}{ts}Configure{/ts}{/crmButton}
62 <div class='clear'></div>
63 {/if}
64 {include file="CRM/common/TrackingFields.tpl"}
65
66 <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block">
67
68 {if $contact_id && !$ccid}
69 <div class="messages status no-popup crm-not-you-message">
70 {ts 1=$display_name}Welcome %1{/ts}. (<a href="{crmURL p='civicrm/contribute/transact' q="cid=0&reset=1&id=`$contributionPageID`"}" title="{ts}Click here to do this for a different person.{/ts}">{ts 1=$display_name}Not %1, or want to do this for a different person{/ts}</a>?)
71 </div>
72 {/if}
73
74 <div id="intro_text" class="crm-public-form-item crm-section intro_text-section">
75 {$intro_text}
76 </div>
77 {include file="CRM/common/cidzero.tpl"}
78 {if $islifetime or $ispricelifetime}
79 <div class="help">{ts}You have a current Lifetime Membership which does not need to be renewed.{/ts}</div>
80 {/if}
81
82 {if !empty($useForMember) && !$ccid}
83 <div class="crm-public-form-item crm-section">
84 {include file="CRM/Contribute/Form/Contribution/MembershipBlock.tpl" context="makeContribution"}
85 </div>
86 {elseif !empty($ccid)}
87 {if $lineItem && $priceSetID && !$is_quick_config}
88 <div class="header-dark">
89 {ts}Contribution Information{/ts}{if $display_name} &ndash; {$display_name}{/if}
90 </div>
91 {assign var="totalAmount" value=$pendingAmount}
92 {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"}
93 {else}
94 <div class="display-block">
95 <td class="label">{$form.total_amount.label}</td>
96 <td><span>{$form.total_amount.html|crmMoney}&nbsp;&nbsp;{if $taxAmount}{ts 1=$taxTerm 2=$taxAmount|crmMoney}(includes %1 of %2){/ts}{/if}</span></td>
97 </div>
98 {/if}
99 {else}
100 <div id="priceset-div">
101 {include file="CRM/Price/Form/PriceSet.tpl" extends="Contribution"}
102 </div>
103 {/if}
104
105 {if !$ccid}
106 {crmRegion name='contribution-main-pledge-block'}
107 {if $pledgeBlock}
108 {if $is_pledge_payment}
109 <div class="crm-public-form-item crm-section {$form.pledge_amount.name}-section">
110 <div class="label">{$form.pledge_amount.label}&nbsp;<span class="crm-marker">*</span></div>
111 <div class="content">{$form.pledge_amount.html}</div>
112 <div class="clear"></div>
113 </div>
114 {else}
115 <div class="crm-public-form-item crm-section {$form.is_pledge.name}-section">
116 <div class="label">&nbsp;</div>
117 <div class="content">
118 {$form.is_pledge.html}&nbsp;
119 {if $is_pledge_interval}
120 {$form.pledge_frequency_interval.html}&nbsp;
121 {/if}
122 {$form.pledge_frequency_unit.html}<span id="pledge_installments_num">&nbsp;{ts}for{/ts}&nbsp;{$form.pledge_installments.html}&nbsp;{ts}installments.{/ts}</span>
123 </div>
124 <div class="clear"></div>
125 {if $start_date_editable}
126 {if $is_date}
127 <div class="label">{$form.start_date.label}</div><div class="content">{$form.start_date.html}</div>
128 {else}
129 <div class="label">{$form.start_date.label}</div><div class="content">{$form.start_date.html}</div>
130 {/if}
131 {else}
132 <div class="label">{$form.start_date.label}</div>
133 <div class="content">{$start_date_display|date_format}</div>
134 {/if}
135 <div class="clear"></div>
136 </div>
137 {/if}
138 {/if}
139 {/crmRegion}
140
141 {if $form.is_recur}
142 <div class="crm-public-form-item crm-section {$form.is_recur.name}-section">
143 <div class="label">&nbsp;</div>
144 <div class="content">
145 {$form.is_recur.html} {$form.is_recur.label} {ts}every{/ts}
146 {if $is_recur_interval}
147 {$form.frequency_interval.html}
148 {/if}
149 {if $one_frequency_unit}
150 {$frequency_unit}
151 {else}
152 {$form.frequency_unit.html}
153 {/if}
154 {if $is_recur_installments}
155 <span id="recur_installments_num">
156 {ts}for{/ts} {$form.installments.html} {$form.installments.label}
157 </span>
158 {/if}
159 <div id="recurHelp" class="description">
160 {$recurringHelpText}
161 </div>
162 </div>
163 <div class="clear"></div>
164 </div>
165 {/if}
166 {if $pcpSupporterText}
167 <div class="crm-public-form-item crm-section pcpSupporterText-section">
168 <div class="label">&nbsp;</div>
169 <div class="content">{$pcpSupporterText}</div>
170 <div class="clear"></div>
171 </div>
172 {/if}
173 {if $showMainEmail}
174 {assign var=n value=email-$bltID}
175 <div class="crm-public-form-item crm-section {$form.$n.name}-section">
176 <div class="label">{$form.$n.label}</div>
177 <div class="content">
178 {$form.$n.html}
179 </div>
180 <div class="clear"></div>
181 </div>
182 {/if}
183
184 <div id='onBehalfOfOrg' class="crm-public-form-item crm-section">
185 {include file="CRM/Contribute/Form/Contribution/OnBehalfOf.tpl"}
186 </div>
187
188 {* User account registration option. Displays if enabled for one of the profiles on this page. *}
189 <div class="crm-public-form-item crm-section cms_user-section">
190 {include file="CRM/common/CMSUser.tpl"}
191 </div>
192 <div class="crm-public-form-item crm-section premium_block-section">
193 {include file="CRM/Contribute/Form/Contribution/PremiumBlock.tpl" context="makeContribution"}
194 </div>
195
196 {if $honoreeProfileFields && $honoreeProfileFields|@count}
197 <fieldset class="crm-public-form-item crm-group honor_block-group">
198 {crmRegion name="contribution-soft-credit-block"}
199 <legend>{$honor_block_title}</legend>
200 <div class="crm-public-form-item crm-section honor_block_text-section">
201 {$honor_block_text}
202 </div>
203 {if $form.soft_credit_type_id.html}
204 <div class="crm-public-form-item crm-section {$form.soft_credit_type_id.name}-section">
205 <div class="content" >
206 {$form.soft_credit_type_id.html}
207 <div class="description">{ts}Select an option to reveal honoree information fields.{/ts}</div>
208 </div>
209 </div>
210 {/if}
211 {/crmRegion}
212 <div id="honorType" class="honoree-name-email-section">
213 {include file="CRM/UF/Form/Block.tpl" fields=$honoreeProfileFields mode=8 prefix='honor'}
214 </div>
215 </fieldset>
216 {/if}
217
218 <div class="crm-public-form-item crm-group custom_pre_profile-group">
219 {include file="CRM/UF/Form/Block.tpl" fields=$customPre}
220 </div>
221
222 {if $isHonor}
223 <fieldset class="crm-public-form-item crm-group pcp-group">
224 <div class="crm-public-form-item crm-section pcp-section">
225 <div class="crm-public-form-item crm-section display_in_roll-section">
226 <div class="content">
227 {$form.pcp_display_in_roll.html} &nbsp;
228 {$form.pcp_display_in_roll.label}
229 </div>
230 <div class="clear"></div>
231 </div>
232 <div id="nameID" class="crm-public-form-item crm-section is_anonymous-section">
233 <div class="content">
234 {$form.pcp_is_anonymous.html}
235 </div>
236 <div class="clear"></div>
237 </div>
238 <div id="nickID" class="crm-public-form-item crm-section pcp_roll_nickname-section">
239 <div class="label">{$form.pcp_roll_nickname.label}</div>
240 <div class="content">{$form.pcp_roll_nickname.html}
241 <div class="description">{ts}Enter the name you want listed with this contribution. You can use a nick name like 'The Jones Family' or 'Sarah and Sam'.{/ts}</div>
242 </div>
243 <div class="clear"></div>
244 </div>
245 <div id="personalNoteID" class="crm-public-form-item crm-section pcp_personal_note-section">
246 <div class="label">{$form.pcp_personal_note.label}</div>
247 <div class="content">
248 {$form.pcp_personal_note.html}
249 <div class="description">{ts}Enter a message to accompany this contribution.{/ts}</div>
250 </div>
251 <div class="clear"></div>
252 </div>
253 </div>
254 </fieldset>
255 {/if}
256
257 {* end of ccid loop *}
258 {/if}
259
260 {if $form.payment_processor_id.label}
261 {* PP selection only works with JS enabled, so we hide it initially *}
262 <fieldset class="crm-public-form-item crm-group payment_options-group" style="display:none;">
263 <legend>{ts}Payment Options{/ts}</legend>
264 <div class="crm-public-form-item crm-section payment_processor-section">
265 <div class="label">{$form.payment_processor_id.label}</div>
266 <div class="content">{$form.payment_processor_id.html}</div>
267 <div class="clear"></div>
268 </div>
269 </fieldset>
270 {/if}
271
272 {if $is_pay_later}
273 <fieldset class="crm-public-form-item crm-group pay_later-group">
274 <legend>{ts}Payment Options{/ts}</legend>
275 <div class="crm-public-form-item crm-section pay_later_receipt-section">
276 <div class="label">&nbsp;</div>
277 <div class="content">
278 [x] {$pay_later_text}
279 </div>
280 <div class="clear"></div>
281 </div>
282 </fieldset>
283 {/if}
284
285 {include file="CRM/Core/BillingBlockWrapper.tpl"}
286
287 <div class="crm-public-form-item crm-group custom_post_profile-group">
288 {include file="CRM/UF/Form/Block.tpl" fields=$customPost}
289 </div>
290
291 {if $is_monetary and $form.bank_account_number}
292 <div id="payment_notice">
293 <fieldset class="crm-public-form-item crm-group payment_notice-group">
294 <legend>{ts}Agreement{/ts}</legend>
295 {ts}Your account data will be used to charge your bank account via direct debit. While submitting this form you agree to the charging of your bank account via direct debit.{/ts}
296 </fieldset>
297 </div>
298 {/if}
299
300 {if $isCaptcha}
301 {include file='CRM/common/ReCAPTCHA.tpl'}
302 {/if}
303 <div id="crm-submit-buttons" class="crm-submit-buttons">
304 {include file="CRM/common/formButtons.tpl" location="bottom"}
305 </div>
306 {if $footer_text}
307 <div id="footer_text" class="crm-public-form-item crm-section contribution_footer_text-section">
308 <p>{$footer_text}</p>
309 </div>
310 {/if}
311 </div>
312 <script type="text/javascript">
313 {if $isHonor}
314 pcpAnonymous();
315 {/if}
316
317 {literal}
318
319 cj('input[name="soft_credit_type_id"]').on('change', function() {
320 enableHonorType();
321 });
322
323 function enableHonorType() {
324 var selectedValue = cj('input[name="soft_credit_type_id"]:checked');
325 if ( selectedValue.val() > 0) {
326 cj('#honorType').show();
327 }
328 else {
329 cj('#honorType').hide();
330 }
331 }
332
333 cj('input[id="is_recur"]').on('change', function() {
334 toggleRecur();
335 });
336
337 function toggleRecur() {
338 var isRecur = cj('input[id="is_recur"]:checked');
339 var allowAutoRenew = {/literal}'{$allowAutoRenewMembership}'{literal};
340 var quickConfig = {/literal}{$quickConfig}{literal};
341 if (allowAutoRenew && cj("#auto_renew") && quickConfig) {
342 showHideAutoRenew(null);
343 }
344
345 var frequencyUnit = cj('#frequency_unit');
346 var frequencyInerval = cj('#frequency_interval');
347 var installments = cj('#installments');
348 isDisabled = false;
349
350 if (isRecur.val() > 0) {
351 cj('#recurHelp').show();
352 frequencyUnit.prop('disabled', false).addClass('required');
353 frequencyInerval.prop('disabled', false).addClass('required');
354 installments.prop('disabled', false);
355 cj('#amount_sum_label').text('{/literal}{ts escape='js'}Regular amount{/ts}{literal}');
356 }
357 else {
358 cj('#recurHelp').hide();
359 frequencyUnit.prop('disabled', true).removeClass('required');
360 frequencyInerval.prop('disabled', true).removeClass('required');
361 installments.prop('disabled', true);
362 cj('#amount_sum_label').text('{/literal}{ts escape='js'}Total Amount{/ts}{literal}');
363 }
364 }
365
366 function pcpAnonymous() {
367 // clear nickname field if anonymous is true
368 if (document.getElementsByName("pcp_is_anonymous")[1].checked) {
369 document.getElementById('pcp_roll_nickname').value = '';
370 }
371 if (!document.getElementsByName("pcp_display_in_roll")[0].checked) {
372 cj('#nickID').hide();
373 cj('#nameID').hide();
374 cj('#personalNoteID').hide();
375 }
376 else {
377 if (document.getElementsByName("pcp_is_anonymous")[0].checked) {
378 cj('#nameID').show();
379 cj('#nickID').show();
380 cj('#personalNoteID').show();
381 }
382 else {
383 cj('#nameID').show();
384 cj('#nickID').hide();
385 cj('#personalNoteID').hide();
386 }
387 }
388 }
389
390 CRM.$(function($) {
391 enableHonorType();
392 toggleRecur();
393 skipPaymentMethod();
394 });
395
396 CRM.$(function($) {
397 // highlight price sets
398 function updatePriceSetHighlight() {
399 $('#priceset .price-set-row span').removeClass('highlight');
400 $('#priceset .price-set-row input:checked').parent().addClass('highlight');
401 }
402 $('#priceset input[type="radio"]').change(updatePriceSetHighlight);
403 updatePriceSetHighlight();
404
405 // Update pledge contribution amount when pledge checkboxes change
406 $("input[name^='pledge_amount']").on('change', function() {
407 var total = 0;
408 $("input[name^='pledge_amount']:checked").each(function() {
409 total += Number($(this).attr('amount'));
410 });
411 $("input[name^='price_']").val(total.toFixed(2));
412 });
413 });
414 {/literal}
415 </script>
416 {/if}
417 {include file="CRM/Form/validate.tpl"}