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

<channel>
	<title>Techno Musings at Telecommand</title>
	<atom:link href="http://blogs.telecommand.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.telecommand.com</link>
	<description>Telecommand Software and Services</description>
	<lastBuildDate>Fri, 01 Jul 2011 05:12:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Introduction to Actionscript 3.0 with Flash CS3</title>
		<link>http://blogs.telecommand.com/introduction-to-actionscript-3-0-with-flash-cs3/</link>
		<comments>http://blogs.telecommand.com/introduction-to-actionscript-3-0-with-flash-cs3/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:12:08 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=85</guid>
		<description><![CDATA[Introduction to Actionscript 3.0 with Flash CS3. Share on Facebook]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.entheosweb.com/Flash/video_tutorials/actionscript3.asp#.Tg1Weq8YbJs.wordpress">Introduction to Actionscript 3.0 with Flash CS3</a>.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/introduction-to-actionscript-3-0-with-flash-cs3/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/introduction-to-actionscript-3-0-with-flash-cs3/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/introduction-to-actionscript-3-0-with-flash-cs3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOW TO INSTALL &amp; SETUP VIEWS SLIDESHOW MODULE ON DRUPAL7?</title>
		<link>http://blogs.telecommand.com/how-to-install-setup-views-slideshow-module-on-drupal7/</link>
		<comments>http://blogs.telecommand.com/how-to-install-setup-views-slideshow-module-on-drupal7/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 11:16:54 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=82</guid>
		<description><![CDATA[(1) Required Modules (Version: Drupal7.0) Views Views Slideshow Chaos tool suite Link Field Token (optional) (2) Install the Modules In Drupal7 you can install modules from the admin section, but I still feel this new feature doesn&#8217;t have any meaning, because we have to search for the module link in the Druapl site and then [...]]]></description>
			<content:encoded><![CDATA[<h2><strong><strong>(1) Required Modules </strong></strong>(Version: Drupal7.0)</h2>
<ol>
<li> <a href="http://drupal.org/project/views"><strong>Views</strong></a></li>
<li> <strong><a href="http://drupal.org/project/views_slideshow">Views Slideshow</a></strong></li>
<li> <a href="http://drupal.org/project/ctools"><strong>Chaos tool suite</strong></a></li>
<li> <a href="http://drupal.org/project/link"><strong>Link Field</strong></a></li>
<li> <a href="http://drupal.org/project/token"><strong>Token (optional)</strong></a></li>
</ol>
<h2><strong><strong>(2) Install the Modules</strong></strong></h2>
<p>In Drupal7 you can install modules from the admin section, but I still  feel this new feature doesn&#8217;t have any meaning, because we have to  search for the module link in the Druapl site and then copy paste into  the admin module installation area, really crazy. It would have been so  good if they would have made it something like wordpress a small search  feasture. Anyway I just gonna download and istall it in the old way (I  still recommend this old way).</p>
<p>Download all the modules from Drupal site and install in the directory <strong>yoursitename/sites/all/modules</strong>.<br />
Go to <strong>http://www.yoursitename.com/node#overlay=admin/modules</strong> and enable these modules as below;</p>
<p>(1) <strong>Views</strong> (2) <strong>Views UI</strong> (3) <strong>Views Slideshow</strong> (4) <label for="edit-modules-views-views-slideshow-cycle-enable"><strong>Views Slideshow: Cycle </strong></label>(5) <strong>Chaos tools (6) Link</strong></p>
<h2><strong><strong><strong><strong>(3) Create Image Cache</strong></strong></strong></strong></h2>
<p>In Drupal7 imagecache is part of core module and is named as <span style="text-decoration: underline;"><strong>Image styles.</strong></span> So let&#8217;s create two image cache from here, one for the full size slider  image and other for the thumbnail image. In this tutorial I use 935&#215;293  (pixels) dimension for the full size slider image and 210&#215;100 (pixels)  dimension for the thumbnail image. <span style="text-decoration: underline;"><strong>Note: These configurations csn be defered depends on your needs.</strong></span></p>
<p><span style="text-decoration: underline;"><strong>* Fullsize Slider image settings</strong></span></p>
<p>Go to <a title="http://www.yoursitename.com/node#overlay=admin/config/media/image-styles" href="http://www.yoursitename.com/node#overlay=admin/config/media/image-styles">http://www.yoursitename.com/node#overlay=admin/config/media/image-styles</a> and click on the add new style link<br />
(1) Give an Image style name and click on create new style button<br />
(2) On the next configuration screen <span style="text-decoration: underline;"><strong>select new style</strong></span> you want and then click <span style="text-decoration: underline;"><strong>add</strong></span> button (In this tutorial I choose resize style)<br />
(3) On the next screen set the <span style="text-decoration: underline;"><strong>width and height</strong></span> and click on the <span style="text-decoration: underline;"><strong>add effect</strong></span> button. (The settings may vary depend on the style you choose). I set width as 935 and height as 293 pixels.</p>
<p>Do this same process for the thumbnail image too. (for the thumbnail image dimension, I set width as 210 and height as 100 pixels.)</p>
<h2><strong><strong>(4) Create New Content Type</strong></strong></h2>
<p>Let&#8217;s create a new content type, From the dashboard menu bar cick on <span style="text-decoration: underline;"><strong>Structure</strong></span> and then <span style="text-decoration: underline;"><strong>content types</strong></span> then click on the <span style="text-decoration: underline;"><strong>add new content type</strong></span> link.</p>
<p>(1) Give a human-readable name, I named it as <span style="text-decoration: underline;"><strong>Featured Slider</strong></span> (machiine name will be auto generated based on the human readable name)<br />
(2) Give a brief and relevant description<br />
(3) Submission form settings, I leave as the default settings<br />
(4) Publishing options, I checked <span style="text-decoration: underline;"><strong>only published</strong></span> (all other settings <span style="text-decoration: underline;">unchecked</span>)<br />
(5) Display settings, I have <span style="text-decoration: underline;"><strong>unchecked</strong></span> the authour and date info.<br />
(6) Comment settings,I set <span style="text-decoration: underline;"><strong>hidden</strong></span> (disabled)<br />
(7) Menu settings, I leave as default settings.<br />
(8) Click <strong><span style="text-decoration: underline;">Save and add fields</span></strong> Button</p>
<h2><strong><strong>(5) Create New Fields</strong></strong></h2>
<p>Here in this example I create only two fileds, and they are image field and link field.<br />
We will use image field for uploading our slider image and link field  for creating a custom link where we want our slider to be linked.</p>
<p><strong> Image Field Settings</strong></p>
<p>(1) Label: Slider Image<br />
(2) Field: slider_image<br />
(3) Field type: image<br />
(4) Widget (form element): image<br />
(5) Click <span style="text-decoration: underline;"><strong>Save</strong></span> button, and on the field settings page leave default settings and click on <span style="text-decoration: underline;"><strong>Save field settings</strong></span> button.<br />
(6) On the image field configuration settings page you can configure as you wish.<br />
I set this field as required, I added a file director name called <span style="text-decoration: underline;"><strong>slider-image</strong></span> so that this images will be arranged sperately from other images.<br />
You can set the maximum upload size and resolution here, I have anabled <span style="text-decoration: underline;"><strong>alt and title</strong></span> field and finally click <span style="text-decoration: underline;"><strong>Save settings</strong></span> button.</p>
<p>By using same method create the link field too.</p>
<p><strong>Link Field Settings</strong></p>
<div>(1) Label: Slider Link<br />
(2) Field: slider_link<br />
(3) Field type: link<br />
(4) Widget (form element): link<br />
(5) Click <span style="text-decoration: underline;"><strong>Save</strong></span> button,</div>
<div>For the link field configurations leave evrything to default settings.</div>
<div>I have re arranged the field like shown below;</div>
<div>Title field<br />
Image field<br />
Link field<br />
Body field (you can even remove this field if not necessary)</div>
<div><strong>Manage Display</strong></div>
<div>On the manage display tab you can conigure how the out put of the field to be diplayed.<br />
I have set the <span style="text-decoration: underline;"><strong>link field</strong></span> as <strong><span style="text-decoration: underline;">hidden</span></strong> and I have also set <span style="text-decoration: underline;"><strong>image label</strong></span> as <span style="text-decoration: underline;"><strong>hidden</strong></span></div>
<div><span style="text-decoration: underline;"><strong><img src="http://www.brightwebsitedesign.com/sites/default/files/images/manage-fields.png" alt="Drupal7: manage fields" /></strong></span></div>
<h2><strong>(6) Create Feature Slider Content</strong></h2>
<p>I have created four featured slider content for this tutorial.</p>
<p>(1) Click on <span style="text-decoration: underline;"><strong>add content</strong></span> link<br />
(2) Create Featured Slider content<br />
(3) Give a proper title name<br />
(4) Upload slider image<br />
(5) Give alt and title field names<br />
(6) Give a link <span style="text-decoration: underline;"><strong>title and url</strong></span> where you want the slider to be linked<br />
(7) Leave all othe settings as default except for the <span style="text-decoration: underline;"><strong>path field</strong></span> if yo want you can give an SEO friendly URL alias.<br />
(8) Save the content.</p>
<p>Same way create more Featured Slider contents (I have created four contents)</p>
<h2><strong><strong>(7) Create a New View</strong></strong></h2>
<p>Now it&#8217;s time to create our new Slideshow view.<br />
From the <span style="text-decoration: underline;"><strong>Dashboard</strong></span> menu click on the <span style="text-decoration: underline;"><strong>Structure</strong></span> and then click on the <span style="text-decoration: underline;"><strong>Views</strong></span>.</p>
<p>(1) Click add new view link<br />
(2) Give view name, I have named as <span style="text-decoration: underline;"><strong>Featured Slider</strong></span> (machiine name will be auto generated)<br />
(3) Give an apropriate view description<br />
(4) Choose <strong><span style="text-decoration: underline;">view type</span></strong> as <span style="text-decoration: underline;"><strong>node</strong></span> and click <span style="text-decoration: underline;"><strong>Next</strong></span> button.<br />
<span style="text-decoration: underline;"><strong>Views Field Settings</strong></span><br />
First let&#8217;s add <strong><span style="text-decoration: underline;">link field</span></strong> (link must be the first field in order to work everything properly) so click on the <strong>+</strong> icon and from the <span style="text-decoration: underline;"><strong>Groups</strong></span> select <span style="text-decoration: underline;"><strong>Fields</strong></span><br />
Add <strong><span style="text-decoration: underline;">link field</span></strong> (field_slder_link), remove the label and leave all other settings as default and click <span style="text-decoration: underline;"><strong>Update</strong></span> button.</p>
<p>Next let&#8217;s add image field, so click on the <strong>+</strong> icon and from the <span style="text-decoration: underline;"><strong>Groups</strong></span> select <span style="text-decoration: underline;"><strong>Fields</strong></span><br />
Add <strong><span style="text-decoration: underline;">image field</span></strong> (field_slider_image) make sure you choose the image field which we crerated for this slider only.<br />
<span style="text-decoration: underline;">Remove the label</span> and in the <strong><span style="text-decoration: underline;">Rewriting</span></strong> section click <strong><span style="text-decoration: underline;">Output this field as a link</span></strong> and then you get more configuration options just do as given below;</p>
<p>(1) Scroll dow a bit and you can see <strong><span style="text-decoration: underline;">replacement patterns</span></strong> created by <strong><span style="text-decoration: underline;">Core Token</span></strong> module, (if we didn&#8217;t set the link field as first we can&#8217;t see link field option here) copy only [entity_id] then scroll up and paste it in the <span style="text-decoration: underline;"><strong>link path field</strong></span>.<br />
(2) Scroll down to te bottom of the settings and choose <strong><span style="text-decoration: underline;">Image Style</span></strong> as <strong><span style="text-decoration: underline;">fullsize-image</span></strong> (Our fullsize image style we created above).<br />
Leave all other settings as default. Click <strong><span style="text-decoration: underline;">Update</span></strong> button.</p>
<p>Finally we need one more field for the <span style="text-decoration: underline;"><strong>thumbnail</strong></span>, so let&#8217;s click on the <strong>+</strong> icon and from the <span style="text-decoration: underline;"><strong>Groups</strong></span> select <span style="text-decoration: underline;"><strong>Fields</strong></span><br />
Add <strong><span style="text-decoration: underline;">image field</span></strong> (field_slider_image) make sure you choose the image field which we crerated for this slider only.<br />
<span style="text-decoration: underline;">Remove the label</span> and <strong><span style="text-decoration: underline;">CHECK EXCLUDE THIS FIELD FROM DISPLAY</span></strong>, then in the <strong><span style="text-decoration: underline;">Rewriting</span></strong> section click <strong><span style="text-decoration: underline;">Output this field as a link</span></strong> and then you get more configuration options just do as given below;</p>
<p>(1) Scroll dow a bit and you can see <strong><span style="text-decoration: underline;">replacement patterns</span></strong> created by <strong><span style="text-decoration: underline;">Core Token</span></strong> module, (if we didn&#8217;t set the link field as first we can&#8217;t see link field option here) copy only [entity_id] then scroll up and paste it in the <span style="text-decoration: underline;"><strong>link path field</strong></span>.<br />
(2) Scroll down to te bottom of the settings and choose <strong><span style="text-decoration: underline;">Image Style</span></strong> as <strong><span style="text-decoration: underline;">slider_thumb</span></strong> (Our thumbsize image style we created above).<br />
Leave all other settings as default. Click <strong><span style="text-decoration: underline;">Update</span></strong> button.</p>
<p><span style="text-decoration: underline;"><strong>Views Filters Settings</strong></span></p>
<p>Now let&#8217;s create a filter for filtering to get the specific content.<br />
(1) So let&#8217;s click on the <strong>+</strong> icon and from the <span style="text-decoration: underline;"><strong>Groups</strong></span> select <strong><span style="text-decoration: underline;">Node</span></strong><br />
(2) Select <span style="text-decoration: underline;"><strong>Node Type</strong></span> as<strong><span style="text-decoration: underline;"> Featured Slder</span></strong><br />
(3) Select <strong><span style="text-decoration: underline;">Node Published</span></strong> as <strong><span style="text-decoration: underline;">Yes</span></strong></p>
<p><span style="text-decoration: underline;"><strong>Views Style Settings</strong></span></p>
<p>Click on the <strong><span style="text-decoration: underline;">Unformatted</span></strong> link under style settigs and choose <span style="text-decoration: underline;"><strong>Slideshow</strong></span> and on the next configuratioin window set as below;<br />
(1) List type: Unordered list<br />
(2) Wrapper class: Leave default settings<br />
(3) Style&gt; Skin: deafult<br />
(4) Slides&gt; Slideshow type: cycle<br />
(5) Cycle options<br />
You need to download jQuery cycle  plugin and copy jquery.cycle.all.min.js to  sites/all/libraries/jquery.cycle You can find the plugin at <a href="http://malsup.com/jquery/cycle" target="_blank">http://malsup.com/jquery/cycle</a>.<br />
(6) Transittion: Fade<br />
(7) Action: pause on hover<br />
(8) Internet Explorer Tweaks: default<br />
(9) Widgets: You can choose either or both Top and Bottom (I choose bottom here, and the advance settings as below;)<br />
(10) Bottom Widgets&gt;Pager&gt;Pager type: Fields<br />
(11) Pager field: field_slider_image (<span style="text-decoration: underline;">last one we added for the thumb</span>, don&#8217;t mistake since both field will be named same.)<br />
(12) Activate Slide and Pause on Pager Hove: checked, controls and slider counter leave unchecked.<br />
(13) Click <strong><span style="text-decoration: underline;">Update</span></strong> button.</p>
<p><span style="text-decoration: underline;"><strong>Row Style Settings</strong></span></p>
<ol>
<li> <strong><span style="text-decoration: underline;">Row Styel: Fields Selected</span></strong>, then on the <strong><span style="text-decoration: underline;">rowstyle settings</span></strong> section you see an option with display inline.<br />
<span style="text-decoration: underline;">Choose the thumbnail field as<strong> inline.</strong> </span></li>
<li> Click <strong><span style="text-decoration: underline;">Update</span></strong> button. (<span style="text-decoration: underline;"><strong>Note:</strong></span> Well it actually doesn&#8217;t change much in appearance bit it does change  in the code. Next step use the firebug and find the class and add some  styles to display properly.)</li>
</ol>
<p><strong><span style="text-decoration: underline;">Add New Display</span></strong></p>
<p>On the <span style="text-decoration: underline;">views left side</span> choose block and click on <span style="text-decoration: underline;"><strong>Add display</strong></span> button. And re-name the block as <span style="text-decoration: underline;">Featured Slider </span>under views <strong><span style="text-decoration: underline;">Basic Settings</span></strong>.</p>
<p><img src="http://www.brightwebsitedesign.com/sites/default/files/images/featured_slider.png" alt="Drupal7: fviews slideshow Slider" /></p>
<h2><strong>(8) Create a Custom Region </strong>(optional step)</h2>
<p>(1) On your thems folder open the <strong><span style="text-decoration: underline;">your_theme_name.info</span></strong> file and add a new region like this shown below;<br />
regions[featured_slider] = Featured Slider and save the .info file.<br />
(2) Open your themes <strong><span style="text-decoration: underline;">page.tpl.php</span></strong> file and add these code where you want your slide to be displayed as shown below;</p>
<p>&lt;?php if ($page['featured_slider']): ?&gt;<br />
&lt;div id=&#8221;featured-slider&#8221;&gt;<br />
&lt;?php print render($page['featured_slider']); ?&gt;<br />
&lt;/div&gt; &lt;!&#8211; End Featured Slider&#8211;&gt;<br />
&lt;?php endif; ?&gt;</p>
<p>You can even create custom front page template like <strong>page&#8211;front.tpl.php</strong> so that you do&#8217;t need to make any changes to the default page.tpl.php template.</p>
<h2><strong><strong>[9] Enable &amp; configure the Block</strong></strong></h2>
<p>Now this block will be visible in the blocks disabled area, so from the Dashboard menu go to <strong><span style="text-decoration: underline;">Structure&gt;Block</span></strong> and enable the block to a themes default region  or the custom region  we created (featured_slider). (Regions varies depends on the theme you  are using.)</p>
<p><span style="text-decoration: underline;"><strong>Block Configuration Settings</strong></span><br />
After enabling the block you get a link to configure the block so click on the <strong><span style="text-decoration: underline;">Configure</span></strong> link and on the settings section set as below;</p>
<p>(1) Block title (if you don&#8217;t want blobk title to be displayed just type &lt;none&gt;)<br />
(2) Again you get all enabled theme specific <strong><span style="text-decoration: underline;">Region settings.</span></strong><br />
<span style="text-decoration: underline;"><strong> On visibility setings</strong></span><br />
(3) Pages&gt;Show block on specific page: choose Only the listed pages and type <span style="text-decoration: underline;"><strong>&lt;front&gt;</strong></span> so that this block will be displayed only on the front page.</p>
<p>That&#8217;s all now we have successfully created our new Views Slideshow on  Drupal7. I hope yo could understand the tutorial I tried my best to  explain as much as I can, if you still have doubt&#8217;s comment below and I  will try my best to help. The scren cast of this tutorial will be coming  soon.</p>
<p>Play around and find the best you can in Drupal7, Best wishes.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/how-to-install-setup-views-slideshow-module-on-drupal7/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/how-to-install-setup-views-slideshow-module-on-drupal7/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/how-to-install-setup-views-slideshow-module-on-drupal7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting 6.x themes to 7.x</title>
		<link>http://blogs.telecommand.com/converting-6-x-themes-to-7-x/</link>
		<comments>http://blogs.telecommand.com/converting-6-x-themes-to-7-x/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 07:57:21 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=79</guid>
		<description><![CDATA[Overview of Drupal Theme changes in 7.x [U] Blocks have new, more meaningful CSS IDs [U] Primary and secondary links are now Main and Secondary menu [U] Unrendered taxonomy links are no longer available as a separate variable in node.tpl.php files [U] RDFa requires some changes at the beginning of html.tpl.php [U] The clear-block class has been renamed to clearfix [...]]]></description>
			<content:encoded><![CDATA[<h2>Overview of Drupal Theme changes in 7.x</h2>
<ol>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/778884">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#blocks">Blocks have new, more meaningful CSS IDs</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/778906">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#menus">Primary and secondary links are now Main and Secondary menu</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/778926">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#taxonomy">Unrendered taxonomy links are no longer available as a separate variable in node.tpl.php files</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/778988">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#rdfa_header">RDFa requires some changes at the beginning of html.tpl.php</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/778998">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#clearfix">The clear-block class has been renamed to clearfix</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/779002">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#box">The box.tpl.php template has been removed</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#help-region">$help became a region</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/779016">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#highlighted-region">Mission statement removed, &#8216;highlighted&#8217; region suggested</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/171224">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#footer-message">Footer message removed</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/171224">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#content-region">Content region is now mandatory, main page content became a block</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/223430">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#variables-processor">Second phase variable process functions</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#html-class-variable">HTML classes generated through a variable</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#html-attributes-variable">HTML attributes generated through a variable</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#variables-processors-for-all-theme-hooks">Variable process functions can now be used for all theming hooks</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#function-argument-variables">All theme functions now take a single argument, $variables</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/173880">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#function-names-phptemplate">Function names must match theme name</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/171205">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#specify-all-css-js">All CSS and JavaScript files must be specified in the theme&#8217;s .info file</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#block-content">Renamed $block-&gt;content in block.tpl.php</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#granular">Granular rendering in node and user templates</a></li>
<li>[<a title="Docs Updated" rel="nofollow" href="http://drupal.org/node/171213">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#jquery_ui">Added jQuery UI (1.8) to core</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#attached_js">Attached JS/CSS for elements</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#closure">$closure becomes $page_bottom, new $page_top and hidden regions</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#sidebars-renamed">$left and $right variables are now $sidebar_first and $sidebar_second; CSS IDs also changed</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#user-picture">$picture changes to $user_picture, and the CSS class &#8216;picture&#8217; to &#8216;user-picture&#8217;</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#element-hidden">New classes available to hide content in an accessible manner</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#no-jsenabled">JavaScript variable Drupal.jsEnabled has been removed</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#phptemplate-suggestion-wildcard">PHPTemplate suggestion wildcard</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#system_elements-theme-definition">Include theme definition explicitly on element when using system_elements()</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme_task_list-accessibility">Added markup to make installation task progress perceivable with screen-reader and CSS disabled.</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme_breadcrumb-heading">Added an invisible heading to theme_breadcrumb().</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme_feed_icon-improved-alt-text">Changes to alt and title attribute for the RSS feed icon</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#search_box">Search box moved from theme layer to blocks</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#menu_tree">Changes to menu tree, link and tab rendering functions</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-links-param">theme_links() has a new parameter $heading for accessibility</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-settings">theme_get_setting() and THEME_settings() have been improved</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-form-required-marker">Added a theme_form_required_marker() function</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-link">Added a theme_link() function</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#skip-link">Skip to main content links in core themes</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme_alter">Alter hooks available to themes</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#system-stylesheets">System module stylesheets have been reorganized to separate behavior-supporting styles from presentational styles</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#shortcuts">New theme setting for displaying the Shortcut module &#8220;add to shortcuts&#8221; link</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#template_files_double_hyphen">Specific template overrides of generic templates use a &#8216;&#8211;&#8217; delimiter instead of &#8216;-&#8217;</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#css-ie-31-tag-limit-workaround">CSS files are sometimes loaded with @import, sometimes with LINK tags</a></li>
<li>[<a rel="nofollow" href="http://drupal.org/node/1030462">U</a>] <a rel="nofollow" href="http://drupal.org/update/themes/6/7#browser-targeted-css">Browser-targeted CSS files can and should be added using drupal_add_css()</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-suggestions-for-menus">Targeted overrides (suggestions) available for theme_menu_link() and theme_menu_tree()</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-submenu">theme_submenu() was removed</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#title-prefix-suffix">New $title_prefix and $title_suffix template variables</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#theme-node-form">theme_node_form() was removed</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#node-get-types">node_get_types() renamed to node_type_get_types()</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#package-core">Core themes now contain &#8220;package = Core&#8221; in their .info files</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#search-result-headings">Heading elements added to search-result.tpl.php</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#xhtml11-compatibility">The name attribute in a and map elements is invalid</a></li>
<li><a rel="nofollow" href="http://drupal.org/update/themes/6/7#engine">PHPTemplate is now the default theme engine</a></li>
</ol>
<h3 id="blocks">Blocks have new, more meaningful CSS IDs</h3>
<p>Many of the CSS IDs for blocks defined by Drupal core have changed so that they more clearly indicate the purpose of the block:</p>
<p><strong>Recent blog posts</strong><br />
Old CSS ID (Drupal 6): <em>block-blog-0</em><br />
New CSS ID (Drupal 7): <em>block-blog-recent</em></p>
<p><strong>Book navigation</strong><br />
Old CSS ID (Drupal 6): <em>block-book-0</em><br />
New CSS ID (Drupal 7): <em>block-book-navigation</em></p>
<p><strong>Recent comments</strong><br />
Old CSS ID (Drupal 6): <em>block-comment-0</em><br />
New CSS ID (Drupal 7): <em>block-comment-recent</em></p>
<p><strong>Active forum topics</strong><br />
Old CSS ID (Drupal 6): <em>block-forum-0</em><br />
New CSS ID (Drupal 7): <em>block-forum-active</em></p>
<p><strong>New forum topics</strong><br />
Old CSS ID (Drupal 6): <em>block-forum-1</em><br />
New CSS ID (Drupal 7): <em>block-forum-new</em></p>
<p><strong>Language switcher</strong><br />
Old CSS ID (Drupal 6): <em>block-locale-0</em><br />
New CSS ID (Drupal 7): <em>block-locale-language-switcher</em></p>
<p><strong>Syndicate</strong><br />
Old CSS ID (Drupal 6): <em>block-node-0</em><br />
New CSS ID (Drupal 7): <em>block-node-syndicate</em></p>
<p><strong>Most recent poll</strong><br />
Old CSS ID (Drupal 6): <em>block-poll-0</em><br />
New CSS ID (Drupal 7): <em>block-poll-recent</em></p>
<p><strong>Author information</strong><br />
Old CSS ID (Drupal 6): <em>block-profile-0</em><br />
New CSS ID (Drupal 7): <em>block-profile-author-information</em></p>
<p><strong>Search form</strong><br />
Old CSS ID (Drupal 6): <em>block-search-0</em><br />
New CSS ID (Drupal 7): <em>block-search-form</em></p>
<p><strong>Popular content</strong><br />
Old CSS ID (Drupal 6): <em>block-statistics-0</em><br />
New CSS ID (Drupal 7): <em>block-statistics-popular</em></p>
<p><strong>Powered by Drupal</strong><br />
Old CSS ID (Drupal 6): <em>block-system-0</em><br />
New CSS ID (Drupal 7): <em>block-system-powered-by</em></p>
<p><strong>User login</strong><br />
Old CSS ID (Drupal 6): <em>block-user-0</em><br />
New CSS ID (Drupal 7): <em>block-user-login</em></p>
<p><strong>Navigation</strong><br />
Old CSS ID (Drupal 6): <em>block-user-1</em><br />
New CSS ID (Drupal 7): <em>block-system-navigation</em></p>
<p><strong>Who&#8217;s new</strong><br />
Old CSS ID (Drupal 6): <em>block-user-2</em><br />
New CSS ID (Drupal 7): <em>block-user-new</em></p>
<p><strong>Who&#8217;s online</strong><br />
Old CSS ID (Drupal 6): <em>block-user-3</em><br />
New CSS ID (Drupal 7): <em>block-user-online</em></p>
<p>For example, a Drupal 6 CSS style declaration such as:</p>
<div><code>/* Make the text in the user login block bigger. */<br />
#block-user-0 {<br />
font-size: 1.5em;<br />
}</code></div>
<p>should become (in Drupal 7):</p>
<div><code>/* Make the text in the user login block bigger. */<br />
#block-user-login {<br />
font-size: 1.5em;<br />
}</code></div>
<p><em>[<a rel="nofollow" href="http://drupal.org/node/778884">Docs Updated</a>]</em></p>
<h3 id="menus">Primary and secondary links are now Main and Secondary menu</h3>
<p>Primary and Secondary links have been renamed to Main and Secondary menu. Themes which support these options will need to be updated to use the new variable names:</p>
<p><strong>6.x: page.tpl.php</strong></p>
<div><code> &lt;div id="menu"&gt;<br />
&lt;?php if (isset($secondary_links)) { ?&gt;&lt;?php print theme('links', $secondary_links, array('class' =&gt; 'links', 'id' =&gt; 'subnavlist')); ?&gt;&lt;?php } ?&gt;<br />
&lt;?php if (isset($primary_links)) { ?&gt;&lt;?php print theme('links', $primary_links, array('class' =&gt; 'links', 'id' =&gt; 'navlist')) ?&gt;&lt;?php } ?&gt;<br />
&lt;/div&gt;</code></div>
<p><strong>7.x: page.tpl.php</strong></p>
<div><code> &lt;div id="menu"&gt;<br />
&lt;?php if (isset($secondary_menu)) { ?&gt;&lt;?php print theme('links', $secondary_menu, array('class' =&gt; 'links', 'id' =&gt; 'subnavlist')); ?&gt;&lt;?php } ?&gt;<br />
&lt;?php if (isset($main_menu)) { ?&gt;&lt;?php print theme('links', $main_menu, array('class' =&gt; 'links', 'id' =&gt; 'navlist')) ?&gt;&lt;?php } ?&gt;<br />
&lt;/div&gt;</code></div>
<p>You will also need to make the appropriate variable name changes if your theme&#8217;s theme.info is defining features[]. Defining renamed or replaced features may cause all features to render as blank or empty arrays.</p>
<p><strong>6.x: theme.info &#8211; features[]</strong></p>
<div><code> features[] = primary_links<br />
features[] = secondary_links</code></div>
<p><strong>7.x: theme.info &#8211; features[]</strong></p>
<div><code> features[] = main_menu<br />
features[] = secondary_menu</code></div>
<p>Also, if your theme.info is defining <strong>features[] = mission</strong> please note that this feature has been removed and replaced with a variable named $mission which can be output in your page template.</p>
<p><em>[<a rel="nofollow" href="http://drupal.org/node/778906">Docs Updated</a>]</em></p>
<h3 id="taxonomy">Unrendered taxonomy links are no longer available as a separate variable in node.tpl.php files</h3>
<p>Previously, node.tpl.php files could use the <code>$taxonomy</code> variable if they needed access to an array of unrendered taxonomy links associated with the current node.</p>
<p>In Drupal 7, this is no longer the case. Instead, all links have been moved into the <code>$node</code>object. The array of unrendered taxonomy links can now be found in <code>$node-&gt;content['links']['terms']['#value']</code> instead. (Note that this array should be used with caution, since the text contained within it has not been escaped to prevent <a rel="nofollow" href="http://drupal.org/node/28984">XSS attacks</a>.)</p>
<p><em>Rendered</em> taxonomy links are not affected; node.tpl.php files can continue to access these via the <code>$terms</code> variable, as before. In many cases, the <code>$terms</code> variable is what you want to use in your theme anyway, and you might be able to replace references to <code>$taxonomy</code> with it, as in the following example:</p>
<p><strong>6.x</strong></p>
<div><code> &lt;?php if ($taxonomy): ?&gt;<br />
&lt;div&gt;&lt;?php print $terms ?&gt;&lt;/div&gt;<br />
&lt;?php endif;?&gt;</code></div>
<p><strong>7.x</strong></p>
<div><code> &lt;?php if ($terms): ?&gt;<br />
&lt;div&gt;&lt;?php print $terms ?&gt;&lt;/div&gt;<br />
&lt;?php endif;?&gt;</code></div>
<p><em>[<a rel="nofollow" href="http://drupal.org/node/778926">Docs Updated</a>]</em></p>
<h3 id="rdfa_header">RDFa requires some changes at the beginning of html.tpl.php</h3>
<p>Drupal 7 is able to output RDFa which requires the following changes in html.tpl.php.</p>
<ul>
<li>The DOCTYPE must be changed to XHTML+RDFa 1.0.</li>
<li>The old <code>lang</code> attribute should be removed for <a rel="nofollow" href="http://www.w3.org/TR/xhtml11/changes.html">compatibility with XHTML 1.1</a>, only <code>xml:lang</code> should remain.</li>
<li>The RDF namespace prefixes used throughout the HTML document need to be serialized in the <code>html</code> tag and are contained in the <code>$rdf_namespaces</code> variable.</li>
<li>The GRDDL profile should be specified in the <code>&lt;head&gt;</code> tag.</li>
</ul>
<p><strong>6.x</strong></p>
<div><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="&lt;?php print $language-&gt;language ?&gt;" lang="&lt;?php print $language-&gt;language ?&gt;" dir="&lt;?php print $language-&gt;dir ?&gt;"&gt;<br />
&lt;head&gt;</code></div>
<p><strong>7.x</strong></p>
<div><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"<br />
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="&lt;?php print $language-&gt;language ?&gt;" dir="&lt;?php print $language-&gt;dir ?&gt;"<br />
&lt;?php print $rdf_namespaces ?&gt;&gt;<br />
&lt;head profile="&lt;?php print $grddl_profile ?&gt;"&gt;</code></div>
<p><em>[<a rel="nofollow" href="http://drupal.org/node/778988">Docs Updated</a>]</em></p>
<h3 id="clearfix">The clear-block class has been renamed to clearfix</h3>
<p>The “clear-block” class was a Drupalism for functionality that was better known by the CSS Community as the “clearfix” class. Also, using “block” in the old name was confusing to Drupal users more familiar with Drupal’s <em>block system</em> than with the properties inside that CSS ruleset. New themers and designers to the Drupal community will no longer be confused by the old class name.</p>
<p>If you had a <code>&lt;div&gt;</code> in your D6 theme, simply change it to <code>&lt;div&gt;</code>.</p>
<p><em>[<a rel="nofollow" href="http://drupal.org/node/778998">Docs Updated</a>]</em></p>
<h3 id="box">The box.tpl.php template has been removed</h3>
<p>The amorphous box.tpl.php template has been removed. Those pieces of content that were using the box.tpl.php now have their own theme functions.</p>
<p>The search results listings are just themed with theme(&#8216;search_results&#8217;) instead of being wrapped in an additional box. The comment form box is themed with a theme_comment_form_box() theme function.</p>
<p><em>[<a rel="nofollow" href="http://drupal.org/node/779002">Docs Updated</a>]</em></p>
<h3 id="help-region">$help became a region</h3>
<p><a rel="nofollow" href="http://drupal.org/node/448784">(issue)</a> In Drupal 7, a new region was added to the defaults (<code>left</code>, <code>right</code>, <code>content</code>, <code>header</code>, <code>footer</code>) called <code>help</code>. By default, the textual content of this region is the same as the <code>$help</code>variable was in page.tpl.php for Drupal 6.</p>
<p>Themes in Drupal 7 need to ensure that the <code>$help</code> variable is printed in page.tpl.php and, if the theme overrode the default regions, that the following line is added to its .info file:</p>
<div><code>regions[help] = Help</code></div>
<p>The help text is now surrounded by the block.tpl.php template’s <code>&lt;div&gt;</code> tags and classes, so the CSS used to style the help likely needs changing.</p>
<p><em>[docs updated]</em></p>
<h3 id="highlighted-region">Mission statement removed, &#8216;highlighted&#8217; region suggested</h3>
<p><a rel="nofollow" href="http://drupal.org/node/428800">(issue)</a> In Drupal 6, the page template received a special variable called $mission, which contained the mission statement setting of the website when on the front page. Drupal 6 themes also had an option on the theme settings page to toggle this functionality. Drupal 7 removes the mission setting and the option toggle in favor of the more general custom block placement in regions.</p>
<p>Drupal 7 core themes now include a region named &#8216;highlighted&#8217; which uses the same display as the mission statement area in Drupal 6. Whether this region has content now depends on administrators setting block placement, and is not limited to the front page only. Content in the highlighted region will be surrounded by the block.tpl.php template’s <code>&lt;div&gt;</code> tags and classes, so the CSS used to style this area might need changing.</p>
<p><strong>6.x</strong></p>
<p><em>In .info:</em></p>
<div><code>features[] = mission</code></div>
<p><em>In page.tpl.php:</em></p>
<div><code>&lt;?php print $mission; ?&gt;</code></div>
<p><strong>7.x</strong></p>
<p>If you have defined custom regions in your .info file, you may add the highlighted region to the existing list of regions as shown below. If your theme does not define any regions, the highlighted region will be provided by core automatically, and you&#8217;ll only need to ensure that you print it in page.tpl.php.</p>
<p><em>in .info:</em></p>
<div><code>regions[highlighted] = Highlighted</code></div>
<p><em>in page.tpl.php:</em></p>
<div><code>&lt;?php print render($page['highlighted']); ?&gt;</code></div>
<p><a rel="nofollow" href="http://drupal.org/node/779016">[Docs Updated]</a>.</p>
<h3 id="footer-message">Footer message removed</h3>
<p><a rel="nofollow" href="http://drupal.org/node/453080">(issue)</a> In Drupal 6, the page template received a special variable called $footer_message, which contained the footer message setting of the website. This was usually output before the footer region ($footer) by the template. Drupal 7 recognizes that the footer message was just a special type of user defined block. Those who had this setting in Drupal 6 will get a user defined block in the update, positioned in the $footer region.</p>
<p>To update your themes, just remove the $footer_message variable from them.</p>
<p>If you happened to output the $footer_message in your page template, but did not yet support the $footer region, now might be the time to start supporting this region. If you don&#8217;t override any regions, the footer region will be predefined for you. If you do override regions, please output the $footer content in your page template and include the footer region in your .info file:</p>
<div><code>regions[footer] = Footer</code></div>
<p>Support for the footer region is just suggested but not required by Drupal. Those upgrading from Drupal 6 with a theme lacking support for the footer region will be able to reposition their block to another region.</p>
<h3 id="content-region">Content region is now mandatory, main page content became a block</h3>
<p>In Drupal up to version 6, the $content variable in page.tpl.php contained the main page content appended with the blocks positioned into the content region (if you had that region defined).</p>
<p>In Drupal 7, $content became a full region and is now mandatory in all themes. This new requirement was set up so that when enabling new themes, Drupal knows where to put the main page content by default.</p>
<p>In Drupal 6, it was only possible to put blocks after the main page content in this region. The only way to put blocks before the main page content was to define a specific region for that purpose. Drupal 7 now makes the main page content its own block. This makes it possible to put blocks before or after the main page content in the region without hacking in a new region.</p>
<p>If you relied on the fact that blocks were only put in the sidebars and therefore got their styling via just a <code>.block</code> class selector or something similar, now you might need to revisit your CSS files. Because the main page content is wrapped by markup from block.tpl.php, the<code>.block</code> selector will match that too, so you need to limit your blocks styling to certain regions by making the selectors more specific, such as <code>#left-sidebar .block</code>.</p>
<h3 id="variables-processor">Second phase variable process functions</h3>
<p>There are now two sets of variables process functions. The first are the existing &#8220;<a rel="nofollow" href="http://drupal.org/node/223430"><em>pre</em>process</a>&#8221; functions. The second are &#8220;process&#8221; functions which are run after preprocessors. All the various prefixes and suffixes apply to this second phase in the exact same way. This is useful when certain variables need to be worked on in two phases.</p>
<p>For example, adding classes into an array for the &#8220;preprocess&#8221; phase then flattening them into a string in the &#8220;process&#8221; phase so it&#8217;s ready to print within a template. See next section.</p>
<p><a rel="nofollow" href="http://drupal.org/node/223430">[Docs Updated]</a>.</p>
<h3 id="html-class-variable">HTML classes generated through a variable</h3>
<p>All templates can now print out <code>$classes</code> from a template to render dynamic classes built from variable process functions. The way to add these dynamic classes is by feeding the variable key labeled &#8220;classes_array&#8221; like so:</p>
<div><code>&lt;?php<br />
function mytheme_preprocess_node(&amp;$vars) {<br />
// Add a striping class.<br />
$vars['classes_array'][] = 'node-' . $vars['zebra'];<br />
}<br />
?&gt;</code></div>
<p>The default &#8220;template_process&#8221; (second phase processor) will take care of flattening the array into a flat string making it ready to print from your template. Dynamic classes are generated for common templates by default but due to the way it&#8217;s set-up, any template can have a $classes variable.</p>
<p>Example:</p>
<div><code>&lt;divborder-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;?php print $classes ?&gt;"&gt;<br />
...<br />
&lt;/div&gt;</code></div>
<h3 id="html-attributes-variable">HTML attributes generated through a variable</h3>
<p>All templates can now print out <code>$attributes</code>, <code>$title_attributes</code>, and <code>$content_attributes</code>from a template to render dynamic attributes built from variable process functions. The RDF module and other modules add important information to these variables, so it is important for themes to ensure that these variables are printed correctly within all overridden template files. These three variables contain attributes for the overall element being rendered by the template, and its primary title and content elements, respectively. The way to add attributes to these variables is by feeding the variable keys labeled &#8220;attributes_array&#8221;, &#8220;title_attributes_array&#8221;, and &#8220;content_attributes_array&#8221; like so:</p>
<div><code>&lt;?php<br />
function mytheme_preprocess_node(&amp;$vars) {<br />
// If the node was saved with a log message and the currently logged in user<br />
// has permission to view that message, add it as a title attribute (tooltip)<br />
// when displaying the node.<br />
if (!empty($vars['node']-&gt;log) &amp;&amp; user_access('view revisions')) {<br />
$vars['attributes_array']['title'] = $vars['node']-&gt;log;<br />
}</p>
<p>// Force the direction of node titles to be left to right, regardless of<br />
// language or any other settings.<br />
$vars['title_attributes_array']['dir'] = 'ltr';<br />
}<br />
?&gt;</code></div>
<p>The default &#8220;template_process&#8221; (second phase processor) takes care of flattening the arrays into strings ready to print within the template file. The flattening process results in either empty strings (if no dynamic attributes were set) or strings that have a leading space followed by attribute names and values. Because of this, the attributes variables should be printed directly next to what precedes it in the template, with no leading space.</p>
<p>Example:</p>
<div><code>&lt;div id="..."&lt;?php print $attributes; ?&gt;&gt;<br />
&lt;h2&lt;?php print $title_attributes; ?&gt;&gt;...&lt;/h2&gt;<br />
&lt;div&lt;?php print $content_attributes; ?&gt;&gt;...&lt;/div&gt;<br />
&lt;/div&gt;</code></div>
<p>As is shown in the example, the convention is for the &#8220;id&#8221; and &#8220;class&#8221; attributes to be printed explicitly within the template, and for the attributes variables to be used for all other attributes. Therefore, to ensure that no attribute gets printed twice within the same element, the following rules should be followed:</p>
<ul>
<li>Preprocess functions within modules must not add &#8220;id&#8221; or &#8220;class&#8221; to the attributes arrays.</li>
<li>Preprocess functions within themes may add &#8220;id&#8221; and/or &#8220;class&#8221; to the attributes arrays, but if they do so, the theme must also override the corresponding template file and ensure that the same attribute isn&#8217;t being printed explicitly.</li>
<li>Templates must not print any attribute other than &#8220;id&#8221; or &#8220;class&#8221; explicitly on any element for which an attributes variable is also being printed. Instead, the theme must use a preprocess function, as shown above.</li>
</ul>
<h3 id="variables-processors-for-all-theme-hooks">Variable process functions can now be used for all theming hooks</h3>
<p><a rel="nofollow" href="http://drupal.org/node/400292">(issue)</a> In Drupal 6, <a rel="nofollow" href="http://drupal.org/node/223430">preprocess functions</a> could only be used for theming hooks rendered by templates. In Drupal 7, hook-specific preprocess and process functions can be used for all theming hooks, whether rendered by templates or functions. For example, a theme can make all menu links that start with &#8220;http:&#8221; or &#8220;https:&#8221; (as opposed to ones that refer to an internal Drupal path) to open in a new browser tab:</p>
<div><code>&lt;?php<br />
function mytheme_preprocess_menu_link(&amp;$variables) {<br />
if (<br />
substr($variables['element']['#href'], 0, 5) == 'http:' ||<br />
substr($variables['element']['#href'], 0, 6) == 'https:'<br />
) {<br />
$variables['element']['#localized_options']['attributes']['target'] = '_blank';<br />
}<br />
}<br />
?&gt;</code></div>
<p>Every preprocess function adds to the time it takes to theme the item, so especially for theme functions that get called a lot, keep an eye on performance when adding preprocess functions.</p>
<p>To minimize performance overhead, the non-hook-specific preprocess and process functions are called for templates only. See the <a rel="nofollow" href="http://api.drupal.org/api/function/theme/7">API documentation for theme()</a> for the full list of hook-specific and non-hook-specific preprocess and process functions.</p>
<h3 id="function-argument-variables">All theme functions now take a single argument, $variables</h3>
<p><a rel="nofollow" href="http://drupal.org/node/572618">(issue)</a> In Drupal 6, theme functions registered their function arguments in hook_theme(). In Drupal 7, all theme functions take a single argument, $variables, an array of keyed variables, and register the expected keys within this array in hook_theme().</p>
<p><strong>6.x</strong></p>
<div><code>&lt;?php<br />
function drupal_common_theme() {<br />
return array(<br />
...<br />
'table' =&gt; array(<br />
'arguments' =&gt; array('header' =&gt; NULL, 'rows' =&gt; NULL, 'attributes' =&gt; array(), 'caption' =&gt; NULL),<br />
),<br />
...<br />
);<br />
}</p>
<p>function theme_table($header, $rows, $attributes = array(), $caption = NULL) {<br />
...<br />
}<br />
?&gt;</code></div>
<p><strong>7.x</strong></p>
<div><code>&lt;?php<br />
function drupal_common_theme() {<br />
return array(<br />
...<br />
'table' =&gt; array(<br />
'variables' =&gt; array('header' =&gt; NULL, 'rows' =&gt; NULL, 'attributes' =&gt; array(), 'caption' =&gt; NULL, 'colgroups' =&gt; array(), 'sticky' =&gt; TRUE),<br />
),<br />
...<br />
);<br />
}</p>
<p>function theme_table($variables) {<br />
$header = $variables['header'];<br />
$rows = $variables['rows'];<br />
$attributes = $variables['attributes'];<br />
$caption = $variables['caption'];<br />
$colgroups = $variables['colgroups'];<br />
$sticky = $variables['sticky'];<br />
...<br />
}<br />
?&gt;</code></div>
<h3 id="function-names-phptemplate">Function names must match theme name</h3>
<p>Function names in the file <code>template.php</code> must now use the relevant theme&#8217;s name. You may no longer use phptemplate_function. This change was made in the following patch: <a rel="nofollow" href="http://drupal.org/node/422116">Die, themeEngineName_ prefix, die!</a>. To update your theme ensure there are no functions that begin with the template engine name (phptemplate) in the file <code>template.php</code> or any related template files.</p>
<h3 id="specify-all-css-js">All CSS and JavaScript files must be specified in the theme&#8217;s .info file</h3>
<p>In Drupal 6 <code>style.css</code> and <code>script.js</code> would be included in your theme automatically, even if they weren&#8217;t present in the theme&#8217;s .info file. In Drupal 7, themes must specify these files in the .info file to include them. More information about this change can be seen at <a rel="nofollow" href="http://drupal.org/node/351487">#351487: Remove default values for stylesheet and scripts includes from system module</a>. If your theme doesn&#8217;t use these files, or if they are already specified in your theme&#8217;s info file, no changes are required. <em>[docs updated]</em></p>
<h3 id="block-content">Renamed $block-&gt;content to $content in block.tpl.php</h3>
<p>See <a rel="nofollow" href="http://drupal.org/node/478744">this issue</a> for the whole story.</p>
<h3 id="granular">Granular rendering in node and user templates.</h3>
<p><a rel="nofollow" href="http://drupal.org/node/455844">Issue</a>. Template authors may now finally print out bits of node and profile content as they see fit and still maintain forward compatibility with new modules that might add new content. To do so, template authors should use 2 new functions &#8211; render() and hide(). Example taken from node.tpl.php:</p>
<div><code>&lt;div&gt;<br />
&lt;?php<br />
// We hide the comments and links now so that we can render them later.<br />
hide($content['comments']);<br />
hide($content['links']);<br />
print render($content);<br />
?&gt;<br />
&lt;/div&gt;</p>
<p>&lt;?php print render($content['links']); ?&gt;</p>
<p>&lt;?php print render($content['comments']); ?&gt;</code></div>
<p>render() returns all the items that are in $content. So, <code>print render($content)</code> is equivalent to the D6 <code>print $content</code>. When a templater wants to print out part of the <code>$content</code> array, she may do so with something like <code>print render($content['links'])</code>. If the printing of links comes after the printing of all the rest of <code>$content</code>, then templater should call <code>hide($content['links'])</code> before calling <code>print render($content)</code>. Then, the links can be printed further down in the template with <code>print render($content['links'])</code>.</p>
<h3 id="jquery_ui">Added jQuery UI (1.8) to core</h3>
<p><a rel="nofollow" href="http://drupal.org/node/315035">(issue)</a> jQuery UI 1.8 was added to core. You can find the jQuery UI files in misc/ui and can add Javascript and CSS files from there to your pages with the regular drupal_add_js() and drupal_add_css() calls, no special function calls required. If you are migrating a theme which was previously dependent on the jquery_ui contributed module, see <a rel="nofollow" href="http://drupal.org/update/modules/6/7#jquery_ui">the module update guide on the topic</a>, which provides examples. <em>[docs updated]</em></p>
<h3 id="attached_js">Attached JavaScript and CSS for drupal_render</h3>
<p><a rel="nofollow" href="http://drupal.org/node/323112">(issue)</a> Individual elements now have the ability to define what JavaScript and cascading stylesheets are associated with them. This is stated in the <a rel="nofollow" href="http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/7#attached_js">#attached_js</a> and <a rel="nofollow" href="http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/7#attached_css">#attached_css</a>property.</p>
<p>Drupal 6.x:</p>
<div><code>&lt;?php<br />
function example_admin_settings() {<br />
// Add example.admin.css<br />
drupal_add_css(drupal_get_path('module', 'example') .'/example.admin.css');<br />
// Add some inline JavaScript<br />
drupal_add_js('alert("You are visiting the example form.");', 'inline');<br />
// Add a JavaScript setting.<br />
drupal_add_js(array('mymodule' =&gt; 'example'), 'setting');<br />
$form['example'] = array(<br />
'#type' =&gt; 'fieldset',<br />
'#title' =&gt; t('Example');<br />
);<br />
return $form;<br />
}<br />
?&gt;</code></div>
<p>Drupal 7.x:</p>
<div><code>&lt;?php<br />
function example_admin_settings() {<br />
$form['#attached_css'] = array(<br />
// Add example.admin/css.<br />
drupal_get_path('module', 'example') . '/example.admin.css'<br />
),<br />
$form['#attached_js'] = array(<br />
// Add some inline JavaScript.<br />
'alert("You are visiting the example form.");' =&gt; 'inline',<br />
// Add a JavaScript setting. Note that when the key is a number, the 'data' property will be used.<br />
array(<br />
'data' =&gt; array('mymodule' =&gt; array(...)),<br />
'type' =&gt; 'setting'<br />
),<br />
);<br />
$form['example'] = array(<br />
'#type' =&gt; 'fieldset',<br />
'#title' =&gt; t('Example');<br />
);<br />
return $form;<br />
}<br />
?&gt;</code></div>
<h3 id="closure">$closure becomes $page_bottom, new $page_top and hidden regions</h3>
<p><a rel="nofollow" href="http://drupal.org/node/519782">(issue 1)</a>, <a rel="nofollow" href="http://drupal.org/node/511284">(issue 2)</a> Drupal 6 provides a special variable called $closure which should be put at the bottom of the HTML body output and can be themed via theme_footer() (which calls out to implementations of hook_footer() in modules). To generalize on one way to put output to the different page areas, Drupal 7 standardizes on regions and introduced the page_bottom region in place of the $closure special variable. Also, page_top is added as a pair of page_bottom. In Drupal 7 you need to output $page_top at the top of the HTML body output and $page_bottom at the bottom.</p>
<p>Drupal 6:</p>
<div><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />
...<br />
&lt;bodyborder-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;?php print $body_classes; ?&gt;"&gt;<br />
...<br />
&lt;?php print $closure; ?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></div>
<p>Drupal 7:</p>
<div><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"<br />
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"&gt;<br />
...<br />
&lt;bodyborder-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;?php print $classes; ?&gt;"&gt;<br />
&lt;?php print $page_top; ?&gt;<br />
...<br />
&lt;?php print $page_bottom; ?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></div>
<p>If you define custom regions, it is important to remember that you need to include the page_top and page_bottom regions in your set of regions.</p>
<p>theme .info file extract:</p>
<div><code>regions[content] = Content<br />
regions[help] = Help<br />
regions[page_top] = Page top<br />
regions[page_bottom] = Page bottom</code></div>
<p>The page_top and page_bottom regions are hidden, which means they will not show up on the blocks administration interface. When doing site-specific themes, it might also be useful to add more hidden regions (to provide ways for modules to add output to more places in the theme without defining blocks showing up on the blocks interface), you can do that via the regions_hidden[] .info file array which is new to Drupal 7:</p>
<p>theme .info file extract:</p>
<div><code>regions[content] = Content<br />
regions[help] = Help<br />
regions[page_top] = Page top<br />
regions[page_bottom] = Page bottom<br />
regions[indicators] = Indicators<br />
regions_hidden[] = indicators</code></div>
<h3 id="sidebars-renamed">$left and $right variables are now $sidebar_first and $sidebar_second; CSS IDs also changed</h3>
<p><a rel="nofollow" href="http://drupal.org/node/226587">(issue)</a> In Drupal 6, the sidebar variable names were <code>$left</code> and <code>$right</code>. In Drupal 7 they are <code>$sidebar_first</code> and <code>$sidebar_second</code>.</p>
<p><strong>6.x</strong></p>
<div><code> &lt;?php if (!empty($left)): ?&gt;<br />
&lt;div id="sidebar-left"&gt;<br />
&lt;?php print $left; ?&gt;<br />
&lt;/div&gt; &lt;!-- /sidebar-left --&gt;<br />
&lt;?php endif; ?&gt;<br />
...<br />
&lt;?php if (!empty($right)): ?&gt;<br />
&lt;div id="sidebar-right"&gt;<br />
&lt;?php print $right; ?&gt;<br />
&lt;/div&gt; &lt;!-- /sidebar-right --&gt;<br />
&lt;?php endif; ?&gt;</code></div>
<p><strong>7.x</strong></p>
<div><code> &lt;?php if ($sidebar_first): ?&gt;<br />
&lt;div id="sidebar-first"&gt;&lt;div&gt;<br />
&lt;?php print $sidebar_first; ?&gt;<br />
&lt;/div&gt;&lt;/div&gt; &lt;!-- /.section, /#sidebar-first --&gt;<br />
&lt;?php endif; ?&gt;</p>
<p>&lt;?php if ($sidebar_second): ?&gt;<br />
&lt;div id="sidebar-second"&gt;&lt;div&gt;<br />
&lt;?php print $sidebar_second; ?&gt;<br />
&lt;/div&gt;&lt;/div&gt; &lt;!-- /.section, /#sidebar-second --&gt;<br />
&lt;?php endif; ?&gt;</code></div>
<p>This means that associated CSS IDs have changed as well:</p>
<table>
<tbody>
<tr>
<th>Old CSS ID (Drupal 6)</th>
<th>New CSS ID (Drupal 7)</th>
</tr>
<tr>
<td><em>#sidebar-left</em></td>
<td><em>#sidebar-first</em></td>
</tr>
<tr>
<td><em>#sidebar-right</em></td>
<td><em>#sidebar-second</em></td>
</tr>
</tbody>
</table>
<p><em>[docs updated]</em></p>
<h3 id="user-picture">$picture changes to $user_picture, and the CSS class &#8216;picture&#8217; to &#8216;user-picture&#8217;</h3>
<p>The variable and the CSS class have been renamed to be more descriptive.</p>
<p>Drupal 6 (user-picture.tpl.php):</p>
<div><code>&lt;div&gt;<br />
&lt;?php print $picture; ?&gt;<br />
&lt;/div&gt;</code></div>
<p>Drupal 7:</p>
<div><code>&lt;?php if ($user_picture): ?&gt;<br />
&lt;div&gt;<br />
&lt;?php print $user_picture; ?&gt;<br />
&lt;/div&gt;<br />
&lt;?php endif; ?&gt;</code></div>
<h3 id="element-hidden">New classes available to hide content in an accessible manner</h3>
<p>Two new system classes have been added to be used for the purpose of hiding elements, <code>.element-hidden</code> and <code>.element-invisible</code>. Each class serves its own unique purpose:</p>
<dl>
<dt><code>.element-hidden</code></dt>
<dd>The role of this class is to hide elements from all users. This class should be used for elements which should not be immediately displayed to any user. An example would be a collapsible fieldset that will be expanded with a click from a user. The effect of this class can be toggled with the jQuery <code>show()</code> and <code>hide()</code> functions.</dd>
<dt><code>.element-invisible</code></dt>
<dd>The role of this class is to hide elements visually, but keep them available for screen-readers. This class should be used for information required for screen-reader users to understand and use the site where visual display is undesirable. Information provided in this manner should be kept concise, to avoid unnecessary burden on the user. This class must not be used for focusable elements (such as links and form elements) as this causes issues for keyboard only or voice recognition users.</dd>
</dl>
<h3 id="no-jsenabled">JavaScript variable Drupal.jsEnabled has been removed</h3>
<p>In previous versions of Drupal, you could do the following in JavaScript code, to verify that JavaScript was enabled and sufficient for Drupal to do its &#8220;behaviors&#8221;:</p>
<div><code>if( Drupal.jsEnabled ) {<br />
// something<br />
}</code></div>
<p>In Drupal 7, the <code>Drupal.jsEnabled</code> variable is no longer defined, and there is no work-around &#8212; the assumption is that JQuery things will simply not work if they don&#8217;t work, so there&#8217;s no reason to check ahead of time. See issue <a title="Status: closed (fixed)" href="http://drupal.org/node/444352">#444352: Kill the killswitch</a> for discussion.</p>
<h3 id="phptemplate-suggestion-wildcard">PHPTemplate suggestion wildcard</h3>
<p><a rel="nofollow" href="http://drupal.org/node/167112">(issue)</a> PHPTemplate offers suggestions based on the URI integers. In Drupal 6, you have to theme the previous suggestion or the specific one eg.</p>
<p>page-user.tpl.php or page-user-1.tpl.php</p>
<p>This was cumbersome because to theme all the user pages, it meant overriding page-user.tpl.php, which in turn themed the user login page.</p>
<p>The new suggestion wildcard for integer arguments accepts % suggestions page&#8211;user&#8211;%.tpl.php. Suggestions which have additional arguments like page&#8211;user&#8211;edit.tpl.php remain the same; this simply differentiates the suggestions with and without integer args.</p>
<h3 id="system_elements-theme-definition">Include theme definition explicitly on element when using system_elements()</h3>
<p>In system_elements(), it is now necessary to include the theme definition explicitly on the element, rather than allowing the system to &#8220;fallback&#8221; and assign it automatically. Refer to<a rel="nofollow" href="http://drupal.org/node/127731?mode=2&amp;sort=2">issue 127731</a>.</p>
<h3 id="theme_task_list-accessibility">Added markup to make installation task progress perceivable with screen-reader and CSS disabled</h3>
<p>(Issue)</p>
<p>In D6 there is no markup to indicate which of the installation tasks were complete, or which task is active, these differences are only shown with CSS styling.</p>
<p>In Drupal 7 markup has been added to theme_task_list() to:</p>
<dl>
<dt>Add a heading that is only visible to screen-reader users and when CSS is disabled.</dt>
<dd><code>&lt;h2&gt;Installation tasks&lt;/h2&gt;</code></dd>
<dt>Append text &#8220;(done)&#8221; and &#8220;(active)&#8221; to relevant tasks in the task list, visible only to screen-reader users and when CSS is disabled.</dt>
<dd><code>&lt;span&gt;(done)&lt;/span&gt;</code></dd>
</dl>
<h3 id="theme_breadcrumb-heading">Add an invisible heading to theme_breadcrumb()</h3>
<p>(Issue)</p>
<p>In D6 there is no markup to indicate the role or purpose of the breadcrumb links to users of screen-readers.</p>
<p>Drupal 7 provides a heading before the list of breadcrumb links, which is visible to screen-reader users and when CSS is disabled. This heading has been added to theme_breadcrumb() and to garland_breadcrumb().</p>
<p><code>&lt;h2&gt;You are here&lt;/h2&gt;</code></p>
<h3 id="theme_feed_icon-improved-alt-text">Changes to alt and title attribute for the RSS feed icon</h3>
<p>In D6 the alt attribute of the RSS feed icon themed by theme_feed_icon() was statically set to &#8220;Syndicate content&#8221; and the title attribute of the icon was set to the string passed to the function in the $title parameter.</p>
<p>Drupal 7 sets the alt attribute of the image and the title attribute of the anchor for the RSS feed to the same text. The text is comprised of &#8220;Subscribe to &#8221; + the $title string passed to theme_feed_icon().</p>
<h3 id="search_box">Search box moved from theme layer to blocks</h3>
<p>In previous versions, the search_box was displayed by the theme using $search_box.</p>
<p>Drupal 7 removes this. The search form is simply part of the block system. Theme developers will want to remove all references to $search_box in the theme, and may need to change CSS to handle the search box in the block.</p>
<p>Site maintainers upgrading sites from Drupal 6 to Drupal 7 will want to add the search form block to their site.</p>
<h3 id="menu_tree">Changes to menu tree, link and tab rendering functions</h3>
<p><a rel="nofollow" href="http://drupal.org/node/283723">(Issue)</a></p>
<p>function <a rel="nofollow" href="http://api.drupal.org/api/function/menu_tree_output/7">menu_tree_output()</a> now returns a structured array of data that can be rendered to html using drupal_render().</p>
<p>Function theme_menu_item_link() and theme_menu_item() have been removed and are effectively replaced by in terms of rendering a menu tree by <a rel="nofollow" href="http://api.drupal.org/api/function/theme_menu_link/7">theme_menu_link()</a>. This is the default function used to render each link in the tree returned by menu_tree_output().</p>
<p>Function <a rel="nofollow" href="http://api.drupal.org/api/function/theme_menu_local_task/7">theme_menu_local_task()</a> takes different parameters and has a companion<a rel="nofollow" href="http://api.drupal.org/api/function/theme_menu_local_action/7">theme_menu_local_action()</a> that did not exist in Drupal 6. Both of these function take as the first parameter a menu link array with &#8216;title&#8217;, &#8216;href&#8217;, and &#8216;localized_options&#8217; keys. In Drupal 6, the first parameter was a string. The change to array was made in order to allow removal of theme_menu_item_link(). The second parameter theme_menu_local_task() of is still a boolean, $active.</p>
<h3 id="theme-links-param">theme_links() has a new parameter $heading for accessibility</h3>
<p>Issue: <a title="Status: closed (fixed), Assigned to: jhodgdon" href="http://drupal.org/node/364219">#364219: Navigation menus should be preceded by headings of the appropriate level (usually &lt;h2&gt;).</a></p>
<p>To meet <a rel="nofollow" href="http://www.w3.org/WAI/intro/wcag.php">Web Content Accessibility Guidelines (WCAG)</a> requirements, <a rel="nofollow" href="http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H69.html">HTML headings should be used before all content sections</a>, which includes lists of links such as menus. The headers ensure that there is a quick way for assistive technology users to browse through the content; however, most visual users do not need headers on navigation lists, because they can get a sense of the structure by how they are arranged visually on the page. So, the recommendation is to add a header with the &#8220;element-invisible&#8221; CSS class on it, so that only assistive technology users will notice the header.</p>
<p>It is also important that the header level used (H2, H3, etc.) be appropriately nested in the heading hierarchy. So, it is not recommended to just blindly add an H2 header before each list.</p>
<p>For that reason, the <a rel="nofollow" href="http://api.drupal.org/api/function/theme_links/7">theme_links()</a> function, which is normally called via theme(&#8216;links&#8217;, &#8230;), has a new third parameter $heading to add the required heading to a list of links.</p>
<p>For example &#8211; Drupal 6 in a typical page.tpl.php file:</p>
<div><code>&lt;?php print theme('links', $secondary_menu, array('id' =&gt; 'secondary-menu', 'class' =&gt; array('links', 'clearfix'))); ?&gt;</code></div>
<p>Drupal 7:</p>
<div><code>&lt;?php print theme('links', $secondary_menu, array('id' =&gt; 'secondary-menu', 'class' =&gt; array('links', 'clearfix'), 'heading' =&gt; array('text' =&gt; t('Secondary menu'), 'level' =&gt; 'h2', 'class' =&gt; array('element-invisible')))); ?&gt;</code></div>
<p>This will result in a semantically correct and accessible secondary menu in Drupal 7, because an invisible heading has been added:</p>
<div><code>&lt;h2&gt;Secondary menu&lt;/h2&gt;</code></div>
<p>For more information:</p>
<ul>
<li><a rel="nofollow" href="http://drupal.org/node/394094">Accessibility in Drupal</a></li>
<li><a rel="nofollow" href="http://drupal.org/node/464472">Theming accessibility guide</a></li>
<li><a rel="nofollow" href="http://drupal.org/node/561750">Headings section of theme accessibility guide</a></li>
</ul>
<h3 id="theme-settings">theme_get_setting() and THEME_settings() have been improved</h3>
<p>In Drupal 6, themes could add custom form elements to their “configure theme settings” page at admin/build/themes/settings/THEMENAME. Themes would need to create a theme-settings.php page in their theme directory and use a function with the following syntax:</p>
<div><code>&lt;?php<br />
/**<br />
* Implementation of THEMEHOOK_settings() function.<br />
*<br />
* @param $saved_settings<br />
*   array An array of saved settings for this theme.<br />
* @return<br />
*   array A form array.<br />
*/<br />
function phptemplate_settings($saved_settings) { }<br />
?&gt;</code></div>
<p>In Drupal 7, much more flexibility is given to themes to modify the entire theme settings form. In a theme’s theme-settings.php, themes should now use a<a rel="nofollow" href="http://api.drupal.org/api/function/hook_form_system_theme_settings_alter/7">THEMENAME_form_system_theme_settings_alter(&amp;$form, $form_state)</a> function. This gives the same power to themes that modules have if they use hook_form_system_theme_settings_alter(). See the “Forms API Quickstart Guide” and “Forms API Reference” on <a title="http://api.drupal.org/api/7" rel="nofollow" href="http://api.drupal.org/api/7">http://api.drupal.org/api/7</a>, as well as the<a rel="nofollow" href="http://api.drupal.org/api/function/hook_form_FORM_ID_alter/7">hook_form_FORM_ID_alter() docs</a> to learn the full flexibility of Forms API. Note that themes can no longer use the phptemplate_ prefix to the function; you’ll need to use the actual name of your theme as the prefix.</p>
<p>Here’s an example if you had a “foo” theme and wanted to add a textfield whose default value was “blue bikeshed”:</p>
<div><code>&lt;?php<br />
function foo_form_system_theme_settings_alter(&amp;$form, $form_state) {<br />
$form['foo_example'] = array(<br />
'#type'          =&gt; 'textfield',<br />
'#title'         =&gt; t('Widget'),<br />
'#default_value' =&gt; theme_get_setting('foo_example'),<br />
'#description'   =&gt; t("Place this text in the widget spot on your site."),<br />
);<br />
}<br />
?&gt;</code></div>
<p>In order to set the default value for any form element you add, you’ll need to add a simple line to your .info file: <code>settings[SETTING_NAME] = DEFAULT_VALUE</code>. For our foo theme, you’d need to edit the foo.info file and this line:</p>
<div><code>settings[foo_example] = blue bikeshed</code></div>
<p>In any of your theme’s php files, you can retrieve the value the user set by calling:</p>
<div><code>&lt;?php<br />
$foo_example = theme_get_setting('foo_example');<br />
?&gt;</code></div>
<h3 id="theme-form-required-marker">theme_form_required_marker()</h3>
<p><a rel="nofollow" href="http://drupal.org/node/582584">(issue)</a> The markup for generating the marker on required form elements is now handled by a separate function, <code>theme_form_required_marker()</code> instead of just being included as part of the work performed by <code>theme_form_element()</code>. This allows you to reuse this markup in other places or to modify the markup without changing all of <code>theme_form_element()</code></p>
<h3 id="theme-link">theme_link()</h3>
<p>(<a rel="nofollow" href="http://drupal.org/node/318636">issue</a>) The markup for generating a link is now handled by a theme function, <a rel="nofollow" href="http://api.drupal.org/api/function/theme_link/7">theme_link()</a>, instead of being hard-coded into the <code>l()</code> function. This allows you to implement a preprocess function or an override function in order to customize the markup of any link. Doing so may slow down Drupal pages that have many links, so it is recommended to evaluate the benefit vs. the performance trade-off, but the capability exists for sites and themes that need it. This theme function is for customizing the markup of links, generically. Other theme functions exist for customizing links based on context. For example, to customize menu links, override <code>theme_menu_link()</code> instead.</p>
<p>Example of hook_preprocess_link():</p>
<div><code>&lt;?php<br />
function mytheme_preprocess_link(&amp;$variables) {<br />
// In order to style links differently depending on what they are linking to,<br />
// add classes that contain information about the link path.<br />
if (strpos($variables['path'], ':') !== FALSE) {<br />
// For external links, add a class indicating an external link and a class<br />
// indicating the scheme (e.g., for 'mailto:...' links, add a 'link-mailto'<br />
// class).<br />
$variables['options']['attributes']['class'][] = 'link-external';<br />
$variables['options']['attributes']['class'][] = 'link-' . parse_url($variables['path'], PHP_URL_SCHEME);<br />
}<br />
else {<br />
// For internal paths, add a class indicating an internal link.<br />
$variables['options']['attributes']['class'][] = 'link-internal';<br />
if (empty($variables['path']) || $variables['path'] == '&lt;front&gt;') {<br />
// Add a class indicating a link to the front page.<br />
$variables['options']['attributes']['class'][] = 'link-front';<br />
}<br />
else {<br />
// For internal links not to the front page, add a class for each part<br />
// of the path. For example, for a link to 'admin/structure/block', add<br />
// the classes 'link-path-admin', 'link-path-admin-structure', and<br />
// 'link-path-admin-structure-block'.<br />
$class = 'link-path';<br />
foreach (explode('/', $variables['path']) as $path_part) {<br />
$class .= '-' . $path_part;<br />
$variables['options']['attributes']['class'][] = $class;<br />
}<br />
}<br />
}<br />
}<br />
?&gt;</code></div>
<p>Example of overriding theme_link():</p>
<div><code>&lt;?php<br />
function mytheme_link($variables) {<br />
// Place a span within and outside the anchor tag in order to implement some<br />
// special styling.<br />
return '&lt;span&gt;&lt;a href="' . check_plain(url($path, $options)) . '"' . drupal_attributes($options['attributes']) . '&gt;&lt;span&gt;' . ($options['html'] ? $text : check_plain($text)) . '&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;';<br />
}<br />
?&gt;</code></div>
<h3 id="skip-link">Skip to main content links in core themes</h3>
<p><a rel="nofollow" href="http://drupal.org/node/386462">(Issue)</a><br />
To meet Web Content Accessibility Guidelines (WCAG) 2.0 guideline <a rel="nofollow" href="http://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-skip.html">2.4.1 Bypass Blocks</a>, web pages need to have a link to help keyboard only users and screen readers more easily access the main content of a website.</p>
<p>Garland&#8217;s implementation is hidden visually, but keep them available for screen-readers. Furthermore, if a keyboard only user tabs through a site the link will become visible as it gains focus.</p>
<p>To hide the skip navigation you can use one the <a rel="nofollow" href="http://drupal.org/update/theme/6/7#element-hidden">new classes available to hide content in an accessible manner</a>.</p>
<h3 id="theme_alter">Alter hooks available to themes</h3>
<p>(<a rel="nofollow" href="http://drupal.org/node/591794">Issue</a>) Hooks that are used to alter content before being displayed on the page are now available to themes. Some important ones to note are:</p>
<ul>
<li><a rel="nofollow" href="http://api.drupal.org/api/function/hook_page_alter/7">hook_page_alter</a></li>
<li><a rel="nofollow" href="http://api.drupal.org/api/function/hook_form_alter/7">hook_form_alter</a></li>
<li><a rel="nofollow" href="http://api.drupal.org/api/function/hook_js_alter/7">hook_js_alter</a></li>
<li><a rel="nofollow" href="http://api.drupal.org/api/function/hook_css_alter/7">hook_css_alter</a></li>
</ul>
<p>Note that although technically all of the alter hooks are exposed to the theme, only a given number of them will actually work due to the way the Drupal bootstrap works. If you need to use <a rel="nofollow" href="http://api.drupal.org/api/function/hook_menu_alter/7">hook_menu_alter</a>, for example, you&#8217;ll have to use a module. These hooks can be exposed in template.php.</p>
<p>Drupal 7.x:</p>
<div><code>&lt;?php<br />
/**<br />
* Implement hook_page_alter().<br />
*/<br />
function mytheme_page_alter(&amp;$page) {<br />
// Remove elements from the page.<br />
}</p>
<p>/**<br />
* Implement hook_css_alter().<br />
*/<br />
function mytheme_css_alter(&amp;$css) {<br />
// Replace some CSS files with this theme's special CSS.<br />
}<br />
?&gt;</code></div>
<h3 id="system-stylesheets">System module stylesheets have been reorganized to separate behavior-supporting styles from presentational styles.</h3>
<p>(<a rel="nofollow" href="http://drupal.org/node/592018">Issue</a>) Summary of changes:</p>
<ul>
<li>Styles from <strong>default.css</strong> were merged into <strong>system.css</strong> and <strong>default.css</strong> was removed.</li>
<li><strong>system-behavior.css</strong> was added to house behavior-supporting styles, ie. styles for autocomplete, drag and drop, collapsible fieldsets, progress bars, etc.</li>
</ul>
<h3 id="shortcuts">New theme setting for displaying the Shortcut module &#8220;add to shortcuts&#8221; link</h3>
<p>Issue: <a title="Status: needs review" href="http://drupal.org/node/674394">#674394: The add/remove shortcut buttons look bad and don&#8217;t appear in most themes besides Seven</a></p>
<p>In Drupal 7, you will notice that when the Shortcut module is enabled, the core Seven administration theme displays a &#8220;plus&#8221; or &#8220;minus&#8221; sign next to the title of each page (for sufficiently privileged users), which allows that page to be added or removed from the user&#8217;s set of shortcuts via a one-click link.</p>
<p>The appearance of this link is controlled by a theme setting. If you want it to display in your theme when the Shortcut module is enabled, add the following line of code to your theme&#8217;s .info file:</p>
<div><code>settings[shortcut_module_link] = 1</code></div>
<h3 id="template_files_double_hyphen">Specific template overrides of generic templates use a &#8216;&#8211;&#8217; delimiter instead of &#8216;-&#8217;</h3>
<p>Issue <a title="Status: closed (fixed)" href="http://drupal.org/node/678714">#678714: Unify use of theme hook / template suggestions, fix clobbering problems, and improve suggestion discovery performance</a></p>
<p>In Drupal 6, some template files could be overridden in a targeted way. For example, the theme could contain a &#8220;node-article.tpl.php&#8221; file which would be used for nodes of the article type only. In Drupal 7, these need to be renamed to use a double-hyphen. For example, &#8220;node&#8211;article.tpl.php&#8221;. A single hyphen is still used to separate words: for example, &#8220;user-picture.tpl.php&#8221; or &#8220;node&#8211;long-content-type-name.tpl.php&#8221;, so the double hyphen always indicates a more targeted override of what comes before the &#8220;&#8211;&#8221;.</p>
<p>Please also see <a title="http://drupal.org/update/modules/6/7#theme_hook_suggestions_2" rel="nofollow" href="http://drupal.org/update/modules/6/7#theme_hook_suggestions_2">http://drupal.org/update/modules/6/7#theme_hook_suggestions_2</a> for how this affects preprocess functions if your theme implements those.</p>
<h3 id="css-ie-31-tag-limit-workaround">CSS files are sometimes loaded with @import, sometimes with LINK tags</h3>
<p>(<a rel="nofollow" href="http://drupal.org/node/228818">Issue</a>) Prior to Drupal 6, CSS files were added to the page using @import statements inside of STYLE tags. Drupal 6 <a rel="nofollow" href="http://drupal.org/node/145218">switched to using LINK tags</a>. With Drupal 7, LINK tags are used when the performance setting to &#8220;Aggregate and compress CSS files into one file&#8221; is enabled, but @import statements are sometimes used when that setting is disabled. This was needed to work around an Internet Explorer limitation of only being able to load the first 31 tags that add CSS files. See the API documentation for <a rel="nofollow" href="http://api.drupal.org/api/function/drupal_pre_render_styles/7">drupal_pre_render_styles()</a> for more details explaining when LINK tags are used and when @import statements are used.</p>
<h3 id="browser-targeted-css">Browser-targeted CSS files can and should be added using drupal_add_css()</h3>
<p>(<a rel="nofollow" href="http://drupal.org/node/228818">Issue</a>) Drupal 7 adds the ability to specify a &#8216;browsers&#8217; key when calling drupal_add_css().</p>
<p>Drupal 6:<br />
Garland&#8217;s page.tpl.php:</p>
<div><code>&lt;?php<br />
...<br />
&lt;?php print $styles ? &gt;<br />
&lt;!--[if lt IE 7]&gt;<br />
&lt;?php print phptemplate_get_ie_styles(); ? &gt;<br />
&lt;![endif]--&gt;<br />
...<br />
?&gt;</code></div>
<p>Garland&#8217;s template.php:</p>
<div><code>&lt;?php<br />
...<br />
function phptemplate_get_ie_styles() {<br />
global $language;</p>
<p>$iecss = '&lt;link type="text/css" rel="stylesheet" media="all" href="'. base_path() . path_to_theme() .'/fix-ie.css" /&gt;';<br />
if ($language-&gt;direction == LANGUAGE_RTL) {<br />
$iecss .= '&lt;style type="text/css" media="all"&gt;@import "'. base_path() . path_to_theme() .'/fix-ie-rtl.css";&lt;/style&gt;';<br />
}</p>
<p>return $iecss;<br />
}<br />
...<br />
?&gt;</code></div>
<p>Drupal 7:<br />
Garland&#8217;s template.php:</p>
<div><code>&lt;?php<br />
...<br />
function garland_preprocess_html(&amp;$vars) {<br />
...<br />
drupal_add_css(path_to_theme() . '/fix-ie.css', array('group' =&gt; CSS_THEME, 'browsers' =&gt; array('IE' =&gt; 'lt IE 7', '!IE' =&gt; FALSE), 'preprocess' =&gt; FALSE));<br />
}<br />
...<br />
?&gt;</code></div>
<p>See the API documentation for <a rel="nofollow" href="http://api.drupal.org/api/function/drupal_pre_render_conditional_comments/7">drupal_pre_render_conditional_comments()</a> for details on the &#8216;IE&#8217; and &#8216;!IE&#8217; keys.</p>
<p>It is recommended for themes to always use drupal_add_css() for adding a CSS file, so that Drupal code knows the exact total number of CSS files being added, information that might be needed for working around Internet Explorer&#8217;s limitation of only being able to load the first 31 LINK/STYLE tags. <em>[docs updated]</em></p>
<h3 id="theme-suggestions-for-menus">Targeted overrides (suggestions) available for theme_menu_link() and theme_menu_tree()</h3>
<p><a rel="nofollow" href="http://drupal.org/node/634472">(issue)</a> In addition to <a rel="nofollow" href="http://drupal.org/update/themes/6/7#menu_tree">other changes to menu rendering</a>, a Drupal 7 theme can implement a <code>THEMENAME_menu_tree__MENU_NAME()</code> and/or <code>THEMENAME_menu_link__MENU_NAME()</code> function to override <a rel="nofollow" href="http://api.drupal.org/api/function/theme_menu_tree/7">theme_menu_tree()</a>/<a rel="nofollow" href="http://api.drupal.org/api/function/theme_menu_link/7">theme_menu_link()</a> for a specific menu. For example, <code>THEMENAME_menu_link__management()</code> would override theme_menu_link() for links within the &#8220;Management&#8221; menu. This is similar to <a rel="nofollow" href="http://drupal.org/update/theme/6/7#template_files_double_hyphen">how &#8220;node&#8211;article.tpl.php&#8221; overrides &#8220;node.tpl.php&#8221;</a>.</p>
<h3 id="theme-submenu">theme_submenu() was removed</h3>
<p><a rel="nofollow" href="http://drupal.org/node/721556">(issue)</a> Drupal core does not provide theme_submenu() anymore.</p>
<h3 id="title-prefix-suffix">New $title_prefix and $title_suffix template variables</h3>
<p><a rel="nofollow" href="http://drupal.org/node/646874">(issue)</a> Templates in Drupal 7 have two new standard variables, $title_prefix and $title_suffix, which are renderable arrays that contain output intended to be displayed before or after (respectively) the main title tag that appears in the template.</p>
<p>All standard templates that potentially have a title (e.g., nodes, blocks, comments, the main page.tpl.php file, etc.) should render these variables. It is important that the variables be rendered even if the title itself is not being displayed, since the variables might contain important data added by modules (for example, contextual links) associated with the template as a whole.</p>
<p>Example (from page.tpl.php):</p>
<div><code>&lt;?php print render($title_prefix); ?&gt;<br />
&lt;?php if ($title): ?&gt;&lt;h1 id="page-title"&gt;&lt;?php print $title; ?&gt;&lt;/h1&gt;&lt;?php endif; ?&gt;<br />
&lt;?php print render($title_suffix); ?&gt;</code></div>
<h3 id="theme-node-form">theme_node_form() was removed</h3>
<p><a rel="nofollow" href="http://drupal.org/node/596582">(issue)</a> Drupal core does not provide theme_node_form() anymore. Node forms now have a CSS classes of .node-form and .node-TYPE-form for facilicate simple node type specific styling of the node form.</p>
<h3 id="node-get-types">node_get_types() renamed to node_type_get_types()</h3>
<p>In template.php, replace:</p>
<div><code>foreach (node_get_types() as $type =&gt; $name) {<br />
unset($settings['toggle_node_info_' . $type]);<br />
}</code></div>
<p>with:</p>
<div><code>foreach(node_type_get_types() as $type =&gt; $name) {<br />
unset($settings['toggle_node_info_'. $type]);<br />
}</code></div>
<h3 id="package-core">Core themes now contain &#8220;package = Core&#8221; in their .info files</h3>
<p><a rel="nofollow" href="http://drupal.org/node/334238">(issue)</a> Each core theme now contains the line: <code>package = Core</code> in their<br />
.info files. This is a <strong>core only</strong> property that was added to<br />
to help the Update Manager module identify core modules and themes. It should<br />
not be used in custom or contributed themes.</p>
<h3 id="search-result-headings">search-result.tpl.php now uses proper H3 headings for search result titles</h3>
<p><a rel="nofollow" href="http://drupal.org/node/810176">(issue)</a> H3 heading elements are now used to wrap each search result title to allow for heading based navigation for keyboard only users (accessibility improvement). This required a change from a DL list to an OL list with changes in two templates &#8211; search-results.tpl.php and seach-result.tpl.php.</p>
<p><a rel="nofollow" href="http://drupal.org/node/839524">(second issue)</a> Rendering was pushed to the last possible moment in search results theming, resulting in more changes to these templates and the pre-processing functions. One note: the $type variable is now $module (this variable is not used in the default search result markup).</p>
<p><strong>Drupal 6 markup for search-results.tpl.php:</strong></p>
<div><code>&lt;dlborder-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;?php print $type; ?&gt;-results"&gt;<br />
&lt;?php print $search_results; ?&gt;<br />
&lt;/dl&gt;<br />
&lt;?php print $pager; ?&gt;</code></div>
<p><strong>Drupal 7 markup for search-results.tpl.php:</strong></p>
<div><code>&lt;?php if ($search_results) : ?&gt;<br />
&lt;h2&gt;&lt;?php print t('Search results');?&gt;&lt;/h2&gt;<br />
&lt;olborder-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;?php print $module; ?&gt;-results"&gt;<br />
&lt;?php print $search_results; ?&gt;<br />
&lt;/ol&gt;<br />
&lt;?php print $pager; ?&gt;<br />
&lt;?php else : ?&gt;<br />
&lt;h2&gt;&lt;?php print t('Your search yielded no results');?&gt;&lt;/h2&gt;<br />
&lt;?php print search_help('search#noresults', drupal_help_arg()); ?&gt;<br />
&lt;?php endif; ?&gt;</code></div>
<p><strong>Drupal 6 markup for search-result.tpl.php:</strong></p>
<div><code>&lt;dt&gt;<br />
&lt;a href="&lt;?php print $url; ?&gt;"&gt;&lt;?php print $title; ?&gt;&lt;/a&gt;<br />
&lt;/dt&gt;<br />
&lt;dd&gt;<br />
&lt;?php if ($snippet) : ?&gt;<br />
&lt;p&gt;&lt;?php print $snippet; ?&gt;&lt;/p&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php if ($info) : ?&gt;<br />
&lt;p&gt;&lt;?php print $info; ?&gt;&lt;/p&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;/dd&gt;</code></div>
<p><strong>Drupal 7 markup for search-result.tpl.php:</strong></p>
<div><code>&lt;liborder-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;?php print $classes; ?&gt;"&lt;?php print $attributes; ?&gt;&gt;<br />
&lt;?php print render($title_prefix); ?&gt;<br />
&lt;h3&lt;?php print $title_attributes; ?&gt;&gt;<br />
&lt;a href="&lt;?php print $url; ?&gt;"&gt;&lt;?php print $title; ?&gt;&lt;/a&gt;<br />
&lt;/h3&gt;<br />
&lt;?php print render($title_suffix); ?&gt;<br />
&lt;div&gt;<br />
&lt;?php if ($snippet) : ?&gt;<br />
&lt;p&lt;?php print $content_attributes; ?&gt;&gt;&lt;?php print $snippet; ?&gt;&lt;/p&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php if ($info) : ?&gt;<br />
&lt;p&gt;&lt;?php print $info; ?&gt;&lt;/p&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;/div&gt;<br />
&lt;/li&gt;</code></div>
<p>The corresponding pre-processing functions for search results have also changed.</p>
<h3 id="xhtml11-compatibility">The name attribute in a and map elements is invalid</h3>
<p>(<a rel="nofollow" href="http://drupal.org/node/338429">issue</a>) Due to Drupal 7&#8242;s XHTML+RDFa 1.0 doctype (which inherits the HTML 1.1 doctype), the HTML output should be <a rel="nofollow" href="http://www.w3.org/TR/xhtml11/changes.html">compatible with XHTML 1.1</a>, in particular there should be no <code>name</code>attribute in the <code>a</code> and <code>map</code> HTML elements.</p>
<p><strong>6.x</strong></p>
<div><code>&lt;a id="new" name="new"&gt;</code></div>
<p><strong>7.x</strong></p>
<div><code>&lt;a id="new"&gt;</code></div>
<h3 id="engine">PHPTemplate is now the default theme engine</h3>
<p>In Drupal 6, specifying the theme engine in .info files was required:<br />
<code>engine = phptemplate</code></p>
<p>In Drupal 7, this line is no longer necessary because it is assumed by default. You may safely remove it from your .info file.</p>
<p>Themes using the Smarty engine are not affected, and PHP only themes may still be used by specifying &#8220;theme&#8221; as the engine:<br />
<code>engine = theme</code></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/converting-6-x-themes-to-7-x/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/converting-6-x-themes-to-7-x/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/converting-6-x-themes-to-7-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Make a Drupal Theme</title>
		<link>http://blogs.telecommand.com/how-to-make-a-drupal-theme/</link>
		<comments>http://blogs.telecommand.com/how-to-make-a-drupal-theme/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 05:24:19 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[Drupal]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=74</guid>
		<description><![CDATA[Making a custom Drupal theme is actually quite easy. A Drupal theme is just a few PHP files, a CSS file, and an info file. I prefer the PHPtemplate theme engine (the default one) but you have several choices. See the bottom of this post for a link to the official Drupal Theme Developer’s Guide [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Making a custom <a href="http://tips.webdesign10.com/drupal-tutorials">Drupal</a> theme is  actually quite easy.  A Drupal theme is just a few PHP files, a  CSS  file, and an info file.  I prefer the PHPtemplate theme engine (the   default one) but you have several choices.  See the bottom of this post   for a link to the official Drupal Theme Developer’s Guide which has   information on other Drupal template engines.</p>
<p>The following information was originally written for Drupal 4.7, but  has been updated for Drupal 6 on March 4, 2009.</p>
<p>Navigate to your <tt>/themes</tt> directory.  You should have a theme  there called <tt>/bluemarine</tt>.  We will use that as an example.</p>
<p>NOTE: before you edit any files you will copy the theme to another   directory and rename it.  Your custom themes go in the directory <tt>/sites/all/themes/</tt>.   Details about that come later in this tutorial.</p>
<p>Here is a list of the files in the Drupal 6′s Bluemarine theme:</p>
<h2>The Files of a Drupal Theme</h2>
<ul>
<li><tt>bluemarine.info</tt> — A required file that is new to Drupal 6  which provides information about the theme.</li>
<li><tt>page.tpl.php</tt> — The main template that defines the content  on most of the page.</li>
<li><tt>style.css</tt> — The CSS file that sets the CSS rules for the  template.</li>
<li><tt>node.tpl.php</tt> — This file defines the content of the nodes.</li>
<li><tt>block.tpl.php</tt> — Defines the content of the blocks.</li>
<li><tt>comment.tpl.php</tt> — Defines the content of the comments.</li>
<li><tt>logo.png</tt> — Your logo, if you are using one.</li>
<li><tt>screenshot.png</tt> — This is a screenshot of your theme that is   used in the admin panel and in the user account settings if you have   enabled more than one theme so that visitors can choose which theme they   want to use.</li>
<li><tt>box.tpl.php</tt> — puts a box around things like comments.  See  also <a href="http://drupal.org/node/11814">http://drupal.org/node/11814</a>.</li>
<li><tt>style-rtl.css</tt> — this file is new to Drupal 6′s  Bluemarine.  I think it’s a CSS for right to left languages and can be  ignored if  you’re using a left-to-right language like English.</li>
</ul>
<h3>page.tpl.php and style.css</h3>
<p>The <tt>page.tpl.php</tt> and <tt>style.css</tt> files are the main  files for your Drupal theme.  The <tt>page.tpl.php</tt> is a mix of HTML  and PHP.  Look at the file and notice which snippets  of PHP are used  where.  For example, the following snippet from the <tt>page.tpl.php</tt> file inserts the site’s &lt;head&gt; information.  Just copy that  snippet into your own custom Drupal template.</p>
<pre>&lt;<strong>head</strong>&gt;
  &lt;<strong>title</strong>&gt;&lt;?php print <strong>$</strong>head_title ?&gt;&lt;/<strong>title</strong>&gt;
  &lt;?php print <strong>$</strong>head ?&gt;
  &lt;?php print <strong>$</strong>styles ?&gt;
  &lt;?php print <strong>$</strong>scripts ?&gt;
  &lt;<strong>script</strong> <strong>type</strong>="text/javascript"&gt;&lt;?php /* Needed to avoid Flash of Unstyle Content in IE */ ?&gt; &lt;/<strong>script</strong>&gt;
&lt;/<strong>head</strong>&gt;
</pre>
<p>The following code from the Bluemarine <tt>page.tpl.php</tt> file use  PHP <em>if</em> statements to print out optional information such as  primary links,  secondary links, and site slogan.  You control whether  those display in  the Drupal control panel.  The Bluemarine template  uses tables, but you  can easily remove the tables and make it a 100%  CSS-based template.</p>
<pre>&lt;<strong>table</strong> <strong>border</strong>="0" <strong>cellpadding</strong>="0" <strong>cellspacing</strong>="0" <strong>id</strong>="header"&gt;
  &lt;<strong>tr</strong>&gt;
    &lt;<strong>td</strong> <strong>id</strong>="logo"&gt;
      &lt;?php <strong>if</strong> (<strong>$</strong>logo) { ?&gt;&lt;<strong>a</strong> <strong>href</strong>="&lt;?php print <strong>$</strong>base_path ?&gt;" <strong>title</strong>="&lt;?php print t('Home') ?&gt;"&gt;
&lt;<strong>img</strong> <strong>src</strong>="&lt;?php print <strong>$</strong>logo ?&gt;" <strong>alt</strong>="&lt;?php print t('Home') ?&gt;" /&gt;&lt;/<strong>a</strong>&gt;&lt;?php } ?&gt;
      &lt;?php <strong>if</strong> (<strong>$</strong>site_name) { ?&gt;
&lt;<strong>h1</strong> <strong>class</strong>='site-name'&gt;&lt;<strong>a</strong> <strong>href</strong>="&lt;?php print <strong>$</strong>base_path ?&gt;"
<strong>title</strong>="&lt;?php print t('Home') ?&gt;"&gt;&lt;?php print <strong>$</strong>site_name ?&gt;&lt;/<strong>a</strong>&gt;&lt;/<strong>h1</strong>&gt;&lt;?php } ?&gt;
      &lt;?php <strong>if</strong> (<strong>$</strong>site_slogan) { ?&gt;&lt;<strong>div</strong> <strong>class</strong>='site-slogan'&gt;&lt;?php print <strong>$</strong>site_slogan ?&gt;&lt;/<strong>div</strong>&gt;&lt;?php } ?&gt;
    &lt;/<strong>td</strong>&gt;
    &lt;<strong>td</strong> <strong>id</strong>="menu"&gt;
      &lt;?php <strong>if</strong> (isset(<strong>$</strong>secondary_links)) { ?&gt;
&lt;<strong>div</strong> <strong>id</strong>="secondary"&gt;&lt;?php print theme('links', <strong>$</strong>secondary_links) ?&gt;&lt;/<strong>div</strong>&gt;&lt;?php } ?&gt;
      &lt;?php <strong>if</strong> (isset(<strong>$</strong>primary_links)) { ?&gt;
&lt;<strong>div</strong> <strong>id</strong>="primary"&gt;&lt;?php print theme('links', <strong>$</strong>primary_links) ?&gt;&lt;/<strong>div</strong>&gt;&lt;?php } ?&gt;
      &lt;?php print <strong>$</strong>search_box ?&gt;
    &lt;/<strong>td</strong>&gt;
  &lt;/<strong>tr</strong>&gt;
  &lt;<strong>tr</strong>&gt;
    &lt;<strong>td</strong> <strong>colspan</strong>="2"&gt;&lt;<strong>div</strong>&gt;&lt;?php print <strong>$</strong>header ?&gt;&lt;/<strong>div</strong>&gt;&lt;/<strong>td</strong>&gt;
  &lt;/<strong>tr</strong>&gt;
&lt;/<strong>table</strong>&gt;
</pre>
<h3>The Drupal styles.css File</h3>
<p>The <tt>style.css</tt> file is straightforward.  I recommend the <a href="http://tips.webdesign10.com/web-developer-toolbar.htm">Firefox Web  Developer Toolbar</a> for creating the style.css file.  Use the  toolbars option <em>Display ID &amp; Class Details</em> in the  Information menu to view the CSS classes and ID’s that Drupal is   generating.  Then add your own CSS rules to the style.css file.</p>
<h3>Other Drupal Theme Files</h3>
<p>Other files in the Drupal theme are <tt>block.tpl.php</tt>, <tt>box.tpl.php</tt>,  <tt>comment.tpl.php</tt>, and <tt>node.tpl.php</tt>.  Each one controls  the layout of certain parts of the template.  The <tt>comment.tpl.php</tt> defines the comment layout as shown below.  It is fairly   straightforward PHP: “If there is a user picture, print the user   picture, etc.</p>
<pre>  &lt;<strong>div</strong> <strong>class</strong>="comment&lt;?php <strong>if</strong> (<strong>$</strong>comment<strong>-&gt;</strong>status <strong>==</strong> COMMENT_NOT_PUBLISHED) print ' comment-unpublished'; ?&gt;"&gt;
    &lt;?php <strong>if</strong> (<strong>$</strong>picture) {
    print <strong>$</strong>picture;
  } ?&gt;
&lt;<strong>h3</strong> <strong>class</strong>="title"&gt;&lt;?php print <strong>$</strong>title; ?&gt;&lt;/<strong>h3</strong>&gt;
&lt;?php <strong>if</strong> (<strong>$</strong>new <strong>!=</strong> '') { ?&gt;&lt;<strong>span</strong> <strong>class</strong>="new"&gt;&lt;?php print <strong>$</strong>new; ?&gt;&lt;/<strong>span</strong>&gt;&lt;?php } ?&gt;
    &lt;<strong>div</strong> <strong>class</strong>="submitted"&gt;&lt;?php print <strong>$</strong>submitted; ?&gt;&lt;/<strong>div</strong>&gt;
    &lt;<strong>div</strong> <strong>class</strong>="content"&gt;&lt;?php print <strong>$</strong>content; ?&gt;&lt;/<strong>div</strong>&gt;
    &lt;<strong>div</strong> <strong>class</strong>="links"&gt;&amp;raquo; &lt;?php print <strong>$</strong>links; ?&gt;&lt;/<strong>div</strong>&gt;
  &lt;/<strong>div</strong>&gt;
</pre>
<h2>Your First Custom Drupal Theme</h2>
<p>Just make a copy of the default Bluemarine template and put it in  your Drupal <tt>/sites/all/themes/</tt> directory.  That directory  doesn’t exist by default, so you should create it if you haven’t  already.  See the README file in <tt>/sites/all/</tt> for more  information.  Rename the copy of Bluemarine to the name of your new  theme.  Enable the new theme.</p>
<p><strong>NOTE:</strong> In Drupal 6 there are also <a href="http://drupal.org/node/171205">theme <em>info</em> files</a>.  To  change the name of the theme you’ll also need to change the name in the <tt>bluemarine.info</tt> file:</p>
<blockquote><p>; $Id: bluemarine.info,v 1.4 2007/06/08 05:50:57 dries  Exp $<br />
name = Bluemarine<br />
description = Table-based multi-column theme with a marine and ash color  scheme.<br />
version = VERSION<br />
core = 6.x<br />
engine = phptemplate</p></blockquote>
<p>Then strip most of the HTML out of the <tt>page.tpl.php</tt> file and   replace it with the HTML that you would like for your theme.  Leave  the  PHP, modifying it as desired.  If you are using <a href="http://tips.webdesign10.com/using-linux-for-web-design-and-development-ubuntu">Linux  for Web development</a>,  you can use Quanta Plus as an editor to edit  your template files  directly on the server.  Each time you save the  file in Quanta Plus, the  remote copy of the file will be updated.</p>
<p>Use the <a href="http://tips.webdesign10.com/web-developer-toolbar.htm">Firefox Web  Developer Toolbar’s</a> <em>Display ID &amp; Class Details</em> feature  to view CSS information on your new template that you are viewing the  the browser.  Either start a new <tt>style.css</tt> file from scratch,  or modify the existing one to get the template the  way you would like.   To edit the display of blocks, nodes, and comments,  edit the <tt>block.tpl.php</tt>,  <tt>node.tpl.php</tt>, and <tt>comment.tpl.php</tt> files respectively.</p>
<p>When you are finished with your template, take a screenshot and   resize it to about 150×90 pixels.  Upload it to your theme directory as <tt>screenshot.png</tt>.</p>
<h2>Drupal Template Variables</h2>
<p>The PHP snippets in the examples above are just printing PHPtemplate   variables.  A complete list of available PHPtemplate variables that you   can use in your template can be found on Drupal.org’s <a href="http://drupal.org/node/11812">PHPtemplate variables</a> page.   Below are the available variables from 24 July 2007:</p>
<dl>
<dt>$breadcrumb</dt>
<dd>HTML for displaying the breadcrumbs at the top of the page.</dd>
<dt>$closure</dt>
<dd>Needs to be displayed at the bottom of the page, for any dynamic   javascript that needs to be called once the page has already been   displayed. </dd>
<dt>$content</dt>
<dd>The HTML content generated by Drupal to be displayed.</dd>
<dt>$directory</dt>
<dd>The directory the theme is located in , e.g.</dd>
<dd>themes/box_grey or themes/box_grey/box_cleanslate.</dd>
<dt>$footer_message</dt>
<dd>The footer message as defined in the admin settings.</dd>
<dt>$head</dt>
<dd>HTML as generated by drupal_get_html_head().</dd>
<dt>$head_title</dt>
<dd>The text to be displayed in the page title.</dd>
<dt>$help</dt>
<dd>Dynamic help text, mostly for admin pages.</dd>
<dt>$is_front</dt>
<dd>True if the front page is currently being displayed. Used to toggle  the mission.</dd>
<dt>$language</dt>
<dd>The language the site is being displayed in.</dd>
<dt>$layout</dt>
<dd>This setting allows you to style different types of layout (‘none’,   ‘left’, ‘right’ or ‘both’) differently, depending on how many sidebars   are enabled.</dd>
<dt>$logo</dt>
<dd>The path to the logo image, as defined in theme configuration.</dd>
<dt>$messages</dt>
<dd>HTML for status and error messages, to be displayed at the top of  the page.</dd>
<dt>$mission</dt>
<dd>The text of the site mission.</dd>
<dt>$node</dt>
<dd>(5.x and after only)If you are in page.tpl.php displaying a node in  full page view then $node is available to your template.</dd>
<dt>$onload_attribute</dt>
<dd>(4.7 and older only) Onload tags to be added to the head tag, to  allow for autoexecution of attached scripts.</dd>
<dt>$primary_links (array)</dt>
<dd>An array containing the links as they have been defined in the  phptemplate specific configuration block.</dd>
<dt>$scripts</dt>
<dd>(5.x and after only) HTML to load the JavaScript files and make the   JS settings available. Previously, javascript files are hardcoded into   the page.tpl.php</dd>
<dt>$search_box</dt>
<dd>True(1) if the search box has been enabled.</dd>
<dt>$search_button_text</dt>
<dd>(4.7 and older only)Translated text on the search button.</dd>
<dt>$search_description</dt>
<dd>(4.7 and older only)Translated description for the search button.</dd>
<dt>$search_url</dt>
<dd>(4.7 and older only)URL the search form is submitted to.</dd>
<dt>$secondary_links (array)</dt>
<dd>An array containing the links as they have been defined in the  phptemplate specific configuration block.</dd>
<dt>$sidebar_left</dt>
<dd>The HTML for the left sidebar.</dd>
<dt>$sidebar_right</dt>
<dd>The HTML for the right sidebar.</dd>
<dt>$site</dt>
<dd>The name of the site, always filled in.</dd>
<dt>$site_name</dt>
<dd>The site name of the site, to be used in the header, empty when  display has been disabled.</dd>
<dt>$site_slogan</dt>
<dd>The slogan of the site, empty when display has been disabled.</dd>
<dt>$styles</dt>
<dd>Required for stylesheet switching to work. This prints out the style  tags required.</dd>
<dt>$tabs</dt>
<dd>HTML for displaying tabs at the top of the page.</dd>
<dt>$title</dt>
<dd>Title, different from head_title, as this is just the node title  most of the time.</dd>
</dl>
<p>There are also other variables available for your Drupal theme.  A  good list can be found in Chapter 8 of the essential book <a href="http://www.apress.com/book/bookDisplay.html?bID=10258">Pro Drupal  Development</a>.  I believe that Chapter 8 is a free sample download.</p>
<p>Also check out these two books from Packt Publishing: <a rel="nofollow" href="http://www.packtpub.com/drupal-5-themes/book/mid/110308qjxtqy">Drupal  5 Theming</a> and <a rel="nofollow" href="http://www.packtpub.com/drupal-6-create-powerful-websites/book/mid/1103088kq">Building  powerful and robust websites with Drupal 6</a>.</p>
</div>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/how-to-make-a-drupal-theme/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/how-to-make-a-drupal-theme/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/how-to-make-a-drupal-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seam development with Eclipse and Tomcat Step-by-Step</title>
		<link>http://blogs.telecommand.com/seam-development-with-eclipse-and-tomcat-step-by-step/</link>
		<comments>http://blogs.telecommand.com/seam-development-with-eclipse-and-tomcat-step-by-step/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 04:55:19 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[Jboss Seam]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=61</guid>
		<description><![CDATA[RAD: Seam development with Eclipse and Tomcat Step-by-Step-Tutorial Screencast Posted by: techiexchange on: November 11, 2007 In: AJAX &#124; Application Frameworks &#124; Development Tools &#124; EJB 3.0 &#124; Eclipse &#124; Enterprise &#124; J2EE &#124; JSF &#124; Java EE &#124; Jboss &#124; RIA &#124; SEAM &#124; UI-User Interface &#124; Web Application Comment! Jboss Seam, one of the [...]]]></description>
			<content:encoded><![CDATA[<div>
<h4>RAD: Seam development with Eclipse and Tomcat Step-by-Step-Tutorial Screencast</h4>
<p>Posted by: techiexchange on: November 11, 2007</p>
</div>
<div>
<ul>
<li>In: <a title="View all posts in AJAX" rel="category tag" href="http://en.wordpress.com/tag/ajax/">AJAX</a> | <a title="View all posts in Application Frameworks" rel="category tag" href="http://en.wordpress.com/tag/application-frameworks/">Application Frameworks</a> | <a title="View all posts in Development Tools" rel="category tag" href="http://en.wordpress.com/tag/development-tools/">Development Tools</a> | <a title="View all posts in EJB 3.0" rel="category tag" href="http://en.wordpress.com/tag/ejb-30/">EJB 3.0</a> | <a title="View all posts in Eclipse" rel="category tag" href="http://en.wordpress.com/tag/eclipse/">Eclipse</a> | <a title="View all posts in Enterprise" rel="category tag" href="http://en.wordpress.com/tag/enterprise/">Enterprise</a> | <a title="View all posts in J2EE" rel="category tag" href="http://en.wordpress.com/tag/j2ee/">J2EE</a> | <a title="View all posts in JSF" rel="category tag" href="http://en.wordpress.com/tag/jsf/">JSF</a> | <a title="View all posts in Java EE" rel="category tag" href="http://en.wordpress.com/tag/java-ee/">Java EE</a> | <a title="View all posts in Jboss" rel="category tag" href="http://en.wordpress.com/tag/jboss/">Jboss</a> | <a title="View all posts in RIA" rel="category tag" href="http://en.wordpress.com/tag/ria/">RIA</a> | <a title="View all posts in SEAM" rel="category tag" href="http://en.wordpress.com/tag/seam/">SEAM</a> | <a title="View all posts in UI-User Interface" rel="category tag" href="http://en.wordpress.com/tag/ui-user-interface/">UI-User Interface</a> | <a title="View all posts in Web Application" rel="category tag" href="http://en.wordpress.com/tag/web-application/">Web Application</a></li>
<li><a title="Permanent Link to RAD: Seam development with Eclipse and Tomcat Step-by-Step-Tutorial Screencast" rel="bookmark" href="http://techieexchange.wordpress.com/2007/11/11/rad-seam-development-with-eclipse-and-tomcat-step-by-step-tutorial-screencast/#respond">Comment!</a></li>
</ul>
</div>
<p><a title="JBoss Seam homepage" href="http://labs.jboss.com/jbossseam/" target="_blank"><br />
<strong>Jboss Seam</strong></a>, one of the most innovative full-stack web application framework in Java EE era.</p>
<p>Letz dive in to the tutorial directly without explaining more about Seam.</p>
<p>In order to develop an enterprise application, one must have<br />
an application server installed locally, which is a big pain<br />
when considering system resource and performance. During the<br />
development period developer always perfer to have his<br />
code-hotdeploy time as short as possible, which rapidly<br />
increases his development and production. But this is not<br />
easily achieved when application servers are used during<br />
development. An alternative is to use web servers which are<br />
very light when compared to Application servers. Seam has a<br />
good support for Tomcat webserver.</p>
<blockquote><p>This tutorial focuses Seam development under  Tomcat webserver without support for EJB, that means Seam with POJO and  JPA+Hibernate as Persistence provider.</p>
<p>Main goal of this tutorial is to achieve <strong>RAD-Rapid Application Development with Seam, Tomcat and Eclipse</strong>.</p></blockquote>
<blockquote><p>Requirements for Seam development envirnoment:<br />
<a title="Download JBoss Seam 2.0.0 GA" href="http://sourceforge.net/project/showfiles.php?group_id=22866&amp;package_id=163777&amp;release_id=551158" target="_blank"><br />
Download latest Seam release</a><a title="Download Tomcat 5.5x" href="http://tomcat.apache.org/download-55.cgi" target="_blank"><br />
Download Tomcat 5.5</a> or <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat 6</a><a href="http://www.eclipse.org/downloads/" target="_blank"><br />
Download latest Eclipse</a><a title="Download Sysdeo plugin" href="http://www.eclipsetotale.com/tomcatPlugin.html" target="_blank"><br />
Download Eclipse-Tomcat-Sysdeo plugin<br />
</a></p></blockquote>
<p>This is a screencast (static) showing all the screenshots without explanation.</p>
<p>Here we go….</p>
<blockquote><p>Extract Seam 2 GA distribution on local hard disk (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/1-seam-unzipped.png" target="_blank">see Figure 1</a>)</p></blockquote>
<p><a title="Download JBoss Seam and extract" href="http://techieexchange.files.wordpress.com/2007/11/1-seam-unzipped.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/1-seam-unzipped.png?w=480" alt="Download JBoss Seam and extract" /><br />
</a></p>
<blockquote><p>JPA example from Seam 2 GA distribution (<a href="http://techieexchange.files.wordpress.com/2007/11/2-seam-jpa-example.png" target="_blank">see Figure 2</a>)</p></blockquote>
<p><a title="2-seam-jpa-example.png" href="http://techieexchange.files.wordpress.com/2007/11/2-seam-jpa-example.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/2-seam-jpa-example.png?w=480" alt="2-seam-jpa-example.png" /><br />
</a></p>
<blockquote><p>Build JPA example for Tomcat 5.5 by using ant (make sure that <a title="Ant Homepage" href="http://ant.apache.org/" target="_blank">ANT</a> already installed) command:<strong><em>ant tomcat55</em><br />
</strong></p>
<p>Building JPA WAR file (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/3-build-jpa-example-tomcat.png" target="_blank">see Figure 3</a>)</p></blockquote>
<p><a title="3-build-jpa-example-tomcat.png" href="http://techieexchange.files.wordpress.com/2007/11/3-build-jpa-example-tomcat.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/3-build-jpa-example-tomcat.png?w=480" alt="3-build-jpa-example-tomcat.png" /><br />
</a></p>
<blockquote><p>Once build successfull, then you can find the war file inside <strong>dist-tomcat55 </strong>folder (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/4-build-jar-jpa-example.png" target="_blank">see Figure 4</a>)</p></blockquote>
<p><a title="4-build-jar-jpa-example.png" href="http://techieexchange.files.wordpress.com/2007/11/4-build-jar-jpa-example.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/4-build-jar-jpa-example.png?w=480" alt="4-build-jar-jpa-example.png" /><br />
</a></p>
<blockquote><p>Now import WAR file to Eclipse to make an Eclipse project (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/5-eclipse-import-example.png" target="_blank">see Figure 5</a>)</p></blockquote>
<p><a title="5-eclipse-import-example.png" href="http://techieexchange.files.wordpress.com/2007/11/5-eclipse-import-example.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/5-eclipse-import-example.png?w=480" alt="5-eclipse-import-example.png" /><br />
</a></p>
<blockquote><p>In order to import WAR file select Web -&gt; WAR file from Eclipse import console (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/6-eclipse-import-war.png" target="_blank">see Figure 6</a>)</p></blockquote>
<p><a title="6-eclipse-import-war.png" href="http://techieexchange.files.wordpress.com/2007/11/6-eclipse-import-war.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/6-eclipse-import-war.png?w=480" alt="6-eclipse-import-war.png" /><br />
</a></p>
<blockquote><p>Choose absolute path of jboss-seam-jpa.war file and press next (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/9-eclipse-import-jpa-war.png" target="_blank">see Figure 7</a>)</p>
<p><a title="9-eclipse-import-jpa-war.png" href="http://techieexchange.files.wordpress.com/2007/11/9-eclipse-import-jpa-war.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/9-eclipse-import-jpa-war.png?w=480" alt="9-eclipse-import-jpa-war.png" /><br />
</a></p></blockquote>
<blockquote><p>Import all libs from WEB-INF/lib (don’t select any libs) (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/10-eclipse-import-war-default-lib.png" target="_blank">see Figure 8</a>)</p></blockquote>
<p><a title="10-eclipse-import-war-default-lib.png" href="http://techieexchange.files.wordpress.com/2007/11/10-eclipse-import-war-default-lib.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/10-eclipse-import-war-default-lib.png?w=480" alt="10-eclipse-import-war-default-lib.png" /><br />
</a></p>
<blockquote><p>Here’s new project created in Eclipse workspace (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/11-eclipse-project-hierarchy.png" target="_blank">see Figure 9</a>)</p></blockquote>
<p><a title="11-eclipse-project-hierarchy.png" href="http://techieexchange.files.wordpress.com/2007/11/11-eclipse-project-hierarchy.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/11-eclipse-project-hierarchy.png?w=480" alt="11-eclipse-project-hierarchy.png" /><br />
</a></p>
<blockquote><p>Create <strong>classes </strong>inside WEB-INF to build src files (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/12-eclipse-create-classes-folder.png" target="_blank">see Figure 10</a>)</p></blockquote>
<p><a title="12-eclipse-create-classes-folder.png" href="http://techieexchange.files.wordpress.com/2007/11/12-eclipse-create-classes-folder.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/12-eclipse-create-classes-folder.png?w=480" alt="12-eclipse-create-classes-folder.png" /><br />
</a></p>
<blockquote><p>Configure the build path so that src folder takes correct classes folder (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/13-project-class-folder.png" target="_blank">see Figure 11</a>)</p></blockquote>
<p><a title="13-project-class-folder.png" href="http://techieexchange.files.wordpress.com/2007/11/13-project-class-folder.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/13-project-class-folder.png?w=480" alt="13-project-class-folder.png" /><br />
</a></p>
<blockquote><p>Choose classes folder as default output folder (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/14-select-class-folder.png" target="_blank">see Figure 12</a>)</p></blockquote>
<p><a title="14-select-class-folder.png" href="http://techieexchange.files.wordpress.com/2007/11/14-select-class-folder.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/14-select-class-folder.png?w=480" alt="14-select-class-folder.png" /><br />
</a></p>
<blockquote><p>Copy src from Seam-JPA example (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/15-copy-src-from-example.png" target="_blank">see Figure 13</a>)</p></blockquote>
<p><a title="15-copy-src-from-example.png" href="http://techieexchange.files.wordpress.com/2007/11/15-copy-src-from-example.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/15-copy-src-from-example.png?w=480" alt="15-copy-src-from-example.png" /><br />
</a></p>
<blockquote><p>Paste into the src folder in Eclipse (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/16-paste-src-from-example.png" target="_blank">see Figure 14</a>)</p></blockquote>
<p><a title="16-paste-src-from-example.png" href="http://techieexchange.files.wordpress.com/2007/11/16-paste-src-from-example.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/16-paste-src-from-example.png?w=480" alt="16-paste-src-from-example.png" /><br />
</a></p>
<blockquote><p>Now src are shown in the hierarchy but with errors (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/17-project-jpa-src.png" target="_blank">see Figure 15</a>)</p></blockquote>
<p><a title="17-project-jpa-src.png" href="http://techieexchange.files.wordpress.com/2007/11/17-project-jpa-src.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/17-project-jpa-src.png?w=480" alt="17-project-jpa-src.png" /><br />
</a></p>
<blockquote><p>Delete ImportedClasses folder in root of Project workspace (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/19-import-testng-jar.png" target="_blank">see Figure 16</a>)</p></blockquote>
<p><a title="18-delete-importedclasses-folder.png" href="http://techieexchange.files.wordpress.com/2007/11/18-delete-importedclasses-folder.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/18-delete-importedclasses-folder.png?w=480" alt="18-delete-importedclasses-folder.png" /><br />
</a></p>
<blockquote><p>In order to remove src errors in the project import <a href="http://testng.org/doc/download.html" target="_blank">TestNG</a> lib to WEB-INF/lib (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/19-import-testng-jar.png" target="_blank">see Figure 17</a>)</p></blockquote>
<p><a title="19-import-testng-jar.png" href="http://techieexchange.files.wordpress.com/2007/11/19-import-testng-jar.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/19-import-testng-jar.png?w=480" alt="19-import-testng-jar.png" /><br />
</a></p>
<blockquote><p>Now Project src has been done without any errors (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/20-project-no-errors.png" target="_blank">see Figure 18</a>)</p></blockquote>
<p><a title="20-project-no-errors.png" href="http://techieexchange.files.wordpress.com/2007/11/20-project-no-errors.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/20-project-no-errors.png?w=480" alt="20-project-no-errors.png" /><br />
</a></p>
<blockquote><p>Configure Tomcat Sysdeo plugin to installed home directory of Tomcat (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/7-eclipse-sysdeo-tomcat-configuration.png" target="_blank">see Figure 19</a>)</p></blockquote>
<p><a title="7-eclipse-sysdeo-tomcat-configuration.png" href="http://techieexchange.files.wordpress.com/2007/11/7-eclipse-sysdeo-tomcat-configuration.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/7-eclipse-sysdeo-tomcat-configuration.png?w=480" alt="7-eclipse-sysdeo-tomcat-configuration.png" /><br />
</a></p>
<blockquote><p>See Eclipse toolbar for Sysdeo-Tomcat shortcuts – Start, Shutdown, Restart (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/8-eclipse-sysdeo-tomcat-installed.png" target="_blank">see Figure 20</a>)</p></blockquote>
<p><a title="8-eclipse-sysdeo-tomcat-installed.png" href="http://techieexchange.files.wordpress.com/2007/11/8-eclipse-sysdeo-tomcat-installed.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/8-eclipse-sysdeo-tomcat-installed.png?w=480" alt="8-eclipse-sysdeo-tomcat-installed.png" /><br />
</a></p>
<blockquote><p>Tell the created Project (jboss-seam-jpa) that it is a  web project to Sysdeo plugin (Project -&gt;rightclick-Properties-&gt;  Tomcat) (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/21-project-as-tomcat-web-project.png" target="_blank">see Figure 21</a>)</p></blockquote>
<p><a title="21-project-as-tomcat-web-project.png" href="http://techieexchange.files.wordpress.com/2007/11/21-project-as-tomcat-web-project.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/21-project-as-tomcat-web-project.png?w=480" alt="21-project-as-tomcat-web-project.png" /><br />
</a></p>
<blockquote><p>Now update/define about project’s context in Tomcat (server.xml will be updated) (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/22-update-context-tomcat.png" target="_blank">see Figure 22</a>)</p></blockquote>
<p><a title="22-update-context-tomcat.png" href="http://techieexchange.files.wordpress.com/2007/11/22-update-context-tomcat.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/22-update-context-tomcat.png?w=480" alt="22-update-context-tomcat.png" /><br />
</a></p>
<blockquote><p>Open context.xml (inside Webcontent/META-INF) and copy Resource tag (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/23-copy-context-defn.png" target="_blank">see Figure 23</a>)</p></blockquote>
<p><a title="23-copy-context-defn.png" href="http://techieexchange.files.wordpress.com/2007/11/23-copy-context-defn.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/23-copy-context-defn.png?w=480" alt="23-copy-context-defn.png" /><br />
</a></p>
<blockquote><p>Goto server.xml (Tomcat_Home/conf) and see whether project context is defined (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/1-seam-unzipped.png" target="_blank">see Figure 24</a>)</p></blockquote>
<p><a title="24-server-xml-context-before.png" href="http://techieexchange.files.wordpress.com/2007/11/24-server-xml-context-before.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/24-server-xml-context-before.png?w=480" alt="24-server-xml-context-before.png" /><br />
</a></p>
<blockquote><p>Paste Resource tag (make sure that Resource is closed  properly) copied from context.xml as child tage to Context tag in  server.xml (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/1-seam-unzipped.png" target="_blank">see Figure 25</a>)</p></blockquote>
<p><a title="25-server-xml-context-after.png" href="http://techieexchange.files.wordpress.com/2007/11/25-server-xml-context-after.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/25-server-xml-context-after.png?w=480" alt="25-server-xml-context-after.png" /><br />
</a></p>
<blockquote><p>In order to work with HSQL DB, copy hsql.jar from Seam distribution to Tomcat-Home/common/lib folder (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/26-paste-hsql-lib-in-tomcat.png" target="_blank">see Figure 26</a>)</p></blockquote>
<p><a title="26-paste-hsql-lib-in-tomcat.png" href="http://techieexchange.files.wordpress.com/2007/11/26-paste-hsql-lib-in-tomcat.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/26-paste-hsql-lib-in-tomcat.png?w=480" alt="26-paste-hsql-lib-in-tomcat.png" /><br />
</a></p>
<blockquote><p>Now all configuration things are over, so Start Tomcat inside Eclipse by pressing Start icon on Eclipse-Sysdeo toolbar (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/27-start-tomcat-sysdeo.png" target="_blank">see Figure 27</a>)</p></blockquote>
<p><a title="27-start-tomcat-sysdeo.png" href="http://techieexchange.files.wordpress.com/2007/11/27-start-tomcat-sysdeo.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/27-start-tomcat-sysdeo.thumbnail.png?w=480" alt="27-start-tomcat-sysdeo.png" /><br />
</a></p>
<blockquote><p>You can see the console output of Tomcat saying server started (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/28-tomcat-started.png" target="_blank">see Figure 28</a>)</p></blockquote>
<p><a title="28-tomcat-started.png" href="http://techieexchange.files.wordpress.com/2007/11/28-tomcat-started.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/28-tomcat-started.png?w=480" alt="28-tomcat-started.png" /><br />
</a></p>
<blockquote><p>Test whether the application started without any errors by opeing a browser and navigating</p>
<p><a>http://localhost:tomcatport/jboss-seam-jpa</a></p>
<p>Note that the footer of the front page. We’re going to change that in the next step. (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/29-test-example-browser1.png" target="_blank">see Figure 29</a>)</p></blockquote>
<p><a title="29-test-example-browser1.png" href="http://techieexchange.files.wordpress.com/2007/11/29-test-example-browser1.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/29-test-example-browser1.png?w=480" alt="29-test-example-browser1.png" /><br />
</a></p>
<blockquote><p>Open home.xhtml (front page of the application) located inside WebContent and check the footer (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/30-home-xhtml-src-before.png" target="_blank">see Figure 30</a>)</p></blockquote>
<p><a title="30-home-xhtml-src-before.png" href="http://techieexchange.files.wordpress.com/2007/11/30-home-xhtml-src-before.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/30-home-xhtml-src-before.png?w=480" alt="30-home-xhtml-src-before.png" /><br />
</a></p>
<blockquote><p>Edit footer note and save the page (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/31-edit-home-xhtml-page.png" target="_blank">see Figure 31</a>)</p></blockquote>
<p><a title="31-edit-home-xhtml-page.png" href="http://techieexchange.files.wordpress.com/2007/11/31-edit-home-xhtml-page.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/31-edit-home-xhtml-page.png?w=480" alt="31-edit-home-xhtml-page.png" /><br />
</a></p>
<blockquote><p>Now goto opened browser where application is already running, and press Refresh or F5 to reload the page.<br />
That’s it.. without starting the server your code got hot deployed and web page was reloaded. (<a title="Open Figure in new window" href="http://techieexchange.files.wordpress.com/2007/11/32-refresh-web-page.png" target="_blank">see Figure 32</a>)</p></blockquote>
<p><a title="32-refresh-web-page.png" href="http://techieexchange.files.wordpress.com/2007/11/32-refresh-web-page.png"><br />
<img src="http://techieexchange.files.wordpress.com/2007/11/32-refresh-web-page.png?w=480" alt="32-refresh-web-page.png" /><br />
</a></p>
<blockquote><p>Please note that Tomcat should be used only during  development phase in order to increase the development productivity, use  some application server to deploy production applications.</p></blockquote>
<p>I hope this tutorial gives a kick-off project template for Seam with POJO+JPA+Hibernate based application.</p>
<p>Share your thoughts.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/seam-development-with-eclipse-and-tomcat-step-by-step/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/seam-development-with-eclipse-and-tomcat-step-by-step/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/seam-development-with-eclipse-and-tomcat-step-by-step/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google maps using GWT &#8211; getting directions</title>
		<link>http://blogs.telecommand.com/google-maps-using-gwt-getting-directions/</link>
		<comments>http://blogs.telecommand.com/google-maps-using-gwt-getting-directions/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 06:13:24 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=53</guid>
		<description><![CDATA[Getting directions, calculating and displaying the route between start point and destination can be easily done using com.google.gwt.maps.client.geocode All we need is a map object ,a directions pannel then the direction query options DirectionQueryOptions opts = new DirectionQueryOptions(map,directionsPanel); The query for direction is a string which looks like &#8220;from: departure address to: destination address&#8221;.This query [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://3.bp.blogspot.com/_MqZogVEacoE/S01eJlaxlqI/AAAAAAAAFLE/P7d_5O4HeQU/s1600-h/GWTDirections.jpg"><img id="BLOGGER_PHOTO_ID_5426096644807562914" src="http://3.bp.blogspot.com/_MqZogVEacoE/S01eJlaxlqI/AAAAAAAAFLE/P7d_5O4HeQU/s320/GWTDirections.jpg" border="0" alt="" /></a><br />
Getting  directions, calculating and displaying the route between start point  and destination can be easily done using  com.google.gwt.maps.client.geocode<br />
All we need is a map object ,a directions pannel then the direction query options<br />
DirectionQueryOptions opts = new DirectionQueryOptions(map,directionsPanel);</p>
<p>The  query for direction is a string which looks like &#8220;from: departure  address to: destination address&#8221;.This query will be loaded by the  Directions object.</p>
<p>Here&#8217;s a simple example (two separate text  boxes for entering the from and to addresses ,the root panel contains a  grid which includes the map having the route marked and the direction  panel) :</p>
<p>package com.gwtmaps.project.client;<br />
import com.google.gwt.core.client.EntryPoint;<br />
import com.google.gwt.core.client.GWT;<br />
import com.google.gwt.event.dom.client.ClickEvent;<br />
import com.google.gwt.event.dom.client.ClickHandler;<br />
import com.google.gwt.event.dom.client.KeyUpEvent;<br />
import com.google.gwt.event.dom.client.KeyUpHandler;<br />
import com.google.gwt.maps.client.MapWidget;<br />
import com.google.gwt.maps.client.control.LargeMapControl;<br />
import com.google.gwt.maps.client.geocode.DirectionQueryOptions;<br />
import com.google.gwt.maps.client.geocode.DirectionResults;<br />
import com.google.gwt.maps.client.geocode.Directions;<br />
import com.google.gwt.maps.client.geocode.DirectionsCallback;<br />
import com.google.gwt.maps.client.geocode.DirectionsPanel;<br />
import com.google.gwt.user.client.ui.Button;<br />
import com.google.gwt.user.client.ui.Grid;<br />
import com.google.gwt.user.client.ui.HasVerticalAlignment;<br />
import com.google.gwt.user.client.ui.RootPanel;<br />
import com.google.gwt.user.client.ui.TextBox;</p>
<p>/**<br />
* Entry point classes define <code>onModuleLoad()</code>.<br />
*/<br />
public class GWTDirections implements EntryPoint {</p>
<p>/**<br />
* The message displayed to the user when the server cannot be reached or<br />
* returns an error.<br />
*/<br />
private static final String SERVER_ERROR = &#8220;An error occurred while &#8221;<br />
+ &#8220;attempting to contact the server. Please check your network &#8221;<br />
+ &#8220;connection and try again.&#8221;;</p>
<p>/**<br />
* Create a remote service proxy to talk to the server-side Greeting service.<br />
*/<br />
private final GreetingServiceAsync greetingService = GWT<br />
.create(GreetingService.class);</p>
<p>/**<br />
* This is the entry point method.<br />
*/<br />
public void onModuleLoad() {</p>
<p>final Grid grid = new Grid(1, 2);<br />
grid.setWidth(&#8220;100%&#8221;);<br />
grid.getCellFormatter().setWidth(0, 0, &#8220;74%&#8221;);<br />
grid.getCellFormatter().setVerticalAlignment(0,0, HasVerticalAlignment.ALIGN_TOP);<br />
grid.getCellFormatter().setWidth(0, 1, &#8220;24%&#8221;);<br />
grid.getCellFormatter().setVerticalAlignment(0,1, HasVerticalAlignment.ALIGN_TOP);</p>
<p>final Button sendButton = new Button(&#8220;Send&#8221;);<br />
final TextBox fromField = new TextBox();<br />
fromField.setText(&#8220;Enter Departure&#8221;);<br />
fromField.setTitle(&#8220;From:&#8221;);</p>
<p>final TextBox toField = new TextBox();<br />
toField.setText(&#8220;Enter Destination&#8221;);<br />
toField.setTitle(&#8220;To:&#8221;);<br />
// We can add style names to widgets<br />
sendButton.addStyleName(&#8220;getMap&#8221;);</p>
<p>// Add the nameField and sendButton to the RootPanel<br />
// Use RootPanel.get() to get the entire body element<br />
RootPanel.get().add(fromField);<br />
RootPanel.get().add(toField);<br />
RootPanel.get().add(sendButton);</p>
<p>// Focus the cursor on the name field when the app loads<br />
fromField.setFocus(true);<br />
fromField.selectAll();</p>
<p>// Create a handler for the sendButton and nameField<br />
class MyHandler implements ClickHandler, KeyUpHandler {</p>
<p>/**<br />
* Fired when the user clicks on the sendButton.<br />
*/<br />
public void onClick(ClickEvent event) {<br />
//remove preexisting maps<br />
removeExistingMaps();</p>
<p>MapWidget map  = new MapWidget();<br />
map.setSize(&#8220;500px&#8221;, &#8220;500px&#8221;);</p>
<p>// Add some controls for the zoom level<br />
map.addControl(new LargeMapControl());</p>
<p>//calculate direction</p>
<p>grid.setWidget(0, 0, map);<br />
DirectionsPanel directionsPanel = new DirectionsPanel();<br />
grid.setWidget(0, 1, directionsPanel);<br />
directionsPanel.setSize(&#8220;100%&#8221;, &#8220;100%&#8221;);<br />
// Add the map to the HTML host page<br />
RootPanel.get().add(grid);</p>
<p>DirectionQueryOptions opts = new DirectionQueryOptions(map,directionsPanel);<br />
String query = &#8220;from: &#8221; +fromField.getText() + &#8221; to: &#8221; + toField.getText();</p>
<p>Directions.load(query , opts, new DirectionsCallback() {<br />
public void onFailure(int statusCode) {</p>
<p>GWT.log(&#8220;Failed to load directions: Status &#8221; + statusCode, null);<br />
}</p>
<p>public void onSuccess(DirectionResults result) {<br />
GWT.log(&#8220;Succesfully load directions &#8220;, null);<br />
}<br />
});</p>
<p>}<br />
private void removeExistingMaps() {<br />
for( int i=1;i<br />
if(RootPanel.get().getWidget(i).getClass().equals(MapWidget.class))<br />
{<br />
MapWidget mapWidget = (MapWidget) RootPanel.get().getWidget(i);<br />
RootPanel.get().remove(mapWidget);<br />
}<br />
}<br />
}<br />
public void onKeyUp(KeyUpEvent event) {</p>
<p>}</p>
<p>}<br />
MyHandler handler = new MyHandler();<br />
sendButton.addClickHandler(handler);</p>
<p>}</p>
<p>}</p>
<div>The entire project can be downloaded from <a href="http://groups.google.com/group/new2learn2/files?pli=1">here (  the file  GWTDirectionsDemo.zip)</a></div>
<div>Enjoy <img src='http://blogs.telecommand.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/google-maps-using-gwt-getting-directions/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/google-maps-using-gwt-getting-directions/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/google-maps-using-gwt-getting-directions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing GWT Designer</title>
		<link>http://blogs.telecommand.com/installing-gwt-designer/</link>
		<comments>http://blogs.telecommand.com/installing-gwt-designer/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 04:22:18 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=45</guid>
		<description><![CDATA[Google Web Toolkit Downloads In early August, Google acquired Instantiations, a company known for its focus on Eclipse Java developer tools, including GWT Designer. We&#8217;re happy to announce today that we&#8217;re relaunching the following former Instantiations products under the Google name and making them available to all developers at no charge: SDK The Google Web [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Google Web Toolkit Downloads</strong> <em>In early August, Google acquired Instantiations, a company known for its  focus on Eclipse Java developer tools, including GWT Designer. We&#8217;re  happy to announce today that we&#8217;re relaunching the following former  Instantiations products under the Google name and making them available  to all developers at no charge:</em></p>
<div id="gc-pagecontent">
<table id="sdk" style="height: 126px;" width="481">
<tbody>
<tr>
<td><img src="http://code.google.com/webtoolkit/images/sdk-sm.png" alt="" width="64" height="64" /></td>
<td>
<h3>SDK</h3>
<p>The Google Web Toolkit SDK contains the core libraries and compiler that you need to write web applications.       See the <a href="http://code.google.com/webtoolkit/release-notes.html#Release_Notes_2_0_4">Release Notes for this latest version</a>.</td>
<td>
<div style="text-align: center;">
<div style="text-align: center;"><a href="http://google-web-toolkit.googlecode.com/files/gwt-2.0.4.zip">Download SDK</a></div>
</div>
</td>
</tr>
</tbody>
</table>
<table id="speedtracer" style="height: 102px;" width="479">
<tbody>
<tr style="text-align: center;">
<td><img src="http://code.google.com/webtoolkit/images/speedtracer-large.png" alt="" width="65" height="65" /></td>
<td>
<h3>Speed Tracer</h3>
<p>Speed Tracer is a Chrome Extension that allows you to pinpoint performance problems in your web applications.</td>
<td>
<div>
<div><a href="http://code.google.com/webtoolkit/speedtracer/get-started.html#downloading">Download Speed Tracer</a></div>
</div>
</td>
</tr>
</tbody>
</table>
<table style="height: 108px;" width="480">
<tbody>
<tr>
<td><img src="http://code.google.com/eclipse/images/google-plugin.png" alt="" width="64" height="64" /></td>
<td>
<h3>Plugin for Eclipse</h3>
<p>The Google Plugin for Eclipse provides IDE support for Google Web Toolkit and App Engine web projects.</td>
<td>
<div>
<div style="text-align: center;"><a href="http://code.google.com/eclipse/docs/download.html">Download Plugin</a></div>
</div>
</td>
</tr>
</tbody>
</table>
<table id="gwtdesigner" style="height: 154px;" width="477">
<tbody>
<tr>
<td><img src="http://code.google.com/webtoolkit/images/gwtdesigner.png" alt="" width="67" height="57" /></td>
<td>
<h3>GWT Designer</h3>
<p>Create rich web applications with GWT Designer, a powerful set of  Eclipse-based       development tools that enables Java developers to  quickly create Ajax web applications       using the Google Web Toolkit  (GWT).</td>
<td>
<div>
<div style="text-align: center;"><a href="http://code.google.com/webtoolkit/tools/download-gwtdesigner.html">Download GWT Designer</a></div>
</div>
</td>
</tr>
</tbody>
</table>
<h3 id="other_java_tools"><strong>Other Java Tools</strong></h3>
<table id="wbpro" style="height: 151px;" width="478">
<tbody>
<tr>
<td><img src="http://code.google.com/webtoolkit/images/wbpro.png" alt="" /></td>
<td>
<h3>WindowBuilder Pro</h3>
<p>Develop Java graphical user interfaces in minutes for Swing, SWT,  RCP,       XWT and GWT with WindowBuilder Pro’s WYSIWYG, drag-and-drop        interface. Use wizards, editors and intelligent layout assist to        automatically generate clean Java code, with the visual design and        source always in sync.</td>
<td>
<div>
<div style="text-align: center;"><a href="http://code.google.com/webtoolkit/tools/download-wbpro.html">Download WindowBuilder Pro</a></div>
</div>
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td><img src="http://code.google.com/webtoolkit/images/wintester.png" alt="" /></td>
<td>
<h3>WindowTester Pro</h3>
<p>Streamline testing of Java rich client applications with        WindowTester Pro, including tools for automated recording, test        generation, code coverage and playback of GUI interactions that        can occur within an application. WindowTester Pro includes       support  for SWT and Swing.</td>
<td>
<div>
<div style="text-align: center;"><a href="http://code.google.com/webtoolkit/tools/download-wintester.html">Download           WindowTester Pro</a></div>
</div>
</td>
</tr>
</tbody>
</table>
<table id="codepro">
<tbody>
<tr>
<td><img src="http://code.google.com/webtoolkit/images/codepro.png" alt="" /></td>
<td>
<h3>CodePro AnalytiX</h3>
<p>Employ the comprehensive automated software code quality and        security analysis toolkit CodePro AnalytiX to automatically        improve software quality, reliability, and maintainability in        developer applications.</td>
<td>
<div>
<div style="text-align: center;"><a href="http://code.google.com/webtoolkit/tools/download-codepro.html">Download CodePro AnalytiX</a></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/installing-gwt-designer/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/installing-gwt-designer/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/installing-gwt-designer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Web Toolkit (GWT) Resource Center</title>
		<link>http://blogs.telecommand.com/google-web-toolkit-gwt-resource-center/</link>
		<comments>http://blogs.telecommand.com/google-web-toolkit-gwt-resource-center/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 18:31:58 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=31</guid>
		<description><![CDATA[Google Web Toolkit Widgets, Plugins, and Tools Autocompleter GWT Widget http://jroller.com/page/glongman?entry=gwt_autocompleter Check out the code for this Autocompleter GWT widget. Canvas Widget http://gwt.components.googlepages.com/canvas Download the Canvas widget and learn how to use it in your GWT classes. GWT-Components http://sourceforge.net/projects/gwt-components Download and contribute to the GWT-Components—a collection of GWT extensions. GWT Addons http://sourceforge.net/projects/gwtaddons Download the GWT [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><strong>Google Web Toolkit Widgets, Plugins, and Tools</strong></td>
<td width="1" align="right"></td>
</tr>
</tbody>
</table>
<table id="dnn_ctr3035_Repository_HeaderTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr width="100%" bgcolor="white">
<td colspan="2" align="left"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table id="dnn_ctr3035_Repository_lstObjects" border="0" cellspacing="0" rules="all">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><strong><span style="color: #000000;"><a href="http://jroller.com/page/glongman?entry=gwt_autocompleter" target="_blank">Autocompleter GWT Widget</a></span></strong></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://jroller.com/page/glongman?entry=gwt_autocompleter" target="_blank">http://jroller.com/page/glongman?entry=gwt_autocompleter</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Check out the code for this Autocompleter GWT widget.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://gwt.components.googlepages.com/canvas" target="_blank">Canvas Widget</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://gwt.components.googlepages.com/canvas" target="_blank">http://gwt.components.googlepages.com/canvas</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the Canvas widget and learn how to use it in your GWT classes.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://sourceforge.net/projects/gwt-components" target="_blank">GWT-Components</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/gwt-components" target="_blank">http://sourceforge.net/projects/gwt-components</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download and contribute to the GWT-Components—a collection of GWT extensions.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://sourceforge.net/projects/gwtaddons" target="_blank">GWT Addons</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/gwtaddons" target="_blank">http://sourceforge.net/projects/gwtaddons</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the GWT Addons including a rich text editor and more.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><strong><span style="color: #000000;"><a href="http://sourceforge.net/projects/spring-gwt" target="_blank">SpringGWT</a></span></strong></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/spring-gwt" target="_blank">http://sourceforge.net/projects/spring-gwt</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the SpringGWT for use in client-side application development using the GWT.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://sourceforge.net/projects/pdune" target="_blank">Project Dune Quality Support System</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/pdune" target="_blank">http://sourceforge.net/projects/pdune</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the Project Dune Quality Support System, built with the Google Web Toolkit and other technologies.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://sourceforge.net/projects/appletserver" target="_blank">Java Applet Web Server (AppletServer)</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/appletserver" target="_blank">http://sourceforge.net/projects/appletserver</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the <a href="http://www.deitel.com/ResourceCenters/Web20/GoogleWebToolkitGWT/GoogleWebToolkitWidgetsPluginsandTools/tabid/1330/Default.aspx#" target="_blank">Java<img src="http://images.intellitxt.com/ast/adTypes/mag-glass_10x10.gif" alt="" /></a> Applet Web Server (AppletServer). Use the GWT and allows you to run Java applets on the server-side and automatically generate <a href="http://www.deitel.com/ResourceCenters/Web20/GoogleWebToolkitGWT/GoogleWebToolkitWidgetsPluginsandTools/tabid/1330/Default.aspx#" target="_blank">AJAX<img src="http://images.intellitxt.com/ast/adTypes/mag-glass_10x10.gif" alt="" /></a> for the browser.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://sourceforge.net/projects/gwt-hacks" target="_blank">Google Web Toolkit Hacks</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/gwt-hacks" target="_blank">http://sourceforge.net/projects/gwt-hacks</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the Google Web Toolkit Hacks. Includes widgets, plugins, AJAX applets and games based on the GWT.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://www.openfount.com/" target="_blank">Openfount</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.openfount.com/" target="_blank">http://www.openfount.com/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the Openfount Google Web Toolkit. Features include XML classes, SOAP classes, crypto classes, Base64 classes, <a href="http://www.deitel.com/ResourceCenters/Web20/GoogleWebToolkitGWT/GoogleWebToolkitWidgetsPluginsandTools/tabid/1330/Default.aspx#" target="_blank">Amazon<img src="http://images.intellitxt.com/ast/adTypes/mag-glass_10x10.gif" alt="" /></a> S3 classes, Amazon Simple Queue Service classes, and SOAP classes for the Openfount Queued Server.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://www.jetbrains.net/confluence/display/IDEADEV/GWT+Studio+plugin" target="_blank">IntelliJ IDEA Studio Plugin</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.jetbrains.net/confluence/display/IDEADEV/GWT+Studio+plugin" target="_blank">http://www.jetbrains.net/confluence/display/IDEADEV/GWT+Studio+plugin</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download  the GWT Studio plugin for IntelliJ IDEA. Site includes a demo, a  description of the GWT Studio and a walkthrough of its features.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://sourceforge.net/projects/eclipse-gwt" target="_blank">Eclipse GWT Plugin</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://sourceforge.net/projects/eclipse-gwt" target="_blank">http://sourceforge.net/projects/eclipse-gwt</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Download the Eclipse GWT plugin.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://www.googlipse.com/" target="_blank">Googlipse</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.googlipse.com/" target="_blank">http://www.googlipse.com/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Googlipse is an Eclipse plugin for the Google Web Toolkit. Find downloads, documentation, a FAQ and more.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://gwt-widget.sourceforge.net/" target="_blank">GWT Widget Library</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://gwt-widget.sourceforge.net/" target="_blank">http://gwt-widget.sourceforge.net/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Check out the GWT Widget Library. Includes widgets, utilities and wrappers. Also find demos, a source reference and more.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://gwt.components.googlepages.com/" target="_blank">Open Source Widgets</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://gwt.components.googlepages.com/" target="_blank">http://gwt.components.googlepages.com/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Collection of open source Google Web Toolkit widgets.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><span style="color: #000000;"><strong><a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.UserInterface.WidgetGallery.html" target="_blank">Google Web Toolkit Widget Gallery</a></strong></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.UserInterface.WidgetGallery.html" target="_blank">http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.UserInterface.WidgetGallery.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Google  Web Toolkit&#8217;s Widget Gallery. Here you will find widgets for a normal  button, a radio button, a check box, text box, password text box, text  area, hyperlink, list box, menu bar , tree, table, tab bar, dialog box,  popup panel, stack panel, horizontal panel, vertical panel, flow panel,  dock panel, and tab panel.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/google-web-toolkit-gwt-resource-center/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/google-web-toolkit-gwt-resource-center/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/google-web-toolkit-gwt-resource-center/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Web Toolkit Tutorials and Demos</title>
		<link>http://blogs.telecommand.com/google-web-toolkit-tutorials-and-demos/</link>
		<comments>http://blogs.telecommand.com/google-web-toolkit-tutorials-and-demos/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 18:04:28 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=29</guid>
		<description><![CDATA[Google Web Toolkit Tutorials and Demos &#8220;Step by Step: A Mortgage Calculator using GWT&#8221; http://www.mooreds.com/weblog/archives/000348.html Tutorial: &#8220;Step by Step: A Mortgage Calculator using GWT,&#8221; by Dan Moore of Moore Consulting. GWT Integration Tutorial http://angel.hurtado.googlepages.com/tutorialgwt2 Tutorial discusses how to integrate GWT with an Apache, MySQL and PHP back end. IntelliJ Idea Animated Demo http://download.jetbrains.com/idea/GWT.htm?version=1 Animated demo [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><strong>Google Web Toolkit Tutorials and Demos</strong></td>
<td width="1" align="right"></td>
</tr>
</tbody>
</table>
<table id="dnn_ctr3029_Repository_HeaderTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr width="100%" bgcolor="white">
<td colspan="2" align="left"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table id="dnn_ctr3029_Repository_lstObjects" border="0" cellspacing="0" rules="all">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.mooreds.com/weblog/archives/000348.html" target="_blank">&#8220;Step by Step: A Mortgage Calculator using GWT&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.mooreds.com/weblog/archives/000348.html" target="_blank">http://www.mooreds.com/weblog/archives/000348.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial: &#8220;Step by Step: A Mortgage Calculator using GWT,&#8221; by Dan Moore of Moore Consulting.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://angel.hurtado.googlepages.com/tutorialgwt2" target="_blank">GWT Integration Tutorial</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://angel.hurtado.googlepages.com/tutorialgwt2" target="_blank">http://angel.hurtado.googlepages.com/tutorialgwt2</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial discusses how to integrate GWT with an Apache, MySQL and PHP back end.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://download.jetbrains.com/idea/GWT.htm?version=1" target="_blank">IntelliJ Idea Animated Demo</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://download.jetbrains.com/idea/GWT.htm?version=1" target="_blank">http://download.jetbrains.com/idea/GWT.htm?version=1</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Animated  demo walks through the configuration of IntelliJ Idea for the Google  Web Toolkit and shows how to write a GWT image viewer application.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://today.java.net/pub/a/today/2006/06/27/client-side-google-web-toolkit.html" target="_blank">&#8220;Kickstarting Google Web Toolkit on the Client Sid</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://today.java.net/pub/a/today/2006/06/27/client-side-google-web-toolkit.html" target="_blank">http://today.java.net/pub/a/today/2006/06/27/client-side-google-web-toolkit.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Kickstarting Google Web Toolkit on the Client Side&#8221; by Simon Morris,  provides an introduction to client side development with the GWT.  Includes walkthroughs of three projects with sample code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html" target="_blank">&#8220;Working with the Google Web Toolkit&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html" target="_blank">http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Working with the Google Web Toolkit&#8221; by Robert Cooper. Topics include  getting started with the GWT, project basics, building the table, the  history class, the maven module and license concerns. Includes source  code for the examples.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.devx.com/webdev/Article/31868" target="_blank">&#8220;Google Web Toolkit&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.devx.com/webdev/Article/31868" target="_blank">http://www.devx.com/webdev/Article/31868</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial: &#8220;Google Web Toolkit: <a href="http://www.deitel.com/ResourceCenters/Web20/GoogleWebToolkitGWT/GoogleWebToolkitTutorialsandDemos/tabid/1327/Default.aspx#" target="_blank">AJAX<img src="http://images.intellitxt.com/ast/adTypes/mag-glass_10x10.gif" alt="" /></a> Buzz Meets Real World Development: With its Swing-like development  framework and its awe-inspiring compiler/debugger, the GWT eases AJAX  development,&#8221; by Gautam Shah. Provides introductions to the Google Web  Toolkit, AJAX development, GWT components and GWT RPC. Includes source  code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://google.wikia.com/wiki/Jump_Start_Your_AJAX_Development_with_the_Google_Web_Toolkit" target="_blank">&#8220;Jump Start Your AJAX Development with&#8230;&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://google.wikia.com/wiki/Jump_Start_Your_AJAX_Development_with_the_Google_Web_Toolkit" target="_blank">http://google.wikia.com/wiki/Jump_Start_Your_AJAX_Development_with_the_Google_Web_Toolkit</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Jump Start Your AJAX Development with the Google Web Toolkit,&#8221; by  Tyrell Perera. Topics include an introduction to the GWT, Creating an  Eclipse project, importing the project into the Eclipse IDE, running  &#8220;hello World,&#8221; and translating the &#8220;Hello World&#8221; into JavaScript.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.juixe.com/techknow/index.php/2006/05/21/google-web-toolkit-tutorial-the-break-down/" target="_blank">&#8220;Google Web Toolkit: the Breakdown&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.juixe.com/techknow/index.php/2006/05/21/google-web-toolkit-tutorial-the-break-down/" target="_blank">http://www.juixe.com/techknow/index.php/2006/05/21/google-web-toolkit-tutorial-the-break-down/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Google Web Toolkit: the Breakdown&#8221; walks through the development of an  AJAX web application using the Google Web Toolkit.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www-128.ibm.com/developerworks/library/j-ajax4/index.html?ca=dgr-lnxw01GWT4Ajax" target="_blank">&#8220;Ajax for Java Developers: Exploring the Google&#8230;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www-128.ibm.com/developerworks/library/j-ajax4/index.html?ca=dgr-lnxw01GWT4Ajax" target="_blank">http://www-128.ibm.com/developerworks/library/j-ajax4/index.html?ca=dgr-lnxw01GWT4Ajax</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Ajax for Java Developers: Exploring the Google Web Toolkit: Develop  Ajax applications from a single Java codebase,&#8221; by Philip McCarthy.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.xml.com/pub/a/2006/07/12/google-web-toolkit-ajax-java-ant-xml.html" target="_blank">&#8220;Google Web Toolkit&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.xml.com/pub/a/2006/07/12/google-web-toolkit-ajax-java-ant-xml.html" target="_blank">http://www.xml.com/pub/a/2006/07/12/google-web-toolkit-ajax-java-ant-xml.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Google Web Toolkit&#8221; by Bruce Perry. Discusses how to develop an AJAX  application for Mac OS X using the GWT, Apache Ant, the Tomcat 5.0, and  IntelliJ IDEA integrated development environment.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html" target="_blank">&#8220;Working with the Google Web Toolkit&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html" target="_blank">http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial: &#8220;Working with the Google Web Toolkit&#8221; by Robert Cooper. Discusses what the GWT is and how to get started using it.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://blogs.zdnet.com/Burnette/?p=122" target="_blank">&#8220;Getting started with the Google Web Toolkit&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://blogs.zdnet.com/Burnette/?p=122" target="_blank">http://blogs.zdnet.com/Burnette/?p=122</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Blog  entry: &#8220;Getting started with the Google Web Toolkit,&#8221; by Ed Burnette,  shows you how to get the GWT set up so that you can begin AJAX  development.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/gettingstarted.html" target="_blank">&#8220;Google Web Toolkit Getting Started Guide&#8221;</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/gettingstarted.html" target="_blank">http://code.google.com/webtoolkit/gettingstarted.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Tutorial:  &#8220;Google Web Toolkit Getting Started Guide.&#8221; Discusses installing the  GWT, building a sample application, running in hosted mode, running in  Web mode, and creating an application from scratch with and without  Eclipse.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/google-web-toolkit-tutorials-and-demos/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/google-web-toolkit-tutorials-and-demos/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/google-web-toolkit-tutorials-and-demos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GWT Sample Applications and Source Code</title>
		<link>http://blogs.telecommand.com/gwt-sample-applications-and-source-code/</link>
		<comments>http://blogs.telecommand.com/gwt-sample-applications-and-source-code/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 17:56:48 +0000</pubDate>
		<dc:creator>santosh.sarkar@telecommand.com</dc:creator>
				<category><![CDATA[GWT]]></category>

		<guid isPermaLink="false">http://blogs.telecommand.com/?p=24</guid>
		<description><![CDATA[Google Web Toolkit Sample Applications and Source Code RSS Reader Application http://ajax.lodgon.com/demo1.html RSS Reader application built with the GWT. Includes a demo and source code. RPC Hello Source Code and Walkthrough http://ajax.lodgon.com/hello.html Source code and walkthrough of an RPC Hello example. GWT Application Source Code http://roberthanson.blogspot.com/2006/06/trivial-gwt-example.html Source code for a simple GWT application. GWT Application [...]]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td><strong>Google Web Toolkit Sample Applications and Source Code</strong></td>
<td width="1" align="right"></td>
</tr>
</tbody>
</table>
<table id="dnn_ctr3033_Repository_HeaderTable" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr width="100%" bgcolor="white">
<td colspan="2" align="left"></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table id="dnn_ctr3033_Repository_lstObjects" border="0" cellspacing="0" rules="all">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://ajax.lodgon.com/demo1.html" target="_blank">RSS Reader Application</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://ajax.lodgon.com/demo1.html" target="_blank">http://ajax.lodgon.com/demo1.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">RSS Reader application built with the GWT. Includes a demo and source code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://ajax.lodgon.com/hello.html" target="_blank">RPC Hello Source Code and Walkthrough</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://ajax.lodgon.com/hello.html" target="_blank">http://ajax.lodgon.com/hello.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Source code and walkthrough of an RPC Hello example.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://roberthanson.blogspot.com/2006/06/trivial-gwt-example.html" target="_blank">GWT Application Source Code</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://roberthanson.blogspot.com/2006/06/trivial-gwt-example.html" target="_blank">http://roberthanson.blogspot.com/2006/06/trivial-gwt-example.html</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Source code for a simple GWT application.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.bigbold.com/snippets/tag/gwt" target="_blank">GWT Application Sample Code</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.bigbold.com/snippets/tag/gwt" target="_blank">http://www.bigbold.com/snippets/tag/gwt</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Sample code for a simple GWT application using the Mouse Wheel feature.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.mynetimages.com/" target="_blank">Photo Sharing Site</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.mynetimages.com/" target="_blank">http://www.mynetimages.com/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Free photo sharing site developed using the Google Web toolkit.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/documentation/examples/kitchensink/" target="_blank">Kitchen Sink Example Project</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/examples/kitchensink/" target="_blank">http://code.google.com/webtoolkit/documentation/examples/kitchensink/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Kitchen  Sink example project built with the Google Web Toolkit using the UI  widgets and history management features. This example demonstrates  features including buttons, menus, images, layouts, lists, popups,  tables, text, trees, frames and tabs. Includes a demo of the application  and source code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/documentation/examples/jsonrpc/" target="_blank">JSON RPC Example Project</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/examples/jsonrpc/" target="_blank">http://code.google.com/webtoolkit/documentation/examples/jsonrpc/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">JSON  RPC example project built with the Google Web Toolkit using the UI  widgets, JSNI (JavaScript Native Interface) and RPC features. Includes a  demo of the application and source code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/documentation/examples/desktopclone/" target="_blank">Desktop App Clone Example Project</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/examples/desktopclone/" target="_blank">http://code.google.com/webtoolkit/documentation/examples/desktopclone/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top"><a href="http://www.deitel.com/ResourceCenters/Web20/GoogleWebToolkitGWT/GoogleWebToolkitSampleApplicationsandSource/tabid/1329/Default.aspx#" target="_blank">Desktop<img src="http://images.intellitxt.com/ast/adTypes/mag-glass_10x10.gif" alt="" /></a> App Clone example project built with the Google Web Toolkit using the  UI widgets and history management features. Includes a demo of the  application and source code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/documentation/examples/dynamictable/" target="_blank">Dynamic Table Example Project</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/examples/dynamictable/" target="_blank">http://code.google.com/webtoolkit/documentation/examples/dynamictable/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Dynamic  Table example project built with the Google Web Toolkit using the UI  widgets and polymorphic RPC features. Includes a demo of the application  and source code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/documentation/examples/helloworld/" target="_blank">&#8220;Hello World&#8221; Example</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/examples/helloworld/" target="_blank">http://code.google.com/webtoolkit/documentation/examples/helloworld/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">&#8220;Hello  World&#8221; example project built with the Google Web Toolkit using the UI  widgets feature. Includes a demo of the application and source code.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://code.google.com/webtoolkit/documentation/examples/" target="_blank">Google Web Toolkit Example Applications</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://code.google.com/webtoolkit/documentation/examples/" target="_blank">http://code.google.com/webtoolkit/documentation/examples/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Google  Web Toolkit Example Applications page includes several sample  applications built with the GWT. View a demo of the application,  download the source code and check out the list of GWT features used to  build the application.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://www.gpokr.com/" target="_blank">Animated Poker</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://www.gpokr.com/" target="_blank">http://www.gpokr.com/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Animated poker game built using the Google Web Toolkit.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="1" align="left" valign="middle"></td>
<td align="left" valign="middle"><a href="http://octagonsoftware.com/home/mark/gwthangman/" target="_blank">Hangman</a></td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr bgcolor="white">
<td><a href="http://octagonsoftware.com/home/mark/gwthangman/" target="_blank">http://octagonsoftware.com/home/mark/gwthangman/</a></p>
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top">Check out this game of hangman, by Mark Roth, built using the Google Web toolkit.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/gwt-sample-applications-and-source-code/" target="_blank"><img src="http://blogs.telecommand.com/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://blogs.telecommand.com/gwt-sample-applications-and-source-code/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://blogs.telecommand.com/gwt-sample-applications-and-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

