Skip to content
Snippets Groups Projects
Commit a313f025 authored by Thomas Hackl's avatar Thomas Hackl
Browse files

Resolve "Einer Massenmail zugeordnete Filter werden nicht gespeichert"

Closes #4901

Merge request studip/studip!3675
parent cdc7050e
No related branches found
No related tags found
No related merge requests found
...@@ -48,28 +48,29 @@ class Massmail_MessageController extends \AuthenticatedController ...@@ -48,28 +48,29 @@ class Massmail_MessageController extends \AuthenticatedController
'if' => 'target === "students"', 'if' => 'target === "students"',
'context' => 'MassMail', 'context' => 'MassMail',
'target' => 'students', 'target' => 'students',
':key' => 'NaN',
'store' => function($value, $input) { 'store' => function($value, $input) {
$filters = []; if ($input->getContextObject()->target === 'students') {
foreach ($value as $one) { $filters = [];
$filter = new UserFilter($one['id'] ?? ''); foreach ($value as $one) {
$filter->fields = []; $filter = new UserFilter($one['id'] ?? '');
foreach ($one['attributes']['fields'] as $field) { $filter->fields = [];
$classname = $field['attributes']['type']; foreach ($one['attributes']['fields'] as $field) {
$f = new $classname(); $classname = $field['attributes']['type'];
if (!empty($fiele['id'])) { $f = new $classname();
$f->setId($field['id']); if (!empty($fiele['id'])) {
$f->setId($field['id']);
}
$f->setCompareOperator($field['attributes']['compare-operator']);
$f->setValue($field['attributes']['value']);
$filter->addField($f);
} }
$f->setCompareOperator($field['attributes']['compare-operator']); $filter->store();
$f->setValue($field['attributes']['value']); $connection = new \MassMail\MassMailFilter();
$filter->addField($f); $connection->filter_id = $filter->getId();
$filters[] = $connection;
} }
$filter->store(); $input->getContextObject()->filters = $filters;
$connection = new \MassMail\MassMailFilter();
$connection->filter_id = $filter->getId();
$filters[] = $connection;
} }
$input->getContextObject()->filters = $filters;
} }
], ],
'employee_filters' => [ 'employee_filters' => [
...@@ -78,28 +79,29 @@ class Massmail_MessageController extends \AuthenticatedController ...@@ -78,28 +79,29 @@ class Massmail_MessageController extends \AuthenticatedController
'if' => 'target === "employees"', 'if' => 'target === "employees"',
'context' => 'MassMail', 'context' => 'MassMail',
'target' => 'employees', 'target' => 'employees',
':key' => 'NaN',
'store' => function($value, $input) { 'store' => function($value, $input) {
$filters = []; if ($input->getContextObject()->target === 'employees') {
foreach ($value as $one) { $filters = [];
$filter = new UserFilter($one['id'] ?? ''); foreach ($value as $one) {
$filter->fields = []; $filter = new UserFilter($one['id'] ?? '');
foreach ($one['attributes']['fields'] as $field) { $filter->fields = [];
$classname = $field['attributes']['type']; foreach ($one['attributes']['fields'] as $field) {
$f = new $classname(); $classname = $field['attributes']['type'];
if (!empty($fiele['id'])) { $f = new $classname();
$f->setId($field['id']); if (!empty($fiele['id'])) {
$f->setId($field['id']);
}
$f->setCompareOperator($field['attributes']['compare-operator']);
$f->setValue($field['attributes']['value']);
$filter->addField($f);
} }
$f->setCompareOperator($field['attributes']['compare-operator']); $filter->store();
$f->setValue($field['attributes']['value']); $connection = new \MassMail\MassMailFilter();
$filter->addField($f); $connection->filter_id = $filter->getId();
$filters[] = $connection;
} }
$filter->store(); $input->getContextObject()->filters = $filters;
$connection = new \MassMail\MassMailFilter();
$connection->filter_id = $filter->getId();
$filters[] = $connection;
} }
$input->getContextObject()->filters = $filters;
} }
], ],
'semester' => [ 'semester' => [
......
...@@ -126,6 +126,11 @@ export default { ...@@ -126,6 +126,11 @@ export default {
this.$emit('input', this.stringified); this.$emit('input', this.stringified);
} }
}, },
watch: {
target() {
this.filters = [];
}
},
mounted() { mounted() {
if (this.value) { if (this.value) {
this.filters = JSON.parse(this.value); this.filters = JSON.parse(this.value);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment