From 8a77c78ebbabf98da51e21c177c9a64b5ad035d5 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Mon, 30 Dec 2019 15:38:18 -0800 Subject: [PATCH] Improved user panel, allow device group and user group control. --- meshuser.js | 100 +++-- package.json | 2 +- public/styles/style.css | 8 + translate/translate.json | 778 ++++++++++++++++++++++----------------- views/default.handlebars | 168 ++++++--- 5 files changed, 630 insertions(+), 426 deletions(-) diff --git a/meshuser.js b/meshuser.js index ff936615..2a1b91a9 100644 --- a/meshuser.js +++ b/meshuser.js @@ -1513,7 +1513,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use // Create the new device group var ugrp = { type: 'ugrp', _id: ugrpid, name: command.name, desc: command.desc, domain: domain.id, links: {} }; db.Set(common.escapeLinksFieldName(ugrp)); - //parent.meshes[ugrpid] = ugrp; // Event the device group creation 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 delete xuser.links[group._id]; db.SetUser(xuser); parent.parent.DispatchEvent([xuser._id], obj, 'resubscribe'); + + // Notify user change + var targets = ['*', 'server-users', user._id, xuser._id]; + 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 }; + 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. + parent.parent.DispatchEvent(targets, obj, event); } } } @@ -1571,7 +1576,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use if ((err != null) || (groups.length != 1)) return; var group = common.unEscapeLinksFieldName(groups[0]), change = ''; - 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; } + 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; } 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; } if (change != '') { db.Set(common.escapeLinksFieldName(group)); @@ -1609,22 +1614,28 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use var unknownUsers = [], addedCount = 0, failCount = 0; for (var i in command.usernames) { // Check if the user exists - var newuserid = 'user/' + domain.id + '/' + command.usernames[i].toLowerCase(), newuser = parent.users[newuserid]; - if (newuser != null) { + var chguserid = 'user/' + domain.id + '/' + command.usernames[i].toLowerCase(), chguser = parent.users[chguserid]; + if (chguser != null) { // Add mesh to user - if (newuser.links == null) { newuser.links = {}; } - newuser.links[group._id] = { rights: 1 }; - db.SetUser(newuser); - parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe'); + if (chguser.links == null) { chguser.links = {}; } + chguser.links[group._id] = { rights: 1 }; + db.SetUser(chguser); + parent.parent.DispatchEvent([chguser._id], obj, 'resubscribe'); + + // Notify user change + var targets = ['*', 'server-users', user._id, chguser._id]; + 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 }; + 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. + parent.parent.DispatchEvent(targets, obj, event); // Add a user to the mesh - group.links[newuserid] = { userid: newuser.id, name: newuser.name, rights: 1 }; + group.links[chguserid] = { userid: chguser.id, name: chguser.name, rights: 1 }; db.Set(common.escapeLinksFieldName(group)); - // Notify mesh change - 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 }; + // Notify user group change + 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 }; 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. - parent.parent.DispatchEvent(['*', group._id, user._id, newuserid], obj, event); + parent.parent.DispatchEvent(['*', group._id, user._id, chguserid], obj, event); addedCount++; } else { unknownUsers.push(command.usernames[i]); @@ -1661,27 +1672,42 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use } db.Get(command.ugrpid, function (err, groups) { - if ((err != null) || (groups.length != 1)) { try { ws.send(JSON.stringify({ action: 'addusertousergroup', responseid: command.responseid, result: 'Invalid groupid' })); } catch (ex) { } return; } - var group = common.unEscapeLinksFieldName(groups[0]); - if (group.links == null) { group.links = {}; } + //if ((err != null) || (groups.length != 1)) { try { ws.send(JSON.stringify({ action: 'addusertousergroup', responseid: command.responseid, result: 'Invalid groupid' })); } catch (ex) { } return; } + var group = null; + if ((err == null) && (groups.length == 1)) { group = common.unEscapeLinksFieldName(groups[0]); } // Check if the user exists - newuser = parent.users[command.userid]; - if (newuser != null) { + var chguser = parent.users[command.userid]; + if (chguser != null) { var change = false; - if ((newuser.links != null) && (newuser.links[command.ugrpid] != null)) { change = true; delete newuser.links[command.ugrpid]; } - db.SetUser(newuser); - parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe'); + if ((chguser.links != null) && (chguser.links[command.ugrpid] != null)) { + change = true; + delete chguser.links[command.ugrpid]; - // Remove the user from the group - if ((group.links != null) && (group.links[command.userid] != null)) { change = true; delete group.links[command.userid]; } - db.Set(common.escapeLinksFieldName(group)); + // Notify user change + var targets = ['*', 'server-users', user._id, chguser._id]; + 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 }; + 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. + parent.parent.DispatchEvent(targets, obj, event); - // Notify mesh change - if (change) { - 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 }; - 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. - parent.parent.DispatchEvent(['*', group._id, user._id, newuserid], obj, event); + db.SetUser(chguser); + parent.parent.DispatchEvent([chguser._id], obj, 'resubscribe'); + } + + if (group != null) { + // Remove the user from the group + if ((group.links != null) && (group.links[command.userid] != null)) { + change = true; + delete group.links[command.userid]; + db.Set(common.escapeLinksFieldName(group)); + + // Notify user group change + if (change) { + 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 }; + 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. + parent.parent.DispatchEvent(['*', group._id, user._id, chguser._id], obj, event); + } + } } } }); @@ -2004,6 +2030,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use delete xuser.links[mesh._id]; db.SetUser(xuser); parent.parent.DispatchEvent([xuser._id], obj, 'resubscribe'); + + // Notify user change + var targets = ['*', 'server-users', user._id, xuser._id]; + 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 }; + 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. + parent.parent.DispatchEvent(targets, obj, event); } } @@ -2084,6 +2116,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use db.SetUser(newuser); parent.parent.DispatchEvent([newuser._id], obj, 'resubscribe'); + // Notify user change + var targets = ['*', 'server-users', user._id, newuser._id]; + 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 }; + 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. + parent.parent.DispatchEvent(targets, obj, event); + // Add a user to the mesh mesh.links[newuserid] = { userid: newuser.id, name: newuser.name, rights: command.meshadmin }; db.Set(common.escapeLinksFieldName(mesh)); @@ -2141,6 +2179,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use delete deluser.links[command.meshid]; db.Set(deluser); parent.parent.DispatchEvent([deluser._id], obj, 'resubscribe'); + + // Notify user change + var targets = ['*', 'server-users', user._id, deluser._id]; + 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 }; + 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. + parent.parent.DispatchEvent(targets, obj, event); } } diff --git a/package.json b/package.json index 1a8db636..c7b427d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "0.4.6-t", + "version": "0.4.6-u", "keywords": [ "Remote Management", "Intel AMT", diff --git a/public/styles/style.css b/public/styles/style.css index f34b4ed2..ff6c103f 100644 --- a/public/styles/style.css +++ b/public/styles/style.css @@ -1371,6 +1371,14 @@ a { float: left; } +.m99 { + background: url(../images/meshicon16.png); + height: 16px; + width: 16px; + border: none; + float: left; +} + .si1 { background: url(../images/icons16.png) 0px 0px; height: 16px; diff --git a/translate/translate.json b/translate/translate.json index c371357f..d2cbe76a 100644 --- a/translate/translate.json +++ b/translate/translate.json @@ -167,7 +167,7 @@ "nl": " Gebruikers moeten inloggen bij de server voordat ze kunnen worden toegevoegd aan een apparaatgroep.", "xloc": [ "default.handlebars->23->1058", - "default.handlebars->23->1264" + "default.handlebars->23->1266" ] }, { @@ -262,7 +262,7 @@ "cs": ", ", "nl": ", ", "xloc": [ - "default.handlebars->23->1101", + "default.handlebars->23->1103", "default-mobile.handlebars->9->330" ] }, @@ -379,8 +379,8 @@ "nl": "...", "xloc": [ "default.handlebars->23->626", - "default.handlebars->23->1123", - "default.handlebars->23->1320", + "default.handlebars->23->1125", + "default.handlebars->23->1342", "default-mobile.handlebars->9->67", "default-mobile.handlebars->9->243" ] @@ -403,7 +403,7 @@ "ja": "1つのアクティブなセッション", "nl": "1 actieve sessie", "xloc": [ - "default.handlebars->23->1304" + "default.handlebars->23->1306" ] }, { @@ -414,7 +414,7 @@ "ja": "1バイト", "nl": "1 byte", "xloc": [ - "default.handlebars->23->1140", + "default.handlebars->23->1142", "default-mobile.handlebars->9->77", "default-mobile.handlebars->9->334" ] @@ -440,7 +440,7 @@ "ja": "1グループ", "nl": "1 groep", "xloc": [ - "default.handlebars->23->1288" + "default.handlebars->23->1290" ] }, { @@ -476,7 +476,7 @@ "ja": "さらに1人のユーザーが表示されていません。検索ボックスを使用してユーザーを検索してください...", "nl": "1 gebruiker niet getoond, gebruik de zoekfunctie om gebruikers te vinden...", "xloc": [ - "default.handlebars->23->1175" + "default.handlebars->23->1177" ] }, { @@ -498,7 +498,7 @@ "ja": "1セッション", "nl": "1 sessie", "xloc": [ - "default.handlebars->23->1179" + "default.handlebars->23->1181" ] }, { @@ -985,7 +985,7 @@ "ja": "サーバーファイルへのアクセス", "nl": "Toegang tot de server bestanden", "xloc": [ - "default.handlebars->23->1269" + "default.handlebars->23->1271" ] }, { @@ -1278,7 +1278,9 @@ "ja": "デバイスグループを追加", "nl": "Apparaatgroep toevoegen", "xloc": [ - "default.handlebars->23->205" + "default.handlebars->23->205", + "default.handlebars->23->1080", + "default.handlebars->23->1319" ] }, { @@ -1379,7 +1381,7 @@ "nl": "Gebruikers toevoegen", "xloc": [ "default.handlebars->23->990", - "default.handlebars->23->1249" + "default.handlebars->23->1251" ] }, { @@ -1389,7 +1391,7 @@ "ja": "ユーザーをデバイスグループに追加する", "nl": "Gebruikers toevoegen aan apparaatgroep", "xloc": [ - "default.handlebars->23->1078" + "default.handlebars->23->1079" ] }, { @@ -1439,7 +1441,7 @@ "ja": "管理レルム", "nl": "Beheerdersgebied", "xloc": [ - "default.handlebars->23->1292" + "default.handlebars->23->1294" ] }, { @@ -1449,7 +1451,7 @@ "ja": "管理レルム", "nl": "Administratieve gebieden", "xloc": [ - "default.handlebars->23->1224" + "default.handlebars->23->1226" ] }, { @@ -1459,7 +1461,7 @@ "cs": "Správce", "nl": "Beheerder", "xloc": [ - "default.handlebars->23->1186" + "default.handlebars->23->1188" ] }, { @@ -1483,8 +1485,8 @@ "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->1", "default.handlebars->23->184", "default.handlebars->23->371", - "default.handlebars->23->1111", - "default.handlebars->23->1117", + "default.handlebars->23->1113", + "default.handlebars->23->1119", "default-mobile.handlebars->9->121", "default-mobile.handlebars->9->174", "default-mobile.handlebars->9->190" @@ -1519,7 +1521,7 @@ "ja": "エージェントコンソール", "nl": "Agent console", "xloc": [ - "default.handlebars->23->1085", + "default.handlebars->23->1087", "default-mobile.handlebars->9->315" ] }, @@ -1592,7 +1594,7 @@ "ja": "エージェント", "nl": "Agents", "xloc": [ - "default.handlebars->23->1357" + "default.handlebars->23->1379" ] }, { @@ -1649,7 +1651,7 @@ "nl": "Gebruikers toestaan deze apparaatgroep en apparaten in deze groep te beheren.", "xloc": [ "default.handlebars->23->1057", - "default.handlebars->23->1263" + "default.handlebars->23->1265" ] }, { @@ -2058,7 +2060,7 @@ "cs": "Opravdu chcete {0} zásuvný modul: {1}", "nl": "Weet u zeker dat u de plug-in {0} wilt gebruiken: {1}", "xloc": [ - "default.handlebars->23->1392" + "default.handlebars->23->1414" ] }, { @@ -2142,7 +2144,7 @@ "cs": "Aplikace pro ověřování se", "nl": "Verificatie-app", "xloc": [ - "default.handlebars->23->1293" + "default.handlebars->23->1295" ] }, { @@ -2334,7 +2336,7 @@ "cs": "Záložní kódy", "nl": "Back-up codes", "xloc": [ - "default.handlebars->23->1295" + "default.handlebars->23->1297" ] }, { @@ -2416,7 +2418,7 @@ "nl": "Uitzending", "xloc": [ "default.handlebars->container->column_l->p4->3->1->0->3->1", - "default.handlebars->23->1247" + "default.handlebars->23->1249" ] }, { @@ -2426,7 +2428,7 @@ "cs": "Zaslat hromadnou zprávu všem připojeným uživatelům.", "nl": "Verzend een bericht naar alle verbonden gebruikers.", "xloc": [ - "default.handlebars->23->1208" + "default.handlebars->23->1210" ] }, { @@ -2437,7 +2439,7 @@ "cs": "Hromadná zpráva", "nl": "Bericht uitzenden", "xloc": [ - "default.handlebars->23->1209" + "default.handlebars->23->1211" ] }, { @@ -2468,7 +2470,7 @@ "cs": "Chyba volání", "nl": "Oproepfout", "xloc": [ - "default.handlebars->23->1393" + "default.handlebars->23->1415" ] }, { @@ -2558,7 +2560,7 @@ "ja": "{0}のメールを変更", "nl": "Verander e-mail voor {0}", "xloc": [ - "default.handlebars->23->1308" + "default.handlebars->23->1310" ] }, { @@ -2581,7 +2583,7 @@ "nl": "Verander wachtwoord", "xloc": [ "default.handlebars->23->922", - "default.handlebars->23->1303", + "default.handlebars->23->1305", "default-mobile.handlebars->9->49" ] }, @@ -2603,7 +2605,7 @@ "cs": "Změnit heslo pro {0}", "nl": "Verander wachtwoord voor {0}", "xloc": [ - "default.handlebars->23->1315" + "default.handlebars->23->1317" ] }, { @@ -2663,7 +2665,7 @@ "cs": "Chat", "nl": "Chat", "xloc": [ - "default.handlebars->23->1178" + "default.handlebars->23->1180" ] }, { @@ -2673,8 +2675,8 @@ "cs": "Chat a upozornění", "nl": "Chat & Melden", "xloc": [ - "default.handlebars->23->1076", - "default.handlebars->23->1095", + "default.handlebars->23->1077", + "default.handlebars->23->1097", "default-mobile.handlebars->9->307", "default-mobile.handlebars->9->325" ] @@ -2727,7 +2729,7 @@ "nl": "Controleren...", "xloc": [ "default.handlebars->23->696", - "default.handlebars->23->1389" + "default.handlebars->23->1411" ] }, { @@ -2822,7 +2824,7 @@ "cs": "CIRA Server", "nl": "CIRA Server", "xloc": [ - "default.handlebars->23->1383" + "default.handlebars->23->1405" ] }, { @@ -2832,7 +2834,7 @@ "cs": "příkazy CIRA serveru", "nl": "CIRA Server opdrachten", "xloc": [ - "default.handlebars->23->1384" + "default.handlebars->23->1406" ] }, { @@ -2858,7 +2860,7 @@ "default.handlebars->23->647", "default.handlebars->23->649", "default.handlebars->23->651", - "default.handlebars->23->1155", + "default.handlebars->23->1157", "default-mobile.handlebars->9->28", "default-mobile.handlebars->9->91", "default-mobile.handlebars->9->262", @@ -3002,7 +3004,7 @@ "cs": "Potvrdit {0} z {1} záznam{2} do tohoto umístění?", "nl": "Bevestig {0} van {1} bestand {2} naar deze locatie?", "xloc": [ - "default.handlebars->23->1150", + "default.handlebars->23->1152", "default-mobile.handlebars->9->86" ] }, @@ -3017,7 +3019,7 @@ "default.handlebars->23->548", "default.handlebars->23->557", "default.handlebars->23->1038", - "default.handlebars->23->1259", + "default.handlebars->23->1261", "default-mobile.handlebars->9->220", "default-mobile.handlebars->9->287" ] @@ -3082,7 +3084,7 @@ "cs": "Potvrdit přepsání?", "nl": "Bevestig overschrijven?", "xloc": [ - "default.handlebars->23->1149" + "default.handlebars->23->1151" ] }, { @@ -3103,8 +3105,8 @@ "cs": "Potvrdit odstranění uživatele {0}?", "nl": "Bevestig de verwijdering van gebruiker {0}?", "xloc": [ - "default.handlebars->23->1104", - "default.handlebars->23->1262", + "default.handlebars->23->1106", + "default.handlebars->23->1264", "default-mobile.handlebars->9->333" ] }, @@ -3212,7 +3214,7 @@ "cs": "Počitadlo připojení", "nl": "Aantal verbindingen", "xloc": [ - "default.handlebars->23->1356" + "default.handlebars->23->1378" ] }, { @@ -3222,7 +3224,7 @@ "cs": "Předávání (relay) spojení", "nl": "Verbindings Relay", "xloc": [ - "default.handlebars->23->1382" + "default.handlebars->23->1404" ] }, { @@ -3245,7 +3247,7 @@ "default.handlebars->container->column_l->p21->3->1->meshConnChartDiv->1", "default.handlebars->23->202", "default.handlebars->23->482", - "default.handlebars->23->1120", + "default.handlebars->23->1122", "default-mobile.handlebars->9->195" ] }, @@ -3288,7 +3290,7 @@ "cs": "Cookie enkodér", "nl": "Cookie encoder", "xloc": [ - "default.handlebars->23->1370" + "default.handlebars->23->1392" ] }, { @@ -3311,7 +3313,7 @@ "cs": "kopírovat", "nl": "kopie", "xloc": [ - "default.handlebars->23->1153", + "default.handlebars->23->1155", "default-mobile.handlebars->9->89" ] }, @@ -3464,7 +3466,7 @@ "cs": "Hlavní server", "nl": "Core Server", "xloc": [ - "default.handlebars->23->1369" + "default.handlebars->23->1391" ] }, { @@ -3484,7 +3486,7 @@ "cs": "vytížení procesoru v uplynulých 15 minutách", "nl": "CPU-belasting in de afgelopen 15 minuten", "xloc": [ - "default.handlebars->23->1352" + "default.handlebars->23->1374" ] }, { @@ -3494,7 +3496,7 @@ "cs": "vyžítení procesoru v uplynulých 5 minutách", "nl": "CPU-belasting in de afgelopen 5 minuten", "xloc": [ - "default.handlebars->23->1351" + "default.handlebars->23->1373" ] }, { @@ -3504,7 +3506,7 @@ "ja": "直前のCPU負荷", "nl": "CPU-belasting in de laatste minuut", "xloc": [ - "default.handlebars->23->1350" + "default.handlebars->23->1372" ] }, { @@ -3546,7 +3548,7 @@ "cs": "Vytvořit účet", "nl": "Account aanmaken", "xloc": [ - "default.handlebars->23->1220", + "default.handlebars->23->1222", "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1", "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1" ] @@ -3568,7 +3570,7 @@ "cs": "Vytvořit více účtu najednou pomocí importu JSON souboru s následujícím formátem:", "nl": "Maak meerdere accounts tegelijk door een JSON-bestand met de volgende indeling te importeren:", "xloc": [ - "default.handlebars->23->1191" + "default.handlebars->23->1193" ] }, { @@ -3589,7 +3591,7 @@ "cs": "Vytváření", "nl": "Aanmaken", "xloc": [ - "default.handlebars->23->1281" + "default.handlebars->23->1283" ] }, { @@ -3630,8 +3632,8 @@ "cs": "CSV formát", "nl": "CSV Formaat", "xloc": [ - "default.handlebars->23->1161", - "default.handlebars->23->1200" + "default.handlebars->23->1163", + "default.handlebars->23->1202" ] }, { @@ -3756,8 +3758,7 @@ "ja": "日", "nl": "Dag", "xloc": [ - "default.handlebars->23->532", - "default.handlebars->23->1317" + "default.handlebars->23->532" ] }, { @@ -3792,7 +3793,7 @@ "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->container->dialog->idx_dlgButtonBar->5", "default.handlebars->23->632", - "default.handlebars->23->1144", + "default.handlebars->23->1146", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->9->81", @@ -3885,7 +3886,7 @@ "nl": "Verwijder geselecteerde item?", "xloc": [ "default.handlebars->23->634", - "default.handlebars->23->1146", + "default.handlebars->23->1148", "default-mobile.handlebars->9->83", "default-mobile.handlebars->9->251" ] @@ -3897,7 +3898,7 @@ "ja": "ユーザーを削除{0}", "nl": "Verwijder gebruiker {0}", "xloc": [ - "default.handlebars->23->1316" + "default.handlebars->23->1318" ] }, { @@ -3908,7 +3909,7 @@ "nl": "Verwijder {0} gelecteerde items?", "xloc": [ "default.handlebars->23->633", - "default.handlebars->23->1145", + "default.handlebars->23->1147", "default-mobile.handlebars->9->82", "default-mobile.handlebars->9->250" ] @@ -3977,10 +3978,10 @@ "default.handlebars->23->934", "default.handlebars->23->958", "default.handlebars->23->1041", - "default.handlebars->23->1240", - "default.handlebars->23->1244", + "default.handlebars->23->1242", "default.handlebars->23->1246", - "default.handlebars->23->1256", + "default.handlebars->23->1248", + "default.handlebars->23->1258", "default-mobile.handlebars->9->60", "default-mobile.handlebars->9->141", "default-mobile.handlebars->9->142", @@ -4122,7 +4123,7 @@ "nl": "Apparaat verbindingen.", "xloc": [ "default.handlebars->23->902", - "default.handlebars->23->1106" + "default.handlebars->23->1108" ] }, { @@ -4133,7 +4134,7 @@ "nl": "Apparaat verbroken.", "xloc": [ "default.handlebars->23->903", - "default.handlebars->23->1107" + "default.handlebars->23->1109" ] }, { @@ -4153,7 +4154,7 @@ "ja": "デバイスグループユーザー", "nl": "Apparaatgroep gebruiker", "xloc": [ - "default.handlebars->23->1102", + "default.handlebars->23->1104", "default-mobile.handlebars->9->331" ] }, @@ -4165,8 +4166,8 @@ "nl": "Apparaatgroepen", "xloc": [ "default.handlebars->container->column_l->p2->9", - "default.handlebars->23->1290", - "default.handlebars->23->1343", + "default.handlebars->23->1292", + "default.handlebars->23->1365", "default-mobile.handlebars->container->page_content->column_l->p3->p3info->1->3" ] }, @@ -4648,7 +4649,7 @@ "cs": "Stáhnout si seznam událostí v níže uvedeném formátu.", "nl": "Download de lijst met gebeurtenissen in een van de onderstaande bestandsindelingen.", "xloc": [ - "default.handlebars->23->1160" + "default.handlebars->23->1162" ] }, { @@ -4658,7 +4659,7 @@ "cs": "Stáhnout si seznam uživatelů v níže uvedeném formátu.", "nl": "Download de lijst met gebruikers in een van de onderstaande bestandsindelingen.", "xloc": [ - "default.handlebars->23->1199" + "default.handlebars->23->1201" ] }, { @@ -4771,8 +4772,8 @@ "nl": "Bewerk apparaatgroep", "xloc": [ "default.handlebars->23->1042", - "default.handlebars->23->1062", - "default.handlebars->23->1081", + "default.handlebars->23->1063", + "default.handlebars->23->1083", "default-mobile.handlebars->9->291", "default-mobile.handlebars->9->293", "default-mobile.handlebars->9->311" @@ -4805,7 +4806,7 @@ "ja": "デバイスノートの編集", "nl": "Apparaatnotities bewerken", "xloc": [ - "default.handlebars->23->1074", + "default.handlebars->23->1075", "default-mobile.handlebars->9->305" ] }, @@ -4830,7 +4831,7 @@ "cs": "Upravit poznámky", "nl": "Notities bewerken", "xloc": [ - "default.handlebars->23->1088", + "default.handlebars->23->1090", "default-mobile.handlebars->9->318" ] }, @@ -4851,7 +4852,7 @@ "cs": "Upravit oprávnění uživatele pro skupinu zařízení", "nl": "Gebruikersrechten apparaatgroep bewerken", "xloc": [ - "default.handlebars->23->1079" + "default.handlebars->23->1081" ] }, { @@ -4862,10 +4863,10 @@ "nl": "E-mail", "xloc": [ "default.handlebars->23->283", - "default.handlebars->23->1211", - "default.handlebars->23->1277", - "default.handlebars->23->1278", - "default.handlebars->23->1306", + "default.handlebars->23->1213", + "default.handlebars->23->1279", + "default.handlebars->23->1280", + "default.handlebars->23->1308", "default-mobile.handlebars->9->37" ] }, @@ -4887,7 +4888,7 @@ "ja": "メールが確認されました", "nl": "E-mail is geverifieerd", "xloc": [ - "default.handlebars->23->1274" + "default.handlebars->23->1276" ] }, { @@ -4897,7 +4898,7 @@ "ja": "メールが確認されました。", "nl": "E-mail is geverifieerd.", "xloc": [ - "default.handlebars->23->1217" + "default.handlebars->23->1219" ] }, { @@ -4907,7 +4908,7 @@ "ja": "メールが確認されていません", "nl": "E-mail is niet geverifieerd", "xloc": [ - "default.handlebars->23->1275" + "default.handlebars->23->1277" ] }, { @@ -5117,7 +5118,7 @@ "cs": "Zadejte seznam správních oblastí (oddělovaných čárkou).", "nl": "Voer een door komma's gescheiden lijst met beheerdersnamen in.", "xloc": [ - "default.handlebars->23->1221" + "default.handlebars->23->1223" ] }, { @@ -5250,7 +5251,7 @@ "cs": "Export seznamu událostí", "nl": "Gebeurtenissenlijst exporteren", "xloc": [ - "default.handlebars->23->1165" + "default.handlebars->23->1167" ] }, { @@ -5285,8 +5286,8 @@ "cs": "eventslist.csv", "nl": "eventslist.csv", "xloc": [ - "default.handlebars->23->1162", - "default.handlebars->23->1167" + "default.handlebars->23->1164", + "default.handlebars->23->1169" ] }, { @@ -5296,8 +5297,8 @@ "cs": "eventslist.json", "nl": "eventslist.json", "xloc": [ - "default.handlebars->23->1164", - "default.handlebars->23->1168" + "default.handlebars->23->1166", + "default.handlebars->23->1170" ] }, { @@ -5548,8 +5549,8 @@ "cs": "Vynutit reset hesla při dalším přihlášení.", "nl": "Forceer wachtwoord opnieuw instellen bij de volgende aanmelding.", "xloc": [ - "default.handlebars->23->1215", - "default.handlebars->23->1313" + "default.handlebars->23->1217", + "default.handlebars->23->1315" ] }, { @@ -5602,8 +5603,8 @@ "cs": "Volné", "nl": "Vrij", "xloc": [ - "default.handlebars->23->1324", - "default.handlebars->23->1326" + "default.handlebars->23->1346", + "default.handlebars->23->1348" ] }, { @@ -5614,7 +5615,7 @@ "cs": "volné", "nl": "vrij", "xloc": [ - "default.handlebars->23->1354" + "default.handlebars->23->1376" ] }, { @@ -5736,9 +5737,8 @@ "nl": "Volledige beheerder", "xloc": [ "default.handlebars->23->943", - "default.handlebars->23->1005", - "default.handlebars->23->1061", - "default.handlebars->23->1226", + "default.handlebars->23->1062", + "default.handlebars->23->1228", "default-mobile.handlebars->9->64", "default-mobile.handlebars->9->283", "default-mobile.handlebars->9->292", @@ -5753,7 +5753,7 @@ "ja": "完全な管理者", "nl": "Volledige beheerder", "xloc": [ - "default.handlebars->23->1270" + "default.handlebars->23->1272" ] }, { @@ -5764,7 +5764,7 @@ "ja": "完全な管理者(すべての権利)", "nl": "Volledige beheerder (met alle rechten)", "xloc": [ - "default.handlebars->23->1080" + "default.handlebars->23->1082" ] }, { @@ -6057,7 +6057,7 @@ "cs": "Oprávnění skupiny pro uživatele {0}.", "nl": "Groepsrechten voor gebruiker {0}.", "xloc": [ - "default.handlebars->23->1060" + "default.handlebars->23->1061" ] }, { @@ -6211,7 +6211,7 @@ "cs": "Drží se {0} zaznamů{1} pro {2}", "nl": "Houd {0} item {1} vast voor {2}", "xloc": [ - "default.handlebars->23->1152", + "default.handlebars->23->1154", "default-mobile.handlebars->9->88" ] }, @@ -6375,7 +6375,7 @@ "cs": "identif., jméno, e-mail, vytvoření, poslední přihlášení, skupiny, faktory ověrování", "nl": "id, naam, e-mail, aanmaken, laatste inlog, groepen, authenticatiefactors", "xloc": [ - "default.handlebars->23->1205" + "default.handlebars->23->1207" ] }, { @@ -6521,10 +6521,10 @@ "cs": "Intel AMT", "nl": "Intel AMT", "xloc": [ - "default.handlebars->23->1112", - "default.handlebars->23->1118", - "default.handlebars->23->1361", - "default.handlebars->23->1381" + "default.handlebars->23->1114", + "default.handlebars->23->1120", + "default.handlebars->23->1383", + "default.handlebars->23->1403" ] }, { @@ -6711,7 +6711,7 @@ "nl": "Intel® AMT desktop- en seriële gebeurtenissen.", "xloc": [ "default.handlebars->23->904", - "default.handlebars->23->1108" + "default.handlebars->23->1110" ] }, { @@ -6950,8 +6950,8 @@ "cs": "Neplatný formát JSON souboru.", "nl": "Ongeldige JSON-bestandsindeling.", "xloc": [ - "default.handlebars->23->1196", - "default.handlebars->23->1198" + "default.handlebars->23->1198", + "default.handlebars->23->1200" ] }, { @@ -6961,7 +6961,7 @@ "cs": "Neplatný JSON soubor: {0}.", "nl": "Ongeldig JSON-bestand: {0}.", "xloc": [ - "default.handlebars->23->1194" + "default.handlebars->23->1196" ] }, { @@ -7144,8 +7144,8 @@ "cs": "JSON formát", "nl": "JSON-indeling", "xloc": [ - "default.handlebars->23->1163", - "default.handlebars->23->1202" + "default.handlebars->23->1165", + "default.handlebars->23->1204" ] }, { @@ -7427,7 +7427,7 @@ "cs": "Poslední přístup", "nl": "Laatste toegang", "xloc": [ - "default.handlebars->23->1171" + "default.handlebars->23->1173" ] }, { @@ -7462,7 +7462,7 @@ "ja": "最終変更:{0}", "nl": "Laatst gewijzigd: {0}", "xloc": [ - "default.handlebars->23->1286" + "default.handlebars->23->1288" ] }, { @@ -7495,7 +7495,7 @@ "cs": "Poslední přihlášení", "nl": "Laatste inlog", "xloc": [ - "default.handlebars->23->1282" + "default.handlebars->23->1284" ] }, { @@ -7505,7 +7505,7 @@ "cs": "Poslední přihlášení: {0}", "nl": "Laatste inlog: {0}", "xloc": [ - "default.handlebars->23->1181" + "default.handlebars->23->1183" ] }, { @@ -7595,7 +7595,7 @@ "cs": "Méně", "nl": "Minder", "xloc": [ - "default.handlebars->23->1395" + "default.handlebars->23->1417" ] }, { @@ -7638,7 +7638,7 @@ "cs": "Omezený vstup", "nl": "Beperkte invoer", "xloc": [ - "default.handlebars->23->1093", + "default.handlebars->23->1095", "default-mobile.handlebars->9->323" ] }, @@ -7649,7 +7649,7 @@ "cs": "Pouze omezený vstup", "nl": "Alleen beperkte invoer", "xloc": [ - "default.handlebars->23->1067", + "default.handlebars->23->1068", "default-mobile.handlebars->9->298" ] }, @@ -7662,7 +7662,7 @@ "nl": "Link", "xloc": [ "default.handlebars->container->column_l->p42->p42tbl->1->0->4", - "default.handlebars->23->1124", + "default.handlebars->23->1126", "default-mobile.handlebars->9->68" ] }, @@ -7933,7 +7933,7 @@ "ja": "アカウントをロック", "nl": "Account vergrendelen", "xloc": [ - "default.handlebars->23->1232" + "default.handlebars->23->1234" ] }, { @@ -7944,7 +7944,7 @@ "ja": "ロック済み", "nl": "Vergrendeld", "xloc": [ - "default.handlebars->23->1182" + "default.handlebars->23->1184" ] }, { @@ -7955,7 +7955,7 @@ "cs": "Uzamknutý účet", "nl": "Vergrendeld account", "xloc": [ - "default.handlebars->23->1267" + "default.handlebars->23->1269" ] }, { @@ -8111,7 +8111,7 @@ "cs": "Zprávy hlavního serveru", "nl": "Hoofdserver berichten", "xloc": [ - "default.handlebars->23->1372" + "default.handlebars->23->1394" ] }, { @@ -8184,8 +8184,8 @@ "ja": "デバイスグループコンピューターの管理", "nl": "Beheer apparaatgroep computers", "xloc": [ - "default.handlebars->23->1064", - "default.handlebars->23->1083", + "default.handlebars->23->1065", + "default.handlebars->23->1085", "default-mobile.handlebars->9->295", "default-mobile.handlebars->9->313" ] @@ -8197,8 +8197,8 @@ "ja": "デバイスグループユーザーの管理", "nl": "Beheer apparaatgroep gebruikers", "xloc": [ - "default.handlebars->23->1063", - "default.handlebars->23->1082", + "default.handlebars->23->1064", + "default.handlebars->23->1084", "default-mobile.handlebars->9->294", "default-mobile.handlebars->9->312" ] @@ -8231,7 +8231,7 @@ "ja": "ユーザーを管理する", "nl": "Beheer gebruikers", "xloc": [ - "default.handlebars->23->1230" + "default.handlebars->23->1232" ] }, { @@ -8264,7 +8264,7 @@ "cs": "Vedoucí", "nl": "Beheerder", "xloc": [ - "default.handlebars->23->1187" + "default.handlebars->23->1189" ] }, { @@ -8355,7 +8355,7 @@ "ja": "メガバイト", "nl": "Megabytes", "xloc": [ - "default.handlebars->23->1362" + "default.handlebars->23->1384" ] }, { @@ -8368,7 +8368,7 @@ "xloc": [ "default.handlebars->container->column_l->p40->3->1->p40type->3", "default.handlebars->23->75", - "default.handlebars->23->1353" + "default.handlebars->23->1375" ] }, { @@ -8395,7 +8395,7 @@ "ja": "メッシュエージェントコンソール", "nl": "Mesh Agent Console", "xloc": [ - "default.handlebars->23->1071", + "default.handlebars->23->1072", "default-mobile.handlebars->9->302" ] }, @@ -8439,7 +8439,7 @@ "cs": "MeshAgent provoz", "nl": "MeshAgent verkeer", "xloc": [ - "default.handlebars->23->1374" + "default.handlebars->23->1396" ] }, { @@ -8448,7 +8448,7 @@ "cs": "MeshAgent aktualizace", "nl": "MeshAgent update", "xloc": [ - "default.handlebars->23->1375" + "default.handlebars->23->1397" ] }, { @@ -8509,7 +8509,7 @@ "cs": "MeshCentral Server Peering", "nl": "MeshCentral Server Peering", "xloc": [ - "default.handlebars->23->1373" + "default.handlebars->23->1395" ] }, { @@ -8594,7 +8594,7 @@ "cs": "Odesílatel", "nl": "Bericht Dispatcher", "xloc": [ - "default.handlebars->23->1371" + "default.handlebars->23->1393" ] }, { @@ -8667,7 +8667,7 @@ "ja": "もっと", "nl": "Meer", "xloc": [ - "default.handlebars->23->1394" + "default.handlebars->23->1416" ] }, { @@ -8688,7 +8688,7 @@ "cs": "přesun", "nl": "verplaatsen", "xloc": [ - "default.handlebars->23->1154", + "default.handlebars->23->1156", "default-mobile.handlebars->9->90" ] }, @@ -8981,13 +8981,13 @@ "default.handlebars->23->930", "default.handlebars->23->957", "default.handlebars->23->1040", - "default.handlebars->23->1169", - "default.handlebars->23->1210", - "default.handlebars->23->1236", - "default.handlebars->23->1239", - "default.handlebars->23->1243", + "default.handlebars->23->1171", + "default.handlebars->23->1212", + "default.handlebars->23->1238", + "default.handlebars->23->1241", "default.handlebars->23->1245", - "default.handlebars->23->1255", + "default.handlebars->23->1247", + "default.handlebars->23->1257", "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea3->deskarea3x->DeskTools->5->1->1", "default-mobile.handlebars->9->56", "default-mobile.handlebars->9->135", @@ -9014,7 +9014,7 @@ "cs": "Jméno1, Jméno2, Jméno3", "nl": "Naam1, Naam2, Naam3", "xloc": [ - "default.handlebars->23->1223" + "default.handlebars->23->1225" ] }, { @@ -9120,7 +9120,7 @@ "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->23->630", - "default.handlebars->23->1142", + "default.handlebars->23->1144", "default-mobile.handlebars->9->79", "default-mobile.handlebars->9->247" ] @@ -9251,8 +9251,8 @@ "nl": "Geen gebeurtenissen gevonden", "xloc": [ "default.handlebars->23->664", - "default.handlebars->23->1159", - "default.handlebars->23->1319" + "default.handlebars->23->1161", + "default.handlebars->23->1341" ] }, { @@ -9263,7 +9263,7 @@ "cs": "Žádný přístup k souborům", "nl": "Geen bestandstoegang", "xloc": [ - "default.handlebars->23->1069", + "default.handlebars->23->1070", "default-mobile.handlebars->9->300" ] }, @@ -9275,7 +9275,7 @@ "cs": "Žádné soubory", "nl": "Geen bestanden", "xloc": [ - "default.handlebars->23->1091", + "default.handlebars->23->1093", "default-mobile.handlebars->9->321" ] }, @@ -9296,8 +9296,8 @@ "cs": "Žádné Intel® AMT", "nl": "Geen Intel® AMT", "xloc": [ - "default.handlebars->23->1070", - "default.handlebars->23->1092", + "default.handlebars->23->1071", + "default.handlebars->23->1094", "default-mobile.handlebars->9->301", "default-mobile.handlebars->9->322" ] @@ -9359,7 +9359,7 @@ "cs": "Žádná nová skupina zařízení", "nl": "Geen nieuwe apparaatgroepen", "xloc": [ - "default.handlebars->23->1233" + "default.handlebars->23->1235" ] }, { @@ -9402,7 +9402,8 @@ "xloc": [ "default.handlebars->23->944", "default.handlebars->23->1006", - "default.handlebars->23->1097", + "default.handlebars->23->1099", + "default.handlebars->23->1324", "default-mobile.handlebars->9->65", "default-mobile.handlebars->9->284", "default-mobile.handlebars->9->327" @@ -9415,7 +9416,7 @@ "cs": "Žádná práva k serveru", "nl": "Geen server rechten", "xloc": [ - "default.handlebars->23->1268" + "default.handlebars->23->1270" ] }, { @@ -9425,7 +9426,7 @@ "ja": "ターミナルなし", "nl": "Geen terminal", "xloc": [ - "default.handlebars->23->1090", + "default.handlebars->23->1092", "default-mobile.handlebars->9->320" ] }, @@ -9436,7 +9437,7 @@ "cs": "Žádný přístup k terminálu", "nl": "Geen terminal toegang", "xloc": [ - "default.handlebars->23->1068", + "default.handlebars->23->1069", "default-mobile.handlebars->9->299" ] }, @@ -9460,7 +9461,7 @@ "ja": "ツールなし(MeshCmd / Router)", "nl": "Geen Tools (MeshCmd/Router)", "xloc": [ - "default.handlebars->23->1234" + "default.handlebars->23->1236" ] }, { @@ -9470,7 +9471,7 @@ "ja": "ユーザが見つかりませんでした。", "nl": "Geen gebruikers gevonden", "xloc": [ - "default.handlebars->23->1177" + "default.handlebars->23->1179" ] }, { @@ -9515,10 +9516,10 @@ "default.handlebars->23->963", "default.handlebars->23->975", "default.handlebars->23->980", - "default.handlebars->23->1130", - "default.handlebars->23->1242", - "default.handlebars->23->1287", - "default.handlebars->23->1291", + "default.handlebars->23->1132", + "default.handlebars->23->1244", + "default.handlebars->23->1289", + "default.handlebars->23->1293", "default-mobile.handlebars->9->75", "default-mobile.handlebars->9->93", "default-mobile.handlebars->9->95", @@ -9603,7 +9604,7 @@ "ja": "設定されていません", "nl": "Niet ingesteld", "xloc": [ - "default.handlebars->23->1273" + "default.handlebars->23->1275" ] }, { @@ -9617,7 +9618,7 @@ "default.handlebars->23->486", "default.handlebars->23->519", "default.handlebars->23->988", - "default.handlebars->23->1298" + "default.handlebars->23->1300" ] }, { @@ -9638,7 +9639,7 @@ "xloc": [ "default.handlebars->container->column_l->p2->p2AccountActions->3->8", "default.handlebars->23->905", - "default.handlebars->23->1109" + "default.handlebars->23->1111" ] }, { @@ -9668,7 +9669,7 @@ "cs": "Upozornit", "nl": "Melden", "xloc": [ - "default.handlebars->23->1300" + "default.handlebars->23->1302" ] }, { @@ -9691,7 +9692,7 @@ "cs": "Upozornit {0}", "nl": "Melden {0}", "xloc": [ - "default.handlebars->23->1189" + "default.handlebars->23->1191" ] }, { @@ -9712,7 +9713,7 @@ "cs": "Nastalo na {0}", "nl": "Heeft plaatsgevonden op {0}", "xloc": [ - "default.handlebars->23->1322" + "default.handlebars->23->1344" ] }, { @@ -9723,7 +9724,7 @@ "cs": "Nepřipojení uživatelé", "nl": "Offline gebruikers", "xloc": [ - "default.handlebars->23->1174" + "default.handlebars->23->1176" ] }, { @@ -9774,7 +9775,7 @@ "ja": "オンラインユーザー", "nl": "Online gebruikers", "xloc": [ - "default.handlebars->23->1173" + "default.handlebars->23->1175" ] }, { @@ -9967,7 +9968,7 @@ "cs": "Částečné", "nl": "Gedeeltelijk", "xloc": [ - "default.handlebars->23->1188" + "default.handlebars->23->1190" ] }, { @@ -9978,7 +9979,6 @@ "nl": "Gedeeltelijke rechten", "xloc": [ "default.handlebars->23->942", - "default.handlebars->23->1004", "default-mobile.handlebars->9->63", "default-mobile.handlebars->9->282" ] @@ -9990,7 +9990,7 @@ "cs": "Částečná práva", "nl": "Gedeeltelijke rechten", "xloc": [ - "default.handlebars->23->1271" + "default.handlebars->23->1273" ] }, { @@ -10014,12 +10014,12 @@ "default.handlebars->23->243", "default.handlebars->23->272", "default.handlebars->23->536", - "default.handlebars->23->1212", - "default.handlebars->23->1213", - "default.handlebars->23->1283", + "default.handlebars->23->1214", + "default.handlebars->23->1215", "default.handlebars->23->1285", - "default.handlebars->23->1309", - "default.handlebars->23->1310", + "default.handlebars->23->1287", + "default.handlebars->23->1311", + "default.handlebars->23->1312", "default-mobile.handlebars->9->213" ] }, @@ -10041,7 +10041,7 @@ "cs": "Nápověda k heslu", "nl": "wachtwoord hint", "xloc": [ - "default.handlebars->23->1311" + "default.handlebars->23->1313" ] }, { @@ -10162,7 +10162,7 @@ "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->23->621", "default.handlebars->23->643", - "default.handlebars->23->1151", + "default.handlebars->23->1153", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->3", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->3", "default-mobile.handlebars->9->87", @@ -10266,8 +10266,8 @@ "ja": "許可", "nl": "machtigingen", "xloc": [ - "default.handlebars->23->1100", - "default.handlebars->23->1172", + "default.handlebars->23->1102", + "default.handlebars->23->1174", "default-mobile.handlebars->9->329" ] }, @@ -10363,7 +10363,7 @@ "nl": "Plugin Actie", "xloc": [ "default.handlebars->23->177", - "default.handlebars->23->1391" + "default.handlebars->23->1413" ] }, { @@ -10610,7 +10610,7 @@ "ja": "公開リンク", "nl": "Publieke link", "xloc": [ - "default.handlebars->23->1137", + "default.handlebars->23->1139", "default-mobile.handlebars->9->74" ] }, @@ -10684,7 +10684,7 @@ "cs": "Náhodné heslo", "nl": "Randomiseer het wachtwoord.", "xloc": [ - "default.handlebars->23->1214" + "default.handlebars->23->1216" ] }, { @@ -10748,7 +10748,7 @@ "cs": "Oblasti", "nl": "Realms", "xloc": [ - "default.handlebars->23->1222" + "default.handlebars->23->1224" ] }, { @@ -10760,7 +10760,7 @@ "nl": "Recursieve verwijdering", "xloc": [ "default.handlebars->23->631", - "default.handlebars->23->1143", + "default.handlebars->23->1145", "default-mobile.handlebars->9->80", "default-mobile.handlebars->9->248" ] @@ -10823,8 +10823,8 @@ "cs": "Předávané relace", "nl": "Relay Sessies", "xloc": [ - "default.handlebars->23->1347", - "default.handlebars->23->1360" + "default.handlebars->23->1369", + "default.handlebars->23->1382" ] }, { @@ -10901,8 +10901,8 @@ "cs": "Ovládání na dálku", "nl": "Extern beheer", "xloc": [ - "default.handlebars->23->1065", - "default.handlebars->23->1084", + "default.handlebars->23->1066", + "default.handlebars->23->1086", "default-mobile.handlebars->9->296", "default-mobile.handlebars->9->314" ] @@ -10938,7 +10938,7 @@ "cs": "Vzdálený uživatel", "nl": "externe Mesh gebruiker", "xloc": [ - "default.handlebars->23->1103", + "default.handlebars->23->1105", "default-mobile.handlebars->9->332" ] }, @@ -10949,8 +10949,8 @@ "cs": "Pouze prohlížení na dálku", "nl": "Alleen extern meekijken", "xloc": [ - "default.handlebars->23->1066", - "default.handlebars->23->1089", + "default.handlebars->23->1067", + "default.handlebars->23->1091", "default-mobile.handlebars->9->297", "default-mobile.handlebars->9->319" ] @@ -10973,7 +10973,7 @@ "cs": "Odstranit celé 2-faktorové ověřování.", "nl": "Verwijder alle Tweestapsverificatie.", "xloc": [ - "default.handlebars->23->1314" + "default.handlebars->23->1316" ] }, { @@ -11006,7 +11006,8 @@ "nl": "Gebruikersrechten voor deze apparaatgroep verwijderen", "xloc": [ "default.handlebars->23->1007", - "default.handlebars->23->1251" + "default.handlebars->23->1253", + "default.handlebars->23->1325" ] }, { @@ -11020,7 +11021,7 @@ "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3", "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3", "default.handlebars->23->635", - "default.handlebars->23->1147", + "default.handlebars->23->1149", "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1", "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1", "default-mobile.handlebars->9->84", @@ -11046,8 +11047,8 @@ "cs": "Požadavky: {0}.", "nl": "Vereisten: {0}.", "xloc": [ - "default.handlebars->23->1219", - "default.handlebars->23->1312", + "default.handlebars->23->1221", + "default.handlebars->23->1314", "default-mobile.handlebars->9->48" ] }, @@ -11197,7 +11198,7 @@ "ja": "制限事項", "nl": "Beperkingen", "xloc": [ - "default.handlebars->23->1272" + "default.handlebars->23->1274" ] }, { @@ -11265,7 +11266,7 @@ "nl": "Root", "xloc": [ "default.handlebars->23->625", - "default.handlebars->23->1122", + "default.handlebars->23->1124", "default-mobile.handlebars->9->66", "default-mobile.handlebars->9->242" ] @@ -11552,7 +11553,7 @@ "xloc": [ "default.handlebars->23->244", "default.handlebars->23->537", - "default.handlebars->23->1296", + "default.handlebars->23->1298", "default-mobile.handlebars->9->214" ] }, @@ -11564,7 +11565,7 @@ "cs": "Bezpečnostní klíč", "nl": "Veiligheidssleutel", "xloc": [ - "default.handlebars->23->1294" + "default.handlebars->23->1296" ] }, { @@ -11612,7 +11613,7 @@ "default.handlebars->23->382", "default.handlebars->23->627", "default.handlebars->23->629", - "default.handlebars->23->1139" + "default.handlebars->23->1141" ] }, { @@ -11647,7 +11648,7 @@ "default.handlebars->meshContextMenu->cxselectnone", "default.handlebars->23->381", "default.handlebars->23->628", - "default.handlebars->23->1138" + "default.handlebars->23->1140" ] }, { @@ -11669,7 +11670,7 @@ "cs": "Pouze vlastní události", "nl": "Alleen eigen gebeurtenissen", "xloc": [ - "default.handlebars->23->1094", + "default.handlebars->23->1096", "default-mobile.handlebars->9->324" ] }, @@ -11694,7 +11695,7 @@ "cs": "Poslat tomuto uživateli textové upozornění.", "nl": "Stuur een tekstbericht naar deze gebruiker.", "xloc": [ - "default.handlebars->23->1190" + "default.handlebars->23->1192" ] }, { @@ -11716,7 +11717,7 @@ "ja": "招待メールを送信します。", "nl": "Verzend uitnodigingsmail.", "xloc": [ - "default.handlebars->23->1218" + "default.handlebars->23->1220" ] }, { @@ -11760,7 +11761,7 @@ "cs": "Poslat upozornění uživateli", "nl": "Stuur gebruikersmelding", "xloc": [ - "default.handlebars->23->1301" + "default.handlebars->23->1303" ] }, { @@ -11800,7 +11801,7 @@ "cs": "Záloha serveru", "nl": "Server Back-up", "xloc": [ - "default.handlebars->23->1227" + "default.handlebars->23->1229" ] }, { @@ -11809,7 +11810,7 @@ "cs": "Certifikát serveru", "nl": "Server Certificaat", "xloc": [ - "default.handlebars->23->1376" + "default.handlebars->23->1398" ] }, { @@ -11840,9 +11841,9 @@ "cs": "Soubory serveru", "nl": "Serverbestanden", "xloc": [ - "default.handlebars->23->1072", - "default.handlebars->23->1086", - "default.handlebars->23->1225", + "default.handlebars->23->1073", + "default.handlebars->23->1088", + "default.handlebars->23->1227", "default-mobile.handlebars->9->303", "default-mobile.handlebars->9->316" ] @@ -11876,8 +11877,8 @@ "cs": "Oprávnění serveru", "nl": "Serverrechten", "xloc": [ - "default.handlebars->23->1183", - "default.handlebars->23->1235" + "default.handlebars->23->1185", + "default.handlebars->23->1237" ] }, { @@ -11887,7 +11888,7 @@ "cs": "Kvóta serveru", "nl": "Serverquotum", "xloc": [ - "default.handlebars->23->1280" + "default.handlebars->23->1282" ] }, { @@ -11897,7 +11898,7 @@ "cs": "Obnova serveru", "nl": "Server herstellen", "xloc": [ - "default.handlebars->23->1228" + "default.handlebars->23->1230" ] }, { @@ -11908,7 +11909,7 @@ "cs": "Práva serveru", "nl": "Serverrechten", "xloc": [ - "default.handlebars->23->1279" + "default.handlebars->23->1281" ] }, { @@ -11930,7 +11931,7 @@ "cs": "Trasování serveru", "nl": "Server traceren", "xloc": [ - "default.handlebars->23->1385" + "default.handlebars->23->1407" ] }, { @@ -11941,7 +11942,7 @@ "cs": "Aktualizace serveru", "nl": "Serverupdates", "xloc": [ - "default.handlebars->23->1229" + "default.handlebars->23->1231" ] }, { @@ -11971,7 +11972,7 @@ "cs": "ServerStats.csv", "nl": "ServerStats.csv", "xloc": [ - "default.handlebars->23->1368" + "default.handlebars->23->1390" ] }, { @@ -11981,7 +11982,7 @@ "cs": "servertrace.csv", "nl": "servertrace.csv", "xloc": [ - "default.handlebars->23->1387" + "default.handlebars->23->1409" ] }, { @@ -12224,7 +12225,7 @@ "cs": "Zobrazit pouze vlastní události", "nl": "Toon alleen eigen gebeurtenissen", "xloc": [ - "default.handlebars->23->1075", + "default.handlebars->23->1076", "default-mobile.handlebars->9->306" ] }, @@ -12775,7 +12776,7 @@ "nl": "Status", "xloc": [ "default.handlebars->container->column_l->p42->p42tbl->1->0->7", - "default.handlebars->23->1307" + "default.handlebars->23->1309" ] }, { @@ -12818,7 +12819,7 @@ "ja": "ストレージ制限を超えています", "nl": "Opslaglimiet overschreden", "xloc": [ - "default.handlebars->23->1125" + "default.handlebars->23->1127" ] }, { @@ -13106,7 +13107,7 @@ "cs": "V tuto chvíli zde nejsou žádná upozornění", "nl": "Er zijn momenteel geen meldingen", "xloc": [ - "default.handlebars->23->1321" + "default.handlebars->23->1343" ] }, { @@ -13271,7 +13272,7 @@ "cs": "time, conn.agent, conn.users, conn.usersessions, conn.relaysession, conn.intelamt, mem.external, mem.heapused, mem.heaptotal, mem.rss", "nl": "tijd, conn.agent, conn.gebruikers, conn.gebruikerssessies, conn.relaysessie, conn.intelamt, mem.extern, mem.heapused, mem.heaptotaal, mem.rss", "xloc": [ - "default.handlebars->23->1367" + "default.handlebars->23->1389" ] }, { @@ -13281,7 +13282,7 @@ "cs": "time, source, message", "nl": "tijd, bron, bericht", "xloc": [ - "default.handlebars->23->1386" + "default.handlebars->23->1408" ] }, { @@ -13291,7 +13292,7 @@ "cs": "time, type, action, user, message", "nl": "tijd, type, actie, gebruiker, bericht", "xloc": [ - "default.handlebars->23->1166" + "default.handlebars->23->1168" ] }, { @@ -13579,7 +13580,7 @@ "ja": "合計", "nl": "totaal", "xloc": [ - "default.handlebars->23->1355" + "default.handlebars->23->1377" ] }, { @@ -13822,7 +13823,7 @@ "cs": "Odinstalace", "nl": "deinstallatie", "xloc": [ - "default.handlebars->23->1096", + "default.handlebars->23->1098", "default-mobile.handlebars->9->326" ] }, @@ -13834,7 +13835,7 @@ "xloc": [ "default.handlebars->23->384", "default.handlebars->23->529", - "default.handlebars->23->1077", + "default.handlebars->23->1078", "default-mobile.handlebars->9->308" ] }, @@ -13861,6 +13862,7 @@ "default.handlebars->23->108", "default.handlebars->23->109", "default.handlebars->23->380", + "default.handlebars->23->1334", "default-mobile.handlebars->9->126", "default-mobile.handlebars->9->143", "default-mobile.handlebars->9->171", @@ -13937,7 +13939,7 @@ "cs": "Aktuální", "nl": "Bijgewerkt", "xloc": [ - "default.handlebars->23->1390" + "default.handlebars->23->1412" ] }, { @@ -13985,8 +13987,8 @@ "default.handlebars->23->636", "default.handlebars->23->659", "default.handlebars->23->662", - "default.handlebars->23->1148", - "default.handlebars->23->1156", + "default.handlebars->23->1150", + "default.handlebars->23->1158", "default-mobile.handlebars->9->85", "default-mobile.handlebars->9->253", "default-mobile.handlebars->9->271" @@ -14068,8 +14070,8 @@ "ja": "中古", "nl": "Gebruikt", "xloc": [ - "default.handlebars->23->1323", - "default.handlebars->23->1325" + "default.handlebars->23->1345", + "default.handlebars->23->1347" ] }, { @@ -14082,8 +14084,8 @@ "xloc": [ "default.handlebars->23->200", "default.handlebars->23->1008", - "default.handlebars->23->1184", - "default.handlebars->23->1252", + "default.handlebars->23->1186", + "default.handlebars->23->1254", "default-mobile.handlebars->9->328" ] }, @@ -14094,7 +14096,7 @@ "ja": "ユーザー+ファイル", "nl": "Gebruiker + bestanden", "xloc": [ - "default.handlebars->23->1185" + "default.handlebars->23->1187" ] }, { @@ -14104,10 +14106,10 @@ "cs": "Import uživatelských účtů", "nl": "Gebruikersaccount importeren", "xloc": [ - "default.handlebars->23->1192", - "default.handlebars->23->1193", + "default.handlebars->23->1194", "default.handlebars->23->1195", - "default.handlebars->23->1197" + "default.handlebars->23->1197", + "default.handlebars->23->1199" ] }, { @@ -14150,8 +14152,8 @@ "cs": "Identifikátor uživatele", "nl": "gebruikersID", "xloc": [ - "default.handlebars->23->1099", - "default.handlebars->23->1276" + "default.handlebars->23->1101", + "default.handlebars->23->1278" ] }, { @@ -14175,7 +14177,7 @@ "cs": "Export seznamu uživatelů", "nl": "Gebruikerslijst exporteren", "xloc": [ - "default.handlebars->23->1204" + "default.handlebars->23->1206" ] }, { @@ -14186,7 +14188,7 @@ "ja": "ユーザー名", "nl": "Gebruikersnaam", "xloc": [ - "default.handlebars->23->1098" + "default.handlebars->23->1100" ] }, { @@ -14198,7 +14200,7 @@ "nl": "Gebruikersnamen", "xloc": [ "default.handlebars->23->1059", - "default.handlebars->23->1265" + "default.handlebars->23->1267" ] }, { @@ -14208,7 +14210,7 @@ "cs": "Relace uživatele", "nl": "Gebruikerssessie", "xloc": [ - "default.handlebars->23->1359" + "default.handlebars->23->1381" ] }, { @@ -14240,8 +14242,8 @@ "cs": "userlist.csv", "nl": "userlist.csv", "xloc": [ - "default.handlebars->23->1201", - "default.handlebars->23->1206" + "default.handlebars->23->1203", + "default.handlebars->23->1208" ] }, { @@ -14251,8 +14253,8 @@ "cs": "userlist.json", "nl": "userlist.json", "xloc": [ - "default.handlebars->23->1203", - "default.handlebars->23->1207" + "default.handlebars->23->1205", + "default.handlebars->23->1209" ] }, { @@ -14304,8 +14306,8 @@ "nl": "Gebruikers", "xloc": [ "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGeneral", - "default.handlebars->23->1237", - "default.handlebars->23->1358" + "default.handlebars->23->1239", + "default.handlebars->23->1380" ] }, { @@ -14439,7 +14441,7 @@ "cs": "Zobrazit poznámky o tomto uživateli", "nl": "Bekijk opmerkingen over deze gebruiker", "xloc": [ - "default.handlebars->23->1299" + "default.handlebars->23->1301" ] }, { @@ -14479,8 +14481,8 @@ "cs": "Probudit zařízení", "nl": "apparaat wekken", "xloc": [ - "default.handlebars->23->1073", - "default.handlebars->23->1087", + "default.handlebars->23->1074", + "default.handlebars->23->1089", "default-mobile.handlebars->9->304", "default-mobile.handlebars->9->317" ] @@ -14559,8 +14561,8 @@ "cs": "Webový server", "nl": "webserver", "xloc": [ - "default.handlebars->23->1377", - "default.handlebars->23->1378" + "default.handlebars->23->1399", + "default.handlebars->23->1400" ] }, { @@ -14571,7 +14573,7 @@ "cs": "Požadavky webového serveru", "nl": "Webserver Verzoeken", "xloc": [ - "default.handlebars->23->1379" + "default.handlebars->23->1401" ] }, { @@ -14582,7 +14584,7 @@ "cs": "Web Socket Relay", "nl": "Web Socket Relay", "xloc": [ - "default.handlebars->23->1380" + "default.handlebars->23->1402" ] }, { @@ -14626,7 +14628,7 @@ "ja": "次回ログイン時に変更されます。", "nl": "Wordt bij de volgende aanmelding gewijzigd.", "xloc": [ - "default.handlebars->23->1284" + "default.handlebars->23->1286" ] }, { @@ -15029,7 +15031,7 @@ "cs": "{0} aktivních spojení", "nl": "{0} actieve sessies", "xloc": [ - "default.handlebars->23->1305" + "default.handlebars->23->1307" ] }, { @@ -15039,7 +15041,7 @@ "cs": "{0} b", "nl": "{0} b", "xloc": [ - "default.handlebars->23->1131" + "default.handlebars->23->1133" ] }, { @@ -15050,7 +15052,7 @@ "ja": "{0}バイト", "nl": "{0} bytes", "xloc": [ - "default.handlebars->23->1141", + "default.handlebars->23->1143", "default-mobile.handlebars->9->78" ] }, @@ -15062,7 +15064,7 @@ "cs": "{0} bajtů zbývá", "nl": "{0} resterende bytes", "xloc": [ - "default.handlebars->23->1126" + "default.handlebars->23->1128" ] }, { @@ -15072,7 +15074,7 @@ "cs": "{0} Gb", "nl": "{0} Gb", "xloc": [ - "default.handlebars->23->1134" + "default.handlebars->23->1136" ] }, { @@ -15082,7 +15084,7 @@ "ja": "残り{0}ギガバイト", "nl": "{0} rsterende gigabytes", "xloc": [ - "default.handlebars->23->1129" + "default.handlebars->23->1131" ] }, { @@ -15092,7 +15094,7 @@ "cs": "{0} skupin", "nl": "{0} groepen", "xloc": [ - "default.handlebars->23->1289" + "default.handlebars->23->1291" ] }, { @@ -15109,7 +15111,7 @@ "cs": "{0} Kb", "nl": "{0} Kb", "xloc": [ - "default.handlebars->23->1132" + "default.handlebars->23->1134" ] }, { @@ -15119,7 +15121,7 @@ "ja": "残り{0}キロバイト", "nl": "{0} resterende kilobytes", "xloc": [ - "default.handlebars->23->1127" + "default.handlebars->23->1129" ] }, { @@ -15140,7 +15142,7 @@ "cs": "{0} Mb", "nl": "{0} Mb", "xloc": [ - "default.handlebars->23->1133" + "default.handlebars->23->1135" ] }, { @@ -15160,7 +15162,7 @@ "ja": "残り{0}メガバイト", "nl": "{0} resterende megabytes", "xloc": [ - "default.handlebars->23->1128" + "default.handlebars->23->1130" ] }, { @@ -15177,7 +15179,7 @@ "cs": "{0} dalších uživatelů není zobrazeno, vyhledejte je pomocí kolonky pro vyhledávání…", "nl": "{0} meer gebruikers niet getoond, gebruik zoekvak om gebruikers te zoeken ...", "xloc": [ - "default.handlebars->23->1176" + "default.handlebars->23->1178" ] }, { @@ -15237,7 +15239,7 @@ "cs": "{0} relací", "nl": "{0} sessies", "xloc": [ - "default.handlebars->23->1180" + "default.handlebars->23->1182" ] }, { @@ -15308,7 +15310,7 @@ "cs": "{0}k v 1 souboru. {1}k maximum", "nl": "{0}k in 1 bestand. {1}k maximum", "xloc": [ - "default.handlebars->23->1136" + "default.handlebars->23->1138" ] }, { @@ -15318,7 +15320,7 @@ "cs": "{0}k v {1} souborech. {2}k maximum", "nl": "{0}k in 1 file. {2}k maximum", "xloc": [ - "default.handlebars->23->1135" + "default.handlebars->23->1137" ] }, { @@ -15481,7 +15483,7 @@ "cs": "2-faktorové ověřování zapnuto", "nl": "Tweestapsverificatie ingeschakeld", "xloc": [ - "default.handlebars->23->1297" + "default.handlebars->23->1299" ] }, { @@ -15490,7 +15492,7 @@ "cs": "\\\\'", "nl": "\\\\'", "xloc": [ - "default.handlebars->23->1388" + "default.handlebars->23->1410" ] }, { @@ -15532,7 +15534,7 @@ "nl": "Power Status", "xloc": [ "default.handlebars->container->column_l->p21->3->1->meshPowerChartDiv->1", - "default.handlebars->23->1114" + "default.handlebars->23->1116" ] }, { @@ -15541,7 +15543,7 @@ "nl": "Agent Type", "xloc": [ "default.handlebars->container->column_l->p21->3->1->meshOsChartDiv->1", - "default.handlebars->23->1115" + "default.handlebars->23->1117" ] }, { @@ -15623,16 +15625,16 @@ "cs": "Nepřipojeno", "nl": "Niet verbonden", "xloc": [ - "default.handlebars->23->1110", - "default.handlebars->23->1116" + "default.handlebars->23->1112", + "default.handlebars->23->1118" ] }, { "en": "Agent + Intel AMT", "nl": "Agent + Intel AMT", "xloc": [ - "default.handlebars->23->1113", - "default.handlebars->23->1119" + "default.handlebars->23->1115", + "default.handlebars->23->1121" ] }, { @@ -15640,7 +15642,7 @@ "cs": "V této skupině nejsou žádná zařízení.", "nl": "Geen apparaten in deze apparaatgroep.", "xloc": [ - "default.handlebars->23->1121" + "default.handlebars->23->1123" ] }, { @@ -15672,7 +15674,7 @@ "cs": "Je třeba, aby nastavení upozorňování byla zapnutá také v nastavení účtu.", "nl": "Meldingsinstellingen moeten ook worden ingeschakeld in accountinstellingen.", "xloc": [ - "default.handlebars->23->1105" + "default.handlebars->23->1107" ] }, { @@ -15681,7 +15683,7 @@ "nl": "Groepen", "xloc": [ "default.handlebars->container->topbar->1->1->UsersSubMenuSpan->UsersSubMenu->1->0->UsersGroups", - "default.handlebars->23->1170" + "default.handlebars->23->1172" ] }, { @@ -15689,23 +15691,20 @@ "cs": "Smazat uživatele", "nl": "Verwijder gebruiker", "xloc": [ - "default.handlebars->23->1302" + "default.handlebars->23->1304" ] }, { "en": "7 Day Login State", "cs": "Stav přihlášení za 7 dnů", - "nl": "Inlogstatus afgelopen 7 dagen", - "xloc": [ - "default.handlebars->23->1318" - ] + "nl": "Inlogstatus afgelopen 7 dagen" }, { "en": "CPU Load", "cs": "Vytížení procesoru", "nl": "CPU gebruik", "xloc": [ - "default.handlebars->23->1349" + "default.handlebars->23->1371" ] }, { @@ -15713,14 +15712,14 @@ "cs": "Stav serveru", "nl": "Server Status", "xloc": [ - "default.handlebars->23->1327" + "default.handlebars->23->1349" ] }, { "en": "Agent Error Counters", "cs": "Počitadla chyb agenta", "xloc": [ - "default.handlebars->23->1328" + "default.handlebars->23->1350" ] }, { @@ -15728,7 +15727,7 @@ "cs": "Neznámá skupina", "nl": "Onbekende groep", "xloc": [ - "default.handlebars->23->1329" + "default.handlebars->23->1351" ] }, { @@ -15736,7 +15735,7 @@ "cs": "Neplatný PKCS podpis", "nl": "Onjuiste PKCS handtekening", "xloc": [ - "default.handlebars->23->1330" + "default.handlebars->23->1352" ] }, { @@ -15744,7 +15743,7 @@ "cs": "Neplatný RSA podpis", "nl": "Ongeldige RSA handtekening", "xloc": [ - "default.handlebars->23->1331" + "default.handlebars->23->1353" ] }, { @@ -15752,7 +15751,7 @@ "cs": "Neplatný JSON", "nl": "Onjuiste JSON", "xloc": [ - "default.handlebars->23->1332" + "default.handlebars->23->1354" ] }, { @@ -15760,7 +15759,7 @@ "cs": "Neznámá akce", "nl": "Onbekende actie", "xloc": [ - "default.handlebars->23->1333" + "default.handlebars->23->1355" ] }, { @@ -15768,7 +15767,7 @@ "cs": "Nesprávný certifikát webu", "nl": "Onjuist webcertificaat", "xloc": [ - "default.handlebars->23->1334" + "default.handlebars->23->1356" ] }, { @@ -15776,7 +15775,7 @@ "cs": "Nesprávný podpis", "nl": "Ongeldige handtening", "xloc": [ - "default.handlebars->23->1335" + "default.handlebars->23->1357" ] }, { @@ -15784,7 +15783,7 @@ "cs": "Dosaženo maximálního počtu relací", "nl": "Max Sessies bereikt", "xloc": [ - "default.handlebars->23->1336" + "default.handlebars->23->1358" ] }, { @@ -15792,7 +15791,8 @@ "cs": "Neznámá skupina zařízení", "nl": "Onbekende apparaatgroep", "xloc": [ - "default.handlebars->23->1337" + "default.handlebars->23->1322", + "default.handlebars->23->1359" ] }, { @@ -15800,7 +15800,7 @@ "cs": "Neplatný typ skupiny zařízení", "nl": "Ongeldige apparaatgroep type", "xloc": [ - "default.handlebars->23->1338" + "default.handlebars->23->1360" ] }, { @@ -15808,7 +15808,7 @@ "cs": "Duplikovat agenta", "nl": "Duplicaat Agent", "xloc": [ - "default.handlebars->23->1339" + "default.handlebars->23->1361" ] }, { @@ -15816,7 +15816,7 @@ "cs": "Připojené Intel® AMT", "nl": "Verbonden Intel® AMT", "xloc": [ - "default.handlebars->23->1340" + "default.handlebars->23->1362" ] }, { @@ -15824,7 +15824,7 @@ "cs": "Chyby předávání (relay)", "nl": "Relay fouten", "xloc": [ - "default.handlebars->23->1341" + "default.handlebars->23->1363" ] }, { @@ -15832,14 +15832,14 @@ "cs": "Uživatelské účty", "nl": "Gebruikersaccounts", "xloc": [ - "default.handlebars->23->1342" + "default.handlebars->23->1364" ] }, { "en": "Agent Sessions", "cs": "Relace agenta", "xloc": [ - "default.handlebars->23->1344" + "default.handlebars->23->1366" ] }, { @@ -15847,7 +15847,7 @@ "cs": "Připojení", "nl": "Verbonden gebruikers", "xloc": [ - "default.handlebars->23->1345" + "default.handlebars->23->1367" ] }, { @@ -15855,7 +15855,7 @@ "cs": "Uživatelské relace", "nl": "gebruikers Sessies", "xloc": [ - "default.handlebars->23->1346" + "default.handlebars->23->1368" ] }, { @@ -15904,28 +15904,28 @@ "cs": "Externí", "nl": "Extern", "xloc": [ - "default.handlebars->23->1363" + "default.handlebars->23->1385" ] }, { "en": "Heap Used", "nl": "Heap gebruikt", "xloc": [ - "default.handlebars->23->1364" + "default.handlebars->23->1386" ] }, { "en": "Heap Total", "nl": "Heap Totaal", "xloc": [ - "default.handlebars->23->1365" + "default.handlebars->23->1387" ] }, { "en": "RSS", "nl": "RSS", "xloc": [ - "default.handlebars->23->1366" + "default.handlebars->23->1388" ] }, { @@ -15946,14 +15946,14 @@ "en": "Remove all previous events for this userid.", "cs": "Remove all previous events for this userid.", "xloc": [ - "default.handlebars->23->1216" + "default.handlebars->23->1218" ] }, { "en": "Relay Count", "cs": "Počet předávání (relay)", "xloc": [ - "default.handlebars->23->1348" + "default.handlebars->23->1370" ] }, { @@ -15983,13 +15983,13 @@ { "en": "Manage User Groups", "xloc": [ - "default.handlebars->23->1231" + "default.handlebars->23->1233" ] }, { "en": "Create User Group", "xloc": [ - "default.handlebars->23->1241" + "default.handlebars->23->1243" ] }, { @@ -16001,56 +16001,56 @@ { "en": "No groups found.", "xloc": [ - "default.handlebars->23->1238" + "default.handlebars->23->1240" ] }, { "en": "Send a notice to all users in this group.", "xloc": [ - "default.handlebars->23->1248" + "default.handlebars->23->1250" ] }, { "en": "Group Members", "xloc": [ - "default.handlebars->23->1250" + "default.handlebars->23->1252" ] }, { "en": "No Members", "xloc": [ - "default.handlebars->23->1253" + "default.handlebars->23->1255" ] }, { "en": "Delete User Group", "xloc": [ - "default.handlebars->23->1254", - "default.handlebars->23->1260" + "default.handlebars->23->1256", + "default.handlebars->23->1262" ] }, { "en": "Edit User Group", "xloc": [ - "default.handlebars->23->1257" + "default.handlebars->23->1259" ] }, { "en": "Delete user group {0}?", "xloc": [ - "default.handlebars->23->1258" + "default.handlebars->23->1260" ] }, { "en": "Remote User", "xloc": [ - "default.handlebars->23->1261" + "default.handlebars->23->1263" ] }, { "en": "Add Users to User Group", "xloc": [ - "default.handlebars->23->1266" + "default.handlebars->23->1268" ] }, { @@ -16129,14 +16129,114 @@ "en": "Upload will overwrite 1 file. Continue?", "xloc": [ "default.handlebars->23->660", - "default.handlebars->23->1157" + "default.handlebars->23->1159" ] }, { "en": "Upload will overwrite {0} files. Continue?", "xloc": [ "default.handlebars->23->661", - "default.handlebars->23->1158" + "default.handlebars->23->1160" + ] + }, + { + "en": "Partial Device Group Rights", + "xloc": [ + "default.handlebars->23->1004", + "default.handlebars->23->1321" + ] + }, + { + "en": "Full Device Group Administrator", + "xloc": [ + "default.handlebars->23->1005", + "default.handlebars->23->1323" + ] + }, + { + "en": "Device Group", + "xloc": [ + "default.handlebars->23->1060", + "default.handlebars->23->1326", + "default.handlebars->23->1332" + ] + }, + { + "en": "Common Device Groups", + "xloc": [ + "default.handlebars->23->1320" + ] + }, + { + "en": "No device groups in common", + "xloc": [ + "default.handlebars->23->1327" + ] + }, + { + "en": "Add User Group", + "xloc": [ + "default.handlebars->23->1328" + ] + }, + { + "en": "User Group Memberships", + "xloc": [ + "default.handlebars->23->1329" + ] + }, + { + "en": "Unknown User Group", + "xloc": [ + "default.handlebars->23->1330" + ] + }, + { + "en": "Remove user group membership", + "xloc": [ + "default.handlebars->23->1331" + ] + }, + { + "en": "No user group memberships", + "xloc": [ + "default.handlebars->23->1333" + ] + }, + { + "en": "Remove User", + "xloc": [ + "default.handlebars->23->1335" + ] + }, + { + "en": "Confirm removal of group {0}?", + "xloc": [ + "default.handlebars->23->1336" + ] + }, + { + "en": "User Group", + "xloc": [ + "default.handlebars->23->1337" + ] + }, + { + "en": "Add Membership", + "xloc": [ + "default.handlebars->23->1338" + ] + }, + { + "en": "Remove Device Group", + "xloc": [ + "default.handlebars->23->1339" + ] + }, + { + "en": "Confirm removal of device group {0}?", + "xloc": [ + "default.handlebars->23->1340" ] } ] diff --git a/views/default.handlebars b/views/default.handlebars index 562d0794..f4fcb3bb 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -1558,7 +1558,7 @@ // We are not user administrator users = null; wssessions = null; - updateUsers(); + masterUpdate(16384); if (xxcurrentView == 4 || ((xxcurrentView >= 30) && (xxcurrentView < 40))) { setDialogMode(0); go(1); currentUser = null; } } meshserver.send({ action: 'events', limit: parseInt(p3limitdropdown.value) }); @@ -1592,6 +1592,7 @@ if (updateNaggleFlags & 2048) { userEventsUpdate(); } if (updateNaggleFlags & 4096) { p20updateMesh(); } if (updateNaggleFlags & 8192) { updateUserGroups(); } + if (updateNaggleFlags & 16384) { updateUsers(); } updateNaggleTimer = null; updateNaggleFlags = 0; }, 150); @@ -1705,12 +1706,12 @@ case 'users': { users = {}; for (var m in message.users) { users[message.users[m]._id] = message.users[m]; } - updateUsers(); + masterUpdate(16384); break; } case 'wssessioncount': { wssessions = message.wssessions; - updateUsers(); + masterUpdate(16384); break; } case 'meshes': { @@ -2203,14 +2204,14 @@ delete users[message.event.account._id]; // No longer part of our groups, remove this user. } - updateUsers(); + masterUpdate(16384); break; } case 'accountremove': { // An account was removed if (users == null) break; delete users['user/' + domain + '/' + message.event.username.toLowerCase()]; - updateUsers(); + masterUpdate(16384); break; } case 'createusergroup': @@ -2226,7 +2227,7 @@ ugroup.desc = message.event.desc; ugroup.links = message.event.links; } - masterUpdate(8192); + masterUpdate(8192 + 16384); break; } case 'deleteusergroup': { @@ -2477,7 +2478,7 @@ } else { wssessions['user/' + domain + '/' + message.event.username.toLowerCase()] = message.event.count; } - updateUsers(); + masterUpdate(16384); } break; } @@ -7679,8 +7680,8 @@ // Display all users for this mesh for (var i in sortedusers) { - var trash = '', rights = "Partial Rights", r = sortedusers[i].rights; - if (r == 0xFFFFFFFF) rights = "Full Administrator"; else if (r == 0) rights = "No Rights"; + var trash = '', rights = "Partial Device Group Rights", r = sortedusers[i].rights; + if (r == 0xFFFFFFFF) rights = "Full Device Group Administrator"; else if (r == 0) rights = "No Rights"; if ((sortedusers[i].id != userinfo._id) && (meshrights == 0xFFFFFFFF || (((meshrights & 2) != 0)))) { trash = ''; } x += '
 ' + EscapeHtml(decodeURIComponent(sortedusers[i].name)) + '
