Neue Erweiterung: vpTransformationen

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Neue Erweiterung: vpTransformationen

Beitrag von Dodger77 » Do 7. Jul 2005, 16:44

Neuere Versionen gibt es hier:

http://www.contenido.org/forum/viewtopic.php?t=10700

Bei vpTransformation handelt es sich um eine Erweiterung, mit der alle Texte in Contenido vor der Ausgabe geändert werden können. Dabei werden zurzeit unterstützt:
  1. Logische Auszeichnung des Textes - es können Abkürzungen (z.B. CSS, HTML) und Akronyme (z.B. UNO, NATO) inkl. ihrer entprechenden Erklärung angegeben werden. Diese werden dann an entsprechenden Stellen im Text besonders hervorgehoben (siehe Demolink).
  2. Es können einzelne Begriffe angegeben werden, die automatisch in Links umgewandelt werden. Dazu muss der entsprechende Link nur einmal im Backend eingegeben werden.
  3. Auszeichnung von externen Links durch die CSS-Klasse "externallink" (damit eine entsprechende Kennzeichnung möglich wird, z.B. in Form einer Grafik)
Die Speicherung in der Datenbank erfolgt je nach Sprache, d.h. es können auch verschiedensprachige Erläuterungen für eine Abkürzung angegeben werden. Dadurch werden diese auch nach Mandanten getrennt.

Für alle, die sich noch nichts darunter vorstellen können, gibt es hier eine Demo:

http://spielwiese.contenido-tutorials.d ... p?idcat=40

Die Infos zur jeweils aktuellen Version und den Downloadlink gibt es hier:

http://www.contenido-tutorials.de/modul ... index.html

Wichtig: bitte auf die Version achten. Es gibt nämlich eine Version, die speziell für die 4.4.x-Reihe gedacht ist.


Gruß und viel Spaß beim Testen

Ingo
Zuletzt geändert von Dodger77 am Fr 9. Dez 2005, 18:25, insgesamt 4-mal geändert.

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » So 10. Jul 2005, 17:37

nette erweiterung... ;-)
*** make your own tools (wishlist :: thx)

trixta
Beiträge: 165
Registriert: Di 26. Apr 2005, 12:53
Kontaktdaten:

Beitrag von trixta » Di 12. Jul 2005, 11:28

Hi dodger,

habe versucht dein plugin zu installieren. leider ist das fehlgeschlagen.
es erscheint im errorlog folgender fehler:
[12-Jul-2005 12:19:02] MySQL error 1136: Column count doesn't match value count at row 1




INSERT INTO con_area VALUES ('10200', '0', 'vpTransformationen', '1', '1', '0')
die obige zeile ist allerdings in der datenbank auch mit den oben genannten werten eingetragen worden. wenn man auf extras im backend geht, findet man in der subnavi einen neuen eintrag "not found".

ich benutze contenido 445. das plugin interface für 445 habe ich hochgeladen. (<- da muss man doch nichts mehr ausführen oder weiteres ändern oder?)

kannst du damit was anfangen?

habe außerdem gesehen, dass du in der vptransformationen noch ne spalte language angelegt hast, ist das für ne spätere erweiterung gedacht, um auch sprachwechsel, zu "transformieren"?

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Di 12. Jul 2005, 11:57

