magnify

Gößenangaben von Download-Links im RTE

Armin Bartsch, Donnerstag, 19. März 2009

Zeigt die Dateigröße bei RTE-Links mit an

Nicht immer möchte man Links zu einem Download als Dateiliste oder mit Hilfe einer Extension darstellen, sondern direkt im Text aber auf die Angabe der Dateigröße nicht verzichten.

Mit einigen Zeilen TypoScript und einer USER-Funktion kann man die Links erweitern damit die Dateigröße vom Besucher vor dem Download zu erkennen ist.

TypoScript

In diesem Beispiel greife ich direkt auf die zu um den Link um die Größenangabe zu erweitern.

  1. # Einbinden der PHP-Datei, bitte Pfad anpassen
  2. page.includeLibs.user_classes = typo3conf/ext/anpassungen_t3/user_classes.php
  3.  
  4. lib.parseFunc_RTE {
  5.   tags {
  6.     link {
  7.       innerWrap.cObject = COA
  8.       innerWrap.cObject {
  9.         10 = TEXT
  10.         10.value = |
  11.         20 = USER_INT
  12.         20.userFunc = user_classes->fileSize
  13.         20.wrap = &nbsp;<span class=filesize>(|)</span>
  14.         20.tilo.cObject = TEXT
  15.         20.tilo.cObject {
  16.           data = parameters : allParams
  17.           split {
  18.             token.char = 32
  19.             cObjNum = 1 |*| 2 |*| 2
  20.             1 {
  21.               current = 1
  22.             }
  23.           }
  24.         }
  25.         if.value = t3x,t3d,pdf,zip,rar,doc,wmv
  26.         if.isInList.cObject < .20.tilo.cObject
  27.         if.isInList.cObject {
  28.           split {
  29.             1 {
  30.               crop = -3
  31.               case = lower
  32.             }
  33.           }
  34.         }
  35.       }
  36.     }
  37.   }
  38. }

In Zeile 2 wird über die PHP-Datei eingebunden deren Funktion die Größe der Datei zurückgibt. Der Aufruf der Funktion erfolgt im TypoScript mit der Zeile 12.

Damit die Größenangabe mit im Linktext (a-tag) geschrieben wird, greife ich auf innerWrap zurück, gleichzeitig stehen somit stdWrap/cObjecte zur Verfügung.
Der Dateiname samt Pfad wird mit Hilfe von den Zeilen 17-23 aus dem extrahiert und an die Funktion user_classes->fileSize übergeben.

In den Zeilen 24-35 erfolgt per if eine Abfrage für welche Extensionen (Dateiendungen) eine Größenangabe ermittelt werden soll.
Die Zeile 25 kann beliebig angepasst und erweitert werden.

USER Klasse

Die mit TypoScript eingebunden USER-Klasse benötigt nur einige Zeilen Code. 

  1. <?php
  2.  
  3. class user_classes  {
  4.  
  5.   var $cObj;
  6.  
  7.   /**
  8.    * Rückgabe der Dateigröße, genutzt für LINK
  9.    *
  10.    * @param string  Leer
  11.    * @param array    TypoScript configuration
  12.    * @return  string    HTML output.
  13.    */
  14.   function fileSize($content, $conf) {
  15.     $file = $this->cObj->TEXT($conf['tilo.']);
  16.     if (file_exists($file)) {
  17.       $fileSize = filesize($file);
  18.       if ($fileSize) {
  19.         $fileSize = t3lib_div::formatSize($fileSize, ' Byte| kB| MB| GB');
  20.         $fileSize = $conf['wrap'] ? $this->cObj->wrap($fileSize, $conf['wrap']) : $fileSize;
  21.       }
  22.     }
  23.     return $fileSize;
  24.   }
  25.  
  26. }
  27.  
  28. ?>

Die Methode ermittelt die Dateigröße und gibt diese mit einer Einheit zurück.

magnify

Kommentare

Ins Gästebuch eintragen
Kein Kommentar vorhanden

MERKLISTE

Login

Anmelden

Sponsored by:

ideenwerft webhosting

Wunschzettel