Added scrollToTop option in domain section of the config.json.

This commit is contained in:
Ylian Saint-Hilaire 2023-10-08 21:33:23 -07:00
parent 78ef26ec3e
commit 6e1138ee5b
7 changed files with 3248 additions and 3185 deletions

View File

@ -1039,6 +1039,11 @@
"default": 0, "default": 0,
"description": "0 = User selects day/night mode, 1 = Always night mode, 2 = Always day mode" "description": "0 = User selects day/night mode, 1 = Always night mode, 2 = Always day mode"
}, },
"scrollToTop": {
"type": "boolean",
"default": false,
"description": "If true, a Scroll To Top button in the devices tab."
},
"userQuota": { "userQuota": {
"type": "integer" "type": "integer"
}, },

View File

@ -37,22 +37,22 @@
"sample-config-advanced.json" "sample-config-advanced.json"
], ],
"dependencies": { "dependencies": {
"archiver": "5.3.2", "archiver": "^5.3.1",
"body-parser": "1.20.2", "body-parser": "^1.19.0",
"cbor": "5.2.0", "cbor": "~5.2.0",
"compression": "1.7.4", "compression": "^1.7.4",
"cookie-session": "2.0.0", "cookie-session": "^2.0.0",
"express": "4.18.2", "express": "^4.17.0",
"express-handlebars": "5.3.5", "express-handlebars": "^5.3.5",
"express-ws": "5.0.2", "express-ws": "^4.0.0",
"ipcheck": "0.1.0", "ipcheck": "^0.1.0",
"minimist": "1.2.8", "minimist": "^1.2.5",
"multiparty": "4.2.3", "multiparty": "^4.2.1",
"@yetzt/nedb": "1.8.0", "@yetzt/nedb": "^1.8.0",
"node-forge": "1.3.1", "node-forge": "^1.0.0",
"ua-parser-js": "1.0.36", "ua-parser-js": "^1.0.35",
"ws": "8.14.2", "ws": "^5.2.3",
"yauzl": "2.10.0" "yauzl": "^2.10.0"
}, },
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"

File diff suppressed because one or more lines are too long

View File

@ -183,6 +183,7 @@
"_maxDeviceView": 1000, "_maxDeviceView": 1000,
"_unknownUserRootRedirect": "https://www.youtube.com/watch?v=2Q_ZzBGPdqE", "_unknownUserRootRedirect": "https://www.youtube.com/watch?v=2Q_ZzBGPdqE",
"_nightMode": 1, "_nightMode": 1,
"_scrollToTop": true,
"_userQuota": 1048576, "_userQuota": 1048576,
"_meshQuota": 248576, "_meshQuota": 248576,
"_loginKey": [ "abc", "123" ], "_loginKey": [ "abc", "123" ],

File diff suppressed because it is too large Load Diff

View File

@ -317,7 +317,7 @@
<img style="cursor:pointer;margin-top:4px;display:none" title="Expand All" id="ExpandAllButton" src="images/icon-expand.png" loading=lazy width=9 height=11 onclick="cmexpandaction(1)" /> <img style="cursor:pointer;margin-top:4px;display:none" title="Expand All" id="ExpandAllButton" src="images/icon-expand.png" loading=lazy width=9 height=11 onclick="cmexpandaction(1)" />
<input type=button id=SelectAllButton onclick="selectallButtonFunction();" value="Select All" />&nbsp; <input type=button id=SelectAllButton onclick="selectallButtonFunction();" value="Select All" />&nbsp;
<input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />&nbsp; <input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />&nbsp;
<input type=button id=ScrollToTopButton onclick="onDevicesScroll(true);" value="Scroll To Top" />&nbsp; <input type=button id=ScrollToTopButton onclick="onDevicesScroll(true);" style="display:none;margin-right:4px" value="Scroll To Top" />
<input id=SearchInput type=search autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any"/>&nbsp; <input id=SearchInput type=search autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any"/>&nbsp;
<span id=SearchInputClearButton style="display:none;position:relative"><img src="images/x16.png" type="button" onclick="clearDeviceSearch()" style="position:absolute;cursor:pointer;left:-18px;top:-8px" srcset="images/x32.png 2x"/></span> <span id=SearchInputClearButton style="display:none;position:relative"><img src="images/x16.png" type="button" onclick="clearDeviceSearch()" style="position:absolute;cursor:pointer;left:-18px;top:-8px" srcset="images/x32.png 2x"/></span>
<select id=DevFilterSelect onchange=onOnlineCheckBox(event) title="Device Filter"> <select id=DevFilterSelect onchange=onOnlineCheckBox(event) title="Device Filter">
@ -1764,6 +1764,9 @@
// Fix HTML words that in english have two or more meanings // Fix HTML words that in english have two or more meanings
Q('DeskType').value = multiTranslate("[KeyboardTyping]|Type"); Q('DeskType').value = multiTranslate("[KeyboardTyping]|Type");
// Show the "Scroll to top" button
QV('ScrollToTopButton', (features2 & 0x08000000) != 0);
} }
function refreshCookieSession() { function refreshCookieSession() {

View File

@ -3224,6 +3224,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
if ((typeof domain.terminal == 'object') && (domain.terminal.sshconnect === false)) { features2 += 0x01000000; } // Remove the "SSH Connect" button in the "Terminal" tab when the device is agent managed if ((typeof domain.terminal == 'object') && (domain.terminal.sshconnect === false)) { features2 += 0x01000000; } // Remove the "SSH Connect" button in the "Terminal" tab when the device is agent managed
if ((parent.msgserver != null) && (parent.msgserver.providers != 0)) { features2 += 0x02000000; } // User messaging server is enabled if ((parent.msgserver != null) && (parent.msgserver.providers != 0)) { features2 += 0x02000000; } // User messaging server is enabled
if ((parent.msgserver != null) && (parent.msgserver.providers != 0) && ((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.msg2factor != false))) { features2 += 0x04000000; } // User messaging 2FA is allowed if ((parent.msgserver != null) && (parent.msgserver.providers != 0) && ((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.msg2factor != false))) { features2 += 0x04000000; } // User messaging 2FA is allowed
if (domain.scrolltotop == true) { features2 += 0x08000000; } // Show the "Scroll to top" button
return { features: features, features2: features2 }; return { features: features, features2: features2 };
} }