<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Pagebakers</title>
	
	<link>http://blog.pagebakers.nl</link>
	<description>baking the next web</description>
	<lastBuildDate>Wed, 17 Nov 2010 21:35:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Pagebakers" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="pagebakers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Pagebakers" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FPagebakers" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Drupal: Adding a tertiary menu to your theme</title>
		<link>http://blog.pagebakers.nl/2010/11/17/drupal-adding-a-tertiary-menu-to-your-theme/</link>
		<comments>http://blog.pagebakers.nl/2010/11/17/drupal-adding-a-tertiary-menu-to-your-theme/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 10:41:10 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Webdevelopment]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=215</guid>
		<description><![CDATA[Unfortunately Drupal only allows you to add primary and secondary menu&#8217;s by default. However there are times you need deeper levels, for example a third (tertiary) level submenu. After some searching and looking at the core code I came up with a pretty easy solution. First add the following functions to your template.php file. function [...]]]></description>
			<content:encoded><![CDATA[<p>Unfortunately Drupal only allows you to add primary and secondary menu&#8217;s by default. However there are times you need deeper levels, for example a third (tertiary) level submenu.<br />
After some searching and looking at the core code I came up with a pretty easy solution.</p>
<p>First add the following functions to your <em>template.php</em> file.</p>
<pre class="brush: php;">
function phptemplate_preprocess_page(&amp;$vars) {
    $vars['tertiary_links'] = menu_tertiary_links();
}

/**
 * Returns an array containing the tertiary links based on the primary menu.
 * Tertiary links can be either a third level of the Primary links
 * menu or generated from a second level of the explicitly defined secondary_menu
 */
function menu_tertiary_links() {
    if (variable_get('menu_secondary_links_source', 'secondary-links') == variable_get('menu_primary_links_source', 'primary-links')) {
    return menu_navigation_links(variable_get('menu_primary_links_source', 'primary-links'), 2);
  }
  else {
    return menu_navigation_links(variable_get('menu_secondary_links_source', 'secondary-links'), 3);
  }
}
</pre>
<p>Once you&#8217;ve done that, you can add this snippet in your template.</p>
<pre class="brush: php;">
&lt;?php if (isset($tertiary_links)): ?&gt;
    &lt;?php print theme('links', $tertiary_links, array('class' =&gt; 'links tertiary-links')); ?&gt;
&lt;?php endif; ?&gt;
</pre>
<p>And voila! you&#8217;re done.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2010/11/17/drupal-adding-a-tertiary-menu-to-your-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SoapSource added into the Cakephp datasources repository</title>
		<link>http://blog.pagebakers.nl/2010/03/02/soapsource-added-into-the-cakephp-datasources-repository/</link>
		<comments>http://blog.pagebakers.nl/2010/03/02/soapsource-added-into-the-cakephp-datasources-repository/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:02:02 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[soap]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=204</guid>
		<description><![CDATA[Today my Soap datasource has been added into the Cakephp datasources repository by Graham Weldon. Great to see my work got accepted.]]></description>
			<content:encoded><![CDATA[<p>Today my Soap datasource has been added into the <a href="http://github.com/cakephp/datasources">Cakephp datasources repository</a> by <a href="http://grahamweldon.com">Graham Weldon</a>.<br />
Great to see my work got accepted.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2010/03/02/soapsource-added-into-the-cakephp-datasources-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixed (sticky) toolbars with jQuery</title>
		<link>http://blog.pagebakers.nl/2010/01/19/fixed-sticky-toolbars-with-jquery/</link>
		<comments>http://blog.pagebakers.nl/2010/01/19/fixed-sticky-toolbars-with-jquery/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 15:16:40 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=172</guid>
		<description><![CDATA[Here&#8217;s a little snippet of code that let&#8217;s you create sticky toolbars like they use in Magento for example :) Include this in your js somewhere and then just call $(&#8216;.toolbar&#8217;).fixed(); $.fn.fixed = function() { return this.each(function() { var header = $(this); var offset = header.offset(); var floater = $('&#60;div&#62;&#60;/div&#62;').append(header.clone(true)); floater.hide().appendTo(document.body).addClass('floating-toolbar'); $(window).scroll(function() { var s [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little snippet of code that let&#8217;s you create sticky toolbars like they use in Magento for example :)<br />
<span id="more-172"></span><br />
Include this in your js somewhere and then just call $(&#8216;.toolbar&#8217;).fixed();</p>
<pre class="brush: php;">
$.fn.fixed = function() {
    return this.each(function() {
        var header = $(this);
        var offset = header.offset();
        var floater = $('&lt;div&gt;&lt;/div&gt;').append(header.clone(true));
        floater.hide().appendTo(document.body).addClass('floating-toolbar');

        $(window).scroll(function() {
            var s = $(this).scrollTop();

            if (s &gt; offset.top) {
                header.css('visibility', 'hidden');
                floater.show();
            } else {
                floater.hide();
                header.css('visibility', 'visible');
            }
        });
    });
};
</pre>
<p>And here&#8217;s some css to make it work.</p>
<pre class="brush: css;">.floating-toolbar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    opacity: 0.85;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2010/01/19/fixed-sticky-toolbars-with-jquery/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Book review: CakePHP Application Development</title>
		<link>http://blog.pagebakers.nl/2009/03/11/book-review-cakephp-application-development/</link>
		<comments>http://blog.pagebakers.nl/2009/03/11/book-review-cakephp-application-development/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 16:02:24 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=118</guid>
		<description><![CDATA[Just like many other CakePHP bloggers out there, I also received a copy of Cakephp Application Development written by Ahsanul Bari and Anupom Syam, published by PACKT publishing. The first thing I noticed were the cake&#8217;s printed on the cover, they don&#8217;t look really tasty to me because of the odd colors. Thankfully the inside [...]]]></description>
			<content:encoded><![CDATA[<p>Just like many other CakePHP bloggers out there, I also received a copy of <a href="http://www.packtpub.com/cakephp-application-development/book ">Cakephp Application Development</a> written by Ahsanul Bari and Anupom Syam, published by <a href="http://www.packtpub.com">PACKT publishing</a>.</p>
<p>The first thing I noticed were the cake&#8217;s printed on the cover, they don&#8217;t look really tasty to me because of the odd colors. Thankfully the inside of the book looked much better.</p>
<p><span id="more-118"></span></p>
<p>The overall structure of the book is good and makes sense. The writing style is easy and pleasant to read, therefor all the grammar and punctuation mistakes didn&#8217;t bother me at all. The indentation of the code blocks isn&#8217;t always consistent, but it&#8217;s not really annoying.</p>
<p>I really like how the chapters are divided in &#8216;Time for action&#8217; and &#8216;What just happened&#8217;. You start building working applications right away, after you&#8217;re done there&#8217;s a clear explanation of what you just build. Perfect for a practical person like me.</p>
<p>Unfortunately there are quite a few times where the writer is making assumptions or is giving advise, but is not explaining why it&#8217;s good to do this or that. For example page 27:</p>
<blockquote><p>
We then defined a variable named $name in the Task&#8217;model, and assigned the name of the model to it. This is not mandatory, as Cake can figure out the name of the model automatically. But it is a good practice to name it manually.
</p></blockquote>
<p>People like me want to know why it is a good practice to name it manually&#8230;</p>
<p>The book is clearly written for developers which are new to CakePHP, but being new to Cake and being retarded are 2 very different things. Why bother writing almost 4 pages for downloading CakePHP alone?</p>
<p>Because this book was written for the beta version of Cake, there are quite a few things that work differently now with the final release. I&#8217;m not going deeper into this because other <a href="http://cakebaker.42dh.com/2008/08/14/review-cakephp-application-development/">bloggers</a> already did this for me ;)</p>
<p>Some code examples contain bad practice PHP code, write good example code for the readers so they don&#8217;t learn bad practices. One example is the remember me functionality of the Quickwall application where both username and password are saved in a cookie.</p>
<p>All in all, I would recommend this book to everyone who&#8217;s new to CakePHP because it&#8217;s a really good startup. I do hope there will be released a new revision soon to fix all the grammar and deprecated example code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2009/03/11/book-review-cakephp-application-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GIT: ignoring changes in tracked files</title>
		<link>http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/</link>
		<comments>http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 16:17:29 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[git ignore tracked files]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=111</guid>
		<description><![CDATA[There may be times when you want to edit some variables in for example a database connection file, to run an application right from within your GIT repo. Of course you don&#8217;t wont those changes to be commited, so you add the file the .gitignore. However adding tracked files to .gitignore won&#8217;t work because GIT [...]]]></description>
			<content:encoded><![CDATA[<p>There may be times when you want to edit some variables in for example a database connection file, to run an application right from within your GIT repo. Of course you don&#8217;t wont those changes to be commited, so you add the file the .gitignore.<br />
However adding tracked files to .gitignore won&#8217;t work because GIT will still track the changes and commit the file if you use the <em>-a</em> parameter.</p>
<p>Fortunately GIT has a very easy solution for this, just run the following command on the file or path you want to ignore the changes of:</p>
<pre class="brush: plain;">
git update-index --assume-unchanged &lt;file&gt;
</pre>
<p>If you wanna start tracking changes again run the following command:</p>
<pre class="brush: plain;">
git update-index --no-assume-unchanged &lt;file&gt;
</pre>
<p>You can find <a href="http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html">more info about this</a> in the <a href="http://www.kernel.org/pub/software/scm/git/docs/">git manual</a>.</p>
<p>Happy GITting ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>SoapSource, a SOAP Client Datasource for CakePHP</title>
		<link>http://blog.pagebakers.nl/2008/12/18/soapsource-a-soap-client-datasource-for-cakephp/</link>
		<comments>http://blog.pagebakers.nl/2008/12/18/soapsource-a-soap-client-datasource-for-cakephp/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 12:07:47 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[soap]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=104</guid>
		<description><![CDATA[Update: Fixed some stupid typo&#8217;s in the documentation. I&#8217;ve published my SOAP Datasource on Github, you can find the sourcecode in the &#8216;soapsource&#8216; repository. SoapSource allows you to connect with SOAP servers that support Wsdl. I also started implementing functionality for non Wsdl SOAP servers, but I don&#8217;t think I will continue on this. SoapSource [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>: Fixed some stupid typo&#8217;s in the documentation.</p>
<p>I&#8217;ve published my <a href="http://github.com/Pagebakers/soapsource/tree/master">SOAP Datasource</a> on Github, you can find the sourcecode in the &#8216;<a href="http://github.com/Pagebakers/soapsource/tree/master">soapsource</a>&#8216; repository.</p>
<p>SoapSource allows you to connect with SOAP servers that support Wsdl. <del datetime="2008-12-24T10:46:42+00:00">I also started implementing functionality for non Wsdl SOAP servers,  but I don&#8217;t think I will continue on this.</del><br />
SoapSource now supports non wsdl servers also, you can add &#8216;uri&#8217; and &#8216;location&#8217; parameters to your datasource configuration now.</p>
<p>In order to use the Datasource you will need to have PHP5 installed with the SOAP extension.<br />
<span id="more-104"></span><br />
Here&#8217;s how you use it:</p>
<blockquote><p>
Copy the soap_source.php file to your app/models/datasources/ directory</p>
<p>Add a configuration to your database.php in app/config/</p>
<p>var $soap = array(<br />
    &#8216;datasource&#8217; => &#8216;soap&#8217;,<br />
    &#8216;wsdl&#8217; => &#8216;http://localhost/soapservice.wsdl&#8217;, // wsdl mode<br />
    &#8216;location&#8217; => &#8221;, // Required for non wsdl mode<br />
    &#8216;uri&#8217; => &#8221; // Required for non wsdl mode<br />
);</p>
<p>Then in your model set:</p>
<p>var $useDbConfig = &#8216;soap&#8217;;</p>
<p>var $useTable = false;</p>
<p>And you&#8217;re ready to go.</p>
<p>In your controller you can now use</p>
<p>$this->Model->query(&#8216;SoapMethod&#8217;, array(&#8216;mySoapParams&#8217;));</p>
<p>or</p>
<p>$this->Model->SoapMethod(array(&#8216;mySoapParams&#8217;));
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2008/12/18/soapsource-a-soap-client-datasource-for-cakephp/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Installing PHP5 soap extension on Leopard 10.5.5</title>
		<link>http://blog.pagebakers.nl/2008/12/17/installing-php-soap-extension-on-leopard-10-5-5/</link>
		<comments>http://blog.pagebakers.nl/2008/12/17/installing-php-soap-extension-on-leopard-10-5-5/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 17:46:18 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[OS]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[soap]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=99</guid>
		<description><![CDATA[While working a new project of mine, SoapSource: a soap datasource for Cakephp, I wanted to make use of PHP&#8217;s SOAP extension. As I figured out quickly the default install of PHP on Mac OS X Leopard isn&#8217;t compiled with the SOAP extension enabled. So I thought; that&#8217;s easy, just recompile PHP with the SOAP [...]]]></description>
			<content:encoded><![CDATA[<p>While working a new project of mine, SoapSource: a soap datasource for Cakephp, I wanted to make use of PHP&#8217;s SOAP extension. As I figured out quickly the default install of PHP on Mac OS X Leopard isn&#8217;t compiled with the SOAP extension enabled. So I thought; that&#8217;s easy, just recompile PHP with the SOAP extension enabled.. However I encountered some serious problems.<br />
It appears to be impossible to compile a 64bit version of PHP on Mac OS, there&#8217;s some sort of bug with &#8216;libiconv&#8217;.<br />
So next idea, recompile Apache in 32bit, Mysql in 32bit and ofcourse PHP in 32bit&#8230; well again I didn&#8217;t succeed, so I reverted all my changes back to the original settings after a day of hard work and frustrations.</p>
<p><span id="more-99"></span></p>
<p>But then I found out you can compile dynamic extensions without recompiling your entire PHP installation. So I got SOAP running within 5 minutes using to following instructions:</p>
<p>Download the PHP source of the version your Mac is running, probably PHP-5.2.6, and extract the package.</p>
<pre>
cd /tmp

curl -O http://de3.php.net/distributions/php-5.2.6.tar.bz2

tar xjf php-5.2.6.tar.bz2
</pre>
<p>Then move to the expanded directory and execute the following commands.</p>
<pre>
cd php-5.2.6/

export LIBTOOLIZE=glibtoolize MACOSX_DEPLOYMENT_TARGET=10.5

cd ext/soap

phpize
</pre>
<p>Now we need to compile and install the extension.</p>
<pre>
MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure

make

sudo make install
</pre>
<p>Now the extension has been compiled and installed, but you&#8217;ll probably need to do some more configuration before it will work.</p>
<p>Edit your php.ini, which is located in /private/etc/php.ini<br />
Change the &#8216;extension_dir&#8217; to &#8216;/usr/lib/php/extensions&#8217; and enable the extension by adding this line &#8216;extension=soap.so&#8217;</p>
<p>Create a symbolic link to the soap extension</p>
<pre>
sudo ln -s /usr/lib/php/extensions/no-debug-non-zts-20060613/soap.so /usr/lib/php/extensions/soap.so
</pre>
<p>And finally restart apache for the changes to take effect</p>
<pre>
sudo apachectl restart
</pre>
<p>That&#8217;s it! you can now use the SOAP extensions.<br />
Please let me know if you have any comments or problems with this.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2008/12/17/installing-php-soap-extension-on-leopard-10-5-5/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Cakephp router and prefixes</title>
		<link>http://blog.pagebakers.nl/2008/12/04/cakephp-router-and-prefixes/</link>
		<comments>http://blog.pagebakers.nl/2008/12/04/cakephp-router-and-prefixes/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 11:24:05 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[prefixes]]></category>
		<category><![CDATA[routes]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=92</guid>
		<description><![CDATA[Cakephp has been supporting admin routes for a long time. It&#8217;s also possible to use custom prefixes next to your admin routes for extra flexibility. However you will probably face some problems when you start using prefix routes. I&#8217;ll show you how to handle some of them. First of all let&#8217;s create our prefix route [...]]]></description>
			<content:encoded><![CDATA[<p>Cakephp has been supporting admin routes for a long time. It&#8217;s also possible to use custom prefixes next to your admin routes for extra flexibility. However you will probably face some problems when you start using prefix routes. I&#8217;ll show you how to handle some of them.<br />
<span id="more-92"></span><br />
First of all let&#8217;s create our prefix route</p>
<pre class="brush: php;">
Router::connect('/manager/:controller/:action/*', array('prefix' =&gt; 'manager', 'manager' =&gt; true));
</pre>
<p><strong>Links</strong><br />
Creating links to your prefixed actions is easy</p>
<pre class="brush: php;">
echo $html-&gt;link('Edit user', array('controller' =&gt; 'users', 'action' =&gt; 'edit', 'manager' =&gt; true, 1));
</pre>
<p>This will create a link to : &#8216;/manager/users/edit/1&#8242;</p>
<p><strong>Pagination</strong><br />
When using pagination in your prefixed actions, you&#8217;ll notice the paginator helper doesn&#8217;t output the correct url&#8217;s by default. Here&#8217;s how to fix it:</p>
<pre class="brush: php;">
$paginator-&gt;options(array('url' =&gt; array('manager' =&gt; true)));
</pre>
<p><strong>Forms</strong><br />
The form helper doesn&#8217;t detect the prefix automatically also.. here&#8217;s how to solve it</p>
<pre class="brush: php;">
echo $form-&gt;create('User', array('url' =&gt; $html-&gt;url(array('pb' =&gt; true, $this-&gt;data['User']['id']))));
</pre>
<p>Unfortunately the Router class doesn&#8217;t detect the prefixes automatically, like it does with admin routes. Which results in a lot of extra code and work when you decide to use prefixes. Hopefully this will be changed in later releases. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2008/12/04/cakephp-router-and-prefixes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>MenuHelper renamed to NavigationHelper</title>
		<link>http://blog.pagebakers.nl/2008/11/27/menuhelper-renamed-to-navigationhelper/</link>
		<comments>http://blog.pagebakers.nl/2008/11/27/menuhelper-renamed-to-navigationhelper/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 12:21:36 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[Pagebakery]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=89</guid>
		<description><![CDATA[I renamed my MenuHelper to NavigationHelper. Navigation just makes more sense then menu. I also improved to code to be more flexible. The repository also has been renamed, get your clone at &#8216;git://github.com/Pagebakers/navigationhelper.git&#8217;. Have fun]]></description>
			<content:encoded><![CDATA[<p>I renamed my MenuHelper to <a href="http://github.com/Pagebakers/navigationhelper/tree/master/navigation.php">NavigationHelper</a>. Navigation just makes more sense then menu. I also improved to code to be more flexible.</p>
<p>The repository also has been renamed, get your clone at &#8216;git://github.com/Pagebakers/navigationhelper.git&#8217;.</p>
<p>Have fun</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2008/11/27/menuhelper-renamed-to-navigationhelper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MenuHelper for CakePHP</title>
		<link>http://blog.pagebakers.nl/2008/11/04/menuhelper-for-cakephp/</link>
		<comments>http://blog.pagebakers.nl/2008/11/04/menuhelper-for-cakephp/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 15:46:31 +0000</pubDate>
		<dc:creator>Eelco Wiersma</dc:creator>
				<category><![CDATA[Cakephp]]></category>
		<category><![CDATA[helper]]></category>
		<category><![CDATA[menu]]></category>

		<guid isPermaLink="false">http://www.pagebakers.nl/?p=85</guid>
		<description><![CDATA[It&#8217;s been a while since the last activity on my blog, but I want to get back posting again. Here&#8217;s my first attempt :) I just released my MenuHelper for CakePHP. It&#8217;s a really simple class, but it saves time. It allows you to generate menu&#8217;s and single links, if a link is currently active [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since the last activity on my blog, but I want to get back posting again. Here&#8217;s my first attempt :)</p>
<p>I just released my <a href="http://github.com/Pagebakers/menuhelper/tree/master">MenuHelper for CakePHP</a>. It&#8217;s a really simple class, but it saves time.<br />
It allows you to generate menu&#8217;s and single links, if a link is currently active it adds an &#8216;active&#8217; class.</p>
<p><strong>Usage:</strong><br />
Copy <a href="http://github.com/Pagebakers/menuhelper/tree/master/menu.php">menu.php</a> to your helpers directory, and enable the helper by adding it to the $helpers array.</p>
<p>Then in your view you can do things like this:</p>
<pre class="brush: php;">
// Echo a list with links
echo $menu-&gt;menu(array(
    array('Home', array('controller' =&gt; 'pages', 'action' =&gt; 'display', 'home')),
    array('Another link to home', '/', array('class' =&gt; 'another-link-to-home'))
), array('id' =&gt; 'my-menu'));

// Or a single link
echo $menu-&gt;link('Home', '/');
</pre>
<p>You can find the source on GitHub:</p>
<p>http://github.com/Pagebakers/menuhelper/tree/master/</p>
<p>Have fun with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.pagebakers.nl/2008/11/04/menuhelper-for-cakephp/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.319 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-14 15:27:36 --><!-- Compression = gzip -->