' + trash + '
' + rights + '
'; ++count; @@ -7873,6 +7874,10 @@ x += addHtmlValue("User Names", ''); x += '
'; x += '
'; + } else if (userid === 1) { + var y = ''; + for (var i in meshes) { if ((currentUser.links == null) || (currentUser.links[i] == null)) { y += ''; } } + x += addHtmlValue("Device Group", '
'); } else { userid = decodeURIComponent(userid); var uname = userid.split('/')[2]; @@ -7902,6 +7907,8 @@ if (userid == null) { setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x); Q('dp20username').focus(); + } else if (userid === 1) { + setDialogMode(2, "Add Device Group", 3, p20showAddMeshUserDialogEx, x, userid); } else { setDialogMode(2, "Edit User Device Group Permissions", 7, p20showAddMeshUserDialogEx, x, userid); var cmeshrights = GetMeshRights(currentMesh), meshrights = GetMeshRights(currentMesh, userid); @@ -7943,7 +7950,12 @@ } function p20validateAddMeshUserDialog() { - var meshrights = GetMeshRights(currentMesh); + var meshrights = null; + if (xxdialogTag === 1) { + meshrights = GetMeshRights(decodeURIComponent(Q('dp2groupid').value)); + } else { + meshrights = GetMeshRights(currentMesh); + } var ok = true; if (Q('dp20username')) { var xusers = Q('dp20username').value.split(','); @@ -8017,12 +8029,17 @@ if (Q('p20uninstall').checked == true) meshadmin += 32768; } - if (t == null) { - var users = Q('dp20username').value.split(','), users2 = []; - for (var i in users) { users2.push(users[i].trim()); } - meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: users2, meshadmin: meshadmin }); + if (t === 1) { + var meshid = decodeURIComponent(Q('dp2groupid').value), mesh = meshes[meshid]; + if (mesh != null) { meshserver.send({ action: 'addmeshuser', meshid: meshid, meshname: mesh.name, usernames: [ currentUser._id.split('/')[2] ], meshadmin: meshadmin }); } } else { - meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: [ t.split('/')[2] ], meshadmin: meshadmin }); + if (t == null) { + var users = Q('dp20username').value.split(','), users2 = []; + for (var i in users) { users2.push(users[i].trim()); } + meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: users2, meshadmin: meshadmin }); + } else { + meshserver.send({ action: 'addmeshuser', meshid: currentMesh._id, meshname: currentMesh.name, usernames: [ t.split('/')[2] ], meshadmin: meshadmin }); + } } } } @@ -8729,7 +8746,7 @@ if (self) { permissions += ''; } var groups = 0 - if (user.links) { for (var i in user.links) { groups++; } } + if (user.links) { for (var i in user.links) { if (i.startsWith('mesh/')) { groups++; } } } var username = EscapeHtml(user.name), emailVerified = ''; if (serverinfo.emailcheck == true) { emailVerified = ((user.emailVerified != true) ? ' ' : ' '); } @@ -9024,7 +9041,7 @@ meshserver.send(x); } - function onUserSearchInputChanged() { updateUsers(); } + function onUserSearchInputChanged() { masterUpdate(16384); } // @@ -9307,7 +9324,7 @@ // Device Groups var linkCount = 0, linkCountStr = '' + "None" + ''; if (user.links) { - for (var i in user.links) { linkCount++; } + for (var i in user.links) { if (i.startsWith('mesh/')) { linkCount++; } } if (linkCount == 1) { linkCountStr = "1 group"; } else if (linkCount > 1) { linkCountStr = format("{0} groups", linkCount); } } x += addDeviceAttribute("Device Groups", linkCountStr); @@ -9339,7 +9356,7 @@ QH('p30html', x); // Draw the user timeline - drawUserTimeline(); + drawUserPermissions(); // Check if we can delete this user var deletePossible = true; @@ -9446,52 +9463,87 @@ } // Draw device power bars. The bars are 766px wide. - function drawUserTimeline() { - var timeline = null, now = Date.now(); - //if (currentNode._id == powerTimelineNode) { timeline = powerTimeline; } - timeline = []; - - // Calculate when the timeline starts - var d = new Date(); - d.setHours(0, 0, 0, 0); - d = new Date(d.getTime() - (1000 * 60 * 60 * 24 * 6)); - var timelineStart = d.getTime(); - - // De-compact the timeline - var timeline2 = []; - if (timeline != null && timeline.length > 1) { - timeline2.push([ 0, timeline[1], timeline[0] ]); // Start, End, Power - var ct = timeline[1]; - for (var i = 2; i < timeline.length; i += 2) { - var power = timeline[i], dt = now; - if (timeline.length > (i + 1)) { dt = timeline[i + 1]; } - timeline2.push([ ct, ct + dt, power ]); // Start, End, Power - ct = ct + dt; + function drawUserPermissions() { + var count = 1, x = ''; + var deviceGroupCount = 0, newDeviceGroup = false; + for (var i in meshes) { deviceGroupCount++; if ((currentUser.links == null) || (currentUser.links[i] == null)) { newDeviceGroup = true; } } + if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += ' ' + "Add Device Group" + ''; } + x += ''; + if (currentUser.links) { + for (var i in currentUser.links) { + if (i.startsWith('mesh/')) { + var cr = 0, r = currentUser.links[i].rights, mesh = meshes[i], trash = '', rights = "Partial Device Group Rights"; + if (mesh == null) { continue; } + if ((userinfo.links) && (userinfo.links[i] != null) && (userinfo.links[i].rights != null)) { cr = userinfo.links[i].rights; } + var meshname = mesh?EscapeHtml(mesh.name):('' + "Unknown Device Group" + ''); + if (r == 0xFFFFFFFF) rights = "Full Device Group Administrator"; else if (r == 0) rights = "No Rights"; + if ((currentUser._id != userinfo._id) && ((cr & 2) != 0)) { trash = ''; } + x += ''; + } } } + if (count == 1) { x += ''; } + x += '
' + "Common Device Groups" + '
 ' + meshname + '
