[Frage] Duplizieren von Objekten mit Relationen

  • 0 x
    91 Beiträge
    0 Hilfreiche Beiträge
    20. 10. 2016, 09:22

    Hallo,

    ich suche eine "best-practice" für das Kopieren von Objekten, die Relationen zu anderen Objekten haben (die also mitkopiert werden müssten). Bisher war das immer sehr umständlich und damit unzuverlässig, weil das Verdoppeln z.B. eines Objektes 'Eintrag' nicht automatisch die verbundenen 'Bilder' oder 'Kategorien' berücksichtigt - was am Beispiel Kategorien ja auch nicht sinnvoll ist.

    Bevor es jetzt noch komplizierter wird einfach mal die konkrete Aufgabe:
    Meine Seite hat Einträge von Kunden.
    Ändert ein Kunde seinen Eintrag, muss dieser zunächst durch die Redaktion freigegeben werden - der bisherige Eintrag muss also bestehen bleiben.

    Für diesen Übergang benötige ich also eine Kopie, die durch Freigabe das Original ersetzt.
    Die zugeordneten Bilder und Kategorien können sich in dieser neuen Version ebenfalls ändern, das heißt der Kunde kann Bilder gelöscht oder neue hinzugefügt haben. Und der Eintrag sollte auch durch eine eindeutige ID erreichbar sein, die sich nach Aktualisierung nicht ändern darf.

    In der alten Seite (kein Extbase) haben wir den Kopien, solange sie ein nicht freigegebenes Duplikat war, einfach eine negative ID gegeben (und für verknüpfte Bilder ebenso) - es gab also immer eine klare ID, die immer eindeutig blieb. Das ist aber sicher nicht der beste Weg und nach meiner Extbasekenntnis dort auch nicht möglich.

    Ich hoffe, ich habe mein Problem halbwegs verständlich beschrieben.
    Da die Änderungen durch FE_USER geschehen, scheint mir jeder Ansatz über die Versionierung von TYPO3 auch nicht sinnvoll.

    Gruß vom rhein

    Stefan

    40236


  • 1
  • froemken froemken
    Jedi-Ratsmitglied
    0 x
    811 Beiträge
    1 Hilfreiche Beiträge
    25. 10. 2016, 08:57

    Hallo Stefan,

    egal wie, aber ich würde mich durch das Versioning durchbeißen. Ich rede noch nicht mal von Workspaces, sondern nur von der Extension "version". Die kann man ja auch autark installieren.
    Der DataHandler kommt mit der Methode "versionizeRecord" daher. Diese erwartet die UID des Originaldatensatzes, den Tabellennamen und ein beschreibendes Label. Die ganze Kopierarbeit wird für Dich erledigt. Jedoch nicht auf Model-Ebene, sondern auf Datensatz-Ebene. Die Redaktion, hoffentlich Backend-User, können sich dann den neuen Datensatz direkt im Listenmodul anzeigen lassen. Auch hier wird intern mit negativen pids gearbeitet. Es ist also schon alles da.

  • 0 x
    91 Beiträge
    0 Hilfreiche Beiträge
    03. 11. 2016, 10:03

    Hallo,

    sorry, dass ich mich erst so spät melde - die Benachrichtigung hat wohl nicht funktioniert.

    Das klingt sehr ermutigend und vernünftig, ich werde diesen Weg mal einschlagen.

    Die Redaktion ist BE-User, klar.

    Vielen Dank & Gruß vom Rhein

    Stefan

    40236

  • 0 x
    91 Beiträge
    0 Hilfreiche Beiträge
    05. 12. 2016, 21:31

    So, nun komme ich endlich dazu das umzusetzen.

    Die Daten sollen zwar vom BE-User freigegeben werden, der Kopiervorgang muss ja aber durch den FE-User ausgelöst werden.

    Hier [url]http://blog.marcdesign.ch/2015/05/27/typo3-extbase-objekte-kopieren/#comments[/url] wird ja ganz schön beschrieben, wie man den DataHandler, der ja einen BE-User voraussetzt mit einem simulierten BE-User zum Kopieren nutzen kann.

    Bei mir klappt das allerdings nur, wenn ich meinem BE-User Adminrechte gebe, was natürlich nicht sein darf.

    Ich habe mich am _cli_lowlevel-Nutzer orientiert, der ja auch nur ein 'rechtsfreier' BE_Dummy ist, wenn ich das richtig verstanden habe.
    Aber das Log sagt mir dann nur: "Attempt to modify table 'tx_xxx_domain_model_entries' without permission (msg#1.2.1)"

    Wenn es damit läuft, sollte ja auch die Arbeit mit versionizeRecord gelingen.

    40236

  • 1