From 41edd535ca2a82fbc1ce72d1f2b78ec34bb85a7a Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Thu, 20 Jan 2022 22:17:03 +0000 Subject: [PATCH] Generate button links in PHP instead of smarty for ContributionView form --- CRM/Contribute/Form/ContributionView.php | 74 ++++++++++++++++++- .../CRM/Contribute/Form/ContributionView.tpl | 56 -------------- 2 files changed, 73 insertions(+), 57 deletions(-) diff --git a/CRM/Contribute/Form/ContributionView.php b/CRM/Contribute/Form/ContributionView.php index b99534b979..5655cad3de 100644 --- a/CRM/Contribute/Form/ContributionView.php +++ b/CRM/Contribute/Form/ContributionView.php @@ -55,6 +55,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { } $this->assign('is_template', $values['is_template']); + $noACL = FALSE; if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && $this->_action & CRM_Core_Action::VIEW) { $financialTypeID = CRM_Contribute_PseudoConstant::financialType($values['financial_type_id']); CRM_Financial_BAO_FinancialType::checkPermissionedLineItems($id, 'view'); @@ -69,7 +70,7 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { } } elseif ($this->_action & CRM_Core_Action::VIEW) { - $this->assign('noACL', TRUE); + $noACL = TRUE; } CRM_Contribute_BAO_Contribution::resolveDefaults($values); @@ -230,6 +231,77 @@ class CRM_Contribute_Form_ContributionView extends CRM_Core_Form { $this->assign('component', 'contribution'); } $this->assignPaymentInfoBlock($id); + + $searchKey = NULL; + if ($this->controller->_key) { + $searchKey = $this->controller->_key; + } + if (( + CRM_Core_Permission::check('edit_contributions') + && CRM_Core_Permission::check('edit contributions of type ' . $financialTypeID) + && !empty($canEdit) + ) || (CRM_Core_Permission::check('edit contributions') && $noACL)) { + $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=update&context={$context}"; + if (($context === 'fulltext' || $context === 'search') && $searchKey) { + $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=update&context={$context}&key={$searchKey}"; + } + $linkButtons[] = [ + 'title' => ts('Edit'), + 'url' => 'civicrm/contact/view/contribution', + 'qs' => $urlParams, + 'icon' => 'fa-pencil', + 'accesskey' => 'e', + ]; + if (!empty($paymentButtonName)) { + $linkButtons[] = [ + 'title' => $paymentButtonName, + 'url' => 'civicrm/payment', + 'qs' => "action=add&reset=1&component=contribution&id={$id}&cid={$values['contact_id']}", + 'icon' => 'fa-plus-circle', + ]; + } + } + + if (( + CRM_Core_Permission::check('delete in CiviContribute') + && CRM_Core_Permission::check('delete contributions of type ' . CRM_Contribute_PseudoConstant::financialType($financialTypeID)) + && !empty($canDelete) + ) || (CRM_Core_Permission::check('delete in CiviContribute') && $noACL)) { + $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=delete&context={$context}"; + if (($context === 'fulltext' || $context === 'search') && $searchKey) { + $urlParams = "reset=1&id={$id}&cid={$values['contact_id']}&action=delete&context={$context}&key={$searchKey}"; + } + $linkButtons[] = [ + 'title' => ts('Delete'), + 'url' => 'civicrm/contact/view/contribution', + 'qs' => $urlParams, + 'icon' => 'fa-trash', + ]; + } + + $pdfUrlParams = "reset=1&id={$id}&cid={$values['contact_id']}"; + $emailUrlParams = "reset=1&id={$id}&cid={$values['contact_id']}&select=email"; + if ($invoicing && empty($is_template)) { + if (($values['contribution_status'] != 'Refunded') && ($values['contribution_status'] != 'Cancelled')) { + $invoiceButtonText = ts('Download Invoice'); + } + else { + $invoiceButtonText = ts('Download Invoice and Credit Note'); + } + $linkButtons[] = [ + 'title' => $invoiceButtonText, + 'url' => 'civicrm/contribute/invoice', + 'qs' => $pdfUrlParams, + 'icon' => 'fa-download', + ]; + $linkButtons[] = [ + 'title' => ts('Email Invoice'), + 'url' => 'civicrm/contribute/invoice/email', + 'qs' => $emailUrlParams, + 'icon' => 'fa-paper-plane', + ]; + } + $this->assign('linkButtons', $linkButtons ?? []); } /** diff --git a/templates/CRM/Contribute/Form/ContributionView.tpl b/templates/CRM/Contribute/Form/ContributionView.tpl index 751cb14386..5b7b3b4fbd 100644 --- a/templates/CRM/Contribute/Form/ContributionView.tpl +++ b/templates/CRM/Contribute/Form/ContributionView.tpl @@ -10,44 +10,6 @@
@@ -328,24 +290,6 @@ {/if}
- {if (call_user_func(array('CRM_Core_Permission','check'), 'edit contributions') && call_user_func(array('CRM_Core_Permission', 'check'), "edit contributions of type $financial_type") && $canEdit) || - (call_user_func(array('CRM_Core_Permission','check'), 'edit contributions') && $noACL)} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context"} - {if ( $context eq 'fulltext' || $context eq 'search' ) && $searchKey} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&key=$searchKey"} - {/if} - {ts}Edit{/ts} - {if $paymentButtonName} - {ts}{$paymentButtonName}{/ts} - {/if} - {/if} - {if (call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviContribute') && call_user_func(array('CRM_Core_Permission', 'check'), "delete contributions of type $financial_type") && $canDelete) || (call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviContribute') && $noACL)} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context"} - {if ( $context eq 'fulltext' || $context eq 'search' ) && $searchKey} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&key=$searchKey"} - {/if} - {ts}Delete{/ts} - {/if} {include file="CRM/common/formButtons.tpl" location="bottom"}
-- 2.25.1