TYPO3 8 Debuggen

        $queryParser = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbQueryParser::class);
        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($queryParser->convertQueryToDoctrineQueryBuilder($query)->getSQL());

        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($queryParser->convertQueryToDoctrineQueryBuilder($query)->getParameters());

gefunden hier

Autovervollständigung für TYPO3 Viewhelper in PhpStorm durch selbsterstellte XSD Schema Dateien

PhpStorm ist mittlerweile auch bei mir zum Standard bei Programmiersachen geworden.
Das ein große Killerfeature finde ich gibt es nicht, jedoch gibt es sehr viele Kleinigkeiten, welche das Programmieren sehr viel angenehmer machen.

Für die Autovervollständigung für Viewhelper muss man allerdings etwas nachhelfen.
Nachdem ich mir die Artikel bei Helmut Hummel [1,2] durchgelesen haben und alles eingerichtet hatte war es ein schönes arbeiten mit den Standard TYPO3 Viewhelpern.
Doch was tun wenn man eigene Viewhelper hat? Wie erstellt man die dafür notwendigen Dateien?
Wieder gibt Helmut Hummel die Antwort 🙂 mit seiner Extension typo3_console

Mit dieser kann man wunderbar neue XSD Dateien anlegen, solche die auch Claus Due bei seinen VHS Viewhelpern mit anbietet.

Nach der Installation von typo3_console also ab auf die CommandLine und folgendes eintippern:

 php7-70LATEST-CLI typo3cms documentation:generatexsd --php-namespace="SvenJuergens\SjViewhelpers\ViewHelpers" > SjViewhelpers.xsd

Weitere Optionen in der Doku von typo3_console

Datei lokal speichern und beim einbinden in der Template Datei, wie z.B. hier:

<html data-namespace-typo3-fluid="true"
      xmlns:f="http://xsd.helmut-hummel.de/ns/TYPO3/CMS/Fluid/ViewHelpers"
      xmlns:sj="http://typo3.org/ns/SvenJuergens/SjViewhelpers/ViewHelpers"
>
...

</html>

mit dem MouseCursor auf die Zeile klicken und dann ALT + Enter (wie bei Helmut beschrieben) und dann „Manually setup external ressource“.
Lokal die Datei suchen und auswählen, fertig.!

[1]
http://insight.helhum.io/post/85031122475/xml-schema-auto-completion-in-phpstorm

[2]
http://insight.helhum.io/post/130270697975/updated-fluid-schema-urls

TYPO3 7.x bring back the [REF] in Listview

In TYPO3 6.x gab es in der Liste immer die „Ref.“ Spalte neben den Datensätzen.
ich fand die ziemlich praktisch, da man immer sehen könnte, wie oft bereits referenziert wurde.

In TYPO3 7 ist er irgendwie verschwunden und stattdessen gibt es die neue Spalte „Beschreibung“.

Wenn man nun die Referenzen Anzeige zurück haben möchte muss man ins Seiten TSConfig der Rootpage folgendes eintragen.


mod.web_list {
showClipControlPanelsDespiteOfCMlayers = 1
}

Bzw. wenn es nur auf Benutzer oder eine Benutzergruppe reduzieren möchte, dann folgendes ins TSConfig Feld des Users oder der Gruppe


page.mod.web_list {
showClipControlPanelsDespiteOfCMlayers = 1
}

Warum ist das so?
Es gibt intern eine Abfrage die die Option _REF_ nur aktiviert wenn die Option $dblist->dontShowClipControlPanels gleich FALSE ist und um das zu erreichen, muss man die andere TS Config Option auf „true“ (also 1) setzen…

Verwirrend?
Ja, deswegen habe ich das hier noch stehen, da ich diesen Zusammenhang nächste Woche garantiert wieder vergessen habe.
Jedoch, alles „historisch gewachsen“ und dieser Zusammenhang der beiden Option ist eigentlich nicht mehr von Relevanz und wird sicher bald wieder gerade gezogen.

CORS: Access-Control-Allow-Origin für mehrere Domains und Subdomains

