diff --git a/doc/source/images/search/opensearch-firefox.png b/doc/source/images/search/opensearch-firefox.png
new file mode 100644
index 0000000000..bec7e8e7c0
Binary files /dev/null and b/doc/source/images/search/opensearch-firefox.png differ
diff --git a/doc/source/utils/opensearch.rst b/doc/source/utils/opensearch.rst
new file mode 100644
index 0000000000..33321dff92
--- /dev/null
+++ b/doc/source/utils/opensearch.rst
@@ -0,0 +1,8 @@
+===================================================
+Installer un plugin de recherche à votre navigateur
+===================================================
+
+Vous pouvez installer un plugin de recherche à votre navigateur en deux clics.
+
+ .. figure:: ../images/search/opensearch-firefox.png
+ :align: center
\ No newline at end of file
diff --git a/templates/base.html b/templates/base.html
index b34f6c6f62..be4cdd0258 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -111,6 +111,9 @@
{# RSS links #}
+
+ {# OpenSearch plugin autodiscovery #}
+
diff --git a/templates/search/opensearch.xml b/templates/search/opensearch.xml
new file mode 100644
index 0000000000..405d8d0dad
--- /dev/null
+++ b/templates/search/opensearch.xml
@@ -0,0 +1,19 @@
+
+
+{% load static %}
+
+
+ {{ site_name }}
+ Rechercher sur {{ site_name}}
+ UTF-8
+ UTF-8
+ false
+ {{ language }}
+ http://zestedesavoir.com/pages/contact/
+ {{ site_url }}{% static "images/favicon.png" %}
+
+
+
+
+
\ No newline at end of file
diff --git a/zds/search/urls.py b/zds/search/urls.py
index 60c9ee7583..d96eabba92 100644
--- a/zds/search/urls.py
+++ b/zds/search/urls.py
@@ -8,9 +8,12 @@
from zds.search.forms import CustomSearchForm
urlpatterns = patterns('haystack.views',
- url(r'^$', search_view_factory(
- view_class=CustomSearchView,
- template='search/search.html',
- form_class=CustomSearchForm
- ), name='haystack_search'),
+ url(r'^$', search_view_factory(
+ view_class=CustomSearchView,
+ template='search/search.html',
+ form_class=CustomSearchForm
+ ), name='haystack_search'))
+
+urlpatterns += patterns('',
+ url(r'^opensearch.xml', 'zds.search.views.opensearch')
)
diff --git a/zds/search/views.py b/zds/search/views.py
index c5e4befda3..0c45c70c02 100644
--- a/zds/search/views.py
+++ b/zds/search/views.py
@@ -1,9 +1,11 @@
# coding: utf-8
from django.shortcuts import render
+from django.core.urlresolvers import reverse
from haystack.views import SearchView
+from zds import settings
from zds.search.constants import MODEL_NAMES
from zds.utils.paginator import paginator_range
@@ -31,3 +33,14 @@ def create_response(self):
context.update(self.extra_context())
return render(self.request, self.template, context)
+
+
+def opensearch(request):
+ """Generate OpenSearch Description file"""
+
+ return render(request, 'search/opensearch.xml', {
+ 'site_name': settings.ZDS_APP['site']['litteral_name'],
+ 'site_url': settings.ZDS_APP['site']['url'],
+ 'language': settings.LANGUAGE_CODE,
+ 'search_url': settings.ZDS_APP['site']['url'] + reverse('haystack_search')
+ }, content_type='application/opensearchdescription+xml')