[TYPO3-german] Welche DE-Funktion ist bei INSERT / UPDATE für die sorting-Nummer zuständig?

Stephan Schuler Stephan.Schuler at netlogix.de
Wed Sep 18 10:50:11 CEST 2013


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: Stephan.Schuler at netlogix.de
Website: media.netlogix.de

-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Robert Wildling
Gesendet: Mittwoch, 18. September 2013 09:15
An: typo3-german at lists.typo3.org
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: Stephan.Schuler at netlogix.de
> 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: info at netlogix.de | 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: typo3-german-bounces at lists.typo3.org
> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Robert
> Wildling
> Gesendet: Dienstag, 17. September 2013 16:43
> An: typo3-german at lists.typo3.org
> 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
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>

_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


More information about the TYPO3-german mailing list