-
Notifications
You must be signed in to change notification settings - Fork 1
Documentation
This part documents all new things in the new design
PS: THIS IS ALL IN DEVELOPMENT AND I DON'T GARANTY ANYTHING OF THIS WORKING 100% CORRECT!
#Navigation
Jeder Benutzer speichert seine eigene Navigation in der Session session[:navigation]
(siehe helper/before.rb).
Das Errorhandling ist noch nicht vorhanden!
navigation = Navigations.new.build
navigation.select(:context)
Wählt den Kontext user. Bei uns gibt es im Moment drei Kontexte: :user, :organisation, :unregistered. Der Kontext bestimmt, welche Navigation mit #get_selected zurückgegeben wird.
Die gewählte Hauptnavigation beeinflusst, was bei #subnavigation zurückgeben wird.
navigation.get_selected.select(1)
Wählt die erste Hauptnavigation aus. Die Nummeriung ist abhäning von der Reihenfolge in der die Navigationen hinzugefügt wurden. Siehe #build.
navigation.get_selected.select_by_name("home")
Wählt die Hauptnavigation "home" aus.
navigation.get_selected.subnavigation.select(1)
Wählt den ersten Eintrag in der Subnavigation.
navigation.get_selected.subnavigation.select_by_name("edit profile")
Wählt den Eintrag "edit profile" in der Subnavigation.
Die Hauptnavigation ("home", "community", "market", "logout") kann nicht (einfach) geändert werden, da sie abhängig ist von Bildern.
In helpers/navigations.xml ist dazu folgende Zeile(n) einzufügen:
<subnavigation>
<name>name</name>
<route>/pfad</route>
</subnavigation>
Will ich z.B. dem User im Market ein neues Register "auctions" hinzufügen
<context>
<name>user<name>
...
<navigation>
<name>market</name>
...
<!-- Hinzufügen --!>
<subnavigation>
<name>auctions</name>
<route>/item/auctions</route>
</subnavigation>
<!-- Ende Hinzufügen --!>
...
</navigation>
...
</context>
Damit der Benutzer immer auch korrekte Rückmeldungen bekommt, wo er sich gerade befindet, muss die Navigation bei jedem Klick geändert werden.
Angenommen der User hat auf den Register "users" in "Community" gedrückt, dann kann die Navigation folgendermassen eingestellt werden:
#Auswählen der Hauptnavigation "community"
session[:navigation].get_selected.select_by_name("community")
#Auswählen der Subnavigation "users"
session[:navigation].get_selected.subnavigation.select_by_name("users")
#Partials Es existieren ein paar neue Partials
Mit Label oberhalb:
= haml :'partials/description-entry-vertical.haml', :locals => { :label => "Label:", :description => "Text" }
Mit Label nebendran:
= haml :'partials/description-entry-horizontal.haml', :locals => { :label => "Label:", :description => "Text" }
#Error Handling
##Input-Felder Wenn es möglich ist, dass Input-Felder falsche Angaben vom Benutzer bekommen können, dann können die Partials "alert-input.haml" und "alert-textarea.haml" gebraucht werden.
Im haml-file:
= haml :'partials/alert-input', :locals => {:name => :your_name, :label => "Your label"}
"Your label" enthält den String fü das Label, welches der Input tragen soll. :your_name enthält den Namen unter dem ein Error in @error gesucht wird. Aber das kurz an einem Bespiel:
Im controller:
@error[:your_name] = "This is your error" if your_condition
unless(@error.empty?) do
halt haml :page_for_input
end
# If no error then go on here..
Im controller kann also dann im Hash @error mit dem entsprechenden Namen (Hier :your_name) eine Fehlermeldung gesetzt werden. Falls eine solche vorhanden ist wird auf die ursprüngliche Seite zurückverwiesen. Dem Benutzer wird dann die Fehlermeldung "This is your error" unterhalb des Input-Feldes angezeigt.
##Generelle Fehlermeldungen
Falls dem User generell eine Fehlermeldung gemacht werden will, dann kann bevor ein redirect gemacht wird, ein Alert in die session geschrieben werden:
session[:alert] = Alert.create("title", "text", boolean)
redirect "/to/your/page"
Der boolean ist dazu da, um mitzuteilen, ob es sich um eine Erfolgsmeldung(false) oder um eine Fehlermeldung(true) handelt. Erfolgsmeldungen werden grün und Fehler rot dargestellt. Falls kein Title gesetzt wird also "" übergeben wird, wird der title einfach ignoriert und nur die Nachricht angezeigt.
##Texte für Fehlermeldungen
Die Texte für die Fehlermeldungen finden sich in der Klasse ErrorMessages. Sie können folgendermassen abgerufen werden:
ErrorMessages.get("Not_A_Number") #Gibt "Price should be a number" zurück