Damit über eine Ajax Anfrage auf eine andere Domain zugegriffen werden kann, kann man JSONP nutzen oder CORS (Cross-Origin Resource Sharing).
CORS muss allerdings auf dem anzufragenden Server jedoch konfiguriert sein und zwar muss dieser die anfragende Domain kennen und somit den Zugriff erlauben.

In einer HtAccess kann man dafür z.B. folgendes nutzen:

< IfModule mod_headers.c >
Header set Access-Control-Allow-Origin "http://foo.example.com"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
< /IfModule >

Nun darf die Subdomain die Ajax Anfrage stellen und bekommt auch eine Antwort zurück, alternativ kann auch ein „*“ statt der Domain gesetzt werden, dann ist allen der Zugriff erlaubt.

Wenn jedoch nur einige Domains oder Subdomains drauf zugreifen sollen wird es etwas schwieriger, denn in den Spezifikationen ist das nicht weiter vorgesehen.
Es wird jedoch darauf hingewiesen, dass man den Anfragen gegen eine Whitelist gegen checkt und dann den Header für genau diese Domain setzt.

Mit Hilfe einiger StackOverflow Beiträge wie zum Beispiel diesem hier Access-Control-Allow-Origin Multiple Origin Domains?, konnte ich mir dann was zusammenstellen.

Bisher funktioniert bei mir folgendes sehr gut:


< IfModule mod_headers.c >
# Setzt den "Access-Control-Allow-Origin" Tag für http(s) und alle SubDomains (inkl. www) der aufgeführten Domains
SetEnvIf Origin "http(s)?://([a-z0-9]*\.)?(example.de|domain1.de|domain.pl|example.ro|foo.com)$" AccessControlAllowOrigin=$0$1
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
< /IfModule >

Kleine Notiz: die SubDomains sind auf Buchstaben und Zahlen beschränkt, z.B. abc123.example.de für akzeptiert werden, nicht jedoch abc.xyz.example.de

Falls man doch die regular expression(RegEx, RegExp) anpassen oder erweitern möchte, lohnt sich ein Blick auf http://regexr.com/ zu werfen.

P.S. Leerzeichen bei den spitzen Klammern entfernen

TYPO3: Fehlerausgabe in Version 7.6

TYPO3 hat ein tolles neues Feature.
Exceptions werden nicht mehr im Content ausgegeben, sonder nur für jenes Inhaltselement sowas wie

Oops, an error occurred! Code: 2015112412044407ef2354

In einem Testsystem macht das natürlich wenig Sinn.
So gibt es nun 2 Möglichkeiten die Fehlerausgabe wieder zu reaktivieren.

1.) Über die .htaccess Datei

Die folgende Zeile auskommentieren (also # entfernen)
#RewriteRule .? - [E=TYPO3_CONTEXT:Development]

Damit wird der Context auf Development gesetzt, was intern an verschiedenen Stellen abgefragt wird, daher ist zu empfehlen es wirklich auch nur in Testsystem zu nutzen.

2.) Über TypoScript
Es muss im TypoScript, am besten das HauptTemplate die Eigenschaft gesetzt werden

config.contentObjectExceptionHandler = 0

mehr dazu in der Doku von TYPO3

Happy Coding

vim colorscheme aus einem anderen Ordner

Ich habe gerade versucht bei meinem Hoster die Einstellungen für vim anzupassen.
Zugang zu vimrc habe ich, jedoch nicht zum vim/colors Ordner.

Hier habe ich nun nach eine Möglichkeit gesucht, einen anderen Ort zu definieren, wo ich die colorschemes ablegen kann und bin hier fündig geworden :
Coderwall.com | portable vim configuration via dropbox

In der vimrc kann man nun folgendes eintragen:


set runtimepath+=~/Dropbox/vim
source ~/Dropbox/vim/vimrc.vim

oder für meinen Fall hat auch erstmal folgendes gereicht


set runtimepath+=~/files/vim
syntax enable
colorscheme monokai

In dem Ordern files/vim/colors/ kann ich nun colorschemes hinterlegen und auf diese verweisen 🙂

Da macht das arbeiten mit Vim remote wieder doppelt so viel Spass.

Vielen Dank an coderwall.com für den Hinweis