<?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>Jeff Linwood &#187; Drupal Planet</title>
	<atom:link href="http://www.jefflinwood.com/category/Drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jefflinwood.com</link>
	<description></description>
	<lastBuildDate>Sun, 01 Apr 2012 21:37:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ubercart CRM for the iPad: My DrupalCon 2012 Twilio Developer Contest Entry</title>
		<link>http://www.jefflinwood.com/2012/03/ubercart-crm-for-the-ipad-my-drupalcon-2012-twilio-developer-contest-entry/</link>
		<comments>http://www.jefflinwood.com/2012/03/ubercart-crm-for-the-ipad-my-drupalcon-2012-twilio-developer-contest-entry/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 20:34:12 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=554</guid>
		<description><![CDATA[I won 2nd place (and a Kindle Fire) in the Twilio DrupalCon 2012 Developer Contest with an Ubercart customer support iPad app. The idea is that a e-commerce site customer support representative could use an iPad that not only handled customer support calls, but also showed the customer&#8217;s most recent order information as soon as they call. ...]]></description>
			<content:encoded><![CDATA[<p>I won 2nd place (and a Kindle Fire) in the Twilio <a href="http://denver2012.drupal.org/developer-contest">DrupalCon 2012 Developer Contest</a> with an Ubercart customer support iPad app. The idea is that a e-commerce site customer support representative could use an iPad that not only handled customer support calls, but also showed the customer&#8217;s most recent order information as soon as they call.</p>
<p>I&#8217;ve been to a couple of dev days/hackathons sponsored by <a href="http://www.twilio.com">Twilio</a>, but I&#8217;ve never had a chance to actually use Twilio in an app or project. Twilio is a voice-over-IP provider that lets you add voice capabilities to your web application or iOS mobile app. It also handles SMS sending and receiving, if you&#8217;re doing text messaging.</p>
<p><iframe src="http://www.youtube.com/embed/wCSMW-mo_xs" frameborder="0" width="560" height="315"></iframe></p>
<p><a href="http://www.youtube.com/watch?v=wCSMW-mo_xs">Twilio iPad Ubercart Drupal App</a></p>
<p>Twilio just came out with an iOS SDK, which I thought could be pretty interesting for their <a href="http://denver2012.drupal.org/developer-contest">DrupalCon Developer Contest</a> up in Denver. The first step I took was to research different ways to use Twilio in Drupal, and I ran across the voip modules &#8211; unfortunately, they were only released for Drupal 6 (beta 9), and when I tried out the Twilio integration, I ran into lots of little errors, and Twilio couldn&#8217;t connect to my Drupal 6 site. I need to go back and file some issues in the issue queue. I dropped the VOIP Drupal modules, and simply followed Twilio&#8217;s directions for integrating the iOS SDK with a standard PHP app, and then rolled that into a Drupal 6 module and dropped it on the server. This actually worked really well, and pretty quickly, I had a phone number I could call from my iPhone that would ring my iPad, and then my iPad could answer the call and I could have a nice, illuminating conversation with myself. Luckily no one walked in on me talking to myself and a few Apple devices. From what I understand, the Twilio SDK is coming to Android pretty soon, and I would imagine the Drupal integration would be exactly the same.</p>
<p>So I had a great little app thrown together for calling someone on an iPad through a telephone number, but that&#8217;s not the most exciting thing. Luckily Twilio had one of their developer evangelists stationed in a room at DrupalCon, so I picked his brain about what to add &#8211; he suggested CiviCRM, but I&#8217;d used that before and didn&#8217;t think I could get that integrated in 6 hours. I liked the idea, though, so I went with Ubercart, even though I&#8217;d never used it before. Ubercart was actually super easy to set up, so no real issues there. The only catch was trying to figure out how to integrate Ubercart with the iPad app &#8211; I ended up rolling my own integration with JSON, because I needed to search Ubercart orders by phone number, and I needed to pull the products that the order contained as well.</p>
<p>On the iPad side, I used the AFNetworking library, which makes asynchronous network calls extremely easy. I also created a user interface in the Apple&#8217;s XCode Interface Builder, which is more or less drag-and-drop for positioning UI elements.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2012/03/TwilioAppInterfaceBuilder.png"><img class="alignnone  wp-image-556" title="TwilioAppInterfaceBuilder" src="http://www.jefflinwood.com/wp-content/uploads/2012/03/TwilioAppInterfaceBuilder-1024x565.png" alt="" width="512" height="282" /></a></p>
<p>That actually took a decent amount of time, simply to get all of the UI elements into place that a customer service rep might need from someone&#8217;s order. I wrote some Objective-C to set the properties on each of those UI elements from the JSON returned by my Drupal/Ubercart integration module, and the app now could show order information!</p>
<p>I read the email saying I was selected as a finalist for the Developer Contest around 8am on Wednesday, and I would need to do a 10 minute demo at 5pm &#8211; that was great, but I was giving a presentation on PhoneGap and Drupal at DrupalCon at 1pm, so I couldn&#8217;t really worry about the Developer contest demo until after that :)</p>
<p>There were two other great entrants at the Developer Contest &#8211; <a href="http://vuzzbox.com/">VuzzBox</a> and <a href="http://drupal.org/sandbox/mcpuddin/1492988">Drupal SMS Server</a> &#8211; so that was cool to see that there was such a wide variety of things you could do with Twilio and Drupal.</p>
<p>I came in second place, which I&#8217;m really happy with &#8211; I basically entered the contest so I would have something to keep me from going nuts worrying about my PhoneGap presentation before DrupalCon started! Now my plans are to figure out if there is an actual need or desire for this app with some of the e-commerce/shopping cart packages out there &#8211; if this sounds interesting to you, let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2012/03/ubercart-crm-for-the-ipad-my-drupalcon-2012-twilio-developer-contest-entry/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Drupal 7 Map App Example Project for iPhone and iPad</title>
		<link>http://www.jefflinwood.com/2012/03/drupal-7-map-app-example-project-for-iphone-and-ipad/</link>
		<comments>http://www.jefflinwood.com/2012/03/drupal-7-map-app-example-project-for-iphone-and-ipad/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 17:25:08 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=533</guid>
		<description><![CDATA[GitHub Project URL - https://github.com/jefflinwood/Drupal-Map-App-for-iPhone-and-iPad I like writing native iPhone and iPad apps with Objective-C. What I don&#8217;t like doing is writing the same code over and over again &#8211; it would be great to have a starting point that I can use again and again. I find myself reusing classes, open source libraries, and design ...]]></description>
			<content:encoded><![CDATA[<h1></h1>
<p>GitHub Project URL - <a href="https://github.com/jefflinwood/Drupal-Map-App-for-iPhone-and-iPad">https://github.com/jefflinwood/Drupal-Map-App-for-iPhone-and-iPad</a></p>
<p>I like writing native iPhone and iPad apps with Objective-C. What I don&#8217;t like doing is writing the same code over and over again &#8211; it would be great to have a starting point that I can use again and again. I find myself reusing classes, open source libraries, and design patterns from previous apps when I build new ones.</p>
<p>What I&#8217;d like to do is share a starting point for creating iOS applications for Drupal sites running Services 3. Because Drupal can do many different things, this isn&#8217;t going to be a general-purpose Drupal client that you can just point to a Drupal server. Instead, it&#8217;s meant to be the first 20% of a mobile application project.</p>
<p>I&#8217;d like to get feedback from others about how they would use this, and what they would like to see in the project.</p>
<h2>Overview</h2>
<p>This project is an example iPhone/iPad application with a common code base that pulls location-based information about businesses from a Drupal 7 web site, displays it on a Google Map inside an iPhone or iPad app, and then lets you pick a business to display.</p>
<h2>Credit to Open Source iOS Libraries used in this App</h2>
<ul>
<li>AFNetworking - <a href="https://github.com/AFNetworking/AFNetworking">https://github.com/AFNetworking/AFNetworking</a> - this great HTTP networking library makes async HTTP REST calls very easy to do. Much credit given here for all of the heavy lifting</li>
<li>SVProgressHUD - <a href="https://github.com/samvermette/SVProgressHUD">https://github.com/samvermette/SVProgressHUD</a> - the activity indicator that Apple should have included with iOS &#8211; works great for showing progress while downloading networked data</li>
</ul>
<h2>Drupal 7 Setup</h2>
<p>I&#8217;d like to bundle all of the Drupal 7 functionality together into a Drupal &#8220;app&#8221; (different from a mobile app), or possibly just a feature. Basically, the modules you need are:</p>
<ul>
<li>Services 3</li>
<li>ctools</li>
<li>Geocoder</li>
<li>Geofield</li>
<li>Views</li>
<li>Services Views Address Field</li>
</ul>
<p>I added a REST endpoint with access to get nodes, and access to get views. I also created a content type called business with an image field, an address field, and a geofield. There&#8217;s a simple view that just returns all businesses, but I would like to improve that with proximity search. Unfortunately, the current proximity search solution for Geofield doesn&#8217;t seem to let me alter the origin point from the view&#8217;s arguments, so there is some work to be done there.</p>
<p>I used the Acquia Dev Desktop to build this Drupal 7 site locally, so I don&#8217;t have it up and running on a server just yet.</p>
<p>The URL for your Drupal site is in AppData.m &#8211; change the REST URL to match your site&#8217;s end point, and change the image URL to match your site&#8217;s image directory for large image thumbnails.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2012/03/DrupalMapApp2.png"><img class="alignnone size-medium wp-image-539" title="DrupalMapApp2" src="http://www.jefflinwood.com/wp-content/uploads/2012/03/DrupalMapApp2-154x300.png" alt="" width="154" height="300" /></a></p>
<h2>Thoughts/Questions/Improvements?</h2>
<p>Send them to <a href="mailto:jlinwood@gmail.com">jlinwood@gmail.com</a></p>
<p>Or get in touch with me through my web site <a href="http://www.jefflinwood.com/">http://www.jefflinwood.com/</a> or</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2012/03/drupal-7-map-app-example-project-for-iphone-and-ipad/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Drupal + PhoneGap Podcast with Jeff at Modules Unraveled</title>
		<link>http://www.jefflinwood.com/2012/01/drupal-phonegap-podcast-with-jeff-at-modules-unraveled/</link>
		<comments>http://www.jefflinwood.com/2012/01/drupal-phonegap-podcast-with-jeff-at-modules-unraveled/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 16:35:55 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[Phonegap]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=470</guid>
		<description><![CDATA[Check it out! I did a podcast with Brian Lewis of Modules Unraveled, and it&#8217;s live today on his web site: Drupal and PhoneGap podcast. I had a lot of fun recording the podcast, having never done one before. Also, I went ahead and did a screencast &#8211; most of it is setting up a ...]]></description>
			<content:encoded><![CDATA[<p>Check it out! I did a podcast with Brian Lewis of <a href="http://www.modulesunraveled.com/">Modules Unraveled</a>, and it&#8217;s live today on his web site: <a href="http://modulesunraveled.com/podcast/002-jeff-linwood-and-phonegap-modules-unraveled-podcast">Drupal and PhoneGap podcast</a>. I had a lot of fun recording the podcast, having never done one before.</p>
<p>Also, I went ahead and did a screencast &#8211; most of it is setting up a a basic PhoneGap app in XCode 4 for iOS, with a little dash of Drupal+jQuery Mobile towards the end. Check that out on YouTube &#8211; I&#8217;d never done a screencast either!</p>
<p><a href="http://www.youtube.com/watch?v=wA_XabJpFaQ"><img class="alignnone size-medium wp-image-471" title="Screencast of PhoneGap + Drupal" src="http://www.jefflinwood.com/wp-content/uploads/2012/01/PhoneGapYouTube-300x184.png" alt="" width="300" height="184" /></a></p>
<p><a href="http://www.youtube.com/watch?v=wA_XabJpFaQ">Jeff Linwood &#8211; PhoneGap for Drupal </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2012/01/drupal-phonegap-podcast-with-jeff-at-modules-unraveled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal 7 + Facebook Open Graph + Timeline = iPhone app</title>
		<link>http://www.jefflinwood.com/2011/12/drupal-7-facebook-open-graph-timeline-iphone-app/</link>
		<comments>http://www.jefflinwood.com/2011/12/drupal-7-facebook-open-graph-timeline-iphone-app/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 20:19:44 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[Facebook Development]]></category>
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=432</guid>
		<description><![CDATA[We&#8217;re steadily getting closer to a vision of the semantic web &#8211; and it&#8217;s being driven by Facebook through their Open Graph Protocol. Open Graph came out in 2010, and it initially supported a large set of different object types and properties (for instance, music, article, book) &#8211; very interesting, but there are certainly more ...]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re steadily getting closer to a vision of the semantic web &#8211; and it&#8217;s being driven by Facebook through their Open Graph Protocol. <a href="http://ogp.me/">Open Graph</a> came out in 2010, and it initially supported a large set of different object types and properties (for instance, music, article, book) &#8211; very interesting, but there are certainly more object types now!</p>
<p>In my case, I wanted to create an app for keeping track of highpoints, which are the highest point in each US state (for instance, Mount Whitney in California). Users can &#8220;summit&#8221; a highpoint, and then share that on their Facebook Timeline through an iPhone app I&#8217;m working on:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/12/Highpointer-GuadPeak.png"><img class="alignnone size-medium wp-image-434" title="Highpointer-GuadPeak" src="http://www.jefflinwood.com/wp-content/uploads/2011/12/Highpointer-GuadPeak-154x300.png" alt="" width="154" height="300" /></a></p>
<p>To support the Open Graph Protocol, you&#8217;ll need Drupal to provide meta tags for Facebook to parse. There are several modules in this space, but the momentum appears to be with the D7 module <a href="http://drupal.org/project/metatag">Metatag</a>. Metatag is great, but it does not support custom Open Graph types (in the November dev release, anyway), so I had to modify the Open Graph module to add my &#8220;highpointer:highpoint&#8221; Open Graph type, and it&#8217;s custom properties &#8211; state and height. I also had to add &#8220;fb:app_id&#8221; as a custom type, because I didn&#8217;t want to use the Drupal for Facebook module just yet for this project. The next step would be to make this more flexible.</p>
<p>You&#8217;ll need to create an app as a Facebook Developer, then configure its Open Graph type, action, and properties. Your iOS or Android app can make one call to the Facebook API to tell Facebook that your user has summited a highpoint, or read a book, or whatever your site does. Then, in their Facebook Timeline, your app&#8217;s Aggregation will show up:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/12/HighPointer-FBTimeline.png"><img class="alignnone size-full wp-image-435" title="HighPointer-FBTimeline" src="http://www.jefflinwood.com/wp-content/uploads/2011/12/HighPointer-FBTimeline.png" alt="" width="429" height="268" /></a></p>
<p>Right now, the Facebook iOS SDK Single Sign On does not work with the code samples they provide and the current version of the Facebook mobile app and iOS 5. The workaround is to either authenticate through Mobile Safari to the mobile version of Facebook&#8217;s web site, or put up a Facebook login dialog box in your app for the user to authorize your app. I went with the login dialog box:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/12/HighPointer-FBLogin.png"><img class="alignnone size-medium wp-image-433" title="HighPointer-FBLogin" src="http://www.jefflinwood.com/wp-content/uploads/2011/12/HighPointer-FBLogin-154x300.png" alt="" width="154" height="300" /></a></p>
<p>Toolbar icons and app background are from <a href="http://www.medialoot.com/">MediaLoot</a>, which is a great graphic design resource, and well worth the money.</p>
<p>Some of the third party iPhone libraries I relied on:</p>
<ul>
<li>Facebook iOS SDK (<a href="https://github.com/facebook/facebook-ios-sdk">https://github.com/facebook/facebook-ios-sdk</a>)</li>
<li>Drupal iOS SDK (<a href="https://github.com/workhabitinc/drupal-ios-sdk">https://github.com/workhabitinc/drupal-ios-sdk</a>)</li>
<li>SVProgressHUD &#8211; activity indicator (<a href="https://github.com/samvermette/SVProgressHUD">https://github.com/samvermette/SVProgressHUD</a>)</li>
<li>EGOCache &#8211; caching Drupal Views on device (<a href="https://github.com/enormego/EGOCache">https://github.com/enormego/EGOCache</a>)</li>
<li>AFNetworking &#8211; networked image downloading (<a href="https://github.com/AFNetworking/AFNetworking">https://github.com/AFNetworking/AFNetworking</a>)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/12/drupal-7-facebook-open-graph-timeline-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Mobile Apps with Drupal &#8211; Drupal Camp Austin</title>
		<link>http://www.jefflinwood.com/2011/11/building-mobile-apps-with-drupal-drupal-camp-austin/</link>
		<comments>http://www.jefflinwood.com/2011/11/building-mobile-apps-with-drupal-drupal-camp-austin/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 16:54:35 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=383</guid>
		<description><![CDATA[I spoke at Drupal Camp Austin about developing mobile apps on top of Drupal. Most of the talk was about PhoneGap, but I also covered configuring the Services module to set up Drupal to serve content to mobile apps. I&#8217;d love to hear your thoughts on Drupal as a back-end for mobile apps, and using ...]]></description>
			<content:encoded><![CDATA[<p>I spoke at Drupal Camp Austin about developing mobile apps on top of Drupal. Most of the talk was about PhoneGap, but I also covered configuring the Services module to set up Drupal to serve content to mobile apps.</p>
<p>I&#8217;d love to hear your thoughts on Drupal as a back-end for mobile apps, and using PhoneGap with HTML5, CSS, and JavaScript to build mobile apps for Drupal.</p>
<p>The talk was recorded on video, and after it gets posted, I&#8217;ll put it up on this blog as well!</p>
<p><script src="http://speakerdeck.com/embed/4ec92e6b7aba81005400a5ad.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/11/building-mobile-apps-with-drupal-drupal-camp-austin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easier Drupal Plugin for PhoneGap iOS Installation</title>
		<link>http://www.jefflinwood.com/2011/10/easier-drupal-plugin-for-phonegap-ios-installation/</link>
		<comments>http://www.jefflinwood.com/2011/10/easier-drupal-plugin-for-phonegap-ios-installation/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 14:36:57 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[Phonegap]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=331</guid>
		<description><![CDATA[There&#8217;s been a lot of buzz about PhoneGap this month &#8211; the project just released version 1.1.0, the open source project is moving to Apache, and the parent company, Nitobi, was acquired by Adobe. PhoneGap provides an easy way to make web pages into native mobile apps by wrapping HTML, CSS, and Javascript with an iPhone, ...]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a lot of buzz about <a href="http://www.phonegap.com/">PhoneGap</a> this month &#8211; the project just released version 1.1.0, the open source project is moving to Apache, and the parent company, Nitobi, was acquired by Adobe.</p>
<p>PhoneGap provides an easy way to make web pages into native mobile apps by wrapping HTML, CSS, and Javascript with an iPhone, Android, Windows Mobile, or Blackberry application. PhoneGap plugins provide services that web apps can&#8217;t get, such as interfacing with the phone&#8217;s camera.</p>
<p>For Drupal web sites, this means that if you add a mobile theme to your site, you can wrap your site with PhoneGap and have a mobile app. There&#8217;s certainly more you can do with mobile and PhoneGap, but that&#8217;s the easiest thing to do.</p>
<p>It gets a little trickier if you want to build an actual mobile application that isn&#8217;t just your Drupal site, re-skinned. You can certainly write JavaScript that talks to Drupal Services, but it&#8217;s pretty painful to write and debug. I wrote a <a href="https://github.com/jefflinwood/Drupal-Plugin-for-PhoneGap-for-iOS">PhoneGap plugin for Drupal for iOS</a> that makes this much easier.</p>
<p>I just finished testing out the plugin on PhoneGap 1.1.0, the latest release, and it works great. I think the biggest frustration will be PhoneGap&#8217;s new whitelist feature for only allowing access to certain domains through your app. You will specifically have to add any domains that you retrieve content, images, JavaScript, or CSS from. For instance, code.jquery.com if you use an externally hosted jQuery.</p>
<p>I cleaned up the installation process for the Drupal Plugin by forking two open source projects that the Drupal Plugin for PhoneGap relies on: the <a href="https://github.com/workhabitinc/drupal-ios-sdk">Drupal IOS SDK</a>  and <a href="https://github.com/pokeb/asi-http-request">ASI HTTP Request</a> and making all of the changes that you previously needed to make yourself in my forks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/10/easier-drupal-plugin-for-phonegap-ios-installation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Announcing: PhoneGap iOS Plugin for Drupal v0.1</title>
		<link>http://www.jefflinwood.com/2011/07/announcing-phonegap-ios-plugin-for-drupal-v0-1/</link>
		<comments>http://www.jefflinwood.com/2011/07/announcing-phonegap-ios-plugin-for-drupal-v0-1/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 15:59:58 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[iPhone Development]]></category>
		<category><![CDATA[Phonegap]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=264</guid>
		<description><![CDATA[PhoneGap iOS Plugin for Drupal v0.1 &#8211; Proof of Concept &#8211; https://github.com/jefflinwood/Drupal-Plugin-for-PhoneGap-for-iOS While working on the Building an app with jQuery Mobile, Phonegap, and Drupal 7 series of blog posts, I found myself writing JavaScript to access the Drupal Services API, using jQuery&#8217;s $.post and $.get. This quickly became unwieldy, so I felt like I ...]]></description>
			<content:encoded><![CDATA[<p>PhoneGap iOS Plugin for Drupal v0.1 &#8211; Proof of Concept &#8211; <a href="https://github.com/jefflinwood/Drupal-Plugin-for-PhoneGap-for-iOS">https://github.com/jefflinwood/Drupal-Plugin-for-PhoneGap-for-iOS</a></p>
<p>While working on the <a href="http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7/">Building an app with jQuery Mobile, Phonegap, and Drupal 7</a> series of blog posts, I found myself writing JavaScript to access the Drupal Services API, using jQuery&#8217;s $.post and $.get. </p>
<p>This quickly became unwieldy, so I felt like I either had to create a JavaScript library for interacting with Drupal that I could leverage in the future, or to follow the lead of the PhoneGap team and create a Drupal plugin in Objective-C that exposed Drupal Services with an easy-to-use JavaScript API. Because Kyle Browning&#8217;s <a href="https://github.com/workhabitinc/drupal-ios-sdk">Drupal iOS SDK</a> already has code for interacting with the Drupal Services API, I decided to create a PhoneGap plugin.</p>
<p>Creating a PhoneGap plugin for iOS was a little trickier than I thought, mostly because the plugin documentation isn&#8217;t up to date, and PhoneGap is changing quick! I extended the PGPlugin class and used PluginResult to return NSDictionary objects from the Drupal iOS SDK to JavaScript.</p>
<p>Also, getting a PhoneGap project running with the Drupal Plugin will be a pain with version 0.1! This is mostly because PhoneGap bundles libraries into its framework that the Drupal iOS SDK needs. I&#8217;d like to make this as painless as possible to use, so that it&#8217;s easy to get started.</p>
<p>I&#8217;m also only exposing four methods in the 0.1 version of the plugin &#8211; node.get, user.login, user.logout, and system.connect. I&#8217;m planning on adding all of the methods that the Drupal iOS SDK exposes.</p>
<p>Here&#8217;s some sample code for PhoneGap that interfaces with the Drupal plugin API:</p>
<pre>
window.plugins.drupal.login(username, password,
  successCallback,failureCallback)
window.plugins.drupal.nodeGet(1,successCallback,failureCallback);
</pre>
<p>I&#8217;d like to get some feedback on this project from anyone who&#8217;s using PhoneGap now with Drupal to see if this solves a lot of the problems with writing a lot of JavaScript to interface with Drupal. There are also some memory management issues with camera uploads in particular that I&#8217;d like to make sure aren&#8217;t as big a problem with the Drupal plugin.</p>
<p>Next Steps for this project:<br />
=================<br />
* Finish the node methods from the Drupal iOS SDK<br />
* Add the file methods from the Drupal iOS SDK<br />
* Add the view methods from the Drupal iOS SDK<br />
* Reduce the number of steps needed to add the Drupal Plugin to a PhoneGap application<br />
* Figure out a testing strategy<br />
* Document the JavaScript API<br />
* Create a sample application<br />
* Build an Android version<br />
* Update/test plugin with PhoneGap 1.0</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/07/announcing-phonegap-ios-plugin-for-drupal-v0-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building a jQuery Mobile HTML5 App with PhoneGap for Drupal 7, Part 2</title>
		<link>http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7-part-2/</link>
		<comments>http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7-part-2/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 13:36:30 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[Phonegap]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=247</guid>
		<description><![CDATA[In this post, we&#8217;re going to add functionality to take a picture to our jQuery Mobile app using the PhoneGap Media Capture API. We&#8217;ll add a button with jQuery Mobile that brings up the mobile phone&#8217;s camera. With jQuery Mobile, to make buttons, we can use the &#60;a href&#62; tag with a data-role=&#8221;button&#8221; attribute. If ...]]></description>
			<content:encoded><![CDATA[<p>In this post, we&#8217;re going to add functionality to take a picture to our jQuery Mobile app using the PhoneGap Media Capture API. We&#8217;ll add a button with jQuery Mobile that brings up the mobile phone&#8217;s camera.</p>
<p>With jQuery Mobile, to make buttons, we can use the &lt;a href&gt; tag with a data-role=&#8221;button&#8221; attribute. If you&#8217;re submitting a form, use the &lt;button&gt; tag instead &#8211; jQuery Mobile will format both of those the same way.  We&#8217;ll go ahead and add a button that doesn&#8217;t do anything yet &#8211; replace the contents of the &lt;div data-role=&#8221;content&#8221;&gt; tag with this:</p>
<pre>&lt;div data-role="content"&gt;             
  Welcome to the jQuery Mobile Demo App for Drupal!             
  &lt;p/&gt;             
  &lt;a id="takePhotoButton" data-role="button"&gt;Take Photo&lt;/a&gt;         
&lt;/div&gt;</pre>
<p>Run it in the iPhone Simulator, and it looks pretty good for us not having to do too much!</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap10.png"><img class="alignnone size-full wp-image-248" title="XCode4PhoneGap10" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap10.png" alt="" width="368" height="716" /></a></p>
<p>We&#8217;ll take advantage of jQuery&#8217;s bind method and PhoneGap&#8217;s deviceready event for our button functionality.</p>
<p>One gotcha you will probably run into is that you&#8217;re used to binding to the click event with jQuery on desktop browsers. With jQuery Mobile, we need to bind to the tap event for our button instead.</p>
<p>We&#8217;re using the <a href="http://docs.phonegap.com/phonegap_media_capture_capture.md.html">PhoneGap Media Capture API</a> with the camera &#8211; only one line of Javascript needed to bring up the camera on the phone.</p>
<pre>navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 1});</pre>
<p>You&#8217;ll need to provide functions to handle success and errors, along with PhoneGap&#8217;s <a href="http://docs.phonegap.com/phonegap_media_capture_capture.md.html#CaptureImageOptions">CaptureImageOptions</a>. In our case, we&#8217;re limiting the number of photos the user can take to one at a time.</p>
<p>Here&#8217;s the JavaScript we need to add to our index.html</p>
<pre>&lt;script&gt;
        function captureSuccess(mediaFiles) {
            navigator.notification.alert('Success taking picture:');
        }
        function captureError(mediaFiles) {
            navigator.notification.alert('Error taking picture: ' + error.code);
        }
        $(document).bind("deviceready",function () {
            $("#takePhotoButton").bind("tap", function() {
                navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 1});
            });
        });
&lt;/script&gt;</pre>
<p>You won&#8217;t be able to see this run in the iPhone Simulator, because the iPhone Simulator doesn&#8217;t have a camera &#8211; instead, you&#8217;ll need to run it on an actual iPhone (or iPod Touch or iPad with a camera).</p>
<p>In my next post, we&#8217;ll cover how to upload images to Drupal 7 using Services 3.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7-part-2/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Building a jQuery Mobile HTML5 App with PhoneGap for Drupal 7, Part 1</title>
		<link>http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7/</link>
		<comments>http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 13:56:10 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[Phonegap]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=221</guid>
		<description><![CDATA[In this series of posts, I&#8217;m going to discuss how to build a jQuery Mobile HTML5 App that talks to Drupal 7 using AJAX, REST and JSON. I&#8217;m going to use the PhoneGap project to create an iPhone application out of the jQuery Mobile app that you can install onto your iPhone. Using PhoneGap, you ...]]></description>
			<content:encoded><![CDATA[<p>In this series of posts, I&#8217;m going to discuss how to build a jQuery Mobile HTML5 App that talks to Drupal 7 using AJAX, REST and JSON. I&#8217;m going to use the <a href="http://www.phonegap.com/">PhoneGap</a> project to create an iPhone application out of the jQuery Mobile app that you can install onto your iPhone. Using PhoneGap, you can also create apps for Android, WebOS, Android, Blackberry, and Symbian.</p>
<p>This first post in the series will get you up and running with jQuery Mobile and PhoneGap on iOS with XCode 4. We&#8217;ll get to Drupal a little bit further down the road, so if you just want to do some apps that don&#8217;t connect to a server, this post should be useful.</p>
<p>I&#8217;m going to use Drupal 7 as the server for the app. Drupal 7 has a lot of functionality built in, but not web services, so you will need to install the Services 3 module.</p>
<p>To build the client application, first download and install the latest version of PhoneGap, following the directions for getting started here:</p>
<p>http://www.phonegap.com/start#ios-x4</p>
<p>For this post, I&#8217;m using XCode 4 as the IDE for iOS, so I linked to the specific directions for that platform. I&#8217;m also going to target iOS 4.x and above, using the PhoneGap Media Capture API to access the camera.</p>
<p>After running the PhoneGap installer, open XCode 4 and start a new project. You should see the PhoneGap template as one of your options:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap1.png"><img class="alignnone size-full wp-image-225" title="XCode4PhoneGap1" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap1.png" alt="" width="728" height="491" /></a></p>
<p>Click Next on the Choose your template dialog</p>
<p>I&#8217;m going to use DrupalApp as my Product Name, and com.jefflinwood as my company identifier.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap2.png"><img class="alignnone size-full wp-image-226" title="XCode4PhoneGap2" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap2.png" alt="" width="728" height="491" /></a></p>
<p>Click Next.</p>
<p>Now put your new project into a folder of your choice (for instance, under your home directory&#8217;s Documents), and let XCode 4 create a local git repository if it offers to.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap2a.png"><img class="alignnone size-full wp-image-229" title="XCode4PhoneGap2a" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap2a.png" alt="" width="537" height="378" /></a></p>
<p>Click Create</p>
<p>XCode 4 will do some processing, and then you should see your new DrupalApp project in Xcode.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap3.png"><img class="alignleft size-large wp-image-227" title="XCode4PhoneGap3" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap3-1024x793.png" alt="" width="640" height="495" /></a></p>
<p>Hit the Play button in the upper left hand corner of XCode to run your project in the iPhone Simulator. PhoneGap will load, but it won&#8217;t have any content to display. The first time you run your project, PhoneGap will actually create a www folder you can drag into XCode to get started. Here&#8217;s what the iPhone Simulator will look like:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap4.png"><img class="alignnone size-full wp-image-231" title="XCode4PhoneGap4" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap4.png" alt="" width="368" height="716" /></a></p>
<p>Now that we have our XCode project set up, and we&#8217;ve run our project, we need to add the www folder to our project. With the current version of PhoneGap, this needs to be done manually &#8211; the template isn&#8217;t set up to import the www folder into the XCode project. Luckily, this is pretty easy.</p>
<p>Open up the DrupalApp project folder in Finder. It should look like this:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap5.png"><img class="alignnone size-medium wp-image-232" title="XCode4PhoneGap5" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap5-300x149.png" alt="" width="300" height="149" /></a></p>
<p>Drag the www folder onto your XCode DrupalApp Project, right between DrupalApp and PhoneGap.framework. This is so XCode will bundle the contents of the www folder with your app when it packages the app to run on the iPhone Simulator or on an iPhone, iPod Touch, or iPad.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap6.png"><img class="alignnone size-full wp-image-233" title="XCode4PhoneGap6" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap6.png" alt="" width="231" height="272" /></a></p>
<p>Xcode will prompt you to create folder references for any added folders &#8211; choose this option if the Create groups option is selected.</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap7.png"><img class="alignnone size-full wp-image-234" title="XCode4PhoneGap7" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap7.png" alt="" width="728" height="491" /></a></p>
<p>Click Finish.</p>
<p>Now run the project again, (stopping the currently running DrupalApp if it is still running) and PhoneGap should let you know it&#8217;s working:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap8.png"><img class="alignnone size-full wp-image-235" title="XCode4PhoneGap8" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap8.png" alt="" width="368" height="716" /></a></p>
<p>The next step is to download and add jQuery Mobile (from http://jquerymobile.com/download/) to your XCode project. We will bundle the CSS, Javascript, and images into our app to minimize download times.</p>
<p>In the finder, create a new folder under the www folder named css, and copy the jquery.mobile-1.0b1.min.css file into the css folder. Create another folder under the www folder named javascripts, and copy the jquery.mobile-1.0b1.min.js file into the javascripts folder. You&#8217;ll also need to download jQuery 1.6.2 from http://code.jquery.com/jquery-1.6.2.min.js into your javascripts folder.</p>
<p>Now open the index.html in your www folder so we can add the CSS file and the two Javascript files.</p>
<p>In the index.html  element, add</p>
<pre>&lt;link rel="stylesheet" href="css/jquery.mobile-1.0b1.min.css"/&gt;</pre>
<p>and</p>
<pre>&lt;script type="text/javascript" charset="utf-8" src="javascripts/jquery-1.6.2.min.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript" charset="utf-8" src="javascripts/jquery.mobile-1.0b1.min.js"&gt;&lt;/script&gt;</pre>
<p>Now that we have jQuery Mobile added to our project, go ahead and run the project &#8211; you shouldn&#8217;t see any difference in the output from the iPhone Simulator. This is because jQuery Mobile expects your content to be in &lt;div&gt; tags that correspond to individual pages in your mobile application. This is a little different from what you might be used to, where each page in a web application is a separate HTML file. To minimize download time, and to enable transition effects between pages, it&#8217;s best to set up as many of your pages in one HTML file as possible. You can link to other HTML files, of course, but you may lose your transitions between the two &#8211; and mobile users strart to expect to see those transitions.</p>
<p>I mentioned that jQuery Mobile wants its content structured into &lt;div&gt; tags instead of individual HTML pages. With those &lt;div&gt; tags, you&#8217;ll need to tell jQuery Mobile how your content is structured with the new HTML5 data-* attributes. For instance, &lt;div data-role=&#8221;page&#8221;&gt;&#8230;&lt;/div&gt; wraps a mobile page, while &lt;div data-role=&#8221;header&#8221;&gt;&#8230;&lt;/div&gt; is the header and &lt;div data-role=&#8221;content&#8221;&gt;&#8230;&lt;/div&gt; is the content of the page.</p>
<p>We&#8217;re going to replace the contents of the &lt;body&gt; tag of our index.html with some content structured for jQuery Mobile:</p>
<pre>&lt;body&gt;  	  
  &lt;div data-role="page" id="home"&gt;         
    &lt;div data-role="header"&gt;             
      &lt;h1&gt;Home&lt;/h1&gt;                       
    &lt;/div&gt;         
    &lt;div data-role="content"&gt;
      Welcome to the jQuery Mobile Demo App for Drupal!         
    &lt;/div&gt;     
  &lt;/div&gt; 
&lt;/body&gt;</pre>
<p>Run the app in the iPhone Simulator:</p>
<p><a href="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap9.png"><img class="alignnone size-full wp-image-239" title="XCode4PhoneGap9" src="http://www.jefflinwood.com/wp-content/uploads/2011/07/XCode4PhoneGap9.png" alt="" width="368" height="716" /></a></p>
<p>In the next post, I&#8217;m going to show you how to use PhoneGap&#8217;s cross-platform features to take photos with your smartphone&#8217;s camera.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/07/building-a-jquery-mobile-html5-app-with-phonegap-for-drupal-7/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Building a simple iPad Application with Drupal 7, Part 1</title>
		<link>http://www.jefflinwood.com/2011/07/building-a-simple-ipad-application-with-drupal-7-part-1/</link>
		<comments>http://www.jefflinwood.com/2011/07/building-a-simple-ipad-application-with-drupal-7-part-1/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 21:42:11 +0000</pubDate>
		<dc:creator>Jeff Linwood</dc:creator>
				<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://www.jefflinwood.com/?p=197</guid>
		<description><![CDATA[At DrupalCamp Colorado 2011, I created a birds-of-a-feather session on &#8220;Going Mobile with Drupal&#8221;. There were quite a few of us there, with all kinds of experience &#8211; we talked about using jQuery Mobile with Drupal and about connecting iPhone apps to Drupal using the Services module, REST, and either JSON or plist XML. Lots ...]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://2011.drupalcampcolorado.org/">DrupalCamp Colorado 2011</a>, I created a birds-of-a-feather session on <a href="http://2011.drupalcampcolorado.org/content/going-mobile-drupal">&#8220;Going Mobile with Drupal&#8221;</a>. There were quite a few of us there, with all kinds of experience &#8211; we talked about using jQuery Mobile with Drupal and about connecting iPhone apps to Drupal using the Services module, REST, and either JSON or plist XML. Lots of interest in building RESTful web services with Drupal to support mobile apps.</p>
<p>Drupal 7 makes an ideal back-end for mobile apps, because it already has everything you need for content authoring and permissions built-in. There isn&#8217;t any reason to write a lot of server-side code to add a forum or groups or blogs to your mobile app. Another advantage is the large Drupal ecosystem of consultancies, developers, books, training, and conferences that you can turn to for help.</p>
<div id="attachment_200" class="wp-caption alignleft" style="width: 604px"><a href="http://www.jefflinwood.com/wp-content/uploads/2011/06/TabletPuppyIpadApp.png"><img class="size-full wp-image-200" title="Tablet Puppy Ipad App" src="http://www.jefflinwood.com/wp-content/uploads/2011/06/TabletPuppyIpadApp.png" alt="" width="594" height="488" /></a><p class="wp-caption-text">Tablet Puppy Ipad App</p></div>
<p>The night before the birds-of-a-feather, I built an iPad app to show the <a href="https://github.com/workhabitinc/drupal-ios-sdk">Drupal IOS SDK</a> in use with an almost out-of-the-box Drupal 7 site. Here&#8217;s the github repo for my <a href="https://github.com/jefflinwood/iPad-Drupal-App-Demo">iPad demo app for Drupal</a> &#8211; I&#8217;m not going to submit it to the App Store :)</p>
<h1>Configuring Drupal to be the back end for Mobile</h1>
<p>Right out of the box, Drupal 7 isn&#8217;t going to work as a back-end for mobile apps. You will need to install Services 3 to make it possible for Drupal to act as a REST server for its content. You&#8217;ll also need to set up an endpoint URL for your REST service, and tell Drupal which resources to expose at that endpoint. This is all much easier in Drupal 7/Services 3 than it was in Drupal 6/Services 2 &#8211; if you are using Drupal 6, see my article on <a href="http://www.jefflinwood.com/2010/08/using-drupals-views-as-a-json-web-service-with-the-rest-server/">Using Drupal 6 with the REST Server</a>.</p>
<h2>Drupal Services Modules for REST Server</h2>
<p>The first step is to install the modules you&#8217;ll need for Services 3:</p>
<p><strong><a href="http://drupal.org/project/services">Services 7.x-3.0-rc3</a></strong> &#8211; requires the ctools 7.x module</p>
<p>To make Services work with the Drupal iOS SDK for iPhone app development, you&#8217;ll also need:</p>
<p><strong><a href="http://drupal.org/project/rest_server_plist">Rest Server PLIST 7.x-1.0</a></strong> &#8211; enable rest_server and rest_server_plist</p>
<p>If you&#8217;re also planning to retrieve views from your mobile app (and that&#8217;s most of the power here) you&#8217;ll need to install the Views module and the Services_views module. Services_views exposes Views as a resource to Services</p>
<p><strong><a href="http://drupal.org/project/views">Views 7.x-3.0-beta3</a></strong> &#8211; enable Views and Views UI</p>
<p><strong><a href="http://drupal.org/project/services_views">Services_views 7.x-1.x-dev</a></strong> &#8211; enable Services_views</p>
<p>To keep this focused, I&#8217;m not including directions on how to install modules here &#8211; read the <a href="http://drupal.org/documentation/install/modules-themes/modules-7">Drupal.org handbook on installing modules</a>.</p>
<p>In the next post, I&#8217;ll cover how to configure Services so you can use Drupal as the server side of a mobile solution!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jefflinwood.com/2011/07/building-a-simple-ipad-application-with-drupal-7-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

