Veranstaltungstermine darstellen

Entwicklungs-HOWTO

Dieses Feature gibt es seit Stud.IP Version 2.0

Für die Darstellung von Veranstaltungsterminen werden die Daten aus Seminar::getUndecoratedData an ein Template übergeben, welches dann die Darstellung dieser Daten übernimmt.

Möchte man nun eine Termindarstellung für ein Seminar oder einen Einzeltermin haben, so benötigt man entsprechend eine Instanz von Seminar bzw. SingleDate.

Beide Klassen bieten vier Objektmethoden, drei um sich häufig benötigte Darstellungen geben zu lassen, eine um ein selbst definiertes Template zu übergeben.

1.  Templates

Die Standardtemplates für die Darstellung liegen in templates/dates:

date_export.php
date_html.php
date_xml.php
seminar_export_location.php
seminar_export.php
seminar_html_location.php
seminar_html.php
seminar_predominant_html.php
seminar_xml.php


Je nach Kürzel werden Nutzerdaten innerhalb der Templates wie folgt bearbeitet:

  • _html: htmlReady
  • _xml: htmlspecialchars
  • _export: gar nicht.

2.  Veranstaltungstermine - Beispiele

Um sich Veranstaltungstermine anzeigen zu lassen, benötigt man lediglich eine Instanz der Seminar-Klasse und ruft dort die entsprechende Methode auf.

  1. $seminar = Seminar::getInstance(seminar_id);
  2. echo $seminar->getDatesHTML();
  3. echo $seminar->getDatesExport();
  4. echo $seminar->getDatesXML();
  5. echo $seminar->getDatesTemplate('dates/seminar_html_location.php');

Es besteht außerdem die Möglichkeit, dem Template Parameter mitzuliefern. Im folgenden Beispiel wird die Verlinkung des Raumes abgeschaltet.

  1. echo $seminar->getDatesHTML(array('link' => false));

Eine vollständige Liste aller Parameter der Standardtemplates befindet sich weiter unten.

3.  Einzeltermin - Beispiele

Gleiches gilt für Einzeltermine - Instanzobjekt erzeugen, passende Methode aufrufen.

  1. $singleDate = new SingleDate(termin_id);
  2. echo $singleDate->getDatesHTML();
  3. echo $singleDate->getDatesExport();
  4. echo $singleDate->getDatesXML();
  5. echo $seminar->getDatesTemplate('dates/date_html.php');

4.  Eigenes Template erstellen

Ein eigenes Template für die Formatierung zu erstellen ist nicht weiter schwierig. Das neue Template legt man am Besten nach templates/dates

4.1  Veranstaltungstermine

Im Template hat man Zugriff auf die Variable $dates, welche die reglmäßigen Terminserien sowie die unregelmäßigen Einzeltermine enthält.
Dieses Array wird von Seminar::getUndecoratedData geliefert, der Aufbau ist wie folgt:

Array(
  'regular' => Array(
    'turnus_data' => Array(  //jeweils CycleData::toArray() + 'first_date'
      'metadate_id'
      'seminar_id'
      'start_time'     //Format hh::mm:ss
      'end_time'       //Format hh::mm:ss
      'weekday'        //Montag=1 (wie day)
      'description'    //wie desc
      'sws'            //Semesterwochenstunden Dozent
      'cycle'          //Turnus 0=wöchentlich, 1=zweiwöchentlich,3=dreiwöchentlich
      'week_offset'    //Startwoche im Semester, 0=1. Semesterwoche
      'sorter'
      'mkdate'
      'chdate'         //
      'start_hour'     //hh
      'start_minute'   //mm
      'end_hour'       //hh
      'end_minute'     //mm
      'day'     
      'desc'           // Beschreibung dieser Terminserie
      'assigned_rooms' => Array( // Räume, die den Einzelterminen dieser Terminserie zugeordnet sidn
        resource_id    => Anzahl Einzeltermine mit diesem Raum,
        ...
      ),
      'freetext_rooms' => Array( // Freitextangaben der Einzeltermine dieser Terminserie
        text           => Anzahl Einzeltermine mit dieser Freitextangabe,
        ...
      ),
      'tostring'       // der Rückgabewert von CycleData::toString()
      'tostring_short' // der Rückgabewert von CycleData::toString(true)
    ),
      'first_date' => Array('termin_id', //Erster Einzeltermin dieser Serie
                             ...
      )
  ),

  'irregular' =>
    'metadate_id'
    'termin_id'   
    'date_typ'   
    'start_time' 
    'end_time'   
    'mkdate'     
    'chdate'     
    'ex_termin'   
    'range_id'   
    'author_id'   
    'resource_id'
    'raum'        // freie Ortsangabe zu diesem Termine
    'typ'         
    'tostring'   
);

4.2  Einzeltermine

Hier kann man im Template auf die Variable $date zugreifen, welche eine Instanz der SingleDate-Klasse beinhaltet.
Dementsprechend sind darüber auch alle Instanzmethoden verfügbar.

Beispiel date_html.php:

<?php
if (!isset($link)) $link = true;
echo $date->toString();
if ($date->getResourceId()) :
    echo ', '.  _("Ort:") .' ';
    echo implode(', ', getFormattedRooms(array($date->getResourceId() => '1'), $link));
endif ?>

5.  Parameter für Templates

An manche Templates kann man Parameter übergeben, um die Ausgabe zu beinflussen. Nachfolgend sind alle Parameter der Standardtemplates aufgelistet.

5.1  date_export.php

keine Parameter vorhanden

5.2  date_html.php

link - boolean
  true: default, Links zu den belegten Räumen anzeigen
  false: Nur den Raumnamen ohne Verlinkung anzeigen

5.3  date_xml.php

keine Parameter vorhanden

5.4  seminar_export_location.php

keine Parameter vorhanden

5.5  seminar_export.php

show_room - boolean
  true: default, Räume der Terminserien anzeigen
  false: keine Räume bei den Terminserien anzeigen

5.6  seminar_html_location.php

keine Parameter vorhanden

5.7  seminar_html.php

link - boolean
  true: default, Links zu den belegten Räumen anzeigen
  false: Nur den Raumnamen ohne Verlinkung anzeigen

show_room - boolean
  true: default, Räume der Terminserien anzeigen
  false: keine Räume bei den Terminserien anzeigen

link_to_dates - boolean
  true: Fügt einen Link zum Ablaufplan ein
  false: default

5.8  seminar_predominant_html.php

link - boolean
  true: default, Links zu den belegten Räumen anzeigen
  false: Nur den Raumnamen ohne Verlinkung anzeigen

show - int
  Hier legt man fest, wieviele Räume/Freitexteintragungen bei Terminserien angezeigt werden, bevor "und x weitere" angezeigt wird.

Letzte Änderung am April 02, 2011, at 11:18 AM von tthelen.