summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-06-11 15:40:30 +0200
committerAurélien Bompard <aurelien@bompard.org>2013-06-11 15:40:30 +0200
commite5c785c29f2af0f9978814f7a34132388c44045d (patch)
tree91ad8cf32fcdc83eaf508e518e354bc50f6143ce
parente9b09b0669e2d782331e287eba6450a383e267cb (diff)
downloadhyperkitty-e5c785c29f2af0f9978814f7a34132388c44045d.tar.gz
hyperkitty-e5c785c29f2af0f9978814f7a34132388c44045d.tar.xz
hyperkitty-e5c785c29f2af0f9978814f7a34132388c44045d.zip
Add a select box to change the search results ordering
-rw-r--r--hyperkitty/static/css/hyperkitty-threadslist.css9
-rw-r--r--hyperkitty/templates/search_results.html23
-rw-r--r--hyperkitty/views/search.py17
3 files changed, 47 insertions, 2 deletions
diff --git a/hyperkitty/static/css/hyperkitty-threadslist.css b/hyperkitty/static/css/hyperkitty-threadslist.css
index 644d2b7..610d603 100644
--- a/hyperkitty/static/css/hyperkitty-threadslist.css
+++ b/hyperkitty/static/css/hyperkitty-threadslist.css
@@ -25,6 +25,15 @@
float: right;
}
+#thread-list .thread-list-header form {
+ margin-bottom: 0;
+ float: right;
+}
+#thread-list .thread-list-header form select {
+ margin-bottom: 0;
+ width: auto;
+}
+
/*
* Thread view
diff --git a/hyperkitty/templates/search_results.html b/hyperkitty/templates/search_results.html
index f91d664..f86280a 100644
--- a/hyperkitty/templates/search_results.html
+++ b/hyperkitty/templates/search_results.html
@@ -36,8 +36,31 @@ Search results for "{{ query }}"{% if mlist %} - {{ mlist.display_name|default:m
{{ total }} messages
</li>
</ul>
+
+ <form method="get" action="{% url 'search' %}" class="form-inline">
+ <input type="hidden" name="query" value="{{ query|escape }}" />
+ <input type="hidden" name="page" value="{{ messages.number }}" />
+ {% if mlist %}<input type="hidden" name="list" value="{{ mlist.name }}" />{% endif %}
+ <p>
+ Sort mode:
+ <select name="sort">
+ <option value="score"
+ {% if sort_mode == "score" %}selected{% endif %}
+ >score</option>
+ <option value="date-desc"
+ {% if sort_mode == "date-desc" %}selected{% endif %}
+ >latest first</option>
+ <option value="date-asc"
+ {% if sort_mode == "date-asc" %}selected{% endif %}
+ >earliest first</option>
+ </select>
+ <button type="submit" class="btn btn-small">Update</button>
+ </p>
+ </form>
+
</div>
+
{% for message in messages %}
{% include "messages/summary_message.html" %}
{% empty %}
diff --git a/hyperkitty/views/search.py b/hyperkitty/views/search.py
index 9ea224a..f143876 100644
--- a/hyperkitty/views/search.py
+++ b/hyperkitty/views/search.py
@@ -70,15 +70,27 @@ def search_tag(request, mlist_fqdn, tag):
def search(request, page=1):
""" Returns messages corresponding to a query """
+ results_per_page = 10
store = get_store(request)
query = request.GET.get("query")
mlist_fqdn = request.GET.get("list")
+
try:
page_num = int(request.GET.get('page', "1"))
except ValueError:
page_num = 1
- results_per_page = 10
- query_result = store.search(query, mlist_fqdn, page_num, results_per_page)
+
+ sort_mode = request.GET.get('sort')
+ sortedby = None
+ reverse = False
+ if sort_mode == "date-asc":
+ sortedby = "date"
+ elif sort_mode == "date-desc":
+ sortedby = "date"
+ reverse = True
+
+ query_result = store.search(query, mlist_fqdn, page_num, results_per_page,
+ sortedby=sortedby, reverse=reverse)
total = query_result["total"]
messages = query_result["results"]
for message in messages:
@@ -98,6 +110,7 @@ def search(request, page=1):
"query": query,
'messages': messages,
'total': total,
+ 'sort_mode': sort_mode,
}
return render(request, "search_results.html", context)