Ergebnis 1 bis 20 von 20

Thema: Alternativen zum Modul "ReadfromUrl"

  1. #1
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard Alternativen zum Modul "ReadfromUrl"

    Gibt es eine Alternative zum Modul "ReadfromUrl"? Das Modul wurde leider nur bis 2.6.6. weiterentwickelt und in der Vergangenheit schon von mir verwendet. Jetzt bräuchte ich das Modul, nur leider funktioniert es unter der aktuellen TL Version nicht.

  2. #2
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.153
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Ich kenne das Modul nicht, was genau brauchst du denn ?
    Vieles kannst du naemlich auch im Template oder File mittels $this->Input->get('###') machen
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  3. #3
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.642
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich weis auch nicht was das Modul macht, aber die Erweiterung "inputvar" könnte dir weiterhelfen.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  4. #4
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard

    Das Modul Read from URL hat Inhalte von externen Seiten ausgelesen und die im CMS ausgegeben.

    Liest den Inhalt einer URL (Normaler Inhalt, serialisiertes Array und XML) ein und gibt ihn aus.
    Beschreibung
    Mit diesem Modul können Sie Inhalt von einer URL laden. Dabei wird zwischen drei Szenarien unterschieden:

    * Sie möchten lediglich den Inhalt einer URL anzeigen
    * Sie möchten ein serialisiertes Array einer URL in Ihr Template einbinden
    * Sie möchten ein XML-Dokument in Ihr Template einbinden

    Außerdem:

    * Unterstützung von Insert-Tags in der URL
    * Weitergabe von POST und GET Anfragen an die Quell-URL

    ReadFromUrl erscheint im Artikel als neues Inhaltselement "Von URL lesen".
    Voraussetzungen
    Damit das Modul funktionieren kann, muss die Funktion readfromurl freigeschalten sein. Zudem muss der Funktion readfromurl gestattet sein auf entfernten Inhalt via HTTP zuzugreifen.
    Anleitung
    Eine ausführliche Anleitung finden Sie auf http://www.pleinesoft.de/downloads/t...eadfromurl.txt

  5. #5
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard

    Keiner ne weitere Idee?

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard Patch

    Wäre gut gewesen, wenn du geschrieben hättest was denn nicht geht.
    Nun habe ich das mal installiert und bekam nach dem Einsatz eine Meldung:
    Code:
    Runtime notice: Declaration of ReadFromUrl::replaceInsertTags() should be compatible with that of Controller::replaceInsertTags()
    Und das ist doch ein sehr bekanntes Probem, was an einer mittlerweile höhere PHP Version liegt.
    Dafür gibts auch hier im Forum schon Tipps zur Beseitigung.

    Ich habe mal die Datei ReadFromUrl.php angepasst (replaceInsertTags umbenannt) und die Class dabei noch erweitert, damit die per URL geholte Seite im Backend nicht angezeigt wird, das stört doch extrem.

    Anbei die veränderte Datei.

    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');

    /**
     * TYPOlight webCMS
     * Copyright (C) 2005 Leo Feyer
     *
     * This program is free software: you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation, either
     * version 2.1 of the License, or (at your option) any later version.
     * 
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
     * Lesser General Public License for more details.
     * 
     * You should have received a copy of the GNU Lesser General Public
     * License along with this program. If not, please visit the Free
     * Software Foundation website at http://www.gnu.org/licenses/.
     *
     * PHP version 5
     * @copyright  Christopher Pleines 2005
     * @author     Christopher Pleines <chris@pleinesoft.de>
     * @package    Frontend
     * @license    LGPL
     * @filesource
     */


    /**
     * Class ReadFromUrl 
     *
     * @copyright  Christopher Pleines 
     * @author     Christopher Pleines 
     * @package    Controller
     */
    class ReadFromUrl extends ContentElement
    {

            
    /**
             * Template
             * @var string
             */
            
    protected $strTemplate 'rfu_content';

            
    /**
             * Display a wildcard in the back end
             * @return string
             */
            
    public function generate()
            {
                if (
    TL_MODE == 'BE')
                {
                
    $objTemplate = new BackendTemplate('be_wildcard');
                
    $objTemplate->wildcard '### ReadFromUrl Module ###';
                return 
    $objTemplate->parse();
                }
                return 
    parent::generate();
            }

            
    /**
             * Compile module
             */
            
    protected function compile()
            {
            if (
    $this->readfromurl_template)
                
    $this->strTemplate $this->readfromurl_template;
            
            
    $this->Template = new FrontendTemplate($this->strTemplate);
            
            
    // Replace insert tags/entity decode
            
    $this->url html_entity_decode($this->RFU_replaceInsertTags($this->readfromurl));

            switch (
    $this->readfromurl_source):
                case 
    'rfu_content':
                    
    $this->read_content();
                break;
                case 
    'rfu_serialized':
                    
    $this->read_serialized();
                break;
                case 
    'rfu_xml':
                    
    $this->read_xml();
                break;
            endswitch;
            
            }

            
    /**
             * Read raw data from $this->url
             */
            
    private function read_rawdata() {
            
    $options = array( 'http' => array(
                
    'max_redirects' => 10,          // stop after 10 redirects
                
    'timeout'       => 120,         // timeout on response
            
    ) );
            
    $context stream_context_create$options );
            
    $url_content = @file_get_contents($this->urlfalse$context);
            if (!
    $url_content)
                
    $this->log('ReadFromURL: Could not read from URL ' $this->url'ReadFromUrl read_rawdata()'TL_ERROR);

            return 
    $url_content;
        }

            
    /**
             * Process simple content
             */
            
    private function read_content() {
            
    $url_content $this->read_rawdata();
            if (
    $this->encode_utf8$url_content utf8_encode($url_content);
            if (
    $this->decode_utf8$url_content utf8_decode($url_content);        
            
    $this->Template->url_content $url_content;
        }

            
    /**
             * Process serialized content
             */    
            
    private function read_serialized() {
            
    $url_content $this->read_rawdata();
            
    $arr = @unserialize($url_content);
            if (!
    $arr)
                
    $this->log('ReadFromURL: Could not unserialize Array/Object from ' $this->url'ReadFromUrl read_serialized()'TL_ERROR);
            
    $this->Template->url_content $arr;
        }

            
    /**
             * Process XML content
             */     
            
    private function read_xml() {
            
    $url_content $this->read_rawdata();
            
    $xml = @simplexml_load_string($url_content);
            if (!
    xml)
                
    $this->log('ReadFromURL: Could not read valid XML from ' $this->url'ReadFromUrl read_xml()'TL_ERROR);
            
    $this->Template->url_content $xml;
        }

            
    /**
             * Replace Insert Tags
             * - {{request_vars}} => $GLOBALS['_REQUEST'] url-conformed      
             */     
        
    protected function RFU_replaceInsertTags($strTag) {
            
    $replace http_build_query($GLOBALS['_REQUEST']);
            
    $replaced_string str_replace('{{request_vars}}'$replace$strTag);
            return 
    $replaced_string;
        }        
        
    }

    ?>
    Sollte das nicht dein Problem sein, dann sag genauer was los ist.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard

    Ich teste das morgen gleich mal. Dankeschön erstmal

  8. #8
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard

    Hab mal deine Version genommen und bekomme folgende Fehlermeldung:

    Code:
    Recoverable error: Argument 1 passed to ContentElement::__construct() must be an instance of Database_Result, none given, called in /www/htdocs/w00c7868/_cms/system/libraries/System.php on line 145 and defined in /www/htdocs/w00c7868/_cms/system/modules/frontend/ContentElement.php on line 71
    
    #0 /www/htdocs/w00c7868/_cms/system/modules/frontend/ContentElement.php(71): __error(4096, 'Argument 1 pass...', '/www/htdocs/w00...', 71, Array)
    #1 /www/htdocs/w00c7868/_cms/system/libraries/System.php(145): ContentElement->__construct()
    #2 /www/htdocs/w00c7868/_cms/system/libraries/Controller.php(1757): System->import('ReadFromUrl')
    #3 /www/htdocs/w00c7868/_cms/system/modules/frontend/FrontendTemplate.php(180): Controller->replaceInsertTags('output()
    #5 /www/htdocs/w00c7868/_cms/index.php(188): PageRegular->generate(Object(DB_Mysql_Result))
    #6 /www/htdocs/w00c7868/_cms/index.php(311): Index->run()
    #7 {main}
    
    
    Warning: Missing argument 1 for ContentElement::__construct(), called in /www/htdocs/w00c7868/_cms/system/libraries/System.php on line 145 and defined in /www/htdocs/w00c7868/_cms/system/modules/frontend/ContentElement.php on line 71
    
    #0 /www/htdocs/w00c7868/_cms/system/modules/frontend/ContentElement.php(71): __error(2, 'Missing argumen...', '/www/htdocs/w00...', 71, Array)
    #1 /www/htdocs/w00c7868/_cms/system/libraries/System.php(145): ContentElement->__construct()
    #2 /www/htdocs/w00c7868/_cms/system/libraries/Controller.php(1757): System->import('ReadFromUrl')
    #3 /www/htdocs/w00c7868/_cms/system/modules/frontend/FrontendTemplate.php(180): Controller->replaceInsertTags('output()
    #5 /www/htdocs/w00c7868/_cms/index.php(188): PageRegular->generate(Object(DB_Mysql_Result))
    #6 /www/htdocs/w00c7868/_cms/index.php(311): Index->run()
    #7 {main}
    
    
    Fatal error: Call to a member function row() on a non-object in /www/htdocs/w00c7868/_cms/system/modules/frontend/ContentElement.php on line 75

  9. #9
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Kommt das im Backend oder Frontend?

    Welche Art hast du genutzt vom Modul? Ich hatte das nur per URL probiert.

    Welche TL Version nimmst du?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  10. #10
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Kommt das im Backend oder Frontend?

    Welche Art hast du genutzt vom Modul? Ich hatte das nur per URL probiert.

    Welche TL Version nimmst du?
    Die Fehlermeldung kommt im Frontend. Version ist 2.8.3.
    Ich hab das als Inhaltselement im Artikel eingebunden. Nicht als Modul.

  11. #11
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Huch, jetzt habe ich das auch.
    Ich schaue nochmal nach.

    Nachschau...
    Komisch, leider kenn ich mich mit CEs nicht so recht aus, finde ím Vergleich zu anderen aber erstmal nichts was hier schief laufen soll.
    Geändert von BugBuster (26.05.2010 um 19:43 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  12. #12
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    So, nehme mal diese.
    Ich verstehe zwar nicht, warum hier die contruct Methode nötig ist, aber was solls.

    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');

    /**
     * TYPOlight webCMS
     * Copyright (C) 2005 Leo Feyer
     *
     * This program is free software: you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation, either
     * version 2.1 of the License, or (at your option) any later version.
     * 
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
     * Lesser General Public License for more details.
     * 
     * You should have received a copy of the GNU Lesser General Public
     * License along with this program. If not, please visit the Free
     * Software Foundation website at http://www.gnu.org/licenses/.
     *
     * PHP version 5
     * @copyright  Christopher Pleines 2005
     * @author     Christopher Pleines <chris@pleinesoft.de>
     * @package    Frontend
     * @license    LGPL
     * @filesource
     */


    /**
     * Class ReadFromUrl 
     *
     * @copyright  Christopher Pleines 
     * @author     Christopher Pleines 
     * @package    Controller
     */
    class ReadFromUrl extends ContentElement
    {

            
    /**
             * Template
             * @var string
             */
            
    protected $strTemplate 'rfu_content';

            
    /**
             * Display a wildcard in the back end
             * @return string
             */
            
    public function generate()
            {
                if (
    TL_MODE == 'BE')
                {
                
    $objTemplate = new BackendTemplate('be_wildcard');
                
    $objTemplate->wildcard '### ReadFromUrl Module ###';
                return 
    $objTemplate->parse();
                }
                return 
    parent::generate();
            }

            public function 
    __construct(Database_Result $objModule=null$strColumn='main')
            {
                if (
    $objModule !== null)
                    
    parent::__construct($objModule$strColumn);
            }

            
    /**
             * Compile module
             */
            
    protected function compile()
            {
            if (
    $this->readfromurl_template)
                
    $this->strTemplate $this->readfromurl_template;
            
            
    $this->Template = new FrontendTemplate($this->strTemplate);
            
            
    // Replace insert tags/entity decode
            
    $this->url html_entity_decode($this->RFU_replaceInsertTags($this->readfromurl));

            switch (
    $this->readfromurl_source):
                case 
    'rfu_content':
                    
    $this->read_content();
                break;
                case 
    'rfu_serialized':
                    
    $this->read_serialized();
                break;
                case 
    'rfu_xml':
                    
    $this->read_xml();
                break;
            endswitch;
            
            }

            
    /**
             * Read raw data from $this->url
             */
            
    private function read_rawdata() {
                
    $options = array( 'http' => array(
                    
    'max_redirects' => 10,          // stop after 10 redirects
                    
    'timeout'       => 120,         // timeout on response
                
    ) );
                
    $context stream_context_create$options );
                
    $url_content = @file_get_contents($this->urlfalse$context);
                if (!
    $url_content)
                    
    $this->log('ReadFromURL: Could not read from URL ' $this->url'ReadFromUrl read_rawdata()'TL_ERROR);
        
                return 
    $url_content;
            }

            
    /**
             * Process simple content
             */
            
    private function read_content() {
                
    $url_content $this->read_rawdata();
                if (
    $this->encode_utf8$url_content utf8_encode($url_content);
                if (
    $this->decode_utf8$url_content utf8_decode($url_content);        
                
    $this->Template->url_content $url_content;
            }

            
    /**
             * Process serialized content
             */    
            
    private function read_serialized() {
                
    $url_content $this->read_rawdata();
                
    $arr = @unserialize($url_content);
                if (!
    $arr)
                    
    $this->log('ReadFromURL: Could not unserialize Array/Object from ' $this->url'ReadFromUrl read_serialized()'TL_ERROR);
                
    $this->Template->url_content $arr;
            }

            
    /**
             * Process XML content
             */     
            
    private function read_xml() {
                
    $url_content $this->read_rawdata();
                
    $xml = @simplexml_load_string($url_content);
                if (!
    xml)
                    
    $this->log('ReadFromURL: Could not read valid XML from ' $this->url'ReadFromUrl read_xml()'TL_ERROR);
                
    $this->Template->url_content $xml;
            }

            
    /**
             * Replace Insert Tags
             * - {{request_vars}} => $GLOBALS['_REQUEST'] url-conformed      
             */     
            
    protected function RFU_replaceInsertTags($strTag) {
                
    $replace http_build_query($GLOBALS['_REQUEST']);
                
    $replaced_string str_replace('{{request_vars}}'$replace$strTag);
                return 
    $replaced_string;
            }        
    }

    ?>
    Geändert von BugBuster (26.05.2010 um 20:26 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  13. #13
    Contao-Fan
    Registriert seit
    21.06.2009.
    Ort
    Thüringen
    Beiträge
    417

    Standard

    Funktioniert. Vielen Dank. Da könnte man doch die Version im Repository aktualisieren

  14. #14
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Fehler Hook Aufruf stört!

    Da ist immer noch der Wurm drin.
    Durch die Umbenennung der Funktion müsste auch die Definition in der config.php angepasst werden:
    PHP-Code:
    // New Callback
    $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('ReadFromUrl''RFU_replaceInsertTags'); 
    Die Funktion RFU_replaceInsertTags scheint zwar zu funktionieren wenn diese intern aufgerufen wird, jedoch nicht als Hook. Ein Hook muss immer eine nicht leere Rückgabe haben bzw. "false" wenn der Hook nicht für diese Funktion gedacht ist.
    Dies ist aber hier nicht so!
    Das äußert sich dadurch, das alle weiteren Extensions die alphabetisch nach dem Modul ReadFromUrl kommen, nicht mehr funktionieren wenn diese Inserttags nutzen!

    Ich habe den Sinn des Hook Aufrufes eh nicht verstanden, und daher die Definition in der config.php rausgenommen
    PHP-Code:
    // New Callback
    //$GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('ReadFromUrl', 'RFU_replaceInsertTags'); 
    Nun geht bei mir alles wieder.
    Geändert von BugBuster (27.10.2017 um 15:39 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  15. #15
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    496

    Standard XML auslesen

    Hallo,

    hat jemand mit der alten Version in Contao 3.4 ausprobiert, eine externe XML-Datei auszulesen und auszugeben? Oder hat jemand eine elegante Lösung für Contao parat? Ich weiß, dass es mit Hilfe von PHP geht (parse). Allerdings würde ich gerne eher auf eine einfachere und für Backend geeignete Lösung zugreifen. Danke.

    Liebe Grüße,

    Jan

  16. #16
    Contao-Nutzer Avatar von tinokramm
    Registriert seit
    22.09.2011.
    Ort
    Brandenburg an der Havel
    Beiträge
    12
    Partner-ID
    6420

    Standard

    Hallo zusammen.

    Gibt es zur Erweiterung [readfromurl] eine Alternative für Contao 3.5? Meine Recherche in der Erweiterungsliste blieb leider ergebnislos.

    Danke für Tipps und beste Grüße

    Tino

  17. #17
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard

    Gibt es hier mehrere User die diese Erweiterung gerne für Contao 3.5 hätten?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  18. #18
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Fehler [readfromurl3] Version 2.0.0 verfügbar für Contao 3.5

    Ich greife mal vor und sage mal, ja es gibt nun eine Alternative für Contao 3.5:
    https://github.com/BugBuster1701/readfromurl3

    Noch nicht über Composer verfügbar, folgt später.
    Die ZIP laden für manuelle Installation: auf der GitHub Seite auf release klicken, dort auf "zip" lädt die Erweiterung.

    Installation ist in der Readme beschrieben.

    Achtung: das Verzeichnis der Erweiterung ist nun readfromurl3 , falls jemand die alte Version vom Original Autor installiert hat (Verzeichnis readfromurl), die ist vorher zu entfernen und "Systemwartung" -> "Internen Cache leeren" ausführen.

    Die DB Felder sind identisch, sofern man die nicht löscht, bleiben alle eventuellen Eintragungen noch erhalten.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  19. #19
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.553
    User beschenken
    Wunschliste

    Standard [readfromurl3] Version 2.1.1 verfügbar für Contao 3.5

    So, diese Version ist nun auch über Composer/Paketverwaltung installierbar mit dem Namen: bugbuster/readfromurl3
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  20. #20
    Contao-Nutzer Avatar von tinokramm
    Registriert seit
    22.09.2011.
    Ort
    Brandenburg an der Havel
    Beiträge
    12
    Partner-ID
    6420

    Standard

    Wow! Was für eine wahnsinns Reaktionszeit. Toll. Ich gucke mir das bei Gelegenheit an.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 02.03.2011, 16:06
  2. Antworten: 0
    Letzter Beitrag: 25.08.2010, 21:13
  3. Modul "Kommentare" - Feld "Email" zu einem optionalen Feld machen
    Von ToenS im Forum Layout / Templates / Holy Grail
    Antworten: 0
    Letzter Beitrag: 07.03.2010, 19:46
  4. "parallele" Navigation mit "active" bzw. "trail" Klasse?
    Von Reimi im Forum Layout / Templates / Holy Grail
    Antworten: 6
    Letzter Beitrag: 22.12.2009, 09:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •