Hallo zusammen, nach meinem Vorstellungsposting muss ich die ML gleich um ein Problem erweitern.
Ich bin es seit jeher leid die Navigation einer Seite manuell zu erstellen, zumal ich sie stets gleich aufbaue und im Grunde nur über CSS ändere. Also habe ich zu PHP-Zeiten dafür etwas programmiert und immer benutzt. Nun möchte ich das gleiche für RoR machen, als Plugin natürlich. Ich habe auch kein zufriedenstellendes gefunden. Anforderungen: 1) Menüdefinition per YAML-File (mehrere Menüs möglich, per id unterscheidbar; unendlich viele Menüebenen möglich) 2) REST-Kompatibel (also die Linkerzeugung aus den Daten im YAML-File) 3) Möglichst wenig Code zur Integration nötig 4) Später: Zugriffskontrolle für Menüpunkte 5) Später: Generierung des HTML-Codes über Templates statt ActionView-Helper Ich habe noch nie ein Plugin geschrieben, jedoch alle per Google gefundenen Texte dazu und den Sourcecode einiger Plugins gelesen. Verständnis ist da. Meistens wird ActiveRecord erweitert, ohne dass Zugriff auf ActivePack-Methoden nötig wäre. Ich habe mir folgendes gedacht: ActionController um eine Klassenmethode erweitern, die das YAML-File einliest (simpel und erledigt) und dann für jedes Menü ein Objekt der Klasse "FooMenu" erstellt. Diese Klasse soll im Plugin sein und alle relevanten Daten eines Menüs enthalten (Name, CSS-Klasse, Menüpunkte). Jedes Objekt dieser Klasse liest die Menüpunkte ein und erstellt jeweils ein "FooMenuEntry" Objekt, welches wieder alle wichtigen Daten enthält (Link, CSS-Klasse, Label, Active?, Clickable?, etc.). Dann soll man in seinem Layout (oder sonst wo) per Helper "write_navigation :nav_main" (oder wie auch immer) das Menü ":nav_main" einfügen können. Die Helfermethode greift auf die erstellten Objekte zu und schreibt den HTML-Code. So das ganze in der Theorie, in der Praxis sieht es leider ganz anders aus. Die Klasse "FooMenuEntry" muss eigentlich auf die Methoden "url_for", "current_page?", "*_path" (für REST) zugreifen, jedoch ist das natürlich nicht möglich, weil die Klassen nichts mit ActionPack zu tun haben. Warum "url_for" und "*_path"? Nun, in der YAML-Datei soll man die Links in Ruby-Code schreiben können, z.B. product_path. Meine Klasse soll diesen dann per eval() parsen und fertig. Nun stehe ich wirklich wie Ochs vorm Berg, vielleicht auch total auf dem Holzweg. Eventuell denke ich noch in PHP-Mustern und nicht in Rails/MVC :/ Es wäre großartig, falls mir jemand helfen kann, ein Stubbs in die richtige Richtung würde vielleicht schon helfen. Die Anforderungen stehen ja oben. Vielen Dank für die Mühe des Lesens und eventuelle Hilfestellung im Voraus. Gruß, Sebastian -- GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS. Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail _______________________________________________ rubyonrails-ug mailing list [email protected] http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
