Eventlist, für mich wohl eine der besten Erweiterungen die es für Joomla! gibt. Nicht umsonst engagiere ich mich im Team von schlu.net, gute Dinge müssen eben unterstützt werden. Das dachte sich wohl vor kurzem auch der Forum-User mfwic. Dieser hat nämlich kurzerhand einen Hack geschrieben, der es ermöglicht zusätzliche Felder in Eventlist zu integrieren. Zur Freude der vielen die sich diese Feature schon so lange wünschen. Der Hack ist also eine gute Überbrückung bis die “Custom Fields” die in der Eventlist-Roadmap angekündigt sind vom Eventlist-Team realsiert werden.
Ich hab mir mal die Mühe gemacht euch diesen Hack ins deutsche zu übersetzen. Bitte beachtet das es sich um einen Hack handelt der bei einem Update verloren geht. Wichtig ist auch, das ihr unbedingt vor Anwendung ein Backup eurer ganzen Seite macht. Niemand wird für einen Hack eine Garantie übernehmen.
Was ihr noch wissen solltet ist, dass es sich hier um ein Feld handelt das zahlen von 0-999 erwartet, also super zum Beispiel für ein Feld “Sitzplätze” oder ähnliches. Wollt ihr etwas anderes müsst ihr nur die Validierung des Feldes abändern. Viel Spaß!
Hinweis: Alle newinputfield" in dieser Anleitung sind als Platzhalter zu verstehen. Wenn du einen umbenennst musst du alle anderen auch umbenennen. Beispielweise könntest du bei einem Feld, welches die Sitzplätze anzeigen soll "newinputfield" in "sitzplatz" umbenennen.
1. Füge eine neues Feld zur Eventlist MySQL-Tabelle indem du die Datei: admin/install.mysql.utf8.sql bearbeitest. Diese Änderung greift nur bei frischen Installationen von Eventlist.
Möchtest du die Änderungen bei einer bestehenden Eventlist-Installation vornehmen musst du per Hand an die Datenbank. Beispielsweise mit phpMyAdmin. Den Rest der Anleitung kann man auch an der bestehenden EventList-Installation vornehmen.
Definiere einen neuen Datenbankeintrag für dein neues Feld, wie die bereits bestehenden in der Tabelle. Wie gesagt, bei einer frischen Installation füge diesen Code in die install.mysql.utf8.sql ein, bei einer bestehenden Installation direkt in die Datenbank.
2. Füge eine neue Inputbox in die “Event bearbeiten Seite” ein, gehe dazu in die Datei: /com_eventlist/views/editevent/tmpl/default.php und füge nach dem Eintrag für “endtime” bei Zeile 300 ein neues <div> ein
<div class="el_newinputfield floattext">
<label for="el_newinputfield">Überschrift des Feldes</label>
<input class="inputbox validate-req" id="el_newinputfield" name="newinputfield" value="<?php echo substr($this->row->newinputfield, 0, 5); ?>" size="6" maxlength="3" />
</div>
3.Füge in der Datei: /com_eventlist/views/editevent/tmpl/default.php den Javascriptcode zur validierung des Formulars ein. Ergänze hierzu den gleichen, aber auf dein Feld angepassten Code wie bei der vorigen validierung in/um Zeile 75.
else if ( validator.validate(form.newinputfield) === false ) {
alert("newinputfield data is wrong");
validator.handleResponse(false,form.newinputfield);
form.newinputfield.focus();
return false;
}
4. Trage das newinputfield in die Function “getEvent” in der Datei: /com_eventlist/models/editevent.php ein. Zeile 143 bei “//prepare output”.
5. Füge das newinputfield in die MySQL Abfrage in der Datei: /com_eventlist/models/details.php. Füge es einfach hinter dem 1. Eintrag ein. Wahrscheinlich ist es egal wo in der Datei es steht. Hauptsache es ist da.
6. Ändere die Datei: /com_eventlist/views/categoryevents/tmpl/default_table.php um die Daten auszulesen und anzuzeigen. Es sind 3 Änderungen die vorgenommen werden müssen um eine neue Spalte zu erzeugen. Die ersten beiden Änderungen sind in Zeile 80 und 120 vorzunehmen, folge der vorhandenen Codestruktur, um eine neue Spalte und eine Spaltenüberschrift zu erhalten.
Die 3. Veränderunge ist das Auslesen und Anzeigen der Daten und muss um Zeile 210 gemacht werden
if ($this->elsettings->shownewinputfield == 1) :
?>
<td headers="el_newinputfield" align="center" valign="top"><?php echo $row->newinputfield ? $this->escape($row->newinputfield) : '-'; ?></td>
<?php endif;
Dort ist eine Abfrage getData in /com_eventlist/views/categoryevents/tmpl/default_table.php das ist der Mechanismus der die Daten ausliest.
shownewinputfield muss auch zur Datei admin/install.mysql.utf8.sql hinzugefügt werden. Achtung: Bei bestehenden Installationen musst du wie in Schritt 1 wieder per Hand ran!
7. Füge das Feld in die Datei: /com_eventlist/views/details/tmpl/default.php um die Zeile 105 ein.
<?php if ($this->row->newinputfield != 0) : ?>
<dt class="newinputfield">Überschrift des Feldes</dt>
<dd class="newinputfield "><?php echo $this->row->newinputfield ; ?></dd>
<?php endif; ?>
8. Füge in der Datei /com_eventlist/admin/views/event/tmpl/default.php um die Zeile 230 den Code zur validierung der Daten ein.
Der Code checkt, ob die in das newinputfield eingetragenen Daten des Benutzers eine Nummer zwischen 0 und 999 ist.
else if (form.newinputfield.value != "" && !form.newinputfield.value.match(/[0-9]{1,3}/gi)) {
alert("newinputfield is wrong");
form.requested.focus();
}
9. Füge das neue Feld auch in die Administrator-Ansicht der “Event-Bearbeiten” Seite ein. Füge dazu in der Datei: /com_eventlist/admin/views/event/tmpl/default.php um die Zeile 50 Folgendes ein.
<tr>
<td>
<label for="newinputfield">
Überschrift des Feldes
</label>
</td>
<td>
<?php
if ($this->row->newinputfield) {
$this->row->newinputfield= substr($this->row->newinputfield, 0, 3);
}
?>
<input class="inputbox" name="newinputfield" value="<?php echo $this->row->newinputfield; ?>" size="5" maxlength="3" id="newinputfield" />
</td>
</tr>
10. Füge ein neues Feld und den Validierungs-Code in die eventlist_events table class ein, also in der Datei: /com_eventlist/admin/tables/eventlist_events.php
var $newinputfield = null;
/** @var int */if (empty($this->newinputfield)) {
$this->newinputfield = NULL;
}
if (isset($this->newinputfield)) {
if (!preg_match(“/^[0-9]{1,3}$/”, $this->newinputfield)) {
$this->_error = JText::_( “newinputfield is wrong”);
JError::raiseWarning(‘NEWINPUTFIELD_WRONG_ENTRY‘, $this->_error );
return false;
}
}
Achtung: Den Eintrag “NEWINPUTFIELD_WRONG_ENTRY” musst du in Großbuchstaben in deine Sprachdatei eintragen. Dahinter dann in gewohnter Weise (siehe Schema) die Übersetzung.
11. Füge das neue Feld zu den eventlist_settings table class in in der Datei: /com_eventlist/admin/tables/eventlist_settings.php hinzu.
newinputfieldwidth muss auch zur Datei admin/install.mysql.utf8.sql hinzugefügt werden. Achtung: Bei bestehenden Installationen musst du wie in Schritt 1 + 6 wieder per Hand ran!
Und vergesse nicht die Felder newinputfieldwidth und showinputfield am Ende der Datei: /com_eventlist/admin/install.mysql.utf8.sql zu initialisieren.
Merke:
Dieser Code in der Datei: /com_eventlist/views/categoryevents/tmpl/default_table.php übergibt die Daten.
getRows ist in der Datei: /com_eventlist/views/categoryevents/view.html.php definiert.
function &getRows()
{
$count = count($this->rows);if (!$count) {
return;
}
$k = 0;
foreach($this->rows as $key => $row)
{
$row->odd = $k;
$this->rows[$key] = $row;
$k = 1 – $k;
}
return $this->rows;
}
So, das wars, wie schon gesagt bin ich nicht der Erfinder dieses Hacks. Ich habe ihn lediglich ins deutsche übersetzt. Support und Hilfe zu dem Hack bekommt ihr unter der eigentlichen Quelle im Forum von Eventlist.
Das war es auch schon! Hat dir die Übersetzung geholfen? Würde mich über einen kurzen Kommentar sehr freuen!



















