feat(horde): improve ActiveSync admin device table UI#114
Merged
Conversation
Group and sort devices by username in the admin view, improve button layout and collections display, and add clearer remote-wipe labels (Wipe entire device / Wipe account). Update translations for all supported locales.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates Horde’s ActiveSync device tables (admin + user prefs) to improve usability by introducing username grouping (admin-only), better action button layout, expandable collections display, clearer wipe wording, and a shared helper for sorting/grouping with unit tests.
Changes:
- Add
Horde_ActiveSync_DeviceTablehelper + unit tests to sort rows and build grouped “entries” for templates. - Update ActiveSync device table template to support grouped headers, stacked action buttons, and expandable collections list.
- Add CSS for the new table UI across themes, and add/adjust several locale strings for the new wipe labels + note text.
Reviewed changes
Copilot reviewed 54 out of 96 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| themes/default/settings.css | Adds ActiveSync device table styling for default theme (settings stylesheet). |
| themes/default/screen.css | Adds ActiveSync device table styling for default theme (screen stylesheet). |
| themes/default_red/screen.css | Adds ActiveSync device table styling for default_red theme. |
| themes/dark/screen.css | Adds ActiveSync device table styling for dark theme. |
| templates/activesync/device_table.html.php | Implements grouped “entries” rendering, new status/action labels, stacked buttons, and expandable collections. |
| templates/prefs/activesync.html.php | Replaces all-caps wipe warning with clearer, more specific note about wipe types. |
| lib/ActiveSync/DeviceTable.php | New helper to sort device rows and generate grouped/ungrouped template entries. |
| admin/activesync.php | Uses the new helper to sort/group admin device rows and updates wipe notifications. |
| lib/Prefs/Special/Activesync.php | Uses the new helper to sort (no grouping) on prefs page; updates account-wipe notifications. |
| test/Unit/ActiveSync/DeviceTableTest.php | New unit tests for sorting/grouping helper. |
| test/Unit/Prefs/Special/ActivesyncTest.php | Updates assertions/messages to match new wording. |
| locale/horde.pot | Adds new msgids for wipe labels + updated prefs note. |
| locale/ar/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/bg/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/bs/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/ca/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/cs/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/da/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/de/LC_MESSAGES/horde.po | Adds/updates translations for new strings used by the device table and notifications. |
| locale/el/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/es/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/et/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/eu/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/fa/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/fi/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/fr/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/gl/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/he/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/hr/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/hu/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/id/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/is/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/it/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/ja/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/km/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/ko/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/lt/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/lv/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/mk/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/nb/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/nl/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/nn/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/pl/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/pt/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/pt_BR/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/ro/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/ru/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/sk/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/sl/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/sv/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/tr/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/uk/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/zh_CN/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
| locale/zh_TW/LC_MESSAGES/horde.po | Adds translations for new wipe labels + updated prefs note. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+4015
to
+4025
| #: templates/activesync/device_table.html.php:103 | ||
| msgid "Wipe entire device" | ||
| msgstr "" | ||
|
|
||
| #: templates/activesync/device_table.html.php:105 | ||
| msgid "Wipe account" | ||
| msgstr "" | ||
|
|
||
| #: templates/prefs/activesync.html.php:37 | ||
| msgid "NOTE: \"Wipe entire device\" may reset the device to factory defaults. \"Wipe account\" deletes only the Exchange account on the device — not on the server." | ||
| msgstr "" |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot stopped work on behalf of
TDannhauer due to an error
June 20, 2026 13:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Horde_ActiveSync_DeviceTablehelper and unit testsTest plan
phpunit test/Unit/ActiveSync/DeviceTableTest.php test/Unit/Prefs/Special/ActivesyncTest.phpMade with Cursor