From ca9e48043c7703033d3f6faa8e83a5d2f9e992cb Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Sat, 19 Aug 2017 13:55:14 +0200
Subject: [PATCH] UX improcements

---
 scipost/static/scipost/assets/js/scripts.js |   7 +-
 scipost/templates/scipost/search.html       | 172 ------------------
 scipost/templates/scipost/search2.html      | 182 --------------------
 templates/search/search.html                |  22 +--
 4 files changed, 10 insertions(+), 373 deletions(-)
 delete mode 100644 scipost/templates/scipost/search.html
 delete mode 100644 scipost/templates/scipost/search2.html

diff --git a/scipost/static/scipost/assets/js/scripts.js b/scipost/static/scipost/assets/js/scripts.js
index 0c8bf6045..c17d95694 100644
--- a/scipost/static/scipost/assets/js/scripts.js
+++ b/scipost/static/scipost/assets/js/scripts.js
@@ -40,7 +40,8 @@ $(function(){
         window.history.replaceState({}, null, '?tab=' + tab_name);
     });
 
-    // $('footer').each(function () {
-      var $spy = $('body').scrollspy({ target: '.footer' })
-    // })
+    // Auto-submit hook for general form elements
+    $("form .auto-submit input").on('change', function(){
+        $(this).parents('form').submit()
+    })
 });
