Zum Inhalt springen

rlmp_eventdb + TemplaVoila installieren

Erstellt am 4. August 2008 · 19 Antworten · letzte Antwort am 13. August 2008

Tags: Frage

ikkez ·

Hi @ all

ich bin schon stundenlang vergeblich auf der Suche nach einem HOW-TO. Die rlmp_eventdb konnte ich erfolgreich installieren und er zeigt mir auch schon meine Veranstaltungen an. Nun brauche ich aber noch die Anmeldenfunktion für die Veranstaltungen, welche scheinbar nur mit TemplaVoila funktionieren soll.
Diese Extension habe ich dann ebenfalls installiert, aber was muss ich nun tun? Wie bekomm ich das jetzt hin das er mir den Anmelden Link anzeigt und ich das Formular bekomme und die Bezahloptionen?! Das Wiki ist in diesem Punkt einfach mal unvollständig und Suchmaschinen konnten mir auch nicht weiterhelfen.
Aber es scheint so als ob viele von euch diese EXT. erfolgreich benutzen. Hat jemand mal ein paar TypoScript Schnipsel für mich?
grüße

nomawie ·

Hi,
da ich gerade auch mit der Einrichtung kämpfe schau mal ein paar Threads weiter unter bei "Robert Lemkes eventdb" an. Hab damit schon einige Probleme lösen können und meine Lösungen auch dort niedergeschrieben. Leider antwortet mir niemand auf meine Fragen. Vielleicht liegts daran, dass das Thema dort als gelöst markiert wurde. Können ja hier weiter darüber diskutieren. Vielleicht finden wir gemeinsam eine Lösung. Schreib mal wie weit du mit Hilfe des eben genannten Themas gekommen bist dann können wir ja gemeinsam dran arbeiten das einzurichten

ikkez ·

jawohl...

also ich hab das mal abgearbeitet wie ich es hier gelesen habe:

im deinem template ordner musst du ein neues TemplaVoila
Template Object erstellen. Da musst du als File reference das HTML
Template für die Anmeldung angeben. Da habe ich einfach ein div für
das Anmeldungsmenu und ein div für den "Anmeldungscontent" drin.
Als Data Structure habe ich dann Static : FCE - Event DB - Single View
verwendet. Diese DS kommt vom File template_ds_eventsingle.xml im
eventdb plugin. Danach musste ich noch das Mapping erstellen im
TemplaVoila Module -> Flexible CE -> Update mapping. dort habe ich
Menu und Content gemappt da ich nur diese für die Anmeldung brauche.

und nun in deiner page einfach das FCE einfügen. Regular Text dann
Type Flexible Content auswählen.

ich bekomme nun auch den error:

"TemplaVoila ERROR:

You haven't selected a Template Object yet for table/uid "tt_content/14".
Without a Template Object TemplaVoila cannot map the XML content into HTML.
Please select a Template Object now."

adriana82 schrieb weiter das sie dann einfach ein Template Object ausgewählt hat und dann weiter kam. Aber in meinem Flexible Content ist das DropDown Menü um ein Template Object zu wählen leer. Ich kann also keins auswählen. Hab schon alles gecheckt, der rest hat alles funktioniert.. hab gerade echt kein plan wie ich das dort reinbekomme :-\

nomawie ·

Das Template Object kannst du nur dann auswählen, wenn du im über Seite->Die Seite mit dem Plugin->Optionen->Allgemeine Datensatzsammlung den SysFolder angegeben hast, in dem du das TO gespeichert hast

ikkez ·

ja cool...hab den template ordner reingeschmissen und nun funktioniert schon mal wieder etwas mehr

ausgabe der events funktioniert, bewohl noch ein error kommt der sagt
"[rlmp_eventdb] Error: Event does not exist (0)"

hab jetzt zwei events drin, bei beiden kommt der anmelde button, bei einem event passiert nix wenn ich draufklicke, beim anderem komm ich zur buchung mit einem inputfeld für die kartenanzahl *yeah* immerhin schonmal etwas, euro zeigt er auch falsch an (€ 12,00) , eingabemaske für persönliche daten funzt, bemerkung auf der nächsten seite geht auch, übersichtsseite hat noch ein paar bugs, aber nichts was man nicht mehr hinkriegen sollte. coole sache, hab echt nicht mehr dran geglaubt 😉 morgen gehts weiter

