Zum Inhalt springen

bestehende Extension um Feld Zugriff erweitern

Erstellt am 28. Februar 2012 · 4 Antworten · letzte Antwort am 19. März 2012

Tags: TCA, Frage

redbug ·

Hallo TYPO3ler,

ich hoffe ihr könnt mir weiterhelfen...

Es geht um bereits bestehnde Extensions wie z.B.:
dmmjobcontrol, wec_staffdirectory etc.

diese sollten das Feld "Zugriff" bekommen damit ich den Zugriff auf TYPO3 FE-User steuern kann.

Bei manchen Extensions wie ab_downloads ist dies integriert, bei manchen Extensions fehlt dies doch 🙁
Ist es möglich eine bestehende Extension mit einer eigenen Extension um dieses Feld zu erweitern oder muss man dazu in den Core der Extension eingreifen? Dies würde ich natürlich sehr sehr ungern machen!!

VG

redbug

zugriff.png

karlchen ·

Hallo,

ja man kann fast alle Sachen an fremden Extensions anpassen ohne direkt in den Core der Extensions einzugreifen.
Mit dem Kickstarter eine neue Extension erstellen, die Option "Extend existing Tables" nutzen, damit kannst du weitere DB Felder zu der bestehenden Extensions hinzufügen, dann kann in der ext_tables.php in der neuen Extension die Konfiguration geladen und manipuliert werden.

Im Anhang mal eine Text-Extension die dmmjobcontrol's Datensatz "JobControl: Stelle" um ein DB-Feld erweitert was im Backend die Funktion vom Zugriffsfeld hat, der nächste Schritt ist dann allerdings in diesem Fall von Extension zu Extension verschieden.

Da es hierbei um eine Zugriffsbeschränkung für die Datensätze handelt, müssen auch die Datenbank Anfragen angepasst werden, die Zugriffsfelder werden über üblicherweise über die TYPO3 Funktion

$this->cObj->enableFields('table')

der Where Clausel der DB Abfrage hinzugefügt.
Wenn die Extension das bereits nutzt, sollte es sofort funktionieren, an sonsten wirst du die Extension class eventuell mit dem XCLASS verfahren anpassen müssen. In TYPO3 kann man mit diesem Verfahren, bestimmte Funktionen einer Klasse überschreiben, also den eigenen Vorstellungen anpassen. Dafür gibt es auch viele gute Tutorials im Netz, ab und an bieten die Extensions jedoch auch HOOKS an, damit kann auch eigener Code an bestimmten Stellen in der Extension integriert werden. Einige Authoren verwalten ihre Extensions auch unter forge.typo3.org, dort kann man den Author anschreiben und in Zusammenarbeit mit Ihm auch die Extensions erweitern und Fehlende Features integrieren oder Bugs fixen.

Um mal zum Ende zu kommen, ja, man kann fremde Extensions anpassen ohne direkt die Datein zu bearbeiten, jedoch ist es nicht immer ganz einfach.

test.zip
7kB
redbug ·

Hallo Karlchen,

vielen Dank für deine super Anleitung und deine Demo-Extension!

ich hatte es mittlerweile doch mit der Änderung der Core-Dateien gemacht - und zwar nach dieser Anleitung .
Ich muss aber noch eine weitere Extension anpassen und werde hier dein Vorschlag ausprobieren!

Das mit dem XCLASS-Verfahren kannte ich bis jetzt noch nicht und werde mich hier mal schalu machen. Wenn du hier u.U. auch noch ein paar gute Tutorials kennst bin ich dafür natürlcih dankbar!

Ein weiteres Problem bei der Job-Extension war , dass die Funktion

$this->cObj->enableFields('table')

leider nicht intergiert war.

Gruß

redbug

karlchen ·

Hallo redbug,

ja, wenn du Extension Core Dateien anpasst, solltest du nur immer aufpassen, das Sie bei einem Update nciht überschrieben werden, bzw. wenn es weitere Admins in dem System gibt, diese nciht das überschreiben auslösen.

Eine ganz gute Anleitung hier noch zu den XCLASS Sachen:
http://www.npostnik.de/typo3/extension-per-xclass-erweitern-tipafriend/

Noch eine Erwähnung zur XCLASS Nutzung, die man im Hinterkopf behalten sollte. Mit XCLASS "überschreibt" man sozusagen eine Datei, wenn TYPO3 ein Klasse einbindet, schaut es vorher ob es den Namen der Klasse noch mit einem "ux_" davor gibt, wenn ja wird diese genutzt. JEDOCH funktioniert das nur einmal, sprich wenn bereits eine andere Extension, die benötigte Extension xclass'ed, wird deine, da Sie später eingebunden wurde, alles vorherige gexclassed aushebeln.

P.S.
was mri noch einfällt, wenn man eine Extension wirklich mal ändern muss, dann kann man in der ext_emconf.php Datei den Status der Extension ändern, um diese vor versehentlichen Updates zu schützen.

Sieht dann in etwa so aus:

//	'state' => 'stable',
        'state' => 'excludeFromUpdates',
redbug ·

Hallo Karlchen,

karlchen schrieb

ja, wenn du Extension Core Dateien anpasst, solltest du nur immer aufpassen, das Sie bei einem Update nciht überschrieben werden, bzw. wenn es weitere Admins in dem System gibt, diese nciht das überschreiben auslösen.

dessen bin ich mir bewusst 🙂

karlchen schrieb

Eine ganz gute Anleitung hier noch zu den XCLASS Sachen:
http://www.npostnik.de/typo3/extension-per-xclass-erweitern-tipafriend/

super vielen Dank

karlchen schrieb

P.S.
was mri noch einfällt, wenn man eine Extension wirklich mal ändern muss, dann kann man in der ext_emconf.php Datei den Status der Extension ändern, um diese vor versehentlichen Updates zu schützen.

Sieht dann in etwa so aus:

//	'state' => 'stable',
        'state' => 'excludeFromUpdates',

genial, werde ich gleich umsetzen!!

Vielen Dank

redbug