From 21c51e1d8055d598b444b134002eacea44664ffc Mon Sep 17 00:00:00 2001 From: Erik Hommel <hommel@ee-atwork.nl> Date: Wed, 19 Aug 2015 12:55:53 +0200 Subject: [PATCH] locally tested and approved fix #33 --- .../Contribution/Form/ThankYouDate.php | 55 +++++++++++++++++++ .../Contribution/ThankYouDate.php | 38 ++++++++++--- .../Contribution/Form/ThankYouDate.tpl | 38 +------------ xml/Menu/civirules.xml | 2 +- 4 files changed, 89 insertions(+), 44 deletions(-) create mode 100644 CRM/CivirulesActions/Contribution/Form/ThankYouDate.php diff --git a/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php b/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php new file mode 100644 index 0000000..1808df3 --- /dev/null +++ b/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php @@ -0,0 +1,55 @@ +<?php +/** + * Class for CiviRules Contribution Thank You Date Form + * + * @author Erik Hommel (CiviCooP) <erik.hommel@civicoop.org> + * @license AGPL-3.0 + */ + +class CRM_CivirulesActions_Contribution_Form_ThankYouDate extends CRM_CivirulesActions_Form_Form { + + /** + * Overridden parent method to build the form + * + * @access public + */ + public function buildQuickForm() { + $this->add('hidden', 'rule_action_id'); + $this->addDate('thank_you_date', ts('Thank You Date'), FALSE, array('formatType' => 'custom')); + $this->addButtons(array( + array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,), + array('type' => 'cancel', 'name' => ts('Cancel')))); + } + + /** + * Overridden parent method to set default values + * + * @return array $defaultValues + * @access public + */ + public function setDefaultValues() { + $defaultValues = parent::setDefaultValues(); + $defaultValues['rule_action_id'] = $this->ruleActionId; + if (!empty($this->ruleAction->action_params)) { + $data = unserialize($this->ruleAction->action_params); + } + if (empty($data['thank_you_date'])) { + list($defaultValues['thank_you_date']) = CRM_Utils_Date::setDateDefaults(date('Y-m-d')); + } else { + list($defaultValues['thank_you_date']) = CRM_Utils_Date::setDateDefaults($data['thank_you_date']); + } + return $defaultValues; + } + + /** + * Overridden parent method to process form data after submitting + * + * @access public + */ + public function postProcess() { + $data['thank_you_date'] = $this->_submitValues['thank_you_date']; + $this->ruleAction->action_params = serialize($data); + $this->ruleAction->save(); + parent::postProcess(); + } +} \ No newline at end of file diff --git a/CRM/CivirulesActions/Contribution/ThankYouDate.php b/CRM/CivirulesActions/Contribution/ThankYouDate.php index b315f24..81ee93b 100644 --- a/CRM/CivirulesActions/Contribution/ThankYouDate.php +++ b/CRM/CivirulesActions/Contribution/ThankYouDate.php @@ -14,21 +14,43 @@ class CRM_CivirulesActions_Contribution_ThankYouDate extends CRM_Civirules_Actio * */ public function processAction(CRM_Civirules_EventData_EventData $eventData) { - CRM_Core_Error::debug('eventData', $eventData); - exit(); - $contactId = $eventData->getContactId(); + $contribution = $eventData->getEntityData('Contribution'); + $actionParams = $this->getActionParameters(); + $params = array( + 'id' => $contribution['id'], + 'thankyou_date' => date('Ymd', strtotime($actionParams['thank_you_date'])) + ); + try { + civicrm_api3('Contribution', 'Create', $params); + } catch (CiviCRM_API3_Exception $ex) {} } + /** - * Method to return the url for additional form processing for action - * and return false if none is needed + * Returns a redirect url to extra data input from the user after adding a action + * + * Return false if you do not need extra data input * * @param int $ruleActionId - * @return bool + * @return bool|string * @access public */ public function getExtraDataInputUrl($ruleActionId) { - return FALSE; + return CRM_Utils_System::url('civicrm/civirule/form/action/contribution/thankyoudate', 'rule_action_id='.$ruleActionId); } - + /** + * Returns a user friendly text explaining the condition params + * e.g. 'Older than 65' + * + * @return string + * @access public + */ + public function userFriendlyConditionParams() { + $return = ''; + $params = $this->getActionParameters(); + if (!empty($params['thank_you_date'])) { + $return = 'Thank You Date for Contribution will be set to : '.date('d M Y', strtotime($params['thank_you_date'])); + } + return $return; + } } \ No newline at end of file diff --git a/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl b/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl index b4e20f6..f57f8ff 100644 --- a/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl +++ b/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl @@ -1,43 +1,11 @@ <h3>{$ruleActionHeader}</h3> -<div class="crm-block crm-form-block crm-civirule-rule_action-block-contact_subtype"> +<div class="crm-block crm-form-block crm-civirule-rule_action-block-contribution-thank-you-date"> <div class="crm-section"> - <div class="label">{$form.type.label}</div> - <div class="content">{$form.type.html}</div> - <div class="clear"></div> - </div> - <div class="crm-section sub_type-single"> - <div class="label">{$form.subtype.label}</div> - <div class="content">{$form.subtype.html}</div> - <div class="clear"></div> - </div> - <div class="crm-section sub_type-multiple" style="display: none;"> - <div class="label">{$form.subtypes.label}</div> - <div class="content">{$form.subtypes.html}</div> + <div class="label">{$form.thank_you_date.label}</div> + <div class="content">{include file="CRM/common/jcalendar.tpl" elementName=thank_you_date}</div> <div class="clear"></div> </div> </div> <div class="crm-submit-buttons"> {include file="CRM/common/formButtons.tpl" location="bottom"} </div> - -{literal} - <script type="text/javascript"> - cj(function() { - cj('select#type').change(triggerTypeChange); - - triggerTypeChange(); - }); - - function triggerTypeChange() { - cj('.sub_type-multiple').css('display', 'none'); - cj('.sub_type-single').css('display', 'none'); - var val = cj('#type').val(); - if (val == 0 ) { - cj('.sub_type-single').css('display', 'block'); - } else { - cj('.sub_type-multiple').css('display', 'block'); - } - } - </script> - -{/literal} \ No newline at end of file diff --git a/xml/Menu/civirules.xml b/xml/Menu/civirules.xml index af0fbe8..0dd0bd1 100755 --- a/xml/Menu/civirules.xml +++ b/xml/Menu/civirules.xml @@ -134,7 +134,7 @@ <access_arguments>administer CiviCRM</access_arguments> </item> <item> - <path>civicrm/civirule/form/action/thankyoudate</path> + <path>civicrm/civirule/form/action/contribution/thankyoudate</path> <page_callback>CRM_CivirulesActions_Contribution_Form_ThankYouDate</page_callback> <title>Contribution Thank You Date</title> <access_arguments>access CiviCRM</access_arguments> -- GitLab