Grundlegene Fragen

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Grundlegene Fragen

Beitrag von ByStones » 09.07.2010, 20:32:30

Hallo,
erstmal ein Sorry, falls das ganze hier im falschen Forum gelandet ist.
Ich wollte mir gerade das APF ansehen und musste feststellen dass bei mir da noch einige Unklarheiten sind:

1. Wenn ich eine index.php anlege, dann hab ich ja eine Zeile in diesem Sinne:

Code: Alles auswählen

$page->loadDesign('sites::helloworld::pres::templates','helloworld');
Nun wird da ja das Modul festegelegt und auch gleich das Template. Nun wärs aber ganz praktisch URL-Rewriting zu machen,
damit man Suchmaschinenfreundliche URLs hat. Wie mache ich das ?

2. Wenn ich es richtig verstanden hab kann ich eine Applikation in mehrere Module aufteilen, und die dann in den sites Ordner packen ?
Also, z.B. einmal frontend und backend, die dann einmal enthält was der User zu sehen bekommt und einmal was der Admin zu sehen bekommt.
Stimmt das soweit ?

Wenn das mal geklärt ist, dann schreib ich die weiteren Fragen (vllt lösen sich auch ein paar davon beim weiteren Tutorial lesen).

Grüße

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Grundlegene Fragen

Beitrag von dr.e. » 09.07.2010, 22:04:58

Hallo ByStones,

Herzlich Willkommen im APF-Forum!:geek:
Nun wird da ja das Modul festegelegt und auch gleich das Template. Nun wärs aber ganz praktisch URL-Rewriting zu machen,
damit man Suchmaschinenfreundliche URLs hat. Wie mache ich das ?
Ein generisches URL-Rewriting ist im APF durch die Input-Filter quasi schon umgesetzt. Um dieses zu aktivieren muss ein VHOST für das Projekt angelegt und der Schalter "URLRewriting" in der Registry aktiviert werden. Hinweise dazu finden sich unter http://adventure-php-framework.org/Seit ... -Rewriting, letzteren findest du unter http://adventure-php-framework.org/Seite/067-Registry.

Vielen Dank übrigens für die Nachfrage, ich habe gesehen, dass die URL-Rewriting-Seite nicht in der Übersicht der Dokumentation aufgeführt war und habe das unter http://adventure-php-framework.org/Seit ... umentation gleich nachgeholt.
2. Wenn ich es richtig verstanden hab kann ich eine Applikation in mehrere Module aufteilen, und die dann in den sites Ordner packen ?
Also, z.B. einmal frontend und backend, die dann einmal enthält was der User zu sehen bekommt und einmal was der Admin zu sehen bekommt.
Stimmt das soweit ?
Grundsätzlich bist du in der Gestaltung der Ordner-Struktur (=Namespaces) frei. Einzig und allein sind die Namespaces des APF selbst fest vergeben. Wenn du dein Projekt unter /apps/myproject/ ablegen möchtest, kannst du das natürlich gerne tun. Es hat sich in der Vergangenheit als praktisch erwiesen, die einzelnen Elemente in Ordner zu legen, die die Bedeutung innerhalb der Applikation beschreiben. In vielen Komponenten findest du deshalb biz-, pres- und data-Ordner, die die 3 Schichten einer Applikation darstellen. Unter pres wird dann nochmal zwischen Controllern und Templates unterschieden. Beim APF gibt es jedoch keine Konventionen, die dir vorschreiben, wie deine Applikation zu strukturieren ist, das liegt bei dir.

Die Bedeutung der APF-internen Namespaces ist übrigens nochmal auf der Grundlagen-Seite beschrieben.
Wenn das mal geklärt ist, dann schreib ich die weiteren Fragen (vllt lösen sich auch ein paar davon beim weiteren Tutorial lesen).
Weiter Tutorials findest du unter http://adventure-php-framework.org/Seite/071-Tutorials. Solltest du Fragen haben, dann schau einfach wieder vorbei, ich bin mir sicher, dass wir alles klären und dir einen guten Einstieg ermöglichen können.
Viele Grüße,
Christian

ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Re: Grundlegene Fragen

