diff --git a/admin/activesync.php b/admin/activesync.php index a54a2de13..2ced65f13 100644 --- a/admin/activesync.php +++ b/admin/activesync.php @@ -59,17 +59,17 @@ switch ($actionID) { case 'wipe': $state->setDeviceRWStatus($deviceID, Horde_ActiveSync::RWSTATUS_PENDING); - $GLOBALS['notification']->push(_("A device wipe has been requested. Device will be wiped on next syncronization attempt."), 'horde.success'); + $GLOBALS['notification']->push(_("A full device wipe has been requested. The device will be reset on the next synchronization."), 'horde.success'); break; case 'accountwipe': $device = $state->loadDeviceInfo($deviceID); if (!Horde_ActiveSync::deviceSupportsAccountOnlyWipe($device->version ?? null)) { - $GLOBALS['notification']->push(_("Account-only wipe is only available for devices that support EAS 16.1 or newer."), 'horde.error'); + $GLOBALS['notification']->push(_("Account-only wipe requires a device with EAS 16.1 or newer."), 'horde.error'); break; } $state->setDeviceRWStatus($deviceID, Horde_ActiveSync::RWSTATUS_ACCOUNTONLY_PENDING); - $GLOBALS['notification']->push(_("An account-only wipe has been requested. The account will be removed on next synchronization attempt."), 'horde.success'); + $GLOBALS['notification']->push(_("An account-only wipe has been requested. The account will be removed from the device on the next synchronization."), 'horde.success'); break; case 'cancelwipe': @@ -140,7 +140,7 @@ $view->reset = $selfurl->copy()->add('reset', 1); $devs = []; $js = []; - $collections = []; + $rows = []; foreach (array_values($devices) as $device) { $dev = $state->loadDeviceInfo($device['device_id'], $device['device_user']); try { @@ -166,10 +166,16 @@ _("Last synckey") => $c['lastsynckey'], ]; } - $collections[] = $collection; + $rows[] = [ + 'device' => $dev, + 'collections' => $collection, + ]; } + $rows = Horde_ActiveSync_DeviceTable::sortRows($rows, true); + $view->entries = Horde_ActiveSync_DeviceTable::toEntries($rows, true); + $view->groupByUser = true; $view->devices = $devs; - $view->collections = $collections; + $view->collections = array_column($rows, 'collections'); $view->isAdmin = true; $page_output->addScriptFile('activesyncadmin.js', 'horde'); diff --git a/lib/ActiveSync/DeviceTable.php b/lib/ActiveSync/DeviceTable.php new file mode 100644 index 000000000..18385550e --- /dev/null +++ b/lib/ActiveSync/DeviceTable.php @@ -0,0 +1,93 @@ + $rows + * @param bool $byUser If true, sort by username first. + */ + public static function sortRows(array $rows, bool $byUser = true): array + { + usort( + $rows, + function (array $a, array $b) use ($byUser) { + if ($byUser) { + $cmp = strcasecmp($a['device']->user, $b['device']->user); + if ($cmp !== 0) { + return $cmp; + } + } + + $cmp = strcasecmp($a['device']->deviceType, $b['device']->deviceType); + if ($cmp !== 0) { + return $cmp; + } + + return strcasecmp($a['device']->id, $b['device']->id); + } + ); + + return $rows; + } + + /** + * Convert rows to template entries, optionally with user group headers. + * + * @param array $rows + * + * @return array> + */ + public static function toEntries(array $rows, bool $groupByUser = false): array + { + if (!$groupByUser) { + $entries = []; + foreach ($rows as $row) { + $entries[] = [ + 'type' => 'device', + 'device' => $row['device'], + 'collections' => $row['collections'], + ]; + } + + return $entries; + } + + $groups = []; + foreach ($rows as $row) { + $groups[$row['device']->user][] = $row; + } + ksort($groups, SORT_NATURAL | SORT_FLAG_CASE); + + $entries = []; + foreach ($groups as $user => $userRows) { + $entries[] = [ + 'type' => 'header', + 'user' => $user, + 'count' => count($userRows), + ]; + foreach ($userRows as $row) { + $entries[] = [ + 'type' => 'device', + 'device' => $row['device'], + 'collections' => $row['collections'], + ]; + } + } + + return $entries; + } +} diff --git a/lib/Prefs/Special/Activesync.php b/lib/Prefs/Special/Activesync.php index ed9c2b7d0..99136b0c3 100644 --- a/lib/Prefs/Special/Activesync.php +++ b/lib/Prefs/Special/Activesync.php @@ -46,7 +46,7 @@ public function display(Horde_Core_Prefs_Ui $ui) $view->reset = $selfurl->copy()->add('reset', 1); $devs = []; $js = []; - $collections = []; + $rows = []; foreach ($devices as $device) { $dev = $state->loadDeviceInfo($device['device_id'], $registry->getAuth()); try { @@ -72,9 +72,14 @@ public function display(Horde_Core_Prefs_Ui $ui) _("Last synckey") => $c['lastsynckey'], ]; } - $collections[] = $collection; + $rows[] = [ + 'device' => $dev, + 'collections' => $collection, + ]; } - $view->collections = $collections; + $rows = Horde_ActiveSync_DeviceTable::sortRows($rows, false); + $view->entries = Horde_ActiveSync_DeviceTable::toEntries($rows, false); + $view->collections = array_column($rows, 'collections'); // Identities if (!$prefs->isLocked('activesync_identity')) { $ident = $GLOBALS['injector'] @@ -119,10 +124,10 @@ public function update(Horde_Core_Prefs_Ui $ui) } $device = $state->loadDeviceInfo($ui->vars->accountwipeid, $auth); if (!Horde_ActiveSync::deviceSupportsAccountOnlyWipe($device->version ?? null)) { - $notification->push(_("Account-only wipe is only available for devices that support EAS 16.1 or newer."), 'horde.error'); + $notification->push(_("Account-only wipe requires a device with EAS 16.1 or newer."), 'horde.error'); } else { $state->setDeviceRWStatus($ui->vars->accountwipeid, Horde_ActiveSync::RWSTATUS_ACCOUNTONLY_PENDING); - $notification->push(sprintf(_("An account-only remote wipe for device id %s has been initiated. The device will remove this account during the next synchronisation."), $ui->vars->accountwipeid)); + $notification->push(sprintf(_("An account-only wipe for device %s has been initiated. The account will be removed during the next synchronisation."), $ui->vars->accountwipeid)); } } elseif ($ui->vars->cancelwipe) { if (!$state->deviceExists($ui->vars->cancelwipe, $auth)) { diff --git a/locale/ar/LC_MESSAGES/horde.mo b/locale/ar/LC_MESSAGES/horde.mo index 7331caa2e..daf88fc10 100644 Binary files a/locale/ar/LC_MESSAGES/horde.mo and b/locale/ar/LC_MESSAGES/horde.mo differ diff --git a/locale/ar/LC_MESSAGES/horde.po b/locale/ar/LC_MESSAGES/horde.po index b4538ecce..8cda39644 100644 --- a/locale/ar/LC_MESSAGES/horde.po +++ b/locale/ar/LC_MESSAGES/horde.po @@ -4141,3 +4141,13 @@ msgstr "فشل" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "مسح الجهاز بالكامل" + +msgid "Wipe account" +msgstr "مسح الحساب" + +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 "ملاحظة: قد يؤدي «مسح الجهاز بالكامل» إلى إعادة ضبط الجهاز على إعدادات المصنع. «مسح الحساب» يحذف حساب Exchange على الجهاز فقط — وليس على الخادم." + diff --git a/locale/bg/LC_MESSAGES/horde.mo b/locale/bg/LC_MESSAGES/horde.mo index ea38bdc70..994ffa85a 100644 Binary files a/locale/bg/LC_MESSAGES/horde.mo and b/locale/bg/LC_MESSAGES/horde.mo differ diff --git a/locale/bg/LC_MESSAGES/horde.po b/locale/bg/LC_MESSAGES/horde.po index bea614bc5..9782b74a9 100644 --- a/locale/bg/LC_MESSAGES/horde.po +++ b/locale/bg/LC_MESSAGES/horde.po @@ -4226,3 +4226,13 @@ msgstr "провалено" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Изтриване на цялото устройство" + +msgid "Wipe account" +msgstr "Изтриване на акаунта" + +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 "БЕЛЕЖКА: „Изтриване на цялото устройство“ може да нулира устройството до фабрични настройки. „Изтриване на акаунта“ изтрива само Exchange акаунта на устройството — не на сървъра." + diff --git a/locale/bs/LC_MESSAGES/horde.mo b/locale/bs/LC_MESSAGES/horde.mo index 7a74e27cc..49153ffe9 100644 Binary files a/locale/bs/LC_MESSAGES/horde.mo and b/locale/bs/LC_MESSAGES/horde.mo differ diff --git a/locale/bs/LC_MESSAGES/horde.po b/locale/bs/LC_MESSAGES/horde.po index c838d7886..e52b3464d 100644 --- a/locale/bs/LC_MESSAGES/horde.po +++ b/locale/bs/LC_MESSAGES/horde.po @@ -4332,3 +4332,13 @@ msgstr "Nekategorisano" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Brisanje cijelog uređaja" + +msgid "Wipe account" +msgstr "Brisanje računa" + +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 "NAPOMENA: „Brisanje cijelog uređaja“ može vratiti uređaj na tvorničke postavke. „Brisanje računa“ briše samo Exchange račun na uređaju — ne na serveru." + diff --git a/locale/ca/LC_MESSAGES/horde.mo b/locale/ca/LC_MESSAGES/horde.mo index 832947800..a09d9936a 100644 Binary files a/locale/ca/LC_MESSAGES/horde.mo and b/locale/ca/LC_MESSAGES/horde.mo differ diff --git a/locale/ca/LC_MESSAGES/horde.po b/locale/ca/LC_MESSAGES/horde.po index 227795851..1bbfe8c01 100644 --- a/locale/ca/LC_MESSAGES/horde.po +++ b/locale/ca/LC_MESSAGES/horde.po @@ -4311,3 +4311,13 @@ msgstr "unificat" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Esborrar el dispositiu sencer" + +msgid "Wipe account" +msgstr "Esborrar el compte" + +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 "NOTA: «Esborrar el dispositiu sencer» pot restablir el dispositiu a la configuració de fàbrica. «Esborrar el compte» suprimeix només el compte Exchange al dispositiu — no al servidor." + diff --git a/locale/cs/LC_MESSAGES/horde.mo b/locale/cs/LC_MESSAGES/horde.mo index 28d32cbad..c606ef862 100644 Binary files a/locale/cs/LC_MESSAGES/horde.mo and b/locale/cs/LC_MESSAGES/horde.mo differ diff --git a/locale/cs/LC_MESSAGES/horde.po b/locale/cs/LC_MESSAGES/horde.po index 80d4d5868..9e804fae9 100644 --- a/locale/cs/LC_MESSAGES/horde.po +++ b/locale/cs/LC_MESSAGES/horde.po @@ -3909,3 +3909,13 @@ msgstr "pro potvrzení napište heslo dvakrát" #: admin/config/diff.php:61 admin/config/diff.php:71 msgid "unified" msgstr "sjednocený" + +msgid "Wipe entire device" +msgstr "Vymazat celé zařízení" + +msgid "Wipe account" +msgstr "Vymazat účet" + +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 "POZNÁMKA: „Vymazat celé zařízení“ může obnovit tovární nastavení zařízení. „Vymazat účet“ smaže pouze účet Exchange v zařízení — ne na serveru." + diff --git a/locale/da/LC_MESSAGES/horde.mo b/locale/da/LC_MESSAGES/horde.mo index 59165fa99..d0e58cf45 100644 Binary files a/locale/da/LC_MESSAGES/horde.mo and b/locale/da/LC_MESSAGES/horde.mo differ diff --git a/locale/da/LC_MESSAGES/horde.po b/locale/da/LC_MESSAGES/horde.po index 8e04254bd..a56ae3629 100644 --- a/locale/da/LC_MESSAGES/horde.po +++ b/locale/da/LC_MESSAGES/horde.po @@ -3858,3 +3858,13 @@ msgstr "samlet" #: lib/Block/Weather.php:35 msgid "weather" msgstr "weather" + +msgid "Wipe entire device" +msgstr "Slet hele enheden" + +msgid "Wipe account" +msgstr "Slet konto" + +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 "BEMÆRK: „Slet hele enheden“ kan nulstille enheden til fabriksindstillinger. „Slet konto“ sletter kun Exchange-kontoen på enheden — ikke på serveren." + diff --git a/locale/de/LC_MESSAGES/horde.mo b/locale/de/LC_MESSAGES/horde.mo index 6b43cfccc..06c2115e0 100644 Binary files a/locale/de/LC_MESSAGES/horde.mo and b/locale/de/LC_MESSAGES/horde.mo differ diff --git a/locale/de/LC_MESSAGES/horde.po b/locale/de/LC_MESSAGES/horde.po index 33e83d695..86deebad0 100644 --- a/locale/de/LC_MESSAGES/horde.po +++ b/locale/de/LC_MESSAGES/horde.po @@ -4173,3 +4173,88 @@ msgstr "Geben Sie das Passwort ein zweites Mal zur Bestätigung ein" #: admin/config/diff.php:61 admin/config/diff.php:71 msgid "unified" msgstr "unified" + +#: templates/activesync/device_table.html.php:59 +msgid "Cancel wipe" +msgstr "Löschung abbrechen" + +#: templates/activesync/device_table.html.php:52 +#: templates/activesync/device_table.html.php:54 +#: templates/activesync/device_table.html.php:62 +msgid "Remove device state" +msgstr "Gerätestatus entfernen" + +#: templates/activesync/device_table.html.php:15 +msgid "Device wipe pending" +msgstr "Voll-Wipe ausstehend" + +#: templates/activesync/device_table.html.php:17 +msgid "Account wipe pending" +msgstr "Konto-Löschung ausstehend" + +#: templates/activesync/device_table.html.php:19 +msgid "Device wiped. Remove device state to allow the device to reconnect." +msgstr "" +"Gerät vollständig gelöscht. Entfernen Sie den Gerätestatus, damit sich das " +"Gerät erneut verbinden kann." + +#: templates/activesync/device_table.html.php:21 +msgid "Account wiped. Remove device state to allow the device to reconnect." +msgstr "" +"Konto gelöscht. Entfernen Sie den Gerätestatus, damit sich das Gerät erneut " +"verbinden kann." + +#: admin/activesync.php:62 +msgid "A full device wipe has been requested. The device will be reset on the next synchronization." +msgstr "" +"Voll-Wipe wurde angefordert. Das Gerät wird beim nächsten Sync " +"zurückgesetzt." + +#: admin/activesync.php:68 lib/Prefs/Special/Activesync.php:122 +msgid "Account-only wipe requires a device with EAS 16.1 or newer." +msgstr "" +"Nur-Konto-Löschung erfordert ein Gerät mit EAS 16.1 oder neuer." + +#: admin/activesync.php:72 +msgid "An account-only wipe has been requested. The account will be removed from the device on the next synchronization." +msgstr "" +"Nur-Konto-Löschung wurde angefordert. Das Konto wird beim nächsten Sync vom " +"Gerät entfernt." + +#: lib/Prefs/Special/Activesync.php:125 +msgid "An account-only wipe for device %s has been initiated. The account will be removed during the next synchronisation." +msgstr "" +"Nur-Konto-Löschung für Gerät %s wurde gestartet. Das Konto wird beim " +"nächsten Sync entfernt." + +#: templates/prefs/activesync.html.php:37 +msgid "" +"NOTE: \"Wipe device on device (full)\" may reset the device to factory " +"defaults. \"Wipe account on device\" deletes only the Exchange account on " +"the device — not on the server." +msgstr "" +"Hinweis: „Gerät am Gerät löschen (Voll-Wipe)“ kann das Gerät auf " +"Werkseinstellungen zurücksetzen. „Konto am Gerät löschen“ löscht nur das " +"Exchange-Konto auf dem Gerät — nicht auf dem Server." + +#: templates/activesync/device_table.html.php:59 +msgid "%d collection" +msgid_plural "%d collections" +msgstr[0] "%d Collection" +msgstr[1] "%d Collections" + +#: templates/activesync/device_table.html.php:33 +msgid "%d device" +msgid_plural "%d devices" +msgstr[0] "%d Gerät" +msgstr[1] "%d Geräte" + +msgid "Wipe entire device" +msgstr "Gesamtes Gerät löschen" + +msgid "Wipe account" +msgstr "Konto löschen" + +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 "Hinweis: „Gesamtes Gerät löschen“ kann das Gerät auf Werkseinstellungen zurücksetzen. „Konto löschen“ löscht nur das Exchange-Konto auf dem Gerät — nicht auf dem Server." + diff --git a/locale/el/LC_MESSAGES/horde.mo b/locale/el/LC_MESSAGES/horde.mo index 6351e583c..f0e82d184 100644 Binary files a/locale/el/LC_MESSAGES/horde.mo and b/locale/el/LC_MESSAGES/horde.mo differ diff --git a/locale/el/LC_MESSAGES/horde.po b/locale/el/LC_MESSAGES/horde.po index f02d5fd05..c8f3a0806 100644 --- a/locale/el/LC_MESSAGES/horde.po +++ b/locale/el/LC_MESSAGES/horde.po @@ -3913,3 +3913,13 @@ msgstr "Γράψτε τον κωδικό δύο φορές για επιβεβα #: admin/config/diff.php:61 admin/config/diff.php:71 msgid "unified" msgstr "ενοποιημένα" + +msgid "Wipe entire device" +msgstr "Διαγραφή ολόκληρης της συσκευής" + +msgid "Wipe account" +msgstr "Διαγραφή λογαριασμού" + +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 "ΣΗΜΕΙΩΣΗ: Το «Διαγραφή ολόκληρης της συσκευής» μπορεί να επαναφέρει τη συσκευή στις εργοστασιακές ρυθμίσεις. Το «Διαγραφή λογαριασμού» διαγράφει μόνο τον λογαριασμό Exchange στη συσκευή — όχι στον διακομιστή." + diff --git a/locale/es/LC_MESSAGES/horde.mo b/locale/es/LC_MESSAGES/horde.mo index 59cc8f2c6..ce50599d6 100644 Binary files a/locale/es/LC_MESSAGES/horde.mo and b/locale/es/LC_MESSAGES/horde.mo differ diff --git a/locale/es/LC_MESSAGES/horde.po b/locale/es/LC_MESSAGES/horde.po index e41310f66..46d63c756 100644 --- a/locale/es/LC_MESSAGES/horde.po +++ b/locale/es/LC_MESSAGES/horde.po @@ -3922,3 +3922,13 @@ msgstr "unificado" #: lib/Block/Weather.php:35 msgid "weather" msgstr "tiempo" + +msgid "Wipe entire device" +msgstr "Borrar dispositivo completo" + +msgid "Wipe account" +msgstr "Borrar cuenta" + +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 "NOTA: «Borrar dispositivo completo» puede restablecer el dispositivo a los valores de fábrica. «Borrar cuenta» elimina solo la cuenta Exchange en el dispositivo — no en el servidor." + diff --git a/locale/et/LC_MESSAGES/horde.mo b/locale/et/LC_MESSAGES/horde.mo index 1324d400c..e6d5ecfd9 100644 Binary files a/locale/et/LC_MESSAGES/horde.mo and b/locale/et/LC_MESSAGES/horde.mo differ diff --git a/locale/et/LC_MESSAGES/horde.po b/locale/et/LC_MESSAGES/horde.po index df01b9d84..9d08f20b2 100644 --- a/locale/et/LC_MESSAGES/horde.po +++ b/locale/et/LC_MESSAGES/horde.po @@ -4242,3 +4242,13 @@ msgstr "ühitatud" #: lib/Block/Weatherdotcom.php:34 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Kustuta kogu seade" + +msgid "Wipe account" +msgstr "Kustuta konto" + +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 "MÄRKUS: „Kustuta kogu seade“ võib seadme tehaseseadetele taastada. „Kustuta konto“ kustutab ainult Exchange’i konto seadmes — mitte serveris." + diff --git a/locale/eu/LC_MESSAGES/horde.mo b/locale/eu/LC_MESSAGES/horde.mo index 2d981e702..1b4c359a0 100644 Binary files a/locale/eu/LC_MESSAGES/horde.mo and b/locale/eu/LC_MESSAGES/horde.mo differ diff --git a/locale/eu/LC_MESSAGES/horde.po b/locale/eu/LC_MESSAGES/horde.po index cd2cb07ee..122e41750 100644 --- a/locale/eu/LC_MESSAGES/horde.po +++ b/locale/eu/LC_MESSAGES/horde.po @@ -3734,3 +3734,13 @@ msgstr "bateratua" #: lib/Block/Weather.php:33 msgid "weather" msgstr "eguraldia" + +msgid "Wipe entire device" +msgstr "Gailu osoa ezabatu" + +msgid "Wipe account" +msgstr "Kontua ezabatu" + +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 "OHARRA: «Gailu osoa ezabatu» gailua fabrika-ezarpenetara berrezar dezake. «Kontua ezabatu» Exchange kontua gailuan soilik ezabatzen du — ez zerbitzarian." + diff --git a/locale/fa/LC_MESSAGES/horde.mo b/locale/fa/LC_MESSAGES/horde.mo index 81a545b88..db9bf196b 100644 Binary files a/locale/fa/LC_MESSAGES/horde.mo and b/locale/fa/LC_MESSAGES/horde.mo differ diff --git a/locale/fa/LC_MESSAGES/horde.po b/locale/fa/LC_MESSAGES/horde.po index 859525961..a5e06e278 100644 --- a/locale/fa/LC_MESSAGES/horde.po +++ b/locale/fa/LC_MESSAGES/horde.po @@ -4464,3 +4464,13 @@ msgstr "یگانه شده" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "پاک‌سازی کل دستگاه" + +msgid "Wipe account" +msgstr "پاک‌سازی حساب" + +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 "توجه: «پاک‌سازی کل دستگاه» ممکن است دستگاه را به تنظیمات کارخانه بازنشانی کند. «پاک‌سازی حساب» فقط حساب Exchange را روی دستگاه حذف می‌کند — نه روی سرور." + diff --git a/locale/fi/LC_MESSAGES/horde.mo b/locale/fi/LC_MESSAGES/horde.mo index 07bb12d70..224e3461d 100644 Binary files a/locale/fi/LC_MESSAGES/horde.mo and b/locale/fi/LC_MESSAGES/horde.mo differ diff --git a/locale/fi/LC_MESSAGES/horde.po b/locale/fi/LC_MESSAGES/horde.po index 1823b8717..1f9b4ef64 100644 --- a/locale/fi/LC_MESSAGES/horde.po +++ b/locale/fi/LC_MESSAGES/horde.po @@ -3736,3 +3736,13 @@ msgstr "unified" #: lib/Block/Weather.php:33 msgid "weather" msgstr "sää" + +msgid "Wipe entire device" +msgstr "Pyyhi koko laite" + +msgid "Wipe account" +msgstr "Pyyhi tili" + +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 "HUOM: ”Pyyhi koko laite” voi palauttaa laitteen tehdasasetuksiin. ”Pyyhi tili” poistaa vain Exchange-tilin laitteelta — ei palvelimelta." + diff --git a/locale/fr/LC_MESSAGES/horde.mo b/locale/fr/LC_MESSAGES/horde.mo index 2979f93de..8fa6082e2 100644 Binary files a/locale/fr/LC_MESSAGES/horde.mo and b/locale/fr/LC_MESSAGES/horde.mo differ diff --git a/locale/fr/LC_MESSAGES/horde.po b/locale/fr/LC_MESSAGES/horde.po index 54a32eaa8..51a187c8d 100644 --- a/locale/fr/LC_MESSAGES/horde.po +++ b/locale/fr/LC_MESSAGES/horde.po @@ -4194,3 +4194,13 @@ msgstr "unifié" #~ msgstr "" #~ "Aucune version trouvée dans la configuration originale. Cela ne devrait " #~ "pas arriver, votre installation peut être defectueuse." + +msgid "Wipe entire device" +msgstr "Effacer l'appareil entier" + +msgid "Wipe account" +msgstr "Effacer le compte" + +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 "REMARQUE : « Effacer l'appareil entier » peut réinitialiser l'appareil aux paramètres d'usine. « Effacer le compte » supprime uniquement le compte Exchange sur l'appareil — pas sur le serveur." + diff --git a/locale/gl/LC_MESSAGES/horde.mo b/locale/gl/LC_MESSAGES/horde.mo index b515bf36e..41035a290 100644 Binary files a/locale/gl/LC_MESSAGES/horde.mo and b/locale/gl/LC_MESSAGES/horde.mo differ diff --git a/locale/gl/LC_MESSAGES/horde.po b/locale/gl/LC_MESSAGES/horde.po index ce0f80a5f..1df4864ca 100644 --- a/locale/gl/LC_MESSAGES/horde.po +++ b/locale/gl/LC_MESSAGES/horde.po @@ -10099,3 +10099,13 @@ msgstr "weather.com" #, php-format msgid "you must enter less than %d." msgstr "" + +msgid "Wipe entire device" +msgstr "Borrar o dispositivo enteiro" + +msgid "Wipe account" +msgstr "Borrar a conta" + +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 "NOTA: «Borrar o dispositivo enteiro» pode restablecer o dispositivo á configuración de fábrica. «Borrar a conta» elimina só a conta Exchange no dispositivo — non no servidor." + diff --git a/locale/he/LC_MESSAGES/horde.mo b/locale/he/LC_MESSAGES/horde.mo index a6468b4e3..790965584 100644 Binary files a/locale/he/LC_MESSAGES/horde.mo and b/locale/he/LC_MESSAGES/horde.mo differ diff --git a/locale/he/LC_MESSAGES/horde.po b/locale/he/LC_MESSAGES/horde.po index 3e3aa74f3..9cd8e9ea7 100644 --- a/locale/he/LC_MESSAGES/horde.po +++ b/locale/he/LC_MESSAGES/horde.po @@ -4119,3 +4119,13 @@ msgstr "" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "מחיקת המכשיר כולו" + +msgid "Wipe account" +msgstr "מחיקת החשבון" + +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 "הערה: \"מחיקת המכשיר כולו\" עשויה לאפס את המכשיר להגדרות היצרן. \"מחיקת החשבון\" מוחקת רק את חשבון Exchange במכשיר — לא בשרת." + diff --git a/locale/horde.pot b/locale/horde.pot index 2256931c3..dddc2c2dc 100644 --- a/locale/horde.pot +++ b/locale/horde.pot @@ -4011,3 +4011,53 @@ msgstr "" #: admin/config/diff.php:62 admin/config/diff.php:72 msgid "unified" msgstr "" + +#: templates/activesync/device_table.html.php:103 +msgid "Wipe entire device" +msgstr "" + +#: templates/activesync/device_table.html.php:105 +msgid "Wipe account" +msgstr "" + +#: templates/activesync/device_table.html.php:109 +msgid "Cancel wipe" +msgstr "" + +#: templates/activesync/device_table.html.php:111 +msgid "Remove device state" +msgstr "" + +#: templates/activesync/device_table.html.php:40 +msgid "Device wipe pending" +msgstr "" + +#: templates/activesync/device_table.html.php:42 +msgid "Account wipe pending" +msgstr "" + +#: templates/activesync/device_table.html.php:44 +msgid "Device wiped. Remove device state to allow the device to reconnect." +msgstr "" + +#: templates/activesync/device_table.html.php:46 +msgid "Account wiped. Remove device state to allow the device to reconnect." +msgstr "" + +#: templates/activesync/device_table.html.php:33 +#, php-format +msgid "%d device" +msgid_plural "%d devices" +msgstr[0] "" +msgstr[1] "" + +#: templates/activesync/device_table.html.php:82 +#, php-format +msgid "%d collection" +msgid_plural "%d collections" +msgstr[0] "" +msgstr[1] "" + +#: 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 "" diff --git a/locale/hr/LC_MESSAGES/horde.mo b/locale/hr/LC_MESSAGES/horde.mo index 63971c7c8..524a64e19 100644 Binary files a/locale/hr/LC_MESSAGES/horde.mo and b/locale/hr/LC_MESSAGES/horde.mo differ diff --git a/locale/hr/LC_MESSAGES/horde.po b/locale/hr/LC_MESSAGES/horde.po index d0c3b1be4..456f670f3 100644 --- a/locale/hr/LC_MESSAGES/horde.po +++ b/locale/hr/LC_MESSAGES/horde.po @@ -4332,3 +4332,13 @@ msgstr "objedinjen" #: lib/Block/Weatherdotcom.php:34 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Brisanje cijelog uređaja" + +msgid "Wipe account" +msgstr "Brisanje računa" + +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 "NAPOMENA: „Brisanje cijelog uređaja“ može vratiti uređaj na tvorničke postavke. „Brisanje računa“ briše samo Exchange račun na uređaju — ne na poslužitelju." + diff --git a/locale/hu/LC_MESSAGES/horde.mo b/locale/hu/LC_MESSAGES/horde.mo index ca0b13be8..5c6d51f9e 100644 Binary files a/locale/hu/LC_MESSAGES/horde.mo and b/locale/hu/LC_MESSAGES/horde.mo differ diff --git a/locale/hu/LC_MESSAGES/horde.po b/locale/hu/LC_MESSAGES/horde.po index 302800f82..6b1b5e29b 100644 --- a/locale/hu/LC_MESSAGES/horde.po +++ b/locale/hu/LC_MESSAGES/horde.po @@ -3917,3 +3917,13 @@ msgstr "egységesített" #: lib/Block/Weather.php:35 msgid "weather" msgstr "időjárás" + +msgid "Wipe entire device" +msgstr "Teljes eszköz törlése" + +msgid "Wipe account" +msgstr "Fiók törlése" + +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 "MEGJEGYZÉS: A „Teljes eszköz törlése” visszaállíthatja az eszközt gyári beállításokra. A „Fiók törlése” csak az Exchange-fiókot törli az eszközről — nem a szerverről." + diff --git a/locale/id/LC_MESSAGES/horde.mo b/locale/id/LC_MESSAGES/horde.mo index 78c63455a..8408baea1 100644 Binary files a/locale/id/LC_MESSAGES/horde.mo and b/locale/id/LC_MESSAGES/horde.mo differ diff --git a/locale/id/LC_MESSAGES/horde.po b/locale/id/LC_MESSAGES/horde.po index 8f7315d80..a3cd2c6a1 100644 --- a/locale/id/LC_MESSAGES/horde.po +++ b/locale/id/LC_MESSAGES/horde.po @@ -4272,3 +4272,13 @@ msgstr "menyatukan" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Hapus seluruh perangkat" + +msgid "Wipe account" +msgstr "Hapus akun" + +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 "CATATAN: \"Hapus seluruh perangkat\" dapat mengatur ulang perangkat ke pengaturan pabrik. \"Hapus akun\" hanya menghapus akun Exchange di perangkat — bukan di server." + diff --git a/locale/is/LC_MESSAGES/horde.mo b/locale/is/LC_MESSAGES/horde.mo index 34eca4b13..14e985116 100644 Binary files a/locale/is/LC_MESSAGES/horde.mo and b/locale/is/LC_MESSAGES/horde.mo differ diff --git a/locale/is/LC_MESSAGES/horde.po b/locale/is/LC_MESSAGES/horde.po index 92c83527b..b5b71f8a1 100644 --- a/locale/is/LC_MESSAGES/horde.po +++ b/locale/is/LC_MESSAGES/horde.po @@ -4326,3 +4326,13 @@ msgstr "Ólesið" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Eyða öllu tækinu" + +msgid "Wipe account" +msgstr "Eyða reikningi" + +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 "ATHUGIÐ: „Eyða öllu tækinu“ getur endurstillt tækið í verksmiðjustillingar. „Eyða reikningi“ eyðir aðeins Exchange-reikningnum á tækinu — ekki á netþjóninum." + diff --git a/locale/it/LC_MESSAGES/horde.mo b/locale/it/LC_MESSAGES/horde.mo index 8cb5e5635..e5b0f96cf 100644 Binary files a/locale/it/LC_MESSAGES/horde.mo and b/locale/it/LC_MESSAGES/horde.mo differ diff --git a/locale/it/LC_MESSAGES/horde.po b/locale/it/LC_MESSAGES/horde.po index e32f80906..465fa3510 100644 --- a/locale/it/LC_MESSAGES/horde.po +++ b/locale/it/LC_MESSAGES/horde.po @@ -3985,3 +3985,13 @@ msgstr "digita la password due volte per confermare" #: admin/config/diff.php:61 admin/config/diff.php:71 msgid "unified" msgstr "unificato" + +msgid "Wipe entire device" +msgstr "Cancella intero dispositivo" + +msgid "Wipe account" +msgstr "Cancella account" + +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 "NOTA: «Cancella intero dispositivo» può ripristinare le impostazioni di fabbrica del dispositivo. «Cancella account» elimina solo l'account Exchange sul dispositivo — non sul server." + diff --git a/locale/ja/LC_MESSAGES/horde.mo b/locale/ja/LC_MESSAGES/horde.mo index 1a4295d1b..6baabef1c 100644 Binary files a/locale/ja/LC_MESSAGES/horde.mo and b/locale/ja/LC_MESSAGES/horde.mo differ diff --git a/locale/ja/LC_MESSAGES/horde.po b/locale/ja/LC_MESSAGES/horde.po index c93e962b9..0f1f901bf 100644 --- a/locale/ja/LC_MESSAGES/horde.po +++ b/locale/ja/LC_MESSAGES/horde.po @@ -3850,3 +3850,13 @@ msgstr "ユニファイド" #: lib/Block/Weather.php:35 msgid "weather" msgstr "天気" + +msgid "Wipe entire device" +msgstr "デバイス全体をワイプ" + +msgid "Wipe account" +msgstr "アカウントをワイプ" + +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 "注: 「デバイス全体をワイプ」はデバイスを出荷時設定に戻す場合があります。「アカウントをワイプ」はデバイス上の Exchange アカウントのみを削除します(サーバー上ではありません)。" + diff --git a/locale/km/LC_MESSAGES/horde.mo b/locale/km/LC_MESSAGES/horde.mo index ec07013bd..e64d2e57d 100644 Binary files a/locale/km/LC_MESSAGES/horde.mo and b/locale/km/LC_MESSAGES/horde.mo differ diff --git a/locale/km/LC_MESSAGES/horde.po b/locale/km/LC_MESSAGES/horde.po index 87ae33b24..44c7588c6 100644 --- a/locale/km/LC_MESSAGES/horde.po +++ b/locale/km/LC_MESSAGES/horde.po @@ -4234,3 +4234,13 @@ msgstr "មិន​បាន​រៀបចំ" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "លុបឧបករណ៍ទាំងមូល" + +msgid "Wipe account" +msgstr "លុបគណនី" + +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 "ចំណាំ៖ «លុបឧបករណ៍ទាំងមូល» អាចកំណត់ឧបករណ៍ឡើងវិញទៅការកំណត់ចេញពីរោងចក្រ។ «លុបគណនី» លុបតែគណនី Exchange នៅលើឧបករណ៍ — មិនមែននៅលើម៉ាស៊ីនមេទេ។" + diff --git a/locale/ko/LC_MESSAGES/horde.mo b/locale/ko/LC_MESSAGES/horde.mo index 77f7065d6..27ca7be9b 100644 Binary files a/locale/ko/LC_MESSAGES/horde.mo and b/locale/ko/LC_MESSAGES/horde.mo differ diff --git a/locale/ko/LC_MESSAGES/horde.po b/locale/ko/LC_MESSAGES/horde.po index e260ce1c4..121319998 100644 --- a/locale/ko/LC_MESSAGES/horde.po +++ b/locale/ko/LC_MESSAGES/horde.po @@ -3845,3 +3845,13 @@ msgstr "분류되지 않음" #: lib/Block/Weather.php:35 msgid "weather" msgstr "날씨" + +msgid "Wipe entire device" +msgstr "기기 전체 지우기" + +msgid "Wipe account" +msgstr "계정 지우기" + +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 "참고: \"기기 전체 지우기\"는 기기를 공장 초기화할 수 있습니다. \"계정 지우기\"는 기기의 Exchange 계정만 삭제합니다 — 서버가 아닙니다." + diff --git a/locale/lt/LC_MESSAGES/horde.mo b/locale/lt/LC_MESSAGES/horde.mo index dcbce43b7..4606fd312 100644 Binary files a/locale/lt/LC_MESSAGES/horde.mo and b/locale/lt/LC_MESSAGES/horde.mo differ diff --git a/locale/lt/LC_MESSAGES/horde.po b/locale/lt/LC_MESSAGES/horde.po index 28a89cb55..c2c5e6fbb 100644 --- a/locale/lt/LC_MESSAGES/horde.po +++ b/locale/lt/LC_MESSAGES/horde.po @@ -4168,3 +4168,13 @@ msgstr "unifikuoti" #: lib/Block/Weatherdotcom.php:34 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Ištrinti visą įrenginį" + +msgid "Wipe account" +msgstr "Ištrinti paskyrą" + +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 "PASTABA: „Ištrinti visą įrenginį“ gali atkurti gamyklinius įrenginio nustatymus. „Ištrinti paskyrą“ ištrina tik Exchange paskyrą įrenginyje — ne serveryje." + diff --git a/locale/lv/LC_MESSAGES/horde.mo b/locale/lv/LC_MESSAGES/horde.mo index c18bc312b..b03f4ad22 100644 Binary files a/locale/lv/LC_MESSAGES/horde.mo and b/locale/lv/LC_MESSAGES/horde.mo differ diff --git a/locale/lv/LC_MESSAGES/horde.po b/locale/lv/LC_MESSAGES/horde.po index 0ac46b29e..be3015c01 100644 --- a/locale/lv/LC_MESSAGES/horde.po +++ b/locale/lv/LC_MESSAGES/horde.po @@ -3745,3 +3745,13 @@ msgstr "vienots" #: lib/Block/Weather.php:33 msgid "weather" msgstr "Laika apstākļi" + +msgid "Wipe entire device" +msgstr "Dzēst visu ierīci" + +msgid "Wipe account" +msgstr "Dzēst kontu" + +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 "PIEZĪME: „Dzēst visu ierīci“ var atjaunot ierīces rūpnīcas iestatījumus. „Dzēst kontu“ dzēš tikai Exchange kontu ierīcē — ne serverī." + diff --git a/locale/mk/LC_MESSAGES/horde.mo b/locale/mk/LC_MESSAGES/horde.mo index 8147f01b7..e406ae9c1 100644 Binary files a/locale/mk/LC_MESSAGES/horde.mo and b/locale/mk/LC_MESSAGES/horde.mo differ diff --git a/locale/mk/LC_MESSAGES/horde.po b/locale/mk/LC_MESSAGES/horde.po index 296f92a66..a2d24dea0 100644 --- a/locale/mk/LC_MESSAGES/horde.po +++ b/locale/mk/LC_MESSAGES/horde.po @@ -4128,3 +4128,13 @@ msgstr "" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Бришење на целиот уред" + +msgid "Wipe account" +msgstr "Бришење на сметката" + +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 "БЕЛЕШКА: „Бришење на целиот уред“ може да го ресетира уредот на фабрички поставки. „Бришење на сметката“ ја брише само Exchange сметката на уредот — не на серверот." + diff --git a/locale/nb/LC_MESSAGES/horde.mo b/locale/nb/LC_MESSAGES/horde.mo index cef0cd0f5..6c69c0f5d 100644 Binary files a/locale/nb/LC_MESSAGES/horde.mo and b/locale/nb/LC_MESSAGES/horde.mo differ diff --git a/locale/nb/LC_MESSAGES/horde.po b/locale/nb/LC_MESSAGES/horde.po index fbbfb7a7c..ec0c4557e 100644 --- a/locale/nb/LC_MESSAGES/horde.po +++ b/locale/nb/LC_MESSAGES/horde.po @@ -4284,3 +4284,13 @@ msgstr "samlet" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Slett hele enheten" + +msgid "Wipe account" +msgstr "Slett konto" + +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 "MERK: «Slett hele enheten» kan tilbakestille enheten til fabrikkinnstillinger. «Slett konto» sletter bare Exchange-kontoen på enheten — ikke på serveren." + diff --git a/locale/nl/LC_MESSAGES/horde.mo b/locale/nl/LC_MESSAGES/horde.mo index ac991a322..18ccd6b95 100644 Binary files a/locale/nl/LC_MESSAGES/horde.mo and b/locale/nl/LC_MESSAGES/horde.mo differ diff --git a/locale/nl/LC_MESSAGES/horde.po b/locale/nl/LC_MESSAGES/horde.po index 62efa9dfd..74bc9f2b6 100644 --- a/locale/nl/LC_MESSAGES/horde.po +++ b/locale/nl/LC_MESSAGES/horde.po @@ -3774,3 +3774,13 @@ msgstr "unified" #: lib/Block/Weather.php:33 msgid "weather" msgstr "weer" + +msgid "Wipe entire device" +msgstr "Volledig apparaat wissen" + +msgid "Wipe account" +msgstr "Account wissen" + +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 "OPMERKING: „Volledig apparaat wissen“ kan het apparaat terugzetten naar fabrieksinstellingen. „Account wissen“ verwijdert alleen het Exchange-account op het apparaat — niet op de server." + diff --git a/locale/nn/LC_MESSAGES/horde.mo b/locale/nn/LC_MESSAGES/horde.mo index 3f384232f..28f3e2590 100644 Binary files a/locale/nn/LC_MESSAGES/horde.mo and b/locale/nn/LC_MESSAGES/horde.mo differ diff --git a/locale/nn/LC_MESSAGES/horde.po b/locale/nn/LC_MESSAGES/horde.po index b91362d08..92c355967 100644 --- a/locale/nn/LC_MESSAGES/horde.po +++ b/locale/nn/LC_MESSAGES/horde.po @@ -4187,3 +4187,13 @@ msgstr "" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Slett heile eininga" + +msgid "Wipe account" +msgstr "Slett konto" + +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 "MERK: «Slett heile eininga» kan setje eininga attende til fabrikkinnstillingar. «Slett konto» slettar berre Exchange-kontoen på eininga — ikkje på tenaren." + diff --git a/locale/pl/LC_MESSAGES/horde.mo b/locale/pl/LC_MESSAGES/horde.mo index 78f83e478..5e4767397 100644 Binary files a/locale/pl/LC_MESSAGES/horde.mo and b/locale/pl/LC_MESSAGES/horde.mo differ diff --git a/locale/pl/LC_MESSAGES/horde.po b/locale/pl/LC_MESSAGES/horde.po index 47fe89480..7fbf8cb32 100644 --- a/locale/pl/LC_MESSAGES/horde.po +++ b/locale/pl/LC_MESSAGES/horde.po @@ -3887,3 +3887,13 @@ msgstr "zunifikowany" #: lib/Block/Weather.php:35 msgid "weather" msgstr "Pogoda" + +msgid "Wipe entire device" +msgstr "Wymaż całe urządzenie" + +msgid "Wipe account" +msgstr "Wymaż konto" + +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 "UWAGA: „Wymaż całe urządzenie” może przywrócić ustawienia fabryczne urządzenia. „Wymaż konto” usuwa tylko konto Exchange na urządzeniu — nie na serwerze." + diff --git a/locale/pt/LC_MESSAGES/horde.mo b/locale/pt/LC_MESSAGES/horde.mo index 6d45ed80c..241c2b7a0 100644 Binary files a/locale/pt/LC_MESSAGES/horde.mo and b/locale/pt/LC_MESSAGES/horde.mo differ diff --git a/locale/pt/LC_MESSAGES/horde.po b/locale/pt/LC_MESSAGES/horde.po index f9bc75799..ddb07024e 100644 --- a/locale/pt/LC_MESSAGES/horde.po +++ b/locale/pt/LC_MESSAGES/horde.po @@ -4291,3 +4291,13 @@ msgstr "unificado" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Limpar dispositivo inteiro" + +msgid "Wipe account" +msgstr "Limpar conta" + +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 "NOTA: «Limpar dispositivo inteiro» pode repor o dispositivo para as predefinições de fábrica. «Limpar conta» elimina apenas a conta Exchange no dispositivo — não no servidor." + diff --git a/locale/pt_BR/LC_MESSAGES/horde.mo b/locale/pt_BR/LC_MESSAGES/horde.mo index 50d5babdc..d54501674 100644 Binary files a/locale/pt_BR/LC_MESSAGES/horde.mo and b/locale/pt_BR/LC_MESSAGES/horde.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/horde.po b/locale/pt_BR/LC_MESSAGES/horde.po index 14f3ea504..96ff7e35d 100644 --- a/locale/pt_BR/LC_MESSAGES/horde.po +++ b/locale/pt_BR/LC_MESSAGES/horde.po @@ -3934,3 +3934,13 @@ msgstr "unificado" #: lib/Block/Weather.php:35 msgid "weather" msgstr "clima" + +msgid "Wipe entire device" +msgstr "Limpar dispositivo inteiro" + +msgid "Wipe account" +msgstr "Limpar conta" + +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 "NOTA: «Limpar dispositivo inteiro» pode redefinir o dispositivo para os padrões de fábrica. «Limpar conta» exclui apenas a conta Exchange no dispositivo — não no servidor." + diff --git a/locale/ro/LC_MESSAGES/horde.mo b/locale/ro/LC_MESSAGES/horde.mo index ab2010c68..c402c5e9e 100644 Binary files a/locale/ro/LC_MESSAGES/horde.mo and b/locale/ro/LC_MESSAGES/horde.mo differ diff --git a/locale/ro/LC_MESSAGES/horde.po b/locale/ro/LC_MESSAGES/horde.po index e40bbaf2a..05c51f289 100644 --- a/locale/ro/LC_MESSAGES/horde.po +++ b/locale/ro/LC_MESSAGES/horde.po @@ -4130,3 +4130,13 @@ msgstr "" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Șterge întreg dispozitivul" + +msgid "Wipe account" +msgstr "Șterge contul" + +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 "NOTĂ: „Șterge întreg dispozitivul” poate reseta dispozitivul la setările din fabrică. „Șterge contul” șterge doar contul Exchange de pe dispozitiv — nu pe server." + diff --git a/locale/ru/LC_MESSAGES/horde.mo b/locale/ru/LC_MESSAGES/horde.mo index bf9f60e14..521edc102 100644 Binary files a/locale/ru/LC_MESSAGES/horde.mo and b/locale/ru/LC_MESSAGES/horde.mo differ diff --git a/locale/ru/LC_MESSAGES/horde.po b/locale/ru/LC_MESSAGES/horde.po index fb65c2305..385735fac 100644 --- a/locale/ru/LC_MESSAGES/horde.po +++ b/locale/ru/LC_MESSAGES/horde.po @@ -4698,3 +4698,13 @@ msgstr "Пустой" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "" + +msgid "Wipe entire device" +msgstr "Стереть всё устройство" + +msgid "Wipe account" +msgstr "Стереть учётную запись" + +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 "ПРИМЕЧАНИЕ: «Стереть всё устройство» может сбросить устройство до заводских настроек. «Стереть учётную запись» удаляет только учётную запись Exchange на устройстве — не на сервере." + diff --git a/locale/sk/LC_MESSAGES/horde.mo b/locale/sk/LC_MESSAGES/horde.mo index 1247f47c7..deb7aabd7 100644 Binary files a/locale/sk/LC_MESSAGES/horde.mo and b/locale/sk/LC_MESSAGES/horde.mo differ diff --git a/locale/sk/LC_MESSAGES/horde.po b/locale/sk/LC_MESSAGES/horde.po index de2d3f477..852dfbe70 100644 --- a/locale/sk/LC_MESSAGES/horde.po +++ b/locale/sk/LC_MESSAGES/horde.po @@ -3899,3 +3899,13 @@ msgstr "unifikované" #: lib/Block/Weather.php:35 msgid "weather" msgstr "počasie" + +msgid "Wipe entire device" +msgstr "Vymazať celé zariadenie" + +msgid "Wipe account" +msgstr "Vymazať účet" + +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 "POZNÁMKA: „Vymazať celé zariadenie“ môže obnoviť výrobné nastavenia zariadenia. „Vymazať účet“ vymaže iba účet Exchange v zariadení — nie na serveri." + diff --git a/locale/sl/LC_MESSAGES/horde.mo b/locale/sl/LC_MESSAGES/horde.mo index 9ff1ca20c..2381c8793 100644 Binary files a/locale/sl/LC_MESSAGES/horde.mo and b/locale/sl/LC_MESSAGES/horde.mo differ diff --git a/locale/sl/LC_MESSAGES/horde.po b/locale/sl/LC_MESSAGES/horde.po index 9dc66d4f0..1f5ea533e 100644 --- a/locale/sl/LC_MESSAGES/horde.po +++ b/locale/sl/LC_MESSAGES/horde.po @@ -4241,3 +4241,13 @@ msgstr "enoten" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Brisanje celotne naprave" + +msgid "Wipe account" +msgstr "Brisanje računa" + +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 "OPOMBA: »Brisanje celotne naprave« lahko ponastavi napravo na tovarniške nastavitve. »Brisanje računa« izbriše samo Exchange račun na napravi — ne na strežniku." + diff --git a/locale/sv/LC_MESSAGES/horde.mo b/locale/sv/LC_MESSAGES/horde.mo index 85881b3be..d1c7285dc 100644 Binary files a/locale/sv/LC_MESSAGES/horde.mo and b/locale/sv/LC_MESSAGES/horde.mo differ diff --git a/locale/sv/LC_MESSAGES/horde.po b/locale/sv/LC_MESSAGES/horde.po index 90a9179cb..1fbd2f593 100644 --- a/locale/sv/LC_MESSAGES/horde.po +++ b/locale/sv/LC_MESSAGES/horde.po @@ -4334,3 +4334,13 @@ msgstr "väder" #: lib/Block/Weatherdotcom.php:34 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "Radera hela enheten" + +msgid "Wipe account" +msgstr "Radera konto" + +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 "OBS: ”Radera hela enheten” kan återställa enheten till fabriksinställningar. ”Radera konto” raderar endast Exchange-kontot på enheten — inte på servern." + diff --git a/locale/tr/LC_MESSAGES/horde.mo b/locale/tr/LC_MESSAGES/horde.mo index cf59237fe..305f2bc1a 100644 Binary files a/locale/tr/LC_MESSAGES/horde.mo and b/locale/tr/LC_MESSAGES/horde.mo differ diff --git a/locale/tr/LC_MESSAGES/horde.po b/locale/tr/LC_MESSAGES/horde.po index 1c14b7599..dd23bc674 100644 --- a/locale/tr/LC_MESSAGES/horde.po +++ b/locale/tr/LC_MESSAGES/horde.po @@ -3706,3 +3706,13 @@ msgstr "birleştirilmiş" #: lib/Block/Weather.php:33 msgid "weather" msgstr "hava durumu" + +msgid "Wipe entire device" +msgstr "Tüm cihazı sil" + +msgid "Wipe account" +msgstr "Hesabı sil" + +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 "NOT: \"Tüm cihazı sil\" cihazı fabrika ayarlarına sıfırlayabilir. \"Hesabı sil\" yalnızca cihazdaki Exchange hesabını siler — sunucudaki değil." + diff --git a/locale/uk/LC_MESSAGES/horde.mo b/locale/uk/LC_MESSAGES/horde.mo index a8bf95531..563b51809 100644 Binary files a/locale/uk/LC_MESSAGES/horde.mo and b/locale/uk/LC_MESSAGES/horde.mo differ diff --git a/locale/uk/LC_MESSAGES/horde.po b/locale/uk/LC_MESSAGES/horde.po index 81e477fa2..f8d2a0fd1 100644 --- a/locale/uk/LC_MESSAGES/horde.po +++ b/locale/uk/LC_MESSAGES/horde.po @@ -3841,3 +3841,13 @@ msgstr "Двічі введіть пароль для підтвердження #: admin/config/diff.php:61 admin/config/diff.php:71 msgid "unified" msgstr "уніфікований" + +msgid "Wipe entire device" +msgstr "Стерти весь пристрій" + +msgid "Wipe account" +msgstr "Стерти обліковий запис" + +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 "ПРИМІТКА: «Стерти весь пристрій» може скинути пристрій до заводських налаштувань. «Стерти обліковий запис» видаляє лише обліковий запис Exchange на пристрої — не на сервері." + diff --git a/locale/zh_CN/LC_MESSAGES/horde.mo b/locale/zh_CN/LC_MESSAGES/horde.mo index 33350cc19..d99e20d44 100644 Binary files a/locale/zh_CN/LC_MESSAGES/horde.mo and b/locale/zh_CN/LC_MESSAGES/horde.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/horde.po b/locale/zh_CN/LC_MESSAGES/horde.po index f5df11e03..e14febe78 100644 --- a/locale/zh_CN/LC_MESSAGES/horde.po +++ b/locale/zh_CN/LC_MESSAGES/horde.po @@ -4185,3 +4185,13 @@ msgstr "未定义" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com" + +msgid "Wipe entire device" +msgstr "擦除整个设备" + +msgid "Wipe account" +msgstr "擦除账户" + +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 "注意:“擦除整个设备”可能会将设备恢复为出厂设置。“擦除账户”仅删除设备上的 Exchange 账户——不会删除服务器上的数据。" + diff --git a/locale/zh_TW/LC_MESSAGES/horde.mo b/locale/zh_TW/LC_MESSAGES/horde.mo index 6492ea01e..d0d74f03e 100644 Binary files a/locale/zh_TW/LC_MESSAGES/horde.mo and b/locale/zh_TW/LC_MESSAGES/horde.mo differ diff --git a/locale/zh_TW/LC_MESSAGES/horde.po b/locale/zh_TW/LC_MESSAGES/horde.po index cb3823f8b..f11cb4592 100644 --- a/locale/zh_TW/LC_MESSAGES/horde.po +++ b/locale/zh_TW/LC_MESSAGES/horde.po @@ -4122,3 +4122,13 @@ msgstr "整合" #: lib/Block/weatherdotcom.php:6 msgid "weather.com" msgstr "weather.com 網站" + +msgid "Wipe entire device" +msgstr "抹除整個裝置" + +msgid "Wipe account" +msgstr "抹除帳戶" + +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 "注意:「抹除整個裝置」可能會將裝置重設為原廠設定。「抹除帳戶」僅刪除裝置上的 Exchange 帳戶——不會刪除伺服器上的資料。" + diff --git a/templates/activesync/device_table.html.php b/templates/activesync/device_table.html.php index f115d7e47..f2f9aab8b 100644 --- a/templates/activesync/device_table.html.php +++ b/templates/activesync/device_table.html.php @@ -1,6 +1,21 @@ - +groupByUser); +$entries = $this->entries ?? null; +if ($entries === null) { + $entries = []; + foreach ($this->devices as $d_id => $d) { + $entries[] = [ + 'type' => 'device', + 'device' => $d, + 'collections' => $this->collections[$d_id] ?? [], + ]; + } +} +$adminCols = $this->isAdmin ? ($grouped ? 6 : 7) : 5; +?> +
- isAdmin):?> + isAdmin && !$grouped):?> @@ -10,22 +25,32 @@ - devices as $d_id => $d): ?> + + + + + + + + rwstatus == Horde_ActiveSync::RWSTATUS_PENDING): ?> - contentTag('span', _("Wipe Pending"), ['class' => 'notice']) ?> + contentTag('span', _("Device wipe pending"), ['class' => 'notice']) ?> rwstatus == Horde_ActiveSync::RWSTATUS_ACCOUNTONLY_PENDING): ?> - contentTag('span', _("Account-only wipe pending"), ['class' => 'notice']) ?> + contentTag('span', _("Account wipe pending"), ['class' => 'notice']) ?> rwstatus == Horde_ActiveSync::RWSTATUS_WIPED): ?> - contentTag('span', _("Device is Wiped. Remove device state to allow device to reconnect."), ['class' => 'notice']) ?> + contentTag('span', _("Device wiped. Remove device state to allow the device to reconnect."), ['class' => 'notice']) ?> rwstatus == Horde_ActiveSync::RWSTATUS_ACCOUNTONLY_WIPED): ?> - contentTag('span', _("Account-only wipe completed. Remove device state to allow device to reconnect."), ['class' => 'notice']) ?> + contentTag('span', _("Account wiped. Remove device state to allow the device to reconnect."), ['class' => 'notice']) ?> blocked):?> contentTag('span', _("Device is Blocked."), ['class' => 'notice'])?> policykey ? _("Provisioned") : _("Not Provisioned") ?> - isAdmin):?> + isAdmin && !$grouped):?>getLastSyncTimestamp() ? new Horde_Date($d->getLastSyncTimestamp(), 'UTC') : false; ?> getValue('timezone')): $lst->setTimezone($GLOBALS['prefs']->getValue('timezone')); endif;?> @@ -38,35 +63,58 @@ : hbinterval ?>
isAdmin): ?> - - diff --git a/templates/prefs/activesync.html.php b/templates/prefs/activesync.html.php index 44bda60e3..c44f86402 100644 --- a/templates/prefs/activesync.html.php +++ b/templates/prefs/activesync.html.php @@ -34,6 +34,6 @@