edit: die benachrichtigungsmail kam auch an 😉

nomawie ·

jut jut, dann bist du jetzt ungefähr so weit wie ich. Hast du denn gleichzeitig eine funktionierende Registrierung und das FCE mit der Detailansicht? Wenn beim Anmeldenlink nichts passiert dann erstell die in in Sysfolder eine Page mit irgendeinem Inhalt z.B. einfacher Text, und füg den beim Event hinzu. Dann klappt der Link
Diese Darstellungsfehelr hab ich auch aber bisher leider keine Lösung gefunden #angry#

ikkez ·

also wenn ich weiteren inhalt der veranstaltung hinzufüge, funzt auch die anmeldung... wenn ich dort eine karte kaufe, seh ich auch im backend das eine gekauft wurde, also 1/100 verfügbaren. Features funktionieren also.
Mein problem ist gerade, das ich erstmal TV deaktivieren musste, weil die Ladys die gerade an Texten arbeiten, mit der neuen Darstellungsweise in der Seitenansicht nicht klar kommen :-\
zwar gab es in der Konfiguration von TV nen Button mit dem man anscheinend die alte Ansicht wieder aktivieren kann - dies hat aber nicht funktioniert :-\

ich glaub auch das es notwendig sein wird am quelltext rumzuspielen um die Ausgabe der Währung und der Englischen Wochentage zu berichtigen .hmpf

edit: okay nach erneutem aktiveren/installieren funktioniert jetzt parallel auch die alte Seitenansicht. sehr schön

ikkez ·

okay ich konnte jetzt den Fehler beheben, dass auf der Übersichtsseite mit der Listendarstellung dieser Fehler erscheint:
"[rlmp_eventdb] Error: Event does not exist (0)"

musste dazu manuell in der Datenbank tx_rlmpeventdb_events einen neuen leeren Datensatz mit uid=0 erstellen,... nun ist der Fehler weg.

aber an sich total behindert. Bleibt immer noch der Fehler, der erscheint wenn ich im Menü auf Veranstaltungen klicke, um zur Übersichtsseite zurück zu kommen:

[rlmp_eventdb] Error: Content Element with uid "185" does not exist.

die uid 185 gibts ja auch nicht, richtig... aber woher nimmt er sich diesen Wert? mein Flexible Content Textbaustein mit dem eventdb FCE hat auch ja uid 260 ... ändere ich diesen wert aber im GET parameter der URL, tut sich erstmal nicht viel und die seite braucht ewig zum laden, bis er mir dann 20-30mal das eventdb menü ausgibts und keine events.
Und das soll eine stable version sein? *narf*

nomawie ·

jo das problem das mir das menü nach ewiger ladezeit 100x augegeben wird hab ich auch und bisher nicht lösen können. ebenso die per backend einstellbaren anzahlen..
Das "[rlmp_eventdb] Error: Event does not exist (0)" hatte ich bisher noch nie. Aber als stable würd ich das ganze auch nicht bezeichnen. Es sei denn wir machen irgendwas grundlegendes falsch aber bei dem manual ist das ja auch nicht verwunderlich

edit:
wenn du allerdings eine beschreibung samt funktionierender anmeldung willst kannst du es so machen:
du erstellst eine seite außerhalb des page trees, z.B. im sysfolder der event, fügst dort ein ganz normales content element hinzu, z.B. text mit bild, gehst dann in das event und fügst den text mit bild als weiteren inhalt hinzu. allerdings hab ich es noch nicht geschafft, ein fce als zusätzlichen inhalt inzuzufügen. Das das mit dem menü nicht klappt kann ich mir auch vorstellen: Das Menü wird geladen, hat als weiteren Inhalt wieder das Menü, das hat wieder das Menü usw... aber eine Lösung ist mir bisher nicht eingefallen. Das Menü weglassen hat bei mir zur Folge das nichts von dem FCE angezeigt wird

ikkez ·

also das mit dem weiteren Inhalt hinzufügen funktioniert soweit recht gut. Sieht auch alles recht gut aus. Nur beim stylen einiger input-Felder könnt ich mir schon wieder die Haare rausreißen..
z.b hat mein input-Feld für die Kartenanzahl die
id="tx_frontendformslib[data][tx_rlmpeventdb_registrations_featuresflex][amount-1]"

