From 0bd0f8200b231802c9ae262b4472d119a8286bf9 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 22 Mar 2023 09:37:37 +0000
Subject: [PATCH] remove STUDIP.Dialogs and refactor current usage with
 STUDIP.Dialog, fixes #1001

Closes #1001

Merge request studip/studip!1580
---
 app/views/admission/courseset/configure.php   |  1 -
 app/views/admission/courseset/index.php       |  1 -
 app/views/admission/rule/save.php             |  5 ++-
 app/views/admission/user_list/configure.php   |  1 -
 app/views/admission/user_list/index.php       |  9 ++----
 app/views/dialog/confirm_dialog.php           | 13 --------
 resources/assets/javascripts/init.js          |  2 --
 resources/assets/javascripts/lib/admission.js |  2 --
 resources/assets/javascripts/lib/dialogs.js   | 31 -------------------
 .../assets/javascripts/lib/user_filter.js     |  2 --
 10 files changed, 4 insertions(+), 63 deletions(-)
 delete mode 100644 app/views/dialog/confirm_dialog.php
 delete mode 100644 resources/assets/javascripts/lib/dialogs.js

diff --git a/app/views/admission/courseset/configure.php b/app/views/admission/courseset/configure.php
index d1d31e20269..b3f3030d8b0 100644
--- a/app/views/admission/courseset/configure.php
+++ b/app/views/admission/courseset/configure.php
@@ -30,7 +30,6 @@ if (isset($flash['error'])) {
 <div class="hidden-alert" style="display:none">
     <?= MessageBox::info(_("Diese Daten sind noch nicht gespeichert."));?>
 </div>
-<?= $this->render_partial('dialog/confirm_dialog') ?>
 <h1><?= $courseset ? _('Anmeldeset bearbeiten') : _('Anmeldeset anlegen') ?></h1>
 <form class="default" id="courseset-form" action="<?= $controller->url_for(!$instant_course_set_view ?
     'admission/courseset/save/' . ($courseset ? $courseset->getId() : '') :
diff --git a/app/views/admission/courseset/index.php b/app/views/admission/courseset/index.php
index 40f4171e2d7..b3a500948f1 100644
--- a/app/views/admission/courseset/index.php
+++ b/app/views/admission/courseset/index.php
@@ -8,7 +8,6 @@ Helpbar::get()->addPlainText(_('Info'),_("Anmeldesets legen fest, wer sich zu de
 Helpbar::get()->addPlainText(_('Info'),_("Hier sehen Sie alle Anmeldesets, auf die Sie Zugriff haben."));
 
 ?>
-<?= $this->render_partial('dialog/confirm_dialog') ?>
 <?= $this->render_partial('admission/courseset/_institute_choose.php') ?>
 <?php
 if ($coursesets) {
diff --git a/app/views/admission/rule/save.php b/app/views/admission/rule/save.php
index b8ecdc74674..8448ec7f348 100644
--- a/app/views/admission/rule/save.php
+++ b/app/views/admission/rule/save.php
@@ -14,9 +14,8 @@
         $controller->url_for('admission/rule/configure', get_class($rule), $rule->getId()) ?>', '<?=
         $rule->getId() ?>')">
             <?= Icon::create('edit', 'clickable')->asImg(); ?></a>
-        <a href="#" onclick="return STUDIP.Dialogs.showConfirmDialog('<?=
-        _('Soll die Anmelderegel wirklich gelöscht werden?') ?>',
-            'javascript:STUDIP.Admission.removeRule(\'rule_<?= $rule->getId() ?>\', \'rules\')')">
+        <a href="javascript:STUDIP.Admission.removeRule('rule_<?= $rule->getId() ?>', 'rules')"
+           data-confirm="<?= _('Soll die Anmelderegel wirklich gelöscht werden?') ?>">
             <?= Icon::create('trash', 'clickable')->asImg(); ?></a>
     </div>
 </div>
diff --git a/app/views/admission/user_list/configure.php b/app/views/admission/user_list/configure.php
index 32e1f427217..a35fd5171f1 100644
--- a/app/views/admission/user_list/configure.php
+++ b/app/views/admission/user_list/configure.php
@@ -18,7 +18,6 @@ Helpbar::get()->addPlainText(_('Info'), "Stellen Sie hier ein, wie die Chancen b
                                         "größer als 1 werden die betreffenden Personen ".
                                         "bevorzugt.");
 ?>
-<?= $this->render_partial('dialog/confirm_dialog') ?>
 <?= $error ?? '' ?>
 <form class="default" action="<?= $controller->url_for('admission/userlist/save', $userlist_id) ?>" method="post">
     <?= CSRFProtection::tokenTag() ?>
diff --git a/app/views/admission/user_list/index.php b/app/views/admission/user_list/index.php
index e47a1bc2209..645ad19bfca 100644
--- a/app/views/admission/user_list/index.php
+++ b/app/views/admission/user_list/index.php
@@ -11,7 +11,6 @@ Helpbar::get()->addPlainText(_('Info'),"Personenlisten erfassen eine Menge von P
 Helpbar::get()->addPlainText(_('Info'), "Hier sehen Sie alle Personenlisten, auf die Sie Zugriff ".
                                         "haben.");
 ?>
-<?= $this->render_partial('dialog/confirm_dialog') ?>
 
 <?php
 if ($userlists) {
@@ -27,12 +26,8 @@ if ($userlists) {
            href="<?= URLHelper::getURL('dispatch.php/admission/userlist/configure/'.$list->getId()); ?>">
             <?= Icon::create('edit', 'clickable', ['title' => _('Nutzerliste bearbeiten')])->asImg(20, ["alt" => _('Nutzerliste bearbeiten')]); ?>
         </a>
-        <a class="userlist-action" href="<?= $controller->url_for('admission/userlist/delete',
-            $list->getId()) ?>"
-            onclick="return STUDIP.Dialogs.showConfirmDialog('<?=
-                sprintf(_('Soll die Nutzerliste %s wirklich gelöscht werden?'), htmlReady($list->getName())) ?>', '<?=
-                URLHelper::getURL('dispatch.php/admission/userlist/delete/'.
-                $list->getId(), ['really' => 1]) ?>')">
+        <a class="userlist-action" href="<?= $controller->link_for('admission/userlist/delete', $list->getId(), ['really' => true]) ?>"
+           data-confirm="<?= htmlReady(sprintf(_('Soll die Nutzerliste %s wirklich gelöscht werden?'), $list->getName())) ?>">
             <?= Icon::create('trash', 'clickable', ['title' => _('Personenliste löschen')])->asImg(20) ?>
         </a>
     </div>
diff --git a/app/views/dialog/confirm_dialog.php b/app/views/dialog/confirm_dialog.php
deleted file mode 100644
index e57dd97401e..00000000000
--- a/app/views/dialog/confirm_dialog.php
+++ /dev/null
@@ -1,13 +0,0 @@
-<script id="confirm_dialog" type="text/html">
-<div class="modaloverlay">
-    <div class="messagebox">
-        <div class="content">
-            <%- question %>
-        </div>
-        <div class="buttons">
-            <a class="accept button" href="<%- confirm %>"><?= _('Ja') ?></a>
-            <?= Studip\LinkButton::createCancel(_('Nein'), "javascript:STUDIP.Dialogs.closeConfirmDialog();") ?>
-        </div>
-    </div>    
-</div>
-</script>
\ No newline at end of file
diff --git a/resources/assets/javascripts/init.js b/resources/assets/javascripts/init.js
index f7c3dda3cea..68ed726940d 100644
--- a/resources/assets/javascripts/init.js
+++ b/resources/assets/javascripts/init.js
@@ -20,7 +20,6 @@ import createURLHelper from './lib/url_helper.js';
 import CSS from './lib/css.js';
 import Dates from './lib/dates.js';
 import Dialog from './lib/dialog.js';
-import Dialogs from './lib/dialogs.js';
 import DragAndDropUpload from './lib/drag_and_drop_upload.js';
 import enrollment from './lib/enrollment.js';
 import eventBus from './lib/event-bus.js';
@@ -107,7 +106,6 @@ window.STUDIP = _.assign(window.STUDIP || {}, {
     CSS,
     Dates,
     Dialog,
-    Dialogs,
     DragAndDropUpload,
     enrollment,
     eventBus,
diff --git a/resources/assets/javascripts/lib/admission.js b/resources/assets/javascripts/lib/admission.js
index 288fa97ea76..7cf8c880d3e 100644
--- a/resources/assets/javascripts/lib/admission.js
+++ b/resources/assets/javascripts/lib/admission.js
@@ -3,7 +3,6 @@
  * ------------------------------------------------------------------------ */
 import { $gettext } from './gettext.js';
 import Dialog from './dialog.js';
-import Dialogs from './dialogs.js';
 
 const Admission = {
     getCourses: function(targetUrl) {
@@ -100,7 +99,6 @@ const Admission = {
             var norules = $gettext('Sie haben noch keine Anmelderegeln festgelegt.');
             $('#' + containerId).prepend('<span id="norules">' + '<i>' + norules + '</i></span>');
         }
-        Dialogs.closeConfirmDialog();
         Admission.toggleNotSavedAlert();
     },
 
diff --git a/resources/assets/javascripts/lib/dialogs.js b/resources/assets/javascripts/lib/dialogs.js
deleted file mode 100644
index 88d1f60818d..00000000000
--- a/resources/assets/javascripts/lib/dialogs.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/* ------------------------------------------------------------------------
- * Standard dialogs for confirmation or messages
- * ------------------------------------------------------------------------ */
-
-const Dialogs = {
-    showConfirmDialog: function(question, confirm) {
-        // compile template
-        var getTemplate = _.memoize(function(name) {
-            return _.template(jQuery('#' + name).html());
-        });
-
-        var confirmDialog = getTemplate('confirm_dialog');
-        $('body').append(
-            confirmDialog({
-                question: question,
-                confirm: confirm
-            })
-        );
-
-        //Set the focus inside the confirm dialog:
-        $(confirmDialog).find(':focusable').first().focus();
-
-        return false;
-    },
-
-    closeConfirmDialog: function() {
-        $('div.modaloverlay').remove();
-    }
-};
-
-export default Dialogs;
diff --git a/resources/assets/javascripts/lib/user_filter.js b/resources/assets/javascripts/lib/user_filter.js
index b10415206fc..450af348e0e 100644
--- a/resources/assets/javascripts/lib/user_filter.js
+++ b/resources/assets/javascripts/lib/user_filter.js
@@ -3,7 +3,6 @@
  * ------------------------------------------------------------------------ */
 import { $gettext } from './gettext.js';
 import Dialog from './dialog.js';
-import Dialogs from './dialogs.js';
 
 const UserFilter = {
     new_group_nr: 1,
@@ -157,7 +156,6 @@ const UserFilter = {
 
     removeConditionField: function(element) {
         element.remove();
-        Dialogs.closeConfirmDialog();
         return false;
     },
 
-- 
GitLab