From 53729c3d8a1bf983b1d10ae9e969a086c9ac0756 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 7 Aug 2024 09:43:44 +0000
Subject: [PATCH] actually reset search on courses admin page, fixes #4460

Closes #4460

Merge request studip/studip!3245
---
 app/controllers/admin/courses.php    | 1 +
 lib/classes/sidebar/SearchWidget.php | 7 +++++++
 templates/sidebar/search-widget.php  | 2 +-
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index 984d0ca7a22..5f16d21ef54 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -1751,6 +1751,7 @@ class Admin_CoursesController extends AuthenticatedController
             $GLOBALS['user']->cfg->ADMIN_COURSES_SEARCHTEXT
         );
         $search->setOnSubmitHandler("STUDIP.AdminCourses.App.changeFilter({search: $(this).find('input').val()}); return false;");
+        $search->setOnClearHandler("STUDIP.AdminCourses.App.changeFilter({search: ''});");
         $sidebar->addWidget($search, 'filter_search');
     }
 
diff --git a/lib/classes/sidebar/SearchWidget.php b/lib/classes/sidebar/SearchWidget.php
index 5a42e948be4..58acacbafc7 100644
--- a/lib/classes/sidebar/SearchWidget.php
+++ b/lib/classes/sidebar/SearchWidget.php
@@ -17,6 +17,7 @@ class SearchWidget extends SidebarWidget
     protected $method = 'get';
     protected $id = null;
     protected $onsubmit = null;
+    protected ?string $onclear = null;
 
     /**
      * Constructor for the widget.
@@ -108,6 +109,11 @@ class SearchWidget extends SidebarWidget
         $this->onsubmit = $onsubmit;
     }
 
+    public function setOnClearHandler(string $onclear): void
+    {
+        $this->onclear = $onclear;
+    }
+
     /**
      * Renders the widget.
      *
@@ -171,6 +177,7 @@ class SearchWidget extends SidebarWidget
 
         $this->template_variables['has_data'] = $this->hasData();
         $this->template_variables['onsubmit'] = $this->onsubmit;
+        $this->template_variables['onclear'] = $this->onclear;
 
         return parent::render($variables);
     }
diff --git a/templates/sidebar/search-widget.php b/templates/sidebar/search-widget.php
index c3146735384..e475f00a87d 100644
--- a/templates/sidebar/search-widget.php
+++ b/templates/sidebar/search-widget.php
@@ -33,7 +33,7 @@
                     <?= Icon::create('decline')->asInput([
                         'title' =>  _('Suche zurücksetzen'),
                         'class' => 'reset-search',
-                        'onclick' => "document.getElementById('needle-".$hash."').value = ''; this.remove();"
+                        'onclick' => "document.getElementById('needle-".$hash."').value = ''; this.remove();" . ($onclear ?? ''),
                     ]) ?>
                 <? else : ?>
                     <a class="reset-search" href="<?= $reset_link ?>" tabindex="0" role="button"
-- 
GitLab