<div class="tabBar">\r
<a name="sort-top"></a>\r
<div class="headQuestions">\r
- {% blocktrans count answers|length as counter %}\r
+ {% blocktrans count answers.count as counter %}\r
One Answer:\r
{% plural %}\r
{{counter}} Answers:\r
{% endblocktrans %}\r
</div>\r
- <div class="tabsA">\r
- <a id="oldest" href="{{ question.get_absolute_url }}?sort=oldest#sort-top"\r
- title="{% trans "oldest answers will be shown first" %}">{% trans "oldest answers" %}</a>\r
- <a id="latest" href="{{ question.get_absolute_url }}?sort=latest#sort-top"\r
- title="{% trans "newest answers will be shown first" %}">{% trans "newest answers" %}</a>\r
- <a id="votes" href="{{ question.get_absolute_url }}?sort=votes#sort-top" \r
- title="{% trans "most voted answers will be shown first" %}">{% trans "popular answers" %}</a> \r
- </div>\r
+ {{ answers.sort_tabs }}\r
</div>\r
- {% cnprog_paginator context %}\r
+ {{ answers.page_numbers }}\r
\r
- {% for answer in answers %}\r
+ {% for answer in answers.page %}\r
<a name="{{ answer.id }}"></a>\r
<div id="answer-container-{{ answer.id }}" class="answer {% if answer.nis.accepted %}accepted-answer{% endif %} {% ifequal answer.author_id question.author_id %} answered-by-owner{% endifequal %} {% if answer.nis.deleted %}deleted{% endif %}">\r
<table style="width:100%;">\r
</div>\r
{% endfor %}\r
<div class="paginator-container-left">\r
- {% cnprog_paginator context %}\r
+ {{ answers.page_numbers }}\r
</div>\r
{% endif %}\r
<form id="fmanswer" action="{% url answer question.id %}" method="post">\r
(_('mostvoted'), pagination.SimpleSort(_('most voted'), '-score', _("most voted questions"))),
), pagesizes=(15, 30, 50))
+class AnswerPaginatorContext(pagination.PaginatorContext):
+ def __init__(self):
+ super (AnswerPaginatorContext, self).__init__('ANSWER_LIST', sort_methods=(
+ (_('oldest'), pagination.SimpleSort(_('oldest answers'), 'added_at', _("oldest answers will be shown first"))),
+ (_('latest'), pagination.SimpleSort(_('newest answers'), '-added_at', _("newest answers will be shown first"))),
+ (_('votes'), pagination.SimpleSort(_('popular answers'), '-score', _("most voted answers will be shown first"))),
+ ), default_sort=_('votes'), pagesizes=(5, 10, 20))
+
+ self.sticky_sort = True
+
+
def feed(request):
return RssQuestionFeed(
Question.objects.filter_state(deleted=False).order_by('-last_activity_at'),
if can_rank:
paginator_context = QuestionListPaginatorContext()
- paginator_context.sort_methods[_('ranking')] = pagination.SimpleSort(_('ranking'), '-ranking', _("most relevant questions"))
+ paginator_context.sort_methods[_('ranking')] = pagination.SimpleSort(_('relevance'), '-ranking', _("most relevant questions"))
+ paginator_context.force_sort = _('ranking')
else:
paginator_context = None
}
}
-def get_answer_sort_order(request):
- view_dic = {"latest":"-added_at", "oldest":"added_at", "votes":"-score" }
-
- view_id = request.GET.get('sort', request.session.get('answer_sort_order', None))
-
- if view_id is None or not view_id in view_dic:
- view_id = "votes"
-
- if view_id != request.session.get('answer_sort_order', None):
- request.session['answer_sort_order'] = view_id
-
- return (view_id, view_dic[view_id])
-
def update_question_view_times(request, question):
if not 'last_seen_in_question' in request.session:
request.session['last_seen_in_question'] = {}
return None
+@decorators.render("question.html", 'questions', tabbed=False)
def question(request, id, slug):
try:
question = Question.objects.get(id=id)
raise Http404()
- page = int(request.GET.get('page', 1))
- view_id, order_by = get_answer_sort_order(request)
-
if question.nis.deleted and not request.user.can_view_deleted_post(question):
raise Http404
else:
answer_form = AnswerForm(question)
- answers = request.user.get_visible_answers(question)
-
- if answers is not None:
- answers = [a for a in answers.order_by("-marked", order_by)
- if not a.nis.deleted or a.author == request.user]
-
- objects_list = Paginator(answers, ANSWERS_PAGE_SIZE)
- page_objects = objects_list.page(page)
+ answers = request.user.get_visible_answers(question).order_by("-marked")
update_question_view_times(request, question)
else:
subscription = False
- return render_to_response('question.html', {
+ return pagination.paginated(request, 'answers', AnswerPaginatorContext(), {
"question" : question,
"answer" : answer_form,
- "answers" : page_objects.object_list,
- "tab_id" : view_id,
+ "answers" : answers,
"similar_questions" : question.get_related_questions(),
"subscription": subscription,
- "context" : {
- 'is_paginated' : True,
- 'pages': objects_list.num_pages,
- 'page': page,
- 'has_previous': page_objects.has_previous(),
- 'has_next': page_objects.has_next(),
- 'previous': page_objects.previous_page_number(),
- 'next': page_objects.next_page_number(),
- 'base_url' : request.path + '?sort=%s&' % view_id,
- 'extend_url' : "#sort-top"
- }
- }, context_instance=RequestContext(request))
+ })
REVISION_TEMPLATE = template.loader.get_template('node/revision.html')