Navigation

 ·   Wiki Home
 ·   Wiki Hilfe (englisch)
 ·   Kategorien
 ·   Titel-Liste
 ·   Uncategorized Pages
 ·   Zufällige Seite
 ·   Datei hochladen
 ·   Hochgeladene Dateien
 ·   Letzte Änderungen
 ·   RSS
 ·   Atom
 ·   What Links Here

Aktive Mitglieder :

Suchen:

 

Seite erstellen oder suchen :

 

Zeigen cal

Die Extension »cal« bzw. »Calendar base« ist definitiv der leistungsfähigste Kalender für Typo3. Das Manual bei typo3.org ist sehr ausführlich und leicht verständlich, lediglich beim Frontend-Editing gibt es eine kleine Hürde, da dies nur über Typoscript konfiguriert werden kann.

Diese Ausführungen beziehen sich auf Vs. 1.1.0

Installation

Sie ist an sich problemlos; falls jedoch die Verwaltung der Organisatoren über tt_address erfolgen soll, muss diese Extension vor cal installiert werden. Da es sehr viele andere Extensions gibt, die die Funktionalität von cal erweitern, ist es ratsam, dazu die Doku zu lesen (siehe unter »Weiterführende Links«).

statische Templates

Nach der Installation müssen unbedingt die statischen Templates eingebunden, sonst gibt es keinen Output.

  • CSS-based template (cal)
  • Default CSS styles (cal)
  • ICS Export (cal) (optional, für den Export von ICS-Kalendern)
  • Fe-Editing (cal) (optional, falls Frontend-Editing erlaubt wird)
  • News-feed (RSS,RDF,ATOM) (cal) (optional, falls ein Feed eingerichtet werden soll)

Seitenbaum

Es reicht prinzipiell ein Sysfolder für die Daten sowie eine Inhaltsseite für das Plugin aus, es kann aber für jede Funktion eine eigene Seite angelegt werden. Zudem können die Daten, die über das Frontend-Editing angelegt werden, in einen eigenen Sysfolder wandern.

Es ist ratsam, ein Erweiterungstemplate für den Kalender anzulegen, in dem die eigentliche Konfiguration erfolgt.

Plugin

Jede einzelne Funktion des Kalenders kann über ein individuell konfiguriertes Plugin auf einer individuellen Seite eingebunden. Vorteil ist, dass zusätzlich ein Menü erstellt werden kann, das z. B. direkt auf die Monatsansicht oder auf eine Listensansicht verweist. Nachteil ist ein deutlich erhöhter Konfigurationsaufwand, da in jedem Plugin dann eingegeben werden muss, auf welchen Seiten die anderen Funktionen liegen.

Einfacher ist es, das Plugin nur einmal auf einer Seite einzubinden.

Darin muss in den »General Settings« in der Rubrik »Allowed Views« dann allerdings gründlich ausgesucht werden, welche Ansichten erlaubt werden sollen:

Minimum:

  • Month
  • Year
  • Week
  • Day
  • Single Event

Optional

  • List

Suche

  • Search Event (nötig, wenn die Suche möglich sein soll)
  • Search Location
  • Seach Organizer
  • Search All

Wenn das Frontediting erlaubt wird:

  • Create Event
  • Edit Event
  • Delete Event

Wenn den Admins das Anlegen von Kalendern erlaubt wird:

  • Adminstration Options
  • Create Calendar
  • Edit Calendar
  • Delete Calendar
  • Create Category
  • Edit Category
  • Delete Category
  • Create Organizer
  • Edit Organizer
  • Delete Organizer
  • Create Location
  • Edit Location
  • Delete Location

Sonstige (teilweise weitere Extensions erforderlich)

  • Organizer
  • Location
  • ICS
  • Subscription manager
  • Meeting Manager
  • Translation Options

Daten

Bevor man Output erhält, muss ein Kalender angelegt werden. Kalender, die nicht einem bestimmten Frontend-User oder einer Gruppe zugewiesen werden, sind automatisch öffentliche Kalender. Erst danach können Ereignisse angelegt werden.

Optional können darüber hinaus für jeden Kalender Kategorien, Organisatoren und Orte angelegt werden. Ausserdem ist es möglich, »Exception Events« anzulegen – das sind Tage oder Zeiträume, die bei wiederholenden Terminen ausgenommen werden sollen.

Constants

