<?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>JooCode</title>
	
	<link>http://blog.joocode.com/en</link>
	<description>Joomla, Web Development, Joomla Templates</description>
	<lastBuildDate>Fri, 12 Mar 2010 18:30:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/joocode_en" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="joocode_en" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Joomla! 1.5 Multimedia book review</title>
		<link>http://blog.joocode.com/en/books/joomla-1-5-multimedia-book-review</link>
		<comments>http://blog.joocode.com/en/books/joomla-1-5-multimedia-book-review#comments</comments>
		<pubDate>Tue, 09 Mar 2010 16:00:04 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=262</guid>
		<description><![CDATA[
			
				
			
		
In a modern web site content offered often go beyond the classic text, as well as the classic images, offering visitors video, audio, podcasts and resources embedded from other services on the web.
Joomla, as an excellent CMS, enables us to achieve all this - and more. Some features are there by default, such as the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-multimedia-book-review"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-multimedia-book-review&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>In a modern web site content offered often go beyond the classic text, as well as the classic images, offering visitors video, audio, podcasts and resources embedded from other services on the web.</p>
<p>Joomla, as an excellent CMS, enables us to achieve all this - and more. Some features are there by default, such as the Media Manager, and to handle other functions there are a lot of third party extensions.</p>
<p>Packt Publishing has recently published an interesting book on the subject, called "Joomla! 1.5 Multimedia".</p>
<p><a href="http://www.packtpub.com/joomla-1-5-multimedia/book"><img class="alignnone" title="Joomla 1.5 Multimedia" src="https://www.packtpub.com/images/full/1847197701.jpg" alt="Joomla 1.5 Multimedia" width="500" height="617" /></a></p>
<p>The 350 pages of the book guide the reader through this area of creating and managing a website, while keeping an eye toward accessibility of content. Here is a brief overview of the chapters of the book.</p>
<p><strong>Chapter 1: Getting Started with Joomla! Multimedia</strong></p>
<p>Introduces the concept of multimedia and explains the kind of files that we can include in our project: text, images, audio, video.</p>
<p><strong>Chapter 2: Managing Your Joomla! Average</strong></p>
<p>It introduces the Media Manager of Joomla and outlines alternative methods for managing files: FTP, FTP via Web and extensions such as eXtplorer and Joomla Flash Uploader.</p>
<p><strong>Chapter 3: Text, Characters, and Fonts in Your Joomla! Site</strong></p>
<p>The typography of a website is a very important element, and this chapter covers the most used fonts on the web and explains how to modify the template to use them. Nowadays there are several techniques by which we can include in a site any font you want - on the contrary, in the past this was a very critical area.<br />
The book explains how to use extensions like Frontend font size adjuster, JsIFR3, capDropper to handle the press.</p>
<p><strong>Chapter 4: Adding and Managing Content Image</strong></p>
<p>Introduces a variety of image formats you can use on the web (GIF, JPEG, PNG, SVG) and explains how to incorporate them into a Joomla site, via the button editor, Media Manager, or by inserting custom HTML code.<br />
The book then talks about how to create collections of images, using extensions for image galleries and slideshows.</p>
<p><strong>Chapter 5: Using Audio in Your Joomla! Website</strong></p>
<p>Then the book talks about audio, introducing the concepts, analyzing the formats and to explore how to insert sound files into a Joomla site.<br />
We are introuced to podcasts, collections of audio files that can be easily inserted into a player such as iTunes and automatically updated.</p>
<p><strong>Chapter 6: Using Video in Your Joomla! Website</strong></p>
<p>This chapter explains video. First, the book intruduces the formats and explains how to put audio-visual file on the site by manually entering the HTML code or by referring to an extension - for example, AllVideos, or RokBox Shadowbox.</p>
<p><strong>Chapter 7: Collaborating with External Sources</strong></p>
<p>Worthy of attention is certainly the possibility of including in your site content made available from external sources.<br />
In case of content that takes up large amounts of bandwidth, this solution saves hosting costs and significantly speeds up the site: the technological infrastructure provided by YouTube, for example, is more than what we have on a shared hosting, so the speed of loading of content will be greater.<br />
We learn about Twitter, Facebook, integration of video, integration with TV and radio, Flickr, sites dealing with weather, SlideShare, RSS and more.</p>
<p><strong>Chapter 8: Joomla! Templates and Multimedia</strong></p>
<p>This chapter briefly introduces the concept of templates and functions, then analyzes some commercial templates and their features, mainly carried out through heavy use of JavaScript.<br />
We're also introduced to the mobile topic, explaining how to build and test a mobile version of its website.</p>
<p><strong>Chapter 9: Joomla! Multimedia Project</strong></p>
<p>The last chapter of the book deals with a case study of implementation of a site, the choice of content structure and the extensions that are better suited to achieve the desired functionality.</p>
<p>Ultimately I think this book is very useful to anyone who wants to create a site using the CMS Joomla. Essential for non-adherents, given the variety of topics it will not be boring even to the most compassed creator of web sites.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/books/joomla-1-5-multimedia-book-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wufoo’s Kevin Hale shares really interesting stuff</title>
		<link>http://blog.joocode.com/en/web-app/wufoos-kevin-hale-shares-really-interesting-stuff</link>
		<comments>http://blog.joocode.com/en/web-app/wufoos-kevin-hale-shares-really-interesting-stuff#comments</comments>
		<pubDate>Tue, 09 Mar 2010 09:57:37 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Web App]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=260</guid>
		<description><![CDATA[
			
				
			
		
In the following slides published on SlideShare, Kevin Hale (@ FOWA Miami 2010) shares a lot of interesting insights about web apps - focusing on his company Wufoo.
Too bad I couldn't find a video of that, but the slides (225!) are really interesting.
How to Change Free Users Into Paying Customers - Kevin Hale

View more presentations [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fweb-app%2Fwufoos-kevin-hale-shares-really-interesting-stuff"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fweb-app%2Fwufoos-kevin-hale-shares-really-interesting-stuff&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>In the following slides published on SlideShare, Kevin Hale (@ FOWA Miami 2010) shares a lot of interesting insights about web apps - focusing on his company <a href="http://wufoo.com/">Wufoo</a>.</p>
<p>Too bad I couldn't find a video of that, but the slides (225!) are really interesting.</p>
<div style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="How to Change Free Users Into Paying Customers - Kevin Hale" href="http://www.slideshare.net/carsonified/how-to-change-free-users-into-paying-customers-kevin-hale">How to Change Free Users Into Paying Customers - Kevin Hale</a></strong><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=freetopaidkevinhaleworkshop-100302071257-phpapp02&amp;stripped_title=how-to-change-free-users-into-paying-customers-kevin-hale" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=freetopaidkevinhaleworkshop-100302071257-phpapp02&amp;stripped_title=how-to-change-free-users-into-paying-customers-kevin-hale" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<div id="__ss_3315038" style="width: 425px;">
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/carsonified">Carsonified Team</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/web-app/wufoos-kevin-hale-shares-really-interesting-stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Zappos Culture Book</title>
		<link>http://blog.joocode.com/en/companies/the-zappos-culture-book</link>
		<comments>http://blog.joocode.com/en/companies/the-zappos-culture-book#comments</comments>
		<pubDate>Sat, 06 Mar 2010 10:13:29 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Companies]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=252</guid>
		<description><![CDATA[
			
				
			
		
Zappos is a company, founded in 1999, that sells shoes and clothes online.
It's the biggest online shoe store, acquired by Amazon last year for $1.2 Billion.
What's up with Zappos? Well, last week I stumbled upon an italian startup blog, called Volgere.
One of their posts was a review of the Zappos Culture Book.
I was somewhat interested [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcompanies%2Fthe-zappos-culture-book"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcompanies%2Fthe-zappos-culture-book&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.zappos.com/">Zappos</a> is a company, founded in 1999, that sells shoes and clothes online.</p>
<p>It's the <a href="http://money.cnn.com/magazines/business2/business2_archive/2006/12/01/8394993/index.htm">biggest online shoe store</a>, <a href="http://techcrunch.com/2009/11/02/amazon-closes-zappos-deal-ends-up-paying-1-2-billion/">acquired by Amazon</a> last year for $1.2 Billion.</p>
<p>What's up with Zappos? Well, last week I stumbled upon an italian startup blog, called Volgere.</p>
<p>One of their posts was a <a href="http://volgere.com/zappos-2009-culture-book-review">review of the Zappos Culture Book</a>.</p>
<p>I was somewhat interested in this book, so I read the post and I eventually got to the Zappos Book page, where I read I could get the book for free.</p>
<p>That surprised me, and I ordered it. Not that I really wanted to know about the Zappos culture (altought I have read a lot of good things about that), I was just curious if they were really going to send it to me.</p>
<p>Well, they did.</p>
<p>And they did it in a very special way, read on.</p>
<p>Last week I was also going to order a few english-language books (Rework by 37signals &amp; Linchpin by Seth Godin). I tried Amazon.com, but their shipping prices were too high. Getting my books from America to Italy was going to cost me around 20$ for the "standard shipping" - that means I was going to have my books in 25 days.</p>
<p>I switched to Amazon.co.uk, and being in Europe they had a better shipping price and delivery times.</p>
<p>An express shipping from Amazon.com would have costed me around 35$, not really worth it.</p>
<p>What Zappos did, however, is incredible. Not only they sent me a book for free, but they sent it from America using express shipping: I ordered it on March 1st, and it arrived the 4th! 3 days later, unbelievable.</p>
<p>And, by the way, the book is great and inspiring.</p>
<p><a href="http://about.zappos.com/our-unique-culture/zappos-core-values/deliver-wow-through-service">Deliver WOW through service</a>, they made it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/companies/the-zappos-culture-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A free chapter of the book “Joomla 1.5 Multimedia”</title>
		<link>http://blog.joocode.com/en/cms/joomla/a-free-chapter-of-the-book-joomla-1-5-multimedia</link>
		<comments>http://blog.joocode.com/en/cms/joomla/a-free-chapter-of-the-book-joomla-1-5-multimedia#comments</comments>
		<pubDate>Thu, 18 Feb 2010 10:15:55 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=249</guid>
		<description><![CDATA[
			
				
			
		
Packt Publishing was so kind to give me a chapter of the newly published book "Joomla 1.5 Multimedia" by Allan Walker, so that i could share it with you.
47 pages of a very interesting chapter - Adding and Managing Image Content.
You can download it now!
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fa-free-chapter-of-the-book-joomla-1-5-multimedia"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fa-free-chapter-of-the-book-joomla-1-5-multimedia&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Packt Publishing was so kind to give me a chapter of the newly published book "<a href="http://www.packtpub.com/joomla-1-5-multimedia/book">Joomla 1.5 Multimedia</a>" by Allan Walker, so that i could share it with you.</p>
<p>47 pages of a very interesting chapter - Adding and Managing Image Content.</p>
<p><a href="http://www.packtpub.com/files/7702-joomla-1-5-multimedia-4-adding-and-managing-image-content.pdf">You can download it</a> now!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/cms/joomla/a-free-chapter-of-the-book-joomla-1-5-multimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“Joomla 1.5 Development Cookbook” Review</title>
		<link>http://blog.joocode.com/en/books/joomla-1-5-development-cookbook-review</link>
		<comments>http://blog.joocode.com/en/books/joomla-1-5-development-cookbook-review#comments</comments>
		<pubDate>Mon, 16 Nov 2009 07:45:05 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Joomla Development]]></category>
		<category><![CDATA[Packt Publishing]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=235</guid>
		<description><![CDATA[
			
				
			
		
After the review of the book "Joomla! 1.5 Customization http://blog.joocode.com/libri/review-del-libro-joomla-1-5-customization/" and "Joomla! 1.5 Template Design http://blog.joocode.com/libri/review-del-libro-joomla-1-5-template-design/" published in the previous months, Packt Publishing was so kind to send me a copy "Joomla 1.5 Development Cookbook" to review.
This book was written by James Kennard http://www.webamoeba.co.uk/site/, author of the fabulous book "Mastering Joomla 1.5 Extension and Framework [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-development-cookbook-review"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-development-cookbook-review&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">After the review of the book "Joomla! 1.5 Customization http://blog.joocode.com/libri/review-del-libro-joomla-1-5-customization/" and "Joomla! 1.5 Template Design http://blog.joocode.com/libri/review-del-libro-joomla-1-5-template-design/" published in the previous months, Packt Publishing was so kind to send me a copy "Joomla 1.5 Development Cookbook" to review.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">This book was written by James Kennard http://www.webamoeba.co.uk/site/, author of the fabulous book "Mastering Joomla 1.5 Extension and Framework Development", a bible for developers using the Joomla 1.5 platform.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The book is essentially a set of recipes, over 130 quick solutions to practical problems, guides and tips to overcome quickly all the obstacles that you may find during the development of extensions and applications that use the Joomla framework.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">After two weeks of reading it, the book is already become a must-have during the development and planning sessions.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The first chapter presents recipes that introduce JoomlaCode.org and explain how to setup a GPL project hosted by the Joomla servers.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It continues with quick lessons that illustrate SVN and its basic usage.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The book then flows into real development: security, database, using the session and user management using class JUser, the explanation of how Joomla allows the use of Unicode strings while based on a language (PHP) does not support it fully.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It then goes on to talk about CSS, JavaScript, Mootools, user interaction, metadata, PDF, RSS, MIME.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Really useful is the section on the management of the backend administration, followed by an explanation of how the plugins can be used effectively and how to extend the existing functionality using the class JParameter.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The book ends with three chapters which explain:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- How to use the class JObject and how to work with arrays using class JArrayHelper</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- How to handle errors using the static class JError and exceptions</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- Working with the local filesystem using JFile, JFolder and JPath</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The book has a website http://www.joomlacookbook.org/.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Definitely a book to recommend to any professional and amateur developer!</div>
<p>After the review of the book "<a href="http://blog.joocode.com/libri/review-del-libro-joomla-1-5-customization/">Joomla! 1.5 Customization</a>" and "<a href=" http://blog.joocode.com/libri/review-del-libro-joomla-1-5-template-design/">Joomla! 1.5 Template Design</a>" published in the previous months, <a rel="nofollow" href="http://www.packtpub.com/">Packt Publishing</a> was so kind to send me a copy  of  "<strong>Joomla 1.5 Development Cookbook</strong>" to review.</p>
<p><img class="alignnone size-full wp-image-2003" title="Joomla 1.5 Development Cookbook" src="http://blog.joocode.com/wp-content/uploads/2009/11/img-1.jpg" alt="Joomla 1.5 Development Cookbook" width="258" height="271" /></p>
<p>Released in September 2009, this book was written by <a rel="nofollow" href="http://www.webamoeba.co.uk/site/">James Kennard</a>, author of the fabulous book "Mastering Joomla 1.5 Extension and Framework Development", a bible for developers using the Joomla 1.5 platform.</p>
<p>The book is essentially a set of recipes, <strong>over 130 quick solutions to practical problems</strong>, guides and tips to overcome quickly all the obstacles that you may find during the development of extensions and applications that use the Joomla framework.</p>
<p>After two weeks of reading it, the book is already become a <strong>must-have companion during the development and planning sessions</strong>.</p>
<p>The first chapter presents recipes that introduce JoomlaCode.org and explain how to setup a GPL project hosted by the Joomla servers.</p>
<p>It continues with quick lessons that illustrate SVN and its basic usage.</p>
<p>The book then flows into <strong>real development</strong>: security, database, using the session and user management using class JUser, the explanation of how Joomla allows the use of Unicode strings while based on a language (PHP) does not support it fully.</p>
<p>It then goes on to talk about CSS, JavaScript, Mootools, user interaction, metadata, PDF, RSS, MIME.</p>
<p>Really useful is the section on the management of the backend administration, followed by an explanation of how the plugins can be used effectively and how to extend the existing functionality using the class JParameter.</p>
<p>The book ends with three chapters which explain:</p>
<ul>
<li>How to use the class JObject and how to work with arrays using class JArrayHelper</li>
<li>How to handle errors using the static class JError and exceptions</li>
<li>Working with the local filesystem using JFile, JFolder and JPath</li>
</ul>
<p>You can find more details on the <a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-development-cookbook/mid/0810090l0j9h?utm_source=blog.joocode.com&amp;utm_medium=affiliate&amp;utm_content=blog&amp;utm_campaign=mdb_000995">Packt website</a> and download the sample chapter "<a rel="nofollow" href="http://www.packtpub.com/files/8143-joomla-1-5-development-cookbook-sample-chapter-2-keeping-extensions-secure.pdf">Keeping Extensions Secure</a>".</p>
<p>Definitely a<strong> book to recommend to any professional and amateur developer</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/books/joomla-1-5-development-cookbook-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>“Joomla 1.5 Customization” Book Review</title>
		<link>http://blog.joocode.com/en/books/joomla-1-5-customization-book-review</link>
		<comments>http://blog.joocode.com/en/books/joomla-1-5-customization-book-review#comments</comments>
		<pubDate>Mon, 05 Oct 2009 12:12:49 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Joomla Book]]></category>
		<category><![CDATA[Packt Publishing]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=232</guid>
		<description><![CDATA[
			
				
			
		
"Joomla 1.5 Customization" is a book edited by Packt Publishing and written by Daniel Chapman, founder of Ninja Forge, a company that produces Joomla Extensions.

The book is a guide to the creation of websites using the Joomla Content Management System, and it is written for people that are not professional developers and want to customize [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-customization-book-review"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-customization-book-review&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>"<a rel="nofollow" href="http://www.packtpub.com/joomla-1-5x-customization/mid/010909qr8yo5?utm_source=blog.joocode.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000440">Joomla 1.5 Customization</a>" is a book edited by Packt Publishing and written by Daniel Chapman, founder of <a rel="nofollow" href="http://ninjaforge.com/">Ninja Forge</a>, a company that produces Joomla Extensions.</p>
<p><img class="alignnone size-full wp-image-233" title="Joomla! 1.5x customization" src="http://blog.joocode.com/en/wp-content/uploads/2009/10/Joomla-1.5x-customization.jpg" alt="Joomla! 1.5x customization" width="203" height="250" /></p>
<p>The book is a <strong>guide to the creation of websites using the Joomla Content Management System</strong>, and it is written for people that are not professional developers and want to customize their website and introduce non-standard features.</p>
<p>The book talks about the building of an example site, where the users subscribe annually to have access to specialized information, and they can communicate via comments and forum posts.</p>
<p>The Daniel goal is to teach the reader the basics about customizing existing extensions the way he wants, and integrating them to build a complete website.</p>
<p>The book begins introducing the web technologies involved in a Joomla website: HTML, CSS, PHP, JavaScript, XML, SQL.<br />
The reader is guided through the setup of the tools needed - from the FTP client to the SVN server.</p>
<p>Then <strong>begins the website planning</strong>: after defining the objectives, we have to find the right extensions for us, and Daniel explains how to do it.</p>
<p>After we have chosen the template we will use on the website, we learn how to customize it to include the logo and personalized graphics we have.</p>
<p>So we switch to a more technical phase: the <strong>customization of installed extensions</strong> - modules, plugins and components. The discussion is not meant in any way be a complete guide, but describes the modus operandi, so that people can begin to get familiar with the customization of the extensions and not feel scared when it is necessary to make a small change to your site.</p>
<p>The discussion continues with a chapter devoted to <strong>identifying and correcting problems</strong> with a brief memorandum of common problems followed by recommendations for solving problems through the Web looking for support.</p>
<p>After this, we talk about <strong>how to promote your site</strong> through search engine optimization and marketing - traditional and modern. It is also explained how to track visits to our site through Google Analytics.</p>
<p>The final chapter is dedicated to <strong>monetizing the website</strong>, or how to obtain monetary benefits from the popularity of our site: advertising, selling information, products or services.</p>
<p>Ultimately this book is <strong>recommended for those who have already taken the first steps with Joomla and want to deepen their knowledge and produce their Web sites supported by the highly valuable explanations contained in this volume</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/books/joomla-1-5-customization-book-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Giveaway – Win a Packt Publishing Joomla Book!</title>
		<link>http://blog.joocode.com/en/cms/joomla/giveaway-win-a-packt-publishing-joomla-book</link>
		<comments>http://blog.joocode.com/en/cms/joomla/giveaway-win-a-packt-publishing-joomla-book#comments</comments>
		<pubDate>Tue, 01 Sep 2009 11:13:10 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Contest]]></category>
		<category><![CDATA[Joomla Book]]></category>
		<category><![CDATA[Packt]]></category>
		<category><![CDATA[Packt Publishing]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=227</guid>
		<description><![CDATA[
			
				
			
		
Thanks to Packt Publishing, here's a great opportunity to win one of the following books:
  
Joomla! 1.5 Template Design
(published in june 2009)
Joomla! E-Commerce with VirtueMart
(published in march 2009)
Joomla! 1.5x Customization: Make Your Site Adapt to Your Needs
(published in august 2009)
How can I win the book
I've got 3 books to giveaway.
There are 2 ways to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fgiveaway-win-a-packt-publishing-joomla-book"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fgiveaway-win-a-packt-publishing-joomla-book&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Thanks to Packt Publishing, here's a great opportunity to win one of the following books:</p>
<p><a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu"><img title="Joomla 1.5 Template Design" src="http://blog.joocode.com/images/joomla_1.5_template_design.jpg" alt="" width="150" height="185" /></a> <a rel="nofollow" href="http://www.packtpub.com/joomla-e-commerce-with-virtuemart-1-1-x/book/mid/160709lctio6"><img title="Joomla e-Commerce with VirtueMart" src="http://blog.joocode.com/images/joomla_e-commerce_with_virtuemart.jpg" alt="" width="150" height="185" /></a> <a rel="nofollow" href="http://www.packtpub.com/joomla-1-5x-customization/mid/010909qr8yo5?utm_source=blog.joocode.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000440"><img title="Joomla! 1.5x customization" src="http://blog.joocode.com/images/Joomla-1.5x-customization.jpg" alt="" width="146" height="180" /></a></p>
<p><a rel="nofollow" title="Joomla! 1.5 Template Design" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu">Joomla! 1.5 Template Design</a><br />
(published in june 2009)</p>
<p><a rel="nofollow" title="Joomla! E-Commerce with VirtueMart" href="http://www.packtpub.com/joomla-e-commerce-with-virtuemart-1-1-x/book/mid/160709lctio6">Joomla! E-Commerce with VirtueMart</a><br />
(published in march 2009)</p>
<p><a rel="nofollow" title="Joomla! 1.5x Customization: Make Your Site Adapt to Your Needs" href="http://www.packtpub.com/joomla-1-5x-customization/mid/010909qr8yo5?utm_source=blog.joocode.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000440">Joomla! 1.5x Customization: Make Your Site Adapt to Your Needs</a><br />
(published in august 2009)<span id="more-227"></span></p>
<h3>How can I win the book</h3>
<p>I've got 3 books to giveaway.</p>
<p>There are 2 ways to enter the competition.</p>
<p><strong>First way</strong></p>
<p>To win one of these, you just have to:</p>
<ol>
<li>Register a (free) account on <a href="http://translate.google.com/translate?hl=en&amp;sl=it&amp;tl=en&amp;u=http://forum.joocode.com/&amp;prev=hp">forum.joocode.com</a></li>
<li>Write a post, writing at the end of it the book you'd like to win</li>
</ol>
<p>Finish!</p>
<p>The forum post can be a question or an answer to an existing post.</p>
<p>Example (question): "<em>Which is the best Joomla Forum Extension?<br />
P.S. Book: Joomla! 1.5 Template Design</em>"</p>
<p>Example (answer): "<em>Kunena, because... bla bla..<br />
P.S. Book: Joomla! E-Commerce with VirtueMart</em>"</p>
<p><strong>Second way</strong></p>
<p>Retweet the message</p>
<p><strong>RT @joocode: Win a Joomla Book (<em>Template | Ecommerce | Customization</em>) </strong><strong>http://tinyurl.com/npj9tz</strong></p>
<p>Es.</p>
<p>RT @joocode: Win a Joomla Book (<em>Template</em>) http://tinyurl.com/npj9tz<strong></strong></p>
<h3>Drawing</h3>
<p>Friday 11 September 2009,  12:00 the contest ends.</p>
<p>Monday 14 Semptember I will nominate the winners of the competition, using the <a rel="nofollow" href="http://www.random.org/">http://www.random.org/</a> tools.</p>
<h3>Rules</h3>
<p>If 20 people choose the book <a rel="nofollow" title="Joomla! 1.5 Template Design" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu">Joomla! 1.5 Template Design</a> and 1 the book <a rel="nofollow" title="Joomla! 1.5x Customization: Make Your Site Adapt to Your Needs" href="http://www.packtpub.com/joomla-1-5x-customization/mid/010909qr8yo5?utm_source=blog.joocode.com&amp;utm_medium=bookrev&amp;utm_content=blog&amp;utm_campaign=mdb_000440">Joomla! 1.5x Customization: Make Your Site Adapt to Your Needs</a>, this person will win the book, because he's the only one that chose that book.</p>
<p>The 20 people that chose the first book, however, will have a probability of 1/20.</p>
<p>You can only choose 1 book. If a person writes for more than one book, (s)he will be extracted for the latest book requested.</p>
<p>The printed book will be sent to Europe and USA folks. If you live in a different part of the world, you'll be sent an e-book version of it.</p>
<h3>Thanks</h3>
<p>Thanks to <a rel="nofollow" href="http://www.packtpub.com">Packt Publishing</a>for providing the contest books!</p>
<p><a rel="nofollow" href="http://www.packtpub.com"><img title="Packt Publishing" src="http://authors.packtpub.com/sites/default/files/pixture_reloaded_logo.png" alt="" width="551" height="80" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/cms/joomla/giveaway-win-a-packt-publishing-joomla-book/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joomla! 1.5 Template Design Book Review</title>
		<link>http://blog.joocode.com/en/books/joomla-1-5-template-design-book-review</link>
		<comments>http://blog.joocode.com/en/books/joomla-1-5-template-design-book-review#comments</comments>
		<pubDate>Tue, 25 Aug 2009 09:41:20 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Joomla Book]]></category>
		<category><![CDATA[Joomla Template Design]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=225</guid>
		<description><![CDATA[
			
				
			
		
Packt Publishing kindly asked me to review their latest book about Joomla, titled Joomla! 1.5 Template Design.
Written by Tessa Blakeley Silver and published during June 2009, the book is a complete guide to the design and creation of templates for websites built using the Joomla content management system.
The book has a quite specific target, because [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-template-design-book-review"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fbooks%2Fjoomla-1-5-template-design-book-review&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Packt Publishing kindly asked me to review their latest book about Joomla, titled <a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu">Joomla! 1.5 Template Design</a>.</p>
<p>Written by <strong>Tessa Blakeley Silver</strong> and published during June 2009, the book is a complete guide to the design and creation of templates for websites built using the Joomla content management system.</p>
<p>The book has a quite specific target, because the author is addressing only web designers that already know a bit about how Joomla works, and (obviously) know (X)HTML and CSS.</p>
<p>Following the course of the book <strong>you'll learn how to build a template from scratch</strong>, starting from the general idea, creating the mockup, the design to finally have a <strong>great template</strong>, <strong>standards-compliant</strong>, <strong>tableless</strong>, <strong>modern</strong> and <strong>search engine optimized</strong>.</p>
<p>Tessa first introduces her personal design comp method: instead of creating the mockup using Photoshop of Fireworks, <strong>we'll create a design demo using HTML and CSS</strong>. This way we'll save a ton of time, because when the client approves the design, we'll already have a solid on which we can work, without wasting time adapting the Photoshop psd.</p>
<p>This way we'll also be able to know if it's possibile to create the design we want to make: using Photoshop, you'll never know, you'll only be able to rely on your experience to prevent problems and hours of time wasted.</p>
<p>Once we've done the mockup and the client has approved it, we'll get into the details and we'll integrate the Joomla elements, such as components and modules.</p>
<p>The book explains very clearly how Joomla works to create the presentation, the website look.</p>
<p>After we get the template work correctly, the first phase terminates, and <strong>it's time to debug and validate our code</strong>. We'll learn how to use powerful tools like Firebug, QorSMode and the IE Developer Toolbar.</p>
<p>Now the template is ready to use, but <strong>we can improve it to make it perfect</strong>: we can create dynamic layouts, drop-down menus, we can also use Flash to design great interfaces.</p>
<p>Tessa guides us to explore the <strong>AJAX interactivity</strong> to integrate advanced functionalities, explains the use of template overrides to customize the Joomla output, how to use the Joomla suffixes to design each module and page separately and other great expert tricks.</p>
<p>As the last chapter title says, "<em>good design isn't always visual</em>". A web site must take care of the users first, but also must be search engine friendly, so that our website can increase its users over time.</p>
<div class="wp-caption alignnone" style="width: 220px"><a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu"><img title="Joomla! 1.5 Template Design" src="http://blog.joocode.com/images/joomla-1.5-template-design-sidebar.jpg" alt="Joomla! 1.5 Template Design" width="210" height="259" /></a><p class="wp-caption-text">Joomla! 1.5 Template Design</p></div>
<p>This is <strong>a book to read</strong> and <strong>always keep near your desk</strong>, because it will be really useful as a <strong>reference</strong> during all your Joomla website life cycle. <strong>A must for every Joomla template designer</strong>, and for everyone that wants to customize their website theme.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/books/joomla-1-5-template-design-book-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Javascript Effects with Joomla!</title>
		<link>http://blog.joocode.com/en/cms/joomla/using-javascript-effects-with-joomla</link>
		<comments>http://blog.joocode.com/en/cms/joomla/using-javascript-effects-with-joomla#comments</comments>
		<pubDate>Tue, 28 Jul 2009 12:06:54 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=218</guid>
		<description><![CDATA[
			
				
			
		
Customizing Google Maps
Google Maps has a comprehensive API for interacting with maps on your website. MooTools can be used to load the Google Maps engine at the correct time. It can also act as a bridge between the map and other HTML elements on your site.
To get started, you will first need to get an [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fusing-javascript-effects-with-joomla"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fusing-javascript-effects-with-joomla&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<h2>Customizing Google Maps</h2>
<p>Google Maps has a comprehensive API for interacting with maps on your website. MooTools can be used to load the Google Maps engine at the correct time. It can also act as a bridge between the map and other HTML elements on your site.</p>
<p>To get started, you will first need to get an API key to use Google Maps on your domain. You can sign up for a free key at <a rel="nofollow" href="http://code.google.com/apis/maps/signup.html" target="_blank">http://code.google.com/apis/maps/signup.html</a>. Even if you are working on your local computer, you still need the key. For instance, if the base URL of your Joomla installation is <em>http://localhost/joomla</em>, you will enter <em>localhost</em> as the domain for your API key.</p>
<p><span id="more-218"></span>Once you have an API key ready, create the file <em>basicmap.js</em> in the <em>/components/com_js</em> folder, and fill it with the following code:</p>
<pre style="margin-left: 40px;">window.addEvent('domready', function()
{
 if (GBrowserIsCompatible())
 {
 var map = new GMap2($('map_canvas'));
 map.setCenter(new GLatLng(38.89, -77.04), 12);
 window.onunload=function()
 {
 GUnload();
 };
 }
});</pre>
<p>The entire script is wrapped within a call to the MooTools-specific <em>addEvent()</em> member function of <em>window</em>. Because we want this code to execute once the DOM is ready, the first parameter is the event name <em>'domready'</em>. The second parameter is an anonymous function containing our code.</p>
<p style="margin-left: 40px; margin-right: 40px;"><em><strong>What does the call to function() do?</strong><br />
Using function() in JavaScript is a way of creating an anonymous function. This way, you can create functions that are used in only one place (such as event handlers) without cluttering the namespace with a needless function name. Also, the code within the anonymous function operates within its own scope; this is referred to as a closure. Closures are very frequently used in modern JavaScript frameworks, for event handling and other distinct tasks.</em></p>
<p>Once inside of the function, <em>GBrowserIsCompatible()</em> is used to determine if the browser is capable of running Google Maps. If it is, a new instance of <em>GMap2()</em> is declared and bound to the HTML element that has an id of <em>'map_canvas'</em> and is stored into <em>map</em>. The call to <em>$('map_canvas')</em> is a MooTools shortcut for <em>document.GetElementById().</em></p>
<p>Next, the <em>setCenter()</em> member function of map is called to tell Google Maps where to center the map and how far to zoom in. The first parameter is a <em>GLatLng()</em> object, which is used to set the specific latitude and longitude of the map's center. The other parameter determines the zoom level, which is set to 12 in this case. Finally, the <em>window.onunload</em> event is set to a function that calls <em>GUnload()</em>. When the user navigates away from the page, this function removes Google Maps from memory, to prevent memory leaks.</p>
<p>With our JavaScript in place, it is now time to add a function to the controller in <em>/components/com_js/js.php</em> that will load it along with some HTML. Add the following <em>basicMap()</em> function to this file:</p>
<pre style="margin-left: 40px;">function basicMap()
{
 $key = 'DoNotUseThisKeyGetOneFromCodeDotGoogleDotCom';
 JHTML::_('behavior.mootools');
 $document =&amp; JFactory::getDocument();
 $document-&gt;addScript('http://maps.google.com/maps?file=api&amp;v=
 2&amp;key=' . $key);
 $document-&gt;addScript(
 JURI::base() . 'components/com_js/basicmap.js');
 ?&gt;
 &lt;div id="map_canvas" style="width: 500px; height: 300px"&gt;&lt;/div&gt;
 &lt;?php
}</pre>
<p>The <em>basicMap()</em> function starts off by setting <em>$key</em> to the API key received from Google. You should replace this value with the one you receive at <a rel="nofollow" href="http://code.google.com/apis/maps/signup.html" target="_blank">http://code.google.com/apis/maps/signup.html</a>. Next, <em>JHTML::_('behavior.mootools');</em> is called to load MooTools into the <em>&lt;head&gt;</em> tag of the HTML document. This is followed by getting a reference to the current document object through the <em>getDocument()</em> member function of <em>JFactory</em>. The <em>addScript()</em> member function is called twice—once to load in the Google Maps API (using our key), then again to load our <em>basicmap.js</em> script. (The Google Maps API calls in all of the functions and class definitions beginning with a capital 'G'.)</p>
<p>Finally, a <em>&lt;div&gt;</em> with an id of <em>'map_canvas'</em> is sent to the browser. Once this function is in place and <em>js.php</em> has been saved, load <em>index.php?option=com_js&amp;task=basicMap</em> in the browser. Your map should look like this:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomla-ext-article-image01.png" alt="" /></p>
<p>We can make this map slightly more interesting by adding a marker to a specific address. To do so, add the highlighted code below to the <em>basicmap.js</em> file:</p>
<pre style="margin-left: 40px;">window.addEvent('domready', function()
{
 if (GBrowserIsCompatible())
 {
 var map = new GMap2($('map_canvas'));
 map.setCenter(new GLatLng(38.89, -77.04), 12);

 <strong>var whitehouse = new GClientGeocoder();
 whitehouse.getLatLng('1600 Pennsylvania Ave NW',
 function(latlng)
 {
 marker = new GMarker( latlng );
 marker.bindInfoWindowHtml('&lt;strong&gt;The White
 House&lt;/strong&gt;');
 map.addOverlay(marker);
 }); </strong>
 window.onunload=function(){
 GUnload();
 };
 }
});</pre>
<p>This code sets <em>whitehouse</em> as an instance of the <em>GClientGeocoder</em> class. Next, the <em>getLatLng()</em> member function of <em>GClientGeocoder</em> is called. The first parameter is the street address to be looked up. The second parameter is an anonymous function where the <em>GLatLng</em> object is passed once the address lookup is complete. Within this function, marker is set as a new <em>GMarker</em> object, which takes the passed-in <em>latlng</em> object as a parameter. The <em>bindInfoWindowHTML()</em> member function of <em>GMarker</em> is called to add an HTML message to appear in a balloon above the marker. Finally, the maker is passed into the <em>addOverlay()</em> member function of <em>GMap2</em>, to place it on the map.</p>
<p>Save <em>basicmap.js</em> and then reload <em>index.php?option=com_js&amp;task=basicMap</em>. You should now see the same map, only with a red pin. When you click on the red pin, your map should look like this:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomla-ext-article-image02.png" alt="" /></p>
<h2>Interactive Maps</h2>
<p>These two different maps show the basic functionality of getting Google Maps on your own website. These maps are very basic; you could easily create them at <a rel="nofollow" href="http://maps.google.com" target="_blank">maps.google.com</a> then embed them in a standard Joomla! article with the HTML code they provide you. However, you would not have the opportunity to add functions that interact with the other elements on your page. To do that, we will create some more HTML code and then write some MooTools-powered JavaScript to bridge our content with Google Maps.</p>
<p>Open the <em>/components/com_js/js.php</em> file and add the following <em>selectMap()</em> function to the controller:<span style="font-family: monospace;"><br />
</span></p>
<pre style="margin-left: 40px;">function selectMap()
{
 $key = 'DoNotUseThisKeyGetOneFromCodeDotGoogleDotCom';
 JHTML::_('behavior.mootools');
 $document =&amp; JFactory::getDocument();
 $document-&gt;addScript('http://maps.google.com/maps?file=api&amp;v
 =2&amp;key=' . $key);
 $document-&gt;addScript(
 JURI::base() . 'components/com_js/selectmap.js');
 ?&gt;
 &lt;div id="map_canvas" style="width: 500px; height: 300px"&gt;&lt;/div&gt;
 &lt;select id="map_selections"&gt;
 &lt;option value=""&gt;(select...)&lt;/option&gt;
 &lt;option value="1200 K Street NW"&gt;Salad Surprises&lt;/option&gt;
 &lt;option value="1221 Connecticut Avenue NW"&gt;The Daily
 Dish&lt;/option&gt;
 &lt;option value="701 H Street NW"&gt;Sushi and Sashimi&lt;/option&gt;
 &lt;/select&gt;
&lt;?php
}
<span style="font-family: monospace;"> </span></pre>
<p>This function is almost identical to <em>basicMap()</em> except for two things—<em>selectmap.js</em> is being added instead of <em>basicmap.js</em>, and a <em>&lt;select&gt;</em> element has been added beneath the <em>&lt;div&gt;</em>. The <em>&lt;select&gt;</em> element has an <em>id</em> that will be used in the JavaScript. The options of the <em>&lt;select&gt;</em> element are restaurants, with different addresses as values. The JavaScript code will bind a function to the <em>onChange</em> event so that the marker will move as different restaurants are selected.</p>
<hr size="1" noshade="noshade" />
<div class="header">Learning Joomla! 1.5 Extension Development</div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="99" valign="top"><a rel="nofollow" href="http://www.packtpub.com/learning-joomla-1.5-extension-development/book/"><img class="left" title="Learning Joomla! 1.5 Extension Development" src="http://images.packtpub.com/images/100x123/1847196209.png" border="0" alt="Learning Joomla! 1.5 Extension Development" width="99" height="123" /></a></td>
<td valign="top">A practical tutorial for creating your first Joomla! 1.5 extensions with PHP, written and tested against the final release of Joomla! 1.5</p>
<ul>
<li>Program your own Joomla! extensions</li>
<li>Master Model-View-Controller design</li>
<li>Build configurable site modules to show information on every page</li>
<li>Use built-in HTML and JavaScript functions</li>
</ul>
<p><a rel="nofollow" href="http://www.packtpub.com/learning-joomla-1.5-extension-development/book/">http://www.packtpub.com/learning-joomla!-1.5-extension-development/book</a></td>
</tr>
</tbody>
</table>
<hr size="1" noshade="noshade" />To add this JavaScript, create a file named <em>selectmap.js</em> in the <em>/components/com_js</em> folder, and fill it with the following code:</p>
<pre style="margin-left: 40px;">window.addEvent('domready', function()
 {
 if (GBrowserIsCompatible())
 {
 var map = new GMap2($('map_canvas'));
 map.setCenter(new GLatLng(38.89, -77.04), 12);
 var restaurant = new GClientGeocoder();
 $('map_selections').addEvent('change', function(){
 if(this.value != '')
 {
 name = this.options[this.selectedIndex].text;
 restaurant.getLatLng(this.value, function(latlng){
 map_marker = new GMarker( latlng );
 map.clearOverlays();
 map.addOverlay(map_marker);
 map_marker.openInfoWindowHtml('&lt;strong&gt;' + name +
 '&lt;/strong&gt;');
 });
 }
 });
window.onunload=function()
 {
 GUnload();
 };
 }
});</pre>
<p>This script is similar to the one used for the first two maps, until we get past the call to <em>map.setCenter()</em>. The variable <em>restaurant</em> is first set as an instance of the <em>GClientGeocoder()</em> class. However, member functions are not called on it right away, as it was done in the previous example. This is because we want to wait for the <em>&lt;select&gt;</em> element to change before we do anything. The call to <em>$('map_selections')</em> finds the <em>&lt;select&gt;</em> element, and then <em>addEvent()</em> is used to assign a function to the <em>onChange</em> event; the string <em>'change'</em> is passed as the first parameter.</p>
<p>The function passed in as the second parameter first checks to make sure that the element's value is not null by checking <em>this.value</em>. If the value is not null, this function proceeds by getting the option's text and storing it in <em>name</em>. Then the <em>getLatLng()</em> member function of <em>GClientGeocoder</em> is called on restaurant. The street address is passed in as the first parameter. Once the latitude and longitude of the address is found, the anonymous function in the second parameter accepts the <em>GLatLng</em> object that is returned, using it to set <em>map_marker</em> as a new <em>GMarker</em> object.</p>
<p>Before adding the marker to the map, the <em>clearOverlays()</em> function of the map object is called to remove any previously-placed marker. Then, the marker is passed into the <em>addOverlay()</em> function to be placed on the map. Although the marker is now set on the map, we can still interact with it. The <em>openInfoWindowHtml()</em> member function of <em>GMarker</em> allows us to do this and pass in some HTML with the name of the restaurant.</p>
<p>With the controller function and JavaScript in place and saved, load <em>index.php?option=com_js&amp;task=selectMap</em> in your browser. The map should load again, this time with a dropdown box at the bottom. Select one of the restaurants, and then switch to another. If you select <strong>Sushi and Sashimi</strong> from the list, your map should look similar to the following:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomla-ext-article-image03.png" alt="" /></p>
<p>These examples scratch the surface of what is possible with the Google Maps API. You can manage layers, add shapes, use custom icons instead of the standard pins, and use many other features to build sophisticated custom maps. For more information, go to <a rel="nofollow" href="http://code.google.com/apis/maps/documentation/index.html" target="_blank">http://code.google.com/apis/maps/documentation/index.html</a> where you can read more about the available features.</p>
<h2>Using jQuery</h2>
<p>Another popular JavaScript framework is jQuery. The jQuery framework has functionality that is similar to MooTools, but uses a different style of code. Although they are separate projects, extra care must be taken when using them together. By default, both frameworks automatically reserve <em>$</em> to have a special meaning in JavaScript. If you do not take steps to avoid this behavior, one library will overwrite the other's assignments and the scripts will fail.</p>
<p>Fortunately, jQuery has strategies that you can use to avoid this conflict. There are three things that you must do to keep jQuery and MooTools out of each other's way:</p>
<ul>
<li>Load jQuery only after MooTools has been loaded</li>
<li>Call <em>jQuery.noConflict()</em> to return control of <em>$</em> to MooTools</li>
<li>Reference jQuery directly in your scripts instead of using <em>$</em></li>
</ul>
<h2>Writing jQuery code</h2>
<p>Before avoiding conflicts with MooTools, start by writing some jQuery without MooTools being present. First, go to <a rel="nofollow" href="http://jquery.com" target="_blank">jquery.com</a>, download the latest version of jQuery, and then place it in the <em>/components/com_js</em> directory; the production version of the script will be fine. Then, create a file named <em>jquery-test.js</em> in the <em>/components/com_js</em> folder, and fill this new file with the following code:</p>
<pre style="margin-left: 40px;">$(document).ready(function()
 {
 $('#message_box').click(function()
 {
 $(this).addClass('contentheading');
 });
 });</pre>
<p>This is a simple application of jQuery—when the DOM is fully loaded in the browser, the code within the first call to <em>function()</em> executes. The code <em>$('#message_box')</em> finds the element in the DOM that has an id of <em>'message_box'</em>, and uses <em>click()</em> to assign an <em>onClick</em> JavaScript event to it. Finally, the <em>addClass()</em> method is used to add the CSS class <em>'contentheading'</em> to the element.</p>
<p>With <em>jquery-test.js</em> in place, open the <em>/components/com_js/js.php</em> file, and add the following function task to the controller:</p>
<pre style="margin-left: 40px;">function useJquery()
{
 $document =&amp; JFactory::getDocument();
 $document-&gt;addScript(
 JURI::base() . 'components/com_js/jquery-1.2.6.min.js');
 $document-&gt;addScript(
 JURI::base() . 'components/com_js/jquery-test.js');
 ?&gt;
 &lt;p id="message_box"&gt;This is a message&lt;/p&gt;
 &lt;?php
}</pre>
<p>First, a reference to the document object is stored in <em>$document</em> by using the <em>getDocument()</em> member function of <em>JFactory</em>. Next, the <em>addScript()</em> member function is used to add the jQuery framework and our test script. Finally, a paragraph tag with the id <em>'message_box'</em>, and containing a short message, is output. Load <em>index.php?option=com_js&amp;task=useJquery</em> in your browser, and click on the <strong>This is a message link</strong>. Your screen should now look similar to this:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomla-ext-article-image04.png" alt="" /></p>
<h2>Using jQuery with MooTools</h2>
<p>The code that we just wrote works fine on its own, but will fail right now if we attempt to also use a MooTools-driven effect. To remedy this, we need to make an adjustment to our script and invoke jQuery's <em>noConflict</em> mode. Open the file <em>/components/com_js/js.php</em> and add the following function to the controller:</p>
<pre style="margin-left: 40px;">function useJqueryAndMooTools()
{
<strong> JHTML::_('behavior.tooltip');</strong>

 $document =&amp; JFactory::getDocument();
 $document-&gt;addScript(
 JURI::base() . 'components/com_js/jquery-1.2.6.min.js');

 <strong>$document-&gt;addCustomTag('&lt;script type="text/javascript"&gt;
 jQuery.noConflict();
 &lt;/script&gt;');</strong>

 $document-&gt;addScript(
 JURI::base() . 'components/com_js/jquery-test.js');

 ?&gt;

 &lt;p id="message_box"&gt;This is a message&lt;/p&gt;
 <strong>&lt;span class="hasTip" title="Click here to go to the home page"&gt;
 &lt;a href="index.php"&gt;Homepage&lt;/a&gt;
 &lt;/span&gt;</strong>

 &lt;?php
}</pre>
<p>The highlighted portions of <em>useJqueryAndMooTools()</em> are the added pieces that differentiate it from <em>useJquery()</em>. The call to <em>JHTML::_('behavior.tooltip');</em> loads the code necessary for the tooltip, including MooTools. Because MooTools is now being loaded, we use the <em>addCustomHeadTag()</em> member function of the document object to make a quick call to <em>jQuery.noConflict();</em> so that <em>$</em> is left for MooTools. Finally, an anchor tag wrapped in a <em>&lt;span&gt;</em> element has been added with the tooltip information.</p>
<p>If you save <em>js.php</em> and load <em>index.php?option=com_js&amp;task=useJqueryAndMooTools</em> now, you will get an error; we have not yet adjusted <em>jquery-test.js</em> to account for the call to <em>jQuery.noConflict();</em>. Open <em>jquery-test.js</em> and make the highlighted adjustment:</p>
<pre style="margin-left: 40px;"><strong>jQuery(document).ready(function($) {</strong>

 $('#message_box').click(function() {

 $(this).addClass('contentheading');
 });
});</pre>
<p>Because the <em>$</em> shortcut is no longer available, we must call the jQuery function by name. However, we can regain control of the <em>$</em> shortcut within our jQuery code. This is because the call to <em>function()</em> allows us to pass a reference to the jQuery function into the local scope, with any desired name. Because <em>$</em> has been specified as the parameter of <em>function()</em>, the rest of the code can use it without further modification.</p>
<p>Load <em>index.php?option=com_js&amp;task=useJqueryAndMooTools</em> in your browser, click on the <strong>This is a message</strong> link, then move and the mouse over the <strong>Homepage</strong> link. Your screen should look similar to this:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomla-ext-article-image05.png" alt="" /></p>
<h2>Always load MooTools first</h2>
<p>The trick to using jQuery and MooTools together in Joomla! is to make sure that MooTools loads before jQuery does. In the <em>useJqueryAndMooTools()</em> function, if you move the call to <em>JHTML::_('behavior.tooltip');</em> any time after the call to <em>addScript()</em> that loads in jQuery, an error will occur. Instead, MooTools must load first and define <em>$</em>. Then <em>jQuery.noConflict();</em> can be called to return <em>$</em> back to its original assignment.</p>
<p>This is easily managed when you know and can control every instance where MooTools is used. However, if you are building a self-contained extension for others to use, it is quite possible that they are using other extensions that load MooTools. For instance, if someone has a module for a photo gallery that uses MooTools, the MooTools framework will be added to the <em>&lt;head&gt;</em> section of the HTML document after your component with jQuery loads. This will cause a JavaScript error.</p>
<p>The safest way of avoiding this situation is to force the MooTools library to load in your extension before you load jQuery. To do this, simply add <em>JHTML::_('behavior.mootools');</em> in your extension before adding the jQuery framework to <em>&lt;head&gt;</em>. The call to <em>JHTML::_('behavior.mootools');</em> detects whether MooTools has been loaded yet, and loads it now if it has not.</p>
<p>A downside to this workaround is that the MooTools framework will be included even if it is never used. This will slow down the load time of your site slightly and use resources in the JavaScript environment. If you are building an extension that will not be distributed or reused, you can hard-code the references to jQuery in your template after <em>&lt;jdoc:include type="head" /&gt;</em>. In this scenario, jQuery will be loaded on every page and will eventually be used where you determine. If MooTools is loaded by another extension, it will happen before jQuery is initialized.</p>
<h2>Summary</h2>
<p>In this article, we have discussed how to customize Google Maps on our Joomla! component and how to use JQuery effectively to further enhance the component's functionality. Joomla! is ready for your latest JavaScript needs. By using the MooTools JavaScript framework, you can find elements and assign event handlers to them. You can also use pre-built functions within Joomla! to generate the JavaScript necessary for many typical effects.You can also use jQuery with MooTools in Joomla!, provided that you take precautions to make sure that the frameworks do not conflict.</p>
<hr size="1" noshade="noshade" />
<div class="header">Learning Joomla! 1.5 Extension Development</div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="99" valign="top"><a rel="nofollow" href="http://www.packtpub.com/learning-joomla-1.5-extension-development/book/"><img class="left" title="Learning Joomla! 1.5 Extension Development" src="http://images.packtpub.com/images/100x123/1847196209.png" border="0" alt="Learning Joomla! 1.5 Extension Development" width="99" height="123" /></a></td>
<td valign="top">A practical tutorial for creating your first Joomla! 1.5 extensions with PHP, written and tested against the final release of Joomla! 1.5</p>
<ul>
<li>Program your own Joomla! extensions</li>
<li>Master Model-View-Controller design</li>
<li>Build configurable site modules to show information on every page</li>
<li>Use built-in HTML and JavaScript functions</li>
</ul>
<p><a rel="nofollow" href="http://www.packtpub.com/learning-joomla-1.5-extension-development/book/">http://www.packtpub.com/learning-joomla!-1.5-extension-development/book</a></td>
</tr>
</tbody>
</table>
<hr size="1" noshade="noshade" />
<h2>About the Author</h2>
<p><strong>Joseph L. LeBlanc</strong> started with computers at a very young age. His independent education gave him the flexibility to experiment with and learn computer science.Joseph holds a bachelor's degree in Management Information Systems from Oral Roberts University.</p>
<p>Joseph is a freelance Joomla! extension developer. He released a component tutorial in May 2004, which was later translated into French, Polish, and Russian. Work samples and open-source extensions are available at www.jlleblanc.com. In addition to freelancing, he is an active member of the Washington, DC tech community and Joomla! Bug Squad.</p>
<hr size="1" noshade="noshade" />
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/cms/joomla/using-javascript-effects-with-joomla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AJAX/Dynamic Content and Interactive Forms in Joomla!</title>
		<link>http://blog.joocode.com/en/cms/joomla/ajaxdynamic-content-and-interactive-forms-in-joomla</link>
		<comments>http://blog.joocode.com/en/cms/joomla/ajaxdynamic-content-and-interactive-forms-in-joomla#comments</comments>
		<pubDate>Fri, 17 Jul 2009 08:23:32 +0000</pubDate>
		<dc:creator>Copes Flavio</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Joomla Template Design]]></category>
		<category><![CDATA[Packt]]></category>

		<guid isPermaLink="false">http://blog.joocode.com/en/?p=214</guid>
		<description><![CDATA[
			
				
			
		
This is a great guest article sent by Packt Publishing, that talks about using AJAX to extend Joomla extensions, plugins and templates.
AJAX: an acronym that Jesse James Garret of AdaptivePath.com came up with in 2005. Just a few short years later, it seems like every site has a "taste" of AJAX in it. If you're [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fajaxdynamic-content-and-interactive-forms-in-joomla"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.joocode.com%2Fen%2Fcms%2Fjoomla%2Fajaxdynamic-content-and-interactive-forms-in-joomla&amp;source=joocode&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><em>This is a great guest article sent by Packt Publishing, that talks about using AJAX to extend Joomla extensions, plugins and templates.</em></p>
<p>AJAX: an acronym that Jesse James Garret of AdaptivePath.com came up with in 2005. Just a few short years later, it seems like every site has a "taste" of AJAX in it. If you're totally new to AJAX, I'll just point out that, at its core, AJAX is nothing very scary or horrendous. AJAX isn't even a new technology or language.</p>
<p><span id="more-214"></span>Essentially, AJAX stands for: Asynchronous JavaScript and XML, and it is the technique of using JavaScript and XML to send and receive data between a web browser and a web server. The biggest advantage this technique has is that you can dynamically update a piece of content on your web page or web form with data from the server (preferably formatted in XML), without forcing the entire page to reload. The implementation of this technique has made it obvious to many web developers that they can start making advanced web applications (sometimes called RIAs—Rich Interface Applications) that work and feel more like software applications than web pages.</p>
<p>Keep in mind that the word AJAX is starting to have its own meaning (as you'll also note its occasional use here as well as all over the Web as a proper noun rather than an all-cap acronym). For example, a Microsoft web developer may use VBScript instead of JavaScript to serve up Microsoft Access database data that is transformed into JSON (not XML) using a .NET server-side script. Today, that guy's site would still be considered an AJAX site rather than an "AVAJ" site (yep, AJAX just sounds cooler).</p>
<p>In fact, it's getting to the point where just about anything on a web site (that isn't in Flash) that slides, moves, fades, or pops up without rendering a new browser window is considered an "Ajaxy" site. In truth, a large portion of these sites don't truly qualify as using AJAX, they're just using straight-up JavaScripting. Generally, if you use cool JavaScripts in your Joomla! site, it will probably be considered Ajaxy, despite not being asynchronous or using any XML.</p>
<p style="margin-left: 40px; margin-right: 40px;"><em><strong>Want more info on this AJAX business</strong>? The w3schools site has an excellent introduction to AJAX, explaining it in straightforward simple terms. They even have a couple of great tutorials that are fun and easy to accomplish even if you only have a little HTML, JavaScript and server-side script (PHP or ASP) experience (no XML experience required): <a rel="nofollow" href="http://w3schools.com/ajax/" target="_blank">http://w3schools.com/ajax/</a>.</em></p>
<h1>Preparing for dynamic content and interactive forms</h1>
<p>Gone are the days of clicking, submitting, and waiting for the next page to load, or manually compiling your own content from all your various online identities to post in your site.</p>
<p>A web page using AJAX techniques (if applied properly) will give the user a smoother and leaner experience. Click on a drop-down option and check-box menus underneath are immediately updated with the relevant choices—no submitting, no waiting. Complicated forms that, in the past, took two or three screens to process can be reduced into one convenient screen by implementing the form with AJAX.</p>
<p>As wonderful as this all sounds, I must again offer a quick disclaimer: I understand that, like with drop-down menus and Flash, you may want AJAX to be in your site, or your clients are demanding that AJAX be in their sites. Just keep in mind, AJAX techniques are best used in situations where they truly benefit a user's experience of a page; for example, being able to painlessly add relevant content via an extension or cutting a lengthy web process form down from three pages to one. In a nutshell, using an AJAX technique simply to say your site is an AJAX site is probably not a good idea.</p>
<p>You should be aware that, if not implemented properly, some uses of AJAX can compromise the security of your site. You may inadvertently end up disabling key web browser features (such as back buttons or the history manager). Then there's all the basic usability and accessibility issues that JavaScript in general can bring to a site.</p>
<p>Some screen readers may not be able to read a new screen area that's been generated by JavaScript. If you cater to users who rely on tabbing through content, navigation may be compromised once new content is updated. There are also interface design problems that AJAX brings to the table (and Flash developers can commiserate). Many times, in trying to limit screen real estate and simplify a process, developers actually end up creating a form or interface that is unnecessarily complex and confusing, especially when your user is expecting a web page to, well, act like a normal web page.</p>
<p style="margin-left: 40px; margin-right: 40px;"><em><strong>Remember to check in with Don't Make Me Think</strong>: This is the Steve Krug book I recommend for help with any interface usability questions you may run into.<br />
<strong>Really interested in taking on AJAX</strong>? For you programmers, I highly recommend <em>"AJAX and PHP: Building Responsive Web Applications", Cristian Darie, Bogdan Brinzarea, Filip Chereches-Tosa, and Mihai Bucica, Packt Publishing</em>. In it, you'll learn the ins and outs of AJAX development, including handling security issues. You'll also do some very cool stuff, such as make your own Google-style auto-suggest form and a drag-and-drop sortable list (and that's just two of the many fun things to learn in the book).</em></p>
<p>So, that said, you're now all equally warned and armed with all the knowledgeable resources I can think to throw at you. Let's get to it: how exactly do you go about getting something Ajaxy into your Joomla! site?</p>
<h1>Joomla! extensions</h1>
<p>Keep in mind, extensions are not part of your template. They are additional files with Joomla!-compatible PHP code, which are installed separately into their own directories in your Joomla! 1.5 installation. Once installed, they are available to be used with any template that is also installed in your Joomla! installation.</p>
<p>Even though these are not part of your template, you might have to prepare your template to be fully compatible with them. Some extensions may have their own stylesheets, which are installed in their extension directory. Once you've installed an extension, you may want to go into your own template's stylesheet so that it nicely displays XHTML objects and content that the extension may output into your site.</p>
<p>Extensions are any component, module or plugin that you install into your Joomla! 1.5 installation.</p>
<p>Components control content that displays in the main <em>type="component" jdoc</em> tag in your template. Note that components may also have module settings and the ability to display content in assigned module positions. The poll component is a good example of a component that also has module settings.</p>
<p>Modules are usually smaller and lighter and only display in module positions.</p>
<p>Plugins generally help you out more on the backend of your site, say to switch WYSIWYG editors or with enabling OpenID logins, but as we'll see, some plugins can affect the display of your site to users as well.</p>
<h3>Deciding where AJAX is best used</h3>
<p>On the whole, we're going to look at the most popular places where AJAX can really aid and enrich your site's user experience. We'll start with users adding comments to articles and pages and streamlining that process. We'll then take a look at a nice plugin that can enhance pagination for people reading long articles on your site.</p>
<p>We'll then move on to the RSS Reader module, which can enhance the content in your modules (and even makes your users have fun arranging them). Finally, we'll realize that AJAX isn't just for impressing your site users. You, as an administrator, can (and do) take advantage of AJAX as well.</p>
<p style="margin-left: 40px; margin-right: 40px;"><em>Please note: These extensions were chosen by me based on the following criteria:</em></p>
<p><em>1. They provided some useful enhancement to a basic site.<br />
2. They, at the time of this writing, were free and received very good feedback on Joomla!.org's extensions site: <a rel="nofollow" href="http://extensions.Joomla.org" target="_blank">http://extensions.Joomla.org</a>.</em></p>
<p><em>In the next few pages, I'll walk you through installing these extensions and discuss any interesting insights for doing so, and benefits of their enhancements (and some drawbacks). But you must use the extension links provided to make sure you download the latest stable versions of these extensions and follow the extension author's installation guides when installing these into your Joomla! site. If you run into any problems installing these extensions, please contact the extension's author for support. Always be sure to take the normal precaution of backing up your site before installation, at least for any non-stable extensions you may decide to try.</em></p>
<h3>Installing the Joomla! comment component</h3>
<p>Chances are, if you've invested in Joomla! 1.5 as your CMS, you need some powerful capabilities. Easy commenting with "captcha" images to reduce spam is always helpful:</p>
<p><a rel="nofollow" href="http://extensions.Joomla.org/extensions/contacts-&amp;-feedback/comments/4389/details" target="_blank">http://extensions.Joomla.org/extensions/contacts-&amp;-feedback/comments/4389/details</a></p>
<p>To install this extension (and the other few coming up), you have to basically go to <strong>Extensions | Install/Uninstall</strong> and upload the extension's ZIP file. You'll then proceed to the plugin, component, and/or modules panel and activate the extension so that it is ready to be implemented on your site.</p>
<p>Upon installing this comment component, to my surprise, it told me that it was for an older version of Joomla! Everything on the download page seemed to indicate it worked with 1.5. The installation error did mention that I just needed to activate the <strong>System Legacy</strong> plugin and it would work. So I did, and the comment form appeared on all my article pages. This may seem like a step backward, but for extensions like this, which are very useful, if they work well and stay stable in Legacy Mode, a developer may have made the decision to leave well enough alone. The developer will most likely eventually upgrade the extension (especially if Legacy Mode goes away in future versions of Joomla!). Just be sure to sign up for updates or check back on any extensions you use if you do upgrade your site. You should do this regardless of whether your extensions run natively or in Legacy Mode.</p>
<p>The advantage of AJAX in a comment form is that a user isn't distracted and comments post smoothly and right away (a bit of instant gratification for the user, even if you never "confirm" the post and it never gets actually published for other viewers). This extension outputs tables, but for the ease of handling robust comments and having a great admin area to manage them, I'll make do. The following screenshot shows the Joomla! comment component appearing in an article page:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image1.png" alt="" /></p>
<p>As you can see in my previous image, I have some strong styles that are trying to override the component's styles. A closer look at the output HTML will give me some class names and objects that I can target with CSS. The administration panel's <strong>Component | Joomla! Comment | Other Component</strong> settings page also allows quite a few customization options. The <strong>Layout</strong> tab also offers several included style sheets to select from as well as the option to copy the CSS sheet out to my template's directory (the component will do this automatically). This way, I can amend it with my own specific CSS, giving my comment form a better fit with my template's design.</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image2.png" alt="" /></p>
<h3>Installing the core design Ajax Pagebreak plugin</h3>
<p>If your site has long articles that get broken down regularly in to three or more pages, Pagebreak is a nice plugin that uses Ajax to smoothly load the next page. It's a useful feature that will also leave your site users with a little "oh wow" expression.</p>
<p><a rel="nofollow" href="http://www.greatJoomla.com/news/plugins/demo-core-design-ajaxpagebreak-plugin.html" target="_blank">http://www.greatJoomla.com/news/plugins/demo-core-design-ajaxpagebreak-plugin.html</a></p>
<p>After successfully installing this plugin, I headed over to the <strong>Extensions | Plugin Manager</strong> and activated it.</p>
<p>I then beefed out an article (with Lorem Ipsum) and added page breaks to it on the Home Page. It's hard to see in a screenshot, but it appears below the <strong>Prev</strong> and <strong>Next</strong> links without a full browser redraw. I've set my site up with SEO-friendly URLs, and this plugin does amend the URLs with a string; that is, <em>http://yoururl.com/1.5dev/menu-item-4?start=1</em>. I'm not sure how this will really affect the SEO "friendliness" value of my URL, but it does give me a specific URL to give to people if I want to send them to a targeted page, which is very good for accessibility. One thing to note, the first page of the article is the original URL; that is, <em>http://yoururl.com/1.5dev/menu-item-4</em>. The second page then appends <em>?start=1</em>, the third page becomes <em>?start=2</em>, and so on. Just be aware that when sending links out to people, it is always best to pull the URL directly from the site so that you know it's correct!</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image3.png" alt="" /></p>
<h3>Installing the AJAX RSS Reader Version 3 with Draggable Divs module</h3>
<p>RSS feeds are a great way to bring together a wide variety of content as well as bring all your or your organization's "social network happenings" to one place in your own site. I like to use RSS feeds to get people interested in knowing what an organization is doing (or tweeting), or reading, and so on. Having links and lists of what's currently going on can compel users to link to you, join your group, follow you, and become a friend, a fan, or whatever.</p>
<p>This AJAX powered module has the extra feature of being draggable and somewhat editable. This is a nice way to draw a user in to the feeds and let them play with them and arrange the information to their taste. Sometimes, sorting and reorganizing makes you see connections and possibilities that you didn't see before. The next image may seem confusing, but it's a screenshot of the top <em>div</em> box being dragged and dropped: <a rel="nofollow" href="http://extensions.Joomla%21.org/extensions/394/details" target="_blank">http://extensions.Joomla!.org/extensions/394/details</a></p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image4.png" alt="" /></p>
<h3>AJAX: It's not just for your site's users</h3>
<p>I've already mentioned, when applied properly, how AJAX can aid in interface usability. Joomla! attempts to take advantage of this within its Administration panel by enhancing it with relevant information and compressing multiple page forms into one single screen area. Here's a quick look at how Joomla! already uses AJAX to enhance its Administration panel forms:</p>
<p>The following image shows how the image uploader uses a "lightbox" <em>div</em> layer effect so that you can keep track of where you are in the content editor.</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image5.png" alt="" /></p>
<p>In the next image, you can see how Joomla! helps keep the administration area cleared up by using smooth-sliding accordion panels. This helps you see everything on one page and have access to just what you need, when you need it.</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image6.png" alt="" /></p>
<hr size="1" noshade="noshade" />
<div class="header">Joomla! 1.5 Template Design</div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="99" valign="top"><a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book"><img class="left" title="Joomla! 1.5 Template Design" src="http://images.packtpub.com/images/100x123/1847197167.png" border="0" alt="Joomla! 1.5 Template Design" width="99" height="123" /></a></td>
<td valign="top">Create your own professional-quality templates with this fast, friendly guide</p>
<ul>
<li>Create Joomla! 1.5 Templates for your sites</li>
<li>Debug, validate, and package your templates</li>
<li>Tips for tweaking existing templates with Flash, extensions and JavaScript libraries</li>
</ul>
<p><a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book">http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book</a></td>
</tr>
</tbody>
</table>
<hr size="1" noshade="noshade" />
<h1>The AJAX factor</h1>
<p>Aside from the many interface-enhancing, time-saving benefits of Ajax, sometimes you do just want to "wow" your site visitors. It's easy to give your site an Ajaxy feel, regardless of asynchronously updating it with server-side XML, just by sprucing up your interface with some snappy JavaScripts. The easiest way to get many of these effects is to reference a JavaScript library (sometimes called a toolkit or framework, depending on how robust the provider feels the code is). A few of the leading favorites in the AJAX community (in no particular order) are:</p>
<ul>
<li>Script.alico.us: <a rel="nofollow" href="http://script.aculo.us/" target="_blank">http://script.aculo.us/</a></li>
<li>Prototype: <a rel="nofollow" href="http://www.prototypejs.org/" target="_blank">http://www.prototypejs.org/</a></li>
<li>jQuery: <a rel="nofollow" href="http://jquery.com/" target="_blank">http://jquery.com/</a></li>
</ul>
<p>There're also:</p>
<ul>
<li>MooTools: <a rel="nofollow" href="http://mootools.net/" target="_blank">http://mootools.net/</a></li>
<li>moo.fx: <a rel="nofollow" href="http://moofx.mad4milk.net/" target="_blank">http://moofx.mad4milk.net/</a></li>
</ul>
<p>Prototype is more of a framework and Script.alico.us is more of an add-on toolkit or set of libraries for neat effects. In fact, Script.alico.us references the Prototype framework, so your best bet is probably to use Script.alico.us, but if you do work with it, be sure to check out Prototype's site and try to understand what that framework does.</p>
<p>moo.fx is the smallest JavaScript effects library (boasting a 3k footprint), but again, it needs to be supported by the MooTools or Prototype frameworks.</p>
<p>jQuery is my personal favorite. It pretty much stands on its own without needing to be backed up by a more robust framework such as Prototype. Yet, you can still do some very robust things with it, such as manipulating data and the DOM. Plus, it's packed with the ability to do neat and cute visual effects similar to Script.alico.us or moo.fx.</p>
<p>Using JavaScript libraries such as the above, you'll be able to implement their features and effects with simple calls into your Joomla! posts and pages.</p>
<h3>JavaScript component/plugin scripts</h3>
<p>The fun doesn't stop there! What's that? You don't have time to go read up on how to use a JavaScript library such as jQuery? Never fear! There are many other JavaScript effect plugins that are built using the above libraries.</p>
<p>One of the most popular scripts out there that makes a big hit on any web site is Lightbox JS: <a rel="nofollow" href="http://www.huddletogether.com/projects/lightbox2/" target="_blank">http://www.huddletogether.com/projects/lightbox2/</a>.</p>
<p>Lightbox JS is a simple, unobtrusive script used to overlay images on the current page. It's great, but it uses both the Prototype and Script.alico.us libraries to achieve its effects. Unfortunately, I've found Lightbox JS was a bit limited in terms of using it with a CMS that has a WYSIWYG editor like TinyMCE (although that didn't stop clients from wanting it on their site).</p>
<h3>The problem</h3>
<p>I had an issue with getting custom markup into my TinyMCE WYSIWYG editor. I then attempted to turn off the TinyMCE editor and found that even after using the plain text area editor, Joomla! modified my custom XHTML.</p>
<p>The same problem holds for Lightbox JS. While simple to add to your template, in order for Lightbox JS to work, you need to add a custom <em>rel="lightbox"</em> attribute to each <em>&lt;a href...</em>tag that will call an image into the lightbox. While turning off the TinyMCE editor actually works here, and keeps the <em>rel="lightbox"</em> in tact after hitting <strong>Save</strong>, it only does so as long as the TinyMCE editor stays turned off.</p>
<p>This means: setting up quick Lightbox JS gallery images for clients in content pages only to have them constantly, inadvertently, mess them up and break them because they'd open up the content using their user logins, which, of course, are set to use the TinyMCE editor.</p>
<p>Upon loading the content from the database into the edit screen, TinyMCE likes to help out and do some cleaning up for you. That <em>rel="lightbox"</em> attribute in any links in the page sometimes drops out (and sometimes it stays; if you have several links to images, some may break and others may work). The client then calls me to fix the problem (upset, as they have to call me, and they thought they'd be the ones maintaining their own site).</p>
<p>While I'd like to get upset with my non-XHTML savvy clients, the truth is this is exactly the reason they've invested in the Joomla! CMS. They need an easy way to manage large sites with perhaps multiple editors, many of whom don't have the foggiest idea what an HTML tag is.</p>
<h3>Enter jQuery lightBox</h3>
<p>jQuery lightBox by Leandro Vieira Pinho is very similar to Lightbox JS in that it has that very nice, smooth animation. On the plus side, it uses only the jQuery library. On the plus plus side, it doesn't require any custom markup to your <em>&lt;a href...</em> tags. You can download it from here:</p>
<p><a rel="nofollow" href="http://leandrovieira.com/projects/jquery/lightbox/" target="_blank">http://leandrovieira.com/projects/jquery/lightbox/</a></p>
<p><strong>Time for action: Adding jQuery to your template</strong></p>
<p>This is an extremely easy-to-implement plugin. (Don't get confused, this is not a Joomla! plugin. jQuery refers to packaged scripts that use its library as plugins).</p>
<p>After downloading it, add the key <em>.js</em> and <em>.css</em> files inside your Joomla! template's <em>&lt;header&gt;</em> tags:</p>
<pre style="margin-left: 40px;">...
&lt;script type="text/javascript" src="<span style="font-weight: bold;">&lt;?php echo $this-&gt;baseurl;</span><br style="font-weight: bold;" /><span style="font-weight: bold;"> ?&gt;/templates/go_green/js/jquery.js"&gt;</span>&lt;/script&gt;

&lt;script type="text/javascript" src="&lt;?php echo $this-&gt;baseurl;
 ?&gt;/templates/go_green/js/jquery.lightbox-0.5.js"&gt;&lt;/script&gt;
...</pre>
<p>You'll also add in a call to the jQuery lightBox CSS file:</p>
<pre style="margin-left: 40px;">...
&lt;link rel="stylesheet" type="text/css" href="&lt;?php echo $this-&gt;baseurl; ?
&gt;/templates/go_green/css/jquery.lightbox-0.5.css" media="screen" /&gt;
...</pre>
<p>Don't forget to upload the images in the ZIP package to your template's image directory and update the <em>jquery.lightbox-0.5.js</em> files image paths in line's <strong>30</strong> to <strong>34</strong>:</p>
<pre style="margin-left: 40px;">...
 imageLoading: '<span style="font-weight: bold;">templates/go_green/images</span>/lightbox-ico-loading.gif',
 // (string) Path and the name of the loading icon

 imageBtnPrev: '<span style="font-weight: bold;">templates/go_green</span>/images/lightbox-btn-prev.gif',
 // (string) Path and the name of the prev button
image

 imageBtnNext: '<span style="font-weight: bold;">templates/go_green</span>/images/lightbox-btn-next.gif',
 // (string) Path and the name of the next button image

 imageBtnClose: '<span style="font-weight: bold;">templates/go_green</span>/images/lightbox-btn-close.gif',
// (string) Path and the name of the close btn

 imageBlank: '<span style="font-weight: bold;">templates/go_green</span>/images/lightbox-blank.gif',
// (string) Path and the name of a blank image (one pixel)
...</pre>
<p style="margin-left: 40px; margin-right: 40px;"><em>Alternatively, you can upload the jQuery lightBox images into the <em>images</em> folder; that is, in the root of your Joomla! installation. You then won't need to edit the <em>jquery.lightbox-0.5.js</em> file. However, if you package your template up for other people to use, the images will not come over with your template and the script may appear broken.</em></p>
<p>Now, we're ready to activate the jQuery lightBox plugin. This is the beauty of jQuery. It has a robust DOM and CSS selector feature, and that means we don't have to put any special <em>class</em> or <em>rel</em> tags in our markup. We can generally target <em>&lt;a href</em> links by placing a small jQuery JavaScript in our header (below our <em>.js</em> and <em>.css</em> file calls) like so:</p>
<pre style="margin-left: 40px;">...
&lt;script type="text/javascript"&gt;
$(function() {
 $('<span style="font-weight: bold;">#page</span> a').lightBox(); // Select all links in an XHTML area with
page ID
});
&lt;/script&gt;
...</pre>
<p>This will work for all our article pages</p>
<p>Now you can create an article or content page in your Administration panel using the easy method of creating an article and adding content to it.</p>
<p>I uploaded the images via Joomla's built-in image uploader, which you can find at the bottom of the content editor. I then inserted my thumbnail version into the page and created a link to the image using the link editor in TinyMCE's editing options</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image7.png" alt="" /></p>
<p>That's it!</p>
<p>But wait! Unfortunately, there's a small drawback: because I'm targeting the <em>a href</em> links inside the <em>#page div</em>, my <strong>PDF</strong>, <strong>print</strong>, and <strong>email</strong> buttons are activating the lightBox. As you can see by the following screenshot, the results are "interesting":</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image8.png" alt="" /></p>
<p>This is easily remedied if you know a bit about jQuery's selectors.</p>
<p>First off, we'll simply target the area we want to focus in on a bit more:</p>
<pre style="margin-left: 40px;">$('#page p a').lightBox();</pre>
<p>This will only activate <em>a hrefs</em> inside <em>p</em> (paragraph) tags. This doesn't fix our problem, as those button links happen to be wrapped inside paragraph tags too. However, they do have a class called <em>.buttonheading</em> associated with them. So, we'll select <em>a href's</em> inside <em>p</em> tags that <em>do not</em> contain the class <em>.buttonheading</em>, as follows:</p>
<pre style="margin-left: 40px;">$('#page <span style="font-weight: bold;">p:not(.buttonheading)</span> a').lightBox();</pre>
<p>This is great. The <strong>PDF</strong>, <strong>print</strong>, and <strong>email</strong> buttons now work. But I know my clients. They're going to create articles, and using nothing but the WYSIWYG editor, with no clue as to what markup they're actually creating. They will not only upload images with links for the lightBox, but probably also will throw in a bunch of other links to other stuff that shouldn't kick off the lightBox. The nerve! They can be so "link-happy" sometimes. Well, that's OK too. We'll simply amend the a selector a bit:</p>
<pre style="margin-left: 40px;">$('#page p:not(.buttonheading) <span style="font-weight: bold;">a:has(img)</span>').lightBox();</pre>
<p>By adding <em>a:has(img)</em>, only the <em>&lt;a href...</em> tags that wrap around images will activate the jQuery lightBox plugin.</p>
<p>You now have a fool-proof lightBoxing method that the most sloppy HTML mess-making WYSIWYGing editors will be hard pressed to break! The following image shows the lightbox at work in the template:</p>
<p style="text-align: center;"><img src="http://www.packtpub.com/files/images/joomlatemplate-article1-image9.png" alt="" /></p>
<p style="margin-left: 40px; margin-right: 40px;"><em><strong>jQuery selectors</strong>: In order to make jQuery lightBox work well with your template, you should to understand selectors. Karl Swedberg has two excellent articles on targeting anything you want with jQuery selectors: <a rel="nofollow" href="http://www.learningjquery.com/2006/12/how-to-getanything-you-want-part-2" target="_blank">http://www.learningjquery.com/2006/12/how-to-getanything-you-want-part-2</a>. You can also use jQuery's reference guide: <a rel="nofollow" href="http://docs.jquery.com/Selectors" target="_blank">http://docs.jquery.com/Selectors</a>.<br />
<strong>There's also jQuery's ThickBox</strong>: ThickBox installs and works very similar to jQuery lightBox. However, in addition to handling images similar to Lightbox JS, it can also handle in-line content, iFrame content, and AJAX content (be sure to check out the examples on the Thickbox page): <a rel="nofollow" href="http://jquery.com/demo/thickbox/" target="_blank">http://jquery.com/demo/thickbox/</a>.<br />
<strong>The downside</strong>: ThickBox requires that you add a special <em>class="thickbox"</em> to your <em>&lt;a href</em> tag markup. The good news is, TinyMCE doesn't strip this out, but you'll need to have content editors that know how to add that class to their content with the WYSIWYG editor turned off. ThickBox also doesn't do that "smooth" animation that jQuery lightbox does when images are different sizes. This is a trade-off I've made when I've occasionally decided it's important to be able to display more than just images in a layout design or Jooma! template.</em></p>
<h1>Summary</h1>
<p>In this article we reviewed a few ways to take advantage of AJAX on your Joomla! site. We downloaded and installed a handful of useful extensions and looked at using jQuery and jQuery lightBox to enhance post and page content.</p>
<hr size="1" noshade="noshade" />
<div class="header">Joomla! 1.5 Template Design</div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="99" valign="top"><a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu"><img class="left" title="Joomla! 1.5 Template Design" src="http://images.packtpub.com/images/100x123/1847197167.png" border="0" alt="Joomla! 1.5 Template Design" width="99" height="123" /></a></td>
<td valign="top">Create your own professional-quality templates with this fast, friendly guide</p>
<ul>
<li>Create Joomla! 1.5 Templates for your sites</li>
<li>Debug, validate, and package your templates</li>
<li>Tips for tweaking existing templates with Flash, extensions and JavaScript libraries</li>
</ul>
<p><a rel="nofollow" href="http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book/mid/1607090a4lbu">http://www.packtpub.com/joomla-1-5-template-design-2nd-edition/book</a></td>
</tr>
</tbody>
</table>
<hr size="1" noshade="noshade" />
]]></content:encoded>
			<wfw:commentRss>http://blog.joocode.com/en/cms/joomla/ajaxdynamic-content-and-interactive-forms-in-joomla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
