Backend_Layouts und Benutzerrechte

Bevor ich es wieder vergesse.
Beim erstellen von Backend_layouts kann es manchmal ganz nützlich sein, wenn Redakteure nicht alle Bereiche bearbeiten können.
Als Beispiel haben wir ein Backend_layout mit den Feldern „Bühne“ (colPos 10), „Links“ (colPos 20), „Rechts“ (colPos 30) und „Footer“ (colPos 40).

soll ein Redakteur nun keinen Zugriff bzw. keine Berechtigung für die Bühne haben. Kann man im Gruppen TsConfig Feld folgende Eintragung machen.


page.mod.SHARED.colPos_list= 20,30,40

Nun gibt es für den Redakteur nur den Hinweis „Keine Bearbeitungsrechte“ anstelle der Bühne.

Besten Dank an Thomas Rawiel für den Hinweis 🙂

Gridelements bei Update zerschossen

Ich war gerade dabei ein TYPO3 Update von einer 4.5 Version auf TYPO3 6.2 zu machen, da hat sich dann einfahc mal Gridelements verabschiedet.
Alle Content-Elemente folgen lose auf der Webseite herum und es gab keine Zuordnunge mehr zu den Rasterlementen.

Wer lesen kann ist klar im Vorteil, wie ich raus finden musste … steht sogar im Manual von Gridelements, drauf geachtet habe ich beim Update jedoch nicht.

Important note about the colPos field!

The colPos field of the tt_content table will be changed from unsigned int(3) to smallint(6) to enable the usage of negative values. This should never be reverted by any upgrade script later on! Otherwise any child element will be moved from it’s parent container to the default page column. Some people ran into problems during automatic upgrades done by their providers. So be sure to make a backup of your content before upgrading!

Die Lösungen habe ich dann, Gott sei Dank, auf dieser Seite gefunden.

Die dort gezeigte Lösung macht ein Backup der colPos mit folgendem Befehl. (Gut das ich die Original DB noch hatte und lokal schnell in xampp importieren konnte)


SELECT
CONCAT('UPDATE tt_content set colPos=',colPos,' where uid=',uid,' limit 1;')
FROM
tt_content
ORDER BY
uid;

Danach das Ergebnis exporrtieren und die die Ausgabe so anpassen, das wir nur noch Zeilen wie in diesem Beispiel haben:


UPDATE tt_content set colPos=0 where uid=1 limit 1;
UPDATE tt_content set colPos=-1 where uid=8 limit 1;
UPDATE tt_content set colPos=-2 where uid=12 limit 1;

Und alles sieht wieder schicki aus 😀

Danke an Christian Wolfram für das posten dieses Beitrags

Remove PHP Closing Tags – Shell Script

find . -type d \( -path ./typo3/contrib/idna -o -path ./typo3/contrib/pear -o -path ./typo3/sysext/adodb/adodb -o -path ./typo3/sysext/openid/lib/php-openid -o -path ./typo3/sysext/openid/lib/php-openid/Auth \) -prune -o -name '*.php' -print | while read FILE; do tail -n1 $FILE | grep '^?>$' && sed -i '$ d' $FILE; done

find . -type f -name \*.php | while read FILE; do tail -n1 $FILE | grep '^$' && sed -i '$ d' $FILE; done

find . -type f -name \*.php | while read FILE; do tail -n1 $FILE | grep '^$' && sed -i '$ d' $FILE; done

find . -type f -name \*.php | while read FILE; do tail -n1 $FILE | grep '^$' && sed -i '$ d' $FILE; done

By Christian Kuhn
Quelle: forge.typo3.org

P.S.
Anpassung für OSX


.. sed -i '' ..

hinter dem sed -i LEERZEICHEN “

Quelle:
http://stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x

Neues Spielzeug: VIM

Habe gerade für mich VIm endeckt und bin gerade fleißig am sammeln von howTo’S, Hinweise und Tipps aller Art.

Um Augenkrebs zuverhindern ist es bei :syntax on ganz gut mal das colorscheme zu tauschen.

Bei code-bude.net habe ich dann die für mich passenden Hinweise gefunden.

Eingabe von

:colo und dann die Tastem CTRL+d um alle installiert colorschemes anzuzeigen.
danach eines aussuchen.

Bei http://vimcolors.com/ oder http://cocopon.me/app/vim-color-gallery/ findet man auch viele fertige Schemes die sich dann auch einbinden lassen

z.B.

Put monokai.vim file in your ~/.vim/colors/ directory and add the following line to your ~/.vimrc:

syntax enable
colorscheme monokai

TYPO3 Trusted Hosts Pattern + CronJobs

Mit der Einführung des Sicherheitsfeature „Trusted Hosts Pattern“ im letzten TYPO3 Update, gab es bei mir leider ein paar Probleme mit alten CronJobs. z.B. einer alten Version von direct_mail und einer selbst geschriebenenen Script was per CronJob aufgerufen wird.
In meinem Fall half es in dem Script was per CronJob aufgerufen wird die Constante „TYPO3_cliMode“ zu definieren.


define('TYPO3_cliMode', TRUE);

TYPO3 Image mit HTML5 Data Atribute

Gerade gefunden und es geht hoffentlich nciht mehr verloren :

<f:image additionalAttributes="{data-imagefullsize: '{f:uri.image(src: \'uploads/tx_gallery/{image.image}\')}'}" src="uploads/tx_gallery/{image.image}" title="{image.caption}" alt="{image.caption}" maxWidth="{settings.largeImageMaxWidth}" maxHeight="{settings.largeImageMaxHeight}" />

Code im Forge gefunden

Wrappe n-Elemente mit TYPO3 Fluid Viewhelper

Problem: wir haben 12 Elemente einer Extension und alle 2 Elemente sollen in ein extra div gewrappt werden. Bis jetzt habe ich leider nichts fertiges dafür bei den ViewHelpern gefunden. Daher habe ich es versucht folgendermaßen um zusetzen. Zuerst wird ein öffnendes Div geschrieben, dann zum Schluss ein schließendes. Im Div selbst fragen wir wir ab die Anzahl des Elements ab und schreiben dann ein schließendes und ein öffnendes div-Tag. In Code sieht es dann auch schon so aus.

{f:if(condition: iter.isFirst, then: '
<div>')}
{listRow.value}
{f:if(condition: iter.isLast, then: '</div>
')}

Als erstes die f:for each Schleife, hier speichern wir in der Variable „iter“ alle Iterations Informationen, das können folgende sein:

iteration (string, optional): The name of the variable to store iteration information (index, cycle, isFirst, isLast, isEven, isOdd) Quelle: docs.typo3.org

Damit nicht leere tags dastehen, schreiben wir das öffnende und schließende Tag mit einer If Abfrage.

Mit Hilfe der Iterations Info cycle und Modulo können wir nun errechnen wann immer unsere zwei(oder 3,4) Elemente durchlaufen sind um das schließende und öffnende Div Tag zu schreiben.

{f:if(condition: iter.isLast, else: '<div>')}

Die Idee ist einfach if (Element % 2 == 0 AND nicht das letzte Elment) dann schreibe

'<div>'.

Leider habe ich es nicht hinbekommen die Schreibweise eins zu eins zu übernehmen. Die Condition Modulo 2 konnte ich nicht fragen ob Sie null ist, daher habe ich frage ich oben eigentlich ob es null ist und nutze dann nur den else Zweig um die logische UND Verknüpfung in einer neuen IF Abfrage unter zubringen, Auch hier nutze ich nur den Else Zweig. Wenn ich nicht Abfrage ob isLast == 0 ist, kann es bei z.B. genau zwei Elementen zu einem leeren DIV tag kommen.

</div>

Also der Code noch mal kompett:


{f:if(condition: iter.isFirst, then: '</code>
<div>')}
{listRow.value}


{f:if(condition: iter.isLast, else: '</div>
<div>')}


{f:if(condition: iter.isLast, then: '</div>
')}

Chrome Remote Debugging

Wenn man Webseiten baut sind Tools wie die Chrome DevTools oder Firebug kaum wegzudenken. Im Mobile Bereich ist es immernoch ein wenig schwierig, wenn man allerdings Chroome installieren kann sieht es schon wieder ETWAS besser aus.

Voraussetzung ist das Android SDK, welches man hier herunterladen kann:
http://developer.android.com/sdk/index.html

Danach auf dem Mobile Geräte in Chrome unter

Einstellungen > Entwickler-Tools > „Web-Debugging wie USB aktvieren“ anklicken, danach Geräte per USB anschliessen.

jetzt per Commandline/Terminal zur adb(.exe) navigieren und einfach schon mal mit

adb devices

testen ob das Geräte gefunden wird.

Danach schreiben wir folgendes

adb forward tcp:9222 localabstract:chrome_devtools_remote

jetzt Mobile Chrome starten und die zu debuggende Seite aufrufen. Lokal rufen wir dann im Chrome die

http://localhost:9222

auf und legen los.

Quelle:
https://developers.google.com/chrome/mobile/docs/debugging

XAMPP unter Mac OS X

Wenn man mal mit MacOS X und xampp arbeiten muss hier ein Tipp von crashsource.de der mir gerade sehr geholfen hat.

Um diesen Problem mit den Zugriffsrechten aus dem Weg zu gehen sind folgende Änderungen in der /Applications/XAMPP/etc/httpd.conf notwendig:

DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs" 

ändern in

DocumentRoot "/Users/USERNAME/Documents/htdocs"

Directory …

<Directory "/Applications/XAMPP/xamppfiles/htdocs">

ändern in

<Directory "/User/USERNAME/Documents/htdocs"> 

und

<IfModule !mpm_netware_module>
    User nobody
    Group nogroup
</IfModule> 

ändern in

<IfModule !mpm_netware_module>
    User USERNAME
    Group nogroup
 </IfModule> </blockquote>

nochmal vielen Dank an crashsource.de für den Hinweis