- +

diff --git a/test/Unit/ActiveSync/DeviceTableTest.php b/test/Unit/ActiveSync/DeviceTableTest.php new file mode 100644 index 000000000..05ea6dd2d --- /dev/null +++ b/test/Unit/ActiveSync/DeviceTableTest.php @@ -0,0 +1,79 @@ +_row('bob', 'iPhone', 'b1'), + $this->_row('alice', 'iPad', 'a1'), + $this->_row('alice', 'iPhone', 'a2'), + ]; + + $sorted = Horde_ActiveSync_DeviceTable::sortRows($rows, true); + + $this->assertSame('alice', $sorted[0]['device']->user); + $this->assertSame('iPad', $sorted[0]['device']->deviceType); + $this->assertSame('alice', $sorted[1]['device']->user); + $this->assertSame('iPhone', $sorted[1]['device']->deviceType); + $this->assertSame('bob', $sorted[2]['device']->user); + } + + public function testToEntriesGroupsByUser() + { + $rows = Horde_ActiveSync_DeviceTable::sortRows([ + $this->_row('bob', 'iPhone', 'b1'), + $this->_row('alice', 'iPhone', 'a1'), + $this->_row('alice', 'iPad', 'a2'), + ], true); + + $entries = Horde_ActiveSync_DeviceTable::toEntries($rows, true); + + $this->assertSame('header', $entries[0]['type']); + $this->assertSame('alice', $entries[0]['user']); + $this->assertSame(2, $entries[0]['count']); + $this->assertSame('device', $entries[1]['type']); + $this->assertSame('iPad', $entries[1]['device']->deviceType); + $this->assertSame('device', $entries[2]['type']); + $this->assertSame('iPhone', $entries[2]['device']->deviceType); + $this->assertSame('header', $entries[3]['type']); + $this->assertSame('bob', $entries[3]['user']); + $this->assertSame(1, $entries[3]['count']); + } + + public function testToEntriesWithoutGrouping() + { + $rows = [ + $this->_row('alice', 'iPhone', 'a1'), + ]; + + $entries = Horde_ActiveSync_DeviceTable::toEntries($rows, false); + + $this->assertCount(1, $entries); + $this->assertSame('device', $entries[0]['type']); + $this->assertArrayNotHasKey('user', $entries[0]); + } + + private function _row(string $user, string $type, string $id): array + { + $device = new stdClass(); + $device->user = $user; + $device->deviceType = $type; + $device->id = $id; + + return [ + 'device' => $device, + 'collections' => [], + ]; + } +} diff --git a/test/Unit/Prefs/Special/ActivesyncTest.php b/test/Unit/Prefs/Special/ActivesyncTest.php index d2ff2a740..422b0ade7 100644 --- a/test/Unit/Prefs/Special/ActivesyncTest.php +++ b/test/Unit/Prefs/Special/ActivesyncTest.php @@ -38,7 +38,7 @@ public function testPrefsAccountWipeSetsAccountOnlyPendingForSupportedDevice() $state->rwStatusCalls ); $this->assertStringContainsString( - 'account-only remote wipe', + 'account-only wipe', strtolower($this->_notifications[0][0]) ); } @@ -148,7 +148,7 @@ private function _runAdminAccountWipe( $device = $state->loadDeviceInfo($deviceId); if (!Horde_ActiveSync::deviceSupportsAccountOnlyWipe($device->version ?? null)) { $GLOBALS['notification']->push( - _("Account-only wipe is only available for devices that support EAS 16.1 or newer."), + _("Account-only wipe requires a device with EAS 16.1 or newer."), 'horde.error' ); return; @@ -156,7 +156,7 @@ private function _runAdminAccountWipe( $state->setDeviceRWStatus($deviceId, Horde_ActiveSync::RWSTATUS_ACCOUNTONLY_PENDING); $GLOBALS['notification']->push( - _("An account-only wipe has been requested. The account will be removed on next synchronization attempt."), + _("An account-only wipe has been requested. The account will be removed from the device on the next synchronization."), 'horde.success' ); } diff --git a/themes/dark/screen.css b/themes/dark/screen.css index 3e4f07606..39b6c013c 100644 --- a/themes/dark/screen.css +++ b/themes/dark/screen.css @@ -2323,6 +2323,82 @@ a.horde-mainnavi-active:active { width: 100%; } +.activesync-user-header td { + background-color: #161B22; + border-bottom: 1px solid #30363D; + padding: 8px 6px; +} + +.activesync-user-header-name { + font-weight: bold; + margin-right: 0.75em; +} + +.activesync-user-header-count { + color: #959DA5; + font-weight: normal; + font-size: 90%; +} + +.activesync-device-actions { + vertical-align: middle; +} + +.activesync-device-actions-inner { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.45em; + width: fit-content; + max-width: 100%; +} + +.activesync-device-actions-inner input[type="button"] { + display: block; + box-sizing: border-box; + width: 100%; + margin: 0; +} + +.activesync-device-collections { + vertical-align: top; + max-width: 28em; +} + +.activesync-collections-details { + margin: 0; +} + +.activesync-collections-summary { + cursor: pointer; + font-weight: bold; +} + +.activesync-collections-preview { + font-weight: normal; + color: #959DA5; +} + +.activesync-collections-list { + margin-top: 0.45em; + padding: 0.5em 0.4em 0.5em 0.75em; + border-left: 2px solid #30363D; + max-height: min(36em, 45vh); + overflow-y: auto; +} + +.activesync-collection-item { + margin-bottom: 0.55em; + padding-bottom: 0.55em; + border-bottom: 1px solid #30363D; +} + +.activesync-collection-item:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + /* Print CSS. */ @media print { body, .header, .smallheader { diff --git a/themes/default/screen.css b/themes/default/screen.css index 8a498ba59..8ca3d0f5c 100644 --- a/themes/default/screen.css +++ b/themes/default/screen.css @@ -2539,6 +2539,82 @@ a.horde-mainnavi-active:active { width: 100%; } +.activesync-user-header td { + background-color: #ebeff0; + border-bottom: 1px solid #d0d0d0; + padding: 8px 6px; +} + +.activesync-user-header-name { + font-weight: bold; + margin-right: 0.75em; +} + +.activesync-user-header-count { + color: #666; + font-weight: normal; + font-size: 90%; +} + +.activesync-device-actions { + vertical-align: middle; +} + +.activesync-device-actions-inner { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.45em; + width: fit-content; + max-width: 100%; +} + +.activesync-device-actions-inner input[type="button"] { + display: block; + box-sizing: border-box; + width: 100%; + margin: 0; +} + +.activesync-device-collections { + vertical-align: top; + max-width: 28em; +} + +.activesync-collections-details { + margin: 0; +} + +.activesync-collections-summary { + cursor: pointer; + font-weight: bold; +} + +.activesync-collections-preview { + font-weight: normal; + color: #666; +} + +.activesync-collections-list { + margin-top: 0.45em; + padding: 0.5em 0.4em 0.5em 0.75em; + border-left: 2px solid #d0d0d0; + max-height: min(36em, 45vh); + overflow-y: auto; +} + +.activesync-collection-item { + margin-bottom: 0.55em; + padding-bottom: 0.55em; + border-bottom: 1px solid #ebeff0; +} + +.activesync-collection-item:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + /* Print CSS. */ @media print { body, .header, .smallheader { diff --git a/themes/default/settings.css b/themes/default/settings.css index f8e295865..bfdb09398 100644 --- a/themes/default/settings.css +++ b/themes/default/settings.css @@ -502,3 +502,80 @@ font-size: 12px; color: var(--text-secondary); } + +/* ActiveSync device table (admin page loads settings.css after screen.css) */ +.activesync-user-header td { + background-color: #ebeff0; + border-bottom: 1px solid #d0d0d0; + padding: 8px 6px; +} + +.activesync-user-header-name { + font-weight: bold; + margin-right: 0.75em; +} + +.activesync-user-header-count { + color: #666; + font-weight: normal; + font-size: 90%; +} + +.activesync-device-actions { + vertical-align: middle; +} + +.activesync-device-actions-inner { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.45em; + width: fit-content; + max-width: 100%; +} + +.activesync-device-actions-inner input[type="button"] { + display: block; + box-sizing: border-box; + width: 100%; + margin: 0; +} + +.activesync-device-collections { + vertical-align: top; + max-width: 28em; +} + +.activesync-collections-details { + margin: 0; +} + +.activesync-collections-summary { + cursor: pointer; + font-weight: bold; +} + +.activesync-collections-preview { + font-weight: normal; + color: var(--text-secondary); +} + +.activesync-collections-list { + margin-top: 0.45em; + padding: 0.5em 0.4em 0.5em 0.75em; + border-left: 2px solid var(--border-medium); + max-height: min(36em, 45vh); + overflow-y: auto; +} + +.activesync-collection-item { + margin-bottom: 0.55em; + padding-bottom: 0.55em; + border-bottom: 1px solid var(--border-light); +} + +.activesync-collection-item:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} diff --git a/themes/default_red/screen.css b/themes/default_red/screen.css index 3e558c61e..07a11741b 100644 --- a/themes/default_red/screen.css +++ b/themes/default_red/screen.css @@ -2305,6 +2305,82 @@ a.horde-mainnavi-active:active { width: 100%; } +.activesync-user-header td { + background-color: #ebeff0; + border-bottom: 1px solid #d0d0d0; + padding: 8px 6px; +} + +.activesync-user-header-name { + font-weight: bold; + margin-right: 0.75em; +} + +.activesync-user-header-count { + color: #666; + font-weight: normal; + font-size: 90%; +} + +.activesync-device-actions { + vertical-align: middle; +} + +.activesync-device-actions-inner { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.45em; + width: fit-content; + max-width: 100%; +} + +.activesync-device-actions-inner input[type="button"] { + display: block; + box-sizing: border-box; + width: 100%; + margin: 0; +} + +.activesync-device-collections { + vertical-align: top; + max-width: 28em; +} + +.activesync-collections-details { + margin: 0; +} + +.activesync-collections-summary { + cursor: pointer; + font-weight: bold; +} + +.activesync-collections-preview { + font-weight: normal; + color: #666; +} + +.activesync-collections-list { + margin-top: 0.45em; + padding: 0.5em 0.4em 0.5em 0.75em; + border-left: 2px solid #d0d0d0; + max-height: min(36em, 45vh); + overflow-y: auto; +} + +.activesync-collection-item { + margin-bottom: 0.55em; + padding-bottom: 0.55em; + border-bottom: 1px solid #ebeff0; +} + +.activesync-collection-item:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + /* Print CSS. */ @media print { body, .header, .smallheader {
+ + +
user?>user?> deviceType ?> - collections[$d_id] as $cc): ?> - $value): ?> - ' . $key . ':' . $value . '
' ?> - -
- +
+ + + + + +
+ + + + + + +
+ +
+ $value): ?> +
:
+ +
+ +
+
+
+ +
policykey): ?> - " id="wipe_id . ':' . $d->user ?>" />
+ " id="wipe_id . ':' . $d->user ?>" /> version) && version_compare($d->version, Horde_ActiveSync::VERSION_SIXTEENONE, '>=')): ?> - " id="awipe_id . ':' . $d->user ?>" />
+ " id="awipe_id . ':' . $d->user ?>" /> -
rwstatus == Horde_ActiveSync::RWSTATUS_PENDING || $d->rwstatus == Horde_ActiveSync::RWSTATUS_ACCOUNTONLY_PENDING): ?> - " id="cancel_id . ':' . $d->user?>" />
-
+ " id="cancel_id . ':' . $d->user?>" /> - " id="remove_id . ':' . $d->user ?>" />
-
+ " id="remove_id . ':' . $d->user ?>" /> blocked && $this->isAdmin): ?> - " id="unblock_id . ':' . $d->user ?>" />
-
+ " id="unblock_id . ':' . $d->user ?>" /> isAdmin): ?> " id="block_id . ':' . $d->user ?>" /> +