Kalender-Modul

Aus DynPG-Wiki
Wechseln zu: Navigation, Suche

Das Erstellen eines Veranstaltungskalenders

Dieser Kalender hat eine spezielle Suche, welche in einem halbtranspartenten DIV geöffnet, verschoben und geschlossen werden kann. Der Einbau geschieht über insgesamt drei Seiten. Hier benennen wir diese einmal folgendermassen:

  • kalender.php
  • kalender1.php
  • kalender-print.php

Der Kalender im Editor

Als erstes erstellen wir einen einzelnen Artikel und klicken im Editor auf das Symbol Kalendericon.png, welches einen Platzhalter "kalender" einfügt. Diesen speichern wir als Artikel in eine dafür vorgesehene Gruppe ab.

Anschliessend erstellen wir eine eigene Webseite kalender.php, welche auf dem allgemeinen Layout der Web-Site aufbaut. An derjenigen Stelle wo der Kalender mit den Einträgen erscheinen soll, fügen wir nachfolgenden Code ein. Ich verzichte hier auf unnötige Erklärungen sondern verweise auf die Erklärungen, welche sich innerhalb des Codes befinden:

<?php
  // CALENDAR
  $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGcalendar', 'use_as_reference', 'FIXPOINT');
  $GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGcalendar', 'calendar_only');
  // Aktuelle Parameter speichern, um Einstellungen an der Kalenderliste
  // später wieder zurück setzen zu können
  $GLOBALS["DynPG"]->saveCurrentParams();
  // HIER MUESSEN DIE GRUPPEN EINGEGEBEN WERDEN, WELCHE VERANSTALTUNGEN BEINHALTEN
  $GLOBALS["DynPG"]->SetParam_AA_Groups(Array(3,4,5,11,12));
  $GLOBALS["DynPG"]->SetParam_A_Anytime(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_CategoryNavigation(FALSE);
  $GLOBALS["DynPG"]->SetParam_A_PrintNavigation(FALSE);
  $GLOBALS["DynPG"]->SetParam_A_ArticleHeader(FALSE);
  $GLOBALS["DynPG"]->SetParam_A_Article(294);
  $GLOBALS["DynPG"]->Write_Article();
  // Parameter wiederherstellen/zurücksetzen
  $GLOBALS["DynPG"]->loadSavedParams();
 
  // DEFAULT DYNPG VIEWS
  $GLOBALS["DynPG"]->SetParam_AG_Anytime(TRUE);
  $GLOBALS["DynPG"]->SetParam_AG_ForceNav(TRUE);
  $GLOBALS["DynPG"]->Write_AllGroups();
  $GLOBALS["DynPG"]->SetParam_AA_Anytime(FALSE);
  $GLOBALS["DynPG"]->SetParam_AA_ForceNav(FALSE);
  $GLOBALS["DynPG"]->Write_AllArticles();
  $GLOBALS["DynPG"]->SetParam_A_Anytime(FALSE);
  $GLOBALS["DynPG"]->SetParam_A_CategoryNavigation(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_PrintNavigation(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_ArticleHeader(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_IgnoreLimitation(TRUE);
  $GLOBALS["DynPG"]->Write_Article();
  $GLOBALS["DynPG"]->SetParam_A_IgnoreLimitation(FALSE);
?>

Dabei kommt es auf die Reihenfolge an, in der die Gruppen eingeordnet werden. Genau nach dieser Reihenfolge werden die ausgegebenen Gruppen bzw. Artikel sortiert.

Für die Ausgabe der Suchanfrage benötigen wir noch eine zweite Webseite, welcher wir den Namen kalender1.php geben. Dort fügen wir folgenden Inhalt ein:

<?php
  // CALENDAR
  $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGcalendar', 'use_as_reference', 'FIXPOINT');
  // set path to destination page, the implemented views may refer to
  $GLOBALS["DynPG"]->SetParam_PathToNextPage('./veranstaltungen.php');
  $GLOBALS["DynPG"]->SetParam_AA_Order( Array( 
                     'DATE_FROM' , 'TIME_FROM' , 'DATE_TO' , 'TIME_TO' , 'CREATEDATE' ) );
  $GLOBALS["DynPG"]->SetParam_AA_Sort( Array( 'DESC', 'DESC', 'DESC', 'DESC' , 'DESC' ) );
  $GLOBALS["DynPG"]->SetParam_AA_Anytime(FALSE);
  $GLOBALS["DynPG"]->SetParam_AA_ForceNav(TRUE);
  // HIER MUESSEN DIE GRUPPEN EINGEGEBEN WERDEN, WELCHE VERANSTALTUNGEN BEINHALTEN
  $GLOBALS["DynPG"]->SetParam_AA_Groups(Array(3,4,5,11,12));
  $GLOBALS["DynPG"]->SetParam_A_Anytime(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_CategoryNavigation(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_PrintNavigation(FALSE);
  $GLOBALS["DynPG"]->SetParam_A_ArticleHeader(FALSE);
  // HIER MUSS DIE ARTIKELNUMMER DES KALENDERS ANGEGEBEN WERDEN
  $GLOBALS["DynPG"]->SetParam_A_Article(294);
  $GLOBALS["DynPG"]->Write_Article();
?>

Auch für den Ausdruck des Kalenders benötigen wir eine eigenständige Webseite, damit dort ein anderes Template für die Ausgabe übernommen werden kann. Dieser Seite geben wir den Namen kalender-print.php und fügen folgenden Code ein:

<?php
  // CALENDAR
  $GLOBALS["DynPG"]->SetParam_PlugIn_Param('DPGcalendar', 'use_as_reference', 'FIXPOINT');
  $GLOBALS["DynPG"]->SetParam_PlugIn_Template('DPGcalendar', 'print');
  // set path to destination page, the implemented views may refer to
  $GLOBALS["DynPG"]>SetParam_PathToNextPage('./veranstaltungen.php');
  $GLOBALS["DynPG"]->SetParam_AA_Order( Array( 
                     'DATE_FROM' , 'TIME_FROM' , 'DATE_TO' , 'TIME_TO' 'CREATEDATE' ) );
  $GLOBALS["DynPG"]->SetParam_AA_Sort( Array( 'DESC', 'DESC', 'DESC', 'DESC' , 'DESC' ) );
  $GLOBALS["DynPG"]->SetParam_AA_Anytime(FALSE);
  $GLOBALS["DynPG"]->SetParam_AA_ForceNav(TRUE);
  // HIER MUESSEN DIE GRUPPEN EINGEGEBEN WERDEN, WELCHE VERANSTALTUNGEN BEINHALTEN
  $GLOBALS["DynPG"]->SetParam_AA_Groups(Array(3,4,5,11,12));
  $GLOBALS["DynPG"]->SetParam_A_Anytime(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_CategoryNavigation(TRUE);
  $GLOBALS["DynPG"]->SetParam_A_PrintNavigation(FALSE);
  $GLOBALS["DynPG"]->SetParam_A_ArticleHeader(FALSE);
  // HIER MUSS DIE ARTIKELNUMMER DES KALENDERS ANGEGEBEN WERDEN
  $GLOBALS["DynPG"]->SetParam_A_Article(294);
  $GLOBALS["DynPG"]->Write_Article();
?>

Damit nun der Pfad zum Printfile kalender-print.php gefunden wird, müssen wir diesen auch definieren. Dazu öffnen wir im cms Ordner folgende Datei: plugins/templates/default/calendar.tpl scrollen im Template ganz nach unten und fügen nach {$MATCHES} folgende Zeilen ein:

<div class="print_calendar_link">
  <a href="kalender-print.php?{$Main->queryString}" target="_blank" title="drucken Sie die ausgew&auml;hlten Veranstaltungen">
  drucken
  </a>
  </div>

Das Aussehen des Printfiles wird über die normalen Klassen in der config_general.css gesteuert.

Das Aussehen des einblendbaren Kalenders wird über die Datei plugins/DPGcalendar/styles/style.css gesteuert.

Kalender ständig einblenden

Es handelt sich hier bei gar nicht um ein "PopUp", sondern einfach um einen DIV-Layer, welcher mithilfe von JavaScript verschoben werden kann. Wenn der Kalender fix angezeigt werden soll, braucht man nur in /plugins/DPGcalendar/styles/style.css unter "div#dynpg_calendar_container" "display: none" auf "display: block" stellen, sowie mithilfe der Angaben für "top" und "left" den Kalender dahin schieben, wo man ihn haben möchte.

Soll er zudem auch nicht mehr verschoben werden, so müsste man aus den Templates

  • /plugins/DPGcalendar/templates/calendar_only/calendar.tpl
  • /plugins/DPGcalendar/templates/calendar/calendar.tpl

den DIV-Layer "titlebar" entfernen, also

<div title="Verschieben Sie mit gedr&uuml;ckter Maustaste diesen Kalender" class="titlebar">
...
...
</div>

Diese Informationen als PDF

Dieser Artikel existiert in einer (möglicherweise älteren) Version auch als PDF: Kalender-Modul.pdf