diff --git a/meshuser.js b/meshuser.js
index 5123bf09..86af7c65 100644
--- a/meshuser.js
+++ b/meshuser.js
@@ -1220,7 +1220,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
if (common.validateString(command.nodeid, 1, 1024) == false) {
if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'msg', result: 'Unable to route', tag: command.tag, responseid: command.responseid })); } catch (ex) { } }
return;
- }
+ }
// Rights check
var requiredRights = null, requiredNonRights = null;
diff --git a/views/default.handlebars b/views/default.handlebars
index 4c4d1edf..58622baa 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -4380,7 +4380,7 @@
}
var x = "Select an operation to perform on all selected devices. Actions will be performed only with proper rights." + '
';
- x += addHtmlValue("Operation", '');
+ x += addHtmlValue("Operation", '');
setDialogMode(2, "Group Action", 3, groupActionFunctionEx, x);
}
@@ -4446,6 +4446,14 @@
x += addHtmlValue("Operation", '');
x += addHtmlValue("Tags", '');
setDialogMode(2, "Edit Device Tags", 3, d2groupActionFunctionTagsExec, x);
+ } else if (op == 108) {
+ // Device notification
+ var x = "Perform batch device notification" + '
';
+ x += '';
+ x += '
';
+ x += '';
+ setDialogMode(2, "Device Notification", 3, d2groupActionFunctionNotifyExec, x);
+ Q('d2notifyMsg').focus();
} else {
// Power operation
meshserver.send({ action: 'poweraction', nodeids: getCheckedDevices(), actiontype: parseInt(op) });
@@ -4453,6 +4461,17 @@
}
}
+ function d2groupActionFunctionNotifyExec() {
+ var op = Q('d2deviceop').value, title = Q('dp2notifyTitle').value, msg = Q('d2notifyMsg').value, chkNodeIds = getCheckedDevices();
+ if (msg.length == 0) return;
+ if (title == '') { title = '{{{title}}}'; }
+ if (op == 1) { // MessageBox
+ for (var i = 0; i < chkNodeIds.length; i++) { meshserver.send({ action: 'msg', type: 'messagebox', nodeid: chkNodeIds[i], title: title, msg: msg }); }
+ } else if (op == 2) { // Toast
+ meshserver.send({ action: 'toast', nodeids: chkNodeIds, title: title, msg: msg });
+ }
+ }
+
function d2groupActionFunctionTagsExec() {
var chkNodeIds = getCheckedDevices(), op = Q('d2deviceop').value, optags = Q('dp10devicevalue').value;
if (op == 2) { // Set tags
@@ -5964,7 +5983,6 @@
}
function deviceMessageFunctionEx() {
- if (desktop == null || desktop.State != 3) return;
meshserver.send({ action: 'msg', type: 'messagebox', nodeid: currentNode._id, title: '{{{title}}}', msg: Q('d2devMessage').value });
}