Beitrag von ByStones » 10.07.2010, 14:41:24

Hallo,
also langsam begreife ich das Prinzip (glaube ich).
Nun hab ich auch ne weitere Frage: Warum muss ich die ganzen Tag-Libs selbst einbinden ?
Kann das so eingestellt werden, dass ein bisschen Magie am Werk ist und das von alleine geht ?

Desweiteren finde ich das ziemlich lange und unübersichtlich:

Code: Alles auswählen

<@controller  namespace="sites::helloworld::pres::documentcontroller"
        file="controller" class="controller" @>
Wäre es möglich es so einzustellen, dass wenn man das class-Attribute weglässt er davon ausgeht dass class == file ist ?
Was auch noch ganz praktisch wäre wenn man den namespace weglassen könnte und er dann einfach im documentcontroller-Verzeichnis sucht, dort wo auch
das Template liegt ?

http://adventure-php-framework.org/Seite/113-Formulare dort
wird beim controller der base_controller erweitert, den findet er bei mir aber nicht. Wenn ich jedoch baseController schreibe klappt alles.

So weit so gut erstmal...

Grüße

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Grundlegene Fragen

Beitrag von Screeze » 10.07.2010, 14:47:12

Hi,
Hallo,
also langsam begreife ich das Prinzip (glaube ich).
Nun hab ich auch ne weitere Frage: Warum muss ich die ganzen Tag-Libs selbst einbinden ?
Kann das so eingestellt werden, dass ein bisschen Magie am Werk ist und das von alleine geht ?
Es sind nur die grundlegendsten taglibs von anfang an eingebunden, weil jede taglib dass geparst werden muss ein klein wenig performance braucht. ich schätze wenn man alle vorhandenen von anfang an einbindet geht die performance in die knie. So viel arbeit ist das aber auch nicht. Ich hab bspw. in Netbeans codetemplates am rand angelegt, die ich per drag&drop ins fenster ziehen kann. Für die taglibs die ich öfter benötige hab ich dort einträge erstellt.
http://adventure-php-framework.org/Seite/113-Formulare dort
wird beim controller der base_controller erweitert, den findet er bei mir aber nicht. Wenn ich jedoch baseController schreibe klappt alles.
Mit (ich glaube) 1.12 wurde der Name geändert, um der Namenskonvention zu entsprechen. Das ist in den dokus noch nicht angepasst, wird soweit ich weis mit dem endrelease von 1.12 passieren.

Grüße

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Grundlegene Fragen

Beitrag von dr.e. » 10.07.2010, 15:13:23

Hallo ByStones,
Kann das so eingestellt werden, dass ein bisschen Magie am Werk ist und das von alleine geht ?
Ich persönlich glaube zwar an die Kraft der Natur, nur bin ich ein Mensch, der das Heft gerne in der Hand hat. ;) Aus diesem Grund ist ein Konzept des APF auch die Möglichkeit der Selbstbestimmung. In diesem Fall handelt es sich um eine Definition einer Komponente, die beim APF immer realtiv zum apps-Verzeichnis und in der beschriebenen Namespace-Notation erfolgt. Das ermöglicht dir, die Strukur deiner Software wie du möchtest aufzubauen. Ich halte persönlich nicht so viel von Konventionen und Themen wie AOP, denn das birgt Intransparenz und erfordert im Falle einer Fehlersuche enorm viel Aufwand. Sicher, so lange alles gut geht, mag das ein wenig von Vorteil sein, nicht aber, wenn man Strukturen ändern möchte.
Ich habe mich in den letzten Jahren im Rahmen von einigen Artikeln auch um andere Frameworks gekümmert und immer wieder festgestellt, dass die Konventionen schön und gut sind, wenn ich einfache Projekte umsetzen möchte. Weichen diese von den Konventions-Standards ab, wird es schnell aufwändig und hässlich, die Konventionen durch Konfiguration zu verändern.

Nichtsdestotrotz gibt es natürlich Möglichkeiten, das Verhalten anzupassen. Eine gute Möglichkeit ist, dir eine Taglib zu schreiben, die bereits alle für dich relevanten Tags kennt. Dadurch musst du diese nur einmal im Haupt-Template verwenden und alle weiteren Sub-Templates können dann ganz einfach mit dem neuen Tag eingebunden werden. Ein HOWTO findet sich unter http://wiki.adventure-php-framework.org ... nclude-Tag.
Wäre es möglich es so einzustellen, dass wenn man das class-Attribute weglässt er davon ausgeht dass class == file ist ?
Was auch noch ganz praktisch wäre wenn man den namespace weglassen könnte und er dann einfach im documentcontroller-Verzeichnis sucht, dort wo auch das Template liegt ?
Das Attribut "class" gleich dem Attribut "file" zu setzen könnte man machen (neues Feature), den Namespace weg zu lassen funktioniert nicht, denn das APF ist dafür geschaffen, mehrere Applikationen und Webseiten auf einer Code-Basis entwickeln zu können. Demnach braucht es eine Abgrenzung zwischen den einzelnen Elementen und das ist der Namespace. Auch hier bin ich kein Fan von Konventionen, denn sonst müsstest du die APF-Installation jedes mal kopieren, wenn du ein neues Projekt beginnst.

Ich hoffe, das hilft dir hinsichtlich der Konzepte des APF ein wenig weiter.
Viele Grüße,
Christian

ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Re: Grundlegene Fragen

Beitrag von ByStones » 10.07.2010, 15:37:27

Das APF ist dafür geschaffen, mehrere Applikationen und Webseiten auf einer Code-Basis entwickeln zu können.
Macht das Sinn ? Wie oft kommt es vor dass mehrere Applikationen oder Webseiten liegen, wo man auf das gleiche Framework zugriefen kann ?

Ansich kann man das doch dann eher nutzen wenn man in einer Applikation 2 Bereich hat, die strikt von einander getrennt sind (mehr oder weniger) ?

Ich erzähl einfach mal kurz wozu ich das APF verwenden will:
Also ich und ein Klassenkamerad haben beschlossen, dass wir ein Browsergame schreiben wollen (zu diesem Zeitpunkt konnte er noch kein PHP). Also hab ich ihm erst
PHP begebracht und wir haben eben das Browsergame geschrieben. Das war dann soweit auch super, nur is da natürlich ne ganze Menge Code zusammengekommen und als es fertig war, war alles unglaublich unübersichtlich und verworren.
Darauf hin haben wir beschlossen alles nochmal von vorne neu aufzubauen und am Ende soll der Code übersichtlich und einfach zu erweitern sein.
Nun hab ich mich halt hingesetzt und überlegt: Framework oder eigene Codebasis ?
Zuerst hab ich gedacht eigene Codebasis, weil man die einfach versteht und somit weniger Einarbeitungszeit benötigt wird. Doch dann hab ich mir auch gedacht, dass man bei einem Framework viele Komponenten hat, die optimal funktionieren und sauber dokumentiert sind.
=> Ich hab mir halt man einige Frameworks (Zend, APF, CAKE) runtergeladen und angesehen.
Zend fand ich von der Struktur und so ganz ok, aber die Installation usw. fand ich einfach nur unglaublich umständlich. Cake war auch ganz ok, aber dort fand ich die Dukomentation nicht sonderlich gut.
Naja dann hab ich einfach beschlossen ich nehme das APF, da hab ich ein Forum wo ich für alle meine Probleme bestimmt eine Lösung finde.

So nun hab ich mir folgendes gedacht: Der "man-ist-nicht-eingeloggt" wird sozusagen ein eigener Ordner in sites und der "man-ist-eingeloggt" auch, da beide Bereiche sehr unabhänig von einander sind.

Was haltet Ihr davon ?

Grüße

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Grundlegene Fragen

Beitrag von dr.e. » 10.07.2010, 17:52:28

