Elementbeschreibung einer FSK-Program Seite
Dieser Abschnitt beschreibt welche Elemente auf einer einzelnen Sendungsseite vorhanden sein sollen und wie diese Elemente von den jeweiligen Sendungsmachenden erstellt und gepflegt werden können.
Dabei wird getrennt zwischen der Erstellung/Änderung von Seiteninhalten und der Anzeige des erstellten Inhalts. Inhalte werden generell von den fsk-usern erstellt, die von Text über Bilder und externe Links bis hin zu Terminen und Transmitter-Einträgen alles anlegen können.
Die Anzeige der Inhalte einer Sendung wird dann typischerweise von Views übernommen die eine bestimmte Sichtweise auf die Inhalte einer Sendung bieten. Views können ebenfalls benutzt werden um zB. Listen von Links zu erstellen, wie für den link block oder die blogroll, oder als archiv vergangener Posts. Diese Views werden in sogenannten Blöcken auf der Webseite angezeigt. Blöcke sind einfach Bereiche der Seite die mit beliebigem Inhalt gefüllt werden können. Jede Sendungsseite ist aus diesen Blöcken aufgebaut.
Rollenbeschreibung
Das vorhandene UseCase Diagram gibt jedem Block eine Rolle die eine bestimmte Aufgabe zu erfüllen hat. Die in unserem Fall einzige Rolle, die keine Inhalte repräsentiert, ist der normaler fsk user. Alle anderen Rollen repräsentieren Blöcke die mit Inhalt gefüllt werden können.
Hier ist nun eine Übersicht der einzelnen Rollen, also Inhalte, die es auf einer Sendungsseite geben kann:
Users Use Case Beschreibung
Wie schon erwähnt kann der fsk user die Seite mit Inhalt füllen. Dieser Inhalt wird in den eben erwähnten Blöcken angezeigt. Die erzeugten Inhaltsdaten werden in den einzelnen Blöcken auf unterschiedliche Weise dargestellt, meist mit Hilfe von verschiedenen Views die unterschiedliche Ansichten auf vorhandene Daten anbieten.
Hier ist aber erstmal eine Übersicht über den Inhalt den ein fsk user so erstellen kann:
Website Use Case Beschreibung
Die oben erwänten Rollen repräsentieren Blöcke auf der Webseite in denen vom fsk user erstellte Inhalte abgezeigt werden. Die Blöcke bieten aber von sich aus keine Funktionalität um Daten anzuzeigen sonderen präsentieren nur den Platz auf der Webseite wo die Daten letztendlich zu sehen sind. Das Anzeigen der Daten wird über die folgenden Use Cases erklärt. Auf der Webseite ist fast jeder Use Case ein View oder eine Kombination von mehreren Viewsoder eine Kombination von Views und anderen Inhalten. Views können jedem beliebigen Block zugewiesen werden. In unserem Fall gehören die einzelnen Views zu bestimmten Blöcken die über das Layout und die Funktionalität der Webseite bestimmt werden.
Die folgenden Views sind vorhanden:
Benutze Taxonomien und Vokabulare
Extrahieren der Sendungstaxonomie aus der URL
Mit Hilfe der Drupal Api und ein bisschen php kann man relativ einfach die taxonomie einer Sendung aus dem Url-Pfad extrahieren. Etwa so:
if( arg(0) && arg(1) && arg(2) ) { if( arg(0) == "sendungen" && arg(1) == "showallproto" ) { $args[0] = arg(2); } } return $args;
Diese Code kann als Argument-Code eines Views eingesetzt werden. Jedes mal wenn ein View angezeigt wird, wird dieser Code ausgeführt der das erste Argument eines Views generiert.
Entsprechende funktionierende Beispiele finden sich unter:
- http://fsk.depaoli.de/sendungen/showallproto/Lorettas+Literarisches+Lazarett
- http://fsk.depaoli.de/sendungen/showallproto/zumbeat+infection
Man könnte alternativ die generische drupal_get_path_alias() api funktion benutzen, allerdings muss man dafür die nicht-alias URL eines Knoten oder in unserem Fall der Seite wissen, was sich aber nicht so ohne weiteres herausfinden lässt. Das Problem ist das ich aus einem Block-View versuche die Seiten Url zu extrahieren wobei man sich den link nicht in der From von node/node->nid zusammensetzten kann da der Block-View ja nicht direkt ein Knoten ist und node->nid in diesem Fall keine gültige ID liefert.
ANMERKUNG: sobald man nicht mehr auf einer sendungen/showallproto/sendungstaxonomy Seite ist, muss der Block deaktiviert werden da ansonsten immer eine Liste aller Taxonomien sichtbar ist. Das gleiche gilt wenn eine Sendung keine About Seite anbietet. Das lässt sich allerdings einfach beheben in dem man einen Beitrag mit der entsprechenden about Taxonomie anlegt oder einem vorhanden Beitrag diese Taxonomie zuweist.
Aktivieren/Deaktivieren der Blöcke
Man kann auf der Block-Konfigurationsseite einstellen wer einen Block sehen kann. Dort kann man auch PHP-Code einfügen hab um zu testen ob der Link der Seite die man momentan ansieht, die folgend Argumente enthält:
- sendungen
- showallproto
Nur dann soll der Block sichtbar sein. Ansonsten sind sie deaktiviert. Hier ist der Beispiel PHP-Code:
<?php if( arg(0) && arg(1) && arg(2) ) { return (arg(0) == "sendungen" && arg(1) == "showallproto" ) ? TRUE : FALSE; } else { return FALSE; } ?>
Sas hat allerdings den Nachteil, das die Navigation dann verschwindet wenn man auf einen Artikel oder Eintrag klickt, da sich der Link entsprechend ändert und die Abfrage immer FALSE zurück gibt.