<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Axel Jung &#187; Typo3</title>
	<atom:link href="http://www.ajung.de/category/internet/typo3/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Mon, 03 May 2010 19:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Typo3 Plugin für Login über Facebook, Twitter und co.</title>
		<link>http://www.ajung.de/2010/04/30/typo3-plugin-fur-login-uber-facebook-twitter-und-co/</link>
		<comments>http://www.ajung.de/2010/04/30/typo3-plugin-fur-login-uber-facebook-twitter-und-co/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 19:37:36 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=609</guid>
		<description><![CDATA[Es gibt den Anbieter RPX Service von Janrain um einen einfachen Login über Facebook, Twitter, Google, Yahoo und weitere anzubieten ohne sich mit den ganzen verschiedenen Mechanismen auseinander zu setzen. Für den Login benötigt man nur den kostenlosen Account. Der Login sieht dann auf der Webseite so aus: Mit meiner neuen Typo3 Extension rpx lässt [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt den Anbieter <a href="https://rpxnow.com/">RPX Service von Janrain</a> um einen einfachen Login über Facebook, Twitter, Google, Yahoo und weitere anzubieten ohne sich mit den ganzen verschiedenen Mechanismen auseinander zu setzen. Für den Login benötigt man nur den kostenlosen Account.</p>
<p>Der Login sieht dann auf der Webseite so aus:</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2010/04/rpx.png"><img class="size-full wp-image-610 alignnone" title="rpx" src="http://www.ajung.de/wp-content/uploads/2010/04/rpx.png" alt="" width="392" height="235" /></a></p>
<p>Mit meiner neuen Typo3 Extension <a href="https://rpxnow.com/">rpx</a> lässt sich dieses Feature ganz einfach in die bestehende Typo3 Seite einbinden und ermöglicht einen Frontend Zugang zu der Seite mittels Facebook und co.</p>
<p>Die Extension besteht aus einen Frontend Plugin mit dem man das Login Fenster einbinden kann und einen AuthService der in dem Typo3 System installiert wird und parallel zu anderen Authentivizierungs Mechanismen laufen kann.</p>
<p>Die Extension benötigt nur den API Key und die RPX Domain die beim Erstellen des Accounts auf <a href="https://rpxnow.com/">https://rpxnow.com/ </a>erzeugt wird.</p>
<p>Die Extension ist zwar im Beta Stadium, wurde aber erfolgreich getestet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/04/30/typo3-plugin-fur-login-uber-facebook-twitter-und-co/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Analyse mit PHP_Depend</title>
		<link>http://www.ajung.de/2009/11/05/code-analyse-mit-php_depend/</link>
		<comments>http://www.ajung.de/2009/11/05/code-analyse-mit-php_depend/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 18:49:55 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[pear]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=544</guid>
		<description><![CDATA[Das PHP Pear Packet &#8220;PHP_Depend&#8221; eignet sich hervoragent zur Analyse der Code Qualität des eigenen PHP Projekts. Es lässt sich einfach über den Pear Installer installieren und kann dann auf der Comando Zeile über den Befehl &#8220;pdepend&#8221; aufrufen. Es wird nur PHP benötigt und kein Webserver oder Datenbank. Eine Installation unter Windows war ohne Probleme [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pdepend.org/"><img class="alignright size-full wp-image-545" title="php_depend" src="http://www.ajung.de/wp-content/uploads/2009/11/php_depend.png" alt="php_depend" width="250" height="110" /></a>Das PHP Pear Packet &#8220;<a href="http://pdepend.org/">PHP_Depend</a>&#8221; eignet sich hervoragent zur Analyse der Code Qualität des eigenen PHP Projekts. Es lässt sich einfach über den Pear Installer installieren und kann dann auf der Comando Zeile über den Befehl &#8220;pdepend&#8221; aufrufen. Es wird nur PHP benötigt und kein Webserver oder Datenbank. Eine Installation unter Windows war ohne Probleme möglich.</p>
<p>Man kann PHP_Depend über einen beliebigen Code Ordner laufen lassen und sich dabei verschiedenen Formate ausgeben lassen.</p>
<p><a href="http://clarkware.com/software/JDepend.html">JDepend</a> ist ein Format aus der JavaWelt und wohl auch für den Namen des Projektes verantwortlich</p>
<blockquote><p>JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.</p></blockquote>
<ul>
<li>&#8211;jdepend-chart=&#8230;.svg Erzeugt eine SVG Grafik die die Instabilität in Abhängigkeit zur Abstraktion anzeigt</li>
<li>&#8211; jdepend-xml=&#8230;xml Gibt diese Informationen als XML Datei aus</li>
</ul>
<p>Es gibt auch eine reine XML Ausgabe,  in der die Ergebnisse für jede einzelne Datei steht</p>
<ul>
<li>&#8211;summary-xml=&#8230;.xml</li>
</ul>
<p>Spannend ist auch die Pyramiden Darstellung</p>
<ul>
<li>&#8211;overview-pyramid=&#8230;.xml</li>
</ul>
<p><img class="alignnone size-full wp-image-559" title="pyramid" src="http://www.ajung.de/wp-content/uploads/2009/11/pyramid2.png" alt="pyramid" width="500" height="274" /></p>
<h3>@package</h3>
<p>Wenn man in seinen PHPDoc Kommentaren nicht mit dem @package Element gearbeitet hat muss man den Parameter <strong>&#8211;bad-documentation </strong>angeben. Lässt man den weg wird entweder gar nichts erzeugt oder nur für die Dateien die diesen Element besitzen. Um ordentlich mit dem Tool arbeiten zu können, sollte man @package ergänzen.</p>
<h3>Typo3 Vergleich</h3>
<p>Ich habe man den Kern von Typo3 Version 4 und 5 mit dem Tool analysiert:</p>
<p>JDepend Chart:</p>
<p>Typo3 4</p>
<p><img class="alignnone size-full wp-image-561" title="4_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/4_typo3.png" alt="4_typo3" width="402" height="252" /></p>
<p>Typo3 5</p>
<p><img class="alignnone size-full wp-image-563" title="5_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/5_typo3.png" alt="5_typo3" width="405" height="265" /></p>
<p>Überblick:</p>
<p>Typo3 4</p>
<p><img class="alignnone size-full wp-image-560" title="ov_4_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/ov_4_typo3.png" alt="ov_4_typo3" width="400" height="158" /></p>
<p>Typo3 5</p>
<p><img class="alignnone size-full wp-image-562" title="ov_5_typo3" src="http://www.ajung.de/wp-content/uploads/2009/11/ov_5_typo3.png" alt="ov_5_typo3" width="423" height="162" /></p>
<p>Aussagekräftig ist dieser Vergleich natürlich noch nicht, da Version 5 noch kaum Code enthält, aber man kann einen deutliche besseren Code erkennen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/11/05/code-analyse-mit-php_depend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ext: js_css_optimizer und t3lib_PageRenderer</title>
		<link>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/</link>
		<comments>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 18:55:40 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=539</guid>
		<description><![CDATA[In der neuen Typo3 Version 4.3 existiert eine neue Klasse t3lib_PageRenderer in der die CSS und Javascript Dateien registriert werden können. In dieser Klasse ist es vorgesehen die CSS Dateien zu bündeln und zu komprimieren. Da diese Funktionen noch nicht implementiert sind und es aber die Möglichkeit für Hooks gibt habe ich die Extension js_css_optimizer [...]]]></description>
			<content:encoded><![CDATA[<p>In der neuen Typo3 Version 4.3 existiert eine neue Klasse t3lib_PageRenderer in der die CSS und Javascript Dateien registriert werden können. In dieser Klasse ist es vorgesehen die CSS Dateien zu <strong>bündeln </strong>und zu <strong>komprimieren</strong>. Da diese Funktionen noch nicht implementiert sind und es aber die Möglichkeit für Hooks gibt habe ich die Extension <strong>js_css_optimizer </strong>erstellt, die diese Lücke füllt.</p>
<p>Die Extension registriert folgende Hooks:</p>
<ul>
<li>cssCompressHandler &#8211; zum Komprimieren der CSS Dateien</li>
<li>jsCompressHandler &#8211; zum Komprimieren der JavaScript Dateien</li>
<li>concatenateHandler &#8211; zum Bündeln der Dateien</li>
<li>clearCachePostProc &#8211; zum Löschen der gecachten Dateien im typo3temp Verzeichnis</li>
</ul>
<h3>CSS Komrpimierung</h3>
<p>Hierbei wird das Tool <a href="http://csstidy.sourceforge.net/">CSSTidy</a> verwendet.  Die Konfiguration lässt sich über den Extension Manager in Typo3 einstellen.</p>
<p><img class="alignnone size-full wp-image-540" title="js_opt" src="http://www.ajung.de/wp-content/uploads/2009/10/js_opt.png" alt="js_opt" width="336" height="347" /></p>
<p>Die CSS Datei wird in einem neuen Verzeichnis abgelegt. Die Extension versucht dabei die relativen Pfade in der CSS Datei auf Bilder um zuschreiben. Hier ist eventuell noch Anpassungbedarf.</p>
<p>Damit die CSS Datei komprimiert wird muss folgender Typo Script Code ergänzt werden:</p>
<pre>page {
includeCSS {
 screenStyle = ..../base.css
 screenStyle {
   media = screen
   import = 0
   <span style="color: #ff0000;">compress=1</span>
 }</pre>
<h3>JavaScript Komprimierung</h3>
<p>Für das JavaScript wird die <a href="http://www.crockford.com/javascript/jsmin.html">JSMin</a> Klasse aus dem Typo3 Core verwendet. Es wird nicht die t3lib::minify&#8230; verwendet, da diese nicht so effektiv ist.</p>
<p>In TypoScript kann die Komprimierung einzeln ein und ausgeschaltet werden:</p>
<pre>page{
 includeJS {
 file1 = ....common.js
 file1.<span style="color: #ff0000;">compress=1</span>
...</pre>
<h3>Bündelung</h3>
<p>Die Bündelung der Javascripte und CSS Dateien kann über TypoScript aktiviert werden.  Dafür gibt es diese Einstellung:</p>
<pre>config.concatenateJsAndCss = 1</pre>
<p>Hierbei ist nicht möglich CSS und JavaScript unterschiedlich zu behandeln. Deshalb gibt es in der Extension die Möglichkeit über den Extension Manager die Bündelung beispielsweise für CSS auszuschalten.</p>
<p><img class="alignnone size-full wp-image-541" title="js_opt_1" src="http://www.ajung.de/wp-content/uploads/2009/10/js_opt_1.png" alt="js_opt_1" width="192" height="125" /></p>
<p>Wenn bestimmte Dateien auf jeder Seite benötigt werden, dann macht es Sinn diese als Libs einzubinden. Dafür gibt es im TypoScript die Option includeJSlibs.</p>
<pre>page.includeJSlibs{
  jquery = ...jquery-1.3.2.min.js
  ...
}</pre>
<p>Dann werden die in eine separate Datei geschrieben und können vom Browser separat gecacht werden.</p>
<h3>Caching</h3>
<p>Die komprimierten und gebündelten Dateien werden in dem typo3Temp Verzeichnis abgelegt. Die Cache Datei werden nicht erneuert sondern müssen gelöscht werden um neu erzeugt zu werden. Das Löschen passiert automatisch wenn im Typo3 Backend der Cache gelöscht wird.</p>
<h3>Javascript und CSS aus den Plugins hinzufügen</h3>
<p>Wenn man früher in einem Plugin JavaScript oder CSS Daten hinzufügen wollte ohne TypoScript hat man das über $GLOBALS['TSFE']-&gt;additionalHeaderData machen. Da diese Daten nicht als JS oder CSS deklariert sind nutzen sie in diesen Kontext nichts mehr.  Man kann jetzt mittels $GLOBALS['TSFE']-&gt;getPageRenderer() auf den PageRenderer zugreifen und diesen die JS und CSS Dateien bekannt machen. Wenn man mit dem PageRenderer arbeitet kann man auch die Vorteile der Komprimierung und Bündelung nutzen. Es lohnt sich deshalb die Klasse t3lib_PageRenderer genauer anzuschauen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/10/06/ext-js_css_optimizer-und-t3lib_pagerenderer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExtJs Erweiterter List Filter</title>
		<link>http://www.ajung.de/2009/03/24/extjs-erweiterter-list-filter/</link>
		<comments>http://www.ajung.de/2009/03/24/extjs-erweiterter-list-filter/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 16:29:32 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Typo3]]></category>
		<category><![CDATA[ExtJs]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=506</guid>
		<description><![CDATA[In dem ExtJS Framework gibt es für die Grids, die praktischen Grid Filter. Diese lassen sich ganz einfach einbauen und das ganze sieht dann zum Beispiel so aus: Mit dem List Filter lassen sich diese Checkboxen darstellen. Die Werte darin sind aber statisch hinterlegt. Man kann auch einen Store im Filter hinterlegen und dann die [...]]]></description>
			<content:encoded><![CDATA[<p>In dem ExtJS Framework gibt es für die Grids, die praktischen Grid Filter. Diese lassen sich ganz einfach einbauen und das ganze sieht dann zum Beispiel so aus:</p>
<p><img class="alignnone size-full wp-image-507" title="grid_filter" src="http://www.ajung.de/wp-content/uploads/2009/03/grid_filter.jpg" alt="grid_filter" width="442" height="292" /></p>
<p>Mit dem List Filter lassen sich diese Checkboxen darstellen. Die Werte darin sind aber statisch hinterlegt. Man kann auch einen Store im Filter hinterlegen und dann die Werte serverseitig laden. In meinen Fall sollte ich aber die Werte aus den Daten des Grid automatisch ermitteln.</p>
<p>Dazu habe ich erst mal den <strong>Ext.data.Store</strong> um einen Methode erweitert, die mir die eindeutigen Wert einer Spalte zurückgibt:</p>
<pre>Ext.override(Ext.data.Store, {
    getUniqueData:function (index){
        this.unique_data = new Array();
        this.each(function(record){
            var value = record.get(index);
            if(this.unique_data.indexOf(value)==-1){
                this.unique_data.push(value);
            }

        },this);
        return this.unique_data;
    }
});</pre>
<p>Dann habe ich mir einen neuen Filter erzeugt, abgeleitet von der Klasse:<strong> Ext.ux.grid.filter.ListFilter</strong> die nur zwei Optionen benötigt:</p>
<ol>
<li>uniqueStore: eine Referenz auf den Store des Grid</li>
<li>dataIndex: der Spalten Index</li>
</ol>
<p>Der Filter hängt sich an den load Event des Store vom Grid und erzeugt danach seine eigenen Optionen:</p>
<pre>Ext.ux.grid.filter.UniqueListFilter  = Ext.extend(Ext.ux.grid.filter.ListFilter, {
    init : function(){
        this.uniqueStore.addListener('load',function(){
            this.options = [];
            var values = this.uniqueStore.getUniqueData(this.dataIndex);
            Ext.each(values,function(value){
                this.options.push([value, value]);
            },this);
            Ext.ux.grid.filter.UniqueListFilter.superclass.init.call(this);
        },
        this
        );
    }
});</pre>
<p>Diesen Filter kann einfach in meinen GridFilters instanzieren:</p>
<pre>var filters = new Ext.ux.grid.GridFilters(
            {
                local:true,
                filters:[
                    {type: 'string',  dataIndex: 'Account'},
                    {type: 'numeric', dataIndex: 'BasePrice'},
                    new Ext.ux.grid.filter.UniqueListFilter({
                        uniqueStore:ds,
                        dataIndex: 'BaseCurrency'

                    }),
                ]
            }
        );</pre>
<p>Im Grid werden die filter über die plugin Schnittstelle eingebunden:</p>
<pre>plugins: [filters,...],</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2009/03/24/extjs-erweiterter-list-filter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Typo3 Formulare vor Spam schützen mit Powermail</title>
		<link>http://www.ajung.de/2008/08/30/typo3-formulare-vor-spam-schutzen-mit-powermail/</link>
		<comments>http://www.ajung.de/2008/08/30/typo3-formulare-vor-spam-schutzen-mit-powermail/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 11:00:37 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Typo3]]></category>
		<category><![CDATA[formulare]]></category>
		<category><![CDATA[powermail]]></category>
		<category><![CDATA[spamschutz]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=168</guid>
		<description><![CDATA[Mit Typo3 lassen sich einfach Formulare zum Senden von Kontakt Anfragen erstellen. Doch diese werden leider häufig von Spambots missbraucht. Auf der Suche nach einer einfachen Lösung bin ich auf die Extension powermail gestoßen. Mit dieser kann man nicht nur bequem einen Spam-Schutz einbauen, sondern man kann wesentlich komplexere Formulare gestalten. Die Extension verfügt über [...]]]></description>
			<content:encoded><![CDATA[<p>Mit Typo3 lassen sich einfach Formulare zum Senden von Kontakt Anfragen erstellen. Doch diese werden leider häufig von Spambots missbraucht. Auf der Suche nach einer einfachen Lösung bin ich auf die Extension <strong><a href="http://typo3.org/extensions/repository/view/powermail/">powermail</a></strong> gestoßen. Mit dieser kann man nicht nur bequem einen Spam-Schutz einbauen, sondern man kann wesentlich komplexere Formulare gestalten.</p>
<p>Die Extension verfügt über einen <strong>Formular Designer</strong>. Alle Formular Elemente werden als Datensätze gespeichert und es wird das Feature <strong>IRRE (Inline Relational Record Editing) </strong>verwendet. Somit können die einzelnen Datensätze in einen einzigen Formular bearbeitet werden.</p>
<p>Man kann mehrere Formular Seiten hinzufügen und einstellen ob das Blättern mit JavaScript oder PHP geschehen soll.</p>
<p><img class="alignnone size-full wp-image-169" title="fudochi-typo3-421_1220035674298" src="http://www.ajung.de/wp-content/uploads/2008/08/fudochi-typo3-421_1220035674298.png" alt="" width="500" height="307" /></p>
<p>Die Elemente lassen sich per<strong> Drag and Drop</strong> neu sortieren.</p>
<p>Neben den Standard Feldern, kann man noch eine Reihe Extra Felder hinzufügen. Mir war hierbei das Captcha Element sehr wichtig.</p>
<p><img class="alignnone size-full wp-image-170" title="powermai" src="http://www.ajung.de/wp-content/uploads/2008/08/powermai.gif" alt="" width="212" height="392" /></p>
<p>Die Felder lassen sich einzeln konfigurieren und man kann <strong>einfache Validierungen</strong> für die Felder angeben.</p>
<p>Man kann die Felder auch automatisch mit den Daten aus der <strong>fe_user</strong> Tabelle füllen und somit dem Benutzer Tipparbeit ersparen.</p>
<p><img class="alignnone size-thumbnail wp-image-171" title="powermai_1" src="http://www.ajung.de/wp-content/uploads/2008/08/powermai_1-102x150.gif" alt="" width="102" height="150" /></p>
<p>Die Extension hat unzählige Einstellungen, die man über die Konstanten steuert. Wie auch die Wahl des Captcha System. Standardmäßig wird <strong>sr_freecap </strong>verwendet.</p>
<p>Alle Anfragen werden in der Datenbank gespeichert und diese können über das Backend aufgerufen werden und von dort als Excel, CSV oder HTml exportiert werden.</p>
<p><img class="alignnone size-full wp-image-173" title="fudochi-typo3-421_1220040544421" src="http://www.ajung.de/wp-content/uploads/2008/08/fudochi-typo3-421_1220040544421.png" alt="" width="334" height="130" /></p>
<p>Für komplexere Formulare würde ich eher<strong> dre_formmaker</strong> empfehlen. Diese ist wirklich genial und kann eigentlich alles was man bracht. Nur ist sie nicht so einfach zu bedienen wie die <strong>powermail </strong>Extension.<a href="http://typo3.org/extensions/repository/view/dre_formmaker/1.0.0/"><strong><br />
</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/08/30/typo3-formulare-vor-spam-schutzen-mit-powermail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
