[Frage] Files in Extbase-Extension

  • buzz-dee buzz-dee
    Padawan
    0 x
    46 Beiträge
    1 Hilfreiche Beiträge
    06. 07. 2015, 16:52

    Hallo Leute,

    habe da eine Sache, die ich noch nicht so richtig verstehe: Der File-Upload bei Extbase-Extensions im Backend. Wenn ich ein Extension-Gerüst mit dem Extension Builder erstelle, wird ja die Meldung angezeigt, dass File-Upload noch nicht unterstützt wird. Das bezieht sich m.E. aber nur auf das Frontend, oder?
    Das eigentliche Problem ist, dass ich versuchen möchte, den Redakteuren die Arbeit so einfach wie möglich zu machen. Früher war das ja so, dass sie direkt im Datensatz Dateien bzw. Bilder hochladen konnten und die dann automatisch im Uploads-Ordner der Extension gelandet sind.
    Ist es jetzt mit Extbase tatsächlich so, dass die Dateien nicht mehr automatisch verwaltet werden können, d.h. die Redakteuren müssen File-Relationen angelegen und den Speicherort selbst wählen?
    Kann man da nicht den "alten Weg" wiederherstellen?


  • 1
  • toifel toifel
    Jedi-Ratsmitglied
    0 x
    831 Beiträge
    96 Hilfreiche Beiträge
    07. 07. 2015, 14:19

    Wenn du ein FAL Feld im TCA definiert, dann gibt auch immer die Option Dateien direkt hochzuladen.
    Der Redakteur muss dann keinen Zielordner wählen o.Ä., sondern nur die Metadaten eintragen und den Datensatz speichern.

    Typo3 bietet dafür diese Funktion für das TCA:
    'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig('image', array(.....))

  • McGregor McGregor
    Jedi-Ratsmitglied
    0 x
    610 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2015, 17:45

    Bei mir ist es genau so. Das Backend verhält sich hier sehr Reakteur-Freundlich.
    Leider sieht das für mich auf Programmierer-Seite anders aus.

    Derzeit versuche ich Filelinks zu generieren aus einem File-Feld (PDF-Dokumente), welche als Download-Link angeboten werden sollen (target = "_blank").
    Dann möchte ich nur eine Referenz auf ein Bild generieren (und den Link selber basteln). Auch hier suche ich einen entsprechenden View-Helper ...

    Oder muss ich am Ende auch hier einen Helper selbst schreiben?

    Grüße
    Jens

  • buzz-dee buzz-dee
    Padawan
    0 x
    46 Beiträge
    1 Hilfreiche Beiträge
    07. 07. 2015, 18:08

    Hallo Leute,

    danke für Eure Antworten. Leider habe ich noch nicht herausgefunden, wie man den Uploads-Ordner ändert. Würde den schon gern für jede Extension einstellen können. Momentan landet alles in "fileadmin/user_upload". Was ich auch nicht so schön finde: Die Dateien werden überschrieben. Mit der "alten" Vorgehensweise (ohne FAL) wurde das abgefangen und die Dateien bekamen einen Suffix.

    @Jens:
    Den Link müsstest Du doch über $deinObj->getDeineProperty()->getOriginalResource()->getName() bekommen oder?
    z.B. $downloadItem->getFile()->getOriginalResource()->getName()

  • McGregor McGregor
    Jedi-Ratsmitglied
    0 x
    610 Beiträge
    0 Hilfreiche Beiträge
    08. 07. 2015, 11:45

    Hi!

    Danke für den Hinweis, aber das scheint mir nicht ganz das zu sein, was ich brauche.
    Ich habe im Backend mehrere Dokumente in meiner Extension verlinkt (FAL).
    Nun will ich diese Dokumente auf der Frontendseite zum download anbieten.
    Mein Template sieht daher folgendermaßen aus:

    1. <f:if condition="{bericht.dokumente}">
    2. <h4>Dokumente</h4>
    3. <f:for each="{bericht.dokumente}" as="doc" iteration="iter">
    4. <f:link.page pageUid="" target="_blank"><f:image src="{doc.uid}" alt="" width="150c" height="200c" treatIdAsReference="1" /></f:link.page>
    5. </f:for>
    6. </f:if>

    Ich bekomme das Vorschaubild des PDF angezeigt. Aber woher bekomme ich den Link für das eigentliche PDF?
    Mein Versuch mit:

    1. <f:link.external uri="{doc}">Dokument</f:link.external>
    2. oder
    3. <f:link.page pageUid="{f:uri.image(src:doc.file,treatIdAsReference:1)}" target="_blank" />

    brachten nicht das gewünschte Ergebnis.
    Irgendeine Idee?

    Grüße
    Jens

  • buzz-dee buzz-dee
    Padawan
    0 x
    46 Beiträge
    1 Hilfreiche Beiträge
    08. 07. 2015, 13:30

    Müsste eigentlich auch so gehen. Nur halt in der Fluid-Syntax.

    Irgendwas wie:

    1. <f:for each="{items}" as="item">
    2. {item.feldname.originalResource.publicUrl}
    3. {item.feldname.originalResource.name}
    4. </f:for>

    Schau mal hier:
    http://keinerweiss.de/755-typo3-fal-in-einer-eigenen-extbasefluid-extension-einsetzen.html

  • McGregor McGregor
    Jedi-Ratsmitglied
    0 x
    610 Beiträge
    0 Hilfreiche Beiträge
    08. 07. 2015, 18:00

    Ja, super.
    Da habe ich mal einen Weg verfolgt, der für mich überhaupt keinen Sinn gemacht hat und bin fündig geworden.
    Wenn man das {doc} debugged, steht beim Eintrag "originalResource" nur NULL.
    Das sah mir dann doch eher so aus, als ob da nichts vorhanden ist (wie komme ich bloß auf sowas???)
    Wenn man dann aber das {doc.originalResource} debugged, steht da doch einiges drin!

    Am Ende hat mir

    1. <a href="fileadmin{doc.originalResource.properties.identifier}" target="_blank"><f:image src="/fileadmin{doc.originalResource.properties.identifier}" width="100c" height="150c" treatIdAsReference="1" /></a>

    geholfen

    Grüße
    Jens

  • 1