diff --git a/public/styles/style.css b/public/styles/style.css index 8f1b09cb..fd44482b 100644 --- a/public/styles/style.css +++ b/public/styles/style.css @@ -2459,3 +2459,11 @@ a { margin-right: 4px; border-radius: 5px; } + +.suggestionBox { + position:absolute; + background-color: #6CC; + border-radius:4px; + padding:6px; + box-shadow: 0px 0px 15px #666; +} \ No newline at end of file diff --git a/views/default-min.handlebars b/views/default-min.handlebars index 76f952f2..dcf6bd93 100644 --- a/views/default-min.handlebars +++ b/views/default-min.handlebars @@ -1 +1 @@ - {{{title}}}
{{{title}}}
{{{title2}}}

{{{logoutControl}}}

 

\ No newline at end of file + {{{title}}}
{{{title}}}
{{{title2}}}

{{{logoutControl}}}

 

\ No newline at end of file diff --git a/views/default.handlebars b/views/default.handlebars index 8e1dea3a..b468e4e7 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -6137,7 +6137,7 @@ x += '

'; var currentMeshLinks = currentMesh.links[userinfo._id]; - if (currentMeshLinks && ((currentMeshLinks.rights & 2) != 0)) { x += ' Add User'; } + if (currentMeshLinks && ((currentMeshLinks.rights & 2) != 0)) { x += ' Add Users'; } if ((meshrights & 4) != 0) { if (currentMesh.mtype == 1) { @@ -6337,8 +6337,10 @@ if (xxdialogMode) return; var x = "Allow users to manage this device group and devices in this group."; if (features & 0x00080000) { x += " Users need to login to this server once before they can be added to a device group." } - x += "

"; + x += "

"; x += addHtmlValue('User Names', ''); + x += ""; + x += '
'; x += '
'; x += 'Full Administrator
'; x += 'Edit Device Group
'; @@ -6360,11 +6362,40 @@ Q('dp20username').focus(); } + function p20setname(name) { + name = decodeURIComponent(name); + var xusers = Q('dp20username').value.split(','); + for (var i in xusers) { xusers[i] = xusers[i].trim(); } + xusers[xusers.length - 1] = name; + Q('dp20username').value = xusers.join(', '); + p20validateAddMeshUserDialog(); + } + function p20validateAddMeshUserDialog() { var meshrights = currentMesh.links[userinfo._id].rights; - var ok = true, users = Q('dp20username').value.split(','); - for (var i in users) { var user = users[i].trim(); if (user.length == 0) { ok = false; } else if (user.indexOf('"') >= 0) { ok = false; } } + var ok = true, xusers = Q('dp20username').value.split(','); + for (var i in xusers) { var xuser = xusers[i] = xusers[i].trim(); if (xuser.length == 0) { ok = false; } else if (xuser.indexOf('"') >= 0) { ok = false; } } QE('idx_dlgOkButton', ok); + + // Fill the suggestion box + var showsuggestbox = false, exactMatch = false; + if (users != null) { + var lastuser = xusers[xusers.length - 1].trim(), lastuserl = lastuser.toLowerCase(), matchingUsers = []; + if (lastuser.length > 0) { + for (var i in users) { + if (users[i].name === lastuser) { exactMatch = true; break; } + if (users[i].name.toLowerCase().indexOf(lastuserl) >= 0) { matchingUsers.push(users[i].name); if (matchingUsers.length >= 8) break; } + } + if ((exactMatch == false) && (matchingUsers.length > 0)) { + var x = ''; + for (var i in matchingUsers) { x += '' + matchingUsers[i] + '
'; } + QH('dp20usersuggest', x); + showsuggestbox = true; + } + } + } + QV('dp20usersuggest', showsuggestbox); + QE('p20fulladmin', meshrights == 0xFFFFFFFF); QE('p20editmesh', (!Q('p20fulladmin').checked) && (meshrights == 0xFFFFFFFF)); QE('p20manageusers', !Q('p20fulladmin').checked); diff --git a/views/messenger-min.handlebars b/views/messenger-min.handlebars index 90b8f8bf..59fe7827 100644 --- a/views/messenger-min.handlebars +++ b/views/messenger-min.handlebars @@ -1 +1 @@ - MeshMessenger
MeshMessenger
\ No newline at end of file + MeshMessenger
MeshMessenger
\ No newline at end of file