TYPO3 9 class für UL im ckeditor

in TYPO3 8 funktioniert bisher folgende Erweiterung der lib.parsefunc_RTE um dem ListenElement eine CSS Class mit geben zu können.

lib.parseFunc_RTE {
externalBlocks {
ul.stripNL = 1
ul.callRecursive = 1
ul.callRecursive.tagStdWrap.HTMLparser = 1
ul.callRecursive.tagStdWrap.HTMLparser.tags.ul {
fixAttrib.class.default = rteContentList
}
}
}

Allerdings gibt es jetzt in TYPO3 9 Probleme damit, es sieht ungefähr so aus:

<ul>
	<p></p>
	<li>...</li>
	<li>...</li>
	<li>...</li>
	<p><p>
</ul>	

das scheint im Moment zu funktionieren:

lib.parseFunc_RTE.externalBlocks.ul.stdWrap{
  HTMLparser = 1
  HTMLparser {
    tags.ul.fixAttrib.class {
      default = rteContentList
      always = 1
      list = rteContentList
    }
    keepNonMatchedTags = 1
  }
}

es ist in etwa gleich.

[globalVar = GP:L = 1] mit TYPO3 9 und SiteHandling

Wenn man in TYPO3 9 das Sitehandling nutzt werden die „alten“ Conditions zu den SprachIds nicht mehr funktionieren.

Allerdings wie hier zu lesen: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/SiteHandling/UseSiteInConditions.html#sitehandling-inconditions

kann man direkt die SiteConfiguration in TypoScript Conditions abfragen aus 

[globalVar = GP:L = 1]

wird also 

[siteLanguage("languageId") == "1"]

bring back the bodytext class

Gerade wenn man nach Jahren der Nutzung TYPO3 Seiten updatet kann es vorkommen, das die alten Seiten CSS Anpassungen für p.bodytext hatten.
Gerade jetzt mit TYPO3 9.5, wo es kein CSS Styled Content mehr gibt und man auf FluidStyledContent wechseln muss, fehlt einem die Class.

Im Internet findet jedoch recht schnell eine Lösung dafür, da es früher schon Anfragen gab wie man die Class entfernen kann. Genau da können wir jetzt allerdings die Class auch wieder hinzufügen 🙂

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class = bodytext

pi1 to Controller

Damit auch für piBased Extensions namespaces genutzt werden können, muss die pi1  in den Classes/Controller/ Ordner verschoben und umbenannt werden. Damit die Extension dann noch weiter läuft muss natürlich die composer.json angepasst werden:

"autoload": {
"psr-4": {
"VendorName\MyExtension\": "Classes"
}
},

Des Weiteren muss natürlich noch das TypoScript angepasst werden damit TYPO3 nun weiß welche Datei es aufrufen soll, wenn der ExtensionName auftaucht.

$overrideSetup = 'plugin.tx_rxextkey_pi1.userFunc = Reelworx\RxExtkey\Plugin->main';
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript('rx_extkey', 'setup', $overrideSetup);

Das obere Beispiel habe ich hier gefunden:

https://blog.reelworx.at/detail/howto-register-your-plugin-ce-or-module/

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