Hallo Robert.
Ich verwende das TCEmain häufig in CLIs bei Import-Scripten. In einem BE-Modul
habe ich das noch nicht verwendet. Ich wüsste deshalb auch auf die Schnelle
keinen Ansatz wie ich das in ein GUI verpacken sollte und das anschließend dann
abarbeiten.
Wie gesagt, das TCEmain hat im Backend den Vorteil, dass es dir eine ganze
Menge an Sortierlogik abnimmt. Wenn du zwei Datensätze anlegen möchtest wobei
der erste auf den zweiten referenziert, dann musst du die in der richtigen
Reihenfolge anlegen, die passende Auto-Increment-IDs aus der Datenbank
abfragen, und in den nächsten Query an der richtigen Stelle einbauen. Das spart
man sich komplett weil das TCEmain Referenzen auch zu neuen Objekten versteht
und selbst auflöst.
Weiterhin passiert hier recht viel TCA-Validierung. Wenn ein beschreibbares
Feld im TCA als File definiert ist dann wird das was das TCEmain in seinem
Start-Attribut zu sehen bekommt als Quell-Dateipfad interpretiert. Das
process_datamap() wird dann automatisch eine zum TCA passende Dateikopie in den
Zielordner legen, wenn der Dateiname überhaupt ein erlaubter Wert laut TCA ist.
Und außerdem werden natürlich die Berechtigungen des jeweils agierenden
Benutzers angewendet, wenn der den Datensatz nicht bearbeiten darf darf er ihn
nicht bearbeiten.
Nicht falsch verstehen: Wenn es ein schönes, geiles GUI werden soll ist
vermutlich ein Extbase-Modul mit Fluid hier die richtige Anlaufstellen. Und
solange es nur ein einzelner Record ist, ist ein anständiges Model mit einem
anständigen Repository trotzdem noch die schönere Variante. Bei Processing von
vielen Daten oder wenn du Struktur abbilden willst die ein Extbase-Model
normalerweise gar nicht kann ("pages -> is followup sibling of", keine Ahnung
wie man die "hiernach einfügen"-Situation intern nennt), oder aber eben wenn du
potenziell die BE-Berechtigungen des aktuellen Benutzers mit angewendet haben
möchtest, dann ist das TCEmain einfach die mächtigere Variante.
Am leichtesten tust du dir, wenn du einen Breakpoint in die Methode
t3lib_TCEmain::start() machst und dann über den Standard-Pagetree eine kleine,
überschaubare Seitenhierarchie kopierst. Ich würde es mit vier Seiten auf drei
Ebenen versuchen, damit hast du Kinder, Kindeskinder, Eltern und Geschwister
abgedeckt. Aus dem Parameter der Methode kannst du dann sicher ableiten, wie
dein Prozess das abbilden soll. Nachdem es deine Anforderung ja schon 1:1 so im
TYPO3-Backend als GUI-Bestandteil des Pagetrees gibt dürfte das nicht allzu
schwer sein.
Lediglich die Frage wie du das in einem eigenen Modul unterbringst und ein
eigenes, sinnvolles GUI dazu machst musst du noch lösen. Die Module die ich
bisher gebaut habe verwenden den Pagetree lediglich um die Page-ID an das Modul
zu übergeben. Damit interagieren, insbesondere ein schönes Drag-n-Drop-GUI
basteln das den Pagetree als Drop-Zone verwendet musste ich bislang noch gar
nicht.
Den Pagetree neu zu laden ist dann wieder recht einfach. Du willst vermutlich
einfach "Ext.ComponentMgr.get('typo3-pagetree').refresh();" ausführen.
Gruß,
Stephan Schuler
Web-Entwickler
Telefon: +49 (911) 539909 - 0
E-Mail: [email protected]
Website: media.netlogix.de
-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Robert Wildling
Gesendet: Mittwoch, 18. September 2013 09:15
An: [email protected]
Betreff: [TYPO3-german] Re: Welche DE-Funktion ist bei INSERT / UPDATE für die
sorting-Nummer zuständig?
Hallo, Stephan,
Danke für diese tollen Infos!!
Ich soll ein BE-Modul entwickeln, dass einen gewissen Teil des Seitenbaums
kopiert (ein Template sozusagen, wo eine gewissen Seitenstruktur für eine
Subdomain bereits vorgegeben ist).
Dabei soll man den Zielort auswählen können, indem man eine Page wählt und dann
"davor" oder "danach" definiert.
In weiterer Folge sollen auch automatisch Gruppenrechte und User angelegt
werden, aber vorerst mal sind die wichtigesten Funktionen, die ich suche, das
rekursive kopieren eines Teils eines PageTrees und das einfügen an neuer Stelle
mit den Optionen davor oder danach.
Mit dem Speichern sollte dann auch noch die neu angelegte Seite aufgerufen
werden, wobei auch der PageTree aktualisiert werden soll...
Ich muss dazu sagen: ich habe noch nie ein BE-Modul gebaut, deswegen war das
sorting-Problem mein erster Ansatz.
Hast du so etwas (ähnliches) schon mal gelöst? Kennst du eine Extension, wo man
sich etwas ablernen kann?
Danke jedenfalls nochmals!
Beste Grüße!
Robert
> Hallo Robert.
>
>
> Ich hatte bis eben keine Ahnung wo genau die Funktion liegt. Etwa vier
> Minuten lang habe ich mich deshalb durch den Core gesucht.
>
> 1: Volltextsuche nach "sorting".
> 2: Neben diversen anderen auch zwei Treffer im TCEMain -- da habe ich das
> erwartet.
> 3: "sorting" ist zwar noch nicht der richtige Ort, kurzes
> hoch-runter-scrollen hat mich aber auf "$sortRow" gebracht.
>
> Die Methoden die du vermutlich suchst:
> * t3lib_TCEmain::getSortNumber()
> * t3lib_TCEmain::resorting()
>
> Wobei ich auf Anhieb nicht wüsste, wozu genau man das brauchen könnte. Alles
> notwendige wird von t3lib_TCEmain::process_datamap() erledigt. Und nachdem so
> Dinge wie Berechtigungsprüfung und das Auflösen von Relationen ja ohnehin das
> process_datamap() erfordern gibt s auch keinen Grund, Records nachträglich
> neu sortieren zu wollen.
>
>
> Gruß,
> Stephan.
>
>
> Stephan Schuler
> Web-Entwickler
>
> Telefon: +49 (911) 539909 - 0
> E-Mail: [email protected]
> Website: media.netlogix.de
>
>
>
> --
> netlogix GmbH & Co. KG
> IT-Services | IT-Training | Media
> Neuwieder Straße 10 | 90411 Nürnberg
> Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
> E-Mail: [email protected] | Internet: http://www.netlogix.de
>
> netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA
> 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH
> (HRB 20634)
> Umsatzsteuer-Identifikationsnummer: DE 233472254
> Geschäftsführer: Stefan Buchta, Matthias Schmidt
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: [email protected]
> [mailto:[email protected]] Im Auftrag von Robert
> Wildling
> Gesendet: Dienstag, 17. September 2013 16:43
> An: [email protected]
> Betreff: [TYPO3-german] Welche DE-Funktion ist bei INSERT / UPDATE für die
> sorting-Nummer zuständig?
>
> Hallo, liebe TYPO3ler,
>
> Ich bin schon länger auf der Suche nach der (BE?)-Funktion, die beim Einfügen
> vonneuen Seiten (pages) für die Generierung der Sorting-Nummer zuständig ist.
>
> Im Zusammenhang damit suche ich auch die Funktionen, die für das "Einfügen
> vor" bzw "Einfügen nach" Seiten verantwortlich sind.
>
> Ich bin auf TYPO3 4.5 unterwegs. Wäre euch sehr für die File-Namen,
> Funkionsname oder alles andere, dankbar!
>
> Liebe Grüße!
> Robert
> _______________________________________________
> TYPO3-german mailing list
> [email protected]
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
_______________________________________________
TYPO3-german mailing list
[email protected]
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
[email protected]
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german