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.
$seminar = Seminar::getInstance(seminar_id);
echo $seminar->
getDatesHTML();
echo $seminar->
getDatesExport();
echo $seminar->
getDatesXML();
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.
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.
$singleDate = new SingleDate(termin_id);
echo $singleDate->
getDatesHTML();
echo $singleDate->
getDatesExport();
echo $singleDate->
getDatesXML();
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.