Commit 4536c27f5f75188efb32b27aa79c6b53f372c0e9

Authored by Zambom
1 parent 98e11391

Adding category breadcrumb go back (only in subject view for now)

subjects/templates/subjects/list.html
... ... @@ -90,6 +90,7 @@
90 90 <div id="{{category.slug}}" class="panel-collapse panel-body collapse category-panel-content">
91 91 <input type="hidden" class="log_url" value="{% url 'categories:view_log' category.id %}" />
92 92 <input type="hidden" class="log_id" value="" />
  93 +
93 94 {% if category.coordinators.all|length > 0 %}
94 95 <h4><b>{% trans "Coordinator(s) " %}: </b>
95 96 {{ category.coordinators.all|join:', ' }}
... ... @@ -193,4 +194,17 @@
193 194 <div id="modal_subject"></div>
194 195  
195 196 <script type="text/javascript" src="{% static 'js/course.js' %}"></script>
  197 + <script type="text/javascript">
  198 + $(function (){
  199 + var cat_slug = "{{ cat_slug }}"
  200 +
  201 + if (cat_slug != "") {
  202 + $("#" + cat_slug).collapse('show');
  203 +
  204 + $('html, body').animate({
  205 + scrollTop: $("#" + cat_slug).parent().offset().top
  206 + }, 2000);
  207 + }
  208 + });
  209 + </script>
196 210 {% endblock %}
... ...
subjects/templates/subjects/view.html
... ... @@ -9,7 +9,7 @@
9 9  
10 10 {% block breadcrumbs %}
11 11 {{ block.super }}
12   - {% breadcrumb subject.category 'subjects:index' %}
  12 + {% breadcrumb subject.category 'subjects:cat_view' subject.category.slug %}
13 13 {% breadcrumb subject 'subjects:view' subject.slug %}
14 14 {% endblock %}
15 15  
... ...
subjects/urls.py
... ... @@ -4,6 +4,7 @@ from . import views
4 4 urlpatterns = [
5 5 url(r'^home/$', views.HomeView.as_view(), name='home'),
6 6 url(r'^$', views.IndexView.as_view(), name='index'),
  7 + url(r'^category/(?P<slug>[\w_-]+)/$', views.IndexView.as_view(), name='cat_view'),
7 8 url(r'^(?P<option>[\w_-]+)/$', views.IndexView.as_view(), name='index'),
8 9 url(r'^create/(?P<slug>[\w_-]+)/$', views.SubjectCreateView.as_view(), name='create'),
9 10 url(r'^replicate/(?P<subject_slug>[\w_-]+)/$', views.SubjectCreateView.as_view(), name='replicate'),
... ...
subjects/utils.py
... ... @@ -18,6 +18,17 @@ def has_professor_profile(user, category):
18 18  
19 19 return False
20 20  
  21 +def get_category_page(categories, slug, per_page):
  22 + total = 1
  23 +
  24 + for category in categories:
  25 + if category.slug == slug:
  26 + return total / per_page + 1
  27 +
  28 + total += 1
  29 +
  30 + return 1
  31 +
21 32 def count_subjects( user, all_subs = True):
22 33 total = 0
23 34 pk = user.pk
... ...
subjects/views.py
... ... @@ -26,7 +26,7 @@ import time
26 26 import datetime
27 27 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
28 28 from .forms import CreateSubjectForm
29   -from .utils import has_student_profile, has_professor_profile, count_subjects
  29 +from .utils import has_student_profile, has_professor_profile, count_subjects, get_category_page
30 30 from users.models import User
31 31  
32 32  
... ... @@ -55,6 +55,7 @@ class HomeView(LoginRequiredMixin, ListView):
55 55 #bringing users
56 56 tags = Tag.objects.all()
57 57 context['tags'] = tags
  58 +
58 59 return context
59 60  
60 61  
... ... @@ -67,8 +68,7 @@ class IndexView(LoginRequiredMixin, ListView):
67 68 context_object_name = 'categories'
68 69 paginate_by = 10
69 70  
70   - def get_queryset(self):
71   -
  71 + def get_queryset(self):
72 72 if self.request.user.is_staff:
73 73 categories = Category.objects.all().order_by('name')
74 74 else:
... ... @@ -94,6 +94,39 @@ class IndexView(LoginRequiredMixin, ListView):
94 94  
95 95 return categories
96 96  
  97 + def paginate_queryset(self, queryset, page_size):
  98 + paginator = self.get_paginator(
  99 + queryset, page_size, orphans=self.get_paginate_orphans(),
  100 + allow_empty_first_page=self.get_allow_empty())
  101 +
  102 + page_kwarg = self.page_kwarg
  103 +
  104 + page = self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 1
  105 +
  106 + if self.kwargs.get('slug'):
  107 + categories = queryset
  108 +
  109 + paginator = Paginator(categories, self.paginate_by)
  110 +
  111 + page = get_category_page(categories, self.kwargs.get('slug'), self.paginate_by)
  112 +
  113 + try:
  114 + page_number = int(page)
  115 + except ValueError:
  116 + if page == 'last':
  117 + page_number = paginator.num_pages
  118 + else:
  119 + raise Http404(_("Page is not 'last', nor can it be converted to an int."))
  120 +
  121 + try:
  122 + page = paginator.page(page_number)
  123 + return (paginator, page, page.object_list, page.has_other_pages())
  124 + except InvalidPage as e:
  125 + raise Http404(_('Invalid page (%(page_number)s): %(message)s') % {
  126 + 'page_number': page_number,
  127 + 'message': str(e)
  128 + })
  129 +
97 130 def render_to_response(self, context, **response_kwargs):
98 131 if self.request.user.is_staff:
99 132 context['page_template'] = "categories/home_admin_content.html"
... ... @@ -116,11 +149,14 @@ class IndexView(LoginRequiredMixin, ListView):
116 149  
117 150 context['show_buttons'] = True #So it shows subscribe and access buttons
118 151 context['totals'] = self.totals
119   -
  152 +
120 153 if self.kwargs.get('option'):
121 154 context['all'] = True
122 155 context['title'] = _('All Subjects')
123 156  
  157 + if self.kwargs.get('slug'):
  158 + context['cat_slug'] = self.kwargs.get('slug')
  159 +
124 160 context['subjects_menu_active'] = 'subjects_menu_active'
125 161  
126 162 return context
... ...