diff --git a/app/Http/Controllers/RuleController.php b/app/Http/Controllers/RuleController.php index f6410c7894..f378bc448d 100644 --- a/app/Http/Controllers/RuleController.php +++ b/app/Http/Controllers/RuleController.php @@ -98,6 +98,15 @@ class RuleController extends Controller } unset($key, $ruleTriggers); + // array of valid values for actions + $ruleActions = array_keys(Config::get('firefly.rule-actions')); + $possibleActions = []; + foreach ($ruleActions as $key) { + $possibleActions[$key] = trans('firefly.rule_action_' . $key . '_choice'); + } + unset($key, $ruleActions); + + // has old input? if (Input::old()) { // process old triggers. @@ -107,7 +116,7 @@ class RuleController extends Controller $triggerCount++; $oldTrigger = $entry; $oldValue = Input::old('rule-trigger-value')[$index]; - $oldChecked = isset(Input::old('rule-action-value')[$index]) ? true : false; + $oldChecked = isset(Input::old('rule-trigger-stop')[$index]) ? true : false; $oldTriggers[] = view( 'rules.partials.trigger', [ @@ -120,12 +129,28 @@ class RuleController extends Controller )->render(); $newIndex++; } -// echo '
';
-// var_dump(Input::old());
-// var_dump($oldTriggers);
-// exit;
- }
+ // process old actions
+ $newIndex = 0;
+ foreach (Input::old('rule-action') as $index => $entry) {
+ $count = ($newIndex + 1);
+ $actionCount++;
+ $oldAction = $entry;
+ $oldValue = Input::old('rule-action-value')[$index];
+ $oldChecked = isset(Input::old('rule-action-stop')[$index]) ? true : false;
+ $oldActions[] = view(
+ 'rules.partials.action',
+ [
+ 'oldTrigger' => $oldAction,
+ 'oldValue' => $oldValue,
+ 'oldChecked' => $oldChecked,
+ 'actions' => $possibleActions,
+ 'count' => $count
+ ]
+ )->render();
+ $newIndex++;
+ }
+ }
$subTitleIcon = 'fa-clone';
$subTitle = trans('firefly.make_new_rule', ['title' => $ruleGroup->title]);
@@ -143,9 +168,11 @@ class RuleController extends Controller
}
Session::forget('rules.rule.create.fromStore');
Session::flash('gaEventCategory', 'rules');
- Session::flash('gaEventAction', 'create-rule-group');
+ Session::flash('gaEventAction', 'create-rule');
- return view('rules.rule.create', compact('subTitleIcon','oldTriggers', 'triggerCount', 'actionCount', 'ruleGroup', 'subTitle', 'journalTriggers'));
+ return view(
+ 'rules.rule.create', compact('subTitleIcon', 'oldTriggers', 'oldActions', 'triggerCount', 'actionCount', 'ruleGroup', 'subTitle', 'journalTriggers')
+ );
}
/**
diff --git a/app/Http/Requests/RuleFormRequest.php b/app/Http/Requests/RuleFormRequest.php
index 521ecf3d43..e8f18055ab 100644
--- a/app/Http/Requests/RuleFormRequest.php
+++ b/app/Http/Requests/RuleFormRequest.php
@@ -38,21 +38,26 @@ class RuleFormRequest extends Request
{
$validTriggers = array_keys(Config::get('firefly.rule-triggers'));
+ $validActions = array_keys(Config::get('firefly.rule-actions'));
+
+ // some actions require text:
+ $contextActions = Config::get('firefly.rule-actions-text');
$titleRule = 'required|between:1,100|uniqueObjectForUser:rule_groups,title';
if (RuleGroup::find(Input::get('id'))) {
$titleRule = 'required|between:1,100|uniqueObjectForUser:rule_groups,title,' . intval(Input::get('id'));
}
- return [
- 'title' => $titleRule,
- 'description' => 'between:1,5000',
- 'stop_processing' => 'boolean',
- 'trigger' => 'required|in:store-journal,update-journal',
- 'rule-trigger.*' => 'required|in:' . join(',', $validTriggers),
- 'rule-trigger-value.*' => 'required|min:1'
-
-
+ $rules = [
+ 'title' => $titleRule,
+ 'description' => 'between:1,5000',
+ 'stop_processing' => 'boolean',
+ 'trigger' => 'required|in:store-journal,update-journal',
+ 'rule-trigger.*' => 'required|in:' . join(',', $validTriggers),
+ 'rule-trigger-value.*' => 'required|min:1',
+ 'rule-action.*' => 'required|in:' . join(',', $validActions),
+ 'rule-action-value.*' => 'required_if:rule-action.*,' . join(',', $contextActions)
];
+
}
}
diff --git a/config/firefly.php b/config/firefly.php
index ddef1a0805..952f9463e6 100644
--- a/config/firefly.php
+++ b/config/firefly.php
@@ -170,7 +170,7 @@ return [
'end_date' => 'FireflyIII\Support\Binder\Date'
],
- 'rule-triggers' => [
+ 'rule-triggers' => [
'user_action' => 'FireflyIII\Rules\Triggers\UserAction',
'from_account_starts' => 'FireflyIII\Rules\Triggers\FromAccountStarts',
'from_account_ends' => 'FireflyIII\Rules\Triggers\FromAccountEnds',
@@ -189,7 +189,7 @@ return [
'description_contains' => 'FireflyIII\Rules\Triggers\DescriptionContains',
'description_is' => 'FireflyIII\Rules\Triggers\DescriptionIs',
],
- 'rule-actions' => [
+ 'rule-actions' => [
'set_category' => 'FireflyIII\Rules\Actions\SetCategory',
'clear_category' => 'FireflyIII\Rules\Actions\ClearCategory',
'set_budget' => 'FireflyIII\Rules\Actions\SetBudget',
@@ -201,5 +201,15 @@ return [
'append_description' => 'FireflyIII\Rules\Actions\AppendDescription',
'prepend_description' => 'FireflyIII\Rules\Actions\PrependDescription',
],
+ // all rule actions that require text input:
+ 'rule-actions-text' => [
+ 'set_category',
+ 'set_budget',
+ 'add_tag',
+ 'remove_tag',
+ 'set_description',
+ 'append_description',
+ 'prepend_description',
+ ]
];
diff --git a/public/js/rules/create.js b/public/js/rules/create.js
index 9182c31001..5fe38cb550 100644
--- a/public/js/rules/create.js
+++ b/public/js/rules/create.js
@@ -14,8 +14,11 @@ $(function () {
if (triggerCount == 0) {
addNewTrigger();
}
+ if (actionCount == 0) {
+ addNewAction();
+ }
+
- addNewAction();
$('.add_rule_trigger').click(function () {
addNewTrigger();
diff --git a/resources/views/rules/partials/action.twig b/resources/views/rules/partials/action.twig
index edb4d77bf5..e7ec792c79 100644
--- a/resources/views/rules/partials/action.twig
+++ b/resources/views/rules/partials/action.twig
@@ -3,24 +3,37 @@
- {% if errors.has('XXX') %}
+ {% if errors.has('rule-action.'~count) %}
- {{ errors.first('xxxx') }}
+ {{ errors.first('rule-action.'~count) }}
{% endif %}
-
+
+
+ {% if errors.has(('rule-action-value.'~count)) %}
+
+ {{ errors.first('rule-action-value.'~count) }}
+
+ {% endif %}
diff --git a/resources/views/rules/rule/create.twig b/resources/views/rules/rule/create.twig
index 5a35d69925..8c907753f4 100644
--- a/resources/views/rules/rule/create.twig
+++ b/resources/views/rules/rule/create.twig
@@ -84,7 +84,9 @@
-
+ {% for action in oldActions %}
+ {{ action|raw }}
+ {% endfor %}