' + trash + '
' + rights + '
 ' + "No device groups in common" + '

'; - // Draw the timeline - var x = '', count = 1, date = new Date(); - date.setHours(0, 0, 0, 0); - for (var i = 0; i < 7; i++) { - var datavalue = '', start = date.getTime(), end = start + (1000 * 60 * 60 * 24); - for (var j in timeline2) { - var block = timeline2[j]; - if (isTimeBlockInside(start, end, block[0], block[1]) == true) { - var ts = Math.max(start, block[0]); - var te = Math.min(Math.min(end, block[1]), now); - var width = Math.round((te - ts) / 112794); - if (width > 0) { - var title = powerStateStrings2[block[2]] + ' from ' + printTime(new Date(ts)) + ' to ' + printTime(new Date(te)) + '.'; - datavalue += '
'; + if (usergroups != null) { + count = 1; + if ((userinfo.siteadmin & 256) != 0) { + var userGroupCount = 0, newUserGroup = false; + for (var i in usergroups) { userGroupCount++; if ((currentUser.links == null) || (currentUser.links[i] == null)) { newUserGroup = true; } } + if ((userGroupCount > 0) && (newUserGroup)) { x += ' ' + "Add User Group" + ''; } + } + x += ''; + if (currentUser.links) { + for (var i in currentUser.links) { + if (i.startsWith('ugrp/')) { + var r = currentUser.links[i].rights, group = usergroups[i], trash = ''; + var groupname = (group != null)?EscapeHtml(group.name):('' + "Unknown User Group" + ''); + if ((userinfo.siteadmin & 256) != 0) { trash = ''; } + x += ''; } } } - x += ''; - ++count; - date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day + if (count == 1) { x += ''; } + x += '
' + "User Group Memberships" + '
 ' + groupname + '