diff --git a/scipost/templates/scipost/search.html b/scipost/templates/scipost/search.html
deleted file mode 100644
index f80596b41..000000000
--- a/scipost/templates/scipost/search.html
+++ /dev/null
@@ -1,172 +0,0 @@
-{% extends 'scipost/base.html' %}
-
-{% block pagetitle %}: list{% endblock pagetitle %}
-
-{% block content %}
-
-<div class="row">
-    <div class="col-12">
-        <h1>Search results: <span class="text-muted">{{ search_term|default:'' }}</span></h1>
-        <h1>Search results{% if search_term %}: <small><i>{{ search_term }}</i></small>{% endif %}</h1>
-        {% if not publication_search_list and not commentary_search_list and not submission_search_list and not thesislink_search_list and not comment_search_link and not comment_search_list %}
-            <p>Your search query did not return any result.</p>
-        {% endif %}
-    </div>
-</div>
-
-{% if publication_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Publications ({{publication_search_list|length}})</h2>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-        {% for publication in publication_search_list %}
-            <div class="card card-publication">
-                {% include 'journals/_publication_card_content.html' with publication=publication %}
-            </div>
-        {% endfor %}
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-          <div class="pagination">
-            <span class="step-links">
-              {% if publication_search_list.has_previous %}
-              <a href="?publication_search_list_page={{ publication_search_list.previous_page_number }}">previous</a>
-              {% endif %}
-              <span class="current">
-        	Page {{ publication_search_list.number }} of {{ publication_search_list.paginator.num_pages }}.
-              </span>
-              {% if publication_search_list.has_next %}
-              <a href="?publication_search_list_page={{ publication_search_list.next_page_number }}">next</a>
-              {% endif %}
-            </span>
-          </div>
-    </div>
-</div>
-{% endif %}
-
-
-{% if commentary_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Commentaries ({{commentary_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for commentary in commentary_search_list %}
-                <li class="list-group-item">
-                    {% include 'commentaries/_commentary_card_content.html' with commentary=commentary %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-          <div class="pagination">
-            <span class="step-links">
-              {% if commentary_search_list.has_previous %}
-              <a href="?commentary_search_list_page={{ commentary_search_list.previous_page_number }}">previous</a>
-              {% endif %}
-              <span class="current">
-        	Page {{ commentary_search_list.number }} of {{ commentary_search_list.paginator.num_pages }}.
-              </span>
-              {% if commentary_search_list.has_next %}
-              <a href="?commentary_search_list_page={{ commentary_search_list.next_page_number }}">next</a>
-              {% endif %}
-            </span>
-          </div>
-    </div>
-</div>
-{% endif %}
-
-
-{% if submission_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Submissions ({{submission_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for submission in submission_search_list %}
-                <li class="list-group-item">
-                    {% include 'submissions/_submission_card_content.html' with submission=submission %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-      <div class="pagination">
-        <span class="step-links">
-          {% if submission_search_list.has_previous %}
-          <a href="?submission_search_list_page={{ submission_search_list.previous_page_number }}">previous</a>
-          {% endif %}
-          <span class="current">
-    	Page {{ submission_search_list.number }} of {{ submission_search_list.paginator.num_pages }}
-          </span>
-          {% if submission_search_list.has_next %}
-          <a href="?submission_search_list_page={{ submission_search_list.next_page_number }}">next</a>
-          {% endif %}
-        </span>
-      </div>
-    </div>
-</div>
-{% endif %}
-
-{% if thesislink_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Theses ({{thesislink_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for thesislink in thesislink_search_list %}
-                <li class="list-group-item">
-                    {% include 'theses/_thesislink_card_content.html' with thesislink=thesislink %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-{% endif %}
-
-{% if comment_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Comments ({{comment_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for comment in comment_search_list %}
-                <li class="list-group-item">
-                    {% include 'comments/_comment_card_extended_content.html' with comment=comment %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-{% endif %}
-
-{% endblock content %}
diff --git a/scipost/templates/scipost/search2.html b/scipost/templates/scipost/search2.html
deleted file mode 100644
index 5453a7c2e..000000000
--- a/scipost/templates/scipost/search2.html
+++ /dev/null
@@ -1,182 +0,0 @@
-{% extends 'scipost/base.html' %}
-
-{% load bootstrap %}
-
-{% block pagetitle %}: list{% endblock pagetitle %}
-
-{% block content %}
-
-
-<h1>Search results</h1>
-<form method="get" class="my-2">
-    <div class="form-group row">
-        <div class="col-md-5 col-lg-3 mb-2 mb-md-0 pr-md-1">
-            <input class="form-control" id="{{form.q.auto_id}}" maxlength="100" name="{{form.q.name}}" type="text" value="{{form.q.value}}" required="required">
-        </div>
-        <div class="col-md-7 col-lg-9 pl-md-1">
-            <input class="btn btn-primary" type="submit" value="Search">
-        </div>
-    </div>
-</form>
-
-
-{% if not publication_search_list and not commentary_search_list and not submission_search_list and not thesislink_search_list and not comment_search_link and not comment_search_list %}
-    <p>Your search query did not return any result.</p>
-{% endif %}
-
-{% if publication_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Publications ({{publication_search_list|length}})</h2>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-        {% for publication in publication_search_list %}
-            <div class="card card-publication">
-                {% include 'journals/_publication_card_content.html' with publication=publication %}
-            </div>
-        {% endfor %}
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-          <div class="pagination">
-            <span class="step-links">
-              {% if publication_search_list.has_previous %}
-              <a href="?publication_search_list_page={{ publication_search_list.previous_page_number }}">previous</a>
-              {% endif %}
-              <span class="current">
-        	Page {{ publication_search_list.number }} of {{ publication_search_list.paginator.num_pages }}.
-              </span>
-              {% if publication_search_list.has_next %}
-              <a href="?publication_search_list_page={{ publication_search_list.next_page_number }}">next</a>
-              {% endif %}
-            </span>
-          </div>
-    </div>
-</div>
-{% endif %}
-
-
-{% if commentary_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Commentaries ({{commentary_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for commentary in commentary_search_list %}
-                <li class="list-group-item">
-                    {% include 'commentaries/_commentary_card_content.html' with commentary=commentary %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-          <div class="pagination">
-            <span class="step-links">
-              {% if commentary_search_list.has_previous %}
-              <a href="?commentary_search_list_page={{ commentary_search_list.previous_page_number }}">previous</a>
-              {% endif %}
-              <span class="current">
-        	Page {{ commentary_search_list.number }} of {{ commentary_search_list.paginator.num_pages }}.
-              </span>
-              {% if commentary_search_list.has_next %}
-              <a href="?commentary_search_list_page={{ commentary_search_list.next_page_number }}">next</a>
-              {% endif %}
-            </span>
-          </div>
-    </div>
-</div>
-{% endif %}
-
-
-{% if submission_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Submissions ({{submission_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for submission in submission_search_list %}
-                <li class="list-group-item">
-                    {% include 'submissions/_submission_card_content.html' with submission=submission %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-
-<div class="row">
-    <div class="col-12">
-      <div class="pagination">
-        <span class="step-links">
-          {% if submission_search_list.has_previous %}
-          <a href="?submission_search_list_page={{ submission_search_list.previous_page_number }}">previous</a>
-          {% endif %}
-          <span class="current">
-    	Page {{ submission_search_list.number }} of {{ submission_search_list.paginator.num_pages }}
-          </span>
-          {% if submission_search_list.has_next %}
-          <a href="?submission_search_list_page={{ submission_search_list.next_page_number }}">next</a>
-          {% endif %}
-        </span>
-      </div>
-    </div>
-</div>
-{% endif %}
-
-{% if thesislink_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Theses ({{thesislink_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for thesislink in thesislink_search_list %}
-                <li class="list-group-item">
-                    {% include 'theses/_thesislink_card_content.html' with thesislink=thesislink %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-{% endif %}
-
-{% if comment_search_list %}
-<hr>
-<div class="row">
-    <div class="col-12">
-        <h2 class="highlight">Comments ({{comment_search_list|length}})</h2>
-    </div>
-</div>
-<div class="row">
-    <div class="col-12">
-        <ul class="list-group list-group-flush">
-            {% for comment in comment_search_list %}
-                <li class="list-group-item">
-                    {% include 'comments/_comment_card_extended_content.html' with comment=comment %}
-                </li>
-            {% endfor %}
-        </ul>
-    </div>
-</div>
-{% endif %}
-
-{% endblock content %}
diff --git a/templates/search/search.html b/templates/search/search.html
index 1fa026d8e..ca70b5b79 100644
--- a/templates/search/search.html
+++ b/templates/search/search.html
@@ -14,14 +14,14 @@
         <form method="get">
             <div class="form-group">
                 <label for="{{form.q.auto_id}}">{{form.q.label}}</label>
-                <input type="text" name="{{form.q.name}}" class="form-control form-control-lg" id="{{form.q.auto_id}}" aria-describedby="search_help" placeholder="Search term" value="{{form.q.value}}" required="required">
+                <input type="text" name="{{form.q.name}}" class="form-control form-control-lg" id="{{form.q.auto_id}}" aria-describedby="search_help" placeholder="Search term" value="{{form.q.value|default:''}}" required="required">
                 <small id="search_help" class="form-text text-muted">{{form.q.help_text}}</small>
             </div>
 
             <div class="form-group">
                 <label>Type</label>
             </div>
-            <div class="form-group checkboxes">
+            <div class="form-group checkboxes auto-submit">
                 {% for field in form.models %}
                     <input type="checkbox" name="{{field.name}}" id="{{field.id_for_label}}" value="{{field.choice_value|stringformat:'s'}}" {% if field.choice_value in form.models.value %}checked="checked"{% endif %}>
                     <label class="btn btn-info" for="{{field.id_for_label}}">
@@ -31,28 +31,15 @@
                 {% endfor %}
             </div>
 
-            {# {% comment %}#}
-                {# DISABLED DATE SEARCH: DOES NOT WORK OK #}
             <label>Date from</label>
             <div class="form-row">
-                {# <div class="form-group col-md-6">#}
                     {{form.start}}
-                {# </div>#}
-                {# <div class="form-group col-md-6">#}
-                    {# {{form.start_2}}#}
-                {# </div>#}
             </div>
 
             <label>Date until</label>
             <div class="form-row">
-                {# <div class="form-group col-md-6">#}
                     {{form.end}}
-                {# </div>#}
-                {# <div class="form-group col-md-6">#}
-                    {# {{form.end_2}}#}
-                {# </div>#}
             </div>
-            {# {% endcomment %}#}
 
             <div class="form-group">
                 {# <input type="reset" class="btn btn-danger" value="Reset">#}
@@ -61,9 +48,10 @@
         </form>
     </div>
     <div class="col-md-8">
+        <h1 class="my-3 mt-md-0">Search results{% if results_count and query %} ({{results_count}} found){% endif %}</h1>
 
+        {# without this logic, an request without GET parameters would return *all* objects indexed by Haystack #}
         {% if query %}
-            <h1 class="my-3 mt-md-0">Search results{% if results_count %} ({{results_count}} found){% endif %}</h1>
             <ul class="list-group list-group-flush">
                 {% for result in object_list %}
                     <li class="list-group-item{% if result.content_type == 'journals.publication' %} border-0{% endif %}">
@@ -101,6 +89,8 @@
                     </p>
                 {% endif %}
             </ul>
+        {% else %}
+            <p>Your search query did not return any result.</p>
         {% endif %}
     </div>
 </div>
-- 
GitLab