Ergebnis 1 bis 7 von 7

Thema: pimp my ce_downloads

  1. #1
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard pimp my ce_downloads

    Hallo schon wieder.

    Einige wissen vielleicht: ich bin dabei, meine antike TL 2.6 auf Contao 3.5 zu bringen - dank guter Tipps aus dem Update-Forum zunächst in einer Subdomain. Vieles funktioniert schon, aber ich muss wirklich alles angucken und ggf. überarbeiten - und dabei bloss nicht die Teaser-Texte anfassen, denn der TinyMCE baut immer diese blöden <p> Tags ein. Doch das soll hier nicht diskutiert werden.
    Ein viel schlimmeres Problem habe ich mit einer meiner Downloads-Seiten: In der alten Installation (noch aktiv) habe ich einen Artikel, der via Insertag ein eigenes PHP Script (klassisch, nicht objektorientiert) einbindet. Dieses Script schaut auf einem eigens dafür eingerichteten Mail-Account via IMAP nach, ob es Mails mit bestimmten Schlüsselwörtern und Anhängen gibt. Falls die Schlüsselwörter nicht enthalten sind und/oder die Anhänge vom falschen Dateityp sind, werden die Mails sogleich gelöscht. Falls entsprechende Mails gefunden werden, werden die Anhänge mit standardisierten Namen versehen und in ein Verzeichnis unter /tl_files/bla/blubb/... abgelegt. Genau dieses Verzeichnis zeigt ce_downloads mit leicht modifiziertem Template an. Das funktioniert in der TL 2.6 Installation wunderbar. In der neuen C 3.5 klappt es nicht mehr. Ich habe ein Weilchen gebraucht, den Grund herauszufinden: ich muss im BE erst synchronisieren, dann werden die neuen Dateien mit aufgelistet. Das ist natürlich insofern doof, da die Vereinsmitgieder/innen das gern genutzt haben. Hat jemend eine/n Idee, Tipp, vielleicht Codeschnipsel für mich, wie ich das wieder gangbar mache - ohne immer erst von Hand synchronisieren zu müssen?

  2. #2
    Alter Contao-Hase
    Registriert seit
    20.03.2010.
    Ort
    Hannover
    Beiträge
    1.041

    Standard

    Nur als Anregung:

    Der Syncprozess sollte sich doch bestimmt durch einen Cronjob triggern lassen?

    Vielleicht hilft Dir die Idee für die weitere Recherche.

  3. #3
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.087
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Wenn das eh schon eine mit Inserttag eingebundene PHP-Datei macht, ginge das dann nicht einfach mit
    PHP-Code:
    $file Dbafs::addResource('files/james-wilson.jpg'); 
    wie in der Dbafs-Klasse im Kommentar angegeben? Oder jedenfalls sonstwie mit den Methoden dieser Klasse?

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

    Standard

    danach noch den Hash des Verzeichnisses aktualisieren.
    PHP-Code:
            // Update the hash of the target folder
            
    Dbafs::updateFolderHashes($strUploadFolder); 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard

    Habt Dank Ihr drei.
    Im Fall cron wäre mir natürlich ein echter cron-Job am liebsten, aber das beinhaltet mein Hosting-Paket nicht. In das Contao-Cron muss ich mich noch einlesen.
    Aus dem Bauch heraus erschien mir erstmal der Vorschlag mit der Dbafs-Klasse einfacher. Doch leider stellte sich das als zu naiv gedacht heraus: ich habe ja nun keinen Plan von Klassen und Objekten und so'nem Zeug.
    Also habe ich, einfach zu Testzwecken, erstmal hardcoded
    PHP-Code:
    Dbafs::addResource('/files/path/to/downloads/file.doc');
    // bzw.
    $file Dbafs::addResource('/files/path/to/downloads/file.doc'); 
    ausprobiert. Das geht aber schief, ich bekomme im FE eine Fehlermeldung und im Log:
    Code:
    [08-Jun-2016 19:46:52 Europe/Berlin] PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Invalid resource /files/path/to/downloads/file.doc' thrown in /..../system/modules/core/library/Contao/Dbafs.php on line 63
    #0 /web/1/000/038/.../templates/getmail.php(177): Contao\Dbafs::addResource('/files/path/to/d...')
    #1 /web/1/000/038/.../templates/getmail.php(98): save_attachments(Resource id #155, Array, '/web/1/000/038/...')
    #2 /web/1/000/038/.../system/modules/core/library/Contao/InsertTags.php(1113): include('/web/1/000/038/...')
    #3 /web/1/000/038/.../system/modules/core/library/Contao/Controller.php(692): Contao\InsertTags->replace('<!DOCTYPE html ...', false)
    #4 /web/1/000/038/.../system/modules/core/classes/FrontendTemplate.php(100): Contao\Controller::replaceInsertTags('<!DOCTYPE html ...', false)
    #5 /web/1/000/038/.../system/modules/core/pages/PageRegular.php(190): Contao\FrontendTemplate->output(true)
    #6 /web/1/000/038/.../system/modules/core/controllers/FrontendIndex.php(285): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #7 /web/1/000/038/.../index.php(20): Contao\FrontendIndex->run()
    #8 {main}
    Auch wenn ich vorne /files weg lasse klappt's nicht. Muss ich das Ding anders aufrufen? Oder irgendwas includen?
    Oder sollte ich mich lieber in Contaos cron einlesen, wenn ich doch keinen Plan von Objekten Und Klassen habe?

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

    Standard

    relative Pfade verwenden:
    PHP-Code:
    Dbafs::addResource('files/path/to/downloads/file.doc');
    // bzw.
    $file Dbafs::addResource('files/path/to/downloads/file.doc'); 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    relative Pfade verwenden:
    ...
    Faszinierend. Geht.

    Ich dachte, ich hätte das auch probiert, aber scheinbar wohl doch nicht - vermutlich weil ich bei
    PHP-Code:
            // Remove trailing slashes (see #5707)
            
    if (substr($strResource, -1) == '/')
            {
                
    $strResource substr($strResource0, -1);
            } 
    trailing und leading verwechselt habe. Peinlich.

    Das
    PHP-Code:
    // Update the hash of the target folder
            
    Dbafs::updateFolderHashes($strUploadFolder); 
    ist übrigens anscheinend nicht nötig; wohl weil es am Ende der Dbafs::addResource() Funktion schon mit drin ist.

    Danke nochmal!

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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