mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Some more rule things before I merge a change to the CSV importer.
This commit is contained in:
parent
42203ba872
commit
9703439a4c
@ -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 '<pre>';
|
||||
// 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')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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)
|
||||
];
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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',
|
||||
]
|
||||
|
||||
];
|
||||
|
@ -14,8 +14,11 @@ $(function () {
|
||||
if (triggerCount == 0) {
|
||||
addNewTrigger();
|
||||
}
|
||||
if (actionCount == 0) {
|
||||
addNewAction();
|
||||
}
|
||||
|
||||
|
||||
addNewAction();
|
||||
$('.add_rule_trigger').click(function () {
|
||||
addNewTrigger();
|
||||
|
||||
|
@ -3,24 +3,37 @@
|
||||
<a href="#" class="btn btn-danger btn-sm remove-action"><i class="fa fa-trash"></i></a>
|
||||
</td>
|
||||
<td style="width:30%;">
|
||||
{% if errors.has('XXX') %}
|
||||
{% if errors.has('rule-action.'~count) %}
|
||||
<span class="form-control-feedback"><i class="fa fa-fw fa-remove"></i></span>
|
||||
<p class="text-danger">{{ errors.first('xxxx') }}</p>
|
||||
<p class="text-danger">{{ errors.first('rule-action.'~count) }}</p>
|
||||
{% endif %}
|
||||
|
||||
<select name="rule-action[{{ count }}]" class="form-control">
|
||||
{% for key,name in actions %}
|
||||
<option value="{{ key }}" label="{{ name }}">{{ name }}</option>
|
||||
<option value="{{ key }}" label="{{ name }}"
|
||||
{% if key == oldTrigger %}
|
||||
selected
|
||||
{% endif %}
|
||||
>{{ name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="rule-action-value[{{ count }}]" class="form-control">
|
||||
|
||||
<input type="text" value="{{ oldValue }}" name="rule-action-value[{{ count }}]"
|
||||
class="form-control">
|
||||
{% if errors.has(('rule-action-value.'~count)) %}
|
||||
<p class="text-danger">
|
||||
{{ errors.first('rule-action-value.'~count) }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="width:20%;">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" name="rule-action-stop[{{ count }}]" value="1"/>
|
||||
<input type="checkbox" name="rule-action-stop[{{ count }}]" value="1"
|
||||
{% if oldChecked %}checked{% endif %}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
|
@ -84,7 +84,9 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="rule-action-tbody">
|
||||
|
||||
{% for action in oldActions %}
|
||||
{{ action|raw }}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
Loading…
Reference in New Issue
Block a user