<?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>the fancy part of the web</title>
	<atom:link href="http://blog.tolleiv.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tolleiv.de</link>
	<description>is elsewhere - this is just about all sorts of web related work with a small factor of fanciness</description>
	<lastBuildDate>Sat, 22 Dec 2012 09:31:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Re: How to move on? #TYPO3</title>
		<link>http://blog.tolleiv.de/2012/12/re-how-to-move-on-typo3/</link>
		<comments>http://blog.tolleiv.de/2012/12/re-how-to-move-on-typo3/#comments</comments>
		<pubDate>Sat, 22 Dec 2012 09:11:02 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=1036</guid>
		<description><![CDATA[As I wanted to answer Robert&#8217;s post but didn&#8217;t like the privacy of our Core-internal list, here&#8217;s some kind of response to it. Alongside I&#8217;ll try to explain the current situation and problems a bit***. What happend? In his post Robert kind of gave up his attempts to establish a TYPO3 product board [1]. The [...]]]></description>
				<content:encoded><![CDATA[<p>As I wanted to answer <a href="https://twitter.com/robertlemke" title="Robert Lemke on Twitter" target="_blank">Robert&#8217;s</a> post but didn&#8217;t like the privacy of our Core-internal list, here&#8217;s some kind of response to it. Alongside I&#8217;ll try to explain the current situation and problems a bit***.</p>
<h3>What happend?</h3>
<p>In his post Robert kind of gave up his attempts to establish a TYPO3 product board <a href="#_1">[1]</a>. The reasons for this are very wide-spread and mainly the various flame-wars in the last year and the very personal attacts brought him to the conclusion to:</p>
<blockquote><p>* no longer invest my time into setting up or participating in an overall product team<br />
* refrain from trying to establish leadership for the TYPO3 project<br />
* concentrate on Flow and Neos and invite teams to participate in frequent meetings about it<br />
* unsubscribe from the core internal mailing list</p></blockquote>
<p>Even thought this shortens his entire mail a bit &#8211; that&#8217;s the bottom line it comes down to****.</p>
<p>Looking at the recording of the &#8220;Not-the-product-board&#8221; <a href="#_7" title="Now a first #TYPO3 "product …" meeting, not official, no decisions, nothing.">[7]</a> meeting from last Tuesday <a href="#_2">[2]</a> it seems that these steps aren&#8217;t necessary, as everybody seemed to be happy with the setup. So what&#8217;s the criticism actually about? Lucky enough I don&#8217;t have to describe it myself, but can cite an (again internal) response to an earlier mail from one of my fellow Core Team members:</p>
<blockquote><p>Suddenly, when you (Robert) left the steering committee of the T3A because of the<br />
new bodies and bylaws, you realized that there is no more power for you<br />
to decide about things. That&#8217;s why you brought up the concept of a<br />
product team. It&#8217;s an attempt to replace the former steering committee,<br />
which has backed up the decisions of the core team in a nice but<br />
undemocratic way.</p></blockquote>
<p>In addition to these two standpoints we&#8217;ve a mixture of opinions and directions in our community and all of them cause quite some irritation <a title="Die Marke TYPO3 erfindet sich neu" href="#_3">[3</a>,<a title="Rebranding: Get the green back" href="#_4">4</a>,<a title="Wieviel Kommunikation und Roadmaps braucht ein Open Source Projekt?" href="#_5">5]</a>. With all these repeating fights and discussions Robert and (I guess) most of us ask ourselves how the community could avoid the fighting?</p>
<p>So what&#8217;s my opinion:</p>
<h3>What we should avoid</h3>
<ul>
<li><b>Closed door meetings and private discussions</b> &#8211; most of the &#8220;emotional outbursts&#8221; we saw where caused when the seemingly final results where presented to the community out of the blue. The fact that Core-internal is still a vivid place is a problem and we all should be abandon it.</li>
<li><b>Working without vision</b> &#8211; the long holding support (since 2006) for Neos and the nice drive gridelements got from it&#8217;s fans <a href="#_9">[9]</a> are two good examples that a vision can move mountains. But we should renew the vision statement and provide roadmaps on how we want to achieve it &#8211; mainly to motivate contributors and to enable collaboration between the teams.</li>
<li><b>Leaders or leader groups</b> &#8211; other OpenSource products have their <a href="http://en.wikipedia.org/wiki/Benevolent_dictatorship" title="Benevolent dictatorship" target="_blank">benevolent dictator</a> &#8211; this wouldn&#8217;t work for our community. Their focus will never reach the entire community and in the end their decisions will always cause confusion. Imho Kasper made a great job to bring TYPO3 to life &#8211; but he/we saw that the &#8220;dictatorship&#8221; didn&#8217;t scale in the end <a href="#_12">[12]</a> and imho Robert&#8217;s response and the controversy around the product board kind of shows that too.**</li>
<li><b>Personal attacks</b> &#8211; nobody joined the TYPO3 community to fight, so there&#8217;s no reason to fight back. Within all controversy and disappointment everyone tries to improve TYPO3 in his way <a href="#_10" title=". @thomas_hempel The discussions are there because so many people care.">[10]</a></li>
</ul>
<h3>What we need</h3>
<ul>
<li><b>Diverse groups from all parts of the community</b> &#8211; there&#8217;s no other way to capture all ideas and to gather various people from the entire community. As a nice side effect they make the &#8220;surface&#8221; of our community much larger and might help to involve new users. Btw. our community manager<a href="https://twitter.com/benvantende" title="Ben van't Ende on Twitter" target="_blank"> Ben van&#8217;t Ende </a>will be happy to help kickstarting and coordinating groups.</li>
<li><b>Open meeting protocols and discussions</b> &#8211; to make sure there&#8217;s a chance for everyone to catch-up later and to avoid bad surprises as we saw during the rebranding <a title="Die Marke TYPO3 erfindet sich neu" href="#_3">[3]</a> or during the version schema change <a href="#_6" title="TYPO3 6.0 at the corner? How is it possible?">[6]</a> In both cases small groups of people made major (not necessarily bad) decisions on their own behind closed doors &#8211; the following controversies showed that good intentions can turn out very negative.</li>
<li><b>Clear communication structures in the groups</b> &#8211; to make sure things are &#8220;presented&#8221; appropriately. As see in <a href="#_6" title="TYPO3 6.0 at the corner? How is it possible?">[6]</a> or in more recent situations <a href="#_8" title="@benvantende .. I expected, a mail by you and a news on T3O about it. I found a private post by Robert on Google+ inviting guys he likes?!">[8]</a> things would improve if groups had clear communication-channels. In <a href="#_6" title="TYPO3 6.0 at the corner? How is it possible?">[6]</a> and <a href="#_8" title="@benvantende .. I expected, a mail by you and a news on T3O about it. I found a private post by Robert on Google+ inviting guys he likes?!">[8]</a>. seemingly official messages turned out to be personal attempts instead without actual &#8220;approval&#8221; / &#8220;consensus&#8221; from the related groups.</li>
<li><b>Rough product roadmaps</b> &#8211; They should exist to make sure people share a common vision but they should not be too straight to make sure nobody feels too bound to it. They should also exist to enable some kind of measurement. We should be able to ask the Neos or CMS team whether they &#8220;live&#8221; along their vision or whether it would be better to adjust it.</li>
<li><b>Constructive honesty</b> &#8211; people should discuss openly, in a respectful way <a href="#_11" title="Community Code of Conduct">[11]</a>. Technical doubts and constructive criticism should be allowed, but it should be fair.</li>
</ul>
<h3>What does that mean for our products?</h3>
<p>Honestly: I don&#8217;t know. Looking at the current situations with the lists from above: we have tons of groups working in many directions, we have a group that agreed on a common product-vision  (two times) <a href="#_13">[13]</a>, but the group communicates behind closed doors. I&#8217;m not aware of any Neos or Flow roadmaps, but TYPO3 CMS has at least a (short) roadmap <a href="#_14">[14]</a>. The Core team doesn&#8217;t have clear communication structures yet and as shown this raises ton&#8217;s of confusion. In addition our discussions tend to get very personal. It seems that sth. like a &#8220;product board&#8221; could help but&#8230;</p>
<h3>Product board and leadership</h3>
<p>On one hand I don&#8217;t like the way how the &#8220;product board&#8221; was positioned in the beginning &#8211; it should not lead anything or decide anything. On the other hand it&#8217;s great to have a group of people taking care to formulate a vision. The access to this group should be open to everyone, not just group leaders. Inner-circles, Top-10 groups, leader groups, Core-internal discussions should be avoided and open group-&#8221;setups&#8221; should be emphasized.</p>
<p>Hope this made sense?</p>
<h4>Read on:*</h4>
<p><a name="_1"></a>[1] &#8211; <a href="https://docs.google.com/document/pub?id=18d92GAehVbU_eSZRCTjJga5pGxopkd7qYB0KNukc-Ys">Google Doc: Product Board (or “Product Team”)</a><br />
<a name="_2"></a>[2] &#8211; <a title="TYPO3 Product Hangout (On Air)" href="http://www.youtube.com/watch?v=NzeOjXD_3mA&amp;feature=youtu.be" target="_blank">TYPO3 Product Hangout (On Air)x</a><br />
<a name="_3"></a>[3] &#8211; <a title="Die Marke TYPO3 erfindet sich neu" href="http://typo3blogger.de/die-marke-typo3-erfindet-sich-neu/" target="_blank">Die Marke TYPO3 erfindet sich neu</a><br />
<a name="_4"></a>[4] &#8211; <a title="Rebranding: Get the green back" href="http://lists.typo3.org/pipermail/typo3-english/2012-October/082582.html" target="_blank">Rebranding: Get the green back</a><br />
<a name="_5"></a>[5] &#8211; <a title="Wieviel Kommunikation und Roadmaps braucht ein Open Source Projekt?" href="http://typo3blogger.de/wieviel-kommunikation-und-roadmaps-braucht-ein-open-source-projekt/" target="_blank">Wieviel Kommunikation und Roadmaps braucht ein Open Source Projekt?</a><br />
<a name="_6"></a>[6] &#8211; <a href="http://buzz.typo3.org/people/xavier-perseguers/article/typo3-60-at-the-corner-how-is-it-possible/" title="TYPO3 6.0 at the corner? How is it possible?" target="_blank">TYPO3 6.0 at the corner? How is it possible?</a><br />
<a name="_7"></a>[7] &#8211; <a href="http://twitter.com/kdambekalns/status/281337939999457280" title="Now a first #TYPO3 "product …" meeting, not official, no decisions, nothing." target="_blank">@kdambekalns: Now a first #TYPO3 &#8220;product …&#8221; meeting, not official, no decisions, nothing.</a><br />
<a name="_8"></a>[8] &#8211; <a href="http://twitter.com/WrYBiT/status/280618569077760002" title="@benvantende .. I expected, a mail by you and a news on T3O about it. I found a private post by Robert on Google+ inviting guys he likes?!" target="_blank">@WrYBiT: @benvantende .. I expected, a mail by you and a news on T3O about it&#8230; </a><br />
<a name="_9"></a>[9] &#8211; <a href="http://www.startnext.de/typo3-grid-elements-2-0" title="Startnext: Verbessertes TYPO3-Backend mit neuen Features" target="_blank">Startnext: Verbessertes TYPO3-Backend mit neuen Features</a><br />
<a name="_10"></a>[10] &#8211; <a href="https://twitter.com/tom_noise/status/280624859501957120" title=". @thomas_hempel The discussions are there because so many people care." target="_blank">@tom_noice: . @thomas_hempel The discussions are there because so many people care.</a><br />
<a name="_11"></a>[11] &#8211; <a href="http://typo3.org/community/code-of-conduct/" title="Community Code of Conduct" target="_blank">Community Code of Conduct</a><br />
<a name="_12"></a>[12] &#8211; <a href="http://typo3.org/videos/play/king-for-a-day-but-not-for-a-lifetime/" title="King for a day, but not for a lifetime">King for a day, but not for a lifetime</a><br />
<a name="_13"></a>[13] &#8211; <a href="http://typo3.org/news/article/the-phoenix-team-reports-on-the-developer-days-2012/" title="The Phoenix team reports on the Developer Days 2012">The Phoenix team reports on the Developer Days 2012</a><br />
<a name="_14"></a>[14] &#8211; <a href="http://lists.typo3.org/pipermail/typo3-team-core/2012-December/052936.html" title="Proposal for the upcoming Roadmap and LTS">Proposal for the upcoming Roadmap and LTS</a></p>
<hr />
* take your time to read the endless lines of comments.<br />
** Imho <a href="https://twitter.com/ohader" title="Oliver Hader on Twitter" target="_blank">Oliver Hader</a> choose a good attempt to (not)&#8221;lead&#8221; the Core Team &#8211; more in the sense of &#8220;managing&#8221; and &#8220;enabling&#8221; without ruling<br />
*** Some tweets and messages from the Core members might have been quite confusing without the context<br />
**** I&#8217;d prefer not to play TYPO3-leaks here, so it&#8217;s up to Robert and the others to publish their mails by themselfs</p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=1036&amp;md5=62e2b30ee9879c52510927d749163f7d" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2012/12/re-how-to-move-on-typo3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2012%2F12%2Fre-how-to-move-on-typo3%2F&amp;language=en_GB&amp;category=text&amp;title=Re%3A+How+to+move+on%3F+%23TYPO3&amp;description=As+I+wanted+to+answer+Robert%26%238217%3Bs+post+but+didn%26%238217%3Bt+like+the+privacy+of+our+Core-internal+list%2C+here%26%238217%3Bs+some+kind+of+response+to+it.+Alongside+I%26%238217%3Bll+try+to+explain+the+current...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>TYPO3 login state and Varnish cache</title>
		<link>http://blog.tolleiv.de/2012/12/typo3-login-state-and-varnish-cache/</link>
		<comments>http://blog.tolleiv.de/2012/12/typo3-login-state-and-varnish-cache/#comments</comments>
		<pubDate>Mon, 10 Dec 2012 15:56:46 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[t3o]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[varnish]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=998</guid>
		<description><![CDATA[Caching is hard in complex page setups with user specific content, especially when public pages change their content once a user is logged in. TYPO3 is smart enough to deal with the login state properly and cache appropriately. Once Varnish is involved, it&#8217;s quite tricky to cache as much as possible without loosing the dynamic [...]]]></description>
				<content:encoded><![CDATA[<p>Caching is hard in complex page setups with user specific content, especially when public pages change their content once a user is logged in. TYPO3 is smart enough to deal with the login state properly and cache appropriately. Once Varnish is involved, it&#8217;s quite tricky to cache as much as possible without loosing the dynamic content. But it&#8217;s not impossible and here&#8217;s my summary how we resolved it for <a title="TYPO3.org" href="http://typo3.org">typo3.org</a>.</p>
<h4>Setup</h4>
<p>The basic Varnish setup is more or less always the same and best described by<a href="http://www.fabrizio-branca.de/nginx-varnish-apache-magento-typo3.html"> Farbrizio Branca</a>. On top of that we need   some TypoScript parameter tweaking to get the cache-control-headers in TYPO3 straight &#8211; <a title="Daniel's caching article" href="http://www.typo3-media.com/blog/website-caching-login.html">Daniel Pötzinger&#8217;s article</a> covers them best. Another very handy thing which can be found in Fabrizio&#8217;s blog is the<a href="http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html"> simplified flow chart</a> for the various <a href="https://www.varnish-cache.org/trac/wiki/VCLExampleDefault">Varnish subroutines</a>.Based on that all pages should be cached properly and your site should run smoothly. But in case you have a page with personalized content, you&#8217;ll have to reconsider some parts.</p>
<h4>Problem</h4>
<p>The<a href="http://typo3.org/events/add-new-event/new/"> event submission page on typo3.org</a> is a good example. In case the user is not logged in (a.k.a <em>public page</em>), we just want to show a message which guides him to the login. If there&#8217;s a login active (a.k.a <em>user page</em>), we&#8217;ll show the submission form instead. In both cases we could cache the content nicely, but how would we ensure that Varnish delivers the correct content?</p>
<h4>Solution</h4>
<p>Ajax could be a solution, but for large sites it&#8217;s usually smarter to avoid as much JavaScript as possible. EdgeSideIncludes (ESI) are another option, but I agree with <a title="Daniel's caching article" href="http://www.typo3-media.com/blog/website-caching-login.html">Daniel</a>, they&#8217;re not really useful in this case and I&#8217;d rather go with Ajax than with ESI.</p>
<p>What we want in this scenario, is to cache the <em>public page </em>in Varnish and pass to the <em>user page</em> generated by TYPO3 if we find that the user is logged in. But this should of course only happen on pages where this is really necessary &#8211; normal pages should just ignore the login state of the user. Therefore we need sth. to distinguish <em>normal</em> from <em>login specific</em> pages in Varnish. Lucky enough TYPO3 already provides a field in the pages properties which allows this distinction. Using the <strong>Login Behaviour (pages.fe_login_mode)</strong> field, you can enable and disable the user-login for specific branches and pages*. As we want to whitelist <em>login specific</em> pages, our root page should have the default setting &#8220;Disable Login&#8221; &#8211; this will be inherited to all sub-pages. All the <em>login specific</em> pages should have the setting &#8220;Re-Enable login&#8221;.</p>
<p>Once this is done, we need a way to carry that out to Varnish. We improved <a title="EXT:cacheinfo" href="http://forge.typo3.org/projects/extension-cacheinfo">EXT:cacheinfo</a> for that purpose, with that it now carries a &#8220;<strong>loginAllowedInBranch</strong>&#8221; or &#8220;<strong>noLoginAllowedInBranch</strong>&#8221; value in the &#8220;<strong>X-T3CacheInfo&#8221;</strong> header. Using all that, the Varnish VCL can be extended to make use of it like this:</p>
<pre>sub vcl_hit {
  if (obj.http.X-T3CacheInfo ~ "loginAllowedInBranch") {
    set obj.http.Cache-Control = "private";
    if (req.http.Cookie ~ "(e_typo_user|PHPSESSID|_pk_.*)") {
      # Do not cache requests which come from a logged in user
      return (pass);
    }
  }
}</pre>
<p>This is straight forward. For every page which allows logins, we make sure that the client does not keep them in his cache. In case we&#8217;re actually on such a page and find the related login-cookies, we pass the request along to TYPO3, otherwise we deliver the <em>public page</em> right away from the cache. The fact that we pass the request along to TYPO3 in some cases doesn&#8217;t mean that we&#8217;ll deliver the <em>user page</em>, it just indicates that we&#8217;ve to rely on TYPO3 to make the right choice based on the actual login state.</p>
<h4>Conclusion</h4>
<p>For me the beauty here lies in the simplicity. Once you managed to wrap your head around the <a href="http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html">flow chart</a> and once you managed to deliver appropriate meta-data to Varnish, many more complex scenarios can be resolved equally.</p>
<p>As most of the typo3.org stuff, this solution came from a great team. In this case <a href="https://twitter.com/stucki">Michael Stucki</a> and <a href="https://twitter.com/danpoetz">Daniel Pötzinger</a> helped to craft the final solution &#8211; thanks guys <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr />
<p><small>* the naming of the field&#8217;s labels is really irritating &#8211; especially &#8220;0 &#8211; Enable login&#8221; should be &#8220;Inherit setting&#8221; as it really does not force any setting.</small></p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=998&amp;md5=4dfe55c9f2c8c822b61176afaccb0cf6" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2012/12/typo3-login-state-and-varnish-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2012%2F12%2Ftypo3-login-state-and-varnish-cache%2F&amp;language=en_GB&amp;category=text&amp;title=TYPO3+login+state+and+Varnish+cache&amp;description=Caching+is+hard+in+complex+page+setups+with+user+specific+content%2C+especially+when+public+pages+change+their+content+once+a+user+is+logged+in.+TYPO3+is+smart+enough+to+deal...&amp;tags=t3o%2Ctypo3%2Cvarnish%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Finding TypoScript errors.</title>
		<link>http://blog.tolleiv.de/2012/02/finding-typoscript-errors/</link>
		<comments>http://blog.tolleiv.de/2012/02/finding-typoscript-errors/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 16:02:31 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=949</guid>
		<description><![CDATA[When you work on TypoScript templates in TYPO3, errors might show up in the TypoScript Object Browser. Within the error messages you&#8217;ll see a more or less detailed error description with the related line number. Within most setups these line numbers won&#8217;t relate to any of your sys_template records or TypoScript files directly. But they still [...]]]></description>
				<content:encoded><![CDATA[<p>When you work on TypoScript templates in TYPO3, errors might show up in the TypoScript Object Browser. Within the error messages you&#8217;ll see a more or less detailed error description with the related line number. Within most setups these line numbers won&#8217;t relate to any of your sys_template records or TypoScript files directly. But they still provide value if you know how they help to find the right spot. As it&#8217;s not too obvious how to find the right spot I&#8217;ve created a little screenshot series to guide you to the broken spots in your templates.</p>
<p>So that&#8217;s what you might see in your TypoScript Object Browser:</p>
<p style="text-align: center;"><a href="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-error.png" rel="lightbox[949]"><img class="size-full wp-image-955  aligncenter" title="typoscript-error" src="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-error.png" alt="The error message from your TypoScript Object Browser might look like this." width="576" height="65" /></a></p>
<p> Switching from there to the Template Analyzer:</p>
<p style="text-align: center;"><a href="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-analyzer.png" rel="lightbox[949]"><img class="size-full wp-image-954  aligncenter" title="typoscript-analyzer" src="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-analyzer.png" alt="Switching to the TypoScript analyzer" width="183" height="60" /></a></p>
<p style="text-align: left;">At the bottom of the Template Analyzer, you&#8217;ll find a &#8220;Complete TS&#8221; section and a link ~which looks like normal text.</p>
<p style="text-align: center;"><a href="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-analyzer-complete.png" rel="lightbox[949]"><img class="size-full wp-image-952  aligncenter" title="typoscript-analyzer-complete" src="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-analyzer-complete.png" alt="And you'll find a link to the fully concatenated TypoScript of your current page." width="216" height="68" /></a></p>
<p style="text-align: left;">Clicking on that link will give you the entire concatenated TypoScript and here you&#8217;ll also find that the line numbers finally match to the error message.</p>
<p style="text-align: center;"><a href="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-analyzer-error.png" rel="lightbox[949]"><img class="size-full wp-image-953  aligncenter" title="typoscript-analyzer-error" src="http://blog.tolleiv.de/wp-content/uploads/2012/02/typoscript-analyzer-error.png" alt="And you'll find that the line numbers are now what you saw in the error message before (might need some scrolling)." width="395" height="57" /></a></p>
<p style="text-align: left;">A well hidden gem which works most likely in all TYPO3 4.x versions <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr />
Edit: In the meantime, Ingo&#8217;s patch made it through the review process. So users of TYPO3 4.7 and above will find a nice and handy &#8220;Show details&#8221; link next to the error message. Makes it much much faster to find the broken spot. Thanks Ingo <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  / (<a href="http://twitter.com/irnnr" title="Ingo Renner on Twitter">@irnnr</a>)</p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=949&amp;md5=06bf96b8afdb8b725070bc8299237688" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2012/02/finding-typoscript-errors/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2012%2F02%2Ffinding-typoscript-errors%2F&amp;language=en_GB&amp;category=text&amp;title=Finding+TypoScript+errors.&amp;description=When+you+work+on+TypoScript+templates+in+TYPO3%2C+errors+might+show+up+in+the+TypoScript+Object+Browser.+Within+the+error+messages+you%26%238217%3Bll+see+a+more+or+less+detailed+error+description...&amp;tags=debug%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Visualizing TYPO3 Core activity</title>
		<link>http://blog.tolleiv.de/2012/01/visualizing-typo3-core-activity/</link>
		<comments>http://blog.tolleiv.de/2012/01/visualizing-typo3-core-activity/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 08:00:12 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=864</guid>
		<description><![CDATA[DISCLAIMER: Don&#8217;t take the following too serious &#8211; when reading this post please keep in mind that the TYPO3 community itself consists of much more than just the Core team activity &#8211; many things take place outside of code repositories and can&#8217;t be measured anyhow. Every contribution is important and every single action has value. [...]]]></description>
				<content:encoded><![CDATA[<blockquote style="border: none;"><p>DISCLAIMER: Don&#8217;t take the following too serious &#8211; when reading this post please keep in mind that the TYPO3 community itself consists of much more than just the Core team activity &#8211; many things take place outside of code repositories and can&#8217;t be measured anyhow. <strong>Every</strong> contribution is important and <strong>every</strong> single action has value.</p></blockquote>
<p>Using Gerrit sometimes feels quite lonesome &#8211; you don&#8217;t really see who&#8217;s active and you don&#8217;t really get a feeling on how much is done in the TYPO3 Core at a certain point. To visualize on how active the contributors are and to show the most active members I applied a little scoring and summed up the results for the time since 2006.</p>
<div id="attachment_917" class="wp-caption alignright" style="width: 306px"><a href="http://blog.tolleiv.de/impact-chart"><img src="http://blog.tolleiv.de/wp-content/uploads/2012/01/TYPO3-Core-impact.png" alt="Snippet of the impact chart." title="TYPO3-Core-impact" width="296" height="182" class="size-full wp-image-917" /></a><p class="wp-caption-text">Early 2006 impact chart with few early contributers - click the image to see the full chart</p></div>
<p>The scoring is quite easy &#8211; every author of a patch gets 10 points, testers get 3 and reviewers 1 point*. Looking at the stats it seems that even the statistics pulled from the old Subversion days seem to meet up with today&#8217;s numbers &#8211; of course we&#8217;ve to keep in mind that everything which was pulled from Subversion doesn&#8217;t really point to the author but to the actual committer (except if there was a &#8220;Thanks to XXXXX&#8221; reference in the commit).</p>
<p>To visualize the numbers I choose a <a href="https://github.com/blog/219-impact-graph-speedups">Github</a> like <a href="http://blog.tolleiv.de/impact-chart">impact chart</a>**. Each contributor has it&#8217;s own color and line in it and whenever he got active the width of the line scales up. To maintain the overview the scale of the width isn&#8217;t linear and every contributor who&#8217;s not within the &#8220;Top 20&#8243; had to be scaled down to &#8220;1&#8243;. The line stops if the contributor didn&#8217;t get active anymore. The scores are grouped and compared by month.</p>
<div id="attachment_897" class="wp-caption alignleft" style="width: 278px"><a href="http://blog.tolleiv.de/impact-chart/stat.html"><img class="wp-image-897" title="Core-Stats-January2012" src="http://blog.tolleiv.de/wp-content/uploads/2012/01/Core-Stats-January20121.png" alt="Snapshot of the &quot;Top 20&quot; stats taken Jan. 14th 2012" width="268" height="177" /></a><p class="wp-caption-text">Taken the last 3months - see the entire stats on the referenced page.</p></div>
<p>In addition to the chart I also created a <a href="http://blog.tolleiv.de/impact-chart/stat.html">table based overview for the &#8220;Top 20&#8243;</a> contributors with their score***.</p>
<p>Few things I got from the numbers. There have been 290 contributors already &#8211; simply amazing. Comparing the (huge) scores of the release managers with their fellow contributors shows once more that they can be really proud about the job they did or do. It&#8217;s also quite cool to see that many people keep sticking around. And finally it was quite surprising to see that our community manager <a href="https://twitter.com/benvantende" title="Ben van't Ende - on twitter.com">Ben van&#8217;t Ende</a> can also be found in the stats. Besides that it&#8217;s up to everyone else to find their conclusions from these numbers. I hope it&#8217;s motivating everyone to see that the community is active as always.</p>
<p><em>The script I created to generate the charts isn&#8217;t too nice at the moment, <del datetime="2012-03-05T18:20:47+00:00">but I promise to publish it once I cleaned it up a bit. If you can&#8217;t wait to get your hands on it, feel free to send me a mail or tweet.</del> &#8211; but I published it anyways: <a href="https://github.com/tolleiv/Repo-Activity-Monitor">github.com/tolleiv/Repo-Activity-Monitor</a></em></p>
<p>Links in short: <a href="http://blog.tolleiv.de/impact-chart">Impact chart</a>, <a href="http://blog.tolleiv.de/impact-chart/stat.html">Monthly &#8220;Top 20&#8243; tables</a>.</p>
<hr />
<p>* The scoring includes the commits to the Core master and all related submodule commits. Unfortunately the submodule commits don&#8217;t hold the reviewer and tester information. Also some of the latest changes made in the submodules may not show up at the moment because the submodule pointers haven&#8217;t been updated yet.<br />
** Inspired by the incredible RaphaëlJS vector graphics library which is distributed with an MIT license and can be found on <a href="http://raphaeljs.com/" title="Raphaël—JavaScript Library">raphaeljs.com</a><br />
*** Again &#8211; don&#8217;t take it too serious &#8211; the scoring doesn&#8217;t take into account that some patches can be written in 15 minutes where others take days. It also only uses the final testers and reviewers mentioned in the commit message, other contributions are not counted atm</p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=864&amp;md5=411e887923867ccaa9b4e085f815d3a5" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2012/01/visualizing-typo3-core-activity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2012%2F01%2Fvisualizing-typo3-core-activity%2F&amp;language=en_GB&amp;category=text&amp;title=Visualizing+TYPO3+Core+activity&amp;description=DISCLAIMER%3A+Don%26%238217%3Bt+take+the+following+too+serious+%26%238211%3B+when+reading+this+post+please+keep+in+mind+that+the+TYPO3+community+itself+consists+of+much+more+than+just+the+Core+team...&amp;tags=typo3%2Cvisualization%2Cblog" type="text/html" />
	</item>
		<item>
		<title>TemplaVoila 1.6.x</title>
		<link>http://blog.tolleiv.de/2012/01/templavoila-1-6-x/</link>
		<comments>http://blog.tolleiv.de/2012/01/templavoila-1-6-x/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 07:10:33 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[templavoila]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=815</guid>
		<description><![CDATA[Quite some things changed in the past months and I never found the time to clear up my mind and write up a summary. First of all TemplaVoila 1.6 was released parallel to TYPO3 4.6. It shipped with 22 bug and compatibility fixes. In general the 1.6.x branch is supposed to be compatible with TYPO3 [...]]]></description>
				<content:encoded><![CDATA[<p>Quite some things changed in the past months and I never found the time to clear up my mind and write up a summary.</p>
<p>First of all <a title="TemplaVoila within the TER" href="http://typo3.org/extensions/repository/view/templavoila/current/">TemplaVoila 1.6</a> was released parallel to <a title="TYPO3 4.6 Release notes" href="http://typo3.org/download/release-notes/typo3-46/">TYPO3 4.6</a>. It shipped with 22 bug and compatibility fixes. In general the 1.6.x branch is supposed to be compatible with TYPO3 4.4+ which also made it possible to clean up the extension quite a bit. In addition to that TemplaVoila 1.6.1 will show up in the TER in the next few hours. It fixes 10 additional issues.</p>
<p>Besides that, the main repository for TemplaVoila was moved to <a title="git.typo3.org" href="git.typo3.org/TYPO3v4/Extensions/templavoila">git.typo3.org</a> and the old Subversion repository and my Github repository have been removed. The new repository location also enables and enforces a new way to contribute code changes for the project. Comparable to the TYPO3v4 Core every change request can be sent to Gerrit, where I can review the changes before they get merged into the repository. That workflow turns out to be very efficient for me. A detailed summary on how to contribute code to any repository hosted on <a href="http://git.typo3.org">git.typo3.org</a> can be found on <a href="http://wiki.typo3.org/Contribution_Walkthrough_Tutorials">wiki.typo3.org</a>. To sum up some of the steps &#8211; here&#8217;s how you submit a patch*:</p>
<pre name="code" class="php">git clone git://git.typo3.org/TYPO3v4/Extensions/templavoila.git
cd templavoila
scp -p -P 29418 &lt;username&gt;@review.typo3.org:hooks/commit-msg .git/hooks/
git checkout -b workingBranch
# ... work on the files ...
git add &lt;changedFile&gt;
git commit
git push origin HEAD:refs/for/master/&lt;topic&gt;</pre>
<p>A further general change to the team happend more or less silently. During 2011 nobody from the old team or any new developer showed interest in the project and only few contributors helped with bugfixes or reviews. Due to that I also changed my attitude regarding future releases.<br />
I&#8217;m currently planning to release one version parallel with every main TYPO3 4.x release, to make sure that TemplaVoila works in new versions and to make sure people can enjoy TYPO3 with TemplaVoila in the future as well. I&#8217;ll also try to keep it compatible with all &#8220;stable&#8221; releases and aim to keep the issue count within the bugtracker as low as possible.<br />
But I&#8217;m not planning to integrate new major features such as the field content sliding (use <a href="http://typo3.org/extensions/repository/view/kb_tv_cont_slide/current/" title="TER: kb_tv_cont_slide extension">EXT:kb_tv_cont_slide</a> please) or a context sensitive content wizard (a.k.a &#8220;content firewall&#8221;). Also major refactorings won&#8217;t happen because they&#8217;d consume far too much of my time &#8211; therefore also the desperately needed update of the mapping module or a new new page module will not be implemented in the near future.</p>
<p>Nevertheless I&#8217;m open for any type of contribution and I&#8217;d be happy to review and test any patch showing up in Mantis or Gerrit &#8211; I&#8217;m just not able to spent a major part of my freetime for it.</p>
<hr />
* You have to sign the <a href="http://typo3.org/about/licenses">Contributor License Agreement</a> to be able to push any change &#8211; it can be found on <a href="http://typo3.org/about/licenses">typo3.org</a></p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=815&amp;md5=3b040a31f8f895815e1005f17bbd8fc4" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2012/01/templavoila-1-6-x/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2012%2F01%2Ftemplavoila-1-6-x%2F&amp;language=en_GB&amp;category=text&amp;title=TemplaVoila+1.6.x&amp;description=Quite+some+things+changed+in+the+past+months+and+I+never+found+the+time+to+clear+up+my+mind+and+write+up+a+summary.+First+of+all+TemplaVoila+1.6+was...&amp;tags=templavoila%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Further reading 2011</title>
		<link>http://blog.tolleiv.de/2011/12/further-reading-2011/</link>
		<comments>http://blog.tolleiv.de/2011/12/further-reading-2011/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 10:00:01 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=802</guid>
		<description><![CDATA[Holiday time is usually a great opportunity to take time for things which didn&#8217;t really fit into the passed by year and to pick up things which help me to see beyond my nose. Along with some paper work and some house work there&#8217;s quite a list of programming related things I read and tried [...]]]></description>
				<content:encoded><![CDATA[<p>Holiday time is usually a great opportunity to take time for things which didn&#8217;t really fit into the passed by year and to pick up things which help me to see beyond my nose. Along with some paper work and some house work there&#8217;s quite a list of programming related things I read and tried during the last days. And to give you some inspiration here&#8217;s my list:</p>
<ul>
<li><a title="The Pragmatic Programmer" href="http://pragprog.com/book/tpp/the-pragmatic-programmer">The Pragmatic Programmer: From Journeyman to Master</a> &#8211; a must read for every programmer and once in a while worth to take a look at. It also opens up tons of other topics which you should be pragmatic at.</li>
<li><a title="Why Functional Programming Matters" href="http://www.cs.utexas.edu/~shmat/courses/cs345/whyfp.pdf">Why Functional Programming Matters</a> &#8211; introducing the concepts of lazy evaluation and high-order functions for a couple of mathematical examples. With <a title="Steam.js" href="http://streamjs.org/">Steam.js</a> as implementation of lazy evaluation in JavaScript.</li>
<li><a title="MapReduce: Simplified Data Processing on Large Clusters" href="http://research.google.com/archive/mapreduce.html">MapReduce: Simplified Data Processing on Large Clusters</a> &#8211; every now and then I&#8217;m trying to get my hands dirty with <a title="The Apache CouchDB Project" href="http://couchdb.apache.org/">CouchDB</a> and re-reading this paper and the related works is always a good start.</li>
<li>Some texts worth looking at when it comes to user stories <a title="Imperative vs Declarative Scenarios in User Stories" href="http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html">Imperative vs Declarative Scenarios in User Stories</a>, <a title="The Easy Way to Writing Good User Stories" href="http://www.codesqueeze.com/the-easy-way-to-writing-good-user-stories/">The Easy Way to Writing Good User Stories</a>, <a title="A User Story Primer" href="http://trailridgeconsulting.com/files/user-story-primer.pdf">A User Story Primer</a>, <a title="How do you estimate the Business Value of User Stories? You don’t." href="http://blog.nayima.be/2009/12/30/how-do-you-estimate-the-business-value-of-user-stories/">How do you estimate the Business Value of User Stories? You don’t.</a>, <a title="Story Smells: The Valueless Story" href="http://blog.josephwilk.net/agile/story-smells-the-valueless-story.html">Story Smells: The Valueless Story</a></li>
<li><a title="The training wheels came off" href="http://aslakhellesoy.com/post/11055981222/the-training-wheels-came-off">The training wheels came off</a> &#8211; shows how valuable BDD scenarios should look like and why the cucumber-rails (ruby gem) stopped shipping predefined step definitions to enforce better scenarios among newcomers.</li>
<li><a title="What Your Dog Can Teach You About Building Teams" href="http://www.codesqueeze.com/what-your-dog-can-teach-you-about-building-teams/">What Your Dog Can Teach You About Building Teams</a> - a blog post which has a good point, it misses some background information though. In depth insights might come from <a title="Management 3.0" href="http://www.management30.com/book/">Management 3.0: Leading Agile Developers, Developing Agile Leaders</a> and <a title="Coaching Agile Teams" href="http://mikecohnsignatureseries.com/books/coaching-agile-teams">Coaching Agile Teams: A Companion for ScrumMasters, Agile Coaches, and Project Managers</a> which I won&#8217;t have time to look into <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </li>
<li><a title="Coding Conway’s Game of Life in Ruby the TDD Way with RSpec" href="http://www.rubyinside.com/screencast-coding-conways-game-of-life-in-ruby-the-tdd-way-with-rspec-5564.html">Coding Conway’s Game of Life in Ruby the TDD Way with RSpec #1</a> &#8211; a great screencast showing TDD in action with Ruby and RSpec. This 50min screencast shows how things evolve during TDD coding sessions and how models can grow within test suits.</li>
</ul>
<p>What&#8217;s on your list?</p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=802&amp;md5=aead372afa99bc49d3b23317d0edca6e" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2011/12/further-reading-2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2011%2F12%2Ffurther-reading-2011%2F&amp;language=en_GB&amp;category=text&amp;title=Further+reading+2011&amp;description=Holiday+time+is+usually+a+great+opportunity+to+take+time+for+things+which+didn%26%238217%3Bt+really+fit+into+the+passed+by+year+and+to+pick+up+things+which+help+me+to...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Tagging page caches</title>
		<link>http://blog.tolleiv.de/2011/12/tagging-page-caches/</link>
		<comments>http://blog.tolleiv.de/2011/12/tagging-page-caches/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 17:23:16 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=771</guid>
		<description><![CDATA[In our small TYPO3 world it&#8217;s quite common to have list and single views for extensions on specific pages. That&#8217;s quite nice because once a record is changed it allowes users to flush the caches for these pages automatically, using: TCEMAIN.clearCacheCmd=all&#124;&#60;pid&#62; But of course it isn&#8217;t very smart to clear all caches once you have [...]]]></description>
				<content:encoded><![CDATA[<p>In our small TYPO3 world it&#8217;s quite common to have list and single views for extensions on specific pages. That&#8217;s quite nice because once a record is changed it allowes users to flush the caches for these pages automatically, using:</p>
<pre name="code" class="php">TCEMAIN.clearCacheCmd=all|&lt;pid&gt;</pre>
<p>But of course it isn&#8217;t very smart to clear all caches once you have filled them up for hundred or even thousand records. To work around these limits it&#8217;s quite handy to use an API which lives in <a href="http://git.typo3.org/TYPO3v4/Core.git?a=commit;h=03af46">TYPO3 since 2008</a>. It allows to add tags to the page cache and removes the caches by tag.</p>
<p>Adding tags to the current page can be done with this block:</p>
<pre name="code" class="php">
$GLOBALS['TSFE']->addCacheTags(array('tx_example_model:' . $id));
</pre>
<p>Removing the caches for that specific page could look like this:</p>
<pre name="code" class="php">
$GLOBALS['typo3CacheManager']->getCache('cache_pages')->flushByTag('tx_example_model:' . $id);
</pre>
<p>Correctly integrating this with your extension is quite easy. To set the tags, add the first block into your controller and make sure you provide the proper uid for the rendered domain objects. To remove the caches once a record is saved in the backend just register a t3lib_tcemain hook and flush the tagged caches. </p>
<p>Credits: <a href="http://twitter.com/fbrnc">Fabrizio Branca @fbrnc</a> &#8211; thx for pointing me to it <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr />
The <a href="http://blog.tolleiv.de/2010/03/handling-data-in-typo3-with-tcemain/">Tcemain-Hook</a> could be integrated with these two snippets:<br />
<em>EXT:example/Classes/Hooks/Tcemain.php</em></p>
<pre name="code" class="php">
class Tx_Example_Hooks_Tcemain {
	public function processDatamap_afterDatabaseOperations($status, $table, $id, $fieldArray, &#038;$reference) {
		if ($table == 'tx_example_model') {
			$GLOBALS['typo3CacheManager']->getCache('cache_pages')->flushByTag('tx_example_model:' . $id);
		}
	}
}
</pre>
<p><em>EXT:example/ext_localconf.php</em></p>
<pre name="code" class="php">
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['example'] = 'EXT:example/Classes/Hooks/Tcemain.php:Tx_Example_Hooks_Tcemain';
</pre>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=771&amp;md5=d8f8d6ad7d0983675cf32f349eee2cca" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2011/12/tagging-page-caches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2011%2F12%2Ftagging-page-caches%2F&amp;language=en_GB&amp;category=text&amp;title=Tagging+page+caches&amp;description=In+our+small+TYPO3+world+it%26%238217%3Bs+quite+common+to+have+list+and+single+views+for+extensions+on+specific+pages.+That%26%238217%3Bs+quite+nice+because+once+a+record+is+changed+it+allowes...&amp;tags=typo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Signal / Slots in Extbase</title>
		<link>http://blog.tolleiv.de/2011/11/signal-slots-in-extbase/</link>
		<comments>http://blog.tolleiv.de/2011/11/signal-slots-in-extbase/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 17:17:02 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[extbase]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=758</guid>
		<description><![CDATA[A nice thing to have at hand is definately Signal and Slots. I heard Felix talking about them quite often and I finally found a nice usecase and came to play with them a little bit this afternoon. And just to avoid that others have to look around too much to find how they can [...]]]></description>
				<content:encoded><![CDATA[<p>A nice thing to have at hand is definately <a href="http://en.wikipedia.org/wiki/Signals_and_slots">Signal and Slots</a>. I heard <a href="http://f.oer.tel">Felix</a> talking about them quite often and I finally found a nice usecase and came to play with them a little bit this afternoon. And just to avoid that others have to look around too much to find how they can get them to work here&#8217;s how it&#8217;s working for me.</p>
<p>First of all you should understand the concept. This nice little &#8220;definition&#8221; (from <a href="http://flow3.typo3.org/documentation/guide/partiii/signalsandslots.html">flow3.typo3.org</a>) sums it up pretty well:</p>
<blockquote><p>A signal, which contains event information as it makes sense in the case at hand, can be emitted (sent) by any part of the code and is received by one or more slots, which can be any function<del datetime="2011-11-30T16:19:24+00:00"> in FLOW3</del> in extbase.</p></blockquote>
<p>To get this running in extbase, you&#8217;ve to get hold of the <em>Tx_Extbase_SignalSlot_Dispatcher</em>, which is the central instance to manage all of it. Within Extbase that&#8217;s done easily with this snippet within your classes:</p>
<pre name="code" class="php">
   ...
	/**
	 * @var Tx_Extbase_SignalSlot_Dispatcher
	 */
	protected $signalSlotDispatcher;
   
	/**
	 * @param Tx_Extbase_SignalSlot_Dispatcher $signalSlotDispatcher
	 */
	public function injectSignalSlotDispatcher(Tx_Extbase_SignalSlot_Dispatcher $signalSlotDispatcher) {
		$this->signalSlotDispatcher = $signalSlotDispatcher;
	}
   ...
</pre>
<p>Next thing is to make use of it. The Slot (listener) part could look like one of following blocks. In all cases you define the Signal by it&#8217;s class (not necessarily a PHP Class) and it&#8217;s name. Next to that the Slot can either be defined by a Closure, an object with a method name or a PHP-Class and a method name.</p>
<pre name="code" class="php">
   ...
// Using a closure
$this->signalSlotDispatcher->connect(
      'Crunching', 'emitDataReady', function($data) { crunch($data) }, NULL, FALSE
);
   ...
// Using a method of the current object
$this->signalSlotDispatcher->connect(
     'Crunching', 'emitDataReady', $this, 'crunch', FALSE
);
   ...
// Using a method of the specified class
$this->signalSlotDispatcher->connect(
     'Crunching', 'emitDataReady', 'Cruncher', 'crunch', FALSE
);
   ...
</pre>
<p>To trigger the Signal which invokes the Slots registered above, you&#8217;ve to run the following code.</p>
<pre name="code" class="php">
$this->signalSlotDispatcher->dispatch('Crunching', 'emitDataReady', array($data));
</pre>
<p>One thing I found was that by default the <em>Tx_Extbase_SignalSlot_Dispatcher</em> it not a Singleton in older extbase versions. Bastian fixed that already in the <a href="https://review.typo3.org/#change,6785">master</a> and <a href="https://review.typo3.org/#change,6786">1-4</a> branches and lucky enough this change was part within the TYPO3 4.6.1 release. But I think it&#8217;s still important to mention that this wasn&#8217;t the default from the beginning on.</p>
<p>Even if <a href="http://flow3.typo3.org/documentation/guide/partiii/signalsandslots.html">AOP is a nicer way to implement this feature</a>, the extbase backport still works pretty straigh forward.</p>
<p>Edit: One thing I&#8217;ve to add &#8211; Felix is not &#8220;just&#8221; talking about Signal/Slots &#8211; he&#8217;s the one to thank for the <a href="https://review.typo3.org/1563">backport</a>. And now that his <a href="http://blog.foertel.com/2011/10/using-signalslots-in-extbase/">blog</a> is running again &#8211; this post seems like a summary <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=758&amp;md5=6f525b7c42151f2d64a2bb1f506934e4" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2011/11/signal-slots-in-extbase/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2011%2F11%2Fsignal-slots-in-extbase%2F&amp;language=en_GB&amp;category=text&amp;title=Signal+%2F+Slots+in+Extbase&amp;description=A+nice+thing+to+have+at+hand+is+definately+Signal+and+Slots.+I+heard+Felix+talking+about+them+quite+often+and+I+finally+found+a+nice+usecase+and+came+to...&amp;tags=extbase%2Cpattern%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Release reviews (templavoila, imagemap_wizard, workspaces)</title>
		<link>http://blog.tolleiv.de/2011/02/release-reviews-templavoila-imagemap_wizard-workspaces/</link>
		<comments>http://blog.tolleiv.de/2011/02/release-reviews-templavoila-imagemap_wizard-workspaces/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 21:17:14 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[templavoila]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=747</guid>
		<description><![CDATA[I just push the TER upload button two times and in addition to that TYPO3 4.5.2 will be released tomorrow containing some nice workspaces updates. So here&#8217;s a short summary what happened in the extension releases. TemplaVoila 1.5.4 The current release focussed on 4.5 compatibility. It uses the new sys_language flag &#8220;format&#8221; to support sprites, [...]]]></description>
				<content:encoded><![CDATA[<p>I just push the TER upload button two times and in addition to that TYPO3 4.5.2 will be released tomorrow containing some nice workspaces updates. So here&#8217;s a short summary what happened in the extension releases.</p>
<p><strong>TemplaVoila 1.5.4</strong><br />
The current release focussed on 4.5 compatibility. It uses the new sys_language flag &#8220;format&#8221; to support sprites, it hooks into the new backend-form <em>(TCA)</em> &#8220;layout&#8221; and add&#8217;s it&#8217;s fields to the right tabs within the backend forms and adjusts everything to work fine with the new CSRF mechanism.</p>
<p>Besides that bug fixes for the section index, performance improvements and a couple more are included.</p>
<p><em>One thing in conjunction with 4.5 you should be aware of is that copied elements are hidden by default. In older versions hidden elements won&#8217;t show up in the page module by default and therefore it might seem that nothing was copied, but that&#8217;s not right. With 1.5.4 the default setting was changed so hidden elements will show up in the page module. Unfortunately the old setting (to skip hidden elements) might still be present in your session settings &#8211; so please either clear your session settings or use the &#8220;Advanced function&#8221; tab in the page module to change to setting and avoid confusion.</em></p>
<p><strong>Imagemap_wizard 0.6.0</strong><br />
The last versions proved to be very stable and with some additional sponsoring I was able to improve the DAM and TYPO3 workspaces support. Besides that a couple of issues which showed up in 4.4 and 4.5 were fixed. One of the next features will hopefully be a useful point of interest implementation &#8211; keep your fingers crossed that someone&#8217;s clients want&#8217;s to sponsor some time for that <img src='http://blog.tolleiv.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Workspaces 4.5.1 / 4.5.2</strong><br />
Even if it&#8217;s shipped with the Core and included in the <a href="http://news.typo3.org/news/article/typo3-451-released/">official release notes</a>, here&#8217;s my summary of the improvements. The workspace module itself brought us lot&#8217;s of good feedback and also the new workspace preview raised some attention. Even though 4.5.0 was quite stable we weren&#8217;t able to get it working perfectly. The fixes made for 4.5.1 made sure that especially the preview window works much more stable, it introduced state persistence (so switching preview modes or module settings are memorized properly) and it brought some performance improvements.<br />
Btw. if you didn&#8217;t check out the new workspaces features and improvements the<a href="http://forge.typo3.org/projects/typo3v4-workspaces/repository/entry/workspaces/trunk/Documentation/manual.pdf"> new workspaces documentation from Susanne Moog</a> is a good point to start.</p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=747&amp;md5=d3096e30d913d123e4fb524d8743cd16" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2011/02/release-reviews-templavoila-imagemap_wizard-workspaces/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2011%2F02%2Frelease-reviews-templavoila-imagemap_wizard-workspaces%2F&amp;language=en_GB&amp;category=text&amp;title=Release+reviews+%28templavoila%2C+imagemap_wizard%2C+workspaces%29&amp;description=I+just+push+the+TER+upload+button+two+times+and+in+addition+to+that+TYPO3+4.5.2+will+be+released+tomorrow+containing+some+nice+workspaces+updates.+So+here%26%238217%3Bs+a+short+summary...&amp;tags=templavoila%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>TYPO3 4.5 beta1</title>
		<link>http://blog.tolleiv.de/2010/11/typo3-4-5-beta1/</link>
		<comments>http://blog.tolleiv.de/2010/11/typo3-4-5-beta1/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 21:48:31 +0000</pubDate>
		<dc:creator>tolleiv</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.tolleiv.de/?p=708</guid>
		<description><![CDATA[As announced on news.typo3.org yesterday the TYPO3 Core team published TYPO3 4.5 beta. With this beta the features for the next version are fixed and the remaining time until the release will be used for polishing and bug fixing. A complete list of the included features and changes can be found on forge.typo3.org. As member [...]]]></description>
				<content:encoded><![CDATA[<p>As announced on <a href="http://news.typo3.org/news/article/typo3-45beta1-released/">news.typo3.org</a> yesterday the TYPO3 Core team published TYPO3 4.5 beta. With this beta the features for the next version are fixed and the remaining time until the release will be used for polishing and bug fixing.<br />
A complete list of the included features and changes can be found on <a href="http://forge.typo3.org/projects/typo3v45-projects/wiki/TYPO3_450beta1">forge.typo3.org</a>.</p>
<p>As member of the <a href="http://blog.tolleiv.de/2010/06/typo3-workspaces/">TYPO3 workspace team</a> I&#8217;d like to encourage everyone to send as much feedback as possible for all the workspace related changes and since <a href="http://blog.tolleiv.de/2010/10/templavoila-1-5-released/">maintaining TemplaVoila</a> is also still on my list, it would be great if you let me know if you find any TemplaVoila related issues with the new TYPO3 version.</p>
<p>If you&#8217;d like to stay up-to-date with the latest changes in the TYPO3 Core, without reading all the newsgroup messages, you might be interested to use the <a href="http://feeds.feedburner.com/TYPO3-CoreTrunkChangelog">TYPO3 trunk Changelog RSS feed</a>. Besides the feed there&#8217;s a great service from the Core team, they started to publish the protocol of their weekly meeting as <a href="http://lists.typo3.org/pipermail/typo3-project-v4/2010-November/000996.html">&#8220;Minutes from the meeting of the release 4.5 team&#8221;</a> to the typo3.project.v4 newsgroup. I hope this will be kept up in the future.</p>
 <p><a href="http://blog.tolleiv.de/?flattrss_redirect&amp;id=708&amp;md5=b06a3c010ee5f6f9b3e79c5c779e16b2" title="Flattr" target="_blank"><img src="http://blog.tolleiv.de/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.tolleiv.de/2010/11/typo3-4-5-beta1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=23199&amp;popout=1&amp;url=http%3A%2F%2Fblog.tolleiv.de%2F2010%2F11%2Ftypo3-4-5-beta1%2F&amp;language=en_GB&amp;category=text&amp;title=TYPO3+4.5+beta1&amp;description=As+announced+on+news.typo3.org+yesterday+the+TYPO3+Core+team+published+TYPO3+4.5+beta.+With+this+beta+the+features+for+the+next+version+are+fixed+and+the+remaining+time+until+the...&amp;tags=blog" type="text/html" />
	</item>
	</channel>
</rss>