Ich habe auch Joomla! genommen um meine Community zu erstellen und dabei Eventlist benutzt, ist Super!
Fehler im Schritt 8. Das “/com_eventlist/” muss weg.
Siehe Original:
Added entry to form validation code in admin/views/event/tmpl/default.php at about line 230.
Hallo Zusammen…
komme leider schon beim zweiten Schritt nicht weiter.
<blockquote cite=”2. Füge eine neue Inputbox in die “Event bearbeiten Seite” ein, gehe dazu in die Datei: /com_eventlist/views/editevent/tmpl/default.php und füge nach dem Eintrag für “endtime” bei Zeile 300 ein neues ein”>
In der Zeile 300 steht kein endtime oder ähnliches…wer kann helfen?
LG Hans
Hallo zusammen,
wollte mal nachfragen ob Ihr mit diesem Script erfolg hattet?
oder ob noch bessere lösungen irgendwo im www versteckt sind?
Habe nämlich auch schon wie Hans ein problem mit dem Schritt 2??
besten dank
sondi2003
Gibt es schon Neuigkeiten bezüglich Custom Fields in Eventlist? Die oben Anleitung ist scheinbar für Version 1.0 oder tiefer geschrieben und so nicht auf 1.0.1 übertragbar.
MfG Benno
[...] man selber Hand an den Quellcode und die Datenbank legen. Ich recherchierte im Netz und stieß bei Bloggers Blog auf eine gute Beschreibung. In dieser wird Schritt für Schritt erklärt, an welchen Stellen in [...]
[...] man selber Hand an den Quellcode und die Datenbank legen. Ich recherchierte im Netz und stieß bei Bloggers Blog auf eine gute Beschreibung. In dieser wird Schritt für Schritt erklärt, an welchen Stellen in [...]
Super danke, hat funktioniert!
habe mit der Anleitung auf Version 1.0.1 erfolgreich das Feld “Kosten” angelegt, jetzt werde ich mich dran setzen um einen “Veranstalter” hineinzubekommen (der soll einen eigenen Table in der DB bekommen und per FK mit dem Event verbunden werden), dieser kriegt dann noch das Feld Kontaktname, Kontaktadresse (mail) und Kontaktname (oder so ähnlich).
Mit einem eigenen Form zum hinzufügen der Veranstalter und so.
Ich werds im schlu Forum posten wenn ichs geschafft hab (:
Danke und Grüße
fraggy
Hallo zusammen
Nun, Du hast diesen Artikel 2008 geschrieben (jetzt ist bald 2011), doch womöglich übersehe ich die erwähnten Zusatzfelder bzw. “Custom fields”. Ich setze Eventlist ebenfalls ein und finde es toll, keine frage, doch es wäre nicht nur cool sondern eigentlich auch nötig, dass das Formular individuell angepasst werden kann.
Meist sind bei der Anmeldung noch spezielle Abfragen nötig. Weisst Du, ob die Zusatzfelder auch Dropdown-Boxen, Checkboxen usw. ermöglichen werden? Somit bin und bleibe ich gespannt auf diese feine Erweiterung.
Ich wünsche Euch allen einen erfolgreichen und erfüllten Tag!
Gruss, Poke