' + trash + '
 ' + printDate(date) + '
' + datavalue + '
 ' + "No user group memberships" + '
'; } - QH('p30html2', '' + x + '
' + "Day" + '' + "7 Day Login State" + '
'); + + QH('p30html2', x); + } + + function p30RemoveUserGroup(button, ugrpid) { + if (xxdialogMode) return; + var groupid = decodeURIComponent(ugrpid), group = usergroups[groupid]; + var name = (group != null)?EscapeHtml(group.name):('' + "Unknown" + ''); + setDialogMode(2, "Remove User", 3, p30RemoveUserGroupEx, format("Confirm removal of group {0}?", name), groupid); + } + + function p30RemoveUserGroupEx(b, groupid) { + meshserver.send({ action: 'removeuserfromusergroup', ugrpid: groupid, userid: currentUser._id }); + } + + function p30showAddUserGroupDialog() { + if (xxdialogMode) return; + var y = ''; + for (var i in usergroups) { if ((currentUser.links == null) || (currentUser.links[i] == null)) { y += ''; } } + var x = addHtmlValue("User Group", '
'); + setDialogMode(2, "Add Membership", 3, p30showAddUserGroupDialogEx, x); + Q('dp2groupid').focus(); + return false; + } + + function p30showAddUserGroupDialogEx() { + meshserver.send({ action: 'addusertousergroup', ugrpid: decodeURIComponent(Q('dp2groupid').value), usernames: [ currentUser._id.split('/')[2] ] }); + } + + function p30removeMeshFromUser(e, meshid) { + if (xxdialogMode) return; + var mesh = meshes[decodeURIComponent(meshid)]; + if (mesh == null) return; + setDialogMode(2, "Remove Device Group", 3, p30removeMeshFromUserEx, format("Confirm removal of device group {0}?", mesh.name), mesh._id); + } + + function p30removeMeshFromUserEx(b, meshid) { + meshserver.send({ action: 'removemeshuser', meshid: meshid, userid: currentUser._id }); } //