diff --git a/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php b/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php index 1808df3f3613265f177c97f29886b4aa7d4123dc..5483b3fc2c1551ebbfedc997575e0a1f1c1f9201 100644 --- a/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php +++ b/CRM/CivirulesActions/Contribution/Form/ThankYouDate.php @@ -15,6 +15,9 @@ class CRM_CivirulesActions_Contribution_Form_ThankYouDate extends CRM_CivirulesA */ public function buildQuickForm() { $this->add('hidden', 'rule_action_id'); + $radioOptions = array('Date of Action Execution', 'xxx days after Action Execution', 'Specific Date'); + $this->addRadio('thank_you_radio', ts('Thank You Date will be set to : '), $radioOptions); + $this->add('text', 'number_of_days', ts('Number of Days after Action Execution')); $this->addDate('thank_you_date', ts('Thank You Date'), FALSE, array('formatType' => 'custom')); $this->addButtons(array( array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,), @@ -33,6 +36,14 @@ class CRM_CivirulesActions_Contribution_Form_ThankYouDate extends CRM_CivirulesA if (!empty($this->ruleAction->action_params)) { $data = unserialize($this->ruleAction->action_params); } + if (!empty($data['number_of_days'])) { + $defaultValues['number_of_days'] = $data['number_of_days']; + } + if (empty($data['thank_you_radio'])) { + $defaultValues['thank_you_radio'] = 0; + } else { + $defaultValues['thank_you_radio'] = $data['thank_you_radio']; + } if (empty($data['thank_you_date'])) { list($defaultValues['thank_you_date']) = CRM_Utils_Date::setDateDefaults(date('Y-m-d')); } else { @@ -47,7 +58,17 @@ class CRM_CivirulesActions_Contribution_Form_ThankYouDate extends CRM_CivirulesA * @access public */ public function postProcess() { - $data['thank_you_date'] = $this->_submitValues['thank_you_date']; + $data['thank_you_radio'] = $this->_submitValues['thank_you_radio']; + if ($this->_submitValues['thank_you_radio'] == 2) { + $data['thank_you_date'] = $this->_submitValues['thank_you_date']; + } else { + $data['thank_you_date'] = null; + } + if ($this->_submitValues['thank_you_radio'] == 1) { + $data['number_of_days'] = $this->_submitValues['number_of_days']; + } else { + $data['number_of_days'] = 0; + } $this->ruleAction->action_params = serialize($data); $this->ruleAction->save(); parent::postProcess(); diff --git a/CRM/CivirulesActions/Contribution/ThankYouDate.php b/CRM/CivirulesActions/Contribution/ThankYouDate.php index 81ee93badcc54e4e85c53de1e597bd1e50725a15..516cb3ebd7f8520a43baff9b6a6dd382d6875d8c 100644 --- a/CRM/CivirulesActions/Contribution/ThankYouDate.php +++ b/CRM/CivirulesActions/Contribution/ThankYouDate.php @@ -16,9 +16,23 @@ class CRM_CivirulesActions_Contribution_ThankYouDate extends CRM_Civirules_Actio public function processAction(CRM_Civirules_EventData_EventData $eventData) { $contribution = $eventData->getEntityData('Contribution'); $actionParams = $this->getActionParameters(); + switch ($actionParams['thank_you_radio']) { + case 1: + if (!empty($actionParams['number_of_days'])) { + $thankYouDate = new DateTime(); + $thankYouDate->modify('+'.$actionParams['number_of_days']. ' day'); + } + break; + case 2: + $thankYouDate = new DateTime($actionParams['thank_you_date']); + break; + default: + $thankYouDate = new DateTime(); + break; + } $params = array( 'id' => $contribution['id'], - 'thankyou_date' => date('Ymd', strtotime($actionParams['thank_you_date'])) + 'thankyou_date' => $thankYouDate->format('Ymd') ); try { civicrm_api3('Contribution', 'Create', $params); @@ -46,10 +60,24 @@ class CRM_CivirulesActions_Contribution_ThankYouDate extends CRM_Civirules_Actio * @access public */ public function userFriendlyConditionParams() { - $return = ''; + $return = ""; + $dateString = ""; $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'])); + if (isset($params['thank_you_radio'])) { + switch ($params['thank_you_radio']) { + case 0: + $dateString = "date action executes"; + break; + case 1: + $dateString = $params['number_of_days']." days after action executes"; + break; + case 2: + $dateString = date('d M Y', strtotime($params['thank_you_date'])); + break; + } + } + if (!empty($dateString)) { + $return = 'Thank You Date for Contribution will be set to : ' . $dateString; } return $return; } diff --git a/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl b/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl index f57f8ff41f3c3bf2a451fc561458e53023411b43..6b5045889f40fc332197472f4f35cb6a150e2ff5 100644 --- a/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl +++ b/templates/CRM/CivirulesActions/Contribution/Form/ThankYouDate.tpl @@ -1,11 +1,53 @@ <h3>{$ruleActionHeader}</h3> <div class="crm-block crm-form-block crm-civirule-rule_action-block-contribution-thank-you-date"> - <div class="crm-section"> - <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 id="thank-you-radio-block" class="crm-section"> + <div class="label">{$form.thank_you_radio.label}</div> + <div class="content">{$form.thank_you_radio.html}</div> + <div class="clear"></div> + </div> + <div id="number_of_days-block" class="crm-section"> + <div class="label">{$form.number_of_days.label}</div> + <div class="content">{$form.number_of_days.html}</div> + <div class="clear"></div> + </div> + <div id ="thank_you_date-block" class="crm-section"> + <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"} + {include file="CRM/common/formButtons.tpl" location="bottom"} </div> +{literal} + <script type="text/javascript"> + cj(function($) { + $("input[type=radio][checked]").each(function() { + if ($('#CIVICRM_QFID_0_thank_you_radio').prop('checked')) { + $('#number_of_days-block').hide(); + $('#thank_you_date-block').hide(); + } + if ($('#CIVICRM_QFID_1_thank_you_radio').prop('checked')) { + $('#number_of_days-block').show(); + $('#thank_you_date-block').hide(); + } + if ($('#CIVICRM_QFID_2_thank_you_radio').prop('checked')) { + $('#number_of_days-block').hide(); + $('#thank_you_date-block').show(); + } + }); + $('#CIVICRM_QFID_0_thank_you_radio').click(function() { + $('#number_of_days-block').hide(); + $('#thank_you_date-block').hide(); + }) + $('#CIVICRM_QFID_1_thank_you_radio').click(function() { + $('#number_of_days-block').show(); + $('#thank_you_date-block').hide(); + }) + $('#CIVICRM_QFID_2_thank_you_radio').click(function() { + $('#number_of_days-block').hide(); + $('#thank_you_date-block').show(); + }) + }); + </script> +{/literal} \ No newline at end of file