Browse Source

deactivate autocompleter by default

Thomas Pointhuber 11 years ago
parent
commit
c8cf95aa56
5 changed files with 45 additions and 21 deletions
  1. 3 0
      searx/settings.yml
  2. 17 15
      searx/static/js/searx.js
  3. 6 0
      searx/templates/base.html
  4. 4 0
      searx/templates/opensearch.xml
  5. 15 6
      searx/webapp.py

+ 3 - 0
searx/settings.yml

@@ -5,6 +5,9 @@ server:
     request_timeout : 2.0 # seconds
     base_url : False
 
+client:
+    autocompleter : False # only for developers, no real results yet
+    
 engines:
   - name : wikipedia
     engine : wikipedia

+ 17 - 15
searx/static/js/searx.js

@@ -1,18 +1,20 @@
-window.addEvent('domready', function() {
-	new Autocompleter.Request.JSON('q', '/autocompleter', {
-		postVar:'q',
-		postData:{
-			'format': 'json'
-		},
-		ajaxOptions:{
-		    timeout: 5   // Correct option?
-		},
-		'minLength': 4,
-		'selectMode': 'type-ahead',
-		cache: true,
-		delay: 300
-	});
-});
+if(searx.autocompleter) {
+    window.addEvent('domready', function() {
+	    new Autocompleter.Request.JSON('q', '/autocompleter', {
+		    postVar:'q',
+		    postData:{
+			    'format': 'json'
+		    },
+		    ajaxOptions:{
+		        timeout: 5   // Correct option?
+		    },
+		    'minLength': 4,
+		    'selectMode': 'type-ahead',
+		    cache: true,
+		    delay: 300
+	    });
+    });
+}
 
 (function (w, d) {
     'use strict';

+ 6 - 0
searx/templates/base.html

@@ -13,13 +13,19 @@
     {% block head %}
     <link title="searx" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
     {% endblock %}
+    <script type="text/javascript">
+        searx = {};
+        searx.autocompleter = {% if client.autocompleter %}true{% else %}false{% endif %};
+    </script>
 </head>
 <body>
 <div id="container">
 {% block content %}
 {% endblock %}
+{% if client.autocompleter %}
 <script src="{{ url_for('static', filename='js/mootools-core-1.4.5-min.js') }}" ></script>
 <script src="{{ url_for('static', filename='js/mootools-autocompleter-1.1.2-min.js') }}" ></script>
+{% endif %}
 <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
 </div>
 </body>

+ 4 - 0
searx/templates/opensearch.xml

@@ -6,18 +6,22 @@
   <LongName>searx metasearch</LongName>
   {% if method == 'get' %}
     <Url type="text/html" method="get" template="{{ host }}?q={searchTerms}"/>
+    {% if client.autocompleter %}
     <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
         <Param name="format" value="x-suggestions" />
         <Param name="q" value="{searchTerms}" />
     </Url>
+    {% endif %}
   {% else %}
     <Url type="text/html" method="post" template="{{ host }}">
         <Param name="q" value="{searchTerms}" />
     </Url>
+    {% if client.autocompleter %}
     <!-- TODO, POST REQUEST doesn't work -->
     <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
         <Param name="format" value="x-suggestions" />
         <Param name="q" value="{searchTerms}" />
     </Url>
+    {% endif %}
   {% endif %}
 </OpenSearchDescription>

+ 15 - 6
searx/webapp.py

@@ -120,12 +120,18 @@ def index():
     """
 
     if not request.args and not request.form:
-        return render('index.html')
+        return render(
+            'index.html',
+            client=settings['client']
+        )
 
     try:
         search = Search(request)
     except:
-        return render('index.html')
+        return render(
+            'index.html',
+            client=settings['client']
+        )
 
     # TODO moar refactor - do_search integration into Search class
     search.results, search.suggestions = do_search(search.query,
@@ -206,6 +212,7 @@ def index():
     return render(
         'results.html',
         results=search.results,
+        client=settings['client'],
         q=search.request_data['q'],
         selected_categories=search.categories,
         paging=search.paging,
@@ -231,12 +238,14 @@ def autocompleter():
     else:
         request_data = request.args
     
-    # TODO fix XSS-vulnerability, remove test code
+    # TODO fix XSS-vulnerability
     autocompleter.querry = request_data.get('q')
     autocompleter.results = []
     
-    if autocompleter.querry:
-        autocompleter.results = [autocompleter.querry + "-searx",autocompleter.querry + " asfded",autocompleter.querry + " asdf"]
+    if settings['client']['autocompleter']:
+        #TODO remove test code and add real autocompletion
+        if autocompleter.querry:
+            autocompleter.results = [autocompleter.querry + " result-1",autocompleter.querry + " result-2",autocompleter.querry + " result-3",autocompleter.querry + " result-4"]
     
     if request_data.get('format') == 'x-suggestions':
         return Response(json.dumps([autocompleter.querry,autocompleter.results]),
@@ -344,7 +353,7 @@ def opensearch():
     # chrome/chromium only supports HTTP GET....
     if request.headers.get('User-Agent', '').lower().find('webkit') >= 0:
         method = 'get'
-    ret = render('opensearch.xml', method=method, host=get_base_url())
+    ret = render('opensearch.xml', method=method, host=get_base_url(),client=settings['client'])
     resp = Response(response=ret,
                     status=200,
                     mimetype="application/xml")