Seite 1 von 1

Nette Pagination - Ansatz gesucht

Verfasst: Freitag 16. Januar 2009, 18:12
von Dauerbaustelle
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/

Verfasst: Freitag 16. Januar 2009, 18:29
von Darii
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]