forked from Ponysearch/Ponysearch
[mod] simple theme: fix eslint errors, fix VIM keys
* VIM keys: fix the next page and previous pages (n, p keys) * Map: Enable the wikipedia map (the layer was initialized but not included)
This commit is contained in:
parent
183c856396
commit
f77f797f8c
7 changed files with 56 additions and 50 deletions
|
@ -15,6 +15,7 @@
|
||||||
* (C) 2019 by Alexandre Flament
|
* (C) 2019 by Alexandre Flament
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
/* global DocumentTouch:readonly */
|
||||||
(function(w, d) {
|
(function(w, d) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ window.searx = (function(w, d) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
searx.http = function(method, url, callback) {
|
searx.http = function(method, url) {
|
||||||
var req = new XMLHttpRequest(),
|
var req = new XMLHttpRequest(),
|
||||||
resolve = function() {},
|
resolve = function() {},
|
||||||
reject = function() {},
|
reject = function() {},
|
||||||
|
@ -148,15 +148,14 @@ window.searx = (function(w, d) {
|
||||||
};
|
};
|
||||||
|
|
||||||
searx.insertBefore = function (newNode, referenceNode) {
|
searx.insertBefore = function (newNode, referenceNode) {
|
||||||
element.parentNode.insertBefore(newNode, referenceNode);
|
referenceNode.parentNode.insertBefore(newNode, referenceNode);
|
||||||
};
|
};
|
||||||
|
|
||||||
searx.insertAfter = function(newNode, referenceNode) {
|
searx.insertAfter = function(newNode, referenceNode) {
|
||||||
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
|
referenceNode.parentNode.insertAfter(newNode, referenceNode.nextSibling);
|
||||||
};
|
};
|
||||||
|
|
||||||
searx.on('.close', 'click', function(e) {
|
searx.on('.close', 'click', function() {
|
||||||
var el = e.target || e.srcElement;
|
|
||||||
this.parentNode.classList.add('invisible');
|
this.parentNode.classList.add('invisible');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
/*global searx*/
|
||||||
|
|
||||||
searx.ready(function() {
|
searx.ready(function() {
|
||||||
|
|
||||||
searx.on('.result', 'click', function() {
|
searx.on('.result', 'click', function() {
|
||||||
|
@ -80,13 +82,13 @@ searx.ready(function() {
|
||||||
},
|
},
|
||||||
80: {
|
80: {
|
||||||
key: 'p',
|
key: 'p',
|
||||||
fun: pageButtonClick(0),
|
fun: GoToPreviousPage(),
|
||||||
des: 'go to previous page',
|
des: 'go to previous page',
|
||||||
cat: 'Results'
|
cat: 'Results'
|
||||||
},
|
},
|
||||||
78: {
|
78: {
|
||||||
key: 'n',
|
key: 'n',
|
||||||
fun: pageButtonClick(1),
|
fun: GoToNextPage(),
|
||||||
des: 'go to next page',
|
des: 'go to next page',
|
||||||
cat: 'Results'
|
cat: 'Results'
|
||||||
},
|
},
|
||||||
|
@ -118,7 +120,7 @@ searx.ready(function() {
|
||||||
|
|
||||||
searx.on(document, "keydown", function(e) {
|
searx.on(document, "keydown", function(e) {
|
||||||
// check for modifiers so we don't break browser's hotkeys
|
// check for modifiers so we don't break browser's hotkeys
|
||||||
if (vimKeys.hasOwnProperty(e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
|
if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {
|
||||||
var tagName = e.target.tagName.toLowerCase();
|
var tagName = e.target.tagName.toLowerCase();
|
||||||
if (e.keyCode === 27) {
|
if (e.keyCode === 27) {
|
||||||
if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') {
|
if (tagName === 'input' || tagName === 'select' || tagName === 'textarea') {
|
||||||
|
@ -216,21 +218,23 @@ searx.ready(function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function pageButtonClick(num) {
|
function pageButtonClick(css_selector) {
|
||||||
return function() {
|
return function() {
|
||||||
var buttons = $('div#pagination button[type="submit"]');
|
var button = document.querySelector(css_selector);
|
||||||
if (buttons.length !== 2) {
|
if (button) {
|
||||||
console.log('page navigation with this theme is not supported');
|
button.click();
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (num >= 0 && num < buttons.length) {
|
|
||||||
buttons[num].click();
|
|
||||||
} else {
|
|
||||||
console.log('pageButtonClick(): invalid argument');
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GoToNextPage() {
|
||||||
|
return pageButtonClick('nav#pagination .next_page button[type="submit"]');
|
||||||
|
}
|
||||||
|
|
||||||
|
function GoToPreviousPage() {
|
||||||
|
return pageButtonClick('nav#pagination .previous_page button[type="submit"]');
|
||||||
|
}
|
||||||
|
|
||||||
function scrollPageToSelected() {
|
function scrollPageToSelected() {
|
||||||
var sel = document.querySelector('.result[data-vim-selected]');
|
var sel = document.querySelector('.result[data-vim-selected]');
|
||||||
if (sel === null) {
|
if (sel === null) {
|
||||||
|
@ -308,9 +312,9 @@ searx.ready(function() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var html = '<a href="#" class="close" aria-label="close" title="close">×</a>';
|
var html = '<a href="#" class="close" aria-label="close" title="close">×</a>';
|
||||||
html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';
|
html += '<h3>How to navigate searx with Vim-like hotkeys</h3>';
|
||||||
html += '<table>';
|
html += '<table>';
|
||||||
|
|
||||||
for (var i = 0; i < sorted.length; i++) {
|
for (var i = 0; i < sorted.length; i++) {
|
||||||
var cat = categories[sorted[i]];
|
var cat = categories[sorted[i]];
|
||||||
|
@ -338,29 +342,29 @@ searx.ready(function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '</table>';
|
html += '</table>';
|
||||||
|
|
||||||
divElement.innerHTML = html;
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleHelp() {
|
|
||||||
var helpPanel = document.querySelector('#vim-hotkeys-help');
|
|
||||||
console.log(helpPanel);
|
|
||||||
if (helpPanel === undefined || helpPanel === null) {
|
|
||||||
// first call
|
|
||||||
helpPanel = document.createElement('div');
|
|
||||||
helpPanel.id = 'vim-hotkeys-help';
|
|
||||||
helpPanel.className='dialog-modal';
|
|
||||||
helpPanel.style='width: 40%';
|
|
||||||
initHelpContent(helpPanel);
|
|
||||||
var body = document.getElementsByTagName('body')[0];
|
|
||||||
body.appendChild(helpPanel);
|
|
||||||
} else {
|
|
||||||
// togggle hidden
|
|
||||||
helpPanel.classList.toggle('invisible');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
divElement.innerHTML = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggleHelp() {
|
||||||
|
var helpPanel = document.querySelector('#vim-hotkeys-help');
|
||||||
|
console.log(helpPanel);
|
||||||
|
if (helpPanel === undefined || helpPanel === null) {
|
||||||
|
// first call
|
||||||
|
helpPanel = document.createElement('div');
|
||||||
|
helpPanel.id = 'vim-hotkeys-help';
|
||||||
|
helpPanel.className='dialog-modal';
|
||||||
|
helpPanel.style='width: 40%';
|
||||||
|
initHelpContent(helpPanel);
|
||||||
|
initHelpContent(helpPanel);
|
||||||
|
initHelpContent(helpPanel);
|
||||||
|
var body = document.getElementsByTagName('body')[0];
|
||||||
|
body.appendChild(helpPanel);
|
||||||
|
} else {
|
||||||
|
// togggle hidden
|
||||||
|
helpPanel.classList.toggle('invisible');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
* (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
|
* (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
|
||||||
* (C) 2017 by Alexandre Flament, <alex@al-f.net>
|
* (C) 2017 by Alexandre Flament, <alex@al-f.net>
|
||||||
*/
|
*/
|
||||||
|
/* global L */
|
||||||
(function (w, d, searx) {
|
(function (w, d, searx) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
@ -47,7 +48,7 @@
|
||||||
var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
|
var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
|
||||||
var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
|
var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
|
||||||
var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
|
var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
|
||||||
var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
|
var osmWikimediaAttrib = 'Wikimedia maps | Maps data © <a href="https://openstreetmap.org">OpenStreetMap contributors</a>';
|
||||||
var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
|
var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
|
||||||
// init map view
|
// init map view
|
||||||
if(map_bounds) {
|
if(map_bounds) {
|
||||||
|
@ -69,8 +70,8 @@
|
||||||
map.addLayer(osmMapnik);
|
map.addLayer(osmMapnik);
|
||||||
|
|
||||||
var baseLayers = {
|
var baseLayers = {
|
||||||
"OSM Mapnik": osmMapnik/*,
|
"OSM Mapnik": osmMapnik,
|
||||||
"OSM Wikimedia": osmWikimedia*/
|
"OSM Wikimedia": osmWikimedia,
|
||||||
};
|
};
|
||||||
|
|
||||||
L.control.layers(baseLayers).addTo(map);
|
L.control.layers(baseLayers).addTo(map);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 10, 200);
|
searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 10, 200);
|
||||||
searx.image_thumbnail_layout.watch();
|
searx.image_thumbnail_layout.watch();
|
||||||
|
|
||||||
searx.on('.btn-collapse', 'click', function(event) {
|
searx.on('.btn-collapse', 'click', function() {
|
||||||
var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');
|
var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');
|
||||||
var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');
|
var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');
|
||||||
var target = this.getAttribute('data-target');
|
var target = this.getAttribute('data-target');
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
targetElement.classList.toggle('invisible');
|
targetElement.classList.toggle('invisible');
|
||||||
});
|
});
|
||||||
|
|
||||||
searx.on('.media-loader', 'click', function(event) {
|
searx.on('.media-loader', 'click', function() {
|
||||||
var target = this.getAttribute('data-target');
|
var target = this.getAttribute('data-target');
|
||||||
var iframe_load = d.querySelector(target + ' > iframe');
|
var iframe_load = d.querySelector(target + ' > iframe');
|
||||||
var srctest = iframe_load.getAttribute('src');
|
var srctest = iframe_load.getAttribute('src');
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* (C) 2017 by Alexandre Flament, <alex@al-f.net>
|
* (C) 2017 by Alexandre Flament, <alex@al-f.net>
|
||||||
*/
|
*/
|
||||||
|
/* global AutoComplete */
|
||||||
(function(w, d, searx) {
|
(function(w, d, searx) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
searx.ready(function() {
|
searx.ready(function() {
|
||||||
qinput = d.getElementById(qinput_id);
|
qinput = d.getElementById(qinput_id);
|
||||||
|
|
||||||
function placeCursorAtEndOnce(e) {
|
function placeCursorAtEndOnce() {
|
||||||
if (firstFocus) {
|
if (firstFocus) {
|
||||||
placeCursorAtEnd(qinput);
|
placeCursorAtEnd(qinput);
|
||||||
firstFocus = false;
|
firstFocus = false;
|
||||||
|
@ -98,7 +99,7 @@
|
||||||
if (qinput !== null && searx.search_on_category_select) {
|
if (qinput !== null && searx.search_on_category_select) {
|
||||||
d.querySelector('.help').className='invisible';
|
d.querySelector('.help').className='invisible';
|
||||||
|
|
||||||
searx.on('#categories input', 'change', function(e) {
|
searx.on('#categories input', 'change', function() {
|
||||||
var i, categories = d.querySelectorAll('#categories input[type="checkbox"]');
|
var i, categories = d.querySelectorAll('#categories input[type="checkbox"]');
|
||||||
for(i=0; i<categories.length; i++) {
|
for(i=0; i<categories.length; i++) {
|
||||||
if (categories[i] !== this && categories[i].checked) {
|
if (categories[i] !== this && categories[i].checked) {
|
||||||
|
|
|
@ -146,7 +146,7 @@
|
||||||
{% if paging %}
|
{% if paging %}
|
||||||
<nav id="pagination">
|
<nav id="pagination">
|
||||||
{% if pageno > 1 %}
|
{% if pageno > 1 %}
|
||||||
<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
|
<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="previous_page">
|
||||||
<div class="{% if rtl %}right{% else %}left{% endif %}">
|
<div class="{% if rtl %}right{% else %}left{% endif %}">
|
||||||
<input type="hidden" name="q" value="{{ q|e }}" >
|
<input type="hidden" name="q" value="{{ q|e }}" >
|
||||||
{{- engine_data_form(engine_data) -}}
|
{{- engine_data_form(engine_data) -}}
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
|
<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="next_page">
|
||||||
<div class="{% if rtl %}left{% else %}right{% endif %}">
|
<div class="{% if rtl %}left{% else %}right{% endif %}">
|
||||||
<input type="hidden" name="q" value="{{ q|e }}" >
|
<input type="hidden" name="q" value="{{ q|e }}" >
|
||||||
{{- engine_data_form(engine_data) -}}
|
{{- engine_data_form(engine_data) -}}
|
||||||
|
|
Loading…
Reference in a new issue