Skip to content

feat(horde): improve ActiveSync admin device table UI#114

Merged
TDannhauer merged 5 commits into
FRAMEWORK_6_0from
feat/activesync-admin-ui
Jun 20, 2026
Merged

feat(horde): improve ActiveSync admin device table UI#114
TDannhauer merged 5 commits into
FRAMEWORK_6_0from
feat/activesync-admin-ui

Conversation

@TDannhauer

@TDannhauer TDannhauer commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Group and sort ActiveSync devices by username in the admin view; user prefs keep sort without grouping
  • Improve device table layout: stacked action buttons, expandable collections list, and theme styling
  • Rename remote-wipe actions to clearer labels (Wipe entire device / Wipe account) and update all locale translations
  • Add Horde_ActiveSync_DeviceTable helper and unit tests

Test plan

  • Open Administration → ActiveSync Devices; verify devices are grouped by username with section headers
  • Verify action buttons stack vertically with equal width
  • Expand collections on a device row; confirm scroll area is usable
  • Confirm wipe button labels in EN and DE (and spot-check another locale)
  • Open user Preferences → ActiveSync; verify sorted device list without group headers
  • Run phpunit test/Unit/ActiveSync/DeviceTableTest.php test/Unit/Prefs/Special/ActivesyncTest.php

Made with Cursor

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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_DeviceTable helper + 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 thread themes/dark/screen.css
Comment thread themes/dark/screen.css
Comment thread locale/de/LC_MESSAGES/horde.po
Comment thread locale/horde.pot
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>
@TDannhauer TDannhauer merged commit eb02bb3 into FRAMEWORK_6_0 Jun 20, 2026
2 of 3 checks passed
Copilot stopped work on behalf of TDannhauer due to an error June 20, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants