La date de dernière mise à jour des articles n'est pas toujours mise à jour
Tout est dans le titre : quand on lit le code de la [fonction `edit()` des articles](https://github.com/zestedesavoir/zds-site/blob/dev/zds/article/views.py#L301), en fait, on ne met jamais à jour le champ `update` de la classe Article. Très simple à régler ;) 

diff --git a/templates/article/member/index.html b/templates/article/member/index.html
index f0c033553..3fa5fb284 100644
--- a/templates/article/member/index.html
+++ b/templates/article/member/index.html
@@ -37,6 +37,13 @@
     {% elif request.GET.type == "draft" %}
         / {% trans "Brouillons" %}
     {% endif %}
+    {% if sort == "abc" %}
+        / Par ordre alphabétique
+    {% elif sort == "creation" %}
+        / Par date de création
+    {% elif sort == "modification" %}
+        / Par date de dernière modification
+    {% endif %}
 {% endblock %}
 
 
@@ -50,6 +57,13 @@
     {% elif request.GET.type == "draft" %}
         / {% trans "Brouillons" %}
     {% endif %}
+    {% if sort == "abc" %}
+        / Par ordre alphabétique
+    {% elif sort == "creation" %}
+        / Par date de création
+    {% elif sort == "modification" %}
+        / Par date de dernière modification
+    {% endif %}
 {% endblock %}
 
 
@@ -64,29 +78,49 @@
             <h3>{% trans "Filtres" %}</h3>
             <ul>
                 <li>
-                    <a href="{% url "zds.member.views.articles" %}?type=public" class="ico-after tick green {% if request.GET.type == "public" %}unread{% endif %}">
+                    <a href="{% url "zds.member.views.articles" %}?{% if sort %}sort={{ sort }}&{% endif %}type=public" class="ico-after tick green {% if request.GET.type == "public" %}unread{% endif %}">
                         {% trans "Publiés" %}
                     </a>
                 </li>
                 <li>
-                    <a href="{% url "zds.member.views.articles" %}?type=validate" class="ico-after tick {% if request.GET.type == "validate" %}unread{% endif %}">
+                    <a href="{% url "zds.member.views.articles" %}?{% if sort %}sort={{ sort }}&{% endif %}type=validate" class="ico-after tick {% if request.GET.type == "validate" %}unread{% endif %}">
                         {% trans "En validation" %}
                     </a>
                 </li>
                 <li>
-                    <a href="{% url "zds.member.views.articles" %}?type=draft" class="ico-after edit {% if request.GET.type == "draft" %}unread{% endif %}">
+                    <a href="{% url "zds.member.views.articles" %}?{% if sort %}sort={{ sort }}&{% endif %}type=draft" class="ico-after edit {% if request.GET.type == "draft" %}unread{% endif %}">
                         {% trans "Brouillons" %}
                     </a>
                 </li>
                 {% if request.GET.type %}
                     <li>
-                        <a href="{% url "zds.member.views.articles" %}" class="ico-after cross">
+                        <a href="{% url "zds.member.views.articles" %}{% if sort %}?sort={{ sort }}{% endif %}" class="ico-after cross">
                             {% trans "Annuler le filtre" %}
                         </a>
                     </li>
                 {% endif %}
             </ul>
         </div>
+        <div class="mobile-menu-bloc mobile-all-links" data-title="Trier">
+            <h3>Trier</h3>
+            <ul>
+                <li>
+                    <a href="{% url "zds.member.views.articles" %}?sort=abc{% if type %}&type={{ type }}{% endif %}" class="ico-after gear {% if sort == "abc" %}unread{% endif %}">
+                        Par ordre alphabétique
+                    </a>
+                </li>
+                <li>
+                    <a href="{% url "zds.member.views.articles" %}?sort=creation{% if type %}&type={{ type }}{% endif %}" class="ico-after gear {% if sort == "creation" %}unread{% endif %}">
+                        Par date de création
+                    </a>
+                </li>
+                <li>
+                    <a href="{% url "zds.member.views.articles" %}?sort=modification{% if type %}&type={{ type }}{% endif %}" class="ico-after gear {% if sort == "modification" %}unread{% endif %}">
+                        Par date de dernière modification
+                    </a>
+                </li>
+            </ul>
+        </div>
     </aside>
 {% endblock %}
 
@@ -104,4 +138,4 @@
             {% trans "Aucun article disponible" %}.
         </p>
     {% endif %}
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/templates/tutorial/member/index.html b/templates/tutorial/member/index.html
index b6be5eeb8..146b39db0 100644
--- a/templates/tutorial/member/index.html
+++ b/templates/tutorial/member/index.html
@@ -14,6 +14,13 @@
     {% elif request.GET.type == "draft" %}
         / {% trans "Brouillons" %}
     {% endif %}
+    {% if sort == "abc" %}
+        / Par ordre alphabétique
+    {% elif sort == "creation" %}
+        / Par date de création
+    {% elif sort == "modification" %}
+        / Par date de dernière modification
+    {% endif %}
 {% endblock %}
 
 
@@ -54,6 +61,13 @@
                 {% elif request.GET.type == "draft" %}
                     / {% trans "Brouillons" %}
                 {% endif %}
+                {% if sort == "abc" %}
+                    / Par ordre alphabétique
+                {% elif sort == "creation" %}
+                    / Par date de création
+                {% elif sort == "modification" %}
+                    / Par date de dernière modification
+                {% endif %}
             {% endblock %}
         </h2>
 
@@ -113,33 +127,53 @@
         <h3>{% trans "Filtres" %}</h3>
         <ul>
             <li>
-                <a href="{% url "zds.member.views.tutorials" %}?type=public" class="ico-after tick green {% if request.GET.type == "public" %}unread{% endif %}">
+                <a href="{% url "zds.member.views.tutorials" %}?type=public{% if sort %}&sort={{ sort }}{% endif %}" class="ico-after tick green {% if request.GET.type == "public" %}unread{% endif %}">
                     {% trans "Publiés" %}
                 </a>
             </li>
             <li>
-                <a href="{% url "zds.member.views.tutorials" %}?type=validate" class="ico-after tick {% if request.GET.type == "validate" %}unread{% endif %}">
+                <a href="{% url "zds.member.views.tutorials" %}?type=validate{% if sort %}&sort={{ sort }}{% endif %}" class="ico-after tick {% if request.GET.type == "validate" %}unread{% endif %}">
                     {% trans "En validation" %}
                 </a>
             </li>
             <li>
-                <a href="{% url "zds.member.views.tutorials" %}?type=beta" class="ico-after beta {% if request.GET.type == "beta" %}unread{% endif %}">
+                <a href="{% url "zds.member.views.tutorials" %}?type=beta{% if sort %}&sort={{ sort }}{% endif %}" class="ico-after beta {% if request.GET.type == "beta" %}unread{% endif %}">
                     {% trans "En bêta" %}
                 </a>
             </li>
             <li>
-                <a href="{% url "zds.member.views.tutorials" %}?type=draft" class="ico-after edit {% if request.GET.type == "draft" %}unread{% endif %}">
+                <a href="{% url "zds.member.views.tutorials" %}?type=draft{% if sort %}&sort={{ sort }}{% endif %}" class="ico-after edit {% if request.GET.type == "draft" %}unread{% endif %}">
                     {% trans "Brouillons" %}
                 </a>
             </li>
 
             {% if request.GET.type %}
                 <li>
-                    <a href="{% url "zds.member.views.tutorials" %}" class="ico-after cross">
+                    <a href="{% url "zds.member.views.tutorials" %}{% if sort %}?sort={{ sort }}{% endif %}" class="ico-after cross">
                         {% trans "Annuler le filtre" %}
                     </a>
                 </li>
             {% endif %}
         </ul>
+        <div class="mobile-menu-bloc mobile-all-links" data-title="Trier">
+            <h3>Trier</h3>
+            <ul>
+                <li>
+                    <a href="{% url "zds.member.views.tutorials" %}?sort=abc{% if type %}&type={{ type }}{% endif %}" class="ico-after gear {% if sort == "abc" %}unread{% endif %}">
+                        Par ordre alphabétique
+                    </a>
+                </li>
+                <li>
+                    <a href="{% url "zds.member.views.tutorials" %}?sort=creation{% if type %}&type={{ type }}{% endif %}" class="ico-after gear {% if sort == "creation" %}unread{% endif %}">
+                        Par date de création
+                    </a>
+                </li>
+                <li>
+                    <a href="{% url "zds.member.views.tutorials" %}?sort=modification{% if type %}&type={{ type }}{% endif %}" class="ico-after gear {% if sort == "modification" %}unread{% endif %}">
+                        Par date de dernière modification
+                    </a>
+                </li>
+            </ul>
+        </div>
     </div>
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/zds/member/views.py b/zds/member/views.py
index 3654815b8..18b4d123a 100644
--- a/zds/member/views.py
+++ b/zds/member/views.py
@@ -378,6 +378,13 @@ def tutorials(request):
     except KeyError:
         state = None
 
+    # The sort indicate the order of tutorials.
+
+    try:
+        sort_tuto = request.GET['sort']
+    except KeyError:
+        sort_tuto = 'abc'
+
     # Retrieves all tutorials of the current user.
 
     profile = request.user.profile
@@ -392,21 +399,40 @@ def tutorials(request):
     else:
         user_tutorials = profile.get_tutos()
 
-    return render(request, 'tutorial/member/index.html', {'tutorials': user_tutorials, 'type': state})
+    # Order articles (abc by default)
+
+    if sort_tuto == 'creation':
+        pass  # nothing to do. Tutorials are already sort by creation date
+    elif sort_tuto == 'modification':
+        user_tutorials = user_tutorials.order_by('-update')
+    else:
+        user_tutorials = user_tutorials.extra(select={'lower_title': 'lower(title)'}).order_by('lower_title')
+
+    return render(
+        request,
+        'tutorial/member/index.html',
+        {'tutorials': user_tutorials, 'type': state, 'sort': sort_tuto}
+    )
 
 
 @login_required
 def articles(request):
     """Returns all articles of the authenticated user."""
 
-    # The type indicate what the user would like to display. We can display
-    # public, draft or all user's articles.
+    # The type indicate what the user would like to display. We can display public, draft or all user's articles.
 
     try:
         state = request.GET['type']
     except KeyError:
         state = None
 
+    # The sort indicate the order of articles.
+
+    try:
+        sort_articles = request.GET['sort']
+    except KeyError:
+        sort_articles = 'abc'
+
     # Retrieves all articles of the current user.
 
     profile = request.user.profile
@@ -419,7 +445,20 @@ def articles(request):
     else:
         user_articles = profile.get_articles()
 
-    return render(request, 'article/member/index.html', {'articles': user_articles, 'type': state})
+    # Order articles (abc by default)
+
+    if sort_articles == 'creation':
+        pass  # nothing to do. Articles are already sort by creation date
+    elif sort_articles == 'modification':
+        user_articles = user_articles.order_by('-update')
+    else:
+        user_articles = user_articles.extra(select={'lower_title': 'lower(title)'}).order_by('lower_title')
+
+    return render(
+        request,
+        'article/member/index.html',
+        {'articles': user_articles, 'type': type, 'sort': sort_articles}
+    )
 
 
 # settings for public profile
['templates/tutorial/member/index.html', 'templates/article/member/index.html', 'zds/member/views.py']