# HG changeset patch # User ymh # Date 1372428744 -7200 # Node ID 8890db197b37e63444cc60204b9d9b8ca0969adf # Parent ed568fc9c0c28ccef14fd4be4d505d4b71fab4cf add prev and next buttons diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/forms.py --- a/src/jocondelab/forms.py Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/forms.py Fri Jun 28 16:12:24 2013 +0200 @@ -67,6 +67,10 @@ order_dir = self.cleaned_data.get('order_dir', 'asc') or 'asc' if order_dir == 'desc': order_by = "-"+order_by - qs = qs.order_by(order_by) + if order_by == "normalized_label" or order_by == "label": + order_by = [order_by, 'nb_notice', 'id'] + else: + order_by = [order_by, 'normalized_label', 'id'] + qs = qs.order_by(*order_by) return qs \ No newline at end of file diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/locale/en/LC_MESSAGES/django.mo Binary file src/jocondelab/locale/en/LC_MESSAGES/django.mo has changed diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/locale/en/LC_MESSAGES/django.po --- a/src/jocondelab/locale/en/LC_MESSAGES/django.po Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/locale/en/LC_MESSAGES/django.po Fri Jun 28 16:12:24 2013 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-26 16:18+0200\n" +"POT-Creation-Date: 2013-06-28 16:08+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -24,7 +24,7 @@ msgid "thesaurus" msgstr "thesaurus" -#: forms.py:39 forms.py:42 templates/jocondelab/term_edit.html:72 +#: forms.py:39 forms.py:42 templates/jocondelab/term_edit.html:80 msgid "label" msgstr "label" @@ -68,35 +68,45 @@ msgid "French" msgstr "French" -#: templates/jocondelab/term_edit.html:76 +#: templates/jocondelab/term_edit.html:73 +msgid "prev" +msgstr "prev" + +#: templates/jocondelab/term_edit.html:74 +#: templates/jocondelab/partial/pagination.html:27 +#: templates/jocondelab/partial/pagination.html:29 +msgid "next" +msgstr "next" + +#: templates/jocondelab/term_edit.html:84 msgid "alternative labels" msgstr "alternative labels" -#: templates/jocondelab/term_edit.html:86 +#: templates/jocondelab/term_edit.html:94 msgid "id" msgstr "id" -#: templates/jocondelab/term_edit.html:90 +#: templates/jocondelab/term_edit.html:98 msgid "uri" msgstr "uri" -#: templates/jocondelab/term_edit.html:94 +#: templates/jocondelab/term_edit.html:102 msgid "info wikipedia" msgstr "Wikipedia info" -#: templates/jocondelab/term_edit.html:103 +#: templates/jocondelab/term_edit.html:111 msgid "Créer page WK" msgstr "Create WK page" -#: templates/jocondelab/term_edit.html:103 +#: templates/jocondelab/term_edit.html:111 msgid "Need wikipedia article" msgstr "Need wikipedia article" -#: templates/jocondelab/term_edit.html:134 +#: templates/jocondelab/term_edit.html:142 msgid "Rech. joconde" msgstr "Joconde search" -#: templates/jocondelab/term_edit.html:140 +#: templates/jocondelab/term_edit.html:148 msgid "Edition wk" msgstr "WK Edition" @@ -131,11 +141,6 @@ msgid "previous" msgstr "previous" -#: templates/jocondelab/partial/pagination.html:27 -#: templates/jocondelab/partial/pagination.html:29 -msgid "next" -msgstr "next" - #: templates/registration/login.html:6 msgid "Sorry, that's not a valid username or password." msgstr "Sorry, that's not a valid username or password." diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/locale/fr/LC_MESSAGES/django.mo Binary file src/jocondelab/locale/fr/LC_MESSAGES/django.mo has changed diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/locale/fr/LC_MESSAGES/django.po --- a/src/jocondelab/locale/fr/LC_MESSAGES/django.po Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/locale/fr/LC_MESSAGES/django.po Fri Jun 28 16:12:24 2013 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-26 16:18+0200\n" +"POT-Creation-Date: 2013-06-28 16:08+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,7 +25,7 @@ msgid "thesaurus" msgstr "thésaurus" -#: forms.py:39 forms.py:42 templates/jocondelab/term_edit.html:72 +#: forms.py:39 forms.py:42 templates/jocondelab/term_edit.html:80 msgid "label" msgstr "label" @@ -69,35 +69,45 @@ msgid "French" msgstr "Français" -#: templates/jocondelab/term_edit.html:76 +#: templates/jocondelab/term_edit.html:73 +msgid "prev" +msgstr "préc." + +#: templates/jocondelab/term_edit.html:74 +#: templates/jocondelab/partial/pagination.html:27 +#: templates/jocondelab/partial/pagination.html:29 +msgid "next" +msgstr "suiv." + +#: templates/jocondelab/term_edit.html:84 msgid "alternative labels" msgstr "Autres labels" -#: templates/jocondelab/term_edit.html:86 +#: templates/jocondelab/term_edit.html:94 msgid "id" msgstr "id" -#: templates/jocondelab/term_edit.html:90 +#: templates/jocondelab/term_edit.html:98 msgid "uri" msgstr "uri" -#: templates/jocondelab/term_edit.html:94 +#: templates/jocondelab/term_edit.html:102 msgid "info wikipedia" msgstr "info wikipedia" -#: templates/jocondelab/term_edit.html:103 +#: templates/jocondelab/term_edit.html:111 msgid "Créer page WK" msgstr "Créer page WK" -#: templates/jocondelab/term_edit.html:103 +#: templates/jocondelab/term_edit.html:111 msgid "Need wikipedia article" msgstr "Besoin article Wikipedia" -#: templates/jocondelab/term_edit.html:134 +#: templates/jocondelab/term_edit.html:142 msgid "Rech. joconde" msgstr "Rech. Joconde" -#: templates/jocondelab/term_edit.html:140 +#: templates/jocondelab/term_edit.html:148 msgid "Edition wk" msgstr "Edition wk" @@ -132,11 +142,6 @@ msgid "previous" msgstr "préc." -#: templates/jocondelab/partial/pagination.html:27 -#: templates/jocondelab/partial/pagination.html:29 -msgid "next" -msgstr "suiv." - #: templates/registration/login.html:6 msgid "Sorry, that's not a valid username or password." msgstr "" diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/static/jocondelab/css/style.css --- a/src/jocondelab/static/jocondelab/css/style.css Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/static/jocondelab/css/style.css Fri Jun 28 16:12:24 2013 +0200 @@ -535,4 +535,20 @@ max-height: 60px; margin: 5px 2px 2px 0px; padding-right: 5px; +} + +#prev-next-prev-link { + float: left; +} + +#prev-next-next-link { + float: right; +} + +#prev-next-clear { + clear: both; +} + +#prev-next { + height: 25px; } \ No newline at end of file diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/static/jocondelab/js/jocondelab.js --- a/src/jocondelab/static/jocondelab/js/jocondelab.js Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/static/jocondelab/js/jocondelab.js Fri Jun 28 16:12:24 2013 +0200 @@ -10,7 +10,6 @@ }); $(".wikipedia_edition").click(function(e) { - console.log(term_wikipedia_edition_url,$(this),$(this).is(':checked')); $.post(term_wikipedia_edition_url, { csrfmiddlewaretoken:global_csrf_token, @@ -88,7 +87,6 @@ }, dataType: "json", success: function(data) { - console.log(data); res = data.results.bindings.length>0?data.results.bindings[0]:{y:"",l:"http://fr.wikipedia.org/"+page_name,t:""}; var item = { abstract: res.y?res.y.value:"", @@ -135,7 +133,6 @@ // Validate sheet management : the radiobutton name has is "'gr_validated' + datasheet.hda_id" $("input[type='radio'][name='gr_validated']").click(function(e){ e.preventDefault(); - console.log(e); val = $("input[type='radio'][name='gr_validated']:checked").val(); if(val === 'True') { msg = gettext("Confirmez-vous la validation de ce terme ?"); @@ -210,21 +207,23 @@ $('#term-filter-form').submit(function(){ var values = $('#term-filter-form').serialize(); $('#term-explorer-container').load(term_list_table_url, values, function() { - $('#term-list-table #term-'+term_id).addClass('currenttermline'); + init_edit_page(); }); return false; }); } -function init_edit_page(page) { - var values = $('#term-filter-form').serialize(); - // add page - if(typeof(page) !== "undefined" && page) { - values += "&page="+page; - } - $('#term-explorer-container').load(term_list_table_url, values, function() { - $('#term-list-table #term-'+term_id).addClass('currenttermline'); +function init_edit_page() { + $('#term-list-table #term-'+term_id).addClass('currenttermline'); + + $('.pagination a').click(function(e) { + e.preventDefault(); + console.log(this); + var values = this.href.slice(window.location.href.indexOf('?') + 1) + $('#term-explorer-container').load(term_list_table_url, values, function() { + init_edit_page(); + }); + return false; }); - } diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/templates/jocondelab/partial/term_list_table.html --- a/src/jocondelab/templates/jocondelab/partial/term_list_table.html Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/templates/jocondelab/partial/term_list_table.html Fri Jun 28 16:12:24 2013 +0200 @@ -1,4 +1,4 @@ - {% load core_extras %} + {% load core_extras %}
{% include "jocondelab/partial/pagination.html" %}
diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/templates/jocondelab/term_edit.html --- a/src/jocondelab/templates/jocondelab/term_edit.html Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/templates/jocondelab/term_edit.html Fri Jun 28 16:12:24 2013 +0200 @@ -1,5 +1,6 @@ {% extends "jocondelab/base.html" %} {% load i18n %} +{% load core_extras %} {% block js_import %} {{block.super}} @@ -22,7 +23,7 @@ $(document).ready(function(){ init_term_events(); init_filter_events(); - init_edit_page('{{request.GET.page}}'); + init_edit_page(); }); @@ -56,6 +57,7 @@
+{% include "jocondelab/partial/term_list_table.html" %}
@@ -67,6 +69,11 @@
{% csrf_token %}
+
+ {% if prev_id %}{% trans 'prev' %}{% endif %} + {% if next_id %}{% trans 'next' %}{% endif %} + +
diff -r ed568fc9c0c2 -r 8890db197b37 src/jocondelab/views.py --- a/src/jocondelab/views.py Thu Jun 27 22:32:48 2013 +0200 +++ b/src/jocondelab/views.py Fri Jun 28 16:12:24 2013 +0200 @@ -18,6 +18,7 @@ from jocondelab.forms import WikipediaEditionForm, LinkSemanticLevelForm import logging import urllib +from django.views.generic.list import MultipleObjectMixin logger = logging.getLogger(__name__) @@ -57,13 +58,32 @@ -class TermEditView(DetailView): +class TermEditView(DetailView, MultipleObjectMixin): queryset = Term.objects.select_related() pk_url_kwarg = "term_id" context_object_name = "term" template_name = "jocondelab/term_edit.html" filter_form_class = TermFilterForm + model = Term + paginate_by = settings.TERM_LIST_PAGE_SIZE + paginator_class = JocondePaginator + + def get_object(self, queryset=None): + + if queryset is None: + queryset = self.queryset + + return DetailView.get_object(self, queryset) + + def get_queryset(self): + qs = self.queryset._clone() + filter_form = self.get_filter_form() + if filter_form.is_valid(): + return filter_form.get_filter_qs(qs) + else: + return None + def get_filter_form(self): initial = { 'order_by':'label', @@ -76,7 +96,15 @@ def get_context_data(self, **kwargs): + + self.object_list = self.get_queryset() + if kwargs is None : + kwargs = {} + kwargs['object_list'] = self.object_list + + # Beware: because of multiple inheritance this call MultipleObjectMixin.get_context_data(self, **context) context = DetailView.get_context_data(self, **kwargs) + context['filter_form'] = self.get_filter_form() context['link_semantic_level_choice'] = TERM_WK_LINK_SEMANTIC_LEVEL_CHOICES @@ -100,7 +128,41 @@ context['encoded_term_label_query_parameter'] = urllib. urlencode({ 'FIELD_%d' % field_index: field_name.encode('latin1'), 'VALUE_%d' % field_index: encoded_label}).replace('+','%20') - return context + + #prev_id, nex_id, prev_page, next_page + page = context['page_obj'] + + prev_id = None + prev_page = 0 + next_id = None + next_page = 0 + + + object_list_ids = [obj.id for obj in list(page.object_list)] + current_index = object_list_ids.index(self.object.id) + + if current_index > 0: + prev_id = object_list_ids[current_index-1] + prev_page = page.number + elif page.has_previous(): + prev_page = page.previous_page_number() + prev_id = page.paginator.object_list[page.start_index() - 2].id + + if current_index < (len(page)-1): + next_id = object_list_ids[current_index+1] + next_page = page.number + elif page.has_next(): + next_page = page.next_page_number() + next_id = page.paginator.object_list[page.end_index()].id + + context.update({ + 'prev_id': prev_id, + 'prev_page': prev_page, + 'next_id': next_id, + 'next_page': next_page + }) + + return context