Page 1 of 1

cmCalendar Eintrag im Formular

Posted: Sun 27. Oct 2013, 15:52
by kmstario
Hallöchen,

ich bastel gerade am Kalender rum und hab mal eine Frage, vieleicht kennt ja jemand eine kleine Lösung.

Die Kalendereinträge sind Veranstaltungen mit Anmeldung.
Nun würde ich gern ein Formular einbinden/aufrufen, mit dem eine Anmeldung erfolgt. Funktioniert via SHOW_CONTENT.

Das Formular müssteallerdings irgendeinen Parameter zusätzlich übergeben, damit die Anmeldung zugeordnet werden kann.

Fast immer reicht die URL, aber da diese in der Übersicht stets gleich bleibt, weiss ich nicht so recht wie ich z.B. Titel und Datum der VA in das Form bekomme.
Habe schon mit der "Datenübergabe an Formular" aus der WIKI probiert aber da kommt nur die URL mit, die nicht hilft.

Leider bekomme ich es auch nicht hin, das etwas anderes, wie z.B.
[CALENDAR_TITLE]{CALENDAR_TITLE}[/CALENDAR_TITLE] und [CALENDAR_DATE]{CALENDAR_DATE}[/CALENDAR_DATE]
übergeben wird.

Gibt es da vieleicht eine Lösung, die recht einfach umzusetzen wäre?
Es muss nur irgendwas eindeutiges zum Eintrag mitgesendet werden.

VG Andreas

Re: cmCalendar Eintrag im Formular

Posted: Sun 27. Oct 2013, 16:34
by kmstario
Also ich bin vieleicht schon etwas weiter:

ich habe einfach mal in der Datei frontend.render.php vom Kalender, also in: /include/inc_module/mod_cm_calendar/ das hier eingesetzt:

Code: Select all

