From e45e4fedd665297df01b329059aecf224847b7c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Thu, 28 Dec 2023 09:46:30 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20#2822=20"Fragebogen:=20Sortierung=20n?=
 =?UTF-8?q?ach=20Spalten=C3=BCberschriften"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2822

Merge request studip/studip!1901
---
 app/controllers/questionnaire.php                   |  4 ++--
 app/views/questionnaire/_overview_questionnaire.php |  6 +++---
 app/views/questionnaire/overview.php                | 12 ++++++------
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/app/controllers/questionnaire.php b/app/controllers/questionnaire.php
index b0cbeba885d..3f1be16b2f6 100644
--- a/app/controllers/questionnaire.php
+++ b/app/controllers/questionnaire.php
@@ -34,7 +34,7 @@ class QuestionnaireController extends AuthenticatedController
         if (!$GLOBALS['perm']->have_perm('autor')) {
             throw new AccessDeniedException('Only for logged in users.');
         }
-        $this->questionnaires = Questionnaire::findBySQL("user_id = ? ORDER BY mkdate DESC", [$GLOBALS['user']->id]);
+        $this->questionnaires = Questionnaire::findBySQL("user_id = ? ORDER BY title ASC", [$GLOBALS['user']->id]);
         foreach ($this->questionnaires as $questionnaire) {
             if (!$questionnaire['visible'] && $questionnaire->isRunning()) {
                 $questionnaire->start();
@@ -55,7 +55,7 @@ class QuestionnaireController extends AuthenticatedController
         Navigation::activateItem("/course/admin/questionnaires");
         $this->statusgruppen = Statusgruppen::findByRange_id($this->range_id);
         $this->questionnaires = Questionnaire::findBySQL(
-            "INNER JOIN questionnaire_assignments USING (questionnaire_id) WHERE (questionnaire_assignments.range_id = ? AND questionnaire_assignments.range_type = ?) OR (questionnaire_assignments.range_id IN (?) AND questionnaire_assignments.range_type = 'statusgruppe') ORDER BY questionnaires.mkdate DESC",
+            "INNER JOIN questionnaire_assignments USING (questionnaire_id) WHERE (questionnaire_assignments.range_id = ? AND questionnaire_assignments.range_type = ?) OR (questionnaire_assignments.range_id IN (?) AND questionnaire_assignments.range_type = 'statusgruppe') ORDER BY questionnaires.title ASC",
             [$this->range_id, $this->range_type, array_map(function ($g) { return $g->getId(); }, $this->statusgruppen)]
         );
         foreach ($this->questionnaires as $questionnaire) {
diff --git a/app/views/questionnaire/_overview_questionnaire.php b/app/views/questionnaire/_overview_questionnaire.php
index a6f0301b8db..d1d9066da25 100644
--- a/app/views/questionnaire/_overview_questionnaire.php
+++ b/app/views/questionnaire/_overview_questionnaire.php
@@ -8,14 +8,14 @@
             <?= htmlReady($questionnaire['title']) ?>
         </a>
     </td>
-    <td>
+    <td data-text="<?= (int) $questionnaire['startdate'] ?>">
     <? if ($questionnaire['startdate']): ?>
         <?= date('d.m.Y H:i', $questionnaire['startdate']) ?>
     <? else: ?>
         <?= _('händisch') ?>
     <? endif; ?>
     </td>
-    <td>
+    <td data-text="<?= (int) $questionnaire['stopdate'] ?>">
     <? if ($questionnaire['stopdate']): ?>
         <?= date('d.m.Y H:i', $questionnaire['stopdate']) ?>
     <? else: ?>
@@ -67,7 +67,7 @@
     <? endif ?>
     </td>
     <td>
-        <?= htmlReady($countedAnswers) ?>
+        <?= htmlReady($countedAnswers ?: '0') ?>
     </td>
     <td class="actions">
     <? if ($questionnaire->isRunning() && $countedAnswers) : ?>
diff --git a/app/views/questionnaire/overview.php b/app/views/questionnaire/overview.php
index d466689f3f9..9062e1cc7a2 100644
--- a/app/views/questionnaire/overview.php
+++ b/app/views/questionnaire/overview.php
@@ -1,15 +1,15 @@
 <form action="<?= $controller->link_for("questionnaire/bulkdelete", compact('range_type', 'range_id')) ?>"
       method="post">
     <?= CSRFProtection::tokenTag() ?>
-    <table class="default" id="questionnaire_overview">
+    <table class="default sortable-table" data-sortlist="[[1, 0]]" id="questionnaire_overview">
         <thead>
             <tr>
                 <th width="20"><input type="checkbox" data-proxyfor="#questionnaire_overview > tbody input[type=checkbox]"></th>
-                <th><?= _('Fragebogen') ?></th>
-                <th><?= _('Startet') ?></th>
-                <th><?= _('Endet') ?></th>
-                <th><?= _('Eingebunden') ?></th>
-                <th><?= _('Teilnehmende') ?></th>
+                <th data-sort="text"><?= _('Fragebogen') ?></th>
+                <th data-sort="digit"><?= _('Startet') ?></th>
+                <th data-sort="digit"><?= _('Endet') ?></th>
+                <th data-sort="text"><?= _('Eingebunden') ?></th>
+                <th data-sort="digit"><?= _('Teilnehmende') ?></th>
                 <th class="actions"><?= _('Aktionen') ?></th>
             </tr>
         </thead>
-- 
GitLab