Improved user panel, allow device group and user group control.

Ylian Saint-Hilaire committed Dec 30, 2019 at 15:38 UTC 8a77c78ebbabf98da51e21c177c9a64b5ad035d5
5 files changed +631 -427
meshuser.js
+72 -28
@@ -1513,7 +1513,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1513 // Create the new device group
1514 var ugrp = { type: 'ugrp', _id: ugrpid, name: command.name, desc: command.desc, domain: domain.id, links: {} };
1515 db.Set(common.escapeLinksFieldName(ugrp));
1516 - //parent.meshes[ugrpid] = ugrp;
1516
1517 // Event the device group creation
1518 var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: ugrpid, name: command.name, desc: command.desc, action: 'createusergroup', links: links, msg: 'User group created: ' + command.name, domain: domain.id };
@@ -1544,6 +1543,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1543 delete xuser.links[group._id];
1544 db.SetUser(xuser);
1545 parent.parent.DispatchEvent([xuser._id], obj, 'resubscribe');
1546 +
1547 + // Notify user change
1548 + var targets = ['*', 'server-users', user._id, xuser._id];
1549 + var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(xuser), action: 'accountchange', msg: 'User group membership changed: ' + xuser.name, domain: domain.id };
1550 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user. Another event will come.
1551 + parent.parent.DispatchEvent(targets, obj, event);
1552 }
1553 }
1554 }
@@ -1571,7 +1576,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1576 if ((err != null) || (groups.length != 1)) return;
1577 var group = common.unEscapeLinksFieldName(groups[0]), change = '';
1578
1574 - if ((common.validateString(command.name, 1, 64) == true) && (command.name != group.name) && (command.name.indexOf(' ') >= 0)) { change = 'User group name changed from "' + group.name + '" to "' + command.name + '"'; group.name = command.name; }
1579 + if ((common.validateString(command.name, 1, 64) == true) && (command.name != group.name) && (command.name.indexOf(' ') == -1)) { change = 'User group name changed from "' + group.name + '" to "' + command.name + '"'; group.name = command.name; }
1580 if ((common.validateString(command.desc, 0, 1024) == true) && (command.desc != group.desc)) { if (change != '') change += ' and description changed'; else change += 'User group "' + group.name + '" description changed'; group.desc = command.desc; }
1581 if (change != '') {
1582 db.Set(common.escapeLinksFieldName(group));
@@ -1609,22 +1614,28 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1614 var unknownUsers = [], addedCount = 0, failCount = 0;
1615 for (var i in command.usernames) {
1616 // Check if the user exists
1612 - var newuserid = 'user/' + domain.id + '/' + command.usernames[i].toLowerCase(), newuser = parent.users[newuserid];
1613 - if (newuser != null) {
1617 + var chguserid = 'user/' + domain.id + '/' + command.usernames[i].toLowerCase(), chguser = parent.users[chguserid];
1618 + if (chguser != null) {
1619 // Add mesh to user
1615 - if (newuser.links == null) { newuser.links = {}; }
1616 - newuser.links[group._id] = { rights: 1 };
1617 - db.SetUser(newuser);
1618 - parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe');
1620 + if (chguser.links == null) { chguser.links = {}; }
1621 + chguser.links[group._id] = { rights: 1 };
1622 + db.SetUser(chguser);
1623 + parent.parent.DispatchEvent([chguser._id], obj, 'resubscribe');
1624 +
1625 + // Notify user change
1626 + var targets = ['*', 'server-users', user._id, chguser._id];
1627 + var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(chguser), action: 'accountchange', msg: 'User group membership changed: ' + chguser.name, domain: domain.id };
1628 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user. Another event will come.
1629 + parent.parent.DispatchEvent(targets, obj, event);
1630
1631 // Add a user to the mesh
1621 - group.links[newuserid] = { userid: newuser.id, name: newuser.name, rights: 1 };
1632 + group.links[chguserid] = { userid: chguser.id, name: chguser.name, rights: 1 };
1633 db.Set(common.escapeLinksFieldName(group));
1634
1624 - // Notify mesh change
1625 - var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: group._id, name: group.name, desc: group.desc, action: 'usergroupchange', links: group.links, msg: 'Added user ' + newuser.name + ' to user group ' + group.name, domain: domain.id };
1635 + // Notify user group change
1636 + var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: group._id, name: group.name, desc: group.desc, action: 'usergroupchange', links: group.links, msg: 'Added user ' + chguser.name + ' to user group ' + group.name, domain: domain.id };
1637 if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user group. Another event will come.
1627 - parent.parent.DispatchEvent(['*', group._id, user._id, newuserid], obj, event);
1638 + parent.parent.DispatchEvent(['*', group._id, user._id, chguserid], obj, event);
1639 addedCount++;
1640 } else {
1641 unknownUsers.push(command.usernames[i]);
@@ -1661,27 +1672,42 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1672 }
1673
1674 db.Get(command.ugrpid, function (err, groups) {
1664 - if ((err != null) || (groups.length != 1)) { try { ws.send(JSON.stringify({ action: 'addusertousergroup', responseid: command.responseid, result: 'Invalid groupid' })); } catch (ex) { } return; }
1665 - var group = common.unEscapeLinksFieldName(groups[0]);
1666 - if (group.links == null) { group.links = {}; }
1675 + //if ((err != null) || (groups.length != 1)) { try { ws.send(JSON.stringify({ action: 'addusertousergroup', responseid: command.responseid, result: 'Invalid groupid' })); } catch (ex) { } return; }
1676 + var group = null;
1677 + if ((err == null) && (groups.length == 1)) { group = common.unEscapeLinksFieldName(groups[0]); }
1678
1679 // Check if the user exists
1669 - newuser = parent.users[command.userid];
1670 - if (newuser != null) {
1680 + var chguser = parent.users[command.userid];
1681 + if (chguser != null) {
1682 var change = false;
1672 - if ((newuser.links != null) && (newuser.links[command.ugrpid] != null)) { change = true; delete newuser.links[command.ugrpid]; }
1673 - db.SetUser(newuser);
1674 - parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe');
1683 + if ((chguser.links != null) && (chguser.links[command.ugrpid] != null)) {
1684 + change = true;
1685 + delete chguser.links[command.ugrpid];
1686
1676 - // Remove the user from the group
1677 - if ((group.links != null) && (group.links[command.userid] != null)) { change = true; delete group.links[command.userid]; }
1678 - db.Set(common.escapeLinksFieldName(group));
1687 + // Notify user change
1688 + var targets = ['*', 'server-users', user._id, chguser._id];
1689 + var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(chguser), action: 'accountchange', msg: 'User group membership changed: ' + chguser.name, domain: domain.id };
1690 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user. Another event will come.
1691 + parent.parent.DispatchEvent(targets, obj, event);
1692
1680 - // Notify mesh change
1681 - if (change) {
1682 - var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: group._id, name: group.name, desc: group.desc, action: 'usergroupchange', links: group.links, msg: 'Removed user ' + newuser.name + ' from user group ' + group.name, domain: domain.id };
1683 - if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user group. Another event will come.
1684 - parent.parent.DispatchEvent(['*', group._id, user._id, newuserid], obj, event);
1693 + db.SetUser(chguser);
1694 + parent.parent.DispatchEvent([chguser._id], obj, 'resubscribe');
1695 + }
1696 +
1697 + if (group != null) {
1698 + // Remove the user from the group
1699 + if ((group.links != null) && (group.links[command.userid] != null)) {
1700 + change = true;
1701 + delete group.links[command.userid];
1702 + db.Set(common.escapeLinksFieldName(group));
1703 +
1704 + // Notify user group change
1705 + if (change) {
1706 + var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: group._id, name: group.name, desc: group.desc, action: 'usergroupchange', links: group.links, msg: 'Removed user ' + chguser.name + ' from user group ' + group.name, domain: domain.id };
1707 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user group. Another event will come.
1708 + parent.parent.DispatchEvent(['*', group._id, user._id, chguser._id], obj, event);
1709 + }
1710 + }
1711 }
1712 }
1713 });
@@ -2004,6 +2030,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2030 delete xuser.links[mesh._id];
2031 db.SetUser(xuser);
2032 parent.parent.DispatchEvent([xuser._id], obj, 'resubscribe');
2033 +
2034 + // Notify user change
2035 + var targets = ['*', 'server-users', user._id, xuser._id];
2036 + var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(xuser), action: 'accountchange', msg: 'Device group membership changed: ' + xuser.name, domain: domain.id };
2037 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user. Another event will come.
2038 + parent.parent.DispatchEvent(targets, obj, event);
2039 }
2040 }
2041
@@ -2084,6 +2116,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2116 db.SetUser(newuser);
2117 parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe');
2118
2119 + // Notify user change
2120 + var targets = ['*', 'server-users', user._id, newuser._id];
2121 + var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(newuser), action: 'accountchange', msg: 'Device group membership changed: ' + newuser.name, domain: domain.id };
2122 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user. Another event will come.
2123 + parent.parent.DispatchEvent(targets, obj, event);
2124 +
2125 // Add a user to the mesh
2126 mesh.links[newuserid] = { userid: newuser.id, name: newuser.name, rights: command.meshadmin };
2127 db.Set(common.escapeLinksFieldName(mesh));
@@ -2141,6 +2179,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2179 delete deluser.links[command.meshid];
2180 db.Set(deluser);
2181 parent.parent.DispatchEvent([deluser._id], obj, 'resubscribe');
2182 +
2183 + // Notify user change
2184 + var targets = ['*', 'server-users', user._id, deluser._id];
2185 + var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(deluser), action: 'accountchange', msg: 'Device group membership changed: ' + deluser.name, domain: domain.id };
2186 + if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user. Another event will come.
2187 + parent.parent.DispatchEvent(targets, obj, event);
2188 }
2189 }
2190
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.4.6-t",
3 + "version": "0.4.6-u",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
public/styles/style.css
+8
@@ -1371,6 +1371,14 @@ a {
1371 float: left;
1372 }
1373
1374 +.m99 {
1375 + background: url(../images/meshicon16.png);
1376 + height: 16px;
1377 + width: 16px;
1378 + border: none;
1379 + float: left;
1380 +}
1381 +
1382 .si1 {
1383 background: url(../images/icons16.png) 0px 0px;
1384 height: 16px;
translate/translate.json
+439 -339
@@ -167,7 +167,7 @@
167 "nl": " Gebruikers moeten inloggen bij de server voordat ze kunnen worden toegevoegd aan een apparaatgroep.",
168 "xloc": [
169 "default.handlebars->23->1058",
170 - "default.handlebars->23->1264"
170 + "default.handlebars->23->1266"
171 ]
172 },
173 {
@@ -262,7 +262,7 @@
262 "cs": ", ",
263 "nl": ", ",
264 "xloc": [
265 - "default.handlebars->23->1101",
265 + "default.handlebars->23->1103",
266 "default-mobile.handlebars->9->330"
267 ]
268 },
@@ -379,8 +379,8 @@
379 "nl": "...",
380 "xloc": [
381 "default.handlebars->23->626",
382 - "default.handlebars->23->1123",
383 - "default.handlebars->23->1320",
382 + "default.handlebars->23->1125",
383 + "default.handlebars->23->1342",
384 "default-mobile.handlebars->9->67",
385 "default-mobile.handlebars->9->243"
386 ]
@@ -403,7 +403,7 @@
403 "ja": "1つのアクティブなセッション",
404 "nl": "1 actieve sessie",
405 "xloc": [
406 - "default.handlebars->23->1304"
406 + "default.handlebars->23->1306"
407 ]
408 },
409 {
@@ -414,7 +414,7 @@
414 "ja": "1バイト",
415 "nl": "1 byte",
416 "xloc": [
417 - "default.handlebars->23->1140",
417 + "default.handlebars->23->1142",
418 "default-mobile.handlebars->9->77",
419 "default-mobile.handlebars->9->334"
420 ]
@@ -440,7 +440,7 @@
440 "ja": "1グループ",
441 "nl": "1 groep",
442 "xloc": [
443 - "default.handlebars->23->1288"
443 + "default.handlebars->23->1290"
444 ]
445 },
446 {
@@ -476,7 +476,7 @@
476 "ja": "さらに1人のユーザーが表示されていません。検索ボックスを使用してユーザーを検索してください...",
477 "nl": "1 gebruiker niet getoond, gebruik de zoekfunctie om gebruikers te vinden...",
478 "xloc": [
479 - "default.handlebars->23->1175"
479 + "default.handlebars->23->1177"
480 ]
481 },
482 {
@@ -498,7 +498,7 @@
498 "ja": "1セッション",
499 "nl": "1 sessie",
500 "xloc": [
501 - "default.handlebars->23->1179"
501 + "default.handlebars->23->1181"
502 ]
503 },
504 {
@@ -985,7 +985,7 @@
985 "ja": "サーバーファイルへのアクセス",
986 "nl": "Toegang tot de server bestanden",
987 "xloc": [
988 - "default.handlebars->23->1269"
988 + "default.handlebars->23->1271"
989 ]
990 },
991 {
@@ -1278,7 +1278,9 @@
1278 "ja": "デバイスグループを追加",
1279 "nl": "Apparaatgroep toevoegen",
1280 "xloc": [
1281 - "default.handlebars->23->205"
1281 + "default.handlebars->23->205",
1282 + "default.handlebars->23->1080",
1283 + "default.handlebars->23->1319"
1284 ]
1285 },
1286 {
@@ -1379,7 +1381,7 @@
1381 "nl": "Gebruikers toevoegen",
1382 "xloc": [
1383 "default.handlebars->23->990",
1382 - "default.handlebars->23->1249"
1384 + "default.handlebars->23->1251"
1385 ]
1386 },
1387 {
@@ -1389,7 +1391,7 @@
1391 "ja": "ユーザーをデバイスグループに追加する",
1392 "nl": "Gebruikers toevoegen aan apparaatgroep",
1393 "xloc": [
1392 - "default.handlebars->23->1078"
1394 + "default.handlebars->23->1079"
1395 ]
1396 },
1397 {
@@ -1439,7 +1441,7 @@
1441 "ja": "管理レルム",
1442 "nl": "Beheerdersgebied",
1443 "xloc": [
1442 - "default.handlebars->23->1292"
1444 + "default.handlebars->23->1294"
1445 ]
1446 },
1447 {
@@ -1449,7 +1451,7 @@
1451 "ja": "管理レルム",
1452 "nl": "Administratieve gebieden",
1453 "xloc": [
1452 - "default.handlebars->23->1224"
1454 + "default.handlebars->23->1226"
1455 ]
1456 },
1457 {
@@ -1459,7 +1461,7 @@
1461 "cs": "Správce",
1462 "nl": "Beheerder",
1463 "xloc": [
1462 - "default.handlebars->23->1186"
1464 + "default.handlebars->23->1188"
1465 ]
1466 },
1467 {
@@ -1483,8 +1485,8 @@
1485 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1",
1486 "default.handlebars->23->184",
1487 "default.handlebars->23->371",
1486 - "default.handlebars->23->1111",
1487 - "default.handlebars->23->1117",
1488 + "default.handlebars->23->1113",
1489 + "default.handlebars->23->1119",
1490 "default-mobile.handlebars->9->121",
1491 "default-mobile.handlebars->9->174",
1492 "default-mobile.handlebars->9->190"
@@ -1519,7 +1521,7 @@
1521 "ja": "エージェントコンソール",
1522 "nl": "Agent console",
1523 "xloc": [
1522 - "default.handlebars->23->1085",
1524 + "default.handlebars->23->1087",
1525 "default-mobile.handlebars->9->315"
1526 ]
1527 },
@@ -1592,7 +1594,7 @@
1594 "ja": "エージェント",
1595 "nl": "Agents",
1596 "xloc": [
1595 - "default.handlebars->23->1357"
1597 + "default.handlebars->23->1379"
1598 ]
1599 },
1600 {
@@ -1649,7 +1651,7 @@
1651 "nl": "Gebruikers toestaan deze apparaatgroep en apparaten in deze groep te beheren.",
1652 "xloc": [
1653 "default.handlebars->23->1057",
1652 - "default.handlebars->23->1263"
1654 + "default.handlebars->23->1265"
1655 ]
1656 },
1657 {
@@ -2058,7 +2060,7 @@
2060 "cs": "Opravdu chcete {0} zásuvný modul: {1}",
2061 "nl": "Weet u zeker dat u de plug-in {0} wilt gebruiken: {1}",
2062 "xloc": [
2061 - "default.handlebars->23->1392"
2063 + "default.handlebars->23->1414"
2064 ]
2065 },
2066 {
@@ -2142,7 +2144,7 @@
2144 "cs": "Aplikace pro ověřování se",
2145 "nl": "Verificatie-app",
2146 "xloc": [
2145 - "default.handlebars->23->1293"
2147 + "default.handlebars->23->1295"
2148 ]
2149 },
2150 {
@@ -2334,7 +2336,7 @@
2336 "cs": "Záložní kódy",
2337 "nl": "Back-up codes",
2338 "xloc": [
2337 - "default.handlebars->23->1295"
2339 + "default.handlebars->23->1297"
2340 ]
2341 },
2342 {
@@ -2416,7 +2418,7 @@
2418 "nl": "Uitzending",
2419 "xloc": [
2420 "default.handlebars->container->column_l->p4->3->1->0->3->1",
2419 - "default.handlebars->23->1247"
2421 + "default.handlebars->23->1249"
2422 ]
2423 },
2424 {
@@ -2426,7 +2428,7 @@
2428 "cs": "Zaslat hromadnou zprávu všem připojeným uživatelům.",
2429 "nl": "Verzend een bericht naar alle verbonden gebruikers.",
2430 "xloc": [
2429 - "default.handlebars->23->1208"
2431 + "default.handlebars->23->1210"
2432 ]
2433 },
2434 {
@@ -2437,7 +2439,7 @@
2439 "cs": "Hromadná zpráva",
2440 "nl": "Bericht uitzenden",
2441 "xloc": [
2440 - "default.handlebars->23->1209"
2442 + "default.handlebars->23->1211"
2443 ]
2444 },
2445 {
@@ -2468,7 +2470,7 @@
2470 "cs": "Chyba volání",
2471 "nl": "Oproepfout",
2472 "xloc": [
2471 - "default.handlebars->23->1393"
2473 + "default.handlebars->23->1415"
2474 ]
2475 },
2476 {
@@ -2558,7 +2560,7 @@
2560 "ja": "{0}のメールを変更",
2561 "nl": "Verander e-mail voor {0}",
2562 "xloc": [
2561 - "default.handlebars->23->1308"
2563 + "default.handlebars->23->1310"
2564 ]
2565 },
2566 {
@@ -2581,7 +2583,7 @@
2583 "nl": "Verander wachtwoord",
2584 "xloc": [
2585 "default.handlebars->23->922",
2584 - "default.handlebars->23->1303",
2586 + "default.handlebars->23->1305",
2587 "default-mobile.handlebars->9->49"
2588 ]
2589 },
@@ -2603,7 +2605,7 @@
2605 "cs": "Změnit heslo pro {0}",
2606 "nl": "Verander wachtwoord voor {0}",
2607 "xloc": [
2606 - "default.handlebars->23->1315"
2608 + "default.handlebars->23->1317"
2609 ]
2610 },
2611 {
@@ -2663,7 +2665,7 @@
2665 "cs": "Chat",
2666 "nl": "Chat",
2667 "xloc": [
2666 - "default.handlebars->23->1178"
2668 + "default.handlebars->23->1180"
2669 ]
2670 },
2671 {
@@ -2673,8 +2675,8 @@
2675 "cs": "Chat a upozornění",
2676 "nl": "Chat & Melden",
2677 "xloc": [
2676 - "default.handlebars->23->1076",
2677 - "default.handlebars->23->1095",
2678 + "default.handlebars->23->1077",
2679 + "default.handlebars->23->1097",
2680 "default-mobile.handlebars->9->307",
2681 "default-mobile.handlebars->9->325"
2682 ]
@@ -2727,7 +2729,7 @@
2729 "nl": "Controleren...",
2730 "xloc": [
2731 "default.handlebars->23->696",
2730 - "default.handlebars->23->1389"
2732 + "default.handlebars->23->1411"
2733 ]
2734 },
2735 {
@@ -2822,7 +2824,7 @@
2824 "cs": "CIRA Server",
2825 "nl": "CIRA Server",
2826 "xloc": [
2825 - "default.handlebars->23->1383"
2827 + "default.handlebars->23->1405"
2828 ]
2829 },
2830 {
@@ -2832,7 +2834,7 @@
2834 "cs": "příkazy CIRA serveru",
2835 "nl": "CIRA Server opdrachten",
2836 "xloc": [
2835 - "default.handlebars->23->1384"
2837 + "default.handlebars->23->1406"
2838 ]
2839 },
2840 {
@@ -2858,7 +2860,7 @@
2860 "default.handlebars->23->647",
2861 "default.handlebars->23->649",
2862 "default.handlebars->23->651",
2861 - "default.handlebars->23->1155",
2863 + "default.handlebars->23->1157",
2864 "default-mobile.handlebars->9->28",
2865 "default-mobile.handlebars->9->91",
2866 "default-mobile.handlebars->9->262",
@@ -3002,7 +3004,7 @@
3004 "cs": "Potvrdit {0} z {1} záznam{2} do tohoto umístění?",
3005 "nl": "Bevestig {0} van {1} bestand {2} naar deze locatie?",
3006 "xloc": [
3005 - "default.handlebars->23->1150",
3007 + "default.handlebars->23->1152",
3008 "default-mobile.handlebars->9->86"
3009 ]
3010 },
@@ -3017,7 +3019,7 @@
3019 "default.handlebars->23->548",
3020 "default.handlebars->23->557",
3021 "default.handlebars->23->1038",
3020 - "default.handlebars->23->1259",
3022 + "default.handlebars->23->1261",
3023 "default-mobile.handlebars->9->220",
3024 "default-mobile.handlebars->9->287"
3025 ]
@@ -3082,7 +3084,7 @@
3084 "cs": "Potvrdit přepsání?",
3085 "nl": "Bevestig overschrijven?",
3086 "xloc": [
3085 - "default.handlebars->23->1149"
3087 + "default.handlebars->23->1151"
3088 ]
3089 },
3090 {
@@ -3103,8 +3105,8 @@
3105 "cs": "Potvrdit odstranění uživatele {0}?",
3106 "nl": "Bevestig de verwijdering van gebruiker {0}?",
3107 "xloc": [
3106 - "default.handlebars->23->1104",
3107 - "default.handlebars->23->1262",
3108 + "default.handlebars->23->1106",
3109 + "default.handlebars->23->1264",
3110 "default-mobile.handlebars->9->333"
3111 ]
3112 },
@@ -3212,7 +3214,7 @@
3214 "cs": "Počitadlo připojení",
3215 "nl": "Aantal verbindingen",
3216 "xloc": [
3215 - "default.handlebars->23->1356"
3217 + "default.handlebars->23->1378"
3218 ]
3219 },
3220 {
@@ -3222,7 +3224,7 @@
3224 "cs": "Předávání (relay) spojení",
3225 "nl": "Verbindings Relay",
3226 "xloc": [
3225 - "default.handlebars->23->1382"
3227 + "default.handlebars->23->1404"
3228 ]
3229 },
3230 {
@@ -3245,7 +3247,7 @@
3247 "default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1",
3248 "default.handlebars->23->202",
3249 "default.handlebars->23->482",
3248 - "default.handlebars->23->1120",
3250 + "default.handlebars->23->1122",
3251 "default-mobile.handlebars->9->195"
3252 ]
3253 },
@@ -3288,7 +3290,7 @@
3290 "cs": "Cookie enkodér",
3291 "nl": "Cookie encoder",
3292 "xloc": [
3291 - "default.handlebars->23->1370"
3293 + "default.handlebars->23->1392"
3294 ]
3295 },
3296 {
@@ -3311,7 +3313,7 @@
3313 "cs": "kopírovat",
3314 "nl": "kopie",
3315 "xloc": [
3314 - "default.handlebars->23->1153",
3316 + "default.handlebars->23->1155",
3317 "default-mobile.handlebars->9->89"
3318 ]
3319 },
@@ -3464,7 +3466,7 @@
3466 "cs": "Hlavní server",
3467 "nl": "Core Server",
3468 "xloc": [
3467 - "default.handlebars->23->1369"
3469 + "default.handlebars->23->1391"
3470 ]
3471 },
3472 {
@@ -3484,7 +3486,7 @@
3486 "cs": "vytížení procesoru v uplynulých 15 minutách",
3487 "nl": "CPU-belasting in de afgelopen 15 minuten",
3488 "xloc": [
3487 - "default.handlebars->23->1352"
3489 + "default.handlebars->23->1374"
3490 ]
3491 },
3492 {
@@ -3494,7 +3496,7 @@
3496 "cs": "vyžítení procesoru v uplynulých 5 minutách",
3497 "nl": "CPU-belasting in de afgelopen 5 minuten",
3498 "xloc": [
3497 - "default.handlebars->23->1351"
3499 + "default.handlebars->23->1373"
3500 ]
3501 },
3502 {
@@ -3504,7 +3506,7 @@
3506 "ja": "直前のCPU負荷",
3507 "nl": "CPU-belasting in de laatste minuut",
3508 "xloc": [
3507 - "default.handlebars->23->1350"
3509 + "default.handlebars->23->1372"
3510 ]
3511 },
3512 {
@@ -3546,7 +3548,7 @@
3548 "cs": "Vytvořit účet",
3549 "nl": "Account aanmaken",
3550 "xloc": [
3549 - "default.handlebars->23->1220",
3551 + "default.handlebars->23->1222",
3552 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1",
3553 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1"
3554 ]
@@ -3568,7 +3570,7 @@
3570 "cs": "Vytvořit více účtu najednou pomocí importu JSON souboru s následujícím formátem:",
3571 "nl": "Maak meerdere accounts tegelijk door een JSON-bestand met de volgende indeling te importeren:",
3572 "xloc": [
3571 - "default.handlebars->23->1191"
3573 + "default.handlebars->23->1193"
3574 ]
3575 },
3576 {
@@ -3589,7 +3591,7 @@
3591 "cs": "Vytváření",
3592 "nl": "Aanmaken",
3593 "xloc": [
3592 - "default.handlebars->23->1281"
3594 + "default.handlebars->23->1283"
3595 ]
3596 },
3597 {
@@ -3630,8 +3632,8 @@
3632 "cs": "CSV formát",
3633 "nl": "CSV Formaat",
3634 "xloc": [
3633 - "default.handlebars->23->1161",
3634 - "default.handlebars->23->1200"
3635 + "default.handlebars->23->1163",
3636 + "default.handlebars->23->1202"
3637 ]
3638 },
3639 {
@@ -3756,8 +3758,7 @@
3758 "ja": "日",
3759 "nl": "Dag",
3760 "xloc": [
3759 - "default.handlebars->23->532",
3760 - "default.handlebars->23->1317"
3761 + "default.handlebars->23->532"
3762 ]
3763 },
3764 {
@@ -3792,7 +3793,7 @@
3793 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
3794 "default.handlebars->container->dialog->idx_dlgButtonBar->5",
3795 "default.handlebars->23->632",
3795 - "default.handlebars->23->1144",
3796 + "default.handlebars->23->1146",
3797 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
3798 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
3799 "default-mobile.handlebars->9->81",
@@ -3885,7 +3886,7 @@
3886 "nl": "Verwijder geselecteerde item?",
3887 "xloc": [
3888 "default.handlebars->23->634",
3888 - "default.handlebars->23->1146",
3889 + "default.handlebars->23->1148",
3890 "default-mobile.handlebars->9->83",
3891 "default-mobile.handlebars->9->251"
3892 ]
@@ -3897,7 +3898,7 @@
3898 "ja": "ユーザーを削除{0}",
3899 "nl": "Verwijder gebruiker {0}",
3900 "xloc": [
3900 - "default.handlebars->23->1316"
3901 + "default.handlebars->23->1318"
3902 ]
3903 },
3904 {
@@ -3908,7 +3909,7 @@
3909 "nl": "Verwijder {0} gelecteerde items?",
3910 "xloc": [
3911 "default.handlebars->23->633",
3911 - "default.handlebars->23->1145",
3912 + "default.handlebars->23->1147",
3913 "default-mobile.handlebars->9->82",
3914 "default-mobile.handlebars->9->250"
3915 ]
@@ -3977,10 +3978,10 @@
3978 "default.handlebars->23->934",
3979 "default.handlebars->23->958",
3980 "default.handlebars->23->1041",
3980 - "default.handlebars->23->1240",
3981 - "default.handlebars->23->1244",
3981 + "default.handlebars->23->1242",
3982 "default.handlebars->23->1246",
3983 - "default.handlebars->23->1256",
3983 + "default.handlebars->23->1248",
3984 + "default.handlebars->23->1258",
3985 "default-mobile.handlebars->9->60",
3986 "default-mobile.handlebars->9->141",
3987 "default-mobile.handlebars->9->142",
@@ -4122,7 +4123,7 @@
4123 "nl": "Apparaat verbindingen.",
4124 "xloc": [
4125 "default.handlebars->23->902",
4125 - "default.handlebars->23->1106"
4126 + "default.handlebars->23->1108"
4127 ]
4128 },
4129 {
@@ -4133,7 +4134,7 @@
4134 "nl": "Apparaat verbroken.",
4135 "xloc": [
4136 "default.handlebars->23->903",
4136 - "default.handlebars->23->1107"
4137 + "default.handlebars->23->1109"
4138 ]
4139 },
4140 {
@@ -4153,7 +4154,7 @@
4154 "ja": "デバイスグループユーザー",
4155 "nl": "Apparaatgroep gebruiker",
4156 "xloc": [
4156 - "default.handlebars->23->1102",
4157 + "default.handlebars->23->1104",
4158 "default-mobile.handlebars->9->331"
4159 ]
4160 },
@@ -4165,8 +4166,8 @@
4166 "nl": "Apparaatgroepen",
4167 "xloc": [
4168 "default.handlebars->container->column_l->p2->9",
4168 - "default.handlebars->23->1290",
4169 - "default.handlebars->23->1343",
4169 + "default.handlebars->23->1292",
4170 + "default.handlebars->23->1365",
4171 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3"
4172 ]
4173 },
@@ -4648,7 +4649,7 @@
4649 "cs": "Stáhnout si seznam událostí v níže uvedeném formátu.",
4650 "nl": "Download de lijst met gebeurtenissen in een van de onderstaande bestandsindelingen.",
4651 "xloc": [
4651 - "default.handlebars->23->1160"
4652 + "default.handlebars->23->1162"
4653 ]
4654 },
4655 {
@@ -4658,7 +4659,7 @@
4659 "cs": "Stáhnout si seznam uživatelů v níže uvedeném formátu.",
4660 "nl": "Download de lijst met gebruikers in een van de onderstaande bestandsindelingen.",
4661 "xloc": [
4661 - "default.handlebars->23->1199"
4662 + "default.handlebars->23->1201"
4663 ]
4664 },
4665 {
@@ -4771,8 +4772,8 @@
4772 "nl": "Bewerk apparaatgroep",
4773 "xloc": [
4774 "default.handlebars->23->1042",
4774 - "default.handlebars->23->1062",
4775 - "default.handlebars->23->1081",
4775 + "default.handlebars->23->1063",
4776 + "default.handlebars->23->1083",
4777 "default-mobile.handlebars->9->291",
4778 "default-mobile.handlebars->9->293",
4779 "default-mobile.handlebars->9->311"
@@ -4805,7 +4806,7 @@
4806 "ja": "デバイスノートの編集",
4807 "nl": "Apparaatnotities bewerken",
4808 "xloc": [
4808 - "default.handlebars->23->1074",
4809 + "default.handlebars->23->1075",
4810 "default-mobile.handlebars->9->305"
4811 ]
4812 },
@@ -4830,7 +4831,7 @@
4831 "cs": "Upravit poznámky",
4832 "nl": "Notities bewerken",
4833 "xloc": [
4833 - "default.handlebars->23->1088",
4834 + "default.handlebars->23->1090",
4835 "default-mobile.handlebars->9->318"
4836 ]
4837 },
@@ -4851,7 +4852,7 @@
4852 "cs": "Upravit oprávnění uživatele pro skupinu zařízení",
4853 "nl": "Gebruikersrechten apparaatgroep bewerken",
4854 "xloc": [
4854 - "default.handlebars->23->1079"
4855 + "default.handlebars->23->1081"
4856 ]
4857 },
4858 {
@@ -4862,10 +4863,10 @@
4863 "nl": "E-mail",
4864 "xloc": [
4865 "default.handlebars->23->283",
4865 - "default.handlebars->23->1211",
4866 - "default.handlebars->23->1277",
4867 - "default.handlebars->23->1278",
4868 - "default.handlebars->23->1306",
4866 + "default.handlebars->23->1213",
4867 + "default.handlebars->23->1279",
4868 + "default.handlebars->23->1280",
4869 + "default.handlebars->23->1308",
4870 "default-mobile.handlebars->9->37"
4871 ]
4872 },
@@ -4887,7 +4888,7 @@
4888 "ja": "メールが確認されました",
4889 "nl": "E-mail is geverifieerd",
4890 "xloc": [
4890 - "default.handlebars->23->1274"
4891 + "default.handlebars->23->1276"
4892 ]
4893 },
4894 {
@@ -4897,7 +4898,7 @@
4898 "ja": "メールが確認されました。",
4899 "nl": "E-mail is geverifieerd.",
4900 "xloc": [
4900 - "default.handlebars->23->1217"
4901 + "default.handlebars->23->1219"
4902 ]
4903 },
4904 {
@@ -4907,7 +4908,7 @@
4908 "ja": "メールが確認されていません",
4909 "nl": "E-mail is niet geverifieerd",
4910 "xloc": [
4910 - "default.handlebars->23->1275"
4911 + "default.handlebars->23->1277"
4912 ]
4913 },
4914 {
@@ -5117,7 +5118,7 @@
5118 "cs": "Zadejte seznam správních oblastí (oddělovaných čárkou).",
5119 "nl": "Voer een door komma's gescheiden lijst met beheerdersnamen in.",
5120 "xloc": [
5120 - "default.handlebars->23->1221"
5121 + "default.handlebars->23->1223"
5122 ]
5123 },
5124 {
@@ -5250,7 +5251,7 @@
5251 "cs": "Export seznamu událostí",
5252 "nl": "Gebeurtenissenlijst exporteren",
5253 "xloc": [
5253 - "default.handlebars->23->1165"
5254 + "default.handlebars->23->1167"
5255 ]
5256 },
5257 {
@@ -5285,8 +5286,8 @@
5286 "cs": "eventslist.csv",
5287 "nl": "eventslist.csv",
5288 "xloc": [
5288 - "default.handlebars->23->1162",
5289 - "default.handlebars->23->1167"
5289 + "default.handlebars->23->1164",
5290 + "default.handlebars->23->1169"
5291 ]
5292 },
5293 {
@@ -5296,8 +5297,8 @@
5297 "cs": "eventslist.json",
5298 "nl": "eventslist.json",
5299 "xloc": [
5299 - "default.handlebars->23->1164",
5300 - "default.handlebars->23->1168"
5300 + "default.handlebars->23->1166",
5301 + "default.handlebars->23->1170"
5302 ]
5303 },
5304 {
@@ -5548,8 +5549,8 @@
5549 "cs": "Vynutit reset hesla při dalším přihlášení.",
5550 "nl": "Forceer wachtwoord opnieuw instellen bij de volgende aanmelding.",
5551 "xloc": [
5551 - "default.handlebars->23->1215",
5552 - "default.handlebars->23->1313"
5552 + "default.handlebars->23->1217",
5553 + "default.handlebars->23->1315"
5554 ]
5555 },
5556 {
@@ -5602,8 +5603,8 @@
5603 "cs": "Volné",
5604 "nl": "Vrij",
5605 "xloc": [
5605 - "default.handlebars->23->1324",
5606 - "default.handlebars->23->1326"
5606 + "default.handlebars->23->1346",
5607 + "default.handlebars->23->1348"
5608 ]
5609 },
5610 {
@@ -5614,7 +5615,7 @@
5615 "cs": "volné",
5616 "nl": "vrij",
5617 "xloc": [
5617 - "default.handlebars->23->1354"
5618 + "default.handlebars->23->1376"
5619 ]
5620 },
5621 {
@@ -5736,9 +5737,8 @@
5737 "nl": "Volledige beheerder",
5738 "xloc": [
5739 "default.handlebars->23->943",
5739 - "default.handlebars->23->1005",
5740 - "default.handlebars->23->1061",
5741 - "default.handlebars->23->1226",
5740 + "default.handlebars->23->1062",
5741 + "default.handlebars->23->1228",
5742 "default-mobile.handlebars->9->64",
5743 "default-mobile.handlebars->9->283",
5744 "default-mobile.handlebars->9->292",
@@ -5753,7 +5753,7 @@
5753 "ja": "完全な管理者",
5754 "nl": "Volledige beheerder",
5755 "xloc": [
5756 - "default.handlebars->23->1270"
5756 + "default.handlebars->23->1272"
5757 ]
5758 },
5759 {
@@ -5764,7 +5764,7 @@
5764 "ja": "完全な管理者(すべての権利)",
5765 "nl": "Volledige beheerder (met alle rechten)",
5766 "xloc": [
5767 - "default.handlebars->23->1080"
5767 + "default.handlebars->23->1082"
5768 ]
5769 },
5770 {
@@ -6057,7 +6057,7 @@
6057 "cs": "Oprávnění skupiny pro uživatele {0}.",
6058 "nl": "Groepsrechten voor gebruiker {0}.",
6059 "xloc": [
6060 - "default.handlebars->23->1060"
6060 + "default.handlebars->23->1061"
6061 ]
6062 },
6063 {
@@ -6211,7 +6211,7 @@
6211 "cs": "Drží se {0} zaznamů{1} pro {2}",
6212 "nl": "Houd {0} item {1} vast voor {2}",
6213 "xloc": [
6214 - "default.handlebars->23->1152",
6214 + "default.handlebars->23->1154",
6215 "default-mobile.handlebars->9->88"
6216 ]
6217 },
@@ -6375,7 +6375,7 @@
6375 "cs": "identif., jméno, e-mail, vytvoření, poslední přihlášení, skupiny, faktory ověrování",
6376 "nl": "id, naam, e-mail, aanmaken, laatste inlog, groepen, authenticatiefactors",
6377 "xloc": [
6378 - "default.handlebars->23->1205"
6378 + "default.handlebars->23->1207"
6379 ]
6380 },
6381 {
@@ -6521,10 +6521,10 @@
6521 "cs": "Intel AMT",
6522 "nl": "Intel AMT",
6523 "xloc": [
6524 - "default.handlebars->23->1112",
6525 - "default.handlebars->23->1118",
6526 - "default.handlebars->23->1361",
6527 - "default.handlebars->23->1381"
6524 + "default.handlebars->23->1114",
6525 + "default.handlebars->23->1120",
6526 + "default.handlebars->23->1383",
6527 + "default.handlebars->23->1403"
6528 ]
6529 },
6530 {
@@ -6711,7 +6711,7 @@
6711 "nl": "Intel® AMT desktop- en seriële gebeurtenissen.",
6712 "xloc": [
6713 "default.handlebars->23->904",
6714 - "default.handlebars->23->1108"
6714 + "default.handlebars->23->1110"
6715 ]
6716 },
6717 {
@@ -6950,8 +6950,8 @@
6950 "cs": "Neplatný formát JSON souboru.",
6951 "nl": "Ongeldige JSON-bestandsindeling.",
6952 "xloc": [
6953 - "default.handlebars->23->1196",
6954 - "default.handlebars->23->1198"
6953 + "default.handlebars->23->1198",
6954 + "default.handlebars->23->1200"
6955 ]
6956 },
6957 {
@@ -6961,7 +6961,7 @@
6961 "cs": "Neplatný JSON soubor: {0}.",
6962 "nl": "Ongeldig JSON-bestand: {0}.",
6963 "xloc": [
6964 - "default.handlebars->23->1194"
6964 + "default.handlebars->23->1196"
6965 ]
6966 },
6967 {
@@ -7144,8 +7144,8 @@
7144 "cs": "JSON formát",
7145 "nl": "JSON-indeling",
7146 "xloc": [
7147 - "default.handlebars->23->1163",
7148 - "default.handlebars->23->1202"
7147 + "default.handlebars->23->1165",
7148 + "default.handlebars->23->1204"
7149 ]
7150 },
7151 {
@@ -7427,7 +7427,7 @@
7427 "cs": "Poslední přístup",
7428 "nl": "Laatste toegang",
7429 "xloc": [
7430 - "default.handlebars->23->1171"
7430 + "default.handlebars->23->1173"
7431 ]
7432 },
7433 {
@@ -7462,7 +7462,7 @@
7462 "ja": "最終変更:{0}",
7463 "nl": "Laatst gewijzigd: {0}",
7464 "xloc": [
7465 - "default.handlebars->23->1286"
7465 + "default.handlebars->23->1288"
7466 ]
7467 },
7468 {
@@ -7495,7 +7495,7 @@
7495 "cs": "Poslední přihlášení",
7496 "nl": "Laatste inlog",
7497 "xloc": [
7498 - "default.handlebars->23->1282"
7498 + "default.handlebars->23->1284"
7499 ]
7500 },
7501 {
@@ -7505,7 +7505,7 @@
7505 "cs": "Poslední přihlášení: {0}",
7506 "nl": "Laatste inlog: {0}",
7507 "xloc": [
7508 - "default.handlebars->23->1181"
7508 + "default.handlebars->23->1183"
7509 ]
7510 },
7511 {
@@ -7595,7 +7595,7 @@
7595 "cs": "Méně",
7596 "nl": "Minder",
7597 "xloc": [
7598 - "default.handlebars->23->1395"
7598 + "default.handlebars->23->1417"
7599 ]
7600 },
7601 {
@@ -7638,7 +7638,7 @@
7638 "cs": "Omezený vstup",
7639 "nl": "Beperkte invoer",
7640 "xloc": [
7641 - "default.handlebars->23->1093",
7641 + "default.handlebars->23->1095",
7642 "default-mobile.handlebars->9->323"
7643 ]
7644 },
@@ -7649,7 +7649,7 @@
7649 "cs": "Pouze omezený vstup",
7650 "nl": "Alleen beperkte invoer",
7651 "xloc": [
7652 - "default.handlebars->23->1067",
7652 + "default.handlebars->23->1068",
7653 "default-mobile.handlebars->9->298"
7654 ]
7655 },
@@ -7662,7 +7662,7 @@
7662 "nl": "Link",
7663 "xloc": [
7664 "default.handlebars->container->column_l->p42->p42tbl->1->0->4",
7665 - "default.handlebars->23->1124",
7665 + "default.handlebars->23->1126",
7666 "default-mobile.handlebars->9->68"
7667 ]
7668 },
@@ -7933,7 +7933,7 @@
7933 "ja": "アカウントをロック",
7934 "nl": "Account vergrendelen",
7935 "xloc": [
7936 - "default.handlebars->23->1232"
7936 + "default.handlebars->23->1234"
7937 ]
7938 },
7939 {
@@ -7944,7 +7944,7 @@
7944 "ja": "ロック済み",
7945 "nl": "Vergrendeld",
7946 "xloc": [
7947 - "default.handlebars->23->1182"
7947 + "default.handlebars->23->1184"
7948 ]
7949 },
7950 {
@@ -7955,7 +7955,7 @@
7955 "cs": "Uzamknutý účet",
7956 "nl": "Vergrendeld account",
7957 "xloc": [
7958 - "default.handlebars->23->1267"
7958 + "default.handlebars->23->1269"
7959 ]
7960 },
7961 {
@@ -8111,7 +8111,7 @@
8111 "cs": "Zprávy hlavního serveru",
8112 "nl": "Hoofdserver berichten",
8113 "xloc": [
8114 - "default.handlebars->23->1372"
8114 + "default.handlebars->23->1394"
8115 ]
8116 },
8117 {
@@ -8184,8 +8184,8 @@
8184 "ja": "デバイスグループコンピューターの管理",
8185 "nl": "Beheer apparaatgroep computers",
8186 "xloc": [
8187 - "default.handlebars->23->1064",
8188 - "default.handlebars->23->1083",
8187 + "default.handlebars->23->1065",
8188 + "default.handlebars->23->1085",
8189 "default-mobile.handlebars->9->295",
8190 "default-mobile.handlebars->9->313"
8191 ]
@@ -8197,8 +8197,8 @@
8197 "ja": "デバイスグループユーザーの管理",
8198 "nl": "Beheer apparaatgroep gebruikers",
8199 "xloc": [
8200 - "default.handlebars->23->1063",
8201 - "default.handlebars->23->1082",
8200 + "default.handlebars->23->1064",
8201 + "default.handlebars->23->1084",
8202 "default-mobile.handlebars->9->294",
8203 "default-mobile.handlebars->9->312"
8204 ]
@@ -8231,7 +8231,7 @@
8231 "ja": "ユーザーを管理する",
8232 "nl": "Beheer gebruikers",
8233 "xloc": [
8234 - "default.handlebars->23->1230"
8234 + "default.handlebars->23->1232"
8235 ]
8236 },
8237 {
@@ -8264,7 +8264,7 @@
8264 "cs": "Vedoucí",
8265 "nl": "Beheerder",
8266 "xloc": [
8267 - "default.handlebars->23->1187"
8267 + "default.handlebars->23->1189"
8268 ]
8269 },
8270 {
@@ -8355,7 +8355,7 @@
8355 "ja": "メガバイト",
8356 "nl": "Megabytes",
8357 "xloc": [
8358 - "default.handlebars->23->1362"
8358 + "default.handlebars->23->1384"
8359 ]
8360 },
8361 {
@@ -8368,7 +8368,7 @@
8368 "xloc": [
8369 "default.handlebars->container->column_l->p40->3->1->p40type->3",
8370 "default.handlebars->23->75",
8371 - "default.handlebars->23->1353"
8371 + "default.handlebars->23->1375"
8372 ]
8373 },
8374 {
@@ -8395,7 +8395,7 @@
8395 "ja": "メッシュエージェントコンソール",
8396 "nl": "Mesh Agent Console",
8397 "xloc": [
8398 - "default.handlebars->23->1071",
8398 + "default.handlebars->23->1072",
8399 "default-mobile.handlebars->9->302"
8400 ]
8401 },
@@ -8439,7 +8439,7 @@
8439 "cs": "MeshAgent provoz",
8440 "nl": "MeshAgent verkeer",
8441 "xloc": [
8442 - "default.handlebars->23->1374"
8442 + "default.handlebars->23->1396"
8443 ]
8444 },
8445 {
@@ -8448,7 +8448,7 @@
8448 "cs": "MeshAgent aktualizace",
8449 "nl": "MeshAgent update",
8450 "xloc": [
8451 - "default.handlebars->23->1375"
8451 + "default.handlebars->23->1397"
8452 ]
8453 },
8454 {
@@ -8509,7 +8509,7 @@
8509 "cs": "MeshCentral Server Peering",
8510 "nl": "MeshCentral Server Peering",
8511 "xloc": [
8512 - "default.handlebars->23->1373"
8512 + "default.handlebars->23->1395"
8513 ]
8514 },
8515 {
@@ -8594,7 +8594,7 @@
8594 "cs": "Odesílatel",
8595 "nl": "Bericht Dispatcher",
8596 "xloc": [
8597 - "default.handlebars->23->1371"
8597 + "default.handlebars->23->1393"
8598 ]
8599 },
8600 {
@@ -8667,7 +8667,7 @@
8667 "ja": "もっと",
8668 "nl": "Meer",
8669 "xloc": [
8670 - "default.handlebars->23->1394"
8670 + "default.handlebars->23->1416"
8671 ]
8672 },
8673 {
@@ -8688,7 +8688,7 @@
8688 "cs": "přesun",
8689 "nl": "verplaatsen",
8690 "xloc": [
8691 - "default.handlebars->23->1154",
8691 + "default.handlebars->23->1156",
8692 "default-mobile.handlebars->9->90"
8693 ]
8694 },
@@ -8981,13 +8981,13 @@
8981 "default.handlebars->23->930",
8982 "default.handlebars->23->957",
8983 "default.handlebars->23->1040",
8984 - "default.handlebars->23->1169",
8985 - "default.handlebars->23->1210",
8986 - "default.handlebars->23->1236",
8987 - "default.handlebars->23->1239",
8988 - "default.handlebars->23->1243",
8984 + "default.handlebars->23->1171",
8985 + "default.handlebars->23->1212",
8986 + "default.handlebars->23->1238",
8987 + "default.handlebars->23->1241",
8988 "default.handlebars->23->1245",
8990 - "default.handlebars->23->1255",
8989 + "default.handlebars->23->1247",
8990 + "default.handlebars->23->1257",
8991 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea3->deskarea3x->DeskTools->5->1->1",
8992 "default-mobile.handlebars->9->56",
8993 "default-mobile.handlebars->9->135",
@@ -9014,7 +9014,7 @@
9014 "cs": "Jméno1, Jméno2, Jméno3",
9015 "nl": "Naam1, Naam2, Naam3",
9016 "xloc": [
9017 - "default.handlebars->23->1223"
9017 + "default.handlebars->23->1225"
9018 ]
9019 },
9020 {
@@ -9120,7 +9120,7 @@
9120 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
9121 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
9122 "default.handlebars->23->630",
9123 - "default.handlebars->23->1142",
9123 + "default.handlebars->23->1144",
9124 "default-mobile.handlebars->9->79",
9125 "default-mobile.handlebars->9->247"
9126 ]
@@ -9251,8 +9251,8 @@
9251 "nl": "Geen gebeurtenissen gevonden",
9252 "xloc": [
9253 "default.handlebars->23->664",
9254 - "default.handlebars->23->1159",
9255 - "default.handlebars->23->1319"
9254 + "default.handlebars->23->1161",
9255 + "default.handlebars->23->1341"
9256 ]
9257 },
9258 {
@@ -9263,7 +9263,7 @@
9263 "cs": "Žádný přístup k souborům",
9264 "nl": "Geen bestandstoegang",
9265 "xloc": [
9266 - "default.handlebars->23->1069",
9266 + "default.handlebars->23->1070",
9267 "default-mobile.handlebars->9->300"
9268 ]
9269 },
@@ -9275,7 +9275,7 @@
9275 "cs": "Žádné soubory",
9276 "nl": "Geen bestanden",
9277 "xloc": [
9278 - "default.handlebars->23->1091",
9278 + "default.handlebars->23->1093",
9279 "default-mobile.handlebars->9->321"
9280 ]
9281 },
@@ -9296,8 +9296,8 @@
9296 "cs": "Žádné Intel® AMT",
9297 "nl": "Geen Intel® AMT",
9298 "xloc": [
9299 - "default.handlebars->23->1070",
9300 - "default.handlebars->23->1092",
9299 + "default.handlebars->23->1071",
9300 + "default.handlebars->23->1094",
9301 "default-mobile.handlebars->9->301",
9302 "default-mobile.handlebars->9->322"
9303 ]
@@ -9359,7 +9359,7 @@
9359 "cs": "Žádná nová skupina zařízení",
9360 "nl": "Geen nieuwe apparaatgroepen",
9361 "xloc": [
9362 - "default.handlebars->23->1233"
9362 + "default.handlebars->23->1235"
9363 ]
9364 },
9365 {
@@ -9402,7 +9402,8 @@
9402 "xloc": [
9403 "default.handlebars->23->944",
9404 "default.handlebars->23->1006",
9405 - "default.handlebars->23->1097",
9405 + "default.handlebars->23->1099",
9406 + "default.handlebars->23->1324",
9407 "default-mobile.handlebars->9->65",
9408 "default-mobile.handlebars->9->284",
9409 "default-mobile.handlebars->9->327"
@@ -9415,7 +9416,7 @@
9416 "cs": "Žádná práva k serveru",
9417 "nl": "Geen server rechten",
9418 "xloc": [
9418 - "default.handlebars->23->1268"
9419 + "default.handlebars->23->1270"
9420 ]
9421 },
9422 {
@@ -9425,7 +9426,7 @@
9426 "ja": "ターミナルなし",
9427 "nl": "Geen terminal",
9428 "xloc": [
9428 - "default.handlebars->23->1090",
9429 + "default.handlebars->23->1092",
9430 "default-mobile.handlebars->9->320"
9431 ]
9432 },
@@ -9436,7 +9437,7 @@
9437 "cs": "Žádný přístup k terminálu",
9438 "nl": "Geen terminal toegang",
9439 "xloc": [
9439 - "default.handlebars->23->1068",
9440 + "default.handlebars->23->1069",
9441 "default-mobile.handlebars->9->299"
9442 ]
9443 },
@@ -9460,7 +9461,7 @@
9461 "ja": "ツールなし(MeshCmd / Router)",
9462 "nl": "Geen Tools (MeshCmd/Router)",
9463 "xloc": [
9463 - "default.handlebars->23->1234"
9464 + "default.handlebars->23->1236"
9465 ]
9466 },
9467 {
@@ -9470,7 +9471,7 @@
9471 "ja": "ユーザが見つかりませんでした。",
9472 "nl": "Geen gebruikers gevonden",
9473 "xloc": [
9473 - "default.handlebars->23->1177"
9474 + "default.handlebars->23->1179"
9475 ]
9476 },
9477 {
@@ -9515,10 +9516,10 @@
9516 "default.handlebars->23->963",
9517 "default.handlebars->23->975",
9518 "default.handlebars->23->980",
9518 - "default.handlebars->23->1130",
9519 - "default.handlebars->23->1242",
9520 - "default.handlebars->23->1287",
9521 - "default.handlebars->23->1291",
9519 + "default.handlebars->23->1132",
9520 + "default.handlebars->23->1244",
9521 + "default.handlebars->23->1289",
9522 + "default.handlebars->23->1293",
9523 "default-mobile.handlebars->9->75",
9524 "default-mobile.handlebars->9->93",
9525 "default-mobile.handlebars->9->95",
@@ -9603,7 +9604,7 @@
9604 "ja": "設定されていません",
9605 "nl": "Niet ingesteld",
9606 "xloc": [
9606 - "default.handlebars->23->1273"
9607 + "default.handlebars->23->1275"
9608 ]
9609 },
9610 {
@@ -9617,7 +9618,7 @@
9618 "default.handlebars->23->486",
9619 "default.handlebars->23->519",
9620 "default.handlebars->23->988",
9620 - "default.handlebars->23->1298"
9621 + "default.handlebars->23->1300"
9622 ]
9623 },
9624 {
@@ -9638,7 +9639,7 @@
9639 "xloc": [
9640 "default.handlebars->container->column_l->p2->p2AccountActions->3->8",
9641 "default.handlebars->23->905",
9641 - "default.handlebars->23->1109"
9642 + "default.handlebars->23->1111"
9643 ]
9644 },
9645 {
@@ -9668,7 +9669,7 @@
9669 "cs": "Upozornit",
9670 "nl": "Melden",
9671 "xloc": [
9671 - "default.handlebars->23->1300"
9672 + "default.handlebars->23->1302"
9673 ]
9674 },
9675 {
@@ -9691,7 +9692,7 @@
9692 "cs": "Upozornit {0}",
9693 "nl": "Melden {0}",
9694 "xloc": [
9694 - "default.handlebars->23->1189"
9695 + "default.handlebars->23->1191"
9696 ]
9697 },
9698 {
@@ -9712,7 +9713,7 @@
9713 "cs": "Nastalo na {0}",
9714 "nl": "Heeft plaatsgevonden op {0}",
9715 "xloc": [
9715 - "default.handlebars->23->1322"
9716 + "default.handlebars->23->1344"
9717 ]
9718 },
9719 {
@@ -9723,7 +9724,7 @@
9724 "cs": "Nepřipojení uživatelé",
9725 "nl": "Offline gebruikers",
9726 "xloc": [
9726 - "default.handlebars->23->1174"
9727 + "default.handlebars->23->1176"
9728 ]
9729 },
9730 {
@@ -9774,7 +9775,7 @@
9775 "ja": "オンラインユーザー",
9776 "nl": "Online gebruikers",
9777 "xloc": [
9777 - "default.handlebars->23->1173"
9778 + "default.handlebars->23->1175"
9779 ]
9780 },
9781 {
@@ -9967,7 +9968,7 @@
9968 "cs": "Částečné",
9969 "nl": "Gedeeltelijk",
9970 "xloc": [
9970 - "default.handlebars->23->1188"
9971 + "default.handlebars->23->1190"
9972 ]
9973 },
9974 {
@@ -9978,7 +9979,6 @@
9979 "nl": "Gedeeltelijke rechten",
9980 "xloc": [
9981 "default.handlebars->23->942",
9981 - "default.handlebars->23->1004",
9982 "default-mobile.handlebars->9->63",
9983 "default-mobile.handlebars->9->282"
9984 ]
@@ -9990,7 +9990,7 @@
9990 "cs": "Částečná práva",
9991 "nl": "Gedeeltelijke rechten",
9992 "xloc": [
9993 - "default.handlebars->23->1271"
9993 + "default.handlebars->23->1273"
9994 ]
9995 },
9996 {
@@ -10014,12 +10014,12 @@
10014 "default.handlebars->23->243",
10015 "default.handlebars->23->272",
10016 "default.handlebars->23->536",
10017 - "default.handlebars->23->1212",
10018 - "default.handlebars->23->1213",
10019 - "default.handlebars->23->1283",
10017 + "default.handlebars->23->1214",
10018 + "default.handlebars->23->1215",
10019 "default.handlebars->23->1285",
10021 - "default.handlebars->23->1309",
10022 - "default.handlebars->23->1310",
10020 + "default.handlebars->23->1287",
10021 + "default.handlebars->23->1311",
10022 + "default.handlebars->23->1312",
10023 "default-mobile.handlebars->9->213"
10024 ]
10025 },
@@ -10041,7 +10041,7 @@
10041 "cs": "Nápověda k heslu",
10042 "nl": "wachtwoord hint",
10043 "xloc": [
10044 - "default.handlebars->23->1311"
10044 + "default.handlebars->23->1313"
10045 ]
10046 },
10047 {
@@ -10162,7 +10162,7 @@
10162 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
10163 "default.handlebars->23->621",
10164 "default.handlebars->23->643",
10165 - "default.handlebars->23->1151",
10165 + "default.handlebars->23->1153",
10166 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3",
10167 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3",
10168 "default-mobile.handlebars->9->87",
@@ -10266,8 +10266,8 @@
10266 "ja": "許可",
10267 "nl": "machtigingen",
10268 "xloc": [
10269 - "default.handlebars->23->1100",
10270 - "default.handlebars->23->1172",
10269 + "default.handlebars->23->1102",
10270 + "default.handlebars->23->1174",
10271 "default-mobile.handlebars->9->329"
10272 ]
10273 },
@@ -10363,7 +10363,7 @@
10363 "nl": "Plugin Actie",
10364 "xloc": [
10365 "default.handlebars->23->177",
10366 - "default.handlebars->23->1391"
10366 + "default.handlebars->23->1413"
10367 ]
10368 },
10369 {
@@ -10610,7 +10610,7 @@
10610 "ja": "公開リンク",
10611 "nl": "Publieke link",
10612 "xloc": [
10613 - "default.handlebars->23->1137",
10613 + "default.handlebars->23->1139",
10614 "default-mobile.handlebars->9->74"
10615 ]
10616 },
@@ -10684,7 +10684,7 @@
10684 "cs": "Náhodné heslo",
10685 "nl": "Randomiseer het wachtwoord.",
10686 "xloc": [
10687 - "default.handlebars->23->1214"
10687 + "default.handlebars->23->1216"
10688 ]
10689 },
10690 {
@@ -10748,7 +10748,7 @@
10748 "cs": "Oblasti",
10749 "nl": "Realms",
10750 "xloc": [
10751 - "default.handlebars->23->1222"
10751 + "default.handlebars->23->1224"
10752 ]
10753 },
10754 {
@@ -10760,7 +10760,7 @@
10760 "nl": "Recursieve verwijdering",
10761 "xloc": [
10762 "default.handlebars->23->631",
10763 - "default.handlebars->23->1143",
10763 + "default.handlebars->23->1145",
10764 "default-mobile.handlebars->9->80",
10765 "default-mobile.handlebars->9->248"
10766 ]
@@ -10823,8 +10823,8 @@
10823 "cs": "Předávané relace",
10824 "nl": "Relay Sessies",
10825 "xloc": [
10826 - "default.handlebars->23->1347",
10827 - "default.handlebars->23->1360"
10826 + "default.handlebars->23->1369",
10827 + "default.handlebars->23->1382"
10828 ]
10829 },
10830 {
@@ -10901,8 +10901,8 @@
10901 "cs": "Ovládání na dálku",
10902 "nl": "Extern beheer",
10903 "xloc": [
10904 - "default.handlebars->23->1065",
10905 - "default.handlebars->23->1084",
10904 + "default.handlebars->23->1066",
10905 + "default.handlebars->23->1086",
10906 "default-mobile.handlebars->9->296",
10907 "default-mobile.handlebars->9->314"
10908 ]
@@ -10938,7 +10938,7 @@
10938 "cs": "Vzdálený uživatel",
10939 "nl": "externe Mesh gebruiker",
10940 "xloc": [
10941 - "default.handlebars->23->1103",
10941 + "default.handlebars->23->1105",
10942 "default-mobile.handlebars->9->332"
10943 ]
10944 },
@@ -10949,8 +10949,8 @@
10949 "cs": "Pouze prohlížení na dálku",
10950 "nl": "Alleen extern meekijken",
10951 "xloc": [
10952 - "default.handlebars->23->1066",
10953 - "default.handlebars->23->1089",
10952 + "default.handlebars->23->1067",
10953 + "default.handlebars->23->1091",
10954 "default-mobile.handlebars->9->297",
10955 "default-mobile.handlebars->9->319"
10956 ]
@@ -10973,7 +10973,7 @@
10973 "cs": "Odstranit celé 2-faktorové ověřování.",
10974 "nl": "Verwijder alle Tweestapsverificatie.",
10975 "xloc": [
10976 - "default.handlebars->23->1314"
10976 + "default.handlebars->23->1316"
10977 ]
10978 },
10979 {
@@ -11006,7 +11006,8 @@
11006 "nl": "Gebruikersrechten voor deze apparaatgroep verwijderen",
11007 "xloc": [
11008 "default.handlebars->23->1007",
11009 - "default.handlebars->23->1251"
11009 + "default.handlebars->23->1253",
11010 + "default.handlebars->23->1325"
11011 ]
11012 },
11013 {
@@ -11020,7 +11021,7 @@
11021 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
11022 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
11023 "default.handlebars->23->635",
11023 - "default.handlebars->23->1147",
11024 + "default.handlebars->23->1149",
11025 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
11026 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
11027 "default-mobile.handlebars->9->84",
@@ -11046,8 +11047,8 @@
11047 "cs": "Požadavky: {0}.",
11048 "nl": "Vereisten: {0}.",
11049 "xloc": [
11049 - "default.handlebars->23->1219",
11050 - "default.handlebars->23->1312",
11050 + "default.handlebars->23->1221",
11051 + "default.handlebars->23->1314",
11052 "default-mobile.handlebars->9->48"
11053 ]
11054 },
@@ -11197,7 +11198,7 @@
11198 "ja": "制限事項",
11199 "nl": "Beperkingen",
11200 "xloc": [
11200 - "default.handlebars->23->1272"
11201 + "default.handlebars->23->1274"
11202 ]
11203 },
11204 {
@@ -11265,7 +11266,7 @@
11266 "nl": "Root",
11267 "xloc": [
11268 "default.handlebars->23->625",
11268 - "default.handlebars->23->1122",
11269 + "default.handlebars->23->1124",
11270 "default-mobile.handlebars->9->66",
11271 "default-mobile.handlebars->9->242"
11272 ]
@@ -11552,7 +11553,7 @@
11553 "xloc": [
11554 "default.handlebars->23->244",
11555 "default.handlebars->23->537",
11555 - "default.handlebars->23->1296",
11556 + "default.handlebars->23->1298",
11557 "default-mobile.handlebars->9->214"
11558 ]
11559 },
@@ -11564,7 +11565,7 @@
11565 "cs": "Bezpečnostní klíč",
11566 "nl": "Veiligheidssleutel",
11567 "xloc": [
11567 - "default.handlebars->23->1294"
11568 + "default.handlebars->23->1296"
11569 ]
11570 },
11571 {
@@ -11612,7 +11613,7 @@
11613 "default.handlebars->23->382",
11614 "default.handlebars->23->627",
11615 "default.handlebars->23->629",
11615 - "default.handlebars->23->1139"
11616 + "default.handlebars->23->1141"
11617 ]
11618 },
11619 {
@@ -11647,7 +11648,7 @@
11648 "default.handlebars->meshContextMenu->cxselectnone",
11649 "default.handlebars->23->381",
11650 "default.handlebars->23->628",
11650 - "default.handlebars->23->1138"
11651 + "default.handlebars->23->1140"
11652 ]
11653 },
11654 {
@@ -11669,7 +11670,7 @@
11670 "cs": "Pouze vlastní události",
11671 "nl": "Alleen eigen gebeurtenissen",
11672 "xloc": [
11672 - "default.handlebars->23->1094",
11673 + "default.handlebars->23->1096",
11674 "default-mobile.handlebars->9->324"
11675 ]
11676 },
@@ -11694,7 +11695,7 @@
11695 "cs": "Poslat tomuto uživateli textové upozornění.",
11696 "nl": "Stuur een tekstbericht naar deze gebruiker.",
11697 "xloc": [
11697 - "default.handlebars->23->1190"
11698 + "default.handlebars->23->1192"
11699 ]
11700 },
11701 {
@@ -11716,7 +11717,7 @@
11717 "ja": "招待メールを送信します。",
11718 "nl": "Verzend uitnodigingsmail.",
11719 "xloc": [
11719 - "default.handlebars->23->1218"
11720 + "default.handlebars->23->1220"
11721 ]
11722 },
11723 {
@@ -11760,7 +11761,7 @@
11761 "cs": "Poslat upozornění uživateli",
11762 "nl": "Stuur gebruikersmelding",
11763 "xloc": [
11763 - "default.handlebars->23->1301"
11764 + "default.handlebars->23->1303"
11765 ]
11766 },
11767 {
@@ -11800,7 +11801,7 @@
11801 "cs": "Záloha serveru",
11802 "nl": "Server Back-up",
11803 "xloc": [
11803 - "default.handlebars->23->1227"
11804 + "default.handlebars->23->1229"
11805 ]
11806 },
11807 {
@@ -11809,7 +11810,7 @@
11810 "cs": "Certifikát serveru",
11811 "nl": "Server Certificaat",
11812 "xloc": [
11812 - "default.handlebars->23->1376"
11813 + "default.handlebars->23->1398"
11814 ]
11815 },
11816 {
@@ -11840,9 +11841,9 @@
11841 "cs": "Soubory serveru",
11842 "nl": "Serverbestanden",
11843 "xloc": [
11843 - "default.handlebars->23->1072",
11844 - "default.handlebars->23->1086",
11845 - "default.handlebars->23->1225",
11844 + "default.handlebars->23->1073",
11845 + "default.handlebars->23->1088",
11846 + "default.handlebars->23->1227",
11847 "default-mobile.handlebars->9->303",
11848 "default-mobile.handlebars->9->316"
11849 ]
@@ -11876,8 +11877,8 @@
11877 "cs": "Oprávnění serveru",
11878 "nl": "Serverrechten",
11879 "xloc": [
11879 - "default.handlebars->23->1183",
11880 - "default.handlebars->23->1235"
11880 + "default.handlebars->23->1185",
11881 + "default.handlebars->23->1237"
11882 ]
11883 },
11884 {
@@ -11887,7 +11888,7 @@
11888 "cs": "Kvóta serveru",
11889 "nl": "Serverquotum",
11890 "xloc": [
11890 - "default.handlebars->23->1280"
11891 + "default.handlebars->23->1282"
11892 ]
11893 },
11894 {
@@ -11897,7 +11898,7 @@
11898 "cs": "Obnova serveru",
11899 "nl": "Server herstellen",
11900 "xloc": [
11900 - "default.handlebars->23->1228"
11901 + "default.handlebars->23->1230"
11902 ]
11903 },
11904 {
@@ -11908,7 +11909,7 @@
11909 "cs": "Práva serveru",
11910 "nl": "Serverrechten",
11911 "xloc": [
11911 - "default.handlebars->23->1279"
11912 + "default.handlebars->23->1281"
11913 ]
11914 },
11915 {
@@ -11930,7 +11931,7 @@
11931 "cs": "Trasování serveru",
11932 "nl": "Server traceren",
11933 "xloc": [
11933 - "default.handlebars->23->1385"
11934 + "default.handlebars->23->1407"
11935 ]
11936 },
11937 {
@@ -11941,7 +11942,7 @@
11942 "cs": "Aktualizace serveru",
11943 "nl": "Serverupdates",
11944 "xloc": [
11944 - "default.handlebars->23->1229"
11945 + "default.handlebars->23->1231"
11946 ]
11947 },
11948 {
@@ -11971,7 +11972,7 @@
11972 "cs": "ServerStats.csv",
11973 "nl": "ServerStats.csv",
11974 "xloc": [
11974 - "default.handlebars->23->1368"
11975 + "default.handlebars->23->1390"
11976 ]
11977 },
11978 {
@@ -11981,7 +11982,7 @@
11982 "cs": "servertrace.csv",
11983 "nl": "servertrace.csv",
11984 "xloc": [
11984 - "default.handlebars->23->1387"
11985 + "default.handlebars->23->1409"
11986 ]
11987 },
11988 {
@@ -12224,7 +12225,7 @@
12225 "cs": "Zobrazit pouze vlastní události",
12226 "nl": "Toon alleen eigen gebeurtenissen",
12227 "xloc": [
12227 - "default.handlebars->23->1075",
12228 + "default.handlebars->23->1076",
12229 "default-mobile.handlebars->9->306"
12230 ]
12231 },
@@ -12775,7 +12776,7 @@
12776 "nl": "Status",
12777 "xloc": [
12778 "default.handlebars->container->column_l->p42->p42tbl->1->0->7",
12778 - "default.handlebars->23->1307"
12779 + "default.handlebars->23->1309"
12780 ]
12781 },
12782 {
@@ -12818,7 +12819,7 @@
12819 "ja": "ストレージ制限を超えています",
12820 "nl": "Opslaglimiet overschreden",
12821 "xloc": [
12821 - "default.handlebars->23->1125"
12822 + "default.handlebars->23->1127"
12823 ]
12824 },
12825 {
@@ -13106,7 +13107,7 @@
13107 "cs": "V tuto chvíli zde nejsou žádná upozornění",
13108 "nl": "Er zijn momenteel geen meldingen",
13109 "xloc": [
13109 - "default.handlebars->23->1321"
13110 + "default.handlebars->23->1343"
13111 ]
13112 },
13113 {
@@ -13271,7 +13272,7 @@
13272 "cs": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss",
13273 "nl": "tijd, conn.agent, conn.gebruikers, conn.gebruikerssessies, conn.relaysessie, conn.intelamt, mem.extern, mem.heapused, mem.heaptotaal, mem.rss",
13274 "xloc": [
13274 - "default.handlebars->23->1367"
13275 + "default.handlebars->23->1389"
13276 ]
13277 },
13278 {
@@ -13281,7 +13282,7 @@
13282 "cs": "time, source, message",
13283 "nl": "tijd, bron, bericht",
13284 "xloc": [
13284 - "default.handlebars->23->1386"
13285 + "default.handlebars->23->1408"
13286 ]
13287 },
13288 {
@@ -13291,7 +13292,7 @@
13292 "cs": "time, type, action, user, message",
13293 "nl": "tijd, type, actie, gebruiker, bericht",
13294 "xloc": [
13294 - "default.handlebars->23->1166"
13295 + "default.handlebars->23->1168"
13296 ]
13297 },
13298 {
@@ -13579,7 +13580,7 @@
13580 "ja": "合計",
13581 "nl": "totaal",
13582 "xloc": [
13582 - "default.handlebars->23->1355"
13583 + "default.handlebars->23->1377"
13584 ]
13585 },
13586 {
@@ -13822,7 +13823,7 @@
13823 "cs": "Odinstalace",
13824 "nl": "deinstallatie",
13825 "xloc": [
13825 - "default.handlebars->23->1096",
13826 + "default.handlebars->23->1098",
13827 "default-mobile.handlebars->9->326"
13828 ]
13829 },
@@ -13834,7 +13835,7 @@
13835 "xloc": [
13836 "default.handlebars->23->384",
13837 "default.handlebars->23->529",
13837 - "default.handlebars->23->1077",
13838 + "default.handlebars->23->1078",
13839 "default-mobile.handlebars->9->308"
13840 ]
13841 },
@@ -13861,6 +13862,7 @@
13862 "default.handlebars->23->108",
13863 "default.handlebars->23->109",
13864 "default.handlebars->23->380",
13865 + "default.handlebars->23->1334",
13866 "default-mobile.handlebars->9->126",
13867 "default-mobile.handlebars->9->143",
13868 "default-mobile.handlebars->9->171",
@@ -13937,7 +13939,7 @@
13939 "cs": "Aktuální",
13940 "nl": "Bijgewerkt",
13941 "xloc": [
13940 - "default.handlebars->23->1390"
13942 + "default.handlebars->23->1412"
13943 ]
13944 },
13945 {
@@ -13985,8 +13987,8 @@
13987 "default.handlebars->23->636",
13988 "default.handlebars->23->659",
13989 "default.handlebars->23->662",
13988 - "default.handlebars->23->1148",
13989 - "default.handlebars->23->1156",
13990 + "default.handlebars->23->1150",
13991 + "default.handlebars->23->1158",
13992 "default-mobile.handlebars->9->85",
13993 "default-mobile.handlebars->9->253",
13994 "default-mobile.handlebars->9->271"
@@ -14068,8 +14070,8 @@
14070 "ja": "中古",
14071 "nl": "Gebruikt",
14072 "xloc": [
14071 - "default.handlebars->23->1323",
14072 - "default.handlebars->23->1325"
14073 + "default.handlebars->23->1345",
14074 + "default.handlebars->23->1347"
14075 ]
14076 },
14077 {
@@ -14082,8 +14084,8 @@
14084 "xloc": [
14085 "default.handlebars->23->200",
14086 "default.handlebars->23->1008",
14085 - "default.handlebars->23->1184",
14086 - "default.handlebars->23->1252",
14087 + "default.handlebars->23->1186",
14088 + "default.handlebars->23->1254",
14089 "default-mobile.handlebars->9->328"
14090 ]
14091 },
@@ -14094,7 +14096,7 @@
14096 "ja": "ユーザー+ファイル",
14097 "nl": "Gebruiker + bestanden",
14098 "xloc": [
14097 - "default.handlebars->23->1185"
14099 + "default.handlebars->23->1187"
14100 ]
14101 },
14102 {
@@ -14104,10 +14106,10 @@
14106 "cs": "Import uživatelských účtů",
14107 "nl": "Gebruikersaccount importeren",
14108 "xloc": [
14107 - "default.handlebars->23->1192",
14108 - "default.handlebars->23->1193",
14109 + "default.handlebars->23->1194",
14110 "default.handlebars->23->1195",
14110 - "default.handlebars->23->1197"
14111 + "default.handlebars->23->1197",
14112 + "default.handlebars->23->1199"
14113 ]
14114 },
14115 {
@@ -14150,8 +14152,8 @@
14152 "cs": "Identifikátor uživatele",
14153 "nl": "gebruikersID",
14154 "xloc": [
14153 - "default.handlebars->23->1099",
14154 - "default.handlebars->23->1276"
14155 + "default.handlebars->23->1101",
14156 + "default.handlebars->23->1278"
14157 ]
14158 },
14159 {
@@ -14175,7 +14177,7 @@
14177 "cs": "Export seznamu uživatelů",
14178 "nl": "Gebruikerslijst exporteren",
14179 "xloc": [
14178 - "default.handlebars->23->1204"
14180 + "default.handlebars->23->1206"
14181 ]
14182 },
14183 {
@@ -14186,7 +14188,7 @@
14188 "ja": "ユーザー名",
14189 "nl": "Gebruikersnaam",
14190 "xloc": [
14189 - "default.handlebars->23->1098"
14191 + "default.handlebars->23->1100"
14192 ]
14193 },
14194 {
@@ -14198,7 +14200,7 @@
14200 "nl": "Gebruikersnamen",
14201 "xloc": [
14202 "default.handlebars->23->1059",
14201 - "default.handlebars->23->1265"
14203 + "default.handlebars->23->1267"
14204 ]
14205 },
14206 {
@@ -14208,7 +14210,7 @@
14210 "cs": "Relace uživatele",
14211 "nl": "Gebruikerssessie",
14212 "xloc": [
14211 - "default.handlebars->23->1359"
14213 + "default.handlebars->23->1381"
14214 ]
14215 },
14216 {
@@ -14240,8 +14242,8 @@
14242 "cs": "userlist.csv",
14243 "nl": "userlist.csv",
14244 "xloc": [
14243 - "default.handlebars->23->1201",
14244 - "default.handlebars->23->1206"
14245 + "default.handlebars->23->1203",
14246 + "default.handlebars->23->1208"
14247 ]
14248 },
14249 {
@@ -14251,8 +14253,8 @@
14253 "cs": "userlist.json",
14254 "nl": "userlist.json",
14255 "xloc": [
14254 - "default.handlebars->23->1203",
14255 - "default.handlebars->23->1207"
14256 + "default.handlebars->23->1205",
14257 + "default.handlebars->23->1209"
14258 ]
14259 },
14260 {
@@ -14304,8 +14306,8 @@
14306 "nl": "Gebruikers",
14307 "xloc": [
14308 "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral",
14307 - "default.handlebars->23->1237",
14308 - "default.handlebars->23->1358"
14309 + "default.handlebars->23->1239",
14310 + "default.handlebars->23->1380"
14311 ]
14312 },
14313 {
@@ -14439,7 +14441,7 @@
14441 "cs": "Zobrazit poznámky o tomto uživateli",
14442 "nl": "Bekijk opmerkingen over deze gebruiker",
14443 "xloc": [
14442 - "default.handlebars->23->1299"
14444 + "default.handlebars->23->1301"
14445 ]
14446 },
14447 {
@@ -14479,8 +14481,8 @@
14481 "cs": "Probudit zařízení",
14482 "nl": "apparaat wekken",
14483 "xloc": [
14482 - "default.handlebars->23->1073",
14483 - "default.handlebars->23->1087",
14484 + "default.handlebars->23->1074",
14485 + "default.handlebars->23->1089",
14486 "default-mobile.handlebars->9->304",
14487 "default-mobile.handlebars->9->317"
14488 ]
@@ -14559,8 +14561,8 @@
14561 "cs": "Webový server",
14562 "nl": "webserver",
14563 "xloc": [
14562 - "default.handlebars->23->1377",
14563 - "default.handlebars->23->1378"
14564 + "default.handlebars->23->1399",
14565 + "default.handlebars->23->1400"
14566 ]
14567 },
14568 {
@@ -14571,7 +14573,7 @@
14573 "cs": "Požadavky webového serveru",
14574 "nl": "Webserver Verzoeken",
14575 "xloc": [
14574 - "default.handlebars->23->1379"
14576 + "default.handlebars->23->1401"
14577 ]
14578 },
14579 {
@@ -14582,7 +14584,7 @@
14584 "cs": "Web Socket Relay",
14585 "nl": "Web Socket Relay",
14586 "xloc": [
14585 - "default.handlebars->23->1380"
14587 + "default.handlebars->23->1402"
14588 ]
14589 },
14590 {
@@ -14626,7 +14628,7 @@
14628 "ja": "次回ログイン時に変更されます。",
14629 "nl": "Wordt bij de volgende aanmelding gewijzigd.",
14630 "xloc": [
14629 - "default.handlebars->23->1284"
14631 + "default.handlebars->23->1286"
14632 ]
14633 },
14634 {
@@ -15029,7 +15031,7 @@
15031 "cs": "{0} aktivních spojení",
15032 "nl": "{0} actieve sessies",
15033 "xloc": [
15032 - "default.handlebars->23->1305"
15034 + "default.handlebars->23->1307"
15035 ]
15036 },
15037 {
@@ -15039,7 +15041,7 @@
15041 "cs": "{0} b",
15042 "nl": "{0} b",
15043 "xloc": [
15042 - "default.handlebars->23->1131"
15044 + "default.handlebars->23->1133"
15045 ]
15046 },
15047 {
@@ -15050,7 +15052,7 @@
15052 "ja": "{0}バイト",
15053 "nl": "{0} bytes",
15054 "xloc": [
15053 - "default.handlebars->23->1141",
15055 + "default.handlebars->23->1143",
15056 "default-mobile.handlebars->9->78"
15057 ]
15058 },
@@ -15062,7 +15064,7 @@
15064 "cs": "{0} bajtů zbývá",
15065 "nl": "{0} resterende bytes",
15066 "xloc": [
15065 - "default.handlebars->23->1126"
15067 + "default.handlebars->23->1128"
15068 ]
15069 },
15070 {
@@ -15072,7 +15074,7 @@
15074 "cs": "{0} Gb",
15075 "nl": "{0} Gb",
15076 "xloc": [
15075 - "default.handlebars->23->1134"
15077 + "default.handlebars->23->1136"
15078 ]
15079 },
15080 {
@@ -15082,7 +15084,7 @@
15084 "ja": "残り{0}ギガバイト",
15085 "nl": "{0} rsterende gigabytes",
15086 "xloc": [
15085 - "default.handlebars->23->1129"
15087 + "default.handlebars->23->1131"
15088 ]
15089 },
15090 {
@@ -15092,7 +15094,7 @@
15094 "cs": "{0} skupin",
15095 "nl": "{0} groepen",
15096 "xloc": [
15095 - "default.handlebars->23->1289"
15097 + "default.handlebars->23->1291"
15098 ]
15099 },
15100 {
@@ -15109,7 +15111,7 @@
15111 "cs": "{0} Kb",
15112 "nl": "{0} Kb",
15113 "xloc": [
15112 - "default.handlebars->23->1132"
15114 + "default.handlebars->23->1134"
15115 ]
15116 },
15117 {
@@ -15119,7 +15121,7 @@
15121 "ja": "残り{0}キロバイト",
15122 "nl": "{0} resterende kilobytes",
15123 "xloc": [
15122 - "default.handlebars->23->1127"
15124 + "default.handlebars->23->1129"
15125 ]
15126 },
15127 {
@@ -15140,7 +15142,7 @@
15142 "cs": "{0} Mb",
15143 "nl": "{0} Mb",
15144 "xloc": [
15143 - "default.handlebars->23->1133"
15145 + "default.handlebars->23->1135"
15146 ]
15147 },
15148 {
@@ -15160,7 +15162,7 @@
15162 "ja": "残り{0}メガバイト",
15163 "nl": "{0} resterende megabytes",
15164 "xloc": [
15163 - "default.handlebars->23->1128"
15165 + "default.handlebars->23->1130"
15166 ]
15167 },
15168 {
@@ -15177,7 +15179,7 @@
15179 "cs": "{0} dalších uživatelů není zobrazeno, vyhledejte je pomocí kolonky pro vyhledávání…",
15180 "nl": "{0} meer gebruikers niet getoond, gebruik zoekvak om gebruikers te zoeken ...",
15181 "xloc": [
15180 - "default.handlebars->23->1176"
15182 + "default.handlebars->23->1178"
15183 ]
15184 },
15185 {
@@ -15237,7 +15239,7 @@
15239 "cs": "{0} relací",
15240 "nl": "{0} sessies",
15241 "xloc": [
15240 - "default.handlebars->23->1180"
15242 + "default.handlebars->23->1182"
15243 ]
15244 },
15245 {
@@ -15308,7 +15310,7 @@
15310 "cs": "{0}k v 1 souboru. {1}k maximum",
15311 "nl": "{0}k in 1 bestand. {1}k maximum",
15312 "xloc": [
15311 - "default.handlebars->23->1136"
15313 + "default.handlebars->23->1138"
15314 ]
15315 },
15316 {
@@ -15318,7 +15320,7 @@
15320 "cs": "{0}k v {1} souborech. {2}k maximum",
15321 "nl": "{0}k in 1 file. {2}k maximum",
15322 "xloc": [
15321 - "default.handlebars->23->1135"
15323 + "default.handlebars->23->1137"
15324 ]
15325 },
15326 {
@@ -15481,7 +15483,7 @@
15483 "cs": "2-faktorové ověřování zapnuto",
15484 "nl": "Tweestapsverificatie ingeschakeld",
15485 "xloc": [
15484 - "default.handlebars->23->1297"
15486 + "default.handlebars->23->1299"
15487 ]
15488 },
15489 {
@@ -15490,7 +15492,7 @@
15492 "cs": "\\\\'",
15493 "nl": "\\\\'",
15494 "xloc": [
15493 - "default.handlebars->23->1388"
15495 + "default.handlebars->23->1410"
15496 ]
15497 },
15498 {
@@ -15532,7 +15534,7 @@
15534 "nl": "Power Status",
15535 "xloc": [
15536 "default.handlebars->container->column_l->p21->3->1->meshPowerChartDiv->1",
15535 - "default.handlebars->23->1114"
15537 + "default.handlebars->23->1116"
15538 ]
15539 },
15540 {
@@ -15541,7 +15543,7 @@
15543 "nl": "Agent Type",
15544 "xloc": [
15545 "default.handlebars->container->column_l->p21->3->1->meshOsChartDiv->1",
15544 - "default.handlebars->23->1115"
15546 + "default.handlebars->23->1117"
15547 ]
15548 },
15549 {
@@ -15623,16 +15625,16 @@
15625 "cs": "Nepřipojeno",
15626 "nl": "Niet verbonden",
15627 "xloc": [
15626 - "default.handlebars->23->1110",
15627 - "default.handlebars->23->1116"
15628 + "default.handlebars->23->1112",
15629 + "default.handlebars->23->1118"
15630 ]
15631 },
15632 {
15633 "en": "Agent + Intel AMT",
15634 "nl": "Agent + Intel AMT",
15635 "xloc": [
15634 - "default.handlebars->23->1113",
15635 - "default.handlebars->23->1119"
15636 + "default.handlebars->23->1115",
15637 + "default.handlebars->23->1121"
15638 ]
15639 },
15640 {
@@ -15640,7 +15642,7 @@
15642 "cs": "V této skupině nejsou žádná zařízení.",
15643 "nl": "Geen apparaten in deze apparaatgroep.",
15644 "xloc": [
15643 - "default.handlebars->23->1121"
15645 + "default.handlebars->23->1123"
15646 ]
15647 },
15648 {
@@ -15672,7 +15674,7 @@
15674 "cs": "Je třeba, aby nastavení upozorňování byla zapnutá také v nastavení účtu.",
15675 "nl": "Meldingsinstellingen moeten ook worden ingeschakeld in accountinstellingen.",
15676 "xloc": [
15675 - "default.handlebars->23->1105"
15677 + "default.handlebars->23->1107"
15678 ]
15679 },
15680 {
@@ -15681,7 +15683,7 @@
15683 "nl": "Groepen",
15684 "xloc": [
15685 "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGroups",
15684 - "default.handlebars->23->1170"
15686 + "default.handlebars->23->1172"
15687 ]
15688 },
15689 {
@@ -15689,23 +15691,20 @@
15691 "cs": "Smazat uživatele",
15692 "nl": "Verwijder gebruiker",
15693 "xloc": [
15692 - "default.handlebars->23->1302"
15694 + "default.handlebars->23->1304"
15695 ]
15696 },
15697 {
15698 "en": "7 Day Login State",
15699 "cs": "Stav přihlášení za 7 dnů",
15698 - "nl": "Inlogstatus afgelopen 7 dagen",
15699 - "xloc": [
15700 - "default.handlebars->23->1318"
15701 - ]
15700 + "nl": "Inlogstatus afgelopen 7 dagen"
15701 },
15702 {
15703 "en": "CPU Load",
15704 "cs": "Vytížení procesoru",
15705 "nl": "CPU gebruik",
15706 "xloc": [
15708 - "default.handlebars->23->1349"
15707 + "default.handlebars->23->1371"
15708 ]
15709 },
15710 {
@@ -15713,14 +15712,14 @@
15712 "cs": "Stav serveru",
15713 "nl": "Server Status",
15714 "xloc": [
15716 - "default.handlebars->23->1327"
15715 + "default.handlebars->23->1349"
15716 ]
15717 },
15718 {
15719 "en": "Agent Error Counters",
15720 "cs": "Počitadla chyb agenta",
15721 "xloc": [
15723 - "default.handlebars->23->1328"
15722 + "default.handlebars->23->1350"
15723 ]
15724 },
15725 {
@@ -15728,7 +15727,7 @@
15727 "cs": "Neznámá skupina",
15728 "nl": "Onbekende groep",
15729 "xloc": [
15731 - "default.handlebars->23->1329"
15730 + "default.handlebars->23->1351"
15731 ]
15732 },
15733 {
@@ -15736,7 +15735,7 @@
15735 "cs": "Neplatný PKCS podpis",
15736 "nl": "Onjuiste PKCS handtekening",
15737 "xloc": [
15739 - "default.handlebars->23->1330"
15738 + "default.handlebars->23->1352"
15739 ]
15740 },
15741 {
@@ -15744,7 +15743,7 @@
15743 "cs": "Neplatný RSA podpis",
15744 "nl": "Ongeldige RSA handtekening",
15745 "xloc": [
15747 - "default.handlebars->23->1331"
15746 + "default.handlebars->23->1353"
15747 ]
15748 },
15749 {
@@ -15752,7 +15751,7 @@
15751 "cs": "Neplatný JSON",
15752 "nl": "Onjuiste JSON",
15753 "xloc": [
15755 - "default.handlebars->23->1332"
15754 + "default.handlebars->23->1354"
15755 ]
15756 },
15757 {
@@ -15760,7 +15759,7 @@
15759 "cs": "Neznámá akce",
15760 "nl": "Onbekende actie",
15761 "xloc": [
15763 - "default.handlebars->23->1333"
15762 + "default.handlebars->23->1355"
15763 ]
15764 },
15765 {
@@ -15768,7 +15767,7 @@
15767 "cs": "Nesprávný certifikát webu",
15768 "nl": "Onjuist webcertificaat",
15769 "xloc": [
15771 - "default.handlebars->23->1334"
15770 + "default.handlebars->23->1356"
15771 ]
15772 },
15773 {
@@ -15776,7 +15775,7 @@
15775 "cs": "Nesprávný podpis",
15776 "nl": "Ongeldige handtening",
15777 "xloc": [
15779 - "default.handlebars->23->1335"
15778 + "default.handlebars->23->1357"
15779 ]
15780 },
15781 {
@@ -15784,7 +15783,7 @@
15783 "cs": "Dosaženo maximálního počtu relací",
15784 "nl": "Max Sessies bereikt",
15785 "xloc": [
15787 - "default.handlebars->23->1336"
15786 + "default.handlebars->23->1358"
15787 ]
15788 },
15789 {
@@ -15792,7 +15791,8 @@
15791 "cs": "Neznámá skupina zařízení",
15792 "nl": "Onbekende apparaatgroep",
15793 "xloc": [
15795 - "default.handlebars->23->1337"
15794 + "default.handlebars->23->1322",
15795 + "default.handlebars->23->1359"
15796 ]
15797 },
15798 {
@@ -15800,7 +15800,7 @@
15800 "cs": "Neplatný typ skupiny zařízení",
15801 "nl": "Ongeldige apparaatgroep type",
15802 "xloc": [
15803 - "default.handlebars->23->1338"
15803 + "default.handlebars->23->1360"
15804 ]
15805 },
15806 {
@@ -15808,7 +15808,7 @@
15808 "cs": "Duplikovat agenta",
15809 "nl": "Duplicaat Agent",
15810 "xloc": [
15811 - "default.handlebars->23->1339"
15811 + "default.handlebars->23->1361"
15812 ]
15813 },
15814 {
@@ -15816,7 +15816,7 @@
15816 "cs": "Připojené Intel® AMT",
15817 "nl": "Verbonden Intel® AMT",
15818 "xloc": [
15819 - "default.handlebars->23->1340"
15819 + "default.handlebars->23->1362"
15820 ]
15821 },
15822 {
@@ -15824,7 +15824,7 @@
15824 "cs": "Chyby předávání (relay)",
15825 "nl": "Relay fouten",
15826 "xloc": [
15827 - "default.handlebars->23->1341"
15827 + "default.handlebars->23->1363"
15828 ]
15829 },
15830 {
@@ -15832,14 +15832,14 @@
15832 "cs": "Uživatelské účty",
15833 "nl": "Gebruikersaccounts",
15834 "xloc": [
15835 - "default.handlebars->23->1342"
15835 + "default.handlebars->23->1364"
15836 ]
15837 },
15838 {
15839 "en": "Agent Sessions",
15840 "cs": "Relace agenta",
15841 "xloc": [
15842 - "default.handlebars->23->1344"
15842 + "default.handlebars->23->1366"
15843 ]
15844 },
15845 {
@@ -15847,7 +15847,7 @@
15847 "cs": "Připojení",
15848 "nl": "Verbonden gebruikers",
15849 "xloc": [
15850 - "default.handlebars->23->1345"
15850 + "default.handlebars->23->1367"
15851 ]
15852 },
15853 {
@@ -15855,7 +15855,7 @@
15855 "cs": "Uživatelské relace",
15856 "nl": "gebruikers Sessies",
15857 "xloc": [
15858 - "default.handlebars->23->1346"
15858 + "default.handlebars->23->1368"
15859 ]
15860 },
15861 {
@@ -15904,28 +15904,28 @@
15904 "cs": "Externí",
15905 "nl": "Extern",
15906 "xloc": [
15907 - "default.handlebars->23->1363"
15907 + "default.handlebars->23->1385"
15908 ]
15909 },
15910 {
15911 "en": "Heap Used",
15912 "nl": "Heap gebruikt",
15913 "xloc": [
15914 - "default.handlebars->23->1364"
15914 + "default.handlebars->23->1386"
15915 ]
15916 },
15917 {
15918 "en": "Heap Total",
15919 "nl": "Heap Totaal",
15920 "xloc": [
15921 - "default.handlebars->23->1365"
15921 + "default.handlebars->23->1387"
15922 ]
15923 },
15924 {
15925 "en": "RSS",
15926 "nl": "RSS",
15927 "xloc": [
15928 - "default.handlebars->23->1366"
15928 + "default.handlebars->23->1388"
15929 ]
15930 },
15931 {
@@ -15946,14 +15946,14 @@
15946 "en": "Remove all previous events for this userid.",
15947 "cs": "Remove all previous events for this userid.",
15948 "xloc": [
15949 - "default.handlebars->23->1216"
15949 + "default.handlebars->23->1218"
15950 ]
15951 },
15952 {
15953 "en": "Relay Count",
15954 "cs": "Počet předávání (relay)",
15955 "xloc": [
15956 - "default.handlebars->23->1348"
15956 + "default.handlebars->23->1370"
15957 ]
15958 },
15959 {
@@ -15983,13 +15983,13 @@
15983 {
15984 "en": "Manage User Groups",
15985 "xloc": [
15986 - "default.handlebars->23->1231"
15986 + "default.handlebars->23->1233"
15987 ]
15988 },
15989 {
15990 "en": "Create User Group",
15991 "xloc": [
15992 - "default.handlebars->23->1241"
15992 + "default.handlebars->23->1243"
15993 ]
15994 },
15995 {
@@ -16001,56 +16001,56 @@
16001 {
16002 "en": "No groups found.",
16003 "xloc": [
16004 - "default.handlebars->23->1238"
16004 + "default.handlebars->23->1240"
16005 ]
16006 },
16007 {
16008 "en": "Send a notice to all users in this group.",
16009 "xloc": [
16010 - "default.handlebars->23->1248"
16010 + "default.handlebars->23->1250"
16011 ]
16012 },
16013 {
16014 "en": "Group Members",
16015 "xloc": [
16016 - "default.handlebars->23->1250"
16016 + "default.handlebars->23->1252"
16017 ]
16018 },
16019 {
16020 "en": "No Members",
16021 "xloc": [
16022 - "default.handlebars->23->1253"
16022 + "default.handlebars->23->1255"
16023 ]
16024 },
16025 {
16026 "en": "Delete User Group",
16027 "xloc": [
16028 - "default.handlebars->23->1254",
16029 - "default.handlebars->23->1260"
16028 + "default.handlebars->23->1256",
16029 + "default.handlebars->23->1262"
16030 ]
16031 },
16032 {
16033 "en": "Edit User Group",
16034 "xloc": [
16035 - "default.handlebars->23->1257"
16035 + "default.handlebars->23->1259"
16036 ]
16037 },
16038 {
16039 "en": "Delete user group {0}?",
16040 "xloc": [
16041 - "default.handlebars->23->1258"
16041 + "default.handlebars->23->1260"
16042 ]
16043 },
16044 {
16045 "en": "Remote User",
16046 "xloc": [
16047 - "default.handlebars->23->1261"
16047 + "default.handlebars->23->1263"
16048 ]
16049 },
16050 {
16051 "en": "Add Users to User Group",
16052 "xloc": [
16053 - "default.handlebars->23->1266"
16053 + "default.handlebars->23->1268"
16054 ]
16055 },
16056 {
@@ -16129,14 +16129,114 @@
16129 "en": "Upload will overwrite 1 file. Continue?",
16130 "xloc": [
16131 "default.handlebars->23->660",
16132 - "default.handlebars->23->1157"
16132 + "default.handlebars->23->1159"
16133 ]
16134 },
16135 {
16136 "en": "Upload will overwrite {0} files. Continue?",
16137 "xloc": [
16138 "default.handlebars->23->661",
16139 - "default.handlebars->23->1158"
16139 + "default.handlebars->23->1160"
16140 + ]
16141 + },
16142 + {
16143 + "en": "Partial Device Group Rights",
16144 + "xloc": [
16145 + "default.handlebars->23->1004",
16146 + "default.handlebars->23->1321"
16147 + ]
16148 + },
16149 + {
16150 + "en": "Full Device Group Administrator",
16151 + "xloc": [
16152 + "default.handlebars->23->1005",
16153 + "default.handlebars->23->1323"
16154 + ]
16155 + },
16156 + {
16157 + "en": "Device Group",
16158 + "xloc": [
16159 + "default.handlebars->23->1060",
16160 + "default.handlebars->23->1326",
16161 + "default.handlebars->23->1332"
16162 + ]
16163 + },
16164 + {
16165 + "en": "Common Device Groups",
16166 + "xloc": [
16167 + "default.handlebars->23->1320"
16168 + ]
16169 + },
16170 + {
16171 + "en": "No device groups in common",
16172 + "xloc": [
16173 + "default.handlebars->23->1327"
16174 + ]
16175 + },
16176 + {
16177 + "en": "Add User Group",
16178 + "xloc": [
16179 + "default.handlebars->23->1328"
16180 + ]
16181 + },
16182 + {
16183 + "en": "User Group Memberships",
16184 + "xloc": [
16185 + "default.handlebars->23->1329"
16186 + ]
16187 + },
16188 + {
16189 + "en": "Unknown User Group",
16190 + "xloc": [
16191 + "default.handlebars->23->1330"
16192 + ]
16193 + },
16194 + {
16195 + "en": "Remove user group membership",
16196 + "xloc": [
16197 + "default.handlebars->23->1331"
16198 + ]
16199 + },
16200 + {
16201 + "en": "No user group memberships",
16202 + "xloc": [
16203 + "default.handlebars->23->1333"
16204 + ]
16205 + },
16206 + {
16207 + "en": "Remove User",
16208 + "xloc": [
16209 + "default.handlebars->23->1335"
16210 + ]
16211 + },
16212 + {
16213 + "en": "Confirm removal of group {0}?",
16214 + "xloc": [
16215 + "default.handlebars->23->1336"
16216 + ]
16217 + },
16218 + {
16219 + "en": "User Group",
16220 + "xloc": [
16221 + "default.handlebars->23->1337"
16222 + ]
16223 + },
16224 + {
16225 + "en": "Add Membership",
16226 + "xloc": [
16227 + "default.handlebars->23->1338"
16228 + ]
16229 + },
16230 + {
16231 + "en": "Remove Device Group",
16232 + "xloc": [
16233 + "default.handlebars->23->1339"
16234 + ]
16235 + },
16236 + {
16237 + "en": "Confirm removal of device group {0}?",
16238 + "xloc": [
16239 + "default.handlebars->23->1340"
16240 ]
16241 }
16242 ]
views/default.handlebars
+111 -59
@@ -1558,7 +1558,7 @@
1558 // We are not user administrator
1559 users = null;
1560 wssessions = null;
1561 - updateUsers();
1561 + masterUpdate(16384);
1562 if (xxcurrentView == 4 || ((xxcurrentView >= 30) && (xxcurrentView < 40))) { setDialogMode(0); go(1); currentUser = null; }
1563 }
1564 meshserver.send({ action: 'events', limit: parseInt(p3limitdropdown.value) });
@@ -1592,6 +1592,7 @@
1592 if (updateNaggleFlags & 2048) { userEventsUpdate(); }
1593 if (updateNaggleFlags & 4096) { p20updateMesh(); }
1594 if (updateNaggleFlags & 8192) { updateUserGroups(); }
1595 + if (updateNaggleFlags & 16384) { updateUsers(); }
1596 updateNaggleTimer = null;
1597 updateNaggleFlags = 0;
1598 }, 150);
@@ -1705,12 +1706,12 @@
1706 case 'users': {
1707 users = {};
1708 for (var m in message.users) { users[message.users[m]._id] = message.users[m]; }
1708 - updateUsers();
1709 + masterUpdate(16384);
1710 break;
1711 }
1712 case 'wssessioncount': {
1713 wssessions = message.wssessions;
1713 - updateUsers();
1714 + masterUpdate(16384);
1715 break;
1716 }
1717 case 'meshes': {
@@ -2203,14 +2204,14 @@
2204 delete users[message.event.account._id]; // No longer part of our groups, remove this user.
2205 }
2206
2206 - updateUsers();
2207 + masterUpdate(16384);
2208 break;
2209 }
2210 case 'accountremove': {
2211 // An account was removed
2212 if (users == null) break;
2213 delete users['user/' + domain + '/' + message.event.username.toLowerCase()];
2213 - updateUsers();
2214 + masterUpdate(16384);
2215 break;
2216 }
2217 case 'createusergroup':
@@ -2226,7 +2227,7 @@
2227 ugroup.desc = message.event.desc;
2228 ugroup.links = message.event.links;
2229 }
2229 - masterUpdate(8192);
2230 + masterUpdate(8192 + 16384);
2231 break;
2232 }
2233 case 'deleteusergroup': {
@@ -2477,7 +2478,7 @@
2478 } else {
2479 wssessions['user/' + domain + '/' + message.event.username.toLowerCase()] = message.event.count;
2480 }
2480 - updateUsers();
2481 + masterUpdate(16384);
2482 }
2483 break;
2484 }
@@ -7679,8 +7680,8 @@
7680
7681 // Display all users for this mesh
7682 for (var i in sortedusers) {
7682 - var trash = '', rights = "Partial Rights", r = sortedusers[i].rights;
7683 - if (r == 0xFFFFFFFF) rights = "Full Administrator"; else if (r == 0) rights = "No Rights";
7683 + var trash = '', rights = "Partial Device Group Rights", r = sortedusers[i].rights;
7684 + if (r == 0xFFFFFFFF) rights = "Full Device Group Administrator"; else if (r == 0) rights = "No Rights";
7685 if ((sortedusers[i].id != userinfo._id) && (meshrights == 0xFFFFFFFF || (((meshrights & 2) != 0)))) { trash = '<a href=# onclick=\'return p20deleteUser(event,"' + encodeURIComponent(sortedusers[i].id) + '")\' title=\"' + "Remove user rights to this device group" + '\" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'; }
7686 x += '<tr tabindex=0 onclick=p20viewuser("' + encodeURIComponent(sortedusers[i].id) + '") onkeypress="if (event.key==\'Enter\') p20viewuser(\'' + encodeURIComponent(sortedusers[i].id) + '\')" style=cursor:pointer' + (((count % 2) == 0) ? ';background-color:#DDD' : '') + '><td><div title=\"' + "User" + '\" class=m2></div><div>&nbsp;' + EscapeHtml(decodeURIComponent(sortedusers[i].name)) + '<div></div></div></td><td><div style=float:right>' + trash + '</div><div>' + rights + '</div></td></tr>';
7687 ++count;
@@ -7873,6 +7874,10 @@
7874 x += addHtmlValue("User Names", '<input id=dp20username style=width:230px maxlength=32 onchange=p20validateAddMeshUserDialog() onkeyup=p20validateAddMeshUserDialog() placeholder="user1, user2, user3" />');
7875 x += '<div id=dp20usersuggest class=suggestionBox style=\'top:30px;left:130px;display:none\'></div>';
7876 x += '</div><br>';
7877 + } else if (userid === 1) {
7878 + var y = '';
7879 + for (var i in meshes) { if ((currentUser.links == null) || (currentUser.links[i] == null)) { y += '<option value=' + encodeURIComponent(i) + '>' + EscapeHtml(meshes[i].name) + '</option>'; } }
7880 + x += addHtmlValue("Device Group", '<div style=width:230px;margin:0;padding:0><select onchange=p20validateAddMeshUserDialog() id=dp2groupid style=width:100%>' + y + '</select></div>');
7881 } else {
7882 userid = decodeURIComponent(userid);
7883 var uname = userid.split('/')[2];
@@ -7902,6 +7907,8 @@
7907 if (userid == null) {
7908 setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x);
7909 Q('dp20username').focus();
7910 + } else if (userid === 1) {
7911 + setDialogMode(2, "Add Device Group", 3, p20showAddMeshUserDialogEx, x, userid);
7912 } else {
7913 setDialogMode(2, "Edit User Device Group Permissions", 7, p20showAddMeshUserDialogEx, x, userid);
7914 var cmeshrights = GetMeshRights(currentMesh), meshrights = GetMeshRights(currentMesh, userid);
@@ -7943,7 +7950,12 @@
7950 }
7951
7952 function p20validateAddMeshUserDialog() {
7946 - var meshrights = GetMeshRights(currentMesh);
7953 + var meshrights = null;
7954 + if (xxdialogTag === 1) {
7955 + meshrights = GetMeshRights(decodeURIComponent(Q('dp2groupid').value));
7956 + } else {
7957 + meshrights = GetMeshRights(currentMesh);
7958 + }
7959 var ok = true;
7960 if (Q('dp20username')) {
7961 var xusers = Q('dp20username').value.split(',');
@@ -8017,12 +8029,17 @@
8029 if (Q('p20uninstall').checked == true) meshadmin += 32768;
8030 }
8031
8020 - if (t == null) {
8021 - var users = Q('dp20username').value.split(','), users2 = [];
8022 - for (var i in users) { users2.push(users[i].trim()); }
8023 - meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: users2, meshadmin: meshadmin });
8032 + if (t === 1) {
8033 + var meshid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[meshid];
8034 + if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: meshid, meshname: mesh.name, usernames: [ currentUser._id.split('/')[2] ], meshadmin: meshadmin }); }
8035 } else {
8025 - meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: [ t.split('/')[2] ], meshadmin: meshadmin });
8036 + if (t == null) {
8037 + var users = Q('dp20username').value.split(','), users2 = [];
8038 + for (var i in users) { users2.push(users[i].trim()); }
8039 + meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: users2, meshadmin: meshadmin });
8040 + } else {
8041 + meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: [ t.split('/')[2] ], meshadmin: meshadmin });
8042 + }
8043 }
8044 }
8045 }
@@ -8729,7 +8746,7 @@
8746 if (self) { permissions += '</a>'; }
8747
8748 var groups = 0
8732 - if (user.links) { for (var i in user.links) { groups++; } }
8749 + if (user.links) { for (var i in user.links) { if (i.startsWith('mesh/')) { groups++; } } }
8750
8751 var username = EscapeHtml(user.name), emailVerified = '';
8752 if (serverinfo.emailcheck == true) { emailVerified = ((user.emailVerified != true) ? ' <b style=color:red title="Email is not verified">&#x2717;</b>' : ' <b style=color:green title="Email is verified">&#x2713</b>'); }
@@ -9024,7 +9041,7 @@
9041 meshserver.send(x);
9042 }
9043
9027 - function onUserSearchInputChanged() { updateUsers(); }
9044 + function onUserSearchInputChanged() { masterUpdate(16384); }
9045
9046
9047 //
@@ -9307,7 +9324,7 @@
9324 // Device Groups
9325 var linkCount = 0, linkCountStr = '<i>' + "None" + '<i>';
9326 if (user.links) {
9310 - for (var i in user.links) { linkCount++; }
9327 + for (var i in user.links) { if (i.startsWith('mesh/')) { linkCount++; } }
9328 if (linkCount == 1) { linkCountStr = "1 group"; } else if (linkCount > 1) { linkCountStr = format("{0} groups", linkCount); }
9329 }
9330 x += addDeviceAttribute("Device Groups", linkCountStr);
@@ -9339,7 +9356,7 @@
9356 QH('p30html', x);
9357
9358 // Draw the user timeline
9342 - drawUserTimeline();
9359 + drawUserPermissions();
9360
9361 // Check if we can delete this user
9362 var deletePossible = true;
@@ -9446,52 +9463,87 @@
9463 }
9464
9465 // Draw device power bars. The bars are 766px wide.
9449 - function drawUserTimeline() {
9450 - var timeline = null, now = Date.now();
9451 - //if (currentNode._id == powerTimelineNode) { timeline = powerTimeline; }
9452 - timeline = [];
9453 -
9454 - // Calculate when the timeline starts
9455 - var d = new Date();
9456 - d.setHours(0, 0, 0, 0);
9457 - d = new Date(d.getTime() - (1000 * 60 * 60 * 24 * 6));
9458 - var timelineStart = d.getTime();
9459 -
9460 - // De-compact the timeline
9461 - var timeline2 = [];
9462 - if (timeline != null && timeline.length > 1) {
9463 - timeline2.push([ 0, timeline[1], timeline[0] ]); // Start, End, Power
9464 - var ct = timeline[1];
9465 - for (var i = 2; i < timeline.length; i += 2) {
9466 - var power = timeline[i], dt = now;
9467 - if (timeline.length > (i + 1)) { dt = timeline[i + 1]; }
9468 - timeline2.push([ ct, ct + dt, power ]); // Start, End, Power
9469 - ct = ct + dt;
9466 + function drawUserPermissions() {
9467 + var count = 1, x = '';
9468 + var deviceGroupCount = 0, newDeviceGroup = false;
9469 + for (var i in meshes) { deviceGroupCount++; if ((currentUser.links == null) || (currentUser.links[i] == null)) { newDeviceGroup = true; } }
9470 + if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += '<a href=# onclick="return p20showAddMeshUserDialog(1)" style=cursor:pointer;margin-right:10px><img src=images/icon-addnew.png border=0 height=12 width=12> ' + "Add Device Group" + '</a>'; }
9471 + x += '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>' + "Common Device Groups" + '</th><th scope=col style=text-align:left></th></tr>';
9472 + if (currentUser.links) {
9473 + for (var i in currentUser.links) {
9474 + if (i.startsWith('mesh/')) {
9475 + var cr = 0, r = currentUser.links[i].rights, mesh = meshes[i], trash = '', rights = "Partial Device Group Rights";
9476 + if (mesh == null) { continue; }
9477 + if ((userinfo.links) && (userinfo.links[i] != null) && (userinfo.links[i].rights != null)) { cr = userinfo.links[i].rights; }
9478 + var meshname = mesh?EscapeHtml(mesh.name):('<i>' + "Unknown Device Group" + '</i>');
9479 + if (r == 0xFFFFFFFF) rights = "Full Device Group Administrator"; else if (r == 0) rights = "No Rights";
9480 + if ((currentUser._id != userinfo._id) && ((cr & 2) != 0)) { trash = '<a href=# onclick=\'return p30removeMeshFromUser(event,"' + encodeURIComponent(mesh._id) + '")\' title=\"' + "Remove user rights to this device group" + '\" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'; }
9481 + x += '<tr ' + (((++count % 2) == 0) ? 'style=background-color:#DDD' : '') + '><td><div title=\"' + "Device Group" + '\" class=m99></div><div>&nbsp;' + meshname + '<div></div></div></td><td><div style=float:right>' + trash + '</div><div>' + rights + '</div></td></tr>';
9482 + }
9483 }
9484 }
9472 -
9473 - // Draw the timeline
9474 - var x = '', count = 1, date = new Date();
9475 - date.setHours(0, 0, 0, 0);
9476 - for (var i = 0; i < 7; i++) {
9477 - var datavalue = '', start = date.getTime(), end = start + (1000 * 60 * 60 * 24);
9478 - for (var j in timeline2) {
9479 - var block = timeline2[j];
9480 - if (isTimeBlockInside(start, end, block[0], block[1]) == true) {
9481 - var ts = Math.max(start, block[0]);
9482 - var te = Math.min(Math.min(end, block[1]), now);
9483 - var width = Math.round((te - ts) / 112794);
9484 - if (width > 0) {
9485 - var title = powerStateStrings2[block[2]] + ' from ' + printTime(new Date(ts)) + ' to ' + printTime(new Date(te)) + '.';
9486 - datavalue += '<div title="' + title + '" style=display:table-cell;width:' + width + 'px;background-color:' + powerColor(block[2]) + ';height:16px></div>';
9485 + if (count == 1) { x += '<tr><td><div style=padding:6px>&nbsp;<i>' + "No device groups in common" + '</i><div></div></div></td><td></td></tr>'; }
9486 + x += '</tbody></table><br />';
9487 +
9488 + if (usergroups != null) {
9489 + count = 1;
9490 + if ((userinfo.siteadmin & 256) != 0) {
9491 + var userGroupCount = 0, newUserGroup = false;
9492 + for (var i in usergroups) { userGroupCount++; if ((currentUser.links == null) || (currentUser.links[i] == null)) { newUserGroup = true; } }
9493 + if ((userGroupCount > 0) && (newUserGroup)) { x += '<a href=# onclick="return p30showAddUserGroupDialog()" style=cursor:pointer;margin-right:10px><img src=images/icon-addnew.png border=0 height=12 width=12> ' + "Add User Group" + '</a>'; }
9494 + }
9495 + x += '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>' + "User Group Memberships" + '</th><th scope=col style=text-align:left></th></tr>';
9496 + if (currentUser.links) {
9497 + for (var i in currentUser.links) {
9498 + if (i.startsWith('ugrp/')) {
9499 + var r = currentUser.links[i].rights, group = usergroups[i], trash = '';
9500 + var groupname = (group != null)?EscapeHtml(group.name):('<i>' + "Unknown User Group" + '</i>');
9501 + if ((userinfo.siteadmin & 256) != 0) { trash = '<a href=# onclick=\'return p30RemoveUserGroup(event,"' + encodeURIComponent(i) + '")\' title=\"' + "Remove user group membership" + '\" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'; }
9502 + x += '<tr ' + (((++count % 2) == 0) ? 'style=background-color:#DDD' : '') + '><td><div title=\"' + "Device Group" + '\" class=m4></div><div>&nbsp;' + groupname + '<div></div></div></td><td><div style=float:right>' + trash + '</div></td></tr>';
9503 }
9504 }
9505 }
9490 - x += '<tr style=' + (((count % 2) == 0)?'background-color:#DDD':'') + '><td><div>&nbsp;' + printDate(date) + '<div></div></div></td><td><div>' + datavalue + '</div></td></tr>';
9491 - ++count;
9492 - date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day
9506 + if (count == 1) { x += '<tr><td><div style=padding:6px>&nbsp;<i>' + "No user group memberships" + '</i><div></div></div></td><td></td></tr>'; }
9507 + x += '</tbody></table>';
9508 }
9494 - QH('p30html2', '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>' + "Day" + '</th><th scope=col style=text-align:center>' + "7 Day Login State" + '</th></tr>' + x + '</tbody></table>');
9509 +
9510 + QH('p30html2', x);
9511 + }
9512 +
9513 + function p30RemoveUserGroup(button, ugrpid) {
9514 + if (xxdialogMode) return;
9515 + var groupid = decodeURIComponent(ugrpid), group = usergroups[groupid];
9516 + var name = (group != null)?EscapeHtml(group.name):('<i>' + "Unknown" + '</i>');
9517 + setDialogMode(2, "Remove User", 3, p30RemoveUserGroupEx, format("Confirm removal of group {0}?", name), groupid);
9518 + }
9519 +
9520 + function p30RemoveUserGroupEx(b, groupid) {
9521 + meshserver.send({ action: 'removeuserfromusergroup', ugrpid: groupid, userid: currentUser._id });
9522 + }
9523 +
9524 + function p30showAddUserGroupDialog() {
9525 + if (xxdialogMode) return;
9526 + var y = '';
9527 + for (var i in usergroups) { if ((currentUser.links == null) || (currentUser.links[i] == null)) { y += '<option value=' + encodeURIComponent(i) + '>' + EscapeHtml(usergroups[i].name) + '</option>'; } }
9528 + var x = addHtmlValue("User Group", '<div style=width:230px;margin:0;padding:0><select id=dp2groupid style=width:100%>' + y + '</select></div>');
9529 + setDialogMode(2, "Add Membership", 3, p30showAddUserGroupDialogEx, x);
9530 + Q('dp2groupid').focus();
9531 + return false;
9532 + }
9533 +
9534 + function p30showAddUserGroupDialogEx() {
9535 + meshserver.send({ action: 'addusertousergroup', ugrpid: decodeURIComponent(Q('dp2groupid').value), usernames: [ currentUser._id.split('/')[2] ] });
9536 + }
9537 +
9538 + function p30removeMeshFromUser(e, meshid) {
9539 + if (xxdialogMode) return;
9540 + var mesh = meshes[decodeURIComponent(meshid)];
9541 + if (mesh == null) return;
9542 + setDialogMode(2, "Remove Device Group", 3, p30removeMeshFromUserEx, format("Confirm removal of device group {0}?", mesh.name), mesh._id);
9543 + }
9544 +
9545 + function p30removeMeshFromUserEx(b, meshid) {
9546 + meshserver.send({ action: 'removemeshuser', meshid: meshid, userid: currentUser._id });
9547 }
9548
9549 //