forked from Ponysearch/Ponysearch
Ajax loading + Tweaks of CSS
This commit is contained in:
parent
d740e7384a
commit
e181041f11
10 changed files with 147 additions and 55 deletions
File diff suppressed because one or more lines are too long
BIN
searx/static/themes/pix-art/img/searx-pixel-small.png
Normal file
BIN
searx/static/themes/pix-art/img/searx-pixel-small.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 238 B |
BIN
searx/static/themes/pix-art/img/spinner.gif
Normal file
BIN
searx/static/themes/pix-art/img/spinner.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
|
@ -47,3 +47,97 @@ if(searx.autocompleter) {
|
||||||
|
|
||||||
})(window, document);
|
})(window, document);
|
||||||
|
|
||||||
|
var xmlHttp
|
||||||
|
|
||||||
|
function GetXmlHttpObject(){
|
||||||
|
|
||||||
|
var xmlHttp = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Firefox, Opera 8.0+, Safari
|
||||||
|
xmlHttp = new XMLHttpRequest();
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
// Internet Explorer
|
||||||
|
try {
|
||||||
|
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
|
||||||
|
}
|
||||||
|
catch (e){
|
||||||
|
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return xmlHttp;
|
||||||
|
}
|
||||||
|
|
||||||
|
var timer;
|
||||||
|
|
||||||
|
// Calculate the rating
|
||||||
|
function load_more(query,page){
|
||||||
|
|
||||||
|
xmlHttp = GetXmlHttpObject();
|
||||||
|
clearTimeout(timer);
|
||||||
|
|
||||||
|
if(xmlHttp == null){
|
||||||
|
alert ("Your browser does not support AJAX!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
favicons[page] = [];
|
||||||
|
|
||||||
|
xmlHttp.onreadystatechange = function(){
|
||||||
|
|
||||||
|
var loader = document.getElementById('load_more');
|
||||||
|
|
||||||
|
if (xmlHttp.readyState == 4){
|
||||||
|
|
||||||
|
//loader.style.display = 'none';
|
||||||
|
var res = xmlHttp.responseText;
|
||||||
|
|
||||||
|
//loader.style.display = 'block';
|
||||||
|
//loader.innerHTML = '<div class="voted">Vote pris en compte</div>';
|
||||||
|
clearTimeout(timer);
|
||||||
|
timer = setTimeout(function(){},6000);
|
||||||
|
|
||||||
|
var results = document.getElementById('results_list');
|
||||||
|
//results_list.innerHTML += res;
|
||||||
|
var newNode = document.createElement('span');
|
||||||
|
newNode.innerHTML = res;
|
||||||
|
results_list.appendChild(newNode);
|
||||||
|
|
||||||
|
var scripts = newNode.getElementsByTagName('script');
|
||||||
|
for (var ix = 0; ix < scripts.length; ix++) {
|
||||||
|
eval(scripts[ix].text);
|
||||||
|
}
|
||||||
|
|
||||||
|
load_images(page);
|
||||||
|
document.getElementById("load_more").onclick = function() { load_more(query, (page+1)); }
|
||||||
|
loader.removeAttribute("disabled");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//loader.innerHTML = '<img src="images/rating_loading.gif" alt="loading" />';
|
||||||
|
loader.disabled = 'disabled';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var url = "/";
|
||||||
|
var params = "q="+query+"&pageno="+page+"&category_general=1&category_files=1&category_images=1&category_it=1&category_map=1&category_music=1&category_news=1&category_social+media=1&category_videos=1";
|
||||||
|
xmlHttp.open("POST",url,true);
|
||||||
|
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||||
|
xmlHttp.setRequestHeader("Content-length", params.length);
|
||||||
|
xmlHttp.setRequestHeader("Connection", "close");
|
||||||
|
xmlHttp.send(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
function load_images(page){
|
||||||
|
var arrayLength = favicons[page].length;
|
||||||
|
for (var i = 1; i < arrayLength+1; i++) {
|
||||||
|
var img = new Image();
|
||||||
|
img.setAttribute("i",i)
|
||||||
|
img.onload = function () {
|
||||||
|
var id = 'canvas-'+page+'-'+this.getAttribute("i");
|
||||||
|
var can = document.getElementById(id);
|
||||||
|
var ctx = can.getContext("2d");
|
||||||
|
ctx.drawImage(this, 0, 0, 16, 16);
|
||||||
|
};
|
||||||
|
img.src = favicons[page][i];
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,15 +35,15 @@
|
||||||
|
|
||||||
#search_submit {
|
#search_submit {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 13px;
|
top: 15px;
|
||||||
right: 1px;
|
right: 5px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: 0;
|
border: 0;
|
||||||
background: url('../img/search-icon-pixel.png') no-repeat;
|
background: url('../img/search-icon-pixel.png') no-repeat;
|
||||||
background-size: 24px 24px;
|
background-size: 24px 24px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
height: 30px;
|
height: 24px;
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,6 @@ canvas {
|
||||||
|
|
||||||
@import "search.less";
|
@import "search.less";
|
||||||
|
|
||||||
// Autocompleter
|
|
||||||
|
|
||||||
|
|
||||||
.row {
|
.row {
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
|
@ -116,8 +113,8 @@ div.title {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="submit"] {
|
input[type="button"] {
|
||||||
padding: 2px 6px;
|
padding: 4px 12px;
|
||||||
margin: 2px 4px;
|
margin: 2px 4px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background: @color-download-button-background;
|
background: @color-download-button-background;
|
||||||
|
@ -127,6 +124,10 @@ input[type="submit"] {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[type="button"]:disabled {
|
||||||
|
cursor: progress;
|
||||||
|
}
|
||||||
|
|
||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
@ -136,6 +137,12 @@ fieldset {
|
||||||
border: 1px solid @color-settings-fieldset;
|
border: 1px solid @color-settings-fieldset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#logo {
|
||||||
|
position: absolute;
|
||||||
|
top: 13px;
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
#categories {
|
#categories {
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
.user-select;
|
.user-select;
|
||||||
|
@ -299,7 +306,7 @@ tr {
|
||||||
|
|
||||||
#pagination {
|
#pagination {
|
||||||
clear: both;
|
clear: both;
|
||||||
|
text-align: center;
|
||||||
br {
|
br {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
@ -346,7 +353,7 @@ tr {
|
||||||
div.title {
|
div.title {
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,6 +405,10 @@ tr {
|
||||||
#search_url {
|
#search_url {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#logo {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.favicon {
|
.favicon {
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
{% block meta %}{% endblock %}
|
{% block meta %}{% endblock %}
|
||||||
{% block head %}
|
{% block head %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
<script type="text/javascript">
|
||||||
|
var favicons = [[]];
|
||||||
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="container">
|
<div id="container">
|
||||||
|
@ -23,6 +26,9 @@
|
||||||
searx = {};
|
searx = {};
|
||||||
</script>
|
</script>
|
||||||
<script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
|
<script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
load_images(1);
|
||||||
|
</script>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -2,12 +2,5 @@
|
||||||
<canvas id="canvas-{{ pageno }}-{{ index }}" class="icon" width="16" height="16"></canvas>
|
<canvas id="canvas-{{ pageno }}-{{ index }}" class="icon" width="16" height="16"></canvas>
|
||||||
</a>
|
</a>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var img{{ pageno }}_{{ index }} = new Image();
|
favicons[{{ pageno }}][{{ index }}] = 'http://{{ result.url | extract_domain }}/favicon.ico';
|
||||||
img{{ pageno }}_{{ index }}.src = 'http://{{ result.url | extract_domain }}/favicon.ico';
|
|
||||||
|
|
||||||
img{{ pageno }}_{{ index }}.onload = function () {
|
|
||||||
var can{{ pageno }}_{{ index }} = document.getElementById('canvas-{{ pageno }}-{{ index }}');
|
|
||||||
var ctx = can{{ pageno }}_{{ index }}.getContext("2d");
|
|
||||||
ctx.drawImage(img{{ pageno }}_{{ index }}, 0, 0, 16, 16);
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
|
@ -1,44 +1,32 @@
|
||||||
{% extends "pix-art/base.html" %}
|
{% if pageno > 1 %}
|
||||||
{% block title %}{{ q }} - {% endblock %}
|
|
||||||
{% block meta %}{% endblock %}
|
|
||||||
{% block content %}
|
|
||||||
<div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div>
|
|
||||||
<div class="small search center">
|
|
||||||
{% include 'pix-art/search.html' %}
|
|
||||||
</div>
|
|
||||||
<div id="results">
|
|
||||||
{% for result in results %}
|
{% for result in results %}
|
||||||
{% set index = loop.index %}
|
{% set index = loop.index %}
|
||||||
{% include 'pix-art/result_templates/default.html' %}
|
{% include 'pix-art/result_templates/default.html' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
{% if paging %}
|
{% extends "pix-art/base.html" %}
|
||||||
|
{% block title %}{{ q }} - {% endblock %}
|
||||||
|
{% block meta %}{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<div id="logo"><a href="./"><img src="{{ url_for('static', filename='img/searx-pixel-small.png') }}" alt="Searx Logo"/></a></div>
|
||||||
|
<div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div>
|
||||||
|
<div class="small search center">
|
||||||
|
{% include 'pix-art/search.html' %}
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
favicons[{{ pageno }}] = [];
|
||||||
|
</script>
|
||||||
|
<div id="results">
|
||||||
|
<span id="results_list">
|
||||||
|
{% for result in results %}
|
||||||
|
{% set index = loop.index %}
|
||||||
|
{% include 'pix-art/result_templates/default.html' %}
|
||||||
|
{% endfor %}
|
||||||
|
</span>
|
||||||
<div id="pagination">
|
<div id="pagination">
|
||||||
{% if pageno > 1 %}
|
|
||||||
<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
|
|
||||||
<div class="{% if rtl %}right{% else %}left{% endif %}">
|
|
||||||
<input type="hidden" name="q" value="{{ q }}" />
|
|
||||||
{% for category in selected_categories %}
|
|
||||||
<input type="hidden" name="category_{{ category }}" value="1"/>
|
|
||||||
{% endfor %}
|
|
||||||
<input type="hidden" name="pageno" value="{{ pageno-1 }}" />
|
|
||||||
<input type="submit" value="<< {{ _('previous page') }}" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
|
||||||
<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
|
|
||||||
<div class="{% if rtl %}left{% else %}right{% endif %}">
|
|
||||||
{% for category in selected_categories %}
|
|
||||||
<input type="hidden" name="category_{{ category }}" value="1"/>
|
|
||||||
{% endfor %}
|
|
||||||
<input type="hidden" name="q" value="{{ q }}" />
|
|
||||||
<input type="hidden" name="pageno" value="{{ pageno+1 }}" />
|
|
||||||
<input type="submit" value="{{ _('next page') }} >>" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
<input type="button" onclick="load_more('{{ q }}', {{ pageno+1 }})" id="load_more" value="{{ _('Load more...') }}" />
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% endif %}
|
|
@ -1,7 +1,7 @@
|
||||||
<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
|
<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
|
||||||
<div id="search_wrapper">
|
<div id="search_wrapper">
|
||||||
<input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" size="100" {% if q %}value="{{ q }}"{% endif %}/>
|
<input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" size="100" {% if q %}value="{{ q }}"{% endif %}/>
|
||||||
<input type="submit" value="search" id="search_submit" />
|
<input type="submit" value="" id="search_submit" />
|
||||||
{% for category in categories %}
|
{% for category in categories %}
|
||||||
<input type="hidden" name="category_{{ category }}" value="1"/>
|
<input type="hidden" name="category_{{ category }}" value="1"/>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in a new issue