Closed stubb closed 10 years ago
Genau all diese Möglichkeiten hatte ich auch mal untersucht. Die Trait-Sache ist tatsächlich die "offizielle" Lösung, aber mit Java leider nicht wirklich geil. Ich denke die Context-Sache so wie bei HTWplus bleibt die beste Lösung. Ich würde es ganz einfach machen. Einfach einen Identifier für die aktuelle Seite und auch nur eine Ebene, damit wir das Hauptmenü markieren können.
Na dann werd ich das mal so zusammen basteln.
@FabiApfelkern Was meinst du mit "und auch nur eine Ebene, damit wir das Hauptmenü markieren ". Gibt es optisch irgendeine Vorgabe, wie das aussehen und funktionieren soll?
Bei plus speichern wir mehere ebenen, damit wir nen breadcrumb bauen können: home > seite 1 > seite 2 ... Ich denke das brauchen wir hier nicht, haben ja im Prinzip nur eine Ebene, da wir ja keinen Breadcrumb haben, sondern nur das Highlighting im Menu.
Versteh ich es also richtig, das es Sinn der ganzen Aktion ist in dem Mainmenubar das Feld zu highlighten, in dem wir uns grade befinden? Also z.B. UserVerwaltung ist gehighlited wenn ich in der Userverwaltung bin?
Also dachte ich zumindestens.
Gut dann ist das ja alles viel simpler. Dann nem ich @request.uri in der view check das nach nem unique string ding und highlighte auf basis dessen per javascript den entsprechenden button.
Das kannst du machen, ist aber nicht sehr sauber. Eigentlich macht man nie etwas abhängig von der wortwörtlichen URL, die kann sich ja jederzeit ändern. Deswegen sollte man es irgendwie im Controller festlegen, dann ist es daran gebunden. Und Javascript brauchste auch nicht. Du musst einfach per Play-Template die entsprechende class bei den Nav Elementen hinzufügen. Aber das ist alles nur allgemein gültig, mach es so wie du es jetzt am besten hinkriegst.
Also ich hab mich mal ein bisschen umgeschaut und es scheint so, als wenn es nur möglich ist über einen response im controller an die aktuelle URI zu gelangen oder direkt in der view. Eine static methode im common controller die immer die aktuelle URI zurückliefert ist wohl nicht möglich. Es gäbe einen Weg in dem man den AppliaktionController von einem Trait vererben lässt, welcher eine implicite methode hat. So könnte man dynamischen content in den eigentlich mehr oder weniger statischen templates einbauen. Das ist aber alles total kompliziert und soll auch natürlich mit play + java nicht richtig funktionieren.
Eine Andere Lösung als wie es z.B. auch in HTWplus gemacht ist seh ich nicht. Also in jeder Controller Methode den aktuellen status der Navigation als argument an den aktuellen Conext hängen und dann entsprechend abfragen und dann natürlich die abschnitte der URI noch auf sinnvolle Strings mappen und ID's vielleicht durch die entsprechenden Namen ersetzen.
Oder hat jemand noch eine andere Idee wie man das Ganze ohne so viel Aufwand realisieren kann? Das Inet gibt dazu leider wenig her oder ich such mal wieder falsch ...