Rechtevergabe für Ordner und Dateien

gerade gebraucht und bei oliver-thiele.de gefunden (vielen dank dafür)

find -type d -print0 | xargs -0 chmod 755 && find -type f -print0 | xargs -0 chmod 644

# Empfohlen bei TYPO3:
find -type d -print0 | xargs -0 chmod 2770 && find -type f -print0 | xargs -0 chmod 0660

# Bei Mittwald:
find -type d -print0 | xargs -0 chmod 2775 && find -type f -print0 | xargs -0 chmod 0664

Jumping directories with z

habe gerade diesen Artikel gefunden und bin begeistert:
jumping directories with z

z ist ein nettes kleines Tool, was das leben in der Console ein bisschen einfacher macht 🙂
um z bei Mittwald einzubinden:

Step 1:
im /files/ Ordner einfach ein
git clone https://github.com/rupa/z.git

nun editieren wir die Datei :
/etc/bash/profile

und fügen folgendes ein:


. /files/z/z.sh
export _Z_DATA="/files/z/.z-history"

mit der zweiten Zeile verlegen wir nur die z- Datenbank nach /files/z/.z-history default ist ~/z

und dann kann es auch schon los gehen, einfach ein paar Ordner aufrufen und danach mit z foo die Autovervollständigung von z aufrufen

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