Ergebnis 1 bis 34 von 34

Thema: ce_downloads.html um Dateidatum erweitert

  1. #1
    Contao-Fan Avatar von Bas
    Registriert seit
    03.12.2009.
    Ort
    Hamburg
    Beiträge
    542

    Standard ce_downloads.html um Dateidatum erweitert

    Normale Ausgabe des Contentelement Downloads:
    Dateiname (13.4 KiB)
    wird zu
    Dateiname (13.4 KiB) 2013-06-07 10:28

    Hier das komplette Template ce_downloads.html:
    PHP-Code:
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>

      <?php if ($this->headline): ?>
        <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
      <?php endif; ?>

      <?php echo $this->v2warning?>

      <ul>
        <?php foreach ($this->files as $file): ?>
            <?php
                $filepath 
    substr($file['href'], strpos($file['href'],'=')+);
                
    $mydate date ("Y-m-d H:i"filemtime($filepath));
            
    ?>
          <li><img src="<?php echo $file['icon']; ?>" width="18" height="18" alt="" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?> <span class="size">(<?php echo $file['filesize']; ?>)</span> <span class="date"><?php echo $mydate?></span></a></li>
        <?php endforeach; ?>
      </ul>

    </div>
    Zeile 12-15 habe ich hinzugefügt, und Zeile 16 um die Ausgabe der Datumsvariable erweitert.
    Wenn das ausgegebene Datum ein anderes Format haben soll muss in Zeile 14 die Datefunktion angepasst werden (Y-m-d H:i ... siehe http://de3.php.net/manual/de/function.date.php).

    Kleinkram, aber evt. kann es jemand gebrauchen. Bei Fragen fragen.

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

    Standard

    Zitat Zitat von Bas Beitrag anzeigen
    Wenn das ausgegebene Datum ein anderes Format haben soll muss in Zeile 14 die Datefunktion angepasst werden (Y-m-d H:i ...
    Alternative könnte man die Definition verwendet die im Backend unter Einstellungen definiert ist.
    Dazu werden globale Variablen gesetzt, wovon es zwei gibt, mit und ohne Uhrzeit.
    Per Default sind diese so definiert:
    PHP-Code:
    $GLOBALS['TL_CONFIG']['datimFormat'] = 'Y-m-d H:i';
    $GLOBALS['TL_CONFIG']['dateFormat'] = 'Y-m-d'
    Die entsprechende Zeile könnte dann lauten:
    PHP-Code:
    $mydate date $GLOBALS['TL_CONFIG']['datimFormat'] , filemtime($filepath) ); 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer Avatar von sirena
    Registriert seit
    04.02.2010.
    Ort
    Basel, CH
    Beiträge
    10

    Standard Neue Dateien 01.01.1970 !?

    Hallo zusammen

    Erst mal Danke für den Script! der bei Dateien die schon in der Dateiverwaltung liegen gut funktioniert.
    Bei neuen hochgeladenen Dateien zeigt es mir immer "01.01.1970" an. Liegt es am Pfad, wird eine Information nicht erstellt . . .? - Da hilft es nicht den Cache zu leeren, die Dateiverwaltung zu synchronisieren oder die Datei erneut hochzuladen (über BE oder FTP).

    Ich komme da nicht weiter, wer hat eine Idee?
    Was benötigt ihr noch für Informationen von mir? (Contao Version 3.1.2)
    Eine online-Version müsste ich erstellen, es befindfet sich alles in einem internen Bereich.


    Grüsse, sirena

    EDIT: Aha, ich hatte einen Dateinamen mit () dabei, habe die Klammern entfernt und schon klappts!
    Geändert von sirena (09.10.2013 um 22:28 Uhr)

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

    Standard Thema: 3.1.x ce_downloads.html um Dateidatum erweitert, so gehts

    Keine Ahnung wie das Original Script je funktioniert hat, wenn man die Fehlermeldungen einschaltet sieht man sofort woran es liegt.

    ändere diese Zeile von
    PHP-Code:
    $mydate date ("Y-m-d H:i"filemtime($filepath)); 
    nach
    PHP-Code:
    $mydate date ("Y-m-d H:i"filemtime(TL_ROOT "/" $filepath)); 
    Schon gehts. (so macht es übrigens auch Contao selbst wenn man die File Class nutzt)

    Nachtrag: Seltsamerweise gehts doch auch ohne TL_ROOT , keine Ahnung warum bei mir vorhin nicht.
    Geändert von BugBuster (09.10.2013 um 22:49 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer
    Registriert seit
    17.10.2013.
    Beiträge
    2

    Standard Dateiname mit deustche buchstaben

    Eine Frage liebe Leute,
    können wir in diesem bereich die deutsche buchstaben als dateiname verwenden.
    ich habe probiert geht nicht die ä ö ü .
    hat jemand eine lösung?

    danke im voraus

    netcini

  6. #6
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    Zitat Zitat von Bas Beitrag anzeigen
    Normale Ausgabe des Contentelement Downloads:
    Dateiname (13.4 KiB)
    wird zu
    Dateiname (13.4 KiB) 2013-06-07 10:28

    Hier das komplette Template ce_downloads.html:
    PHP-Code:
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>

      <?php if ($this->headline): ?>
        <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
      <?php endif; ?>

      <?php echo $this->v2warning?>

      <ul>
        <?php foreach ($this->files as $file): ?>
            <?php
                $filepath 
    substr($file['href'], strpos($file['href'],'=')+);
                
    $mydate date ("Y-m-d H:i"filemtime($filepath));
            
    ?>
          <li><img src="<?php echo $file['icon']; ?>" width="18" height="18" alt="" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?> <span class="size">(<?php echo $file['filesize']; ?>)</span> <span class="date"><?php echo $mydate?></span></a></li>
        <?php endforeach; ?>
      </ul>

    </div>
    Zeile 12-15 habe ich hinzugefügt, und Zeile 16 um die Ausgabe der Datumsvariable erweitert.
    Wenn das ausgegebene Datum ein anderes Format haben soll muss in Zeile 14 die Datefunktion angepasst werden (Y-m-d H:i ... siehe http://de3.php.net/manual/de/function.date.php).

    Kleinkram, aber evt. kann es jemand gebrauchen. Bei Fragen fragen.
    Hallo

    und vielen Dank @Bas, das konnte ich sehr gut gebrauchen. Jetzt würde ich aber gerne nur das Datum ohne Uhrzeit ausgeben. Wenn ich das "H:i" weglasse, bekomme ich allerdings Fehlermeldungen bei Dateien, die Leerzeichen enthalten:

    Code:
    Warning: filemtime() [function.filemtime]: stat failed for files/download/.../schwerverletztenversorgung_Auflage_2012%20DGU.pdf in templates/.../ce_downloads.html5 on line 14
    #0 [internal function]: __error(2, 'filemtime() [parse()
    #4 system/modules/core/elements/ContentElement.php(178): Contao\FrontendTemplate->parse()
    #5 system/modules/core/elements/ContentDownloads.php(101): Contao\ContentElement->generate()
    #6 system/modules/core/library/Contao/Controller.php(490): Contao\ContentDownloads->generate()
    #7 system/modules/core/modules/ModuleArticle.php(184): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
    #8 system/modules/core/modules/Module.php(148): Contao\ModuleArticle->compile()
    #9 system/modules/core/modules/ModuleArticle.php(59): Contao\Module->generate()
    #10 system/modules/core/library/Contao/Controller.php(405): Contao\ModuleArticle->generate(false)
    #11 system/modules/core/library/Contao/Controller.php(229): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #12 system/modules/core/pages/PageRegular.php(138): Contao\Controller->getFrontendModule('0', 'main')
    #13 index.php(239): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #14 index.php(407): Index->run()
    #15 {main}
    Kann mir jemand sagen, wie ich nur das Datum ohne Uhrzeit anzeigen kann?

    Viele Grüße,
    Anke

  7. #7
    Contao-Fan Avatar von Bas
    Registriert seit
    03.12.2009.
    Ort
    Hamburg
    Beiträge
    542

  8. #8
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    Ah, danke, das hätte ich etwas genauer studieren sollen ...

    VG
    Anke

  9. #9
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Hallo,

    ich kann bei der Funktion, die die Zeit berechnet, eingeben was ich will.
    Ich bekomme auf jeden Fall Fehler:

    Code:
    [24-Mar-2014 22:31:26 Europe/Berlin] PHP Warning: filemtime(): stat failed for /www/.../article&amp;table=tl_content&amp;id=1&amp;amp;file=files/layout/header.png in /www/.../templates/ce_downloads.html5 on line 11
    [24-Mar-2014 22:31:26 Europe/Berlin] PHP Warning: filemtime(): stat failed for /www/.../article&amp;table=tl_content&amp;id=1&amp;amp;file=files/layout/header.png in /www/.../templates/ce_downloads.html5 on line 12
    Hier mein abgeändertes Template (2.11.16):

    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>

    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>

    <?php foreach ($this->files as $file): ?>
        <?php
            $filepath 
    substr($file['href'], strpos($file['href'],'=')+);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
        
    ?>
      <p><img src="<?php $mimeIcon 'files/layout/mime_icons/mime-'.$file['extension'].'.png';
    echo (
    is_file($mimeIcon)) ? $mimeIcon $file['icon']; ?>" width="18" height="18" alt="<?php echo $file['mime']; ?>" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?> <span class="size"></a>(<?php echo $file['filesize']; ?></span> | <span class="date"><?php echo $mydate?></span> | <span class="time"><?php echo $mytime?></span>)</p>
    <?php endforeach; ?>
    </div>
    <!-- indexer::continue -->
    Das muss ja was mit der Zeitberechnung zu Tun haben...
    Der Filepfad scheint zu stimmen, denn mit dieser Abfrage erscheint trotzdem Datum / Zeit:

    PHP-Code:
            $filepath substr($file['href'], strpos($file['href'],'=')+);
        if (
    file_exists($filepath)) {
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
        } 
    Ich bin für Hilfe dankbar.

    ToM

    PS: Merkwürdig ist, das dies nur bei dem Template ce_downloads geschieht, nicht bei ce_download...
    Geändert von Nightwing (24.03.2014 um 22:51 Uhr)

  10. #10
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    Hallo TonM,

    bei mir funktioniert es so:
    Code:
    <ul>
        <?php foreach ($this->files as $file): ?>
            <?php
                $filepath = substr($file['href'], strpos($file['href'],'=')+1 );
                $mydate = date ( $GLOBALS['TL_CONFIG']['dateFormat'] , filemtime($filepath) );
            ?>
          <li><span class="dl_icon"><img src="<?php echo $file['icon']; ?>" width="18" height="18" alt="" class="mime_icon"></span> <span class="dl_link"><a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?></a> <span class="dl_info">(<?php echo $file['filesize']; ?> | <?php echo $mydate; ?>)</span></span></li>
    	<?php endforeach; ?>
      </ul>
    Hoffe, das hilft.

    Anke

  11. #11
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Danke, Anke, für Deine Antwort.

    Leider ändert sich da (für mich) gar nix...
    Ich versteh nicht, das es nur bei der foreach Schleife beim Template für mehrere Files auftritt.
    Bei einem einzelnen File (ce_download) gibt das keine Fehler aus.

    Datum und zeit hab ich extra mal gesplittet, um es 1. sauber anzuzeigen (Trennelement | ) und 2. um den Fehler einzugrenzen --> bringt nix.
    Ich kann auch Deine Variante, oder die von BugBuster weiter oben erwähnte nehme, ich bekomme Fehler.
    Merkwürdigerweise gibt das Template aber alles richtig aus...

    Hier mal der Code aus beiden Files, vielleicht findet ja einer den Fehler...

    ce_download.html5:

    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>

    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>
        <ul class="downloads">
        <?php
            $filepath 
    substr($file['href'], strpos($file['href'],'=')+);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
        
    ?>
      <li><img src="<?php $mimeIcon 'files/layout/mime_icons/mime-'.$this->extension.'.png';
    echo (
    is_file($mimeIcon)) ? $mimeIcon $this->icon?>" width="18" height="18" alt="<?php echo $this->mime?>" class="mime_icon"> <a href="<?php echo $this->href?>" title="<?php echo $this->title?>"><?php echo $this->link?></a> <span class="size">(<?php echo $this->filesize?></span><span class="date"> | <?php echo $mydate?></span><span class="time"> | <?php echo $mytime?>)</span></li>
        </ul> 
    </div>
    <!-- indexer::continue -->
    ce_downloads.html5:

    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>

    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>
        <ul class="downloads">
    <?php foreach ($this->files as $file): ?>
        <?php
            $filepath 
    substr($file['href'], strpos($file['href'],'=')+);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
        
    ?>
      <li><img src="<?php $mimeIcon 'files/layout/mime_icons/mime-'.$file['extension'].'.png';
    echo (
    is_file($mimeIcon)) ? $mimeIcon $file['icon']; ?>" width="18" height="18" alt="<?php echo $file['mime']; ?>" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?></a> <span class="size">(<?php echo $file['filesize']; ?></span><span class="date"> | <?php echo $mydate?></span><span class="time"> | <?php echo $mytime?>)</span></li>
    <?php endforeach; ?>
        </ul> 
    </div>
    <!-- indexer::continue -->
    Ich hab echt keine Ahnung, was da schiefläuft...

    ToM

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    22.709
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Wie du in deiner Fehlermeldung siehst:
    [24-Mar-2014 22:31:26 Europe/Berlin] PHP Warning: filemtime(): stat failed for /www/.../article&amp;table=tl_content&amp;id=1&amp;amp;file =files/layout/header.png in /www/.../templates/ce_downloads.html5 on line 11
    [24-Mar-2014 22:31:26 Europe/Berlin] PHP Warning: filemtime(): stat failed for /www/.../article&amp;table=tl_content&amp;id=1&amp;amp;file =files/layout/header.png in /www/.../templates/ce_downloads.html5 on line 12
    holst du dir den Dateipfad flasch aus dem href. Wahrscheinlich funktioniert es, wenn du strrpos, statt strpos verwendest.

    Aber eigentlich ist das alles gar nicht notwendig, den absoluten Pfad zur Datei bekommst du im Template auch so:
    PHP-Code:
    $file['path'] . '/' $file['name'
    Also statt
    PHP-Code:
    $filepath substr($file['href'], strpos($file['href'],'=')+); 
    schreibe einfach
    PHP-Code:
    $filepath $file['path'] . '/' $file['name']; 
    im ce_downloads Template.


    Funktioniert dein ce_download Template überhaupt so, wie du es gepostet hast? Denn dort wird $file gar nie definiert. Im ce_download Template ist es wiederum nicht so einfach, weil dort der basename der Datei nicht an das Template übergeben wird. $this->linkTitle enthält zwar den basename, aber nur dann, wenn der User keinen eigenen Link Title für die Datei eingegeben hat, daher kann man sich nicht darauf verlassen.


    // edit: welche Contao Version verwendest du überhaupt? Dein Template sieht nach einer älteren Version aus, fällt mir gerade auf.
    Geändert von Spooky (25.03.2014 um 09:11 Uhr)

  13. #13
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Hallo Spooky,

    ich nutze Contao in Version 2.11.16, steht hier irgendwo glaub ich auch.
    Ich kann Deine Idee erst heut Abend testen, hab vorher keine Möglichkeit...

    Ja, das Template funktioniert mit dem von mir geposteten Code astrein, produziert eben nur den Fehler.
    Und nur auch im Template für mehrere Downloads.
    Im Template für einen einzelnen Download funktioniert es sauber ohne Fehlermeldung.

    Ich hab mir auch testweise den Pfad anzeigen lassen, der passt.

    Updates gibts im Lauf des Abends...

    ToM

  14. #14
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    22.709
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Nightwing Beitrag anzeigen
    ich nutze Contao in Version 2.11.16, steht hier irgendwo glaub ich auch.
    Ah sorry, hatte ich überlesen. Dann kann es allerdings sein, dass meine Lösung nicht funktioniert, weil diese Variablen im Template evt. nicht verfügbar sind unter 2.11.16, aber probier' es mal. Ansonsten statt strpos eben strrpos verwenden in der ursprünglichen Lösung aus dem original post.


    Zitat Zitat von Nightwing Beitrag anzeigen
    Ja, das Template funktioniert mit dem von mir geposteten Code astrein, produziert eben nur den Fehler.
    Wieso sagst du dann es funktioniert "astrein" . Es funktioniert gar nicht - du bekommst so nicht das Dateidatum.


    Zitat Zitat von Nightwing Beitrag anzeigen
    Im Template für einen einzelnen Download funktioniert es sauber ohne Fehlermeldung.
    Du siehst dort auch tatsächlich das richtige Dateidatum?

  15. #15
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Es funktioniert gar nicht - du bekommst so nicht das Dateidatum.
    Doch, das Dateidatum bekomm ich, deswegen bin ich ja so verwundert...
    Siehe und staune selbst auf dem Screenshot im Anhang.

    Das mit strpos --> strrpos versuche ich heute Abend, vielen Dank schonmal!

    ToM

    Nachtrag: Ich nutze in diesen Templates noch die Anpassung für die MIME Icons, da funktioniert die Variable §file auch...
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Nightwing (25.03.2014 um 12:08 Uhr)

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    22.709
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Achso hm, dann ist irgendwas anderes komisch, ich verstehe momentan nicht wirklich wie es zu der Fehlermeldung kommt. Die Fehlermeldung an sich passiert, weil mit filemtime() die Datei "article&amp;table=tl_content&amp;id=1&amp;amp;file =files/layout/header.png". Das ist natürlich ein falscher Pfad und ich frage mich woher dieser href überhaupt kommen kann.
    Geändert von Spooky (25.03.2014 um 10:37 Uhr)

  17. #17
    Contao-Nutzer
    Registriert seit
    19.07.2013.
    Ort
    Greifswald
    Beiträge
    123

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    weil mit filemtime() die Datei "article&amp;table=tl_content&amp;id=1&amp;amp;file =files/layout/header.png". Das ist natürlich ein falscher Pfad und ich frage mich woher dieser href überhaupt kommen kann.
    Wir suchen doch eigentlich nur den Teil nach "file=". Im o. g. String sind mehrere Parameter. Findet der nachfolgende Ausdruck nicht bereits das erste Gleichheitszeichen?
    Code:
     $filepath = substr($file['href'], strpos($file['href'],'=')+1 );

  18. #18
    Contao-Nutzer
    Registriert seit
    19.07.2013.
    Ort
    Greifswald
    Beiträge
    123

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    ich frage mich woher dieser href überhaupt kommen kann
    Verzeihung, ihr seid schon einen Schritt weiter.

  19. #19
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    22.709
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von mpietsch Beitrag anzeigen
    Wir suchen doch eigentlich nur den Teil nach "file=". Im o. g. String sind mehrere Parameter. Findet der nachfolgende Ausdruck nicht bereits das erste Gleichheitszeichen?
    Code:
     $filepath = substr($file['href'], strpos($file['href'],'=')+1 );
    Eben daher mein Vorschlag strrpos zu verwenden. Trotzdem ist es seltsam, dass ein ce_downloads Element solch einen href bei einem einzelnen Download Element ausgibt..

  20. #20
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Eben daher mein Vorschlag strrpos zu verwenden. Trotzdem ist es seltsam, dass ein ce_downloads Element solch einen href bei einem einzelnen Download Element ausgibt..
    Kurz gesagt: Es scheint nun ohne Ausgabe einer Fehlermeldung zu funktionieren.

    Vielen herzlichen Dank!

    ToM

  21. #21
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du siehst dort auch tatsächlich das richtige Dateidatum?
    Jetzt, wo ich zuhause bin und teste, verstehe ich Dich:

    Ja, bei mehreren Files (Template ce_downloadS) funktioniert nun alles so, wie es soll.
    Nur beim Template für nur ein File (ce_download) zeigt es eine unpassende Zeit an.
    Liegt daran, das es sich den Link woanders herholt und das hier ignoriert:
    PHP-Code:
            $filepath substr($file['href'], strrpos($file['href'],'=')+);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath)); 
    ToM

  22. #22
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    22.709
    Partner-ID
    10107
    User beschenken
    Wunschliste

    Standard

    Ersetze in deinem ce_download Template
    PHP-Code:
    $filepath substr($file['href'], strpos($file['href'],'=')+); 
    mit
    PHP-Code:
    $filepath substr($this->hrefstrrpos($this->href,'=')+1); 
    dann sollte auch das passen.

  23. #23
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    Perfekt!
    Vielen Dank!

    So, für alle, die nach mir dasselbe Problem haben:

    ce_download.html5:
    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>

    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>
        <ul class="downloads">
        <?php
            $filepath 
    substr($this->hrefstrrpos($this->href,'=')+1);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
        
    ?>
      <li><img src="<?php echo $this->icon?>" width="18" height="18" alt="<?php echo $this->mime?>" class="mime_icon"> <a href="<?php echo $this->href?>" title="<?php echo $this->title?>"><?php echo $this->link?></a> <span class="size">(<?php echo $this->filesize?></span><span class="date"> | <?php echo $mydate?></span><span class="time"> | <?php echo $mytime?>)</span></li>
        </ul> 
    </div>
    <!-- indexer::continue -->
    ce_downloads.html5:
    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>
    <?php if ($this->headline): ?>

    <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
    <?php endif; ?>
        <ul class="downloads">
    <?php foreach ($this->files as $file): ?>
        <?php
            $filepath 
    substr($file['href'], strrpos($file['href'],'=')+);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
        
    ?>
      <li><img src="<?php echo $file['icon']; ?>" width="18" height="18" alt="<?php echo $file['mime']; ?>" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?></a> <span class="size">(<?php echo $file['filesize']; ?></span><span class="date"> | <?php echo $mydate?></span><span class="time"> | <?php echo $mytime?>)</span></li>
    <?php endforeach; ?>
        </ul> 
    </div>
    <!-- indexer::continue -->
    Dazu kann man in diesen Templates noch die Anpassung für die MIME Icons hinzufügen, sehr schöne Sache.
    ACHTUNG: Beides ist für 2.11.1x, man muss also schauen, wenn man es auf 3.2.x anpasst.

    ToM
    Geändert von Nightwing (09.04.2014 um 11:14 Uhr)

  24. #24
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    310

    Standard

    In der News (news_full.html5) und Eventansicht(event_full.html5) kann man auch eigene MIME Icons verwenden, dazu einfach den Code hier:
    PHP-Code:
    <?php if ($this->enclosure): ?>
     
    <div class="enclosure">
    <?php foreach ($this->enclosure as $enclosure): ?>
    <p><img src="<?php echo $enclosure['icon']; ?>" width="18" height="18" alt="<?php echo $enclosure['mime']; ?>" class="mime_icon"> <a href="<?php echo $enclosure['href']; ?>" title="<?php echo $enclosure['title']; ?>"><?php echo $enclosure['link']; ?> <span class="size">(<?php echo $enclosure['filesize']; ?>)</span></a></p>
    <?php endforeach; ?>
    </div>
    <?php endif; ?>
    ersetzen durch:
    PHP-Code:
    <?php if ($this->enclosure): ?>
    <div class="enclosure">
        <ul class="downloads">
    <?php foreach ($this->enclosure as $enclosure): ?>
        <?php
            $filepath 
    substr($enclosure['href'], strrpos($enclosure['href'],'=')+);
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $mytime date ($GLOBALS['TL_CONFIG']['timeFormat'] , filemtime(TL_ROOT "/" $filepath));
            
    $extension pathinfo($filepath,PATHINFO_EXTENSION);
        
    ?>
      <li><img src="<?php $enclosure['icon'] = 'files/layout/mime_icons/mime-'.$extension.'.png';
    echo (
    is_file($mimeIcon)) ? $mimeIcon $enclosure['icon']; ?>" width="18" height="18" alt="<?php echo $enclosure['mime']; ?>" class="mime_icon"> <a href="<?php echo $enclosure['href']; ?>" title="<?php echo $enclosure['title']; ?>"><?php echo $enclosure['link']; ?></a> <span class="size">(<?php echo $file['filesize']; ?></span><span class="date"> | <?php echo $mydate?></span><span class="time"> | <?php echo $mytime?>)</span></li>
    <?php endforeach; ?>
        </ul>
    <?php endif; ?>
    ACHTUNG: Die Änderung ist zwar für Version 2.11.1x, jedoch dürften die Anpassungen auf 3.2.x nicht allzu umständlich sein.
    Besser, der Code steht hier irgendwo...

    ToM

  25. #25
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.420

    Standard

    Das Thema ist ja schon etwas älter aber:

    Kann es sein, dass es Probleme gibt, wenn die Dateien z.b.: "Name Teil2.pdf" heißen. Oder der Ordner "Name 1"

    Ich habe leider festgestellt, dass bei mir überall wo entweder im Dateinamen oder im Ordnernamen ein leerzeichen enthalten ist, automatisch 01.01.1970 als Datum gesetzt wird.

    Kann man das irgendwie abfangen?

    PS: ich Verwende hier noch gepatchte 2.9er die aber hoffentlich bald auf 3.5 überommen werden kann...

  26. #26
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    Das kann ich bestätigen. Ich habe laufend Ärger deswegen, weil nicht jeder Kunde/Redakteur sich verinnerlichen kann, dass Dateinamen nicht zur Aufnahme ganzer Romane gedacht sind. Aber Leerzeichen sollte Contao vielleicht in der Lage sein, beim Upload in Unterstriche umzuwandeln.

    Hänge dich doch bitte bei Github mit an das Ticket dran, vielleicht wird das dann wieder geöffnet.

    Gruß,
    Anke

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

    Standard

    dann probiert mal das, statt
    PHP-Code:
    filemtime(TL_ROOT "/" $filepath
    nun
    PHP-Code:
    filemtime(TL_ROOT "/" urldecode($filepath)) 
    Das dekodiert jede %## Kodierung einer gegebenen Zeichenkette. Pluszeichen ('+') werden in Leerzeichen umgewandelt.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  28. #28
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.420

    Standard

    Code:
    <div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
    
      <?php if ($this->headline): ?>
        <<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
      <?php endif; ?>
    
      <?php echo $this->v2warning; ?>
    
      <ul>
        <?php foreach ($this->files as $file): ?>
            <?php
                $filepath = substr($file['href'], strpos($file['href'],'=')+1 );
               $mydate = date ("Y-m-d H:i", filemtime(TL_ROOT . "/" . urldecode($filepath)); ?>
          <li><img src="<?php echo $file['icon']; ?>" width="18" height="18" alt="" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?> <span class="size">(<?php echo $file['filesize']; ?>)</span> <span class="date"><?php echo $mydate; ?></span></a></li>
        <?php endforeach; ?>
      </ul>
    
    </div>
    
    Ergibt
    Ergibt bei mir:

    Parse error: syntax error, unexpected ';' in D:\htdocs\tl\templates\ce_downloads.tpl on line 13


    Und ohne deine Änderung:
    Code:
    Warning: filemtime() [function.filemtime]: stat failed for D:\htdocs\tl/tl_files/RedakteurDateien

  29. #29
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.420

    Standard

    Sorry mein Fehler! Deine Lösung funktioniert!

  30. #30
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    Hallo,

    nach dem Upgrade auf Contao 4 (4.8.7) bekomme ich mit
    Code:
    <?php $this->extend('block_searchable'); ?>
    
    <?php $this->block('content'); ?>
    
      <ul>
        <?php foreach ($this->files as $file): ?>
            <?php
                $filepath = substr($file['href'], strrpos($file['href'],'=')+1 );
                $mydate = date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime(TL_ROOT . "/" . $filepath));
            ?> 
          <li class="download-element ext-<?= $file['extension'] ?>">
            <a href="<?= $file['href'] ?>" title="<?= $file['title'] ?>"><?= $file['link'] ?></a> <span class="dl_info">(<?= $file['filesize'] ?> | <?= $mydate ?>)</span>
          </li>
        <?php endforeach; ?>
      </ul>
    
    <?php $this->endblock(); ?>
    wieder bei allen Download-Dateien den 1.1.1970 angezeigt (auch mit allen anderen hier besprochenen Varianten).
    Weiß jemand, wie das geht?

    LG
    Anke

  31. #31
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Ort
    Dortmund
    Beiträge
    1.875

    Standard

    Hast du mal nachgeschaut, was in this->files eigentlich drinsteht?
    Könnte sein, dass das alte Verfahren schon seit der Einführung des DB-gestützen Filesystems nicht mehr funktioniert. Wenn du dann NULL bekommst, dann ergibt das eben den 1.1.1970 (Start der Unix-Zeit).
    Vermutlich findest du UIDs vor und musst du dir aus jeder UID zuerst den Pfad zur Datei generieren lassen.
    www.folkfreun.de - Treffpunkt für Folkmusiker, Folktänzer, Veranstalter und alle Freunde von trad. Folkmusik

  32. #32
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    Danke für die Antwort am späten Sonntagabend!
    this->files? Nein, wie macht man das unter C4? Die Datumsausgabe funktioniert mit Contao 3.5.40 wunderbar, und da werden die Dateien doch auch schon von der DB verwaltet ...?

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

    Standard

    tausche mal die beiden PHP Zeilen durch:
    PHP-Code:
            $filepath $file['path'] . '/' $file['name'];
            
    $mydate date ($GLOBALS['TL_CONFIG']['dateFormat'] , filemtime($filepath)); 
    Das geht bei mir.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  34. #34
    Contao-Fan Avatar von Anke
    Registriert seit
    30.06.2009.
    Ort
    Rhein-Main-Gebiet
    Beiträge
    828

    Standard

    YES! Du bist ein Schatz
    Danke!

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
  •