Wie soll man das bitte mit css ansprechen? Kann unmöglich gefunden werden. Soll das echt so, oder ist das einfach nur kaputt?!

Die falsche Darstellung des Euro-Zeichens konnte ich bisher nur in der Druckansicht beheben, indem ich in der Datei "pi1/rlmp_eventdb_print.php" weiter unten den charset im meta-tag mal auf UTF-8 gestellt hab:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

so dachte ich, es hilft sicherlich auch TYPO dann komplett auf UTF-8 umzustellen mittels

page.config.metaCharset = utf-8
page.config.additionalHeaders = Content-Type:text/html;charset=utf-8

in meinem Seitentemplate, aber dem ist nicht so. Ich hab auch mein html eventdb template für TV gecheckt, als UTF-8 gespeichert, neu hochgeladen, header neu gesetzt, aber hilft alles nichts... in der normalen Ansicht will das Euro Zeichen einfach nicht richtig dargestellt werden.

Ich wühl mich jetzt mal durch den Quelltext.

nomawie ·

das problem mit dem eurozeichen konnt ich schon lösen. schau dir mal mit phpMyAdmin die static info tables an. da ist das euro zeichen falsch eingetragen

ikkez ·

ja hab ich eben gerade auch selbst gefunden 😉

für andere hier der query

UPDATE `EUER-DB-NAME`.`static_currencies` SET `cu_symbol_left` = '€',
`cu_sub_symbol_left` = '€' WHERE `static_currencies`.`cu_iso_3` like 'EUR' LIMIT 1 ;

UTF-8 musste ich aber wieder deaktivieren, sonst gibt er nur Fragezeichen aus.

ikkez ·

ich hab jetzt erstmal mitbekommen das dieses Menü mir ja nur die weiteren Elemente liefert die ich der Veranstaltung mit hinzugefügt habe als weitere Inhalte. Das ist ja total dämlich. Warum kann der nicht einfach alles untereinander packen?
Ich werd für jede Veranstaltung nur noch ein Text mit Bild Element verwenden, den Rest rausschmeißen und mir das Menü umbauen, weil erstmal der angezeigt Text ja überhaupt nicht dazu passt und es auch noch alte nicht mehr vorhandene Elemente mit ausspruckt, welche dann nen error erzeugen :-\

In der Funktion "userSingleViewMenu" der Datei "pi1/class.tx_rlmpeventdb_pi1.php" werd ich mal bisschen was rausschmeißen und nen zurück Link auf die Übersichtsseite einhauen, und denn passt das glaub ich.

ikkez ·

so... bei mir läuft es jetzt erstmal, so das man es benutzen kann.

hab das menü jetzt umgebaut in zeile 1343: function userSingleViewMenu ($content, $conf) von File: pi1/class.tx_rlmpeventdb_pi1.php (85 K)

// Create menu items for detail pages:
foreach ($detailsPagesArr as $menuItemUid) {
				$itemRow = $this->pi_getRecord (($useTemplaVoila ? 'tt_content' : 'pages'), $menuItemUid);
				$itemTitle = ($useTemplaVoila ? $itemRow['header'] : $itemRow['title']);

				if ($menuItemUid != $activeItemUid) {
					$menuItemsArr[] = $this->pi_linkTP_keepPIvars (htmlspecialchars($itemTitle), array('activeItemUid' => $menuItemUid));
				} else {
					$menuItemsArr[] = '<strong>'.htmlspecialchars($itemTitle).'</strong>';
				}
				break;
			}
if(!isset($_REQUEST['id'])) $menuItemsArr[] = '<a href="index.php?id=6">Veranstaltungen</a>';

bei zeile 1371 hab ich nen "break;" eingefügt, damit er mir nur die Hauptseite ausgibt, keinen quatsch mehr den er eh nicht anzeigen kann. Gleich dahinter dann 1373: "if(!isset($_REQUEST['id'])) $menuItemsArr[] = '<a href="index.php?id=6">Veranstaltungen</a>';"
Das ist mein Link zurück zur Übersichsseite der Veranstaltungen wenn man auf der Detailansicht ist. Der Anmeldelink erscheint wie gehabt, wenn er verfügbar ist.

Ein FCE als zusätzlichen Inhalt für eine Veranstaltung mit hinzuzufügen hab ich jetzt noch nicht probiert. Test ich morgen mal.

nomawie ·

Sieht ganz gut aus was du da gemacht hast. Lob 😃

Das Menü find ich eigentlich ganz ok aber dass ich die FCEs nicht darstellen kannst stört mich sehr. Ich bin kurzzeitig auf julle_events umgestiegen. Das kann zwar nicht soviel aber es läuft ohne große Probleme. Das einzige was mich stört, ist dass es keine Überprüfung hat, welche Felder ausgefüllt werden müssen. Weiß nicht ob man das umschreiben kann, hab momentan sehr wenig Zeit

ikkez ·

julle_events hab ich mir noch nicht angeguckt, aber ich brauche die Funktionen von der rlmp_eventdb....wenn sie denn mal funktionieren würden. Ich muss mich nochmals auf die Suche machen, wie man die Pflichtfelder einstellen kann, und das mit "Voreingestellte Anzahl" und "Anzahl nicht änderbar?" funktioniert einfach mal NICHT. Schon doof, wenn man dem Kunden zeigen will, wie man Bearbeitungsgebühren eintragen kann, diese aber nicht richtig funktionieren, da er meine oben genannten Einstellungen ignoriert :-\

nomawie ·
ikkez schrieb

Ich muss mich nochmals auf die Suche machen, wie man die Pflichtfelder einstellen kann, und das mit "Voreingestellte Anzahl" und "Anzahl nicht änderbar?" funktioniert einfach mal NICHT.

Genau das ist auch mein Problem und momentan hab ich einfach nicht die Zeit. Ich werde demnächst wohl anfangen, ein eigene Extension zu schreiben. Aber falls du es hinkriegst, bitte lass es mich wissen 😉 Denn das fehlt Julle_Events leider auch

ikkez ·

Gute Nachrichten!

Ich hab's hinbekommen das er die "Voreingestellte Anzahl" und "Anzahl nicht änderbar" mit auswertet. Die Funktionen waren einfach mal nicht mit eingebaut, erscheinen zwar im Backend, aber werden nicht behandelt.

folgendes muss getan werden:

rlmp_eventdb
Datei "pi1/class.tx_rlmpeventdb_pi1.php (86 K)"

Betrifft die Funktion function createFeaturesStepConf ($eventRow)

Zeile 1037 diese Zwei Zeilen in den 'config'-Array einfügen

'defaultvalue' => $featureArr['defaultamount'],
'disabled' => $featureArr['amountfixed'],

danach sieht die for each Schleife etwa so aus:

foreach ($featuresArr as $id => $featureArr) {
			$label = $featureArr['description'] . (isset($featureArr['priceperunit']) ? ' ('.$this->moneylibObj->format ($featureArr['priceperunit'], $this->currency).')' : '');

			$fieldsArr['tx_rlmpeventdb_registrations_featuresflex|amount-'.$id] = array(
				'mode' => 'manual',
				'config' => array(
					'type' => 'input',
					'size' => 5,
					'tx_frontendformslib_swaphorizontally' => 1,
					'defaultvalue' => $featureArr['defaultamount'],
					'disabled' => $featureArr['amountfixed'],
				),
				'label' => $label,
				'table' => 'tx_rlmpeventdb_registrations_featuresflex',
				'name' => 'amount-'.$id,
			);
		}

Damit diese Werte auch interpretiert werden müssen wir auch noch die extension
Frontend forms code library (frontendformslib) anpassen:

Datei: class.tx_frontendformslib.php (30 K)
Funktion: function getSingleField_typeInput($fieldConf, $tcaFieldConf)

ab Zeile 462 wird ein $params Array erstellt.

folgende Zeile suchen:

'value' => htmlspecialchars($this->sessionData['data'][$fieldConf['table']][$fieldConf['name']]),

und mit dieser ersetzen:

'value' => ($tcaFieldConf['defaultvalue'] ? $tcaFieldConf['defaultvalue'] : (htmlspecialchars($this->sessionData['data'][$fieldConf['table']][$fieldConf['name']]))),

Das wäre für den voreingestellten Wert.

