Added user groups batch operations.

Ylian Saint-Hilaire committed Apr 13, 2020 at 13:38 UTC 295719251243cae9ea6f29436478363e738510ce
3 files changed +341 -247
meshuser.js
+1 -1
@@ -2706,7 +2706,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2706 } else {
2707 event = { etype: 'mesh', username: user.name, userid: (deluserid.split('/')[2]), meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'meshchange', links: mesh.links, msg: 'Removed user ' + (deluserid.split('/')[2]) + ' from group ' + mesh.name, domain: domain.id, invite: mesh.invite };
2708 }
2709 - parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(mesh [user._id, command.userid]), obj, event);
2709 + parent.parent.DispatchEvent(parent.CreateMeshDispatchTargets(mesh, [user._id, command.userid]), obj, event);
2710 if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'removemeshuser', responseid: command.responseid, result: 'ok' })); } catch (ex) { } }
2711 } else {
2712 if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'removemeshuser', responseid: command.responseid, result: 'User not in group' })); } catch (ex) { } }
translate/translate.json
+266 -233
@@ -192,7 +192,7 @@
192 "zh-chs": " 用戶需要先登錄到該服務器一次,然後才能將其添加到設備組。",
193 "xloc": [
194 "default.handlebars->27->1204",
195 - "default.handlebars->27->1486"
195 + "default.handlebars->27->1496"
196 ]
197 },
198 {
@@ -605,7 +605,7 @@
605 "default-mobile.handlebars->9->244",
606 "default-mobile.handlebars->9->70",
607 "default.handlebars->27->1305",
608 - "default.handlebars->27->1589",
608 + "default.handlebars->27->1600",
609 "default.handlebars->27->713"
610 ]
611 },
@@ -654,7 +654,7 @@
654 "ru": "1 активная сессия",
655 "zh-chs": "1個活動會話",
656 "xloc": [
657 - "default.handlebars->27->1541"
657 + "default.handlebars->27->1551"
658 ]
659 },
660 {
@@ -709,7 +709,7 @@
709 "ru": "1 группа",
710 "zh-chs": "1組",
711 "xloc": [
712 - "default.handlebars->27->1511"
712 + "default.handlebars->27->1521"
713 ]
714 },
715 {
@@ -1101,7 +1101,7 @@
1101 "zh-chs": "啟用第二因素身份驗證",
1102 "xloc": [
1103 "default.handlebars->27->1376",
1104 - "default.handlebars->27->1532"
1104 + "default.handlebars->27->1542"
1105 ]
1106 },
1107 {
@@ -1847,7 +1847,7 @@
1847 "ru": "Доступ к файлам сервера",
1848 "zh-chs": "訪問服務器文件",
1849 "xloc": [
1850 - "default.handlebars->27->1492"
1850 + "default.handlebars->27->1502"
1851 ]
1852 },
1853 {
@@ -1957,7 +1957,7 @@
1957 "es": "La cuenta esta bloqueada",
1958 "xloc": [
1959 "default.handlebars->27->1377",
1960 - "default.handlebars->27->1489"
1960 + "default.handlebars->27->1499"
1961 ]
1962 },
1963 {
@@ -2229,8 +2229,8 @@
2229 "zh-chs": "添加設備",
2230 "es": "Agregar Dispositivo",
2231 "xloc": [
2232 - "default.handlebars->27->1466",
2233 - "default.handlebars->27->1557"
2232 + "default.handlebars->27->1476",
2233 + "default.handlebars->27->1568"
2234 ]
2235 },
2236 {
@@ -2266,8 +2266,8 @@
2266 "xloc": [
2267 "default.handlebars->27->1233",
2268 "default.handlebars->27->1235",
2269 - "default.handlebars->27->1460",
2270 - "default.handlebars->27->1563",
2269 + "default.handlebars->27->1470",
2270 + "default.handlebars->27->1574",
2271 "default.handlebars->27->189"
2272 ]
2273 },
@@ -2368,7 +2368,7 @@
2368 "ru": "Добавить участие",
2369 "zh-chs": "添加會員",
2370 "xloc": [
2371 - "default.handlebars->27->1585"
2371 + "default.handlebars->27->1596"
2372 ]
2373 },
2374 {
@@ -2459,7 +2459,7 @@
2459 "xloc": [
2460 "default.handlebars->27->1136",
2461 "default.handlebars->27->1234",
2462 - "default.handlebars->27->1569",
2462 + "default.handlebars->27->1580",
2463 "default.handlebars->27->547"
2464 ]
2465 },
@@ -2495,7 +2495,7 @@
2495 "zh-chs": "添加用戶",
2496 "xloc": [
2497 "default.handlebars->27->1135",
2498 - "default.handlebars->27->1455"
2498 + "default.handlebars->27->1465"
2499 ]
2500 },
2501 {
@@ -2529,7 +2529,7 @@
2529 "ru": "Добавить пользователей в группу",
2530 "zh-chs": "將用戶添加到用戶組",
2531 "xloc": [
2532 - "default.handlebars->27->1488"
2532 + "default.handlebars->27->1498"
2533 ]
2534 },
2535 {
@@ -2737,7 +2737,7 @@
2737 "ru": "Области администратора",
2738 "zh-chs": "管理領域",
2739 "xloc": [
2740 - "default.handlebars->27->1515"
2740 + "default.handlebars->27->1525"
2741 ]
2742 },
2743 {
@@ -2900,7 +2900,7 @@
2900 "ru": "Счетчик ошибок агента",
2901 "zh-chs": "座席錯誤計數器",
2902 "xloc": [
2903 - "default.handlebars->27->1598"
2903 + "default.handlebars->27->1609"
2904 ]
2905 },
2906 {
@@ -2969,7 +2969,7 @@
2969 "ru": "Сессии агентов",
2970 "zh-chs": "座席會議",
2971 "xloc": [
2972 - "default.handlebars->27->1614"
2972 + "default.handlebars->27->1625"
2973 ]
2974 },
2975 {
@@ -3092,7 +3092,7 @@
3092 "ru": "Агенты",
3093 "zh-chs": "代理商",
3094 "xloc": [
3095 - "default.handlebars->27->1627"
3095 + "default.handlebars->27->1638"
3096 ]
3097 },
3098 {
@@ -3182,7 +3182,7 @@
3182 "zh-chs": "允許用戶管理此設備組和該組中的設備。",
3183 "xloc": [
3184 "default.handlebars->27->1202",
3185 - "default.handlebars->27->1485"
3185 + "default.handlebars->27->1495"
3186 ]
3187 },
3188 {
@@ -3284,7 +3284,7 @@
3284 "zh-chs": "始終通知",
3285 "xloc": [
3286 "default.handlebars->27->1116",
3287 - "default.handlebars->27->1524",
3287 + "default.handlebars->27->1534",
3288 "default.handlebars->27->495"
3289 ]
3290 },
@@ -3303,7 +3303,7 @@
3303 "zh-chs": "總是提示",
3304 "xloc": [
3305 "default.handlebars->27->1117",
3306 - "default.handlebars->27->1525",
3306 + "default.handlebars->27->1535",
3307 "default.handlebars->27->496"
3308 ]
3309 },
@@ -3902,7 +3902,7 @@
3902 "ru": "Вы уверенны, что {0} плагин: {1}",
3903 "zh-chs": "您確定要{0}插件嗎:{1}",
3904 "xloc": [
3905 - "default.handlebars->27->1667"
3905 + "default.handlebars->27->1678"
3906 ]
3907 },
3908 {
@@ -3970,7 +3970,7 @@
3970 "ru": "Приложение аутентификации",
3971 "zh-chs": "身份驗證應用",
3972 "xloc": [
3973 - "default.handlebars->27->1528"
3973 + "default.handlebars->27->1538"
3974 ]
3975 },
3976 {
@@ -4284,7 +4284,7 @@
4284 "ru": "Резервные коды",
4285 "zh-chs": "備用碼",
4286 "xloc": [
4287 - "default.handlebars->27->1530"
4287 + "default.handlebars->27->1540"
4288 ]
4289 },
4290 {
@@ -4301,7 +4301,7 @@
4301 "ru": "Плохой ключ",
4302 "zh-chs": "錯誤的簽名",
4303 "xloc": [
4304 - "default.handlebars->27->1605"
4304 + "default.handlebars->27->1616"
4305 ]
4306 },
4307 {
@@ -4318,7 +4318,7 @@
4318 "ru": "Плохой веб-сертификат",
4319 "zh-chs": "錯誤的網絡證書",
4320 "xloc": [
4321 - "default.handlebars->27->1604"
4321 + "default.handlebars->27->1615"
4322 ]
4323 },
4324 {
@@ -4454,7 +4454,7 @@
4454 "ru": "Отправить сообщение",
4455 "zh-chs": "廣播",
4456 "xloc": [
4457 - "default.handlebars->27->1453",
4457 + "default.handlebars->27->1463",
4458 "default.handlebars->container->column_l->p4->3->1->0->3->1"
4459 ]
4460 },
@@ -4579,7 +4579,7 @@
4579 "ru": "CIRA Сервер",
4580 "zh-chs": "CIRA服務器",
4581 "xloc": [
4582 - "default.handlebars->27->1655"
4582 + "default.handlebars->27->1666"
4583 ]
4584 },
4585 {
@@ -4596,7 +4596,7 @@
4596 "ru": "CIRA Сервер команды",
4597 "zh-chs": "CIRA服務器命令",
4598 "xloc": [
4599 - "default.handlebars->27->1656"
4599 + "default.handlebars->27->1667"
4600 ]
4601 },
4602 {
@@ -4613,7 +4613,7 @@
4613 "ru": "Загрузка CPU",
4614 "zh-chs": "CPU負載",
4615 "xloc": [
4616 - "default.handlebars->27->1619"
4616 + "default.handlebars->27->1630"
4617 ]
4618 },
4619 {
@@ -4630,7 +4630,7 @@
4630 "ru": "Загрузка CPU за последние 15 минут",
4631 "zh-chs": "最近15分鐘的CPU負載",
4632 "xloc": [
4633 - "default.handlebars->27->1622"
4633 + "default.handlebars->27->1633"
4634 ]
4635 },
4636 {
@@ -4647,7 +4647,7 @@
4647 "ru": "Загрузка CPU за последние 5 минут",
4648 "zh-chs": "最近5分鐘的CPU負載",
4649 "xloc": [
4650 - "default.handlebars->27->1621"
4650 + "default.handlebars->27->1632"
4651 ]
4652 },
4653 {
@@ -4664,7 +4664,7 @@
4664 "ru": "Загрузка CPU за последнюю минуту",
4665 "zh-chs": "最後一分鐘的CPU負載",
4666 "xloc": [
4667 - "default.handlebars->27->1620"
4667 + "default.handlebars->27->1631"
4668 ]
4669 },
4670 {
@@ -4719,7 +4719,7 @@
4719 "ru": "Ошибка вызова",
4720 "zh-chs": "通話錯誤",
4721 "xloc": [
4722 - "default.handlebars->27->1668"
4722 + "default.handlebars->27->1679"
4723 ]
4724 },
4725 {
@@ -4828,7 +4828,7 @@
4828 "ru": "Смена email для {0}",
4829 "zh-chs": "更改{0}的電子郵件",
4830 "xloc": [
4831 - "default.handlebars->27->1547"
4831 + "default.handlebars->27->1557"
4832 ]
4833 },
4834 {
@@ -4866,7 +4866,7 @@
4866 "xloc": [
4867 "default-mobile.handlebars->9->52",
4868 "default.handlebars->27->1065",
4869 - "default.handlebars->27->1540"
4869 + "default.handlebars->27->1550"
4870 ]
4871 },
4872 {
@@ -4883,7 +4883,7 @@
4883 "ru": "Смена пароля для {0}",
4884 "zh-chs": "更改{0}的密碼",
4885 "xloc": [
4886 - "default.handlebars->27->1554"
4886 + "default.handlebars->27->1564"
4887 ]
4888 },
4889 {
@@ -4953,7 +4953,7 @@
4953 "zh-chs": "更改該用戶的密碼",
4954 "es": "Cambiar la contraseña para este usuario",
4955 "xloc": [
4956 - "default.handlebars->27->1539"
4956 + "default.handlebars->27->1549"
4957 ]
4958 },
4959 {
@@ -5145,7 +5145,7 @@
5145 "ru": "Проверка...",
5146 "zh-chs": "檢查...",
5147 "xloc": [
5148 - "default.handlebars->27->1662",
5148 + "default.handlebars->27->1673",
5149 "default.handlebars->27->838"
5150 ]
5151 },
@@ -5393,7 +5393,7 @@
5393 "zh-chs": "清除此通知",
5394 "es": "Borrar esta notificación",
5395 "xloc": [
5396 - "default.handlebars->27->1592"
5396 + "default.handlebars->27->1603"
5397 ]
5398 },
5399 {
@@ -5608,8 +5608,8 @@
5608 "ru": "Общие группы устройств",
5609 "zh-chs": "通用設備組",
5610 "xloc": [
5611 - "default.handlebars->27->1461",
5612 - "default.handlebars->27->1564"
5611 + "default.handlebars->27->1471",
5612 + "default.handlebars->27->1575"
5613 ]
5614 },
5615 {
@@ -5626,8 +5626,8 @@
5626 "zh-chs": "通用設備",
5627 "es": "Dispositivos comunes",
5628 "xloc": [
5629 - "default.handlebars->27->1467",
5630 - "default.handlebars->27->1558"
5629 + "default.handlebars->27->1477",
5630 + "default.handlebars->27->1569"
5631 ]
5632 },
5633 {
@@ -5666,7 +5666,9 @@
5666 "default-mobile.handlebars->9->288",
5667 "default.handlebars->27->1181",
5668 "default.handlebars->27->1387",
5669 - "default.handlebars->27->1481",
5669 + "default.handlebars->27->1449",
5670 + "default.handlebars->27->1491",
5671 + "default.handlebars->27->1567",
5672 "default.handlebars->27->387",
5673 "default.handlebars->27->620",
5674 "default.handlebars->27->629"
@@ -5732,6 +5734,12 @@
5734 "default.handlebars->27->386"
5735 ]
5736 },
5737 + {
5738 + "en": "Confirm delete selected user groups(s)?",
5739 + "xloc": [
5740 + "default.handlebars->27->1448"
5741 + ]
5742 + },
5743 {
5744 "cs": "Potvrdit odstranění uživatele {0}?",
5745 "de": "Löschen von Benutzer {0} bestätigen?",
@@ -5746,7 +5754,7 @@
5754 "zh-chs": "確認刪除用戶{0}?",
5755 "es": "Confirmar la eliminación del usuario {0}?",
5756 "xloc": [
5749 - "default.handlebars->27->1556"
5757 + "default.handlebars->27->1566"
5758 ]
5759 },
5760 {
@@ -5834,8 +5842,8 @@
5842 "ru": "Подтвердить удаление группы устройств {0}?",
5843 "zh-chs": "確認刪除設備組{0}?",
5844 "xloc": [
5837 - "default.handlebars->27->1476",
5838 - "default.handlebars->27->1587"
5845 + "default.handlebars->27->1486",
5846 + "default.handlebars->27->1598"
5847 ]
5848 },
5849 {
@@ -5849,8 +5857,8 @@
5857 "zh-chs": "确认移除设备{0}?",
5858 "es": "Confirmar la eliminación del dispositivo {0}?",
5859 "xloc": [
5852 - "default.handlebars->27->1474",
5853 - "default.handlebars->27->1576"
5860 + "default.handlebars->27->1484",
5861 + "default.handlebars->27->1587"
5862 ]
5863 },
5864 {
@@ -5867,13 +5875,13 @@
5875 "ru": "Подтвердить удаление группы {0}?",
5876 "zh-chs": "確認刪除組{0}?",
5877 "xloc": [
5870 - "default.handlebars->27->1583"
5878 + "default.handlebars->27->1594"
5879 ]
5880 },
5881 {
5882 "en": "Confirm removal of user group {0}?",
5883 "xloc": [
5876 - "default.handlebars->27->1580"
5884 + "default.handlebars->27->1591"
5885 ]
5886 },
5887 {
@@ -5892,8 +5900,8 @@
5900 "xloc": [
5901 "default-mobile.handlebars->9->334",
5902 "default.handlebars->27->1271",
5895 - "default.handlebars->27->1484",
5896 - "default.handlebars->27->1578"
5903 + "default.handlebars->27->1494",
5904 + "default.handlebars->27->1589"
5905 ]
5906 },
5907 {
@@ -6025,7 +6033,7 @@
6033 "ru": "Подключено Intel® AMT",
6034 "zh-chs": "連接的英特爾®AMT",
6035 "xloc": [
6028 - "default.handlebars->27->1610"
6036 + "default.handlebars->27->1621"
6037 ]
6038 },
6039 {
@@ -6042,7 +6050,7 @@
6050 "ru": "Подключенные пользователи",
6051 "zh-chs": "關聯用戶",
6052 "xloc": [
6045 - "default.handlebars->27->1615"
6053 + "default.handlebars->27->1626"
6054 ]
6055 },
6056 {
@@ -6118,7 +6126,7 @@
6126 "ru": "Подключений ",
6127 "zh-chs": "連接數",
6128 "xloc": [
6121 - "default.handlebars->27->1626"
6129 + "default.handlebars->27->1637"
6130 ]
6131 },
6132 {
@@ -6135,7 +6143,7 @@
6143 "ru": "Ретранслятор подключения",
6144 "zh-chs": "連接繼電器",
6145 "xloc": [
6138 - "default.handlebars->27->1654"
6146 + "default.handlebars->27->1665"
6147 ]
6148 },
6149 {
@@ -6260,7 +6268,7 @@
6268 "ru": "Cookie-кодировщик",
6269 "zh-chs": "Cookie編碼器",
6270 "xloc": [
6263 - "default.handlebars->27->1640"
6271 + "default.handlebars->27->1651"
6272 ]
6273 },
6274 {
@@ -6561,7 +6569,7 @@
6569 "ru": "Основной сервер",
6570 "zh-chs": "核心服務器",
6571 "xloc": [
6564 - "default.handlebars->27->1639"
6572 + "default.handlebars->27->1650"
6573 ]
6574 },
6575 {
@@ -6631,7 +6639,7 @@
6639 "ru": "Создать группу пользователей",
6640 "zh-chs": "創建用戶組",
6641 "xloc": [
6634 - "default.handlebars->27->1444"
6642 + "default.handlebars->27->1454"
6643 ]
6644 },
6645 {
@@ -6717,7 +6725,7 @@
6725 "ru": "Создано",
6726 "zh-chs": "創建",
6727 "xloc": [
6720 - "default.handlebars->27->1504"
6728 + "default.handlebars->27->1514"
6729 ]
6730 },
6731 {
@@ -7174,7 +7182,7 @@
7182 "ru": "Удалить пользователя",
7183 "zh-chs": "刪除用戶",
7184 "xloc": [
7177 - "default.handlebars->27->1538"
7185 + "default.handlebars->27->1548"
7186 ]
7187 },
7188 {
@@ -7191,8 +7199,14 @@
7199 "ru": "Удалить группу пользователей",
7200 "zh-chs": "刪除用戶組",
7201 "xloc": [
7194 - "default.handlebars->27->1472",
7195 - "default.handlebars->27->1482"
7202 + "default.handlebars->27->1482",
7203 + "default.handlebars->27->1492"
7204 + ]
7205 + },
7206 + {
7207 + "en": "Delete User Groups",
7208 + "xloc": [
7209 + "default.handlebars->27->1450"
7210 ]
7211 },
7212 {
@@ -7209,7 +7223,7 @@
7223 "ru": "Удалить пользователя {0}",
7224 "zh-chs": "刪除用戶{0}",
7225 "xloc": [
7212 - "default.handlebars->27->1555"
7226 + "default.handlebars->27->1565"
7227 ]
7228 },
7229 {
@@ -7248,6 +7262,12 @@
7262 "default.handlebars->27->383"
7263 ]
7264 },
7265 + {
7266 + "en": "Delete group",
7267 + "xloc": [
7268 + "default.handlebars->27->1446"
7269 + ]
7270 + },
7271 {
7272 "cs": "Smazat položku?",
7273 "de": "Element löschen?",
@@ -7299,7 +7319,7 @@
7319 "ru": "Удалить группу пользователей {0}?",
7320 "zh-chs": "刪除用戶組{0}?",
7321 "xloc": [
7302 - "default.handlebars->27->1480"
7322 + "default.handlebars->27->1490"
7323 ]
7324 },
7325 {
@@ -7422,10 +7442,10 @@
7442 "default.handlebars->27->1077",
7443 "default.handlebars->27->1101",
7444 "default.handlebars->27->1184",
7425 - "default.handlebars->27->1443",
7426 - "default.handlebars->27->1448",
7427 - "default.handlebars->27->1450",
7428 - "default.handlebars->27->1478",
7445 + "default.handlebars->27->1453",
7446 + "default.handlebars->27->1458",
7447 + "default.handlebars->27->1460",
7448 + "default.handlebars->27->1488",
7449 "default.handlebars->27->455",
7450 "default.handlebars->27->456",
7451 "default.handlebars->27->662",
@@ -7500,7 +7520,7 @@
7520 "zh-chs": "桌面通知",
7521 "xloc": [
7522 "default.handlebars->27->1111",
7503 - "default.handlebars->27->1519",
7523 + "default.handlebars->27->1529",
7524 "default.handlebars->27->490"
7525 ]
7526 },
@@ -7519,7 +7539,7 @@
7539 "zh-chs": "桌面提示",
7540 "xloc": [
7541 "default.handlebars->27->1110",
7522 - "default.handlebars->27->1518",
7542 + "default.handlebars->27->1528",
7543 "default.handlebars->27->489"
7544 ]
7545 },
@@ -7538,7 +7558,7 @@
7558 "zh-chs": "桌面提示+工具欄",
7559 "xloc": [
7560 "default.handlebars->27->1108",
7541 - "default.handlebars->27->1516",
7561 + "default.handlebars->27->1526",
7562 "default.handlebars->27->487"
7563 ]
7564 },
@@ -7557,7 +7577,7 @@
7577 "zh-chs": "桌面工具欄",
7578 "xloc": [
7579 "default.handlebars->27->1109",
7560 - "default.handlebars->27->1517",
7580 + "default.handlebars->27->1527",
7581 "default.handlebars->27->488"
7582 ]
7583 },
@@ -7628,7 +7648,7 @@
7648 "zh-chs": "設備",
7649 "xloc": [
7650 "default.handlebars->27->1211",
7631 - "default.handlebars->27->1561",
7651 + "default.handlebars->27->1572",
7652 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
7653 ]
7654 },
@@ -7667,9 +7687,9 @@
7687 "default.handlebars->27->1206",
7688 "default.handlebars->27->1209",
7689 "default.handlebars->27->1210",
7670 - "default.handlebars->27->1464",
7671 - "default.handlebars->27->1470",
7672 - "default.handlebars->27->1567"
7690 + "default.handlebars->27->1474",
7691 + "default.handlebars->27->1480",
7692 + "default.handlebars->27->1578"
7693 ]
7694 },
7695 {
@@ -7705,10 +7725,10 @@
7725 "zh-chs": "設備組",
7726 "xloc": [
7727 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3",
7708 - "default.handlebars->27->1439",
7709 - "default.handlebars->27->1452",
7710 - "default.handlebars->27->1513",
7711 - "default.handlebars->27->1613",
7728 + "default.handlebars->27->1440",
7729 + "default.handlebars->27->1462",
7730 + "default.handlebars->27->1523",
7731 + "default.handlebars->27->1624",
7732 "default.handlebars->container->column_l->p2->9"
7733 ]
7734 },
@@ -8132,6 +8152,12 @@
8152 "default.handlebars->27->385"
8153 ]
8154 },
8155 + {
8156 + "en": "Devices",
8157 + "xloc": [
8158 + "default.handlebars->27->1439"
8159 + ]
8160 + },
8161 {
8162 "cs": "Zakázáno",
8163 "de": "Deaktiviert",
@@ -8727,7 +8753,7 @@
8753 "ru": "Скопировать агент",
8754 "zh-chs": "代理重複",
8755 "xloc": [
8730 - "default.handlebars->27->1609"
8756 + "default.handlebars->27->1620"
8757 ]
8758 },
8759 {
@@ -8761,7 +8787,7 @@
8787 "ru": "Скопировать группу пользователей",
8788 "zh-chs": "重複的用戶組",
8789 "xloc": [
8764 - "default.handlebars->27->1445"
8790 + "default.handlebars->27->1455"
8791 ]
8792 },
8793 {
@@ -9135,7 +9161,7 @@
9161 "ru": "Редактировать группу пользователей",
9162 "zh-chs": "編輯用戶組",
9163 "xloc": [
9138 - "default.handlebars->27->1479"
9164 + "default.handlebars->27->1489"
9165 ]
9166 },
9167 {
@@ -9171,9 +9197,9 @@
9197 "xloc": [
9198 "default-mobile.handlebars->9->40",
9199 "default.handlebars->27->1411",
9174 - "default.handlebars->27->1500",
9175 - "default.handlebars->27->1501",
9176 - "default.handlebars->27->1543",
9200 + "default.handlebars->27->1510",
9201 + "default.handlebars->27->1511",
9202 + "default.handlebars->27->1553",
9203 "default.handlebars->27->270",
9204 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
9205 "login.handlebars->container->column_l->centralTable->1->0->logincell->tokenpanel->1->7->1->4->1->3"
@@ -9226,7 +9252,7 @@
9252 "zh-chs": "电子邮件流量",
9253 "es": "Tráfico de correo electrónico",
9254 "xloc": [
9229 - "default.handlebars->27->1648"
9255 + "default.handlebars->27->1659"
9256 ]
9257 },
9258 {
@@ -9284,7 +9310,7 @@
9310 "zh-chs": "電子郵件已驗證",
9311 "xloc": [
9312 "default.handlebars->27->1374",
9287 - "default.handlebars->27->1497"
9313 + "default.handlebars->27->1507"
9314 ]
9315 },
9316 {
@@ -9318,7 +9344,7 @@
9344 "ru": "Email не подтвержден",
9345 "zh-chs": "電子郵件未驗證",
9346 "xloc": [
9321 - "default.handlebars->27->1498"
9347 + "default.handlebars->27->1508"
9348 ]
9349 },
9350 {
@@ -9994,7 +10020,7 @@
10020 "ru": "Внешний",
10021 "zh-chs": "外部",
10022 "xloc": [
9997 - "default.handlebars->27->1633"
10023 + "default.handlebars->27->1644"
10024 ]
10025 },
10026 {
@@ -10221,7 +10247,7 @@
10247 "zh-chs": "文件通知",
10248 "xloc": [
10249 "default.handlebars->27->1115",
10224 - "default.handlebars->27->1523",
10250 + "default.handlebars->27->1533",
10251 "default.handlebars->27->494"
10252 ]
10253 },
@@ -10240,7 +10266,7 @@
10266 "zh-chs": "文件提示",
10267 "xloc": [
10268 "default.handlebars->27->1114",
10243 - "default.handlebars->27->1522",
10269 + "default.handlebars->27->1532",
10270 "default.handlebars->27->493"
10271 ]
10272 },
@@ -10394,7 +10420,7 @@
10420 "zh-chs": "下次登錄時強制重置密碼。",
10421 "xloc": [
10422 "default.handlebars->27->1415",
10397 - "default.handlebars->27->1552"
10423 + "default.handlebars->27->1562"
10424 ]
10425 },
10426 {
@@ -10480,8 +10506,8 @@
10506 "ru": "Свободно",
10507 "zh-chs": "自由",
10508 "xloc": [
10483 - "default.handlebars->27->1594",
10484 - "default.handlebars->27->1596"
10509 + "default.handlebars->27->1605",
10510 + "default.handlebars->27->1607"
10511 ]
10512 },
10513 {
@@ -10773,7 +10799,7 @@
10799 "ru": "Администратор с полным доступом",
10800 "zh-chs": "正式管理員",
10801 "xloc": [
10776 - "default.handlebars->27->1493"
10802 + "default.handlebars->27->1503"
10803 ]
10804 },
10805 {
@@ -11177,9 +11203,11 @@
11203 "zh-chs": "集體行動",
11204 "xloc": [
11205 "default.handlebars->27->1385",
11206 + "default.handlebars->27->1447",
11207 "default.handlebars->27->384",
11208 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->devListToolbar",
11182 - "default.handlebars->container->column_l->p4->3->1->0->3->3"
11209 + "default.handlebars->container->column_l->p4->3->1->0->3->3",
11210 + "default.handlebars->container->column_l->p50->3->1->0->3->3"
11211 ]
11212 },
11213 {
@@ -11196,7 +11224,7 @@
11224 "ru": "Члены группы",
11225 "zh-chs": "小組成員",
11226 "xloc": [
11199 - "default.handlebars->27->1456"
11227 + "default.handlebars->27->1466"
11228 ]
11229 },
11230 {
@@ -11369,7 +11397,7 @@
11397 "ru": "Всего кучи",
11398 "zh-chs": "堆總數",
11399 "xloc": [
11372 - "default.handlebars->27->1635"
11400 + "default.handlebars->27->1646"
11401 ]
11402 },
11403 {
@@ -11386,7 +11414,7 @@
11414 "ru": "Куча используется",
11415 "zh-chs": "堆使用",
11416 "xloc": [
11389 - "default.handlebars->27->1634"
11417 + "default.handlebars->27->1645"
11418 ]
11419 },
11420 {
@@ -12161,8 +12189,8 @@
12189 "xloc": [
12190 "default.handlebars->27->1294",
12191 "default.handlebars->27->1300",
12164 - "default.handlebars->27->1631",
12165 - "default.handlebars->27->1653"
12192 + "default.handlebars->27->1642",
12193 + "default.handlebars->27->1664"
12194 ]
12195 },
12196 {
@@ -12867,7 +12895,7 @@
12895 "ru": "Некорректный тип группы устройств",
12896 "zh-chs": "無效的設備組類型",
12897 "xloc": [
12870 - "default.handlebars->27->1608"
12898 + "default.handlebars->27->1619"
12899 ]
12900 },
12901 {
@@ -12884,7 +12912,7 @@
12912 "ru": "Некорректный JSON",
12913 "zh-chs": "無效的JSON",
12914 "xloc": [
12887 - "default.handlebars->27->1602"
12915 + "default.handlebars->27->1613"
12916 ]
12917 },
12918 {
@@ -12936,7 +12964,7 @@
12964 "ru": "Некорректная сигнатура PKCS",
12965 "zh-chs": "無效的PKCS簽名",
12966 "xloc": [
12939 - "default.handlebars->27->1600"
12967 + "default.handlebars->27->1611"
12968 ]
12969 },
12970 {
@@ -12953,7 +12981,7 @@
12981 "ru": "Некорректная сигнатура RSA",
12982 "zh-chs": "無效的RSA密碼",
12983 "xloc": [
12956 - "default.handlebars->27->1601"
12984 + "default.handlebars->27->1612"
12985 ]
12986 },
12987 {
@@ -13773,7 +13801,7 @@
13801 "ru": "Последний вход в систему",
13802 "zh-chs": "上次登錄",
13803 "xloc": [
13776 - "default.handlebars->27->1505"
13804 + "default.handlebars->27->1515"
13805 ]
13806 },
13807 {
@@ -13831,7 +13859,7 @@
13859 "ru": "Последнее изменение: {0}",
13860 "zh-chs": "上次更改:{0}",
13861 "xloc": [
13834 - "default.handlebars->27->1509"
13862 + "default.handlebars->27->1519"
13863 ]
13864 },
13865 {
@@ -14024,7 +14052,7 @@
14052 "ru": "Меньше",
14053 "zh-chs": "減",
14054 "xloc": [
14027 - "default.handlebars->27->1670"
14055 + "default.handlebars->27->1681"
14056 ]
14057 },
14058 {
@@ -14612,7 +14640,7 @@
14640 "ru": "Заблокированная учетная запись",
14641 "zh-chs": "賬戶鎖定",
14642 "xloc": [
14615 - "default.handlebars->27->1490"
14643 + "default.handlebars->27->1500"
14644 ]
14645 },
14646 {
@@ -15100,7 +15128,7 @@
15128 "ru": "Сообщения главного сервера",
15129 "zh-chs": "主服務器消息",
15130 "xloc": [
15103 - "default.handlebars->27->1642"
15131 + "default.handlebars->27->1653"
15132 ]
15133 },
15134 {
@@ -15501,7 +15529,7 @@
15529 "ru": "Достигнуто максимальное число сессий",
15530 "zh-chs": "達到的會話數上限",
15531 "xloc": [
15504 - "default.handlebars->27->1606"
15532 + "default.handlebars->27->1617"
15533 ]
15534 },
15535 {
@@ -15555,7 +15583,7 @@
15583 "ru": "Мегабайт",
15584 "zh-chs": "兆字節",
15585 "xloc": [
15558 - "default.handlebars->27->1632"
15586 + "default.handlebars->27->1643"
15587 ]
15588 },
15589 {
@@ -15572,7 +15600,7 @@
15600 "ru": "ОЗУ",
15601 "zh-chs": "記憶",
15602 "xloc": [
15575 - "default.handlebars->27->1623",
15603 + "default.handlebars->27->1634",
15604 "default.handlebars->27->803",
15605 "default.handlebars->container->column_l->p40->3->1->p40type->3"
15606 ]
@@ -15708,7 +15736,7 @@
15736 "ru": "Трафик MeshAgent",
15737 "zh-chs": "MeshAgent流量",
15738 "xloc": [
15711 - "default.handlebars->27->1644"
15739 + "default.handlebars->27->1655"
15740 ]
15741 },
15742 {
@@ -15725,7 +15753,7 @@
15753 "ru": "Обновление MeshAgent",
15754 "zh-chs": "MeshAgent更新",
15755 "xloc": [
15728 - "default.handlebars->27->1645"
15756 + "default.handlebars->27->1656"
15757 ]
15758 },
15759 {
@@ -15828,7 +15856,7 @@
15856 "ru": "Соединения сервера MeshCentral",
15857 "zh-chs": "MeshCentral服務器對等",
15858 "xloc": [
15831 - "default.handlebars->27->1643"
15859 + "default.handlebars->27->1654"
15860 ]
15861 },
15862 {
@@ -16090,7 +16118,7 @@
16118 "ru": "Диспетчер сообщения",
16119 "zh-chs": "郵件調度程序",
16120 "xloc": [
16093 - "default.handlebars->27->1641"
16121 + "default.handlebars->27->1652"
16122 ]
16123 },
16124 {
@@ -16221,7 +16249,7 @@
16249 "ru": "Еще",
16250 "zh-chs": "更多",
16251 "xloc": [
16224 - "default.handlebars->27->1669"
16252 + "default.handlebars->27->1680"
16253 ]
16254 },
16255 {
@@ -16553,10 +16581,10 @@
16581 "default.handlebars->27->1183",
16582 "default.handlebars->27->1353",
16583 "default.handlebars->27->1438",
16556 - "default.handlebars->27->1442",
16557 - "default.handlebars->27->1447",
16558 - "default.handlebars->27->1449",
16559 - "default.handlebars->27->1477",
16584 + "default.handlebars->27->1452",
16585 + "default.handlebars->27->1457",
16586 + "default.handlebars->27->1459",
16587 + "default.handlebars->27->1487",
16588 "default.handlebars->27->450",
16589 "default.handlebars->27->680",
16590 "default.handlebars->27->753",
@@ -16953,7 +16981,7 @@
16981 "zh-chs": "找不到活動",
16982 "xloc": [
16983 "default.handlebars->27->1343",
16956 - "default.handlebars->27->1588",
16984 + "default.handlebars->27->1599",
16985 "default.handlebars->27->751"
16986 ]
16987 },
@@ -17095,7 +17123,7 @@
17123 "ru": "Нет членов",
17124 "zh-chs": "沒有會員",
17125 "xloc": [
17098 - "default.handlebars->27->1459"
17126 + "default.handlebars->27->1469"
17127 ]
17128 },
17129 {
@@ -17244,8 +17272,8 @@
17272 "ru": "Нет общих групп устройств",
17273 "zh-chs": "沒有共同的設備組",
17274 "xloc": [
17247 - "default.handlebars->27->1465",
17248 - "default.handlebars->27->1568"
17275 + "default.handlebars->27->1475",
17276 + "default.handlebars->27->1579"
17277 ]
17278 },
17279 {
@@ -17332,8 +17360,8 @@
17360 "zh-chs": "沒有共同的設備",
17361 "es": "Sin dispositivos en común",
17362 "xloc": [
17335 - "default.handlebars->27->1471",
17336 - "default.handlebars->27->1562"
17363 + "default.handlebars->27->1481",
17364 + "default.handlebars->27->1573"
17365 ]
17366 },
17367 {
@@ -17521,7 +17549,7 @@
17549 "ru": "Нет серверных прав",
17550 "zh-chs": "沒有服務器權限",
17551 "xloc": [
17524 - "default.handlebars->27->1491"
17552 + "default.handlebars->27->1501"
17553 ]
17554 },
17555 {
@@ -17538,7 +17566,7 @@
17566 "ru": "Нет членства в группах пользователей",
17567 "zh-chs": "沒有用戶組成員身份",
17568 "xloc": [
17541 - "default.handlebars->27->1574"
17569 + "default.handlebars->27->1585"
17570 ]
17571 },
17572 {
@@ -17636,11 +17664,11 @@
17664 "default.handlebars->27->1123",
17665 "default.handlebars->27->1125",
17666 "default.handlebars->27->1313",
17639 - "default.handlebars->27->1446",
17667 + "default.handlebars->27->1456",
17668 "default.handlebars->27->149",
17641 - "default.handlebars->27->1510",
17642 - "default.handlebars->27->1514",
17643 - "default.handlebars->27->1526",
17669 + "default.handlebars->27->1520",
17670 + "default.handlebars->27->1524",
17671 + "default.handlebars->27->1536",
17672 "default.handlebars->27->165",
17673 "default.handlebars->27->166",
17674 "default.handlebars->27->443",
@@ -17807,7 +17835,7 @@
17835 "ru": "Не задано",
17836 "zh-chs": "沒有設置",
17837 "xloc": [
17810 - "default.handlebars->27->1496"
17838 + "default.handlebars->27->1506"
17839 ]
17840 },
17841 {
@@ -17824,7 +17852,7 @@
17852 "zh-chs": "未經審核的",
17853 "es": "Sin Verificar",
17854 "xloc": [
17827 - "default.handlebars->27->1545"
17855 + "default.handlebars->27->1555"
17856 ]
17857 },
17858 {
@@ -17842,7 +17870,7 @@
17870 "zh-chs": "筆記",
17871 "xloc": [
17872 "default.handlebars->27->1133",
17845 - "default.handlebars->27->1533",
17873 + "default.handlebars->27->1543",
17874 "default.handlebars->27->513",
17875 "default.handlebars->27->565",
17876 "default.handlebars->27->584",
@@ -17950,7 +17978,7 @@
17978 "ru": "Уведомить",
17979 "zh-chs": "通知",
17980 "xloc": [
17953 - "default.handlebars->27->1535"
17981 + "default.handlebars->27->1545"
17982 ]
17983 },
17984 {
@@ -18062,7 +18090,7 @@
18090 "ru": "Произошло в {0}",
18091 "zh-chs": "發生在{0}",
18092 "xloc": [
18065 - "default.handlebars->27->1591"
18093 + "default.handlebars->27->1602"
18094 ]
18095 },
18096 {
@@ -18277,6 +18305,7 @@
18305 "xloc": [
18306 "default-mobile.handlebars->9->213",
18307 "default.handlebars->27->1381",
18308 + "default.handlebars->27->1445",
18309 "default.handlebars->27->376",
18310 "default.handlebars->27->602"
18311 ]
@@ -18514,7 +18543,7 @@
18543 "ru": "Частичные права",
18544 "zh-chs": "部分權利",
18545 "xloc": [
18517 - "default.handlebars->27->1494"
18546 + "default.handlebars->27->1504"
18547 ]
18548 },
18549 {
@@ -18551,10 +18580,10 @@
18580 "default-mobile.handlebars->9->216",
18581 "default.handlebars->27->1412",
18582 "default.handlebars->27->1413",
18554 - "default.handlebars->27->1506",
18555 - "default.handlebars->27->1508",
18556 - "default.handlebars->27->1548",
18557 - "default.handlebars->27->1549",
18583 + "default.handlebars->27->1516",
18584 + "default.handlebars->27->1518",
18585 + "default.handlebars->27->1558",
18586 + "default.handlebars->27->1559",
18587 "default.handlebars->27->227",
18588 "default.handlebars->27->256",
18589 "default.handlebars->27->608"
@@ -18650,7 +18679,7 @@
18679 "ru": "Подсказка пароля",
18680 "zh-chs": "密碼提示",
18681 "xloc": [
18653 - "default.handlebars->27->1550"
18682 + "default.handlebars->27->1560"
18683 ]
18684 },
18685 {
@@ -19091,7 +19120,7 @@
19120 "zh-chs": "插件動作",
19121 "xloc": [
19122 "default.handlebars->27->160",
19094 - "default.handlebars->27->1666"
19123 + "default.handlebars->27->1677"
19124 ]
19125 },
19126 {
@@ -19807,7 +19836,7 @@
19836 "ru": "RSS",
19837 "zh-chs": "的RSS",
19838 "xloc": [
19810 - "default.handlebars->27->1636"
19839 + "default.handlebars->27->1647"
19840 ]
19841 },
19842 {
@@ -19991,7 +20020,7 @@
20020 "ru": "Число ретрансляций",
20021 "zh-chs": "中繼計數",
20022 "xloc": [
19994 - "default.handlebars->27->1618"
20023 + "default.handlebars->27->1629"
20024 ]
20025 },
20026 {
@@ -20008,7 +20037,7 @@
20037 "ru": "Ошибки ретранслятора",
20038 "zh-chs": "中繼錯誤",
20039 "xloc": [
20011 - "default.handlebars->27->1611"
20040 + "default.handlebars->27->1622"
20041 ]
20042 },
20043 {
@@ -20025,8 +20054,8 @@
20054 "ru": "Сессии ретранслятора",
20055 "zh-chs": "接力會議",
20056 "xloc": [
20028 - "default.handlebars->27->1617",
20029 - "default.handlebars->27->1630"
20057 + "default.handlebars->27->1628",
20058 + "default.handlebars->27->1641"
20059 ]
20060 },
20061 {
@@ -20217,7 +20246,7 @@
20246 "ru": "Удаленный пользователь",
20247 "zh-chs": "遠程用戶",
20248 "xloc": [
20220 - "default.handlebars->27->1483"
20249 + "default.handlebars->27->1493"
20250 ]
20251 },
20252 {
@@ -20303,8 +20332,8 @@
20332 "zh-chs": "删除设备",
20333 "es": "Dispositivo Remoto",
20334 "xloc": [
20306 - "default.handlebars->27->1473",
20307 - "default.handlebars->27->1575"
20335 + "default.handlebars->27->1483",
20336 + "default.handlebars->27->1586"
20337 ]
20338 },
20339 {
@@ -20321,8 +20350,8 @@
20350 "ru": "Удалить группу устройств.",
20351 "zh-chs": "刪除設備組",
20352 "xloc": [
20324 - "default.handlebars->27->1475",
20325 - "default.handlebars->27->1586"
20353 + "default.handlebars->27->1485",
20354 + "default.handlebars->27->1597"
20355 ]
20356 },
20357 {
@@ -20339,9 +20368,9 @@
20368 "ru": "Удалить пользователя",
20369 "zh-chs": "刪除用戶",
20370 "xloc": [
20342 - "default.handlebars->27->1577",
20343 - "default.handlebars->27->1579",
20344 - "default.handlebars->27->1582"
20371 + "default.handlebars->27->1588",
20372 + "default.handlebars->27->1590",
20373 + "default.handlebars->27->1593"
20374 ]
20375 },
20376 {
@@ -20358,7 +20387,7 @@
20387 "ru": "Удалить все двухфакторные аутентификации.",
20388 "zh-chs": "刪除所有第二因素驗證。",
20389 "xloc": [
20361 - "default.handlebars->27->1553"
20390 + "default.handlebars->27->1563"
20391 ]
20392 },
20393 {
@@ -20440,7 +20469,7 @@
20469 "zh-chs": "删除该用户",
20470 "es": "Eliminar a este usuario",
20471 "xloc": [
20443 - "default.handlebars->27->1537"
20472 + "default.handlebars->27->1547"
20473 ]
20474 },
20475 {
@@ -20457,13 +20486,13 @@
20486 "ru": "Удалить членство пользователя в группе",
20487 "zh-chs": "刪除用戶組成員身份",
20488 "xloc": [
20460 - "default.handlebars->27->1572"
20489 + "default.handlebars->27->1583"
20490 ]
20491 },
20492 {
20493 "en": "Remove user group rights to this device",
20494 "xloc": [
20466 - "default.handlebars->27->1469"
20495 + "default.handlebars->27->1479"
20496 ]
20497 },
20498 {
@@ -20480,7 +20509,7 @@
20509 "ru": "Удалить права группы пользователей для этой группы устройств",
20510 "zh-chs": "刪除該設備組的用戶組權限",
20511 "xloc": [
20483 - "default.handlebars->27->1463",
20512 + "default.handlebars->27->1473",
20513 "default.handlebars->27->549"
20514 ]
20515 },
@@ -20499,9 +20528,9 @@
20528 "zh-chs": "刪除此設備組的用戶權限",
20529 "xloc": [
20530 "default.handlebars->27->1150",
20502 - "default.handlebars->27->1457",
20503 - "default.handlebars->27->1560",
20504 - "default.handlebars->27->1566",
20531 + "default.handlebars->27->1467",
20532 + "default.handlebars->27->1571",
20533 + "default.handlebars->27->1577",
20534 "default.handlebars->27->550"
20535 ]
20536 },
@@ -20564,7 +20593,7 @@
20593 "xloc": [
20594 "default-mobile.handlebars->9->51",
20595 "default.handlebars->27->1419",
20567 - "default.handlebars->27->1551"
20596 + "default.handlebars->27->1561"
20597 ]
20598 },
20599 {
@@ -20792,7 +20821,7 @@
20821 "ru": "Ограничения",
20822 "zh-chs": "限制條件",
20823 "xloc": [
20795 - "default.handlebars->27->1495"
20824 + "default.handlebars->27->1505"
20825 ]
20826 },
20827 {
@@ -21347,7 +21376,7 @@
21376 "zh-chs": "安全",
21377 "xloc": [
21378 "default-mobile.handlebars->9->217",
21350 - "default.handlebars->27->1531",
21379 + "default.handlebars->27->1541",
21380 "default.handlebars->27->228",
21381 "default.handlebars->27->609",
21382 "default.handlebars->27->784"
@@ -21367,7 +21396,7 @@
21396 "ru": "Ключ безопасности",
21397 "zh-chs": "安全密鑰",
21398 "xloc": [
21370 - "default.handlebars->27->1529"
21399 + "default.handlebars->27->1539"
21400 ]
21401 },
21402 {
@@ -21403,6 +21432,7 @@
21432 "xloc": [
21433 "default.handlebars->27->1323",
21434 "default.handlebars->27->1379",
21435 + "default.handlebars->27->1443",
21436 "default.handlebars->27->372",
21437 "default.handlebars->27->714",
21438 "default.handlebars->27->716",
@@ -21410,6 +21440,7 @@
21440 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
21441 "default.handlebars->container->column_l->p4->3->1->0->3->3",
21442 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
21443 + "default.handlebars->container->column_l->p50->3->1->0->3->3",
21444 "default.handlebars->meshContextMenu->cxselectall"
21445 ]
21446 },
@@ -21429,6 +21460,7 @@
21460 "xloc": [
21461 "default.handlebars->27->1322",
21462 "default.handlebars->27->1378",
21463 + "default.handlebars->27->1442",
21464 "default.handlebars->27->371",
21465 "default.handlebars->27->715",
21466 "default.handlebars->meshContextMenu->cxselectnone"
@@ -21506,7 +21538,8 @@
21538 "en": "Select an operation to perform on all selected users.",
21539 "nl": "Selecteer een bewerking die u op alle geselecteerde gebruikers wilt uitvoeren.",
21540 "xloc": [
21509 - "default.handlebars->27->1380"
21541 + "default.handlebars->27->1380",
21542 + "default.handlebars->27->1444"
21543 ]
21544 },
21545 {
@@ -21631,7 +21664,7 @@
21664 "ru": "Отправить уведомление всем пользователям этой группы.",
21665 "zh-chs": "向該組中的所有用戶發送通知。",
21666 "xloc": [
21634 - "default.handlebars->27->1454"
21667 + "default.handlebars->27->1464"
21668 ]
21669 },
21670 {
@@ -21748,7 +21781,7 @@
21781 "ru": "Отправить уведомление пользователю",
21782 "zh-chs": "發送用戶通知",
21783 "xloc": [
21751 - "default.handlebars->27->1536"
21784 + "default.handlebars->27->1546"
21785 ]
21786 },
21787 {
@@ -21816,7 +21849,7 @@
21849 "ru": "Сертификат сервера",
21850 "zh-chs": "服務器證書",
21851 "xloc": [
21819 - "default.handlebars->27->1646"
21852 + "default.handlebars->27->1657"
21853 ]
21854 },
21855 {
@@ -21833,7 +21866,7 @@
21866 "zh-chs": "服務器數據庫",
21867 "es": "Base de Datos del Servidor",
21868 "xloc": [
21836 - "default.handlebars->27->1647"
21869 + "default.handlebars->27->1658"
21870 ]
21871 },
21872 {
@@ -21891,7 +21924,7 @@
21924 "ru": "Квота сервера",
21925 "zh-chs": "服務器配額",
21926 "xloc": [
21894 - "default.handlebars->27->1503"
21927 + "default.handlebars->27->1513"
21928 ]
21929 },
21930 {
@@ -21925,7 +21958,7 @@
21958 "ru": "Права",
21959 "zh-chs": "服務器權限",
21960 "xloc": [
21928 - "default.handlebars->27->1502"
21961 + "default.handlebars->27->1512"
21962 ]
21963 },
21964 {
@@ -21942,7 +21975,7 @@
21975 "ru": "Состояние сервера",
21976 "zh-chs": "服務器狀態",
21977 "xloc": [
21945 - "default.handlebars->27->1597"
21978 + "default.handlebars->27->1608"
21979 ]
21980 },
21981 {
@@ -21976,7 +22009,7 @@
22009 "ru": "Трассировка сервера",
22010 "zh-chs": "服務器跟踪",
22011 "xloc": [
21979 - "default.handlebars->27->1657"
22012 + "default.handlebars->27->1668"
22013 ]
22014 },
22015 {
@@ -22115,7 +22148,7 @@
22148 "ru": "ServerStats.csv",
22149 "zh-chs": "ServerStats.csv",
22150 "xloc": [
22118 - "default.handlebars->27->1638"
22151 + "default.handlebars->27->1649"
22152 ]
22153 },
22154 {
@@ -23451,7 +23484,7 @@
23484 "ru": "Статус",
23485 "zh-chs": "狀態",
23486 "xloc": [
23454 - "default.handlebars->27->1544",
23487 + "default.handlebars->27->1554",
23488 "default.handlebars->container->column_l->p42->p42tbl->1->0->7"
23489 ]
23490 },
@@ -24015,7 +24048,7 @@
24048 "zh-chs": "終端通知",
24049 "xloc": [
24050 "default.handlebars->27->1113",
24018 - "default.handlebars->27->1521",
24051 + "default.handlebars->27->1531",
24052 "default.handlebars->27->492"
24053 ]
24054 },
@@ -24034,7 +24067,7 @@
24067 "zh-chs": "終端提示",
24068 "xloc": [
24069 "default.handlebars->27->1112",
24037 - "default.handlebars->27->1520",
24070 + "default.handlebars->27->1530",
24071 "default.handlebars->27->491"
24072 ]
24073 },
@@ -24178,7 +24211,7 @@
24211 "ru": "На данный момент уведомлений нет",
24212 "zh-chs": "目前沒有任何通知",
24213 "xloc": [
24181 - "default.handlebars->27->1590"
24214 + "default.handlebars->27->1601"
24215 ]
24216 },
24217 {
@@ -25384,7 +25417,7 @@
25417 "default-mobile.handlebars->9->174",
25418 "default-mobile.handlebars->9->175",
25419 "default.handlebars->27->13",
25387 - "default.handlebars->27->1581",
25420 + "default.handlebars->27->1592",
25421 "default.handlebars->27->370",
25422 "default.handlebars->27->41",
25423 "default.handlebars->27->42",
@@ -25426,7 +25459,7 @@
25459 "ru": "Неизвестное действие",
25460 "zh-chs": "未知動作",
25461 "xloc": [
25429 - "default.handlebars->27->1603"
25462 + "default.handlebars->27->1614"
25463 ]
25464 },
25465 {
@@ -25443,8 +25476,8 @@
25476 "zh-chs": "未知設備",
25477 "es": "Dispositivo desconocido",
25478 "xloc": [
25446 - "default.handlebars->27->1468",
25447 - "default.handlebars->27->1559"
25479 + "default.handlebars->27->1478",
25480 + "default.handlebars->27->1570"
25481 ]
25482 },
25483 {
@@ -25461,9 +25494,9 @@
25494 "ru": "Неизвестная группа устройств",
25495 "zh-chs": "未知設備組",
25496 "xloc": [
25464 - "default.handlebars->27->1462",
25465 - "default.handlebars->27->1565",
25466 - "default.handlebars->27->1607"
25497 + "default.handlebars->27->1472",
25498 + "default.handlebars->27->1576",
25499 + "default.handlebars->27->1618"
25500 ]
25501 },
25502 {
@@ -25480,7 +25513,7 @@
25513 "ru": "Неизвестная группа",
25514 "zh-chs": "未知群組",
25515 "xloc": [
25483 - "default.handlebars->27->1599"
25516 + "default.handlebars->27->1610"
25517 ]
25518 },
25519 {
@@ -25515,7 +25548,7 @@
25548 "ru": "Неизвестная группа пользователей",
25549 "zh-chs": "未知用戶組",
25550 "xloc": [
25518 - "default.handlebars->27->1571"
25551 + "default.handlebars->27->1582"
25552 ]
25553 },
25554 {
@@ -25597,7 +25630,7 @@
25630 "ru": "Актуально",
25631 "zh-chs": "最新",
25632 "xloc": [
25600 - "default.handlebars->27->1664"
25633 + "default.handlebars->27->1675"
25634 ]
25635 },
25636 {
@@ -25846,8 +25879,8 @@
25879 "ru": "Использовано",
25880 "zh-chs": "用過的",
25881 "xloc": [
25849 - "default.handlebars->27->1593",
25850 - "default.handlebars->27->1595"
25882 + "default.handlebars->27->1604",
25883 + "default.handlebars->27->1606"
25884 ]
25885 },
25886 {
@@ -25867,7 +25900,7 @@
25900 "default-mobile.handlebars->9->329",
25901 "default.handlebars->27->1151",
25902 "default.handlebars->27->1368",
25870 - "default.handlebars->27->1458",
25903 + "default.handlebars->27->1468",
25904 "default.handlebars->27->184",
25905 "default.handlebars->27->552"
25906 ]
@@ -25923,7 +25956,7 @@
25956 "ru": "Учетные записи пользователей",
25957 "zh-chs": "用戶帳號",
25958 "xloc": [
25926 - "default.handlebars->27->1612"
25959 + "default.handlebars->27->1623"
25960 ]
25961 },
25962 {
@@ -25960,7 +25993,7 @@
25993 "zh-chs": "用戶同意",
25994 "xloc": [
25995 "default.handlebars->27->1119",
25963 - "default.handlebars->27->1527",
25996 + "default.handlebars->27->1537",
25997 "default.handlebars->27->498"
25998 ]
25999 },
@@ -25980,9 +26013,9 @@
26013 "xloc": [
26014 "default.handlebars->27->1207",
26015 "default.handlebars->27->1208",
25983 - "default.handlebars->27->1441",
25984 - "default.handlebars->27->1573",
26016 + "default.handlebars->27->1451",
26017 "default.handlebars->27->1584",
26018 + "default.handlebars->27->1595",
26019 "default.handlebars->27->551"
26020 ]
26021 },
@@ -26017,7 +26050,7 @@
26050 "ru": "Членство в группах пользователей",
26051 "zh-chs": "用戶組成員資格",
26052 "xloc": [
26020 - "default.handlebars->27->1570"
26053 + "default.handlebars->27->1581"
26054 ]
26055 },
26056 {
@@ -26035,7 +26068,7 @@
26068 "zh-chs": "用戶標識",
26069 "xloc": [
26070 "default.handlebars->27->1266",
26038 - "default.handlebars->27->1499"
26071 + "default.handlebars->27->1509"
26072 ]
26073 },
26074 {
@@ -26087,7 +26120,7 @@
26120 "zh-chs": "用戶名",
26121 "xloc": [
26122 "default.handlebars->27->1205",
26090 - "default.handlebars->27->1487"
26123 + "default.handlebars->27->1497"
26124 ]
26125 },
26126 {
@@ -26133,7 +26166,7 @@
26166 "ru": "Сессии пользователя",
26167 "zh-chs": "用戶會話",
26168 "xloc": [
26136 - "default.handlebars->27->1629"
26169 + "default.handlebars->27->1640"
26170 ]
26171 },
26172 {
@@ -26316,9 +26349,9 @@
26349 "ru": "Пользователи",
26350 "zh-chs": "用戶數",
26351 "xloc": [
26319 - "default.handlebars->27->1440",
26320 - "default.handlebars->27->1451",
26321 - "default.handlebars->27->1628",
26352 + "default.handlebars->27->1441",
26353 + "default.handlebars->27->1461",
26354 + "default.handlebars->27->1639",
26355 "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral"
26356 ]
26357 },
@@ -26336,7 +26369,7 @@
26369 "ru": "Сессии пользователей",
26370 "zh-chs": "用戶會話",
26371 "xloc": [
26339 - "default.handlebars->27->1616"
26372 + "default.handlebars->27->1627"
26373 ]
26374 },
26375 {
@@ -26405,7 +26438,7 @@
26438 "zh-chs": "已驗證",
26439 "es": "Verficado",
26440 "xloc": [
26408 - "default.handlebars->27->1546"
26441 + "default.handlebars->27->1556"
26442 ]
26443 },
26444 {
@@ -26475,7 +26508,7 @@
26508 "zh-chs": "版本不兼容,请先升级您的MeshCentral安装",
26509 "es": "Versión Incompatible, por favor primero actualice su instalación de MeshCentral",
26510 "xloc": [
26478 - "default.handlebars->27->1660"
26511 + "default.handlebars->27->1671"
26512 ]
26513 },
26514 {
@@ -26541,8 +26574,8 @@
26574 "zh-chs": "查看变更日志",
26575 "es": "Ver registro de cambios",
26576 "xloc": [
26544 - "default.handlebars->27->1663",
26545 - "default.handlebars->27->1665"
26577 + "default.handlebars->27->1674",
26578 + "default.handlebars->27->1676"
26579 ]
26580 },
26581 {
@@ -26593,7 +26626,7 @@
26626 "ru": "Посмотреть примечания об этом пользователе",
26627 "zh-chs": "查看有關此用戶的註釋",
26628 "xloc": [
26596 - "default.handlebars->27->1534"
26629 + "default.handlebars->27->1544"
26630 ]
26631 },
26632 {
@@ -26785,8 +26818,8 @@
26818 "ru": "Веб-сервер",
26819 "zh-chs": "網絡服務器",
26820 "xloc": [
26788 - "default.handlebars->27->1649",
26789 - "default.handlebars->27->1650"
26821 + "default.handlebars->27->1660",
26822 + "default.handlebars->27->1661"
26823 ]
26824 },
26825 {
@@ -26803,7 +26836,7 @@
26836 "ru": "Запросы веб-сервера",
26837 "zh-chs": "Web服務器請求",
26838 "xloc": [
26806 - "default.handlebars->27->1651"
26839 + "default.handlebars->27->1662"
26840 ]
26841 },
26842 {
@@ -26820,7 +26853,7 @@
26853 "ru": "Ретранслятор Web Socket",
26854 "zh-chs": "Web套接字中繼",
26855 "xloc": [
26823 - "default.handlebars->27->1652"
26856 + "default.handlebars->27->1663"
26857 ]
26858 },
26859 {
@@ -26925,7 +26958,7 @@
26958 "ru": "Будет изменено при следующем входе в систему.",
26959 "zh-chs": "下次登錄時將更改。",
26960 "xloc": [
26928 - "default.handlebars->27->1507"
26961 + "default.handlebars->27->1517"
26962 ]
26963 },
26964 {
@@ -27841,7 +27874,7 @@
27874 "ru": "\\\\'",
27875 "zh-chs": "\\\\'",
27876 "xloc": [
27844 - "default.handlebars->27->1661"
27877 + "default.handlebars->27->1672"
27878 ]
27879 },
27880 {
@@ -28112,7 +28145,7 @@
28145 "ru": "свободно",
28146 "zh-chs": "自由",
28147 "xloc": [
28115 - "default.handlebars->27->1624"
28148 + "default.handlebars->27->1635"
28149 ]
28150 },
28151 {
@@ -28468,7 +28501,7 @@
28501 "ru": "servertrace.csv",
28502 "zh-chs": "servertrace.csv",
28503 "xloc": [
28471 - "default.handlebars->27->1659"
28504 + "default.handlebars->27->1670"
28505 ]
28506 },
28507 {
@@ -28521,7 +28554,7 @@
28554 "zh-chs": "時間,conn.agent,conn.users,conn.usersessions,conn.relaysession,conn.intelamt,mem.external,mem.heapused,mem.heaptotal,mem.rss",
28555 "es": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss",
28556 "xloc": [
28524 - "default.handlebars->27->1637"
28557 + "default.handlebars->27->1648"
28558 ]
28559 },
28560 {
@@ -28538,7 +28571,7 @@
28571 "ru": "time, source, message",
28572 "zh-chs": "時間,來源,訊息",
28573 "xloc": [
28541 - "default.handlebars->27->1658"
28574 + "default.handlebars->27->1669"
28575 ]
28576 },
28577 {
@@ -28569,7 +28602,7 @@
28602 "ru": "всего",
28603 "zh-chs": "總",
28604 "xloc": [
28572 - "default.handlebars->27->1625"
28605 + "default.handlebars->27->1636"
28606 ]
28607 },
28608 {
@@ -28774,7 +28807,7 @@
28807 "ru": "{0} активных сессий",
28808 "zh-chs": "{0}個活動會話",
28809 "xloc": [
28777 - "default.handlebars->27->1542"
28810 + "default.handlebars->27->1552"
28811 ]
28812 },
28813 {
@@ -28860,7 +28893,7 @@
28893 "ru": "{0} групп",
28894 "zh-chs": "{0}個群組",
28895 "xloc": [
28863 - "default.handlebars->27->1512"
28896 + "default.handlebars->27->1522"
28897 ]
28898 },
28899 {
views/default.handlebars
+74 -13
@@ -980,8 +980,10 @@
980 <div style="float:right">
981 </div>
982 <div>
983 - <input id=NewUserGroupButton type=button style=margin-left:6px onclick=showCreateUserGroupDialog(1) value="New Group..." />
984 - <input id=DuplicateUserGroupButton type=button style=margin-left:6px;display:none onclick=showCreateUserGroupDialog(2) value="Duplicate Group..." />
983 + <input type=button id=UsersGroupsSelectAllButton onclick="p50usersSelectallButtonFunction()" value="Select All" />
984 + <input type=button id=UsersGroupsGroupActionButton disabled="disabled" value="Group Action" onclick=p50usersGroupActionFunction() />
985 + <input id=NewUserGroupButton type=button onclick=showCreateUserGroupDialog(1) value="New Group..." />
986 + <input id=DuplicateUserGroupButton type=button style=display:none onclick=showCreateUserGroupDialog(2) value="Duplicate Group..." />
987 </div>
988 </td>
989 <td class="h2"></td>
@@ -9763,9 +9765,9 @@
9765 // Highlights the user being hovered
9766 function userMouseHover2(element, over) {
9767 var e = element.children[0].children[0];
9766 - e.children[1].classList.remove('g1s');
9767 - e.children[2].classList.remove('g2s');
9768 - if (over == 1) { e.children[1].classList.add('g1s'); e.children[2].classList.add('g2s'); }
9768 + e.children[2].classList.remove('g1s');
9769 + e.children[3].classList.remove('g2s');
9770 + if (over == 1) { e.children[2].classList.add('g1s'); e.children[3].classList.add('g2s'); }
9771 element.children[0].children[0].style['background-color'] = ((over == 0) ? '#c9c9c9' : '#b9b9b9');
9772 }
9773
@@ -10044,34 +10046,92 @@
10046 if (usergroups) { for (var i in usergroups) { sortedGroups.push(usergroups[i]); } }
10047 sortedGroups.sort(nameSort);
10048
10049 + // Save the list of currently checked users
10050 + var checkedUserGroupids = [], elements = document.getElementsByClassName('UserGroupCheckbox');
10051 + for (var i=0;i<elements.length;i++) { if (elements[i].checked) { checkedUserGroupids.push(elements[i].value); } }
10052 +
10053 if (sortedGroups.length == 0) {
10054 x += '<br />' + "No groups found." + '<br />';
10055 QV('DuplicateUserGroupButton', false);
10056 } else {
10057 // Display the groups using the sorted list
10058 x += '<table class=p3usersTable cellpadding=0 cellspacing=0>';
10053 - x += '<th>' + "Name" + '<th style=width:80px>' + "Device Groups" + '<th style=width:80px>' + "Users";
10059 + x += '<th>' + "Name" + '<th style=width:80px>' + "Devices" + '<th style=width:80px>' + "Device Groups" + '<th style=width:80px>' + "Users";
10060 for (var i in sortedGroups) { x += addUserGroupHtml(sortedGroups[i]); }
10061 x += '</table>';
10062 QV('DuplicateUserGroupButton', true);
10063 }
10064 QH('p50groups', x);
10065
10066 + // Re-check userid's
10067 + elements = document.getElementsByClassName('UserGroupCheckbox');
10068 + for (var i=0;i<elements.length;i++) { elements[i].checked = ((checkedUserGroupids.indexOf(elements[i].value) >= 0)); }
10069 + p50updateInfo();
10070 +
10071 // Update current user panel if needed
10072 if ((currentUserGroup != null) && (xxcurrentView == 51)) { gotoUserGroup(encodeURIComponent(currentUserGroup._id), true); }
10073 }
10074
10075 function addUserGroupHtml(group) {
10065 - var usercount = 0, meshcount = 0;
10066 - if (group.links) { for (var i in group.links) { if (i.startsWith('user/')) { usercount++; } if (i.startsWith('mesh/')) { meshcount++; } } }
10067 - var x = '<tr tabindex=0 onmouseover=userMouseHover2(this,1) onmouseout=userMouseHover2(this,0) onkeypress="if (event.key==\'Enter\') gotoUserGroup(\'' + encodeURIComponent(group._id) + '\')"><td style=cursor:pointer onclick=gotoUserGroup(\"' + encodeURIComponent(group._id) + '\")>';
10076 + var usercount = 0, meshcount = 0, devicecount = 0;
10077 + if (group.links) { for (var i in group.links) { if (i.startsWith('user/')) { usercount++; } if (i.startsWith('mesh/')) { meshcount++; } if (i.startsWith('node/')) { devicecount++; } } }
10078 + var x = '<tr tabindex=0 onmouseover=userMouseHover2(this,1) onmouseout=userMouseHover2(this,0) onkeypress="if (event.key==\'Enter\') gotoUserGroup(\'' + encodeURIComponent(group._id) + '\')"><td style=cursor:pointer>';
10079 x += '<div class=bar style=width:100%>';
10069 - x += '<div class=baricon><div class=m4></div></div>';
10070 - x += '<div class=g1></div><div class=g2></div>';
10071 - x += '<div><span style=font-size:16px>' + group.name + '</span></div></div><td style=text-align:center>' + meshcount + '<td style=text-align:center>' + usercount;
10080 + x += '<div class=baricon><input class=UserGroupCheckbox value=' + encodeURIComponent(group._id) + ' onclick=p50updateInfo() type=checkbox></div>';
10081 + x += '<div class=baricon onclick=gotoUserGroup(\"' + encodeURIComponent(group._id) + '\")><div class=m4></div></div>';
10082 + x += '<div class=g1 onclick=gotoUserGroup(\"' + encodeURIComponent(group._id) + '\")></div><div class=g2 onclick=gotoUserGroup(\"' + encodeURIComponent(group._id) + '\")></div>';
10083 + x += '<div onclick=gotoUserGroup(\"' + encodeURIComponent(group._id) + '\")><span style=font-size:16px>' + group.name + '</span></div></div><td style=text-align:center>' + devicecount + '<td style=text-align:center>' + meshcount + '<td style=text-align:center>' + usercount;
10084 return x;
10085 }
10086
10087 + function p50updateInfo() {
10088 + var elements = document.getElementsByClassName('UserGroupCheckbox'), checkcount = 0;
10089 + for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) checkcount++; }
10090 + QE('UsersGroupsGroupActionButton', checkcount > 0);
10091 + Q('UsersGroupsSelectAllButton').value = (checkcount > 0)?"Select None":"Select All";
10092 + }
10093 +
10094 + // Called to select all or unselect all users
10095 + function p50usersSelectallButtonFunction() {
10096 + var eself = encodeURIComponent(userinfo._id);
10097 + var elements = document.getElementsByClassName('UserGroupCheckbox'), checkcount = 0;
10098 + for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) checkcount++; }
10099 + for (var i=0;i<elements.length;i++) { elements[i].checked = (checkcount == 0) && (elements[i].value != eself); }
10100 + p50updateInfo();
10101 + }
10102 +
10103 + // Called to perform a group action on many users
10104 + function p50usersGroupActionFunction() {
10105 + var elements = document.getElementsByClassName('UserGroupCheckbox'), checkcount = 0;
10106 + for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) checkcount++; }
10107 + if (checkcount == 0) return;
10108 +
10109 + var x = "Select an operation to perform on all selected users." + '<br /><br />';
10110 + x += addHtmlValue("Operation", '<select style=width:240px id=d50groupop><option value=1>' + "Delete group" + '</option></select>');
10111 + setDialogMode(2, "Group Action", 3, p50usersGroupActionFunctionEx, x);
10112 + }
10113 +
10114 + function p50usersGroupActionFunctionEx() {
10115 + var elements = document.getElementsByClassName('UserGroupCheckbox'), userids = [];
10116 + for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) { userids.push(decodeURIComponent(elements[i].value)); } }
10117 + var op = Q('d50groupop').value;
10118 + if (op == 1) {
10119 + // Delete user groups, ask for confirmation
10120 + var x = "Confirm delete selected user groups(s)?" + '<br /><br />';
10121 + x += '<label><input id=d3check type=checkbox onchange=p50usersGroupActionFunctionDelCheck() />' + "Confirm" + '</label>';
10122 + setDialogMode(2, "Delete User Groups", 3, p50groupActionFunctionDelExec, x);
10123 + QE('idx_dlgOkButton', false);
10124 + }
10125 + }
10126 +
10127 + function p50usersGroupActionFunctionDelCheck() { QE('idx_dlgOkButton', Q('d3check').checked); }
10128 +
10129 + // Delete a batch of user accounts
10130 + function p50groupActionFunctionDelExec(b) {
10131 + var elements = document.getElementsByClassName('UserGroupCheckbox');
10132 + for (var i=0;i<elements.length;i++) { if (elements[i].checked === true) { meshserver.send({ action: 'deleteusergroup', ugrpid: decodeURIComponent(elements[i].value) }); } }
10133 + }
10134 +
10135 function showCreateUserGroupDialog(mode) {
10136 if (xxdialogMode) return;
10137 var x = '', y = '';
@@ -10565,7 +10625,8 @@
10625
10626 function p30showDeleteUserDialog() {
10627 if (xxdialogMode) return;
10568 - setDialogMode(2, format("Delete User {0}", EscapeHtml(currentUser.name)), 3, p30showDeleteUserDialogEx, format("Confirm deletion of user {0}?", EscapeHtml(currentUser.name)));
10628 + setDialogMode(2, format("Delete User {0}", EscapeHtml(currentUser.name)), 3, p30showDeleteUserDialogEx, format("Confirm deletion of user {0}?", EscapeHtml(currentUser.name)) + '<br /><br /><label><input id=p10check type=checkbox onchange=p10validateDeleteNodeDialog() />' + "Confirm" + '</label>');
10629 + p10validateDeleteNodeDialog();
10630 }
10631
10632 function p30showDeleteUserDialogEx() {