NotificationCenter

Verschicken von Notifications

<TODO: elmar>

Empfangen von Notifications

<TODO: elmar>

Gegenwärtige Verwendungen

Die im offiziellen verwendeten Notifications werden im folgenden beschrieben.

Notification: ConfigValueChanged

Dies Notification wird versendet, wenn sich ein in der Klasse Config enthaltener Parameter geändert hat. Als subject wird die Config-Instanz mitgegeben und als userdata der neue und alte Wert.

<TODO: elmar oder anoack>

lib/classes/Config.class.php:                   NotificationCenter::postNotification('ConfigValueChanged', $this, array('field' => $field, 'old_value' => $old_value, 
'new_value' => $value_entry->value));

Notifications: CourseRemovedFromModule und CourseAddedToModule

lib/classes/StudipSemTree.class.php:                            NotificationCenter::postNotification('CourseRemovedFromModule', $studyarea, array('module_id' => $sem_tree_id, 'course_id' => $seminar_id));
lib/classes/StudipSemTree.class.php:                NotificationCenter::postNotification('CourseAddedToModule', $studyarea, array('module_id' => $sem_tree_id, 'course_id' => $seminar_id));

<TODO: elmar oder anoack>

Notifications: Dateien

Wenn eine Datei hochgeladen wird, wird vor dem tatsächlichen Anlegen die Notification DocumentWillCreate und nach dem Anlegen DocumentDidCreate versendet. Als subject dient dabei stets die zugehörige Instanz der Klasse StudipDocument.

Wenn der Inhalt einer Datei upgedatet wird, wird analog vorher die Notification DocumentWillUpdate und hinterher DocumentDidUpdate verschickt. Auch hier ist das subject wieder die Instanz der Klasse StudipDocument.

Auch wenn eine Datei gelöscht wird, werden Notifications versendet: DocumentWillDelete und DocumentDidDelete. Auch in diesen Fällen werden als subject Instanzen der Klasse StudipDocument verwendet, wenn gleich diese gerade bei DocumentDidDelete eher dokumentarisch verwendet werden können, da sie ja gelöscht wurden.

Notifications: Forum

Wenn ein Forumsbeitrag verfasst wurde, wird vor dem tatsächlichen Speichern die Notification PostingWillCreate und nach dem Speichern PostingDidCreate versendet. Das subject ist die ID des Forumsbeitrags.

Wenn ein Forumsbeitrag verändert wurde, wird vor dem tatsächlichen Speichern die Notification PostingWillUpdate und nach dem Speichern PostingDidUpdate versendet. Das subject ist die ID des Forumsbeitrags.

Auch wenn ein Forumsbeitrag gelöscht wird, gibt es Notifications: PostingWillDelete und PostingDidDelete. Auch dort wird der Vollständigkeit halber die ID des Forumsbeitrags übergeben.

Notifications: Wiki

Wenn eine Wikiseite verfasst wurde, wird vor dem tatsächlichen Speichern die Notification PostingWillCreate und nach dem Speichern PostingDidCreate versendet. Das subject ist ein Array mit range_id und keyword der Wikiseite.

Wenn eine Wikiseite verändert wurde, wird vor dem tatsächlichen Speichern die Notification PostingWillUpdate und nach dem Speichern PostingDidUpdate versendet. Das subject ist ein Array mit range_id und keyword der Wikiseite.

Auch wenn eine Wikiseite gelöscht wird, gibt es Notifications: PostingWillDelete und PostingDidDelete. Auch dort wird der Vollständigkeit halber ein Array mit range_id und keyword der Wikiseite übergeben.

Wie benenne ich eine Notification?

Dazu gibt es bisher keine gültige Richtlinie. Offenbar scheint sich aber abzuzeichnen, dass der Name in CamelCase geschrieben und eine Handlung beschreibt. Da das NotificationCenter an die Originalimplementation aus NextStep angelehnt ist, macht es vermutlich Sinnn, ähnliche Konventionen wie dort zu verwenden. So beschreibt der Artikel NSNotfication Not Working, But Looks Right? :: Find That Bug! ein BestPractice, wonach die Notifications:

JJColorChange

und:

JJColorChanged

nur schwer im Code zu unterscheiden sind, da sie sich lediglich um einen Buchstaben unterscheiden. Die Empfehlung lautet statt:

  • CamelCase
  • CamelCased

lieber:

  • CamelCase
  • CamelDidCase
  • CamelWillCase
  • CamelByCase

zu verwenden. Aus diesen Gründen wurden bei den Notifications für Dateien, Wikiseiten und Forumsbeiträgen die Namen entsprechend gewählt.

 

 

Quelle: Basis-Wiki-Hilfe | Letzte Änderung: 08.03.2011 10:33 Uhr, mlunzena | Local view: Basis-Hilfe