trixta hat geschrieben:habe versucht dein plugin zu installieren. leider ist das fehlgeschlagen.
es erscheint im errorlog folgender fehler:
[12-Jul-2005 12:19:02] MySQL error 1136: Column count doesn't match value count at row 1
INSERT INTO con_area VALUES ('10200', '0', 'vpTransformationen', '1', '1', '0')
Das sieht ganz danach aus, dass es ein Problem mit dem Menuless-Patch ist. Das Plugin basiert auf dem hello_world3-Plugin-Beispiel von emergence. Ich dachte eigentlich, dass dies bei der Installation erkennt, ob die Spalte "menuless" in der "con_area" vorhanden ist.
die obige zeile ist allerdings in der datenbank auch mit den oben genannten werten eingetragen worden. wenn man auf extras im backend geht, findet man in der subnavi einen neuen eintrag "not found".
Funktioniert es denn abgesehen von der falschen Beschriftung des Links?
habe außerdem gesehen, dass du in der vptransformationen noch ne spalte language angelegt hast, ist das für ne spätere erweiterung gedacht, um auch sprachwechsel, zu "transformieren"?
Ich zitiere einfach mal oben:
Die Speicherung in der Datenbank erfolgt je nach Sprache, d.h. es können auch verschiedensprachige Erläuterungen für eine Abkürzung angegeben werden. Dadurch werden diese auch nach Mandanten getrennt.

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Di 12. Jul 2005, 12:08

Ich habe das Modul nicht im Einsatz, mirt aber Gedanken gemacht wie man es optimieren kann. Und zwar würde ich einen Code einführen ähnlich dem BBCode. Nur wenn diese Tags um eine Abkürzung stehen, wird das Modul aktiv. So kann verhindert werden, daß z.B. wenn USA definiert ist ein Wort wie "ausarten" wo usa drinsteckt nicht mit einer Formatierung belegt wird.
Gruss,
Michael

"Keep on riding this Bike!" (Jackson Mulham)

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Di 12. Jul 2005, 12:19

i-fekt hat geschrieben:Ich habe das Modul nicht im Einsatz, mirt aber Gedanken gemacht wie man es optimieren kann. Und zwar würde ich einen Code einführen ähnlich dem BBCode. Nur wenn diese Tags um eine Abkürzung stehen, wird das Modul aktiv. So kann verhindert werden, daß z.B. wenn USA definiert ist ein Wort wie "ausarten" wo usa drinsteckt nicht mit einer Formatierung belegt wird.
Das ist ein interessanter Hinweis. Aber da gibt es keine Probleme mit, siehe:

http://spielwiese.contenido-tutorials.d ... p?idcat=40

Außerdem halte ich den Einsatz von BBCode dabei für kontraproduktiv. Gedacht ist das Plugin ja eher für Personen, die sich nicht mit dem Fundus an HTML-Tags auskennen und im einfachsten Fall nur einen Text verfassen. So werden dann bestimmte Abkürzungen/Akronyme oder auch Links einfach und ohne Zutun der Verfasser erzeugt.
Zuletzt geändert von Dodger77 am Di 12. Jul 2005, 12:28, insgesamt 1-mal geändert.

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 12. Jul 2005, 12:21

Dodger77 hat geschrieben:Das sieht ganz danach aus, dass es ein Problem mit dem Menuless-Patch ist. Das Plugin basiert auf dem hello_world3-Plugin-Beispiel von emergence. Ich dachte eigentlich, dass dies bei der Installation erkennt, ob die Spalte "menuless" in der "con_area" vorhanden ist.
ähm, der installer nimmt darauf keine rücksicht...
er führt einfach nur die queries aus...

damit das mit und ohne menuless patch funktioniert hab ich einfach das sql query zweimal in der install.sql...

ist bei deiner install.sql genau so vorhanden..

Code: Alles auswählen

INSERT INTO !PREFIX!_area VALUES ('!PID!00', '0', 'vpTransformationen', '1', '1');
# if you use menuless batch
INSERT INTO !PREFIX!_area VALUES ('!PID!00', '0', 'vpTransformationen', '1', '1', '0');
das verursacht zwar einen fehlereintrag in der errorlog.txt, hat aber sonst keinerlei auswirkungen...
*** make your own tools (wishlist :: thx)

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Di 12. Jul 2005, 12:27

emergence hat geschrieben:ähm, der installer nimmt darauf keine rücksicht...
er führt einfach nur die queries aus...

damit das mit und ohne menuless patch funktioniert hab ich einfach das sql query zweimal in der install.sql...

ist bei deiner install.sql genau so vorhanden..

Code: Alles auswählen

INSERT INTO !PREFIX!_area VALUES ('!PID!00', '0', 'vpTransformationen', '1', '1');
# if you use menuless batch
INSERT INTO !PREFIX!_area VALUES ('!PID!00', '0', 'vpTransformationen', '1', '1', '0');
das verursacht zwar einen fehlereintrag in der errorlog.txt, hat aber sonst keinerlei auswirkungen...
Danke für den Hinweis. Ist auch genauso drin. Gerade eben habe ich die Installation auch nochmal auf einer alten 4.4.4-Installation getestet (erst Plugin-Interface, dann das Modul installiert). Da hat es völlig ohne Schwierigkeiten geklappt (außer halt den Errorlog-Einträgen).

trixta
Beiträge: 165
Registriert: Di 26. Apr 2005, 12:53
Kontaktdaten:

Beitrag von trixta » Di 12. Jul 2005, 13:16

hi dodger,

zu language:
ok da habe ich wohl nicht aufmerksam gelesen.

zu link und funktion:
nein es funzt leider nicht. der link der bei notfound angeboten wird lautet: http://www.trixta.de/contenido/frameset ... 6fc784b5d5, aber wenn man den aufruft. steht im main-frame: /templates/standard/ und sonst gibt es leider nix.

ich check das problem nicht. der fehler im error log scheint ja normal zu sein.

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Di 12. Jul 2005, 14:40

trixta hat geschrieben:zu link und funktion:
nein es funzt leider nicht. der link der bei notfound angeboten wird lautet: http://www.trixta.de/contenido/frameset ... contenido=, aber wenn man den aufruft. steht im main-frame: /templates/standard/ und sonst gibt es leider nix.

ich check das problem nicht. der fehler im error log scheint ja normal zu sein.
Du kannst mir ja mal den Errorlog per E-Mail oder PM schicken. Ansonsten könnte vielleicht auch noch helfen, wenn du mir eben einen Zugang einrichtest (kannst mir ja nur den entsprechenden Teil freigeben) einrichtest. Dann schaue ich mir das mal an.


Gruß

Ingo
P.S. Es wäre besser, solche Links aus dem Backend ohne die SessionID (contenido=...) anzugeben. Evtl. arbeitet man nach dem Posten noch im Backend weiter und jemand anderes klickt dann mal drauf.

trixta
Beiträge: 165
Registriert: Di 26. Apr 2005, 12:53
Kontaktdaten:

Beitrag von trixta » Di 12. Jul 2005, 15:16

jo is mir auch später aufgefallen. is aber eh nur mein testsystem. ich installiere nochmal nen bißchen rum und guck ob ich es schaffe.

ich arbeite gerade - obwohl es noch nicht funzt - an ner cookie funktion für dein plugin. im prinzip soll es dazu dienen, dass der redakteur im artikel bereich arbeitet und dort abkürzungen und akkronyme markieren und abspeichern kann. wenn er dann zu deinem plugin kommt, werden ihm diese als cookie abgespeicherten teile zur eingabe empfohlen.

bin aber nicht gerade der javascripter :-) hier mal zum angucken und eventuell verbessern. der anfang des javascipts. wenn es fertig (bestimmt nicht heute, muss noch weg) ist, poste ich das nochmal mit installationsanweisung.
hier erstmal der teil mit dem man die abkürzung auswählen können soll. die funktion ruft man z.b. mit [a href="#" onclick="AddSelectiontoCookie('akronyme')"}Akronyme[/a] auf, welche man mit if (edit) einfügen könnte.

Code: Alles auswählen

function CookieWerteLesen(cookiename) {
var cookie = document.cookie;
var anfang = cookiename.length + 1;
var cookie = document.cookie;
var anfang = cookiename.length + 1;


if ((cookiename == 'akronyme') && (document.cookie.search(/akronyme=.+/) != -1)) {
var ende = cookie.indexOf(";", (cookie.search(/akronyme=.+/) + anfang));
ende = (ende>-1) ? ende : cookie.length;
var cookiewerte = cookie.substring((cookie.search(/akronyme=.+/) + anfang), ende);
return cookiewerte;
}

}

function AddWerttoCookie(cookiename,wert) {
var ablauf = new Date();
var indreizigTagen = ablauf.getTime() + (30 * 24 * 60 * 60 * 1000);
ablauf.setTime(indreizigTagen);
var cookie = document.cookie;
var anfang = cookiename.length + 1;
var cookiewerte = CookieWerteLesen(cookiename);
if (cookiewerte) {
  document.cookie = cookiename + "=" + cookiewerte + "," + wert + "; expires=" + ablauf.toGMTString();
}
else {
document.cookie = cookiename + "=" + wert + "; expires=" + ablauf.toGMTString();
}
}

trixta
Beiträge: 165
Registriert: Di 26. Apr 2005, 12:53
Kontaktdaten:

Beitrag von trixta » Mi 13. Jul 2005, 09:30

hi,
hier nun wie versprochen - interessiert das überhaupt einen? - das vpTransform-Addon. da ich nicht der javascript-held bin kann ja vielleicht jemand mal drüber gucken.

unter eines eurer text-felder (z.b. cms_html oder cms_text):

Code: Alles auswählen

if ($edit) {
echo '<a href="#" onclick="AddSelectiontoCookie(\'akronyme\')">Akronyme</a> | <a href="#" onclick="AddSelectiontoCookie(\'abkr\')">Abkürzung</a> | <a href="#" onclick="AddSelectiontoCookie(\'auto\')">Autolink</a>';
}
dann die datei plugins/vpTrans*/template/standard/*_edit.html:

1. am anfang(z.B. unter <script type="text/javascript" src="scripts/rowMark.js"></script>) inkludieren wir eine javascript-datei:

Code: Alles auswählen

<script src="plugins/vpTransformationen/js/vpTransCookie.js" type="text/javascript"></script>
2. am ende der javascript anweisung fügen wir folgenden code ein:

Code: Alles auswählen

 var shortytyp = 'abkr';
 var shorty = CookieWerteLesen(shortytyp);
 if (shorty) {
 var shortyarray = shorty.split(","); 
 var shortyvalue = shortyarray[0];
 }
 
function init(shortytyp) {
 if (shortytyp == "1")
 var shortytyp = "akronyme";
 else if (shortytyp == "2")
 var shortytyp = "auto";
 else
 var shortytyp = "abkr";

 var shorty = CookieWerteLesen(shortytyp);
 if (shorty) {
 var shortyarray = shorty.split(","); 
 var shortyvalue = shortyarray[0];
 document.forms[0].elements[0].value = shortyvalue;
 }
 else
  document.forms[0].elements[0].value = "";
  
  return shortyvalue;
}
function SubmitdelCookie() {
var shortytyp = document.vpTransForm.type.value;
 if (shortytyp == "1")
 var shortytyp = "akronyme";
 else if (shortytyp == "2")
 var shortytyp = "auto";
 else
 var shortytyp = "abkr";

var shortyvalue = document.forms[0].elements[0].value;
DeleteWertCookie(shortytyp,shortyvalue);
}
nun kommt die datei plugins/vpTrans*/includes/standard/*_edit.php dran:

hier findet ihr etwa bei zeile 133 das input feld short dieses ersetzt ihr durch (dodger kannst du dir mal angucken, ob dein code durch die folgende änderung beeinträchtigt wird.) folgenden code:

Code: Alles auswählen

      $tpl->set('d', 'SHORT',  '<script type="text/javascript">
if (shortyvalue)
document.write("<input name=\"short\" value=\"" + shortyvalue + "\" type=\"text\" size=\"20\">");
else 
document.write("<input name=\"short\" value=\"'.$value['short'].'\" type=\"text\" size=\"20\">");
 </script>');
etwa bei zeile 140 findet ihr nun noch die selects. auch diese ersetzt ihr durch folgenden code:

Code: Alles auswählen

      $tpl->set('d', 'EDIT',  '<select size=1 name="type"  onChange="init(this.value)"><option value=0>Abk&uuml;rzung</option><option value=1>Akronym</option><option value=2>Autolink</option></select><input type="submit" value="Absenden">');
darunter bei etwa 144 findet ihr nun noch das form anfangs-tag. dieses ersetzt ihr durch folgenden code:

Code: Alles auswählen

      $tpl->set('s', 'FORMSTART',  '<form action="'.$sess->url("main.php?area=$area&frame=4&do=new_entry&language=german").'" name="vpTransForm" method="POST" onSubmit="SubmitdelCookie();">');
kurz darunter findet ihr noch die message für das template ca. zeile 146. hier können wir noch ein paar links einfügen. ihr ersetzt das ( $tpl->set('s', 'MESSAGE', ""); durch folgenden code:

Code: Alles auswählen

$tpl->set('s', 'MESSAGE',  '<a href="javascript:SubmitdelCookie();init(document.vpTransForm.type.value);location.reload()">Aktuellen Vorschlag löschen</a> | <a href="javascript:DeleteCookie("akronyme");init(document.vpTransForm.type.value);location.reload()">Alle Akronymvorschläge löschen</a> | <a href="javascript:DeleteCookie("abkr");init(document.vpTransForm.type.value);location.reload()">Alle Abkürzungsvorschläge löschen</a> | <a href="javascript:DeleteCookie("abkr");init(document.vpTransForm.type.value);location.reload()">Alle Autolinkvorschläge löschen</a>');
in der contenido/includes/include.con_editcontent.php bei zeile um 199 findet ihr folgenden code:
$scripts .= '<script src="'.$cfg["path"]["contenido_fullhtml"].'external/mozile/mozileLoader.js" type="text/javascript"></script>';

diesen ersetzt ihr durch folgenden:

Code: Alles auswählen

$scripts .= '<script src="'.$cfg["path"]["contenido_fullhtml"].'external/mozile/mozileLoader.js" type="text/javascript"></script><script src="'.$cfg["path"]["contenido_fullhtml"].'plugins/vpTransformationen/js/vpTransCookie.js" type="text/javascript"></script>';
nun noch der javascript code. diesen code speichert ihr nun als plugins/vpTransformationen/js/vpTransCookie.js ab.

Code: Alles auswählen

function AddSelectiontoCookie (cookiename) {
  if (window.getSelection && window.getSelection() != "") {
    AddWerttoCookie(cookiename,window.getSelection());
  } else if (document.getSelection && document.getSelection() != "") {
    AddWerttoCookie(cookiename,document.getSelection());
  } else if (document.selection && document.selection() != "") {
    AddWerttoCookie(cookiename,document.selection.createRange().text);
  }
}

function CookieWerteLesen(cookiename) {
var cookie = document.cookie;
var anfang = cookiename.length + 1;
var cookie = document.cookie;
var anfang = cookiename.length + 1;


if ((cookiename == 'abkr') && (document.cookie.search(/abkr=.+/) != -1)) {
var ende = cookie.indexOf(";", (cookie.search(/abkr=.+/) + anfang));
ende = (ende>-1) ? ende : cookie.length;
var cookiewerte = cookie.substring((cookie.search(/abkr=.+/) + anfang), ende);
}
if ((cookiename == 'akronyme') && (document.cookie.search(/akronyme=.+/) != -1)) {
var ende = cookie.indexOf(";", (cookie.search(/akronyme=.+/) + anfang));
ende = (ende>-1) ? ende : cookie.length;
var cookiewerte = cookie.substring((cookie.search(/akronyme=.+/) + anfang), ende);
}
if ((cookiename == 'auto') && (document.cookie.search(/auto=.+/) != -1)) {
var ende = cookie.indexOf(";", (cookie.search(/auto=.+/) + anfang));
ende = (ende>-1) ? ende : cookie.length;
var cookiewerte = cookie.substring((cookie.search(/auto=.+/) + anfang), ende);

}

return cookiewerte;
}

function AddWerttoCookie(cookiename,wert) {
var ablauf = new Date();
var indreizigTagen = ablauf.getTime() + (10 * 24 * 60 * 60 * 1000);
ablauf.setTime(indreizigTagen);
var cookie = document.cookie;
var anfang = cookiename.length + 1;
var cookiewerte = CookieWerteLesen(cookiename);
if (cookiewerte) {
  document.cookie = cookiename + "=" + cookiewerte + "," + wert + "; domain=." + window.location.host + "; path=/; expires=" + ablauf.toGMTString();
}
else {
document.cookie = cookiename + "=" + wert + "; domain=." + window.location.host + "; path=/; expires=" + ablauf.toGMTString();
}
}
function DeleteWertCookie(cookiename,wert) {
var cookie = document.cookie;
var cookiewerte = CookieWerteLesen(cookiename);
var cookiewertearray = cookiewerte.split(",");
var durchlauf = "0";
for (var i = 0; i < cookiewertearray.length; ++i) {
if (cookiewertearray[i] != wert && durchlauf == 0) {
var newcookie = cookiewertearray[i];
var durchlauf = 1;
 }
 else if (cookiewertearray[i] != wert && durchlauf != 0) {
 var newcookie = new Array(newcookie, cookiewertearray[i]);
 }
 }
if (newcookie) {
var ablauf = new Date();
var indreizigTagen = ablauf.getTime() + (10 * 24 * 60 * 60 * 1000);
ablauf.setTime(indreizigTagen);
document.cookie = cookiename + "=" + newcookie + "; domain=." + window.location.host + "; path=/; expires=" + ablauf.toGMTString();
}
else { 
  document.cookie = cookiename + "=; domain=." + window.location.host + "; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}
function DeleteCookie(name) {
  document.cookie = name + "=; domain=." + window.location.host + "; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT";
}

das war es, glaube ich. wäre dankbar, wenn jemand da drüber guckt und was sagen könnte.
Zuletzt geändert von trixta am Do 14. Jul 2005, 06:58, insgesamt 6-mal geändert.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 13. Jul 2005, 09:44

Ich habe es nicht getestet, aber das

Code: Alles auswählen

if (edit) {
sollte bestimmt

Code: Alles auswählen

if ($edit) {
heißen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mi 13. Jul 2005, 09:56

Hey Trixta,

da hast du dir ja ordentlich Arbeit gemacht, Respekt. Also dein Addon soll dem Redakteur erlauben, während er schreibt schonmal eine Auswahl zu treffen "das könnte ich für den ganzen Auftritt als Abkürzung definieren" für den jeweils markierten Text. Liege ich da richtig?

Wenn ich Zeit habe schaue ich mir das mal genauer an und teste das mal bei mir. Was mir aber jetzt schon auffällt:
  • die hartgecodeten Domainnamen - das kann man doch bestimmt irgendwie aus den Mandanteneinstellungen rausziehen
  • 30 Tage sind vielleicht ein wenig lang für den verwendeten Cookie
  • wir müssen dann noch nach einer Lösung für die Geschichte mit Mozile suchen

Gruß

Ingo

trixta
Beiträge: 165
Registriert: Di 26. Apr 2005, 12:53
Kontaktdaten:

Beitrag von trixta » Mi 13. Jul 2005, 10:03

hi dodger,

ja so kann man das feature kurz beschreiben.

was das problem mit mozile angeht, dürfte das ne kleinigkeit sein. kenne contenido noch nicht so gut... aber dachte eigentlich, dass du, herrb oder emergence das wissen müssten. ich setze mich nochmal heute nachmittag ran.

bis denne
alex

Gesperrt