diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-06-11 15:40:30 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-06-11 15:40:30 +0200 |
commit | e5c785c29f2af0f9978814f7a34132388c44045d (patch) | |
tree | 91ad8cf32fcdc83eaf508e518e354bc50f6143ce | |
parent | e9b09b0669e2d782331e287eba6450a383e267cb (diff) | |
download | hyperkitty-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.css | 9 | ||||
-rw-r--r-- | hyperkitty/templates/search_results.html | 23 | ||||
-rw-r--r-- | hyperkitty/views/search.py | 17 |
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) |