Skip to content
pas edited this page Nov 29, 2012 · 12 revisions

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).

Generelles

Das Errorhandling ist noch nicht vorhanden!

Erstellen einer neuen Navigation

navigation = Navigations.new.build

Auswählen des Kontextes

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.

Auswählen der Hauptnavigation

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.

Auswählen der Subnavigation

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.

Neue Subnavigation erstellen

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>

Navigation des Benutzers einstellen

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

Texte mit Label

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

Design

Angaben zur Hauptnavigation für Inkscape

Hauptnavigation