From 4b2f05796c3fdf8085194e91c70d47eb1f4d2154 Mon Sep 17 00:00:00 2001 From: Fabian Lipp Date: Mon, 13 Jul 2026 00:44:53 +0200 Subject: [PATCH] Implement searchbox also for grouplist --- gruppen.php | 24 ++++++++++++++++++++---- js/angular-app.js | 17 ++++++++++++++++- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/gruppen.php b/gruppen.php index 2046155..1c22e22 100644 --- a/gruppen.php +++ b/gruppen.php @@ -26,8 +26,24 @@

Gruppen anzeigen

+
+
+
+
+ + +
+
+
+
-
+
@@ -44,7 +60,7 @@ class="panel-heading clickable">
  • + ng-repeat="group in ou.groups | filter: list.searchText">
    {{group.cn}} @@ -55,8 +71,8 @@ class="panel-heading clickable"> {{group.description}}

    - Mitglieder anzeigen - Mitglieder ausblenden + Mitglieder anzeigen ({{group.members.length}}) + Mitglieder ausblenden ({{group.members.length}})

    • Keine Mitglieder in dieser Gruppe
    • diff --git a/js/angular-app.js b/js/angular-app.js index 1d4e3ff..57fc3f5 100644 --- a/js/angular-app.js +++ b/js/angular-app.js @@ -404,7 +404,7 @@ - useradminApp.controller('GrouplistController', function() { + useradminApp.controller('GrouplistController', function(filterFilter) { this.groupData = JSON.parse( document.getElementById('jsonGroupOus').textContent); // Don't show members of any group by default @@ -414,6 +414,21 @@ groupOu.groups[j].showMembers = false; } } + + this.searchText = ''; + this.changedSearch = function() { + let ouCount = filterFilter(this.groupData, this.searchText).length; + if (ouCount === 1) { + // Automatically open the only existing ou + $("#accordion>div>div.panel-collapse").collapse('show') + } + }; + this.ouFilterPredicate = function(searchText) { + return function(ouItem) { + let filteredGroups = filterFilter(ouItem.groups, searchText); + return (filteredGroups.length > 0); + } + } });