Kalenderblattdarstellungen

Auf dieser Seite... (ausblenden)

  1.   1.  Übersicht
  2.   2.  Konzept
  3.   3.  Weitere Parameter für einen Kalendereintrag
    1.   3.1  onClick

1.  Übersicht

In Stud.IP gibt es leider verschiedene Klassen, um sowas wie ein Kalenderblatt darzustellen. Das kann ein Stundenplan sein oder wirklich ein Blatt eines Kalenders oder ein Raumbelegungsplan. Die Klasse CalendarView versucht, einen neuen Standard für Kalenderdarstellungen in Stud.IP zu sein, und ist wohl die erste Klasse, die in gewisser Weise generisch arbeiten und sich auch für andere Kontexte leicht verwenden soll.

2.  Konzept

Die Idee der CalendarView-Klasse ist es, dass man eine Art Kalenderblatt darstellen will. Dieses Blatt hat mehrere Spalten, die vielleicht die Wochentage sein können, vielleicht aber auch Räume oder Veranstaltungen sind. Also haben wir ein Blatt (CalendarView), dem wir ein oder mehrere Spalten (CalendarColumn) hinzufügen, die wiederum beliebig viele Einträge/Termine (das ist nur ein Array und kein spezifisches Objekt) haben können. Und am Ende befiehlt man dem CalendarView-Objekt nur noch, sich als HTML-Text auszugeben und fertig.

Nicht immer sind Codebeispiele hilfreich, in diesem Fall aber sagt das mehr als tausend Worte:

$plan = new CalendarView();
$plan->addColumn('Raum A');
$plan->addColumn('Raum B');
$plan->addEntry([
   'id'    => 1,
   'color' => '#5C2D64',
   'start' => '0930',
   'end'   => '1100',
   'title' => 'Mathe 2',
   'content' => 'Die Mathematiker kreiden sich mal wieder was an.'
]);
echo $plan->render();

Die Klassen unterstützen aber auch Chaining, das bedeutet, man kann auch mit weniger Zeilen auskommen und die ganzen new-Anweisungen weglassen. Das folgende Beispiel sollte dasselbe tun wie das oben:

$plan = new CalendarView();
$plan->addColumn('Raum A')
   ->addColumn('Raum B')
   ->addEntry([
       'id'    => 1,
       'color' => '#5C2D64',
       'start' => '0930',
       'end'   => '1100',
       'title' => 'Mathe 2',
       'content' => 'Die Mathematiker kreiden sich mal wieder was an.'
]);
echo $plan->render();

3.  Weitere Parameter für einen Kalendereintrag

3.1  onClick

Mittels dem Array-Schlüssel onClick kann eine JavaScript-Funktion angegeben werden, welche beim Klick auf einen Kalendereintrag ausgeführt werden soll.

Beispiel:

<?php
$calendar->addEntry([
    'color' => 'blue',
    'start' => date("Hi", $courseDate->date),
    'end' => date("Hi", $courseDate->end_time),
    'title' => $course->name,
    'content' => $courseDate->raum
    'onClick' => 'STUDIP.MyCalendarController.showEvent'
]);

Letzte Änderung am June 28, 2019, at 11:14 AM von dsiegfried.