| 1 | {* |
| 2 | +--------------------------------------------------------------------+ |
| 3 | | CiviCRM version 4.5 | |
| 4 | +--------------------------------------------------------------------+ |
| 5 | | Copyright CiviCRM LLC (c) 2004-2014 | |
| 6 | +--------------------------------------------------------------------+ |
| 7 | | This file is a part of CiviCRM. | |
| 8 | | | |
| 9 | | CiviCRM is free software; you can copy, modify, and distribute it | |
| 10 | | under the terms of the GNU Affero General Public License | |
| 11 | | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | |
| 12 | | | |
| 13 | | CiviCRM is distributed in the hope that it will be useful, but | |
| 14 | | WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| 16 | | See the GNU Affero General Public License for more details. | |
| 17 | | | |
| 18 | | You should have received a copy of the GNU Affero General Public | |
| 19 | | License and the CiviCRM Licensing Exception along | |
| 20 | | with this program; if not, contact CiviCRM LLC | |
| 21 | | at info[AT]civicrm[DOT]org. If you have questions about the | |
| 22 | | GNU Affero General Public License or the licensing of CiviCRM, | |
| 23 | | see the CiviCRM license FAQ at http://civicrm.org/licensing | |
| 24 | +--------------------------------------------------------------------+ |
| 25 | *} |
| 26 | {* template for adding form elements for soft credit form*} |
| 27 | {if $honor_block_is_active} |
| 28 | {crmRegion name="contribution-soft-credit-block"} |
| 29 | <legend>{$honor_block_title}</legend> |
| 30 | <div class="crm-section honor_block_text-section"> |
| 31 | {$honor_block_text} |
| 32 | </div> |
| 33 | {if $form.soft_credit_type_id.html} |
| 34 | <div class="crm-section {$form.soft_credit_type_id.name}-section"> |
| 35 | <div class="content" > |
| 36 | {$form.soft_credit_type_id.html} |
| 37 | <div class="description">{ts}Select an option to reveal honoree information fields.{/ts}</div> |
| 38 | </div> |
| 39 | </div> |
| 40 | {/if} |
| 41 | {/crmRegion} |
| 42 | {else} |
| 43 | <table class="form-layout-compressed crm-soft-credit-block"> |
| 44 | {section name='i' start=1 loop=$rowCount} |
| 45 | {assign var='rowNumber' value=$smarty.section.i.index} |
| 46 | <tr id="soft-credit-row-{$rowNumber}" |
| 47 | class="crm-contribution-form-block-soft_credit_to {if $rowNumber gte $showSoftCreditRow}hiddenElement{/if}"> |
| 48 | <td> |
| 49 | {$form.soft_credit_contact_id.$rowNumber.label} {$form.soft_credit_contact_id.$rowNumber.html|crmAddClass:twenty} |
| 50 | </td> |
| 51 | <td> |
| 52 | {$form.soft_credit_amount.$rowNumber.label} {$form.soft_credit_amount.$rowNumber.html|crmAddClass:eight} |
| 53 | </td> |
| 54 | <td> |
| 55 | {$form.soft_credit_type.$rowNumber.label} {$form.soft_credit_type.$rowNumber.html} |
| 56 | <a class="crm-hover-button soft-credit-delete-link" href="#"><span class="icon delete-icon"></span></a> |
| 57 | </td> |
| 58 | </tr> |
| 59 | {/section} |
| 60 | <tr> |
| 61 | <td> |
| 62 | <a href="#" class="crm-hover-button" id="addMoreSoftCredit"><span class="icon add-icon"></span> {ts}another soft credit{/ts}</a> |
| 63 | </td> |
| 64 | </tr> |
| 65 | </table> |
| 66 | {/if} |
| 67 | {literal} |
| 68 | <script type="text/javascript"> |
| 69 | CRM.$(function($) { |
| 70 | var $form = $("form.{/literal}{$form.formClass}{literal}"); |
| 71 | $('#showPCP, #showSoftCredit').click(function(){ |
| 72 | return showHideSoftCreditAndPCP(); |
| 73 | }); |
| 74 | |
| 75 | function showHideSoftCreditAndPCP() { |
| 76 | $('.crm-contribution-pcp-block').toggle(); |
| 77 | $('.crm-contribution-pcp-block-link').toggle(); |
| 78 | $('.crm-contribution-form-block-soft_credit_to').toggle(); |
| 79 | return false; |
| 80 | } |
| 81 | |
| 82 | $('#addMoreSoftCredit').on('click', function () { |
| 83 | if ($('tr.crm-contribution-form-block-soft_credit_to').hasClass("hiddenElement")) { |
| 84 | $('.crm-contribution-form-block-soft_credit_to tr.hiddenElement').filter(':first').show().removeClass('hiddenElement'); |
| 85 | } |
| 86 | if ($('.crm-soft-credit-block tr.hiddenElement').length < 1) { |
| 87 | $('#addMoreSoftCredit').hide(); |
| 88 | } |
| 89 | return false; |
| 90 | }); |
| 91 | |
| 92 | // FIXME: This could be much simpler as an entityRef field but pcp doesn't have a searchable api :( |
| 93 | var pcpURL = CRM.url('civicrm/ajax/rest', 'className=CRM_Contact_Page_AJAX&fnName=getPCPList&json=1&context=contact&reset=1'); |
| 94 | $('#pcp_made_through_id').crmSelect2({ |
| 95 | placeholder: {/literal}'{ts escape="js"}- select -{/ts}'{literal}, |
| 96 | minimumInputLength: 1, |
| 97 | ajax: { |
| 98 | url: pcpURL, |
| 99 | data: function(term) { |
| 100 | return {term: term}; |
| 101 | }, |
| 102 | results: function(response) { |
| 103 | return {results: response}; |
| 104 | } |
| 105 | }, |
| 106 | initSelection: function(el, callback) { |
| 107 | callback({id: $(el).val(), text: $('[name=pcp_made_through]', $form).val()}); |
| 108 | } |
| 109 | }) |
| 110 | // This is just a cheap trick to store the name in case of a formrule error |
| 111 | .on('change', function() { |
| 112 | $('[name=pcp_made_through]', $form).val($(this).select2('data').text || ''); |
| 113 | }); |
| 114 | |
| 115 | $('.crm-soft-credit-block tr span').each(function () { |
| 116 | if ($(this).hasClass('crm-error')) { |
| 117 | $(this).parents('tr').show(); |
| 118 | } |
| 119 | }); |
| 120 | |
| 121 | $('.soft-credit-delete-link').click(function(){ |
| 122 | $(this).closest('tr').find('input').val(''); |
| 123 | $(this).closest('tr').addClass('hiddenElement').removeAttr('style'); |
| 124 | $('#addMoreSoftCredit').show(); |
| 125 | return false; |
| 126 | }); |
| 127 | |
| 128 | $('input[name^="soft_credit_contact["]').change(function(){ |
| 129 | var rowNum = $(this).prop('id').replace('soft_credit_contact_',''); |
| 130 | var totalAmount = $('#total_amount').val(); |
| 131 | //assign total amount as default soft credit amount |
| 132 | $('#soft_credit_amount_'+ rowNum).val(totalAmount); |
| 133 | var thousandMarker = {/literal}{$config->monetaryThousandSeparator|json_encode}{literal}; |
| 134 | $('#soft_credit_type_'+ rowNum).val($('#sct_default_id').val()); |
| 135 | totalAmount = Number(totalAmount.replace(thousandMarker,'')); |
| 136 | if (rowNum > 1) { |
| 137 | var scAmount = Number($('#soft_credit_amount_'+ (rowNum - 1)).val().replace(thousandMarker,'')); |
| 138 | if (scAmount < totalAmount) { |
| 139 | //if user enters less than the total amount and adds another soft credit row, |
| 140 | //the soft credit amount default will be left empty |
| 141 | $('#soft_credit_amount_'+ rowNum).val(''); |
| 142 | } |
| 143 | } |
| 144 | }); |
| 145 | |
| 146 | }); |
| 147 | </script> |
| 148 | {/literal} |