From 2b91fb7d104d6f74c197fe114bbf057fc4f1e064 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Tue, 22 Oct 2024 09:37:27 +0000
Subject: [PATCH] fix filter in files overview, fixes #3267

Closes #3267

Merge request studip/studip!3525
---
 app/controllers/files.php                         |  5 +++--
 app/views/files/flat.php                          |  9 +++++++--
 resources/assets/stylesheets/scss/pagination.scss |  4 ----
 resources/vue/components/FilesTable.vue           |  4 +++-
 templates/pagination/buttons.php                  |  7 -------
 templates/pagination/links.php                    |  7 -------
 templates/sidebar/time-range-filter.php           | 11 +++++++----
 7 files changed, 20 insertions(+), 27 deletions(-)

diff --git a/app/controllers/files.php b/app/controllers/files.php
index f5957d7d9e3..effdf627ac9 100644
--- a/app/controllers/files.php
+++ b/app/controllers/files.php
@@ -343,6 +343,7 @@ class FilesController extends AuthenticatedController
                     if ($this->begin > $this->end) {
                         $this->begin = clone $this->end;
                     }
+
                     if ($this->begin instanceof DateTime) {
                         $this->begin->setTime(0,0,0);
                     }
@@ -350,7 +351,7 @@ class FilesController extends AuthenticatedController
                         $this->end->setTime(23,59,59);
                     }
 
-                    if (!is_array($_SESSION['files_overview'])) {
+                    if (!isset($_SESSION['files_overview'])) {
                         $_SESSION['files_overview'] = [];
                     }
                     $_SESSION['files_overview']['begin'] = $this->begin;
@@ -359,7 +360,7 @@ class FilesController extends AuthenticatedController
                 if (Request::submitted('course_id')) {
                     $course_did_change = true;
                     $this->course_id = Request::get('course_id');
-                    if (!is_array($_SESSION['files_overview'])) {
+                    if (!isset($_SESSION['files_overview'])) {
                         $_SESSION['files_overview'] = [];
                     }
                     $_SESSION['files_overview']['course_id'] = $this->course_id;
diff --git a/app/views/files/flat.php b/app/views/files/flat.php
index 1440117efed..3072256343f 100644
--- a/app/views/files/flat.php
+++ b/app/views/files/flat.php
@@ -56,9 +56,14 @@ foreach ($topFolder->getAdditionalActionButtons() as $button) {
                  :topfolder="topfolder"
                  :allow_filter="<?= json_encode(!empty($enable_table_filter)) ?>"
                  table_title="<?= htmlReady($table_title ?? '') ?>"
-                 pagination="<?= htmlReady($pagination_html ?? '') ?>"
                  :initial_sort="{sortedBy:'chdate',sortDirection:'desc'}"
-    ></files-table>
+    >
+    <? if (!empty($pagination_html)): ?>
+        <template #pagination>
+            <?= $pagination_html ?>
+        </template>
+    <? endif; ?>
+    </files-table>
 </form>
 <?
 if (!empty($show_default_sidebar)) {
diff --git a/resources/assets/stylesheets/scss/pagination.scss b/resources/assets/stylesheets/scss/pagination.scss
index 7a921e05c7b..99b8adf7bc6 100644
--- a/resources/assets/stylesheets/scss/pagination.scss
+++ b/resources/assets/stylesheets/scss/pagination.scss
@@ -23,10 +23,6 @@
         }
     }
 
-    .divider--template {
-        display: none;
-    }
-
     .pagination--link {
         background-color: transparent;
         border: 0;
diff --git a/resources/vue/components/FilesTable.vue b/resources/vue/components/FilesTable.vue
index 1e19cc9f948..71db77ff8d2 100644
--- a/resources/vue/components/FilesTable.vue
+++ b/resources/vue/components/FilesTable.vue
@@ -298,7 +298,9 @@
                             <span v-if="tfoot_link" :colspan="(topfolder.buttons && show_bulk_actions ? 1 : numberOfColumns)">
                                 <a :href="tfoot_link.href">{{tfoot_link.text}}</a>
                             </span>
-                            <span v-if="pagination" v-html="pagination" class="pagination"></span>
+                            <slot name="pagination">
+                                <span v-if="pagination" v-html="pagination" class="pagination"></span>
+                            </slot>
                         </div>
                     </td>
                 </tr>
diff --git a/templates/pagination/buttons.php b/templates/pagination/buttons.php
index 1c62b10a83d..9bfd0bdc571 100644
--- a/templates/pagination/buttons.php
+++ b/templates/pagination/buttons.php
@@ -41,11 +41,4 @@
         </button>
     </li>
 <? endif; ?>
-
-    <li class="divider--template">
-        <button class="pagination--link" name="<?= htmlReady($name) ?>" value="{{value}}" <? if ($dialog !== null) echo "data-dialog=\"{$dialog}\""; ?>>
-            <span class="audible"><?= _('Seite') ?></span>
-            {{label}}
-        </button>
-    </li>
 </ul>
diff --git a/templates/pagination/links.php b/templates/pagination/links.php
index 6d824ed93d8..007b77a719f 100644
--- a/templates/pagination/links.php
+++ b/templates/pagination/links.php
@@ -43,11 +43,4 @@
         </a>
     </li>
 <? endif; ?>
-
-    <li class="divider--template">
-        <a class="pagination--link" href="<?= $link_for('{{value}}') ?>" <? if ($dialog !== null) echo "data-dialog=\"{$dialog}\""; ?>>
-            <span class="audible"><?= _('Seite') ?></span>
-            {{label}}
-        </a>
-    </li>
 </ul>
diff --git a/templates/sidebar/time-range-filter.php b/templates/sidebar/time-range-filter.php
index 97dbcf67820..059c51dc715 100644
--- a/templates/sidebar/time-range-filter.php
+++ b/templates/sidebar/time-range-filter.php
@@ -2,13 +2,16 @@
     <?= CSRFProtection::tokenTag() ?>
     <label>
         <?= _('Dateien neuer als') ?>:
-        <input type="text" name="begin" value="<?= htmlReady($begin ?? '') ?>"
-               class="hasDatePicker">
+        <input type="text" name="begin" id="begin"
+               value="<?= htmlReady($begin ?? '') ?>"
+               data-date-picker="<?= htmlReady(json_encode(['<=' => '#end'])) ?>">
     </label>
     <label>
         <?= _('Dateien älter als') ?>:
-        <input type="text" name="end" value="<?= htmlReady($end ?? '') ?>"
-               class="hasDatePicker submit-on-change">
+        <input type="text" name="end" id="end"
+               value="<?= htmlReady($end ?? '') ?>"
+               data-date-picker="<?= htmlReady(json_encode(['>=' => '#begin'])) ?>"
+               onchange="this.closest('form').submit()">
     </label>
     <? if (!empty($course_options)) : ?>
         <label>
-- 
GitLab