<?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>Blue Tent Blog &#187; Drupal</title>
	<atom:link href="http://www.bluetentmarketing.com/blog/category/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bluetentmarketing.com/blog</link>
	<description>The Buzz In Internet Marketing</description>
	<lastBuildDate>Wed, 28 Jul 2010 17:57:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>La Mirage &amp; The Importance Of Claiming Your LBL</title>
		<link>http://www.bluetentmarketing.com/blog/importance-of-claiming-your-lbl/</link>
		<comments>http://www.bluetentmarketing.com/blog/importance-of-claiming-your-lbl/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 17:49:18 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Internet Marketing]]></category>
		<category><![CDATA[Local Business]]></category>
		<category><![CDATA[Resort Internet Marketing]]></category>
		<category><![CDATA[Bing Local]]></category>
		<category><![CDATA[Google Places]]></category>
		<category><![CDATA[Local Business Listings]]></category>
		<category><![CDATA[resort marketing]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=774</guid>
		<description><![CDATA[La Mirage Resort Condominiums is ideally located only 5 minutes from Port Aransas, Texas and 25 minutes from downtown Corpus Christi.  With such a great location on the Texas Gulf Coast, this condo resort is an attractive place to spend a vacation. La Mirage approached us a few months ago, and we built them a [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/importance-of-claiming-your-lbl/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fimportance-of-claiming-your-lbl%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fimportance-of-claiming-your-lbl%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.lamirage-portaransas.com/" rel="nofollow" ><img class="alignleft size-full wp-image-778" title="LM logo" src="http://www.bluetentmarketing.com/blog/wp-content/uploads/2010/07/LM-logo.png" alt="" width="220" height="137" /></a><a href="http://www.lamirage-portaransas.com/" rel="nofollow"  target="_blank">La Mirage Resort Condominiums</a> is ideally located only 5 minutes from Port Aransas, Texas and 25 minutes from downtown Corpus Christi.  With such a great location on the Texas Gulf Coast, this condo resort is an attractive place to spend a vacation. La Mirage approached us a few months ago, and we built them a new <a href="http://www.bluetentmarketing.com/vacation-rentals-marketing" rel="nofollow"  target="_self">Drupal vacation rental site</a>. As always, we recommend doing a comprehensive SEO setup along with their web project, in order to ensure that we’ve done the basic minimal items, along the lines of 301 redirects, xml site maps, and the like, that facilitate a new web project’s ongoing success with the search engines.</p>
<p>This is where things get interesting; La Mirage was having some issues with a rogue owner of 3 units in the complex who chose to manage and market their 3 properties on their own. Showing the initiative that sets Blue Tent apart from your average web company, Tim (the SEM Account Manager assigned to La Mirage) decided to tackle this problem as part of La Mirage&#8217;s SEO setup. The rogue owner maintained their own site that was ranking higher than La Mirage on the search engine results page for our client’s <strong><em>own name</em></strong>. After La Mirage became our client, these erroneous search results couldn’t continue. As you can tell, this situation was causing conflicts with customers mistaking the rogue owner for La Mirage.</p>
<p><img class="size-medium wp-image-776 alignright" title="La Mirage LBL" src="http://www.bluetentmarketing.com/blog/wp-content/uploads/2010/07/moz-screenshot-22-300x102.png" alt="" width="300" height="102" /></p>
<p>We’ve talked about the power of <a href="http://www.bluetentmarketing.com/blog/own-your-local-business-listing/">claiming your local business listing</a>, and this case was no exception.  When searching local or &#8220;Places&#8221; listings, the rogue owner was coming up with their contact information even though it was La Mirage&#8217;s (the actual condo management company’s) guest reviews, and location page.  After some persistence, we were able to get things straightened out and take proper ownership of the &#8220;Places&#8221; page.  This one small step, among other things, has already made a difference in the battle for top search engine rankings, moving La Mirage up and correcting the previous misinformation.  Let us implore you one more time; claim your local business listings, if not the competition might swipe your traffic!
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/importance-of-claiming-your-lbl/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/importance-of-claiming-your-lbl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hilton Head Rentals &amp; Golf Website Redesign</title>
		<link>http://www.bluetentmarketing.com/blog/hilton-head-website-redesign/</link>
		<comments>http://www.bluetentmarketing.com/blog/hilton-head-website-redesign/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 17:30:40 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Internet Marketing]]></category>
		<category><![CDATA[Vacation Rentals & Lodging]]></category>
		<category><![CDATA[Vacation Rental]]></category>
		<category><![CDATA[Web Site Redesign]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=746</guid>
		<description><![CDATA[Hilton Head Rentals &#38; Golf, an established vacation rental company with the widest and best selection of lodging throughout Hilton Head Island, had a well-established web presence. But their website was sorely in need of an updated design and improved functionality. To that end, we undertook a complete redesign of the aesthetics, navigation and functionality of their [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/hilton-head-website-redesign/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fhilton-head-website-redesign%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fhilton-head-website-redesign%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.hiltonheadvacation.com/" rel="nofollow"  target="_blank">Hilton Head Rentals &amp; Golf</a>, an established vacation rental company with the widest and best selection of lodging throughout Hilton Head Island, had a well-established web presence. But their website was sorely in need of an updated design and improved functionality. To that end, we undertook a complete redesign of the aesthetics, navigation and functionality of their website. We created a warm, airy design with a rotating slide show as a focal point of the homepage–making visitors feel as if they’re already standing on the beach. We also completely revamped the navigation to make it more user-friendly with the addition of flyouts that quickly guide visitors straight to specific pages of the site. And we built it on the Drupal content management system, an intuitive, secure and scalable platform that will serve our client well for years to come.</p>
<p><img class="alignright size-medium wp-image-747" style="margin: 5px;" title="HHRG" src="http://www.bluetentmarketing.com/blog/wp-content/uploads/2010/06/HHRG-300x241.jpg" alt="Hilton Head Rentals &amp; Golf" width="300" height="241" /></p>
<p>Search features include a <a href="http://www.hiltonheadvacation.com/search-properties-map" rel="nofollow"  target="_blank">search by area map</a>, and search widgets on the homepage and interior pages make it easy to find the perfect vacation rental on Hilton Head. The search results and property information displayed is powered by <a href="http://www.rental-network.com/default.aspx" rel="nofollow"  target="_blank">Rental Network Software&#8217;s</a> (RNS) property management system. This approach provides site visitors with the most up-to-date property and availability information possible, as well as a seamless transition from the main site, to the booking engine.</p>
<p>We also cleaned up their Google Analytics configuration to include cross-domain and e-commerce tracking and have been busy refining their search engine marketing strategy  and email marketing programs as well.</p>
<p>One of the primary reasons why this <a href="http://www.bluetentmarketing.com/vacation-rentals-marketing" rel="nofollow"  target="_self">vacation rental redesign</a> was so successful was due to the proactive participation from the client. A successful web project depends as much on the client’s performance, leadership, and engagement, as it does on us; the vendor you&#8217;ve hired to build it. In short, it’s a two way street. Congratulations to the HHRG team for their enthusiasm and engagement in the project – we look forward to seeing more of your site visitors turn into new customers!
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/hilton-head-website-redesign/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/hilton-head-website-redesign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupalcon Session: Performance testing The Economist Online using The Grinder</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-session-performance-testing-the-economist-online-using-the-grinder/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-session-performance-testing-the-economist-online-using-the-grinder/#comments</comments>
		<pubDate>Wed, 05 May 2010 05:10:03 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=679</guid>
		<description><![CDATA[Performance testing The Economist Online using The Grinder Presented by David Strauss of Four Kitchens The only way to get close to accurate load testing for a real site is to use a replica of production servers and infrastructure.  You must have a solid testing framework that includes hardware, software &#38; tools, and scripts and [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-session-performance-testing-the-economist-online-using-the-grinder/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-performance-testing-the-economist-online-using-the-grinder%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-performance-testing-the-economist-online-using-the-grinder%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://sf2010.drupal.org/conference/sessions/performance-testing-economist-online-using-grinder" rel="nofollow" >Performance testing The Economist Online using The  Grinder</a></p>
<p>Presented by David Strauss of <a href="http://fourkitchens.com/" rel="nofollow" >Four Kitchens</a></p>
<p>The only way to get close to accurate load testing for a real site is to use a replica of production servers and infrastructure.  You must have a solid testing framework that includes hardware, software &amp; tools, and scripts and configurations specific to your site&#8217;s needs. Load testing should not be done on production &#8220;live&#8221; sites or servers.</p>
<p>Hardware that must be added in addition to standard web servers, database servers, etc. is a load testing controller and load injectors.  The load injectors send the web page requests to the dev servers, and the testing controller manages the load injectors.  You need multiple load injectors in order to come close to simulating a real-world scenario.</p>
<p>The point of testing is to find out where the breaks or bottlenecks happen, to find see where problems will be happening and be able to measure their severity. Your next step after testing is to track down the cause of the problem, develop a solution, implement it and run the performance tests again to see if the problem is improved.</p>
<h2>Tools</h2>
<p><a href="http://grinder.sourceforge.net/" rel="nofollow" >The Grinder</a></p>
<ul>
<li>Load testing software</li>
<li>Written in <a href="http://www.jython.org/" rel="nofollow" >Jython</a></li>
</ul>
<p>Using The Grinder</p>
<ul>
<li>Write some unit tests as sanity checks</li>
<li>Test actions performed by logged-in users (voting, viewing, editing)</li>
<li>Test variety of data, some was behind a paywall</li>
<li>Test hard enough that you can actually break the site. (This is done on development machines, not the live site.)</li>
<li>Write tests that simulate a live load</li>
<li>Some Issues that can be discovered
<ul>
<li>Menu Rebuild Stampede</li>
<li>Variable Cache Rebuild Stampede</li>
</ul>
</li>
</ul>
<p><a href="http://innotop.sourceforge.net/" rel="nofollow" >Innotop</a></p>
<ul>
<li>MySQL monitoring tool</li>
</ul>
<p><a href="http://man.cx/varnishhist%281%29" rel="nofollow" >VarnishHist</a></p>
<ul>
<li>Included when install Varnish (a reverse proxy server, usually installed to improve performance)</li>
<li>Histogram view of your Varnish cache</li>
<li>See when it is having to send lengthy requests back to Apache</li>
</ul>
<p><a href="https://launchpad.net/http-traffic-proportion-analyzer" rel="nofollow" >HTTP Traffic Proportion Analyzer</a></p>
<ul>
<li>Safe to run on live sites.</li>
<li>Analyze traffic patterns on live sites. Use this data to help you develop good tests based on actual traffic, not just guesses.</li>
<li>Can group into buckets (usually based on section of the site, but can be grouped by many custom rules.)</li>
</ul>
<h2>Further Notes</h2>
<p>They spent about ten times the amount of time developing and running the tests, compared to fixing the problems that were discovered in running the tests.  Working out the fixes was fairly quick, once the actual causes were known.</p>
<p>More Grinder tips on the <a href="https://wiki.fourkitchens.com/" rel="nofollow" >Four Kitchens wiki</a>.
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-session-performance-testing-the-economist-online-using-the-grinder/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-session-performance-testing-the-economist-online-using-the-grinder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupalcon session: How Drupal 7 Fields are changing the way you write modules</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules/#comments</comments>
		<pubDate>Sun, 02 May 2010 03:50:56 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=675</guid>
		<description><![CDATA[How Drupal 7 Fields are changing the way you write modules In Drupal 6, you used hook_nodeapi() and created a table In Drupal 7, you create a Field. Fields are shared between entities. Define once, reuse on different things (nodes, comments, users). Anatomy Schema = storage Widget = how to edit. the editor&#8217;s interface. Formatter [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://sf2010.drupal.org/conference/sessions/how-drupal-7-fields-are-changing-way-you-write-modules" rel="nofollow" title="How Drupal 7 Fields are changing the way you write modules" >How  Drupal 7 Fields are changing the way you write modules</a></p>
<p>In Drupal 6, you used hook_nodeapi() and created a table</p>
<p>In Drupal 7, you create a Field.</p>
<p>Fields are shared between entities. Define once, reuse on different things (nodes, comments, users).</p>
<h2>Anatomy</h2>
<ul>
<li>Schema = storage</li>
<li>Widget = how to edit. the editor&#8217;s interface.</li>
<li>Formatter = how to display the contents of the field</li>
<li>Settings = global or per-instance</li>
<li>Bundle = entity type</li>
</ul>
<p>Field API</p>
<ul>
<li>starts with <a href="http://api.drupal.org/api/function/hook_field_info/7" rel="nofollow" >hook_field_info()</a></li>
<li>defines the schema, formatter info, widget info.</li>
</ul>
<p>Entities (are the new nodes)</p>
<ul>
<li>high level object</li>
<li>fieldable (can have fields attached)</li>
<li>revisionable (can have revisions)</li>
<li>can have bundles (sub-types. content types are a current example.)</li>
<li>can have a URI</li>
<li>can have build modes (Full, Teaser, RSS, Tile, etc.)</li>
</ul>
<p>Entity API</p>
<ul>
<li><a href="http://api.drupal.org/api/function/hook_entity_info/7" rel="nofollow" >hook_entity_info()</a></li>
<li>hook_entity_ [load | insert | update] (no delete)</li>
<li>entity_load (no save or delete)</li>
</ul>
<p><a href="http://drupal.org/project/entity" rel="nofollow" >Entity API</a> module fills in the missing pieces, such as hook_entity_delete() and entity_save().</p>
<h2>Application</h2>
<p>Nodes and Comments can share the definition and data of the same field.</p>
<p>Creating an Issue tracker. This was demonstrated in the session.</p>
<ul>
<li>Used an custom content type of &#8220;Issue&#8221;</li>
<li>Added a &#8220;Severity&#8221; field in content type and in comment.</li>
<li>Custom Module: sets default value, adds checkbox to content type settings, updates value of node when submitting the comment.</li>
</ul>
<p>Don&#8217;t use nodes for anything that is not content. (This might be a big change in thinking.)</p>
<ul>
<li>Create your own entities instead of creating custom content types.</li>
<li>Examples: Group, Product.</li>
</ul>
<p>If extending an existing content type, or something defined by another module, use entities. Don&#8217;t create your own tables; let the entities API handle that for you.</p>
<p>Rely on the Views module to display your entities. (Views is not yet aware of alternate data storage engines, such as MongoDB and Flickr.)</p>
<h2>Upgrade path</h2>
<ol>
<li>Start with doing a simple upgrade of existing modules.</li>
<li>Next, start rethinking how to make better use of fields, entities, and bundles.</li>
</ol>
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-session-how-drupal-7-fields-are-changing-the-way-you-write-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupalcon Keynote: Open Source in the Cloud Era</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-keynote-open-source-in-the-cloud-era/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-keynote-open-source-in-the-cloud-era/#comments</comments>
		<pubDate>Sun, 02 May 2010 03:30:39 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=673</guid>
		<description><![CDATA[Open Source in the Cloud Era On the rise: data capture devices, cloud based data stores (e.g. google docs), and data displays (augmented reality such as google goggles). Again: more intelligent data capturing devices, and the data being stored in huge stores by large companies, such as google and facebook. Movement toward an &#8220;Internet OS&#8221; [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-keynote-open-source-in-the-cloud-era/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-keynote-open-source-in-the-cloud-era%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-keynote-open-source-in-the-cloud-era%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://sf2010.drupal.org/conference/sessions/open-source-cloud-era" rel="nofollow" >Open Source in the Cloud Era</a></p>
<p>On the rise: data capture devices, cloud based data stores (e.g. google docs), and data displays (augmented reality such as google goggles). Again: more intelligent data capturing devices, and the data being stored in huge stores by large companies, such as google and facebook.</p>
<p>Movement toward an &#8220;Internet OS&#8221;</p>
<p>Who owns this collected data? If it&#8217;s &#8220;them&#8221; do they want to share it like we do? If we want to own it, we&#8217;d better get busy creating an open cloud or open network.  This is after all how the internet became popular.</p>
<p>Data.gov is an example of data stores being made more open.</p>
<p>&#8220;Government 2.0&#8243; is DIY on a civic scale. Drupal is a DIY web platform.
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-keynote-open-source-in-the-cloud-era/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-keynote-open-source-in-the-cloud-era/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupalcon Sessions: Views (module) for developers</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-sessions-views-for-developers/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-sessions-views-for-developers/#comments</comments>
		<pubDate>Sun, 02 May 2010 03:14:06 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=670</guid>
		<description><![CDATA[Views for developers Focus is mostly on views 3, which is currently under active development and does not yet have a stable release. (Views 2 is very stable.) The stack: what = handlers how = plugins (styles, pagers, rows) where = display, access, exposed forms Plugins only one per view themeable: display, style, pager, exposed [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-sessions-views-for-developers/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-sessions-views-for-developers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-sessions-views-for-developers%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://sf2010.drupal.org/conference/sessions/views-developers" rel="nofollow" >Views for developers</a></p>
<p>Focus is mostly on views 3, which is currently under active development and does not yet have a stable release. (Views 2 is very stable.)</p>
<p>The stack:</p>
<ul>
<li>what = handlers</li>
<li>how = plugins (styles, pagers, rows)</li>
<li>where = display, access, exposed forms</li>
</ul>
<p>Plugins</p>
<ul>
<li>only one per view</li>
<li>themeable: display, style, pager, exposed filter</li>
<li>non-themeable: access, arguments, validation, caching, query</li>
</ul>
<p>Handlers</p>
<ul>
<li>can be multiple per view</li>
<li>fields (select)</li>
<li>filters &amp; arguments (where)</li>
<li>sort</li>
<li>relationships</li>
<li>area plugins (header, footer)</li>
</ul>
<h2>Example modules</h2>
<p>(my biggest takeaway from the session was to go study existing views modules, as well as the views module itself.)</p>
<p>Study <a href="http://drupal.org/project/views_tree" rel="nofollow" >views_tree</a> module</p>
<ul>
<li>start with hook_views_api()</li>
<li>Uses mainly FormAPI, just add fields</li>
<li>No &#8220;Save&#8221; callbacks are needed. They are handled automatically by the views module.</li>
</ul>
<p>Area Plugin</p>
<ul>
<li>this is a handler.</li>
<li>See the <a href="http://drupal.org/project/views_linkarea" rel="nofollow" >Views Link Area</a> module</li>
</ul>
<p>Access Plugin</p>
<ul>
<li>see the demonstration <a href="http://drupal.org/project/fizzbin" rel="nofollow" >Fizzbin</a> module</li>
</ul>
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-sessions-views-for-developers/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-sessions-views-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupalcon Session: How to take advantage of cloud technologies</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-session-how-to-take-advantage-of-cloud-technologies/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-session-how-to-take-advantage-of-cloud-technologies/#comments</comments>
		<pubDate>Sun, 02 May 2010 01:42:54 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=666</guid>
		<description><![CDATA[A Match Made in the Cloud – How to Best Take Advantage of Cloud Technologies with Drupal Sites First example: Mercury Mercury is a complete technology stack, preconfigured with industry and Drupal-oriented best practices. Includes Apache Solr, Memcache, APC, Varnish, MySQL tuning Amazon Web Services (AWS) = &#8220;Computing&#8221;.  All about computing, oriented more around computer [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-session-how-to-take-advantage-of-cloud-technologies/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-how-to-take-advantage-of-cloud-technologies%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-how-to-take-advantage-of-cloud-technologies%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://sf2010.drupal.org/conference/sessions/match-made-cloud-%E2%80%93-how-best-take-advantage-cloud-technologies-drupal-sites" rel="nofollow" >A Match Made in the Cloud – How to Best Take Advantage  of Cloud Technologies with Drupal Sites</a></p>
<p>First example: <a href="http://getpantheon.com/mercury/what-is-mercury" rel="nofollow" >Mercury</a></p>
<ul>
<li>Mercury is a complete technology stack, preconfigured with industry and Drupal-oriented best practices.</li>
<li>Includes Apache Solr, Memcache, APC, Varnish, MySQL tuning</li>
</ul>
<p><a href="http://aws.amazon.com/" rel="nofollow" >Amazon Web Services</a> (AWS) = &#8220;Computing&#8221;.  All about computing, oriented more around computer scientists than the average web developer. Generally too complex and tinkery.</p>
<p><a href="http://www.rackspacecloud.com/" rel="nofollow" >Rackspace Cloud</a> = &#8220;Hosting&#8221;. All about web hosting, geared around web developers who want to host their sites.</p>
<ul>
<li>Provides full DNS, console access, integrated backups, CPU Bursting, root access</li>
<li>Supports libcoud API</li>
<li>Also available: cloud files and Limelight CDN</li>
</ul>
<p>Mercury and Rackspace Cloud integration</p>
<ul>
<li>Order a Mercury instance at http://getpantheon.com/get-mercury.</li>
<li>In a few minutes, a VPS cloud server will be available for you at Rackspace, completely configured with best practice technology for Drupal.</li>
<li>As updates are added to Mercury, your server instance will receive them using the <a href="http://trac.mcs.anl.gov/projects/bcfg2" rel="nofollow" >bcfg2</a> configuration management tool.</li>
</ul>
<p>Rackspace API enables:</p>
<ul>
<li>setting up load balancing</li>
<li>temporary servers for heavy tasks or expected traffic spikes</li>
<li>clustering</li>
</ul>
<p>Plans for next steps</p>
<ul>
<li>More linux distros: Ubuntu Lucid, Centos, Debian, and more</li>
<li>CDN Integration with Pressflow</li>
<li>Drupal 7</li>
<li>Site Import Wizard</li>
</ul>
<p>Later in 2010</p>
<ul>
<li>Start using <a href="http://git-scm.com/" rel="nofollow" >Git</a> as a version control system</li>
<li>Integration with automated testing systems such as <a href="http://hudson-ci.org/" rel="nofollow" >Hudson</a></li>
<li><a href="http://groups.drupal.org/aegir-hosting-system" rel="nofollow" >Aegir</a> pre-installed or readily available</li>
<li>Monitoring and uptime alerts</li>
<li>Integration with <a href="https://launchpad.net/drizzle" rel="nofollow" >Drizzle</a> (a MySQL replacement) and <a href="http://trac.mcs.anl.gov/projects/bcfg2" rel="nofollow" >Cassandra</a></li>
<li>Clustering and High Availability configurations ready to go</li>
<li>Customize and save builds for new sites</li>
</ul>
<p>Main Big Goals</p>
<ul>
<li>Enable confidence, a &#8220;sure thing&#8221; for both enterprise and individuals.</li>
<li>Hosting for small sites should be automatically ready to scale.</li>
</ul>
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-session-how-to-take-advantage-of-cloud-technologies/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-session-how-to-take-advantage-of-cloud-technologies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DrupalCon Session: Enabling Localization and Multilingual Capabilities of Drupal</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-session-localization-multilingual-drupal/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-session-localization-multilingual-drupal/#comments</comments>
		<pubDate>Sun, 02 May 2010 01:13:27 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=662</guid>
		<description><![CDATA[Parlez vous Internet? Ignore the rest of the world at your own risk. Two main methods of localizing a Drupal site were presented: manually translating your site, and using a service called ICanLocalize.com. The Manual Method Many different things to translate: Site name, slogan, custom menu items, menu items from views, categories and terms, content, [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-session-localization-multilingual-drupal/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-localization-multilingual-drupal%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-localization-multilingual-drupal%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="Parlez vous Internet? Ignore the rest of the world at your own risk. " rel="nofollow" >Parlez vous Internet? Ignore the rest of the world at  your own risk.</a></p>
<p>Two main methods of localizing a Drupal site were presented: manually translating your site, and using a service called ICanLocalize.com.</p>
<h2>The Manual Method</h2>
<p>Many different things to translate: Site name, slogan, custom menu items, menu items from views, categories and terms, content, &#8230;.</p>
<p>Three main categories of translatables</p>
<ol>
<li>User Interface</li>
<li>Strings created by admin (such as field names, cck names)</li>
<li>Content created by users</li>
</ol>
<p>Important modules</p>
<ul>
<li>Core Modules: Locale and Content Translation modules</li>
<li>Contributed modules: <a href="http://drupal.org/project/i18n" rel="nofollow" >Internationalization</a>, <a href="http://drupal.org/project/l10n_client" rel="nofollow" >Localization Client</a> which imports interface translations from <a href="http://localize.drupal.org" rel="nofollow" >localize.drupal.org</a>, <a href="http://drupal.org/project/l10n_update" rel="nofollow" >Localization Update</a> which eases translation of the rest of the interface</li>
</ul>
<p>First Steps</p>
<ul>
<li>Add languages to your site</li>
<li>Set language negotiation settings (&#8220;path prefix with language fallback&#8221; was recommended.)</li>
</ul>
<p>Menus</p>
<ul>
<li>Don&#8217;t print menus directly in them. Include them as blocks instead.</li>
<li>You have the choice of using a separate menu per theme, or translating each menu item individually.</li>
</ul>
<p>Content Types</p>
<ul>
<li>Enable multilingual, with translation.</li>
<li>Set current language as default.</li>
<li>Require a language.</li>
</ul>
<p>Enable the language switcher block</p>
<p>On all blocks, set a translation. Then translate the text of the blocks by using the translation interface.</p>
<p>Multilingual variables</p>
<ul>
<li>Override in settings.php</li>
<li>Examples: site name, slogan, frontpage, site footer</li>
<li>Edit settings.php, re-save the settings page in Drupal, then start translating</li>
</ul>
<p>Translating a node</p>
<ul>
<li>On node, go to the Translation tab</li>
<li>Creates a copy of the node, for the different language</li>
<li>Edit menu title here</li>
<li>Now, there are more links listed in the menu.</li>
<li>Go back to existing menu items and specify language.</li>
</ul>
<p>Views</p>
<ul>
<li>Add filter for node translation</li>
<li>Use the translation client for the menu title and page title.</li>
</ul>
<p>Forums options</p>
<ul>
<li>Separate set of terms (forums) for each language (this is generally preferred.)</li>
<li>Translate each term into each language</li>
</ul>
<h2><a href="http://www.icanlocalize.com/" rel="nofollow" >ICanLocalize.com</a></h2>
<p><a href="http://drupal.org/project/icanlocalize" rel="nofollow" >Drupal module to connect to icanlocalize</a></p>
<p>Provides human translators, quick turnaround, automated Drupal integration.</p>
<h2>Other notes</h2>
<p>Drupal sets the language header. Search engines normally detect this and are aware of the language the page is written in.
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-session-localization-multilingual-drupal/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-session-localization-multilingual-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DrupalCon Session: Planning &amp; Executing a Successful Drupal Implementation</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-session-planning-executing-a-successful-drupal-implementation/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-session-planning-executing-a-successful-drupal-implementation/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 21:30:53 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=590</guid>
		<description><![CDATA[The focus of Planning and Executing a Successful Drupal Implementation was primarily on &#8220;Hard Drupal Projects,&#8221; not so much on simpler projects. First steps, educate the client Explain terminology of the web and of Drupal. Explain how open source works. It&#8217;s not magic. It does take planning and work. Set expectations: timeline, client responsibilities, polishing, [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-session-planning-executing-a-successful-drupal-implementation/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-planning-executing-a-successful-drupal-implementation%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-session-planning-executing-a-successful-drupal-implementation%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>The focus of <a href="http://sf2010.drupal.org/conference/sessions/planning-and-executing-successful-drupal-implementation" rel="nofollow" title="Planning and Executing a Successful Drupal Implementation" >Planning  and Executing a Successful Drupal Implementation</a> was primarily on &#8220;Hard Drupal Projects,&#8221; not so much on simpler projects.</p>
<h2>First steps, educate the client</h2>
<ul>
<li>Explain terminology of the web and of Drupal.</li>
<li>Explain how open source works.</li>
<li>It&#8217;s not magic. It does take planning and work.</li>
<li>Set expectations: timeline, client responsibilities, polishing, deployment, content loading.</li>
</ul>
<p>Communicate effectively. Send regular status reports.</p>
<p>Drupal (and web technology in general) can be difficult.</p>
<h2>Planning</h2>
<p>Documentation</p>
<ul>
<li>Write more of a Starter Guide. Not so much of a full-blown documentation of every little bit of the site.</li>
<li>Creating a short screencast of how to manage the site can go a long way.</li>
</ul>
<p>Regular testing by stakeholders (typically, the client)</p>
<ul>
<li>Are details right?</li>
<li>Is this meeting their needs?</li>
<li>Does it look great?</li>
</ul>
<ul>
<li>Make them part of the team.</li>
<li>They must be accountable and work hard with you.</li>
</ul>
<h2>Executing</h2>
<p>Important: having the right team assembled is essential to executing a successful project</p>
<ul>
<li>Project Manager</li>
<li>Analyst (Solutions Architect) &#8212; Solidfies requirements, specs, might build out some content types.</li>
<li>Designer</li>
<li>Web Producer</li>
<li>Developers (plural!) &#8212; segmented logically</li>
</ul>
<p>Be a soccer team (each team member can play multiple positions) not a base ball team (each team member has clearly limited boundaries of work). &#8212; Be flexible.</p>
<p>Adopt &#8220;Agile&#8221; principles.</p>
<ul>
<li>Deliver in iterations. (Each iteration produces a functional deliverable)</li>
<li>Be firm on scope, flexible on features. (scope = amount of work, features = exactly which things get done)</li>
</ul>
<p>Intra-Team communication</p>
<ul>
<li>Use a task management tool.</li>
<li>Use some form of real time communication when needed.</li>
</ul>
<p>Insist on quality. Is the operation buggy? Is the code or assembly sloppy?</p>
<p>Soft skills such as communication style and working smoothly in a team are very important.</p>
<ul>
<li>Being multi-disciplined, cross-trained.</li>
<li>Understanding the larger Drupal ecosystem.</li>
</ul>
<h2>Defining Scope and Requirements</h2>
<p>Site Map</p>
<ul>
<li>Visual representation of pages and hierarchy.</li>
<li>First step only. This usually can not be complete when planning a complex project.</li>
</ul>
<p>Brainstorm and sketch</p>
<p>Move on to more detailed wireframes with annotations</p>
<ul>
<li>Be very detailed</li>
<li>A developer should be able to pick these up and run with the buildout.</li>
</ul>
<p>3rd Party Integration</p>
<ul>
<li>Have system diagrams (either obtain or create them)</li>
<li>Understand the larger system that you are integrating with. How does the organization use it, how does it affect the organization, and how does your development piece affect them?</li>
</ul>
<p>Document the specs of what is needed.  A wiki is a good option.  It doesn&#8217;t have to be formal.</p>
<p>Design Comps. Often this is the &#8220;ah ha!&#8221; moment for the client. &#8220;So <strong>that</strong> is what you&#8217;re talking about!&#8221;</p>
<p>Defining scope and requirements can be challenging, so use proven techniques.</p>
<h2>Common Challenges</h2>
<p>Replace bad habits that the client may have. Watch the client work.</p>
<p>Structure content properly. Some content structures are simple, some do need to be complex. Just make sure that the data structure is correct and meaningful. Also consider permissions when creating data structures.</p>
<p>Represent content relationships correctly. (example: noderelationships module)</p>
<p>Use taxonomy effectively. Controlled (pre-set categories) vs. free (tagging) vs. auto (calais, 3rd party services).</p>
<p>Present a clear admin interface. Write help text that is clear and <strong>concise</strong>.</p>
<p>Adjust the styles used in the wysiwyg to match those used in the site.  Also reduce the buttons that are in the wysiwyg tool bar to only what the client needs.</p>
<p>Allow editors to curate (this was for a specific use case.) &#8212; Meet the needs of editors and writers. Consider the needs of everyone who will be experiencing the site.</p>
<p>Provide for editorial workflow</p>
<ul>
<li>Custom sorts (controlled by editor)</li>
<li>Specific fields for different accurences. &#8220;home grid title&#8221; for the title of a story when displayed in a grid on the home page, for example.</li>
</ul>
<p>Differentiate between authors (offline person, possibly multiple authors for an article) and users (CMS logins, people who load the article onto the site.)</p>
<p>Improve search with Apache Solr</p>
<ul>
<li>Provides facets.</li>
<li>Allows site admin to bias certain nodes or content types.</li>
<li>Allows site admin to exclude certain nodes or content types.</li>
</ul>
<p>Pay attention to roles and permissions</p>
<ul>
<li>Test each role</li>
<li>Use as few roles as possible.</li>
<li>Start with scaled-back permissions. Add permissions as roles need them.</li>
</ul>
<p>Migrate content accurately</p>
<ul>
<li>Usually requires some custom scripts as well as some cleanup by hand.</li>
<li>Some tools are available to ease the import process (table wizard and migrate modules, feeds module, querypath).</li>
<li>Sometimes hand-entering is the best way.</li>
</ul>
<p>Estimating</p>
<ul>
<li>Ask lots of questions.</li>
<li>Dig in to client background and circumstance.</li>
<li>These are required to get a good perspective the work that will be involved.</li>
</ul>
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-session-planning-executing-a-successful-drupal-implementation/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-session-planning-executing-a-successful-drupal-implementation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DrupalCon SF: Implementing Drupal 7 Usability Improvements in Your Custom Modules</title>
		<link>http://www.bluetentmarketing.com/blog/drupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules/</link>
		<comments>http://www.bluetentmarketing.com/blog/drupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 06:44:03 +0000</pubDate>
		<dc:creator>david</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[drupalcon]]></category>

		<guid isPermaLink="false">http://www.bluetentmarketing.com/blog/?p=588</guid>
		<description><![CDATA[Session Notes: D7UX: How to integrate the core Drupal 7 usability improvements with your module There has been a big effort in Drupal 7 to improve usability. This talk discussed how to implement these features in your custom Drupal 7 modules. (Or on contrib modules you might be helping with.) New IA (Information Architecture) Shortcuts [...]]]></description>
			<content:encoded><![CDATA[<div align="right" style="float:right;padding:0px 0px 5px 5px;"><a name="fb_share" type="box_count" share_url="http://www.bluetentmarketing.com/blog/drupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules/"></a></div><div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.bluetentmarketing.com%2Fblog%2Fdrupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="padding-left: 30px;">Session Notes: <a href="http://sf2010.drupal.org/conference/sessions/d7ux-how-integrate-core-drupal-7-usability-improvements-your-module" rel="nofollow" >D7UX: How to integrate the core Drupal 7 usability  improvements with your module</a></p>
<p>There has been a big effort in Drupal 7 to improve usability. This talk discussed how to implement these features in your custom Drupal 7 modules. (Or on contrib modules you might be helping with.)</p>
<ul>
<li>New IA (Information Architecture)</li>
<li>Shortcuts bar</li>
<li>Overlay</li>
<li>Admin theme</li>
<li>Local actions</li>
<li>Modules page (Help | Permissions | Configures &#8212; for each module)</li>
</ul>
<p>The usability improvements that will be included in Drupal 7 are only part of what has been designed in the larger D7UX effort.  More will be implemented in Drupal 8.</p>
<p>Very rough coding notes:</p>
<h3>Contextual links</h3>
<p>in hook_menu() add:</p>
<p style="padding-left: 30px;">&#8216;context&#8217; =&gt; menu_context_page | menu_context_inline</p>
<p>Contextual links are helpful, supplemental. But they should not be relied upon exclusively. They should still be accessible in the regular admin menu system.</p>
<h3>Dashboard</h3>
<p>Any normal block is automatically available for use in the dashboard.</p>
<h3>Local Actions</h3>
<p>in hook_menu() add:</p>
<p style="padding-left: 30px;">&#8216;type&#8217; =&gt; menu_local_action</p>
<p>These are different from tabs. Tabs are things that you look at, see. Typically lists of things or current configurations.  Local Actions are something you *do* such as ADD content.</p>
<h3>Overlay (and admin)</h3>
<p>Why: because people often lose context when doing an admin task. With the overlay module, when you are through with your admin task, you are returned to where you were before you started.</p>
<p>You tell a link to open in the overlay by specifying that it is an &#8220;admin&#8221; link. Implement hook_admin_paths()</p>
<p style="padding-left: 30px;">signup_admin_paths() {<br />
$paths = array (<br />
&#8216;node/*/signup =&gt; TRUE<br />
)<br />
return $paths;<br />
}</p>
<p>To alter admin paths set by other modules, use hook_admin_paths_alter()</p>
<h3>Vertical Tabs</h3>
<p>In form definition</p>
<p>&#8216;#group&#8217; =&gt; &#8216;additional_settings&#8217;</p>
<h3>Additional Resources</h3>
<p><a href="http://drupal.org/ui-standards" rel="nofollow" >http://drupal.org/ui-standards</a>
<div class='kouguu_fb_like_button'><iframe src="http://www.facebook.com/plugins/like.php?href=http://www.bluetentmarketing.com/blog/drupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules/&#038;layout=standard&#038;show_faces=true&#038;width=450&#038;height=65&#038;action=like&#038;colorscheme=light&#038;" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:65px;"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bluetentmarketing.com/blog/drupalcon-sf-implementing-drupal-7-usability-improvements-in-your-custom-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
