From c569504ce7d21ba27ccb6f53fa7a9c8e70e6b92c Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Thu, 14 May 2015 23:04:30 +0200 Subject: [PATCH] Added ability to turn keyboard shortcuts off --- public_html/js/BrowsingSettings.js | 1 + public_html/js/Keyboard.js | 13 ++++++--- .../UserBrowsingSettingsPresenter.js | 1 + public_html/templates/browsing-settings.tpl | 10 +++++++ src/Upgrades/Upgrade37.php | 28 +++++++++++++++++++ src/di.php | 1 + 6 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 src/Upgrades/Upgrade37.php diff --git a/public_html/js/BrowsingSettings.js b/public_html/js/BrowsingSettings.js index 0f9e2b3b..79c8a881 100644 --- a/public_html/js/BrowsingSettings.js +++ b/public_html/js/BrowsingSettings.js @@ -32,6 +32,7 @@ App.BrowsingSettings = function( sketchy: true, unsafe: true, }, + keyboardShortcuts: true, }; } diff --git a/public_html/js/Keyboard.js b/public_html/js/Keyboard.js index 548ca9f8..33dd3f8f 100644 --- a/public_html/js/Keyboard.js +++ b/public_html/js/Keyboard.js @@ -1,7 +1,8 @@ var App = App || {}; -App.Keyboard = function(jQuery, mousetrap) { +App.Keyboard = function(jQuery, mousetrap, browsingSettings) { + var enabled = browsingSettings.getSettings().keyboardShortcuts; var oldStopCallback = mousetrap.stopCallback; mousetrap.stopCallback = function(e, element, combo, sequence) { if (combo.indexOf('ctrl') === -1 && e.ctrlKey) { @@ -28,12 +29,16 @@ App.Keyboard = function(jQuery, mousetrap) { function keyup(key, callback) { unbind(key); - mousetrap.bind(key, callback, 'keyup'); + if (enabled) { + mousetrap.bind(key, callback, 'keyup'); + } } function keydown(key, callback) { unbind(key); - mousetrap.bind(key, callback); + if (enabled) { + mousetrap.bind(key, callback); + } } function reset() { @@ -53,4 +58,4 @@ App.Keyboard = function(jQuery, mousetrap) { }; }; -App.DI.register('keyboard', ['jQuery', 'mousetrap'], App.Keyboard); +App.DI.register('keyboard', ['jQuery', 'mousetrap', 'browsingSettings'], App.Keyboard); diff --git a/public_html/js/Presenters/UserBrowsingSettingsPresenter.js b/public_html/js/Presenters/UserBrowsingSettingsPresenter.js index 589de54a..fe15df4f 100644 --- a/public_html/js/Presenters/UserBrowsingSettingsPresenter.js +++ b/public_html/js/Presenters/UserBrowsingSettingsPresenter.js @@ -51,6 +51,7 @@ App.Presenters.UserBrowsingSettingsPresenter = function( sketchy: $el.find('[name=listSketchyPosts]').is(':checked'), unsafe: $el.find('[name=listUnsafePosts]').is(':checked'), }, + keyboardShortcuts: $el.find('[name=keyboardShortcuts]').is(':checked'), }; promise.wait(browsingSettings.setSettings(newSettings)) diff --git a/public_html/templates/browsing-settings.tpl b/public_html/templates/browsing-settings.tpl index ff66c4b6..bbf428de 100644 --- a/public_html/templates/browsing-settings.tpl +++ b/public_html/templates/browsing-settings.tpl @@ -41,6 +41,16 @@ +
+ +
+ type="checkbox" id="browsing-settings-keyboard-shortcuts" name="keyboardShortcuts"/> + +
+
+
diff --git a/src/Upgrades/Upgrade37.php b/src/Upgrades/Upgrade37.php new file mode 100644 index 00000000..5d2f163f --- /dev/null +++ b/src/Upgrades/Upgrade37.php @@ -0,0 +1,28 @@ +userDao = $userDao; + } + + public function run(DatabaseConnection $databaseConnection) + { + foreach ($this->userDao->findAll() as $user) + { + echo $user->getName() . PHP_EOL; + $browsingSettings = $user->getBrowsingSettings(); + if ($browsingSettings === null) + $browsingSettings = new \StdClass; + $browsingSettings->keyboardShortcuts = true; + $user->setBrowsingSettings($browsingSettings); + $this->userDao->save($user); + } + } +} diff --git a/src/di.php b/src/di.php index 5b2f8459..3d3aebc2 100644 --- a/src/di.php +++ b/src/di.php @@ -53,6 +53,7 @@ return [ $container->get(\Szurubooru\Upgrades\Upgrade34::class), $container->get(\Szurubooru\Upgrades\Upgrade35::class), $container->get(\Szurubooru\Upgrades\Upgrade36::class), + $container->get(\Szurubooru\Upgrades\Upgrade37::class), ]; }),