D7: Summary von List (integer) zeigt nur den Key und nicht den human-readable Wert an.

am 24.11.2011 - 11:33 Uhr in
Hallo,
Ich verwende einen Content-Type der unter anderem ein List(integer) Feld hat. Hierzu möchte ich eine View anlegen welches als Argument dieses Feld übergeben wird. Wenn das Argument nicht übergeben wird, soll eine Zusammenfassung angezeigt werden. Hierbei soll von dem Feld nicht der Key, sondern der human-readable Wert angezeigt werden. So hat es sich auch unter Drupal 6 verhalten. Mit Drupal 7 wird nur noch der Key verwendet. Gibt es eine Möglichkeit hier den human-readable Wert zu verwenden?
- Anmelden oder Registrieren um Kommentare zu schreiben
preprocess und Template
am 25.11.2011 - 18:02 Uhr
Hallo.
So ganz spontan würde ich sagen, dass Verhalten lässt sich über eine geeignete Preprocess-Funktion und das entsprechende View-Template anpassen.
Ansonsten ist das doch gleich mal eine schöne Aufgabe für den Views-Sprint an diesem Wochenende. Ich schau mal, ob jemand dafür einen Patch bauen will oder der Daniel sogar eine andere (schnellere) Lösung weiss.
stBorchert schrieb So ganz
am 25.11.2011 - 19:32 Uhr
So ganz spontan würde ich sagen, dass Verhalten lässt sich über eine geeignete Preprocess-Funktion und das entsprechende View-Template anpassen.
Ansonsten ist das doch gleich mal eine schöne Aufgabe für den Views-Sprint an diesem Wochenende. Ich schau mal, ob jemand dafür einen Patch bauen will oder der Daniel sogar eine andere (schnellere) Lösung weiss.
Das wäre natürlich super. Ich habe mir jetzt erstmal damit geholfen, dass ich anstatt einer Integer-Liste eine String-Liste verwendet habe.
Summary
am 26.11.2011 - 11:25 Uhr
Hi.
Das Problem ist nicht ganz so einfach zu lösen wie anfangs gedacht.
Im views_handler_argument Funktion
summary_name()
wird einfach nur der Wert des Feldes (== Key) verwendet. An dieser Stelle müsste die Feld-Defintion (und der Feld-Handler) geladen werden und->render()
aufgerufen werden.Ein zweites Problem ist, dass der Wert 0 an dieser Stelle als leer anerkannt wird (
empty()
) und dafür "" anstelle der 0 ausgegeben wird.Mal schauen, ob das an diesem Wochenende noch eine Lösung dafür herauspurzelt.
Ansonsten bleibt momentan leider nur die Möglichkeit, dies über eine Preprocess-Funktion zu ändern.
danke das du mich auf dem
am 26.11.2011 - 14:42 Uhr
danke das du mich auf dem laufen hältst. Ich bin gespannt was dabei raus kommt.
Meinst du das wird noch
am 01.12.2011 - 08:28 Uhr
Meinst du das wird noch etwas? Das Problem ist, dass es mit List(Text) ebenfalls Probleme gibt.
Zum einem kann Views die List(Text)-Summary-Werte nur Alphabetisch oder nach der Anzahl der Einträge sortieren. An anderen Stellen in Drupal, zB in den Select-Boxen werden die Einträge jedoch genauso sortiert, wie sie in der Werteliste im Feld eingetragen sind. Das bräuchte ich auch für die View.
Zum anderen verwende ich in meinen Einträgen ein Schrägstrich (/). Da der Key wohl ungefiltert als Argument verwendet wird, entsteht ein Argument welches ein / enthält. Da es sich beim Schrägstrich auch um den Trenner von Argumenten handelt, wird die URL beim aufrufen des durch die Summary erzeugten Link fälschlicherweise als zwei Argumente erkannt.
Kann es sein das gerade das zweite Problem auf eine XSS-Lücke in Views hinweist? Oder ist es nur das /, welches nicht gefiltert wird.
Issues
am 01.12.2011 - 08:57 Uhr
Hi.
Am Wochenende haben wir das Problem leider nicht lösen können. Magst Du für die beiden (bzw. 3) Sachen bitte Issue auf drupal.org einstellen?
http://drupal.org/project/issues/views
* field_handler in summary verwenden, um die Werte anstelle der Schlüssel auszugeben (Hinweis: Funktion
summary_name()
)* Sortierung innerhalb von Summary (ruhig generell formulieren)
* Sonderzeichen in Schlüsseln von Listen