Browse Source

[fix] simple theme: disable hotkeys when they are not enabled in the preferences

Alexandre Flament 3 years ago
parent
commit
d1c09c84e2

+ 1 - 0
searx/static/themes/simple/src/js/head/00_init.js

@@ -21,6 +21,7 @@
         autocompleter: script.getAttribute('data-autocompleter') === 'true',
         autocompleter: script.getAttribute('data-autocompleter') === 'true',
         search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',
         search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',
         infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
         infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
+        hotkeys: script.getAttribute('data-hotkeys') === 'true',
         static_path: script.getAttribute('data-static-path'),
         static_path: script.getAttribute('data-static-path'),
         translations: JSON.parse(script.getAttribute('data-translations')),
         translations: JSON.parse(script.getAttribute('data-translations')),
     };
     };

+ 15 - 14
searx/static/themes/simple/src/js/main/keyboard.js

@@ -119,20 +119,22 @@ searxng.ready(function() {
     }
     }
   };
   };
 
 
-  searxng.on(document, "keydown", function(e) {
-    // check for modifiers so we don't break browser's hotkeys
-    if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
-      var tagName = e.target.tagName.toLowerCase();
-      if (e.keyCode === 27) {
-        vimKeys[e.keyCode].fun(e);
-      } else {
-        if (e.target === document.body || tagName === 'a' || tagName === 'button') {
-          e.preventDefault();
-          vimKeys[e.keyCode].fun();
+  if (searxng.hotkeys) {
+    searxng.on(document, "keydown", function(e) {
+      // check for modifiers so we don't break browser's hotkeys
+      if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
+        var tagName = e.target.tagName.toLowerCase();
+        if (e.keyCode === 27) {
+          vimKeys[e.keyCode].fun(e);
+        } else {
+          if (e.target === document.body || tagName === 'a' || tagName === 'button') {
+            e.preventDefault();
+            vimKeys[e.keyCode].fun();
+          }
         }
         }
       }
       }
-    }
-  });
+    });
+  }
 
 
   function highlightResult(which) {
   function highlightResult(which) {
     return function(noScroll) {
     return function(noScroll) {
@@ -353,8 +355,7 @@ searxng.ready(function() {
   }
   }
 
 
   function toggleHelp() {
   function toggleHelp() {
-      var helpPanel = document.querySelector('#vim-hotkeys-help');
-      console.log(helpPanel);
+    var helpPanel = document.querySelector('#vim-hotkeys-help');
     if (helpPanel === undefined || helpPanel === null) {
     if (helpPanel === undefined || helpPanel === null) {
        // first call
        // first call
       helpPanel = document.createElement('div');
       helpPanel = document.createElement('div');

+ 1 - 0
searx/templates/simple/base.html

@@ -24,6 +24,7 @@
           data-autocompleter="{% if autocomplete %}true{% else %}false{% endif %}"
           data-autocompleter="{% if autocomplete %}true{% else %}false{% endif %}"
           data-search-on-category-select="{{ 'true' if 'plugins/js/search_on_category_select.js' in scripts else 'false'}}"
           data-search-on-category-select="{{ 'true' if 'plugins/js/search_on_category_select.js' in scripts else 'false'}}"
           data-infinite-scroll="{{ 'true' if 'plugins/js/infinite_scroll.js' in scripts else 'false' }}"
           data-infinite-scroll="{{ 'true' if 'plugins/js/infinite_scroll.js' in scripts else 'false' }}"
+          data-hotkeys="{{ 'true' if 'plugins/js/vim_hotkeys.js' in scripts else 'false' }}"
           data-static-path="{{ url_for('static', filename='themes/simple') }}/"
           data-static-path="{{ url_for('static', filename='themes/simple') }}/"
           data-translations="{{ translations }}"></script>
           data-translations="{{ translations }}"></script>
   <!--<![endif]-->
   <!--<![endif]-->