From 80931423403415eeae68c5be7756d59719dccaa4 Mon Sep 17 00:00:00 2001
From: Julian Lam <julian@nodebb.org>
Date: Fri, 18 Sep 2020 15:40:08 -0400
Subject: [PATCH] feat: ctrl-s now saves on settingsv1/v2 forms

... because nobody ever uses ctrl-s on a browser window.
---
 public/src/admin/settings.js   |  7 ++++++-
 public/src/modules/settings.js | 10 ++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/public/src/admin/settings.js b/public/src/admin/settings.js
index e5c3358b82..f106503c6e 100644
--- a/public/src/admin/settings.js
+++ b/public/src/admin/settings.js
@@ -1,7 +1,7 @@
 'use strict';
 
 
-define('admin/settings', ['uploader'], function (uploader) {
+define('admin/settings', ['uploader', 'mousetrap'], function (uploader, mousetrap) {
 	var Settings = {};
 
 	Settings.init = function () {
@@ -90,6 +90,11 @@ define('admin/settings', ['uploader'], function (uploader) {
 			});
 		});
 
+		mousetrap.bind('ctrl+s', function (ev) {
+			saveBtn.click();
+			ev.preventDefault();
+		});
+
 		handleUploads();
 		setupTagsInput();
 
diff --git a/public/src/modules/settings.js b/public/src/modules/settings.js
index 106cf7ad6a..8593e12689 100644
--- a/public/src/modules/settings.js
+++ b/public/src/modules/settings.js
@@ -509,6 +509,16 @@ define('settings', function () {
 					app.flags._unsaved = true;
 				});
 
+				var saveEl = document.getElementById('save');
+				if (saveEl) {
+					require(['mousetrap'], function (mousetrap) {
+						mousetrap.bind('ctrl+s', function (ev) {
+							saveEl.click();
+							ev.preventDefault();
+						});
+					});
+				}
+
 				callback(null, values);
 			});
 		},