plugin.tx_cal_controller {

    
####### Anpassungen unbeingt erforderlich ######
    
pidList = 65 # PID des Sysfolders mit den Daten (Liste)
    # PID der Datensätze, die über das Frontend eingegeben werden.
    # Im Moment die gleiche wie beim Backend.
    
rights.defaultSavePid = 65 # PID des Sysfolders mit den Front-Daten (Liste)

    ####### Anpassungen optional ######

    # Bildgrößen
    
singleMaxW = 240
    listMaxW
= 120

    
# nach Belieben anpassen
    
uploadPath.image = uploads/tx_cal/pics/
    
uploadPath.media = uploads/tx_cal/media/

    
# Frontend-Editing erlauben
    
rights.edit = 1
    
# Frontenduser angeben, die Admin-Rechte haben.
    # Im Moment keine.
    
rights.admin.user =
    
# Gruppe der Frontenduser angeben, die Admin-Rechte haben.
    # Im Moment keine.
    
rights.admin.group =
    
    
# Angaben für die Erinnerungsemails bei abonnierten Ereignissen
    
emailAddress = no@reply.de
    emailName
= Reminder
    emailOrganisation
= irgendwas
    
    
# Zeit in Minuten bevor die Erinnerung gesendet wird.
    # Erfordert die gabriel extension und einen Cronjob.
    # Derzeit nicht aktiv.
    # view.event.remind.time = 30
    
    # noch unklar, im Moment inaktiv.
    # view.event.notify.subscriptionViewPid =
    # view.event.meeting.statusViewPid =

    # Google Map für die Veranstaltungsorte
    # erfordert wec_map, deshalb ausgeschaltet
    
view.location.showMap = 0

    
# Datums und Zeitformate, ggf. anpassen.
    
view.dateFormat = %d.%m
    view
.timeFormat = %H:%M
    
    
    
#### Templates - in fileadmin verschoben ####

    ## Bilder + JavaScript ##
    
view.imagePath = fileadmin/templates/cal/img
    view
.javascriptPath = fileadmin/templates/cal/js
    
    
## Templates ##
    
view.calendar.createCalendarTemplate = fileadmin/templates/cal/create_calendar.tmpl
    view
.calendar.confirmCalendarTemplate = fileadmin/templates/cal/confirm_calendar.tmpl
    view
.calendar.deleteCalendarTemplate = fileadmin/templates/cal/delete_calendar.tmpl
    view
.category.createCategoryTemplate = fileadmin/templates/cal/create_category.tmpl
    view
.category.confirmCategoryTemplate = fileadmin/templates/cal/confirm_category.tmpl
    view
.category.deleteCategoryTemplate = fileadmin/templates/cal/delete_category.tmpl
    view
.day.dayTemplate = fileadmin/templates/cal/day.tmpl
    view
.week.weekTemplate = fileadmin/templates/cal/week.tmpl
    view
.month.monthTemplate = fileadmin/templates/cal/month.tmpl
    view
.month.monthSmallTemplate = fileadmin/templates/cal/month_small.tmpl
    view
.month.monthMediumTemplate = fileadmin/templates/cal/month_medium.tmpl
    view
.month.monthLargeTemplate = fileadmin/templates/cal/month_large.tmpl
    view
.month.horizontalSidebarTemplate = fileadmin/templates/cal/calendar_nav.tmpl
    view
.year.yearTemplate = fileadmin/templates/cal/year.tmpl
    view
.event.eventTemplate = fileadmin/templates/cal/event.tmpl
    view
.event.phpicalendarEventTemplate = fileadmin/templates/cal/phpicalendar_event.tmpl
    view
.event.createEventTemplate = fileadmin/templates/cal/create_event.tmpl
    view
.event.confirmEventTemplate = fileadmin/templates/cal/confirm_event.tmpl
    view
.event.deleteEventTemplate = fileadmin/templates/cal/delete_event.tmpl
    view
.event.notify.all.onCreateTemplate = fileadmin/templates/cal/notifyOnCreate.tmpl
    view
.event.notify.all.onChangeTemplate = fileadmin/templates/cal/notifyOnChange.tmpl
    view
.event.notify.all.onDeleteTemplate = fileadmin/templates/cal/notifyOnDelete.tmpl
    view
.event.remind.all.template = fileadmin/templates/cal/remind.tmpl
    view
.event.subscriptionManagerTemplate = fileadmin/templates/cal/subscription_manager.tmpl
    view
.event.notify.confirmTemplate = fileadmin/templates/cal/notifyConfirm.tmpl
    view
.event.notify.unsubscribeConfirmTemplate = fileadmin/templates/cal/notifyUnsubscribeConfirm.tmpl
    view
.event.meeting.template = fileadmin/templates/cal/invite.tmpl
    view
.event.meeting.onChangeTemplate = fileadmin/templates/cal/inviteOnChange.tmpl
    view
.event.meeting.managerTemplate = fileadmin/templates/cal/meetingManager.tmpl
    view
.location.locationTemplate = fileadmin/templates/cal/location.tmpl
    view
.location.locationTemplate4Partner = fileadmin/templates/cal/location_partner.tmpl
    view
.location.locationTemplate4Address = fileadmin/templates/cal/location_address.tmpl
    view
.location.createLocationTemplate = fileadmin/templates/cal/create_location.tmpl
    view
.location.confirmLocationTemplate = fileadmin/templates/cal/confirm_location.tmpl
    view
.location.deleteLocationTemplate = fileadmin/templates/cal/delete_location.tmpl
    view
.organizer.organizerTemplate = fileadmin/templates/cal/organizer.tmpl
    view
.organizer.organizerTemplate4Partner = fileadmin/templates/cal/organizer_partner.tmpl
    view
.organizer.organizerTemplate4Address = fileadmin/templates/cal/organizer_address.tmpl
    view
.organizer.organizerTemplate4FEUser = fileadmin/templates/cal/organizer_feuser.tmpl
    view
.list.listTemplate = fileadmin/templates/cal/list.tmpl
    view
.list.listWithTeaserTemplate = fileadmin/templates/cal/list_w_teaser.tmpl
    module
.locationloader.template = fileadmin/templates/cal/module_locationloader.tmpl
    view
.admin.adminTemplate = fileadmin/templates/cal/admin.tmpl
    view
.other.sidebarTemplate = fileadmin/templates/cal/sidebar.tmpl
    view
.other.searchBoxTemplate = fileadmin/templates/cal/search_box.tmpl
    view
.search.searchResultAllTemplate = fileadmin/templates/cal/search_all.tmpl
    view
.search.searchResultEventTemplate = fileadmin/templates/cal/search_event.tmpl
    view
.search.searchResultLocationTemplate = fileadmin/templates/cal/search_location.tmpl
    view
.search.searchResultOrganizerTemplate = fileadmin/templates/cal/search_organizer.tmpl
}

