Make pagination on user profile point to the user gallery
authorChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 3 Jul 2011 03:09:46 +0000 (22:09 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Sun, 3 Jul 2011 03:09:46 +0000 (22:09 -0500)
This required a couple of changes:
 - making a new render_pagination macro
 - switching things over to use that

mediagoblin/templates/mediagoblin/user_pages/media.html
mediagoblin/templates/mediagoblin/user_pages/user.html
mediagoblin/templates/mediagoblin/utils/object_gallery.html
mediagoblin/templates/mediagoblin/utils/pagination.html
mediagoblin/user_pages/views.py

index 21506ee495b21cf5fe7f3eef81411aab8e141c30..142082eab6f7e69c04b3af3778635641b6af3639 100644 (file)
@@ -18,6 +18,7 @@
 {% extends "mediagoblin/base.html" %}
 
 {% import "/mediagoblin/utils/wtforms.html" as wtforms_util %}
+{% from "mediagoblin/utils/pagination.html" import render_pagination %}
 
 {% block mediagoblin_content %}
   {% if media %}
@@ -87,7 +88,7 @@
           </div>
         {% endfor %}
 
-        {% include "mediagoblin/utils/pagination.html" %}
+        {{ render_pagination(request, pagination) }}
       </div>
     {% endif %}
     <div class="grid_4 omega media_sidebar">
index 3148043b764ff54dac7fcdefe457b06160a5391b..b884a1f58653a6defc6c2dbdcc3a709006721125 100644 (file)
     
     {% include "mediagoblin/utils/profile.html" %}
 
+    {% set pagination_base_url = user_gallery_url %}
     {% include "mediagoblin/utils/object_gallery.html" %}
 
-    <p><a href="{{ request.urlgen('mediagoblin.user_pages.user_gallery',
-                    user=user['username']) }}">View all of {{ user.username }}'s media</a></p> 
+    <p><a href="user_gallery_url">View all of {{ user.username }}'s media</a></p> 
 
     <a href={{ request.urlgen(
                    'mediagoblin.user_pages.atom_feed',
-                   user=user.username) }}> atom feed</a>
+                   user=user.username) }}>atom feed</a>
   {% else %}
     {# This *should* not occur as the view makes sure we pass in a user. #}
     <p>Sorry, no such user found.<p/>
index 8c88c174ae78c7850c6f6a16f643cc1acdded1b8..4e2886f8db9f54189e415c7d3a2059cb4508769d 100644 (file)
@@ -16,6 +16,8 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #}
 
+{% from "mediagoblin/utils/pagination.html" import render_pagination %}
+
 {% block object_gallery_content -%}
   <div>
     {% if media_entries %}
           </li>
         {% endfor %}
       </ul>
-      {% include "mediagoblin/utils/pagination.html" %}
-    {%  endif %}
-
+      {% if pagination_base_url %}
+        {# different url, so set that and don't keep the get params #}
+        {{ render_pagination(request, pagination, pagination_base_url, False) }}
+      {% else %}
+        {{ render_pagination(request, pagination) }}
+      {% endif %}
+    {% endif %}
   </div>
 {% endblock %}    
index 7b55b81d93a425c9ca3d0241d2b64c3322a66373..aae50d22d9eb748d3ba5a79c04a8d5c0540aaa44 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #}
 
-{# only display if {{pagination}} is defined #}
+{% macro render_pagination(request, pagination,
+                           base_url=None, preserve_get_params=True) %}
+  {# only display if {{pagination}} is defined #}
+  {% if pagination and pagination.pages > 1 %}
+    {% if not base_url %}
+      {% set base_url = request.path_info %}
+    {% endif %}
 
-{% if pagination and pagination.pages > 1 %}
-  <div class="pagination">
-    <p>
-      {% if pagination.has_prev %}
-        <a href="{{ pagination.get_page_url(request, pagination.page-1) }}">&laquo; Prev</a>
-      {% endif %}
+    {% if preserve_get_params %}
+      {% set get_params = request.GET %}
+    {% else %}
+      {% set get_params = {} %}
+    {% endif %}
 
-      {%- for page in pagination.iter_pages() %}
-        {% if page %}
-          {% if page != pagination.page %}
-      <a href="{{ pagination.get_page_url(request, page) }}">{{ page }}</a>
+    <div class="pagination">
+      <p>
+        {% if pagination.has_prev %}
+          <a href="{{ pagination.get_page_url_explicit(
+                          base_url, get_params,
+                          pagination.page - 1) }}">&laquo; Prev</a>
+        {% endif %}
+  
+        {%- for page in pagination.iter_pages() %}
+          {% if page %}
+            {% if page != pagination.page %}
+              <a href="{{ pagination.get_page_url_explicit(
+                              base_url, get_params,
+                              page) }}">{{ page }}</a>
+            {% else %}
+              {{ page }}
+            {% endif %}
           {% else %}
-            {{ page }}
+            <span class="ellipsis">…</span>
           {% endif %}
-        {% else %}
-          <span class="ellipsis">…</span>
+        {%- endfor %}
+  
+        {% if pagination.has_next %}
+          <a href="{{ pagination.get_page_url_explicit(
+                          base_url, get_params,
+                          pagination.page + 1) }}">Next &raquo;</a>
         {% endif %}
-      {%- endfor %}
-
-      {% if pagination.has_next %}
-        <a href="{{ pagination.get_page_url(request, pagination.page + 1) }}">Next &raquo;</a>
-      {% endif %}
-     </p>
-   </div>
-{% endif %}
-
+       </p>
+     </div>
+  {% endif %}
+{% endmacro %}
index 012d27a3c44c8f4bfc099cb3bd14b87f73fd2cdf..3a8684d38f59d44baa59b02db4538c4b01078c9d 100644 (file)
@@ -48,10 +48,15 @@ def user_home(request, page):
     if media_entries == None:
         return exc.HTTPNotFound()
     
+    user_gallery_url = request.urlgen(
+        'mediagoblin.user_pages.user_gallery',
+        user=user['username'])
+
     return render_to_response(
         request,
         'mediagoblin/user_pages/user.html',
         {'user': user,
+         'user_gallery_url': user_gallery_url,
          'media_entries': media_entries,
          'pagination': pagination})