Das man das Feld nicht ändern kann hab ich erstmal nur soweit gelöst, dass das INPUT Feld deaktiviert wird bzw. readonly. Kann zwar jeder Web-ambitionierte Techniker mit Firebug in 5sek. umgehen, da ich jetzt noch keine weitere Abfrage nach der Formularübermittlung drin hab, aber das such ich mir noch, und so ist es jedenfalls schon mal besser als würde es gar nicht funktionieren.

Also um <input> Felder zu deaktivieren (readonly) die einen nicht änderbaren Wert enthalten sollen, einfach nach der $params Array Deklaration die Zeile mit dem output suchen (kommt gleich danach), also diese hier:

$output = '<input '.$this->implode_assoc_r('="', '" ', $params).'" />';

und DAVOR einfügen:

if($tcaFieldConf['disabled']) {
	$temp_array = array('readonly' => 'readonly');
	$params = array_merge($params, $temp_array);			
}

musste es leider so lösen, direkt im array ding es so nicht, da sobald <input> ein readonly TAG hat deaktiviert wird. Dann hab ich es auch mit disabled="disabled" versucht, jedoch hat er aus unerfindlichen Gründen mich dann beim "weiter" klicken wieder zurück geschubst und gemeint, mein disabled feld wäre ein Pflichtfeld, welches ausgefüllt werden muss ó0 ? Es hatte doch nen Wert.
Scheinbar konnte er den Wert dann nicht richtig auslesen. var_dump hat es bestätigt. Mit readonly klappt es aber.

So viel Spaß damit.
Vielleicht kann das ja jemand gebrauchen.

Ich frag mich aber immer noch was "Anzahl anzeigen ?" genau bewirken soll. INPUT Feld ein/aus blenden, also type="hidden"??? Oder soll das eher Bezug auf die voreingestellte Anzahl haben? Das geht nämlich auch noch nicht.

ikkez ·

so ich hab nun nochmal etwas an dem "Anzahl anzeigen ?" rumgespielt und mir das nun soweit umgebaut:
Wenn der Haken bei "Anzahl nicht änderbar?" gesetzt ist, zeigt er das Input-Feld nicht an (hidden) und das label bleibt leer. In der Bestellübersicht wird es dann aber mit aufgelistet. Wenn man zusätzlich nun noch "Anzahl anzeigen" aktiviert, wird das Input Feld als readonly mit angezeigt. Ich finde das so eigentlich ganz charmant, weiß zwar nicht ob die Funktion dafür gedacht war, aber ich lass das jetzt so.

Wenns jemand nachbauen will, für version 1.1.2 der rlmp_eventdb die Datei pi1/class.tx_rlmpeventdb_pi1.php (86 K) bearbeiten:

wieder function createFeaturesStepConf ($eventRow) bei mir Zeile 1023.
suche:

'label' => $label,

ersetze durch:

'label' => ($featureArr['amountfixed'])?(($featureArr['displayamount'])?$label:''):$label,

weiter gehts in der function userRegistrationOverviewFeatures ($conf, &$parentObj, &$formObj) bei mir Zeile:1719

suche

<td class="tx-rlmpeventdb-pi1-registrationoverview-features-feature">'.$formObj->getSingleLabel($fieldConf).'</td>

und ersetzt sie mit dieser:

<td class="tx-rlmpeventdb-pi1-registrationoverview-features-feature">'.$featuresArr[$featureId]['description'] .'</td>

Ist dafür da, damit in der Bestellübersicht, die Beschreibung angezeigt wird, von den versteckten Items, sonst steht nur Preis und Anzahl dort. Das Label in der die Beschreibung stand fällt dabei auch gleich raus. Ist auch besser so, das hatte dort in der Tabelle eh nichts zu suchen. So ist es sauber.

Eine weitere Anpassung brauchen wir dann auch noch in der class.tx_frontendformslib.php (30 K) der Frontend forms code library (frontendformslib)
auch wieder in der function getSingleField_typeInput($fieldConf, $tcaFieldConf) Zeile 459.

suche:

'type' => (stristr($tcaFieldConf['eval'], 'password') ? 'password' : 'text'),

und die Zeile ersetzen mit:

'type' => (($tcaFieldConf['display']==0 && $tcaFieldConf['disabled'] ==1)?'hidden':(stristr($tcaFieldConf['eval'], 'password') ? 'password' : 'text')),

So das wars dann auch "schon". Unfassbar, es funktioniert.