Nette Pagination - Ansatz gesucht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Hallo,

ich versuche eine Pagination zu erstellen, die ab einer bestimmten Zahl wegkürzt, in der Mitte. Ich versuch mich schon seit gut drei Stunden aber irgendwie krieg ich nichts auf die Reihe. Vielleicht könnte mir ja jemand Hilfe leisten...

Das Ganze soll so ablaufen: ich habe eine Liste mit Zahlen (Seiten-Nummern, zB von 1 bis 27). Bedinungen:
* EDIT: Natürlich sollte noch so eine Art Fallback rein, d.h. erst ab einer Größe von zB 6 muss gekürzt werden
* Wenn die aktuelle Seite innerhalb der ersten vier ist, returne [1, 2, 3, 4, '...', 26, 27] (also die ersten vier, die letzten zwei und einen Trenner dazwischen)
* Wenn die aktuelle Seite innerhalb der letzten vier ist, returne [1,2, '...', 24, 25, 26, 27]
* Wenn die aktuelle Seite nicht innerhalb der ersten vier und nicht innerhalb der letzten vier ist, returne [1,2, '...', page-1, page, page+1, page+2, '...', 26, 27], also die ersten und letzten beiden un ein Umfeld der Seite von 1 bzw. 2.

Eigentlich sollte das leicht sein, aber es will nicht funktionieren :(

Hm... hab da grad mal nochwas implementiert, aber das ist sehr unintuitiv... http://paste.pocoo.org/show/99986/
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Was ist daran jetzt unintuitiv? Das einzige was ich ändern würde ist ein <=7 beim ersten Mal zu machen, ist sonst etwas witzlos, wenn nur eine Ziffer weggekürzt wird.

Code: Alles auswählen

>>> print pagi(range(1, 8), 1)
[1, 2, 3, 4, '...', 6, 7]
Antworten