aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2023-05-02 14:26:44 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2023-05-02 14:26:44 +0000
commit0565945451e03b65cdb14be8a210a4d9a2213926 (patch)
tree85512d75f1900ab400d595f4f6ce4520242efb10 /app
parentbdded9bfa102fb2a670f0d111dd1c6354055d44a (diff)
allow forcing of 'manual auto insert', fixes #2576
Closes #2576 Merge request studip/studip!1735
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin/autoinsert.php16
-rw-r--r--app/views/admin/autoinsert/manual.php45
2 files changed, 42 insertions, 19 deletions
diff --git a/app/controllers/admin/autoinsert.php b/app/controllers/admin/autoinsert.php
index 70464e1..f899795 100644
--- a/app/controllers/admin/autoinsert.php
+++ b/app/controllers/admin/autoinsert.php
@@ -149,14 +149,17 @@ class Admin_AutoinsertController extends AuthenticatedController
$this->seminar_search = [];
PageLayout::setTitle(_('Manuelles Eintragen von Nutzergruppen in Veranstaltungen'));
- if (Request::submitted('submit')) {
+ if (Request::submittedSome('submit', 'force')) {
$filters = array_filter(Request::getArray('filter'));
- if (!Request::get('sem_id') || Request::get('sem_id') == 'false') {
+ $force = Request::bool('force', false);
+ $seminar_id = Request::option('sem_id');
+
+ if (!$seminar_id || $seminar_id === 'false') {
PageLayout::postError(_('Ungültiger Aufruf'));
} elseif (!count($filters)) {
PageLayout::postError(_('Keine Filterkriterien gewählt'));
} else {
- $seminar = Seminar::GetInstance(Request::option('sem_id'));
+ $seminar = Seminar::GetInstance($seminar_id);
$userlookup = new UserLookup();
foreach ($filters as $type => $values) {
@@ -166,9 +169,9 @@ class Admin_AutoinsertController extends AuthenticatedController
$real_users = 0;
foreach ($user_ids as $user_id) {
- if (!AutoInsert::checkAutoInsertUser(Request::option('sem_id'), $user_id)) {
- $seminar->addMember($user_id);
- $real_users += AutoInsert::saveAutoInsertUser(Request::option('sem_id'), $user_id);
+ if ($force || !AutoInsert::checkAutoInsertUser($seminar_id, $user_id)) {
+ $real_users += $seminar->addMember($user_id) ? 1 : 0;
+ AutoInsert::saveAutoInsertUser($seminar_id, $user_id);
}
}
@@ -192,6 +195,7 @@ class Admin_AutoinsertController extends AuthenticatedController
}
$this->redirect('admin/autoinsert/manual');
+ return;
}
}
diff --git a/app/views/admin/autoinsert/manual.php b/app/views/admin/autoinsert/manual.php
index c064548..dd0f834 100644
--- a/app/views/admin/autoinsert/manual.php
+++ b/app/views/admin/autoinsert/manual.php
@@ -134,6 +134,25 @@
</tr>
</tbody>
<? endif ?>
+ <thead>
+ <tr>
+ <th colspan="3"><?= _('Einstellungen') ?></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td colspan="3">
+ <label>
+ <input type="checkbox" name="force" value="1">
+ <?= _('Eintragung forcieren') ?>
+ <?= tooltipIcon(implode("\n", [
+ _('Über diese Einstellung kann forciert werden, dass alle gefundenen Personen in die Veranstaltung eingetragen werden.'),
+ _('Ansonsten werden nur die Personen eingetragen, die bislang noch nicht über diesen Mechanismus eingetragen wurden.'),
+ ])) ?>
+ </label>
+ </td>
+ </tr>
+ </tbody>
<tfoot>
<tr>
<td colspan="3">
@@ -157,20 +176,20 @@
if (!$(this).next().length || !$(this).next().is('span')) {
$(this).after($('<span id="autoinsert_count" style="vertical-align: middle;"/>'));
}
- $.getJSON('<?= $controller->manual_count() ?>',
- $(this).closest('form').serializeArray(),
- function (json) {
- var result = "";
- if (!json || json.error) {
- result = '<?= _('Fehler') ?>: ';
- result += json.error || '<?= _('Fehler bei der Übertragung') ?>';
- } else {
- result = '<?= _('Gefundene Nutzer') ?>: ';
- result += "<strong>" + json.users + "</strong>";
- }
- $('#autoinsert_count').html(result);
+ $.getJSON(
+ '<?= $controller->manual_count() ?>',
+ $(this).closest('form').serializeArray()
+ ).done(function (json) {
+ let result = '';
+ if (!json || json.error) {
+ result = '<?= _('Fehler') ?>: ';
+ result += json.error || '<?= _('Fehler bei der Übertragung') ?>';
+ } else {
+ result = '<?= _('Gefundene Personen') ?>: ';
+ result += "<strong>" + json.users + "</strong>";
}
- );
+ $('#autoinsert_count').html(' ' + result);
+ });
event.preventDefault();
});
$('input[name^=remove_filter]').click(function (event) {