$content['all'] = str_replace('[%GLOBAL_FORM_SUBJECT%]', trim('your own text: ' . html_specialchars($content['[CALENDAR_TIME]{CALENDAR_TIME}[/CALENDAR_TIME] - [CALENDAR_TITLE]{CALENDAR_TITLE}[/CALENDAR_TITLE]'])), $content['all']);
Jetzt müsste doch nur noch irgendwie das Template des Kalenders verfügbar gemacht werden, damit die RT`s auch gerendert werden. Denn "your own text:" zeigt es schon an. :?

Re: cmCalendar Eintrag im Formular

Posted: Mon 28. Oct 2013, 20:12
by breitsch
eine einigermassen 'richtige' Umsetzung dafür:

core-hack in: include\inc_module\mod_cm_calendar\inc\cnt.article.php
Zeile 604 ADD

Code: Select all

         //ID
        $plugin["eventlisting"]["output"]  = render_cnt_template($plugin["eventlisting"]["output"], 'CALENDAR_ID', html_specialchars($value['cm_events_id']));
im Template der Auflistung, statt des einbindens eines Formulars in jeden Eintrag, nur einen Link zum Anmelde-Formular das irgendwo sonst liegt, im href den alias eintragen:

Code: Select all

        <a href="index.php?alias&cal2frm={CALENDAR_ID}">text</a>
im Verz. template\inc_script\frontend_render
eine Datei anlegen, irgendwie benennen, zB. cal2frm.php
mit diesem Inhalt:

Code: Select all

<?php

// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
   die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------


$content["all"] = preg_replace('/\{CAL2FRM_REPLACE\}/ie', 'myCalFrm()', $content["all"]);

function myCalFrm() {
    if(isset($_GET['cal2frm']) && is_numeric($_GET['cal2frm'])) {
        $sql  = 'SELECT * FROM '.DB_PREPEND.'phpwcms_cmcalendar_events WHERE ';
        $sql .= 'cm_events_status = 1 AND cm_events_id='.intval($_GET['cal2frm']);
        $data = _dbQuery($sql);
        return html_specialchars($data[0]['cm_events_title']);
    }
	return false;
}
?>
das Script liest den Eintrag aus der DB aus und übergibt hier den Titel (kann geändert oder ausgebaut werden)

im Formular CP im entsprechenden Feld als Defaultvalue eingeben: {CAL2FRM_REPLACE}

Re: cmCalendar Eintrag im Formular

Posted: Mon 28. Oct 2013, 21:02
by update
Goil!

Re: cmCalendar Eintrag im Formular

Posted: Tue 29. Oct 2013, 11:46
by kmstario
Hallöchen zusammen,
breitsch wrote:eine einigermassen 'richtige' Umsetzung dafür...
Absolut grandios, genauso ist das richtig schicki :D !!

Ich habe nun einen kleinen Link "Anmelden" hinzugefügt und in einer netten Fancybox öffnet sich nun das Formular.

Allerdings merke ich mal wieder, um es noch um einen 2ten Parameter zu erweiter bin ich zu blöde :oops:

Es soll zur Sicherheit, falls es mal 2 Events mit dem gleichen Titel gibt, das Datum dazu angezeigt werden.
Nun habe ich einige Variationen in der cal2frm.php ausprobiert und jedes einzeln anzeigen funktioniert.

Die Parameter sind ja:
cm_events_date,
cm_events_time und
cm_events_title

Code: Select all

return html_specialchars($data[0]['cm_events_date']);
Wie wird das dann erweitert, um die Ausgabe zu präzisieren?

VG Andreas

Re: cmCalendar Eintrag im Formular

Posted: Tue 29. Oct 2013, 12:12
by update
Kommt das dann auch in den Core rein? :oops:

Re: cmCalendar Eintrag im Formular

Posted: Tue 29. Oct 2013, 14:36
by breitsch
Wie wärs zuerst mit nem Link?
(Nicht im Core, nur das frontend render script anpassen.)

Re: cmCalendar Eintrag im Formular

Posted: Tue 29. Oct 2013, 19:20
by breitsch
ok, kein Link, schade!

für eine Ausgabe in einem Formularfeld wie: Eventtitel 29.10.2013 12:00
im frontend render script:

Code: Select all

$content["all"] = preg_replace('/\{CAL2FRM_REPLACE\}/ie', 'myCalFrm()', $content["all"]);

function myCalFrm() {
    if(isset($_GET['cal2frm']) && is_numeric($_GET['cal2frm'])) {
        $sql  = 'SELECT * FROM '.DB_PREPEND.'phpwcms_cmcalendar_events WHERE ';
        $sql .= 'cm_events_status = 1 AND cm_events_id='.intval($_GET['cal2frm']);
        $data = _dbQuery($sql);
        isset($data[0]['cm_events_date']) ? $date = " ".date("d.m.Y",strtotime($data[0]['cm_events_date'])) : $date = "";
        isset($data[0]['cm_events_time']) ? $time = " ".html_specialchars($data[0]['cm_events_time']) : $time = "";
        return html_specialchars($data[0]['cm_events_title']).$date.$time;
    }
    return false;
}
für eine Ausgabe pro Formularfeld
im Defaultvalue {CAL2FRM_REPLACE_TITLE} oder {CAL2FRM_REPLACE_DATE} oder {CAL2FRM_REPLACE_TIME}
im frontend render script:

Code: Select all

$content["all"] = preg_replace('/\{CAL2FRM_REPLACE_(.*?)\}/ie', 'myCalFrm("$1")', $content["all"]);

function myCalFrm($replace) {
    if(isset($_GET['cal2frm']) && is_numeric($_GET['cal2frm'])) {
        $sql  = 'SELECT * FROM '.DB_PREPEND.'phpwcms_cmcalendar_events WHERE ';
        $sql .= 'cm_events_status = 1 AND cm_events_id='.intval($_GET['cal2frm']);
        $data = _dbQuery($sql);

        if ($replace=="TITLE") {
            return html_specialchars($data[0]['cm_events_title']);
        } else if ($replace=="DATE") {
            isset($data[0]['cm_events_date']) ? $date = " ".date("d.m.Y",strtotime($data[0]['cm_events_date'])) : $date = "";
            return html_specialchars($date);
        } else if ($replace=="TIME") {
            isset($data[0]['cm_events_time']) ? $time = " ".html_specialchars($data[0]['cm_events_time']) : $time = "";
            return html_specialchars($time);
        }
        return false;
    }
    return false;
}
aber diesen Link will ich noch! Oder alternativ eine substantionelle Donation!

Re: cmCalendar Eintrag im Formular

Posted: Wed 30. Oct 2013, 09:47
by kmstario
Guten morgen zusammen,
aber diesen Link will ich noch! Oder alternativ eine substantionelle Donation!
Sollst du bekommen, gern beides :D .
Ist für unsere Wasserballer aus Potsdam. Leider noch nicht vorzeigbar, da ich erstmal alles
Offline vorbereite. Und da die immer viele Spiele & Veranstaltungen usw. haben, wollte ich gern diese Funktion verfügbar machen,
damit es ganz leicht wird, sich zu Spielen oder anderen Events anmelden kann. Zudem sollen endlich mal
die Spieltermine als Kalender dargestellt werden.

Zudem denke ich mal ist bestimmt eine Interessante Funktion, die viele gebrauchen könnten.

Sonnige Grüße, Andreas