Setup (Haupttemplate oder Erweiterungstemplate)

Im Setup geht es hauptsächlich um die Konfiguration des Frontend-Editing. Zuerst muss es grundlegend eingeschaltet werden:

plugin.tx_cal_controller.rights.edit = 1

Es gibt drei unterschiedliche Methoden des Frontend-Editings:

  • für Admins, incl. Erstellen von Kalendern, Kategorien etc.
  • für eingeloggte Frontend-User
  • für normale Besucher (public user)

Um das Frontend-Editing für Admins zu ermöglichen:

# Benutzer
plugin.tx_cal_controller.rights.admin.user = UserID
# oder Gruppen
plugin.tx_cal_controller.rights.admin.group = GroupID

Damit werden global alle Rechte für die Admins freigeschaltet, inclusive dem Erstellen von neuen Kalendern, Orten, Kategorien etc.

Für die normalen Frontend-User muss genauer konfiguriert werden – wie im folgenden Beispiel, in dem die Frontend-Benutzergrupp 2 sowohl in eigene Kalender wie auch in die öffentlichen Kalender Ereignisse eintragen darf. Im öffentlichen Kalender dürfen diese Benutzer die selbst angelegten Ereignisse auch bearbeiten und löschen. Die privaten Kalender sind nur den eingeloggten Frontendbenutzern sichtbar, denen der Kalender gehört, die öffentlichen Kalender sehen alle Besucher.

plugin.tx_cal_controller {
    rights {

        create
.event {
            
# Gruppe, der das Frontend-Editing erlaubt wird.
            
group = 2
            
# Gruppe, die im öffentlichen Kalender Termine einstellen darf
            
publicEvents.group = 2
            
# Benutzer, der einen Termin im öff. Kalender einstellt, darf diesen
            # auch bearbeiten.
            
addFeUserToShared = 1
            
# Alle Felder erlauben
            # enableAllFields.group = 2
            # Hier kann als voreingestellter Wert bei der Kalenderauswahl der
            # öffentliche Kalender eingestellt werden (hier Kalender 1)
            # momentan inaktiv.
            # fields.calendar_id.default = 1
            
fields {
                
# zusätzliche Felder - falls diese nicht erwünscht sind,
                # einfach die Zeile auskommentieren.
                # Vorauswahl der Organisatoren erlauben.
                
cal_organizer.group=2
                
# Bildupload erlauben
                
image.group=2
                image_caption
.group=2
                image_title
.group=2
                image_alt
.group=2
                
# Wiederholende Ereignisse
                # recurring.group=2
                # Dateianhänge
                # attachement.group=2
                # attachement_caption.group=2
            
}

        }
        edit
.event {
            
# Gruppe, die prinzipiell Termine editieren darf (hier die gleiche
            # wie beim Erstellen der Events. Im öffentlichen Kalender nur die
            # selbst erstelltn.
            
group = 2
            
# die gleichen Felder erlauben wie beim Erstellen des Termins.
            
fields {
                
# zusätzliche Felder - falls diese nicht erwünscht sind,
                # einfach die Zeile auskommentieren.
                # Vorauswahl der Organisatoren erlauben.
                
cal_organizer.group=2
                
# Bildupload erlauben
                
image.group=2
                image_caption
.group=2
                image_title
.group=2
                image_alt
.group=2
                
# Wiederholende Ereignisse
                # recurring.group=2
                # Dateianhänge
                # attachement.group=2
                # attachement_caption.group=2
            
}
        }
        delete
.event {
            
# Gruppe, die prinzipiell Termine löschen darf (hier die gleiche
            # wie beim Erstellen der Events. Im öffentlichen Kalender nur die
            # selbst erstellten.
            
group = 2
        }

    }
}

Public Frontend-Editing

Auch den normalen Besuchern kann erlaubt werden, Kalendereinträge zu erstellen, z. B. in einem Intranet:

plugin.tx_cal_controller.rights {
  
# generell erlauben
   
edit = 1
   create
.event {
     
# Public Usern das Editing erlaugen
      
public = 1
      fields {
      
# spezielle Konfigurationen für einige Felder:
      # es kann z. B. kein Kalender ausgewählt werden:
      
calendar_id.public = 0
      
# statt dessen wird ein Kalender voreingestellt (muss ein öffentlicher sein, natürlich)
      
calendar_id.default = 5
      
# Ereignisse, die einen ganzen Tag dauern sind deaktiviert.
      
allday.public = 0
      
# die Auswahl der Organisatoren ist inaktiv
      
cal_organizer.public = 0
      organizer
.public = 0
      
# ebenso das Pulldownmenü für die Orte
      
cal_location.public = 0
    }
  }
}

Das Editieren und Löschen kann prinzipiell auch gestattet werden, da aber Public User sich nicht einloggen und deshalb nicht identifiziert werden können, ist dann allen Benutzern das Bearbeiten aller Ereignisse möglich.

Minikalender einbinden

Um einen Minikalender einzubinden – zum Beispiel in die Seitenleiste unter das Menü – muss das folgende Typoscript so oder ähnlich ins Setup eingebunden werden (hier für TemplaVoila, deshalb mit lib. anstatt mit temp.):

lib.miniCal = COA
lib
.miniCal {
    20
< plugin.tx_cal_controller
    20 {
        pages
= 65 # PID des Sysfolders
        
view {
            allowedViews
= month
            month
.monthTemplate = fileadmin/templates/cal/monthmini.html
            day
.dayViewPid = 67 # PID des Plugins mit der Tagesansicht
            
weekStartDay = Sunday
        }    
    }
}

Ausserdem muss das Template selbst erstellt werden; es gibt keine Vorlage dafür:

<div id="minical">###MONTH_SMALL|+0### </div>

Ein Beispiel, wie man das Ganze über das normale Plugin erledigt, gibt es hier: Create a monthly mini view. Ein weiteres Beispiel, wie man einen Mini-Kalender in Monatsansicht oder in Listenasicht einbaut findet sich bei sk-typo3.org in der Rubrik »Spezialelemente« (Achtung: dieser Artitkel bezieht sich auf eine ältere Version von cal – 0.12.0 – bezogen auf die aktuelle Version ist das TypoScript fehlerhaft und ergibt keinen Output! Bitte mit meinem Skript oben abgleichen!)

Funktionserweiterungen mit weiteren Extensions

Insbesondere Date2Calendar (date2cal) sei empfohlen, da die Eingabe der Datumsangaben damit sehr viel konfortabler erfolgt (einfach installieren und vergessen …) Da es ansonsten sehr viele Extensions gibt, die die Funktionalität von cal erweitern, sei hier einfach auf das Manual bei typo3.org verwiesen, hier werden viele beschrieben.

Weiterführende Links:

Category:Typo3 -> Extensions

Kategorien: