diff --git a/CRM/Civirules/Form/Rule.php b/CRM/Civirules/Form/Rule.php index 8d3ed3d4472dcb9acf9013609c02f9d244d44bc3..8f7fb42612556599fd5536fe9dccd3ef0cb6e535 100755 --- a/CRM/Civirules/Form/Rule.php +++ b/CRM/Civirules/Form/Rule.php @@ -31,8 +31,10 @@ class CRM_Civirules_Form_Rule extends CRM_Core_Form { */ function preProcess() { $this->ruleId = CRM_Utils_Request::retrieve('id', 'Integer'); - $ruleConditionAddUrl = CRM_Utils_System::url('civicrm/civirule/form/rule_condition', 'action=add&rid='.$this->ruleId, TRUE); + $ruleConditionAddUrl = CRM_Utils_System::url('civicrm/civirule/form/rule_condition', 'reset=1&action=add&rid='.$this->ruleId, TRUE); + $ruleActionAddUrl = CRM_Utils_System::url('civicrm/civirule/form/rule_action', 'reset=1&action=add&rid='.$this->ruleId, TRUE); $this->assign('ruleConditionAddUrl', $ruleConditionAddUrl); + $this->assign('ruleActionAddUrl', $ruleActionAddUrl); $session = CRM_Core_Session::singleton(); switch($this->_action) { case CRM_Core_Action::DELETE: @@ -282,7 +284,7 @@ class CRM_Civirules_Form_Rule extends CRM_Core_Form { $conditionActions = array(); $deleteUrl = CRM_Utils_System::url('civicrm/civirule/form/rulecondition', 'reset=1&action=delete&id='. $ruleConditionId); - $conditionActions[] = '<a class="action-item" title="Delete" href="'.$deleteUrl.'">Delete</a>'; + $conditionActions[] = '<a class="action-item" title="Delete" href="'.$deleteUrl.'">Remove</a>'; return $conditionActions; } @@ -295,12 +297,9 @@ class CRM_Civirules_Form_Rule extends CRM_Core_Form { */ protected function setRuleActionActions($ruleActionId) { $actionActions = array(); - $updateUrl = CRM_Utils_System::url('civicrm/civirule/form/ruleaction', 'reset=1&action=update&id='. - $ruleActionId); $deleteUrl = CRM_Utils_System::url('civicrm/civirule/form/ruleaction', 'reset=1&action=delete&id='. $ruleActionId); - $actionActions[] = '<a class="action-item" title="Update" href="'.$updateUrl.'">Edit</a>'; - $actionActions[] = '<a class="action-item" title="Delete" href="'.$deleteUrl.'">Delete</a>'; + $actionActions[] = '<a class="action-item" title="Delete" href="'.$deleteUrl.'">Remove</a>'; return $actionActions; } diff --git a/CRM/Civirules/Form/RuleAction.php b/CRM/Civirules/Form/RuleAction.php new file mode 100644 index 0000000000000000000000000000000000000000..d1917d2f125fceb23f8a70a172768f9b42e37a47 --- /dev/null +++ b/CRM/Civirules/Form/RuleAction.php @@ -0,0 +1,85 @@ +<?php +/** + * Form controller class to manage CiviRule/RuleAction + * + * @see http://wiki.civicrm.org/confluence/display/CRMDOC43/QuickForm+Reference + * + * @author Erik Hommel (CiviCooP) <erik.hommel@civicoop.org> + * @license http://www.gnu.org/licenses/agpl-3.0.html + */ +require_once 'CRM/Core/Form.php'; + +class CRM_Civirules_Form_RuleAction extends CRM_Core_Form { + + protected $ruleId = NULL; + + /** + * Function to buildQuickForm (extends parent function) + * + * @access public + */ + function buildQuickForm() { + $this->setFormTitle(); + $this->createFormElements(); + parent::buildQuickForm(); + } + + /** + * Function to perform processing before displaying form (overrides parent function) + * + * @access public + */ + function preProcess() { + $this->ruleId = CRM_Utils_Request::retrieve('rid', 'Integer'); + } + + /** + * Function to perform post save processing (extends parent function) + * + * @access public + */ + function postProcess() { + $session = CRM_Core_Session::singleton(); + $saveParams = array( + 'rule_id' => $this->_submitValues['rule_id'], + 'action_id' => $this->_submitValues['rule_action_select'] + ); + CRM_Civirules_BAO_RuleAction::add($saveParams); + $redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$this->_submitValues['rule_id'], TRUE); + $session->setStatus('Action added to CiviRule '.CRM_Civirules_BAO_Rule::getRuleLabelWithId($this->_submitValues['rule_id']), + 'Action added', 'success'); + CRM_Utils_System::redirect($redirectUrl); + } + + /** + * Function to add the form elements + * + * @access protected + */ + protected function createFormElements() { + $this->add('hidden', 'rule_id'); + $actionList = array_merge(array(' - select - '), CRM_Civirules_Utils::buildActionList()); + asort($actionList); + $this->add('select', 'rule_action_select', ts('Select Action'), $actionList, TRUE); + + $this->addButtons(array( + array('type' => 'next', 'name' => ts('Save'), 'isDefault' => TRUE,), + array('type' => 'cancel', 'name' => ts('Cancel')))); + } + + public function setDefaultValues() { + $defaults['rule_id'] = $this->ruleId; + return $defaults; + } + + /** + * Function to set the form title based on action and data coming in + * + * @access protected + */ + protected function setFormTitle() { + $title = 'CiviRules Add Action'; + $this->assign('ruleActionHeader', 'Add Action to CiviRule '.CRM_Civirules_BAO_Rule::getRuleLabelWithId($this->ruleId)); + CRM_Utils_System::setTitle($title); + } +} diff --git a/CRM/Civirules/Form/RuleCondition.php b/CRM/Civirules/Form/RuleCondition.php index 7b1fca9f7c5b6bba9192a97effc62ade760f5d9e..4b8e146485c5eef08ccfb450690dd6b9fb3bc9bf 100755 --- a/CRM/Civirules/Form/RuleCondition.php +++ b/CRM/Civirules/Form/RuleCondition.php @@ -12,7 +12,6 @@ require_once 'CRM/Core/Form.php'; class CRM_Civirules_Form_RuleCondition extends CRM_Core_Form { protected $ruleId = NULL; - protected $redirectUrl = NULL; /** * Function to buildQuickForm (extends parent function) @@ -49,9 +48,10 @@ class CRM_Civirules_Form_RuleCondition extends CRM_Core_Form { $saveParams['condition_link'] = $this->_submitValues['rule_condition_link_select']; } CRM_Civirules_BAO_RuleCondition::add($saveParams); - $this->redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$this->_submitValues['rule_id'], TRUE); - $session->setStatus('Condition added to CiviRule', 'Condition added', 'success'); - CRM_Utils_System::redirect($this->redirectUrl); + $redirectUrl = CRM_Utils_System::url('civicrm/civirule/form/rule', 'action=update&id='.$this->_submitValues['rule_id'], TRUE); + $session->setStatus('Condition added to CiviRule '.CRM_Civirules_BAO_Rule::getRuleLabelWithId($this->_submitValues['rule_id']), + 'Condition added', 'success'); + CRM_Utils_System::redirect($redirectUrl); } /** diff --git a/CRM/Civirules/Utils.php b/CRM/Civirules/Utils.php index 9ad552c01829a29d4704929acb7cbe1f121b9ebe..0f18b52b9103f69200a914efcc5c119094c280d6 100755 --- a/CRM/Civirules/Utils.php +++ b/CRM/Civirules/Utils.php @@ -91,5 +91,21 @@ class CRM_Civirules_Utils { } return $conditionList; } + + /** + * Function to build the action list + * + * @return array $actionList + * @access public + * @static + */ + public static function buildActionList() { + $actionList = array(); + $actions = CRM_Civirules_BAO_Action::getValues(array()); + foreach ($actions as $actionId => $action) { + $actionList[$actionId] = $action['label']; + } + return $actionList; + } } diff --git a/templates/CRM/Civirules/Form/RuleAction.tpl b/templates/CRM/Civirules/Form/RuleAction.tpl new file mode 100644 index 0000000000000000000000000000000000000000..829a83a3974ce1775faefb573ba69d10f68ee139 --- /dev/null +++ b/templates/CRM/Civirules/Form/RuleAction.tpl @@ -0,0 +1,12 @@ +{* block for rule condition data *} +<h3>{$ruleActionHeader}</h3> +<div class="crm-block crm-form-block crm-civirule-rule_condition-block"> + <div class="crm-section"> + <div class="label">{$form.rule_action_select.label}</div> + <div class="content">{$form.rule_action_select.html}</div> + <div class="clear"></div> + </div> +</div> +<div class="crm-submit-buttons"> + {include file="CRM/common/formButtons.tpl" location="bottom"} +</div> diff --git a/templates/CRM/Civirules/Form/RuleBlocks/ActionBlock.tpl b/templates/CRM/Civirules/Form/RuleBlocks/ActionBlock.tpl index 7bddbe9f33ba6d25daf76a195a81deacfdd3b203..ed4ef47d0593a2ae2cec6ca03c9b93c7b920a7d3 100755 --- a/templates/CRM/Civirules/Form/RuleBlocks/ActionBlock.tpl +++ b/templates/CRM/Civirules/Form/RuleBlocks/ActionBlock.tpl @@ -7,7 +7,7 @@ <table id="civirule-table" class="display"> <thead> <tr> - <th>{ts}Description{/ts}</th> + <th>{ts}Name{/ts}</th> <th>{ts}Extra parameters{/ts}</th> <th id="nosort"> </th> </tr> @@ -16,9 +16,9 @@ {assign var="row_class" value="odd-row"} {foreach from=$ruleActions key=action_id item=ruleAction} <tr id="row1" class={$row_class}> - <td>{$ruleAction.label} {$ruleAction.action_value}</td> - {if !empty($ruleAction.extra_params)} - <td>{$ruleAction.extra_params}</td> + <td>{$ruleAction.label}</td> + {if !empty($ruleAction.action_params)} + <td>{$ruleAction.action_params}</td> {else} <td> </td> {/if} @@ -40,11 +40,8 @@ </table> </div> </div> - {if $action eq 1} - <div class="crm-submit-buttons"> - <span class="crm-button crm-button-type-next crm-button_qf_Rule_next"> - <input id="_qf_Rule_next-bottom" class="validate form-submit" type="submit" value="Add Action" name="_qf_Rule_next"> - </span> - </div> - {/if} + <div class="crm-submit-buttons"> + <a class="add button" title="Add Action" href="{$ruleActionAddUrl}"> + <span><div class="icon add-icon"></div>Add Action</span></a> + </div> </div> diff --git a/xml/Menu/civirules.xml b/xml/Menu/civirules.xml index 7a9446418253b634e03bb363e84c6dc0821889d6..e12fb08e7592aafb015f79e8e0b174d6960bfe0b 100755 --- a/xml/Menu/civirules.xml +++ b/xml/Menu/civirules.xml @@ -18,4 +18,10 @@ <title>RuleCondition</title> <access_arguments>access CiviCRM</access_arguments> </item> + <item> + <path>civicrm/civirule/form/rule_action</path> + <page_callback>CRM_Civirules_Form_RuleAction</page_callback> + <title>RuleAction</title> + <access_arguments>access CiviCRM</access_arguments> + </item> </menu>