diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2023-05-02 14:26:44 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2023-05-02 14:26:44 +0000 |
| commit | 0565945451e03b65cdb14be8a210a4d9a2213926 (patch) | |
| tree | 85512d75f1900ab400d595f4f6ce4520242efb10 /app | |
| parent | bdded9bfa102fb2a670f0d111dd1c6354055d44a (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.php | 16 | ||||
| -rw-r--r-- | app/views/admin/autoinsert/manual.php | 45 |
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) { |
