Gerade fiel mir etwas auf, was schon lange implementiert ist, wozu ich aber noch kein Wort geschrieben habe (vermutlich eingeschüchtert durch die vielen gut gemeinten Ermahnungen, ich solle mich mehr um's Innenleben als um die Oberfläche meiner Software kümmern...).
Richtig geraten, es geht um die Oberfläche. Vor einiger Zeit hatte ich das Konzept der Deskop-Icons, die man per Drag&Drop auch als Applets einsetzen kann. Nun schien das einigen Menschen nicht sehr intuitiv und bei anderen funktionierten entweder die Links oder das Drag&Drop, deswegen gabs dort ein paar Änderungen:
- Es wird nun unterschieden zwischen normalen "Navigations"-Icons und Applet-Icons. Applet-Icons sind nicht mit einem Link belegt und können per Drag&Drop auf die Applet-Flächen auf dem Desktop gezogen werden. die anderen Icons sehen ähnlich aus, liegen aber auf einer separaten Fläche und können nur angeklickt werden (sind also "gepimpte" Links).
- Nicht alle Funktionen können als Applet aufgerufen werden. Bislang wurde im Aufruf einer Aktion als Applet bei der proxy-Funktion (callfunctionas_applet(controller, action)) aus einem fest verdrahteten Array gelesen, ob die verlangte Funktion als Applet angezeigt werden kann. Jetzt kann über den Klassen-Methodenaufruf
callable_as_applet :action1, :action2, ...
pro Controller festgelegt werden, welche Aktionen als Applets angezeigt werden können. - Navigations-Icons werden nicht mehr fest verdrahtet vie vorher, sondern dynamsich aus der Datenbank geladen. Der Administrator kann selbst bestimmen, welche URI er mit welchem Icon verbinden will, welcher Text und Tooltipp es haben soll, in welchem Modul und bei welchen Benutzer-Typen es angezeigt werden soll (momentan sind dies: admin, user, reseller). Um ein Desktop-Icon im Controller ein
@icon = ConsolvixDesktopIcon.find XYZ
und in der View<%= desktop_icon @icon %>
. - Navigations-Icons erscheinen nicht nur bei /XXX/index auf dem "Desktop" von XXX, sondern auch bei /XXX/YYY als Navigationseintrag (siehe Bild)
Jedes Desktop-Icon entspricht auch einem Haupt-Navigationseintrag für das jeweilige Modul. Desktop-Applets sind nun von den anderen Icons getrennt.
Auf Modul-Index-Seiten kann z.B. wieder ein Modul-Desktop mit Aktionen für den aktuellen Kontext angezeigt werden
Im Kontext einer Resource (z.B. Clients) wird immer eine Liste von zur Verfügung stehenden Elementen angezeigt. Im Kontext eines Elements wird eine Liste mit zur Verfügung stehenden Aktionen ausgeklappt.