TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

File / Download ViewHelper


Autor Nachricht
Verfasst am: 07. 02. 2012 [08:23]
jank
Themenersteller
Dabei seit: 01.04.2009
Beiträge: 147
Hallo Zusammen,

irre ich mich oder gibt es keinen Standard ViewHelper für Files in Typo3 4.5.11/Fluid1.3.0???

Ich möchte ein Produkt Plugin schreigen, bei dem zu einem Produkt auch Datenblätte, Bedinungsanleitungen, usw. angehängt werden können.

Ich kann natürlich auch einen ViewHelper selbst schreiben, aber das ist doch eine immer wieder auftauchende Aufgabenstellung und nichts außergewöhnliches.


gruß jank
ProfilWWW
Verfasst am: 08. 02. 2012 [16:02]
jank
Themenersteller
Dabei seit: 01.04.2009
Beiträge: 147
Nach dem mir wohl keiner helfen kann habe ich selbst eine Lösung gefunden:

Ich habe einen eigenen ViewHelper geschieben, der sich der filelink function von Typo3 bedient und somit auch jumpurl und vorallem auch jumpurl.secure nutzen kann.
Dadurch kann man in der eigenen Extbase/Fluid Extension gesicherte Links verwenden, die von Typo3 Core erstellt werden und somit nicht von einer zusätzlichen Extension abhängen.

Wenn das jemand braucht kann ich den Code gerne auf Anfrage veröffentlichen. -> kurze PN
Hab nur jetzt keine Zeit den hier zu poste...

gruß jank
ProfilWWW
Verfasst am: 19. 03. 2012 [11:42]
jank
Themenersteller
Dabei seit: 01.04.2009
Beiträge: 147
Hallo loft,
du hast mich gebeten den Viewhelper zu veröffentlichen... und hier ist er:

PHP
/**
 * A view helper for creating links to files using filelink function.
 *
 * = Examples =
 *
 * <code>
 * {namespace pd=Tx_ProductDownloads_ViewHelpers}
 * <pd:filelink uri="fileadmin/secure/datasheet.pdf" label="Datasheet XY" />
 * </code>
 * <output>
 * <a href="index.php?jumpurl=fileadmin/secure/datasheet.pdf&locationData=1&juSecure=1&juHash=1234567890">Datasheet XY</a>
 * </output>
 *
 * @package product_downloads
 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
 */
class Tx_ProductDownloads_ViewHelpers_FilelinkViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
 
	/**
	 * @param string $uri the URI that will be put in the href attribute of the rendered link tag
	 * @param string $label
	 * @return string Rendered link
	 */
	public function render($uri, $label) {
 
		//get filelinkconf from typoscript setup plugin.tx_productdownloads.settings.filelink
		$filelinkconf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_productdownloads.']['settings.']['filelink.'];
 
		if (!is_array($filelinkconf)){
			$filelinkconf = array();
			$filelinkconf['jumpurl'] = 1;
			$filelinkconf['jumpurl.']['secure'] = 1;
			$filelinkconf['icon'] = 1;
			$filelinkconf['icon_link'] = 1;
			$filelinkconf['size'] = 1;
			$filelinkconf['size.']['wrap'] = '&nbsp;|';
			$filelinkconf['size.']['bytes'] = 1;
			$filelinkconf['size.']['bytes.']['labels'] = ' B| KByte| MB| GB';
		}
		//replace the link label with the param $label
		$filelinkconf['labelStdWrap.']['cObject'] = 'TEXT';
		$filelinkconf['labelStdWrap.']['cObject.']['value'] = $label;
 
		$output = $GLOBALS['TSFE']->cObj->filelink($uri,$filelinkconf);
 
		return $output;
	}
}


Dieser viewhelper erzeugt einen Link als Jumpurl.

Allerdings muss ich sagen, dass die endgültige Lösung im Projekt als DownloadAction umgesetzt wurde. Hierbei wird noch zu jedem Download ein Eintrag im Log erzeugt und falls die Datei nicht vorhanden ist (TCA 'internal_type' => 'file_reference', zwegs FTP Upload) eine Email an den Verantwortlichen gesendet wird.

gruß jank
ProfilWWW