Hallo ByStones,
Macht das Sinn ? Wie oft kommt es vor dass mehrere Applikationen oder Webseiten liegen, wo man auf das gleiche Framework zugriefen kann ?
Definitiv! Das APF ist aus einem Umfeld entstanden, bei dem bis zu 20 Webseiten aus dem gleichen Framework-Repository "gespeist" werden. Aus diesem Grund gibt es die Abgrenzung über den Namespace. Weiterhin sollte jede Applikation / jedes Modul wiederverwendbar sein. Wird keine Abgrenzung geschaffen, kannst du beispielsweise ein Gästebuch in einer anderen Webseite nicht wiederverwenden, wenn der Gültigkeitsbereich/Namespace bereits in Benutzung ist. Es ist also nicht nur für Webseiten interessant, sondern auch für übergreifende Projekte/Tools/Module.
Ansich kann man das doch dann eher nutzen wenn man in einer Applikation 2 Bereich hat, die strikt von einander getrennt sind (mehr oder weniger) ?
Das hast du beispielsweise schon dann, wenn du ein Element einer Webseite schreibst, das du in einer anderen (mit einer anderen Framework-Installation) ebenfalls nutzen möchtest. Spontan fällt mir da eine Footer-Leiste oder eine Social-Bookmarking-Toolbar ein. Diese will ich nicht für jedes Projekt neu schreiben, sondern einmal ordnetlich und dann nur noch verwenden.
Ich erzähl einfach mal kurz wozu ich das APF verwenden will:
Zum Thema Browsergame sind Sreeze und Megger die Spezialisten hier. Solltest du also konkrete Fragen zu dieser Thematik haben, können sie dir sicher exzellent weiterhelfen.
Naja dann hab ich einfach beschlossen ich nehme das APF, da hab ich ein Forum wo ich für alle meine Probleme bestimmt eine Lösung finde.
Auch wenn ich mich im Browsergame-Sektor nicht so exzellent auskenne, das denke ich ist sicher. :)
So nun hab ich mir folgendes gedacht: Der "man-ist-nicht-eingeloggt" wird sozusagen ein eigener Ordner in sites und der "man-ist-eingeloggt" auch, da beide Bereiche sehr unabhänig von einander sind.

Was haltet Ihr davon ?
Das kann man so strukturieren. Auch möglich ist, diesen Status granularer in einzelnen Template-Fragmenten zu repräsentieren. Will heißen: du baust dein Design in beiden Fällen gleich auf und bestimmte Bereiche zeigen bei einem eingeloggten Benutzer einfach etwas anderes an als im nicht eingeloggten Zustand. Hast du beispielsweise eine Seite bestehend aus Header, Menü (darunter links) und einen Inhalts-Bereich (daneben rechts), so kann sich das Menü je nach Zustand ändern und es braucht sich nicht das komplette Layout der Seite anpassen. Die Realisierung ist denkbar einfach: du siehst in deinem Template für das Menü ein <html:template /> vor, das im Controller nur dann transformiert (transformOnPlace()) wird, wenn der Benutzer eingeloggt ist. Eine noch elegantere Umsetzung ist, im Haupt-Template ein <fcon:importdesign />-Tag vorzusehen, das je nach Zustand ein anderes Template für Menü im eingeloggten Zustand und einen Inhalt für nicht eingeloggte Benutzer einbindet. Das setzt jedoch den Einsatz des Front-Controllers voraus, was sich grundsätzlich immer bewährt, jedoch etwas mehr "Aufwand" erzeugt. Soll ich letztere Möglichkeit näher ausführen, sag einfach Bescheid.
Viele Grüße,
Christian

ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Re: Grundlegene Fragen

Beitrag von ByStones » 10.07.2010, 19:31:50

Das klingt schonmal interessant.

Zuerst mal ne Frage per Edit: Ich nutze netbeans 6.9. Gibt es da irgendein Plugin oder eine andere Möglichkeit eine Art APF-Support einzubauen ?

