mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Edit rules.
This commit is contained in:
parent
f76990bb9b
commit
f80bc214f9
@ -16,7 +16,9 @@ use FireflyIII\Http\Requests;
|
||||
use FireflyIII\Http\Requests\RuleFormRequest;
|
||||
use FireflyIII\Http\Requests\RuleGroupFormRequest;
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\Models\RuleTrigger;
|
||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||
use Input;
|
||||
use Preferences;
|
||||
@ -84,7 +86,7 @@ class RuleController extends Controller
|
||||
'rule-actions' => $request->get('rule-action'),
|
||||
'rule-action-values' => $request->get('rule-action-value'),
|
||||
'rule-action-stop' => $request->get('rule-action-stop'),
|
||||
'stop_processing' => $request->get('stop_processing')
|
||||
'stop_processing' => $request->get('stop_processing'),
|
||||
];
|
||||
|
||||
$rule = $repository->storeRule($data);
|
||||
@ -134,7 +136,7 @@ class RuleController extends Controller
|
||||
'oldTrigger' => $oldTrigger,
|
||||
'oldValue' => $oldValue,
|
||||
'oldChecked' => $oldChecked,
|
||||
'count' => $count
|
||||
'count' => $count,
|
||||
]
|
||||
)->render();
|
||||
$newIndex++;
|
||||
@ -154,8 +156,7 @@ class RuleController extends Controller
|
||||
'oldTrigger' => $oldAction,
|
||||
'oldValue' => $oldValue,
|
||||
'oldChecked' => $oldChecked,
|
||||
'actions' => $possibleActions,
|
||||
'count' => $count
|
||||
'count' => $count,
|
||||
]
|
||||
)->render();
|
||||
$newIndex++;
|
||||
@ -208,7 +209,8 @@ class RuleController extends Controller
|
||||
return redirect(Session::get('rules.rule-group.create.url'));
|
||||
}
|
||||
|
||||
public function editRule(Rule $rule) {
|
||||
public function editRule(Rule $rule)
|
||||
{
|
||||
|
||||
// count for current rule's triggers/actions.
|
||||
$triggerCount = 0;
|
||||
@ -218,25 +220,6 @@ class RuleController extends Controller
|
||||
$triggers = [];
|
||||
$actions = [];
|
||||
|
||||
// array of valid values for triggers (for form).
|
||||
$ruleTriggers = array_keys(Config::get('firefly.rule-triggers'));
|
||||
$possibleTriggers = [];
|
||||
foreach ($ruleTriggers as $key) {
|
||||
if ($key != 'user_action') {
|
||||
$possibleTriggers[$key] = trans('firefly.rule_trigger_' . $key . '_choice');
|
||||
}
|
||||
}
|
||||
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.
|
||||
@ -253,8 +236,7 @@ class RuleController extends Controller
|
||||
'oldTrigger' => $oldTrigger,
|
||||
'oldValue' => $oldValue,
|
||||
'oldChecked' => $oldChecked,
|
||||
'triggers' => $possibleTriggers,
|
||||
'count' => $count
|
||||
'count' => $count,
|
||||
]
|
||||
)->render();
|
||||
$newIndex++;
|
||||
@ -274,16 +256,68 @@ class RuleController extends Controller
|
||||
'oldTrigger' => $oldAction,
|
||||
'oldValue' => $oldValue,
|
||||
'oldChecked' => $oldChecked,
|
||||
'actions' => $possibleActions,
|
||||
'count' => $count
|
||||
'count' => $count,
|
||||
]
|
||||
)->render();
|
||||
$newIndex++;
|
||||
}
|
||||
} else {
|
||||
// get current triggers
|
||||
$newIndex = 0;
|
||||
/**
|
||||
* @var int $index
|
||||
* @var RuleTrigger $entry
|
||||
*/
|
||||
foreach ($rule->ruleTriggers as $index => $entry) {
|
||||
if ($entry->trigger_type != 'user_action') {
|
||||
$count = ($newIndex + 1);
|
||||
$triggerCount++;
|
||||
$oldTrigger = $entry->trigger_type;
|
||||
$oldValue = $entry->trigger_value;
|
||||
$oldChecked = $entry->stop_processing;
|
||||
$oldTriggers[] = view(
|
||||
'rules.partials.trigger',
|
||||
[
|
||||
'oldTrigger' => $oldTrigger,
|
||||
'oldValue' => $oldValue,
|
||||
'oldChecked' => $oldChecked,
|
||||
'count' => $count,
|
||||
]
|
||||
)->render();
|
||||
}
|
||||
$newIndex++;
|
||||
}
|
||||
|
||||
// get current actions
|
||||
$newIndex = 0;
|
||||
/**
|
||||
* @var int $index
|
||||
* @var RuleAction $entry
|
||||
*/
|
||||
foreach ($rule->ruleActions as $index => $entry) {
|
||||
$count = ($newIndex + 1);
|
||||
$actionCount++;
|
||||
$oldAction = $entry->action_type;
|
||||
$oldValue = $entry->action_value;
|
||||
$oldChecked = $entry->stop_processing;
|
||||
$oldActions[] = view(
|
||||
'rules.partials.action',
|
||||
[
|
||||
'oldTrigger' => $oldAction,
|
||||
'oldValue' => $oldValue,
|
||||
'oldChecked' => $oldChecked,
|
||||
'count' => $count,
|
||||
]
|
||||
)->render();
|
||||
$newIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
// get rule trigger for update / store-journal:
|
||||
$primaryTrigger = $rule->ruleTriggers()->where('trigger_type','user_action')->first()->trigger_value;
|
||||
|
||||
$subTitle = trans('firefly.edit_rule_group', ['title' => $rule->title]);
|
||||
|
||||
$subTitle = trans('firefly.edit_rule', ['title' => $rule->title]);
|
||||
|
||||
// put previous url in session if not redirect from store (not "return_to_edit").
|
||||
if (Session::get('rules.rule.edit.fromUpdate') !== true) {
|
||||
@ -293,7 +327,8 @@ class RuleController extends Controller
|
||||
Session::flash('gaEventCategory', 'rules');
|
||||
Session::flash('gaEventAction', 'edit-rule');
|
||||
|
||||
return view('rules.rule.edit', compact('rule', 'subTitle'));
|
||||
return view('rules.rule.edit', compact('rule', 'subTitle','primaryTrigger',
|
||||
'oldTriggers', 'oldActions', 'triggerCount', 'actionCount'));
|
||||
}
|
||||
|
||||
|
||||
|
@ -370,9 +370,9 @@ class TestDataSeeder extends Seeder
|
||||
$rule->ruleGroup()->associate(RuleGroup::find(3));
|
||||
$rule->order = 2;
|
||||
$rule->active = 1;
|
||||
$rule->stop_processing = 0;
|
||||
$rule->stop_processing = 1;
|
||||
$rule->title = 'Rent';
|
||||
$rule->description = null;
|
||||
$rule->description = 'Do something with rent.';
|
||||
|
||||
$rule->save();
|
||||
|
||||
@ -383,7 +383,7 @@ class TestDataSeeder extends Seeder
|
||||
$ruleTrigger->active = 1;
|
||||
$ruleTrigger->stop_processing = 0;
|
||||
$ruleTrigger->trigger_type = 'user_action';
|
||||
$ruleTrigger->trigger_value = 'store-journal';
|
||||
$ruleTrigger->trigger_value = 'update-journal';
|
||||
|
||||
$ruleTrigger->save();
|
||||
unset($ruleTrigger);
|
||||
@ -405,7 +405,7 @@ class TestDataSeeder extends Seeder
|
||||
$ruleTrigger->rule()->associate($rule);
|
||||
$ruleTrigger->order = 3;
|
||||
$ruleTrigger->active = 1;
|
||||
$ruleTrigger->stop_processing = 0;
|
||||
$ruleTrigger->stop_processing = 1;
|
||||
$ruleTrigger->trigger_type = 'from_account_is';
|
||||
$ruleTrigger->trigger_value = 'MyBank Checking Account';
|
||||
|
||||
@ -428,7 +428,7 @@ class TestDataSeeder extends Seeder
|
||||
$ruleAction->rule()->associate($rule);
|
||||
$ruleAction->order = 2;
|
||||
$ruleAction->active = 1;
|
||||
$ruleAction->stop_processing = 0;
|
||||
$ruleAction->stop_processing = 1;
|
||||
$ruleAction->action_type = 'set_budget';
|
||||
$ruleAction->action_value = 'Bills';
|
||||
$ruleAction->save();
|
||||
|
@ -74,6 +74,8 @@ return [
|
||||
'action_value' => 'Action value',
|
||||
'stop_executing_other_actions' => 'Stop executing other actions',
|
||||
'add_rule_action' => 'Add new action',
|
||||
'edit_rule' => 'Edit rule ":title"',
|
||||
'update_rule' => 'Update rule',
|
||||
|
||||
// actions and triggers
|
||||
'rule_trigger_user_action' => 'User action is ":trigger_value"',
|
||||
|
@ -38,7 +38,7 @@
|
||||
<h3 class="box-title">{{ 'options'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
{{ ExpandedForm.optionsList('update','budget') }}
|
||||
{{ ExpandedForm.optionsList('update','rule-group') }}
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<button type="submit" class="btn pull-right btn-success">{{ 'update_rule_group'|_ }}</button>
|
||||
|
130
resources/views/rules/rule/edit.twig
Normal file
130
resources/views/rules/rule/edit.twig
Normal file
@ -0,0 +1,130 @@
|
||||
{% extends "./layout/default.twig" %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{{ Breadcrumbs.renderIfExists(Route.getCurrentRoute.getName) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ Form.model(rule, {'class' : 'form-horizontal','id' : 'store','url' : route('rules.rule.update', rule.id)}) }}
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'mandatoryFields'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
{{ ExpandedForm.text('title') }}
|
||||
{{ ExpandedForm.select('trigger',allJournalTriggers(), primaryTrigger) }}
|
||||
{{ ExpandedForm.checkbox('stop_processing',1,rule.stop_processing, {helpText: trans('firefly.rule_help_stop_processing')}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-md-6 col-sm-12">
|
||||
|
||||
<!-- optional fields -->
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'optionalFields'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
{{ ExpandedForm.textarea('description') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RULE TRIGGERS -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'rule_triggers'|_ }}</h3>
|
||||
</div>
|
||||
<!-- display any error -->
|
||||
<div class="box-body rule-trigger-box">
|
||||
<table class="table table-condensed table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">{{ 'trigger'|_ }}</th>
|
||||
<th>{{ 'trigger_value'|_ }}</th>
|
||||
<th>{{ 'stop_processing_other_triggers'|_ }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="rule-trigger-tbody">
|
||||
{% for trigger in oldTriggers %}
|
||||
{{ trigger|raw }}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
<p>
|
||||
<br/>
|
||||
<a href="#" class="btn btn-default add_rule_trigger">{{ 'add_rule_trigger'|_ }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- RULE ACTIONS -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'rule_actions'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<table class="table table-condensed table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th colspan="2">{{ 'action'|_ }}</th>
|
||||
<th>{{ 'action_value'|_ }}</th>
|
||||
<th>{{ 'stop_executing_other_actions'|_ }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="rule-action-tbody">
|
||||
{% for action in oldActions %}
|
||||
{{ action|raw }}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
<p>
|
||||
<br/>
|
||||
<a href="#" class="btn btn-default add_rule_action">{{ 'add_rule_action'|_ }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12">
|
||||
<!-- panel for options -->
|
||||
<div class="box">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">{{ 'options'|_ }}</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
{{ ExpandedForm.optionsList('update','rule') }}
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<button type="submit" class="btn pull-right btn-success">{{ 'update_rule'|_ }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{ Form.close|raw }}
|
||||
|
||||
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
<script type="text/javascript" src="js/rules/create-edit.js"></script>
|
||||
<script type="text/javascript">
|
||||
var triggerCount = {{ triggerCount }};
|
||||
var actionCount = {{ actionCount }};
|
||||
</script>
|
||||
<script type="text/javascript" src="js/rules/create.js"></script>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user