Hallo,
ich würde gerne die "Reminder" Funktion von Cal nutzen, damit anonyme User sich per E-Mail an ein Event erinnern lassen können.
Es läuft:
Typo 4.3.2
Cal 1.3.2
Gabriel 1.0.0
Alle Standart Ansichten sind im Plugin erlaubt + der "Abo Manager" und das Abonieren ist "generell erlaubt". Ist das Captcha ein MUSS, wenn ich anonymen Usern das Eintragen für den Reminder erlauben will?
Außerdem ist mir die Unterscheidung zwischen Subscription und Reminder nicht wirklich klar ;(
Für die Event Einzel Ansicht wird ja meines Wissens nach das HTML Template "event_model.tmpl" (Ordner EXT:cal/template/) verwendet. In das "event_model.tmpl" habe ich aus dem "phpicalendar_event.tmpl" (Ordner EXT:cal/new_template/) folgenden Part eingefügt:
<!-- ###SUBSCRIPTION### start -->
<div id="monitor_event">
<!--###NOTLOGGEDIN### start-->
If you are logged in, you can set up monitoring for this event.
<!--###NOTLOGGEDIN### end-->
<!--###NOTLOGGEDIN_NOMONITORING### start-->
<h1>###NOTLOGGEDIN_NOMONITORING_HEADING###</h1>
###L_CAPTCHA_START_SUCCESS###
<form name="tx_cal_controller" id="tx_cal_controller_subscribe" method="post" action="###ACTIONURL###">
###L_ENTER_EMAIL###
<input type="text" size=30 name="tx_cal_controller[email]" value=""><br /><br />
###L_CAPTCHA_TEXT###<br />
###CAPTCHA_TEXT###
###CAPTCHA_SRC###<br />
<input type="submit" value="###NOTLOGGEDIN_NOMONITORING_SUBMIT###" />
</form>
<!--###NOTLOGGEDIN_NOMONITORING### end-->
<!--###NOTLOGGEDIN_MONITORING### start-->
<h1>###NOTLOGGEDIN_MONITORING_HEADING###</h1>
###L_CAPTCHA_STOP_SUCCESS###
<form name="tx_cal_controller" id="tx_cal_controller_unsubscribe" method="post" action="###ACTIONURL###">
###L_ENTER_EMAIL###
<input type="text" size=30 name="tx_cal_controller[email]" value=""><br /><br />
###L_CAPTCHA_TEXT###<br />
###CAPTCHA_TEXT###
###CAPTCHA_SRC###<br />
<input type="submit" value="###NOTLOGGEDIN_MONITORING_SUBMIT###" />
</form>
<!--###NOTLOGGEDIN_MONITORING### end-->
<!--###LOGGEDIN_NOMONITORING###-->
<form>
Do you want to be notified, on event changes? <input type="hidden" id="userid" value="1"/> <input type="submit" value="monitor" />
</form>
<!--###LOGGEDIN_NOMONITORING###-->
<!--###LOGGEDIN_MONITORING###-->
<form>
Stop monitoring this event? <input type="hidden" id="userid" value="1"/> <input type="submit" value="Stop monitoring" />
</form>
<!--###LOGGEDIN_MONITORING###-->
</div>
<!-- ###SUBSCRIPTION### end -->
Das habe ich gemacht, weil ich sonst nie das Formular zum Eintragen der E-Mail Adresse für den Reminder, bekomme.
Nun kann ich mich für ein Event auch Eintragen, dh in der Einzelansicht wird das Formular korrekt angezeigt, und ich bekomme auch eine E-Mail mit der Aufforderung, den Reminder zu bestätigen. Das tue ich auch, ab dann passiert "nichts mehr".
Eigl. sollte ja jetzt der Cronjob vom Gabriel vor dem Event einen Reminder rausschicken (Zeit per Konstante im EXT-Template für cal gesetzt), aber es kommen keine E-Mails an. Wenn ich das Skript für den Cronjob per Hand anstoße bekomme ich "nur" eine PHP Notice zurück, dh das Skript sollte laufen. Was mich viel stutziger macht: Wenn ich nach dem Eintragen meiner E-Mail für den Reminder in der Datenbank Tabelle "tx_gabriel" nachschaue, so ist die leer -> macht irgendwie Sinn, dass keine E-Mail rausgeht. Ich verstehe das so, dass cal die Brücke zu gabriel nicht richtig schlägt, evt weil ich oben mit den HTML Template (kopieren von dem Subscription Subpart vom neuen ins alte Template ...) Mist gebaut habe?
In der "cal" Dokumentation steht unter 6.5 Notification folgender Punkt:
If your event records are located in a Sysfolder, you also have to define in its pageTS where to find your Typoscript configuration:
options.tx_cal_controller.pageIDForPlugin =
Diesen finde ich auch nach mehrmaligen lesen nur "schwer" verständlich, meine Interpretation lautet: Wenn meine Termine in einem Sys Folder liegen (was sie tun!), dann muss ich dieser Sys-Folder (bzw der Seite) unter den Optionen die Zeile in die Page-Ts-Config setzen, richtig? Auf welche Typoscript Configuration soll hier referenziert werden? Ich habe einen weiteren SYS-Folder für TS-Templates (Extension Templates) und halt mein root_template, welches alle Ext-Tempaltes "enthält". Ich habe die pageID jetzt auf die meines TS-Templates Ordners gesetzt, bin aber wie gesagt an dieser Stelle unsicher, was richtig ist.
Noch eine Frage: Viele Sachen, wie zum Beispiel die HTML-Template Pfade für die einzelnen Ansichten des Kalenders kann ich entweder a) per TS Konstante oder b) per TS Setup konfigurieren. Im Internet findet man viele redundante Lösungen, vieles steht in beiden Möglichkeiten, MUSS das so sein, oder empfiehlt es sich, alles im Setup zu regeln und nur Konstanten zu verwenden, wo es kein Setup für gibt?
Viele Fragen, ich freue mich über alle Ideen & Lösungsansätze.
pablo
PS: Hier der Vollständigkeit halber noch meine Ts-Konstanten und mein TS Setup des Ext-Templates für cal, vllt. finden sich da auch Fehler...
TS Konstanten:
plugin.tx_cal_controller{
# Page ID where events are stored. Required for ICS and XML output.
pidList = 85
# Upload Path: Path where image files get uploaded. Normally this has not to be changed unless you modify the settings in TCA.
uploadPath.image = uploads/tx_cal/pics/
# Media Upload Path: Path where media files (f.e. attachments) get uploaded. Normally this has not to be changed unless you modify the settings in TCA.
uploadPath.media = uploads/tx_cal/media/
# Address used for notifications and reminder emails.
emailAddress = xxx@web.de
# Name used for notification and reminder emails.
emailName = pablo the reminder
# Organization used for notification and reminder emails.
emailOrganisation = pablo e.V.
# Wie viele Minuten vor dem Event soll erinnert werden
view.event.remind.time = 15
# Page ID where the subscription view is allowed.
view.event.notify.subscriptionViewPid = 12
# Enable reminding of events (gabriel needed)
view.event.remind = 1
# cat=Calendar Base (General)/general/19; type=boolean; label=Enable the google map (wec_map needed)
view.location.showMap = 0
# cat=Calendar Base (General)/file/datetimeformats/2; type=options[08:37 pm=%I:%M %p, 20:37=%H:%M]; label=General time format
view.timeFormat = %I:%M %p
# cat=Calendar Base (Templates)/file/image/1; type=string; label=Images (Path): Path of the calendar images.
view.imagePath = EXT:cal/template/img
# cat=Calendar Base (Templates)/file/javascript/1; type=string; label=Javascripts (Path): Path of the calendar javascripts.
view.javascriptPath = EXT:cal/template/js
}
TS-Setup:
plugin.tx_cal_controller{
# Pfad des List Templates
view.list.listTemplate = fileadmin/templates/cal_list_view.html
# Pfad des Templates welches das Template für die Single Event Ansicht holt
view.event.eventTemplate = fileadmin/templates/cal_single_event_get.html
# Pfad der Event Single Ansicht
view.event.phpicalendarEventTemplate = fileadmin/templates/cal_single_event.html
# nach Belieben anpassen
uploadPath.image = fileadmin/media/
uploadPath.media = fileadmin/media/
# "Titel:"-Prefix abschalten
view.event.event.title.dataWrap >
view.event.event.alldayTitle.dataWrap >
# Organizer/Veranstaler Präfixe löschen
view.organizer.organizer{
name.dataWrap = <div>|</div>
street.dataWrap = <div>|</div>
zip.dataWrap = <div class="orga-zip">| </div>
city.dataWrap = <div>|</div>
phone.dataWrap = <div>Telefon: |</div>
link.dataWrap = <div>|</div>
email.dataWrap = <div>|</div>
description.dataWrap = <div>|</div>
}
# Location/Ort Präfixe löschen
view.location.location{
name.dataWrap = <div>|</div>
street.dataWrap = <div>|</div>
zip.dataWrap = <div class="location-zip">| </div>
city.dataWrap = <div>|</div>
phone.dataWrap = <div>Telefon: |</div>
link.dataWrap = <div>|</div>
email.dataWrap = <div>|</div>
description.dataWrap = <div>|</div>
}
# "Bild:"-Prefix abschalten
view.event.event.image.stdWrap.dataWrap >
# maximale Bildgröße in der Event Singleansicht einstellen (wirkliche Größe (hier 240px) mal 2;warum weiß ich selber nicht)
view.event.event.image.maxW = 480
# Enddatum "besser beschriften" und fett machen
view.event.event.enddate.dataWrap = <div><strong>Enddatum:</strong> |</div>
# den "-" vor Enddatum in der Einzelansicht löschen, da er nur in der Listview Sinn macht
view.event.event.enddate.noTrimWrap >
# Dateien umbennen, fett machen...
view.event.event.attachment {
showFileSize = 0
20.stdWrap.dataWrap = <div><strong>angehängte Dateien:</strong> |</div>
}
# Startzeit "besser beschriften",fett machen und "Uhr" anhängen
view.event.event.starttime.dataWrap = <div><strong>Beginn:</strong> | Uhr</div>
# Stoppzeit "besser beschriften" und fett machen
view.event.event.endtime.dataWrap = <div><strong>Ende:</strong> | Uhr</div>
# in der Listansicht bitte auch ein "Uhr" anhängen
view.list.event.endtime.dataWrap = | Uhr
# Prefixe fett machen
view.event.event {
startdate.dataWrap = <div><strong>(Start-)Datum:</strong> |</div>
# "Enddatum" wg. mieser Übersetzung direkt ins Template geschrieben, hier nurnoch die Ausgabe des Werts
# enddate.dataWrap = |
organizer.dataWrap = <div><strong>{LLL:EXT:cal/controller/locallang.xml:l_organizer}:</strong> |</div>
location.dataWrap = <div><strong>{LLL:EXT:cal/controller/locallang.xml:l_location}:</strong> |</div>
description.dataWrap = <div><strong>{LLL:EXT:cal/controller/locallang.xml:l_description}:</strong> |</div>
}
# Datumsanzeige und Uhrzeitsformat formatieren (Pear Date format)
# Single Ansicht
view.event.event.dateFormat = %A, %d. %B %Y
view.event.event.timeFormat = %H:%M
# List Ansicht
view.list.event.dateFormat = %d. %B %Y
view.list.event.timeFormat = %H:%M
}