Ich will mal den Aufbau erklären:
Beide haben das gleiche Grunddesign. Die Eingeloggte und Nicht-Eingeloggt Version unterscheiden sich nur in ein paar Punkten:
Ein anderes Menü und es wird eine Leiste angezeigt wo man seine Rohstoffe sehen kann. Außerdem werden bei der eingeloggten Version
auch noch ein paar zusätzliche CSS und JS Dateien eingebunden.

Im Menü muss ich dann auch noch mal unterscheiden, weil wenn man das Gebäude "Erfinder" noch nicht gebaut hat im Menü der Menüpunkt Forschen ohne die dazugehörigen Fly-Out-Unterpunkte angezeigt werden soll.

Wenn ich dass dann über <core:template /> mache dann brauch ich für jedes untermenü sozusagen 2 varianten ? Einmal mit Fly-Out und einmal Ohne ?

Und zum Schluss noch ne ganz doofe Frage: Wo muss ich die CSS/JS/Bilder ablegen ? Auch in den templates Order, oder wohin ?
Nachtrag: Unterhalb des apps-Verzeichnisses macht keinen Sinn, da ich da mit einer .htaccess abgeriegelt hab... Man könnte natürlich eine Ausnahme für einen bestimmten Order oder Dateiendung hinzufügen, aber ich warte einfach mal ab was Ihr sagt :D

Wenn du Lust hast kannst du die FrontController-Version gerne ausführen, umso eleganter umso besser ;)

Grüße

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Grundlegene Fragen

Beitrag von Screeze » 11.07.2010, 11:24:16

Zuerst mal ne Frage per Edit: Ich nutze netbeans 6.9. Gibt es da irgendein Plugin oder eine andere Möglichkeit eine Art APF-Support einzubauen ?
Ich benutze ebenfalls NB 6.9.
ein direktes plugin ist mir nicht bekannt, jedoch kann man sich da leicht was selbst basteln:
Zuerst hab ich mir für neue Dateien templates angelegt für klassen welche Documentcontroller, APFObject, taglibs o.ä. erweitern.

Dann hast du die möglichkeit bei .html dateien, dass rechts eine "Palette" angezeigt wird. Darin hab ich einen Eintrag für das APF angelegt, mit den untereinträgen für diverse taglibs, controller definition und so weiter, welche dann einfach per drag&drop in das template gezogen werden können.

Viel mehr brauchts eigentlich nicht.
Wenn du besser uneterstzüng für variablen willst, für z.b. die auswahl von möglichen funktionen eines objekts, kannst du wenn du in der zeile über einer variable eingibst "vdoc" (ohne ") und dann TAB drückst, eine variablendoku anlegen. Da einfach den Name der klasse eingeben, dann kann NB dir wenn du mit dem objekt arbeitest die code-hints anzeigen.
Ein anderes Menü und es wird eine Leiste angezeigt wo man seine Rohstoffe sehen kann. Außerdem werden bei der eingeloggten Version
auch noch ein paar zusätzliche CSS und JS Dateien eingebunden.
Für die dynamische einbindung von js und css einbindungen schau dir mal meine extension HTML-Header an, welche dem APF beiliegt. Mit ihr kannst du irgendwo auf der seite dynamisch noch js und css dateien in die head-section der seite einfügen.
Und zum Schluss noch ne ganz doofe Frage: Wo muss ich die CSS/JS/Bilder ablegen ? Auch in den templates Order, oder wohin ?
Nachtrag: Unterhalb des apps-Verzeichnisses macht keinen Sinn, da ich da mit einer .htaccess abgeriegelt hab... Man könnte natürlich eine Ausnahme für einen bestimmten Order oder Dateiendung hinzufügen, aber ich warte einfach mal ab was Ihr sagt :D
Also normalerweise würde ich diese oberhalb des /apps/ ordners ablegen, bzw. im htdocs ordner, da ich meinen apps order garnicht im öffentlich zugänglichen bereich ablege. Es gibt allerdings mit meiner Extension JsCssInclusion die möglichkeit auch js und css dateien unterhalb des apps ordners einzubinden.

ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Re: Grundlegene Fragen

Beitrag von ByStones » 11.07.2010, 12:36:58

Noch ne Frage zum Menü:

Code: Alles auswählen

<@controller namespace="sites::...::pres::documentcontroller"
                        file="menu_controller" class="menu_controller" @>
                        <html:template name="menu">
                            <template:placeholder name="menu_content" />
                        </html:template>
So hab ich den Code gemacht, aber wie kann ich nun im Controller den Inhalt von den 2 Menüdateien auslesen ?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Grundlegene Fragen

Beitrag von dr.e. » 11.07.2010, 23:51:09

Hallo ByStones,

das kann man sehr einfach über zwei Template-Fragmente lösen:

Code: Alles auswählen

<@controller 
namespace="sites::...::pres::documentcontroller"
file="menu_controller" 
class="menu_controller" @>
<html:template name="menu">
   ...
</html:template>
<html:template name="menu2">
   ...
</html:template>
Im Controller gibst du dann entweder menu und menu2 ausgeben:

Code: Alles auswählen

class menu_controller extends base_controller {
   public function transformContent(){
      if(...){
         $this->__getTemplate('menu')->transformOnPlace();
      } else {
         $this->__getTemplate('menu2')->transformOnPlace();
      }
   }
}
Beantwortet das deine Frage?
Wenn du Lust hast kannst du die FrontController-Version gerne ausführen, umso eleganter umso besser ;)
Die Idee dabei ist unter http://adventure-php-framework.org/Seit ... design-Tag beschrieben. Hier machst du dir das Timing-Modul des Front-Controller zu nutze, der vor dem Aufbau der Seite ausgeführt wird. Dort entscheidest du, an Hand der die vorliegenden Informationen, welches Template angezeigt werden soll. Diese Information speicherst du in deinem Model und der <fcon:importdesign /> nimmt diese um zu entscheiden, welches Template eingebunden werden soll. Das hat den Vorteil, dass du sehr flexibel im Aufbau der GUI bist. Solltest du ein Entwicklungs-Beispiel benötigen, sag einfach Bescheid.
Viele Grüße,
Christian

ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Re: Grundlegene Fragen

Beitrag von ByStones » 12.07.2010, 12:31:54

Die von dir oben beschriebene Version hab ich als erstes auch benutzt, dann hab ich mir aber gedacht, dass ich das Menü gern in eine seperate Datei auslagern würde.
Wie ist das möglich ?

Den geposteten Link werde ich mir dann später ansehen.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Grundlegene Fragen

Beitrag von dr.e. » 13.07.2010, 09:00:25

Hallo ByStones,

du hast mit dem <core:appendnode />-Tag ein Mittel, mit dem du andere Templates einfach in dein aktuelles einbinden kannst. So ist es dir möglich, die Template-Struktur mehr zu fragmentieren und besser wieder zu verwenden.

Grundsätzlich ist es jedoch kein Problem, die beiden Elemente in einer Template-Datei zu verwalten, denn sie repräsentieren ja den Zustand für einen View.
Viele Grüße,
Christian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: Grundlegene Fragen

Beitrag von dr.e. » 13.07.2010, 23:45:47

Hallo ByStones,

konnten wir dir weiterhelfen oder klemmt es noch an einer Stelle?
Viele Grüße,
Christian

ByStones
Beiträge: 27
Registriert: 09.07.2010, 20:25:36

Re: Grundlegene Fragen

Beitrag von ByStones » 14.07.2010, 16:22:53

Nein, imho nicht. Aber ich hatte in letzter Zeit auch so viel zu tun und konnte mich deshalb nicht dem APF widmen...
Ich bin mir nichtmehr sicher ob ich das Browsergame mit dem APF machen soll, da ich für so ein großes Projekt ungern eine fast unbekannte "Software"/Framework einsetzte. Ich würde lieber erst was kleineres machen um ein wenig in Übung zu kommen...
Wobei es nachher auch wieder ärgerlich ist wenn ich dann das Browsergame nocheinmal schreiben muss, aber dann auf APF-Basis ...

Grüße

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast