DrupalCon Chicago https://www.zengenuity.com/ en Creating an iPhone App for a Drupal Website https://www.zengenuity.com/blog/2011-05/creating-iphone-app-drupal-website <span class="field field--name-title field--type-string field--label-hidden">Creating an iPhone App for a Drupal Website</span> <div class="paragraph html"> <div class="container"> <p><img src="https://www.zengenuity.com/sites/default/files/migrated/LA2M-iphone-app-1_0_0.png" alt="iPhone App for Drupal" title="iPhone App for Drupal" width="150" height="299" />Recently, Zengenuity released the <a href="https://zengenuity.com/portfolio/iphone-app-drupal-website">LA2M to Go iPhone app</a>, a companion to the <a href="https://zengenuity.com/portfolio/non-profit-marketing-group-website">Lunch Ann Arbor Marketing website</a>. The LA2M website is one we built on Drupal 6, and it uses custom content types, <a href="https://drupal.org/project/views">Views</a> and <a href="https://drupal.org/project/imagecache">Imagecache</a> for displaying upcoming and archived event information for the group. In creating our app, I wanted to build a system to synchronize the mobile device with the website, since event information changes on at least a weekly basis. It took a lot of research and testing various techniques (many of which of which didn’t end up working), but finally I worked out how to have the app to pull all its information automatically from the <a href="https://drupal.org">Drupal</a> site. I hope that by publishing this blog post, I can speed up this process for you, and save you some frustration. There isn’t room here to go into every detail, but I’ll discuss the major frameworks I used, and I’ll point out some important issues that wasted a lot of my time.</p> <h2>The Titanium Mobile Framework</h2> <p><img src="https://www.zengenuity.com/sites/default/files/migrated/titanium.png" alt="Titanium SDK" title="Titanium SDK" width="295" height="200" />LA2M to Go is built with the <a href="https://www.appcelerator.com/products/titanium-mobile-application-development/">Titanium Mobile Framework</a> by <a href="https://www.appcelerator.com/">Appcelerator</a>. The Titanium SDK is free, and it allows you to write native iPhone apps in web developer friendly Javascript, instead of Objective-C. It also allows you to compile the same source code as a native Android app, though this is something I haven’t tried yet. To get started with Titanium, <a href="https://www.appcelerator.com/products/download/">download the SDK here</a>. This will provide you with the Titanium Developer application you need to compile your app. You will also need to have developer tools for the target mobile platform you plan to work with. So, if you are writing an iPhone app, you need to have an <a href="https://developer.apple.com/programs/register/">Apple iOS developer account</a>, and download XCode and the iOS SDK from Apple. Android developers will need to get the <a href="https://developer.android.com/sdk/index.html">Android SDK from Google</a>.</p> <p>When coding for Titanium, you have to use your own text editor or IDE, and then load your project into the Titanium Developer application. Titanium-based apps are compiled in a two-step process. First, your code is rewritten by Titanium Developer as native iPhone or Android source code. Then, command line tools provided by the iPhone and Android SDKs are used to compile the native code and install it into the simulator or directly onto your mobile device. </p> <p><strong>One word of warning: This process absolutely sucks.</strong> It’s the worst compilation and debugging system I’ve ever experienced. When working with Titanium, be prepared to write a lot of output log statements, because that’s how you’ll be doing much of your debugging. Also, the Titanium platform is seriously lacking in documentation, and the docs that do exist are difficult to use and search. There are very few example code snippets in the <a href="https://developer.appcelerator.com/apidoc/mobile/latest">API docs</a>, which means you need to search the <a href="https://developer.appcelerator.com/questions/created">developer forums</a>. In the forums, code is often wrong or out-of-date, as there’s no way to know which version of the Titanium API it’s designed for. (The API has changed significantly from its initial release.) Appcelerator recently purchased <a href="https://aptana.com/">Aptana</a>, the makers of the excellent Aptana Studio IDE. So, I’m praying they ditch the Titanium Developer application for a more fully-featured IDE, with debugging tools and built-in documentation. This would help developers immensely. (<strong>Update (5/17/11):</strong> They have now done exactly this: <a href="https://developer.appcelerator.com/blog/2011/05/major-titanium-updates.html">https://developer.appcelerator.com/blog/2011/05/major-titanium-updates.html</a>)</p> <p>That said, I’ve written code in Objective-C with XCode before, and while XCode has both excellent debugging features and documentation, the speed at which you I create robust apps with Titanium, in a language that is more familiar to me as a web developer, means I’ll coming to back to it for my next app, despite its failings. </p> <h2>The DrupalCon Chicago App</h2> <p><img src="https://www.zengenuity.com/sites/default/files/migrated/drupalcon-chicago.jpeg" alt="DrupalCon Chicago App" title="DrupalCon Chicago App" width="175" height="175" />If you were at <a href="https://chicago2011.drupal.org/">DrupalCon Chicago</a>, you probably used the <a href="https://itunes.apple.com/us/app/drupalcon/id421074805?mt=8">conference app</a> that was available for iPhone and Android. That app was created in Titanium, by the folks at <a href="https://www.palantir.net/">Palantir</a>. Fortunately for all of us developing Drupal-connected apps, they have made <a href="https://github.com/palantirnet/drupalcon_mobile">the app’s source code available</a>, and <a href="https://www.palantir.net/blog/mobilizing-drupalcon-chicago">their blog post about it is very informative</a>.</p> <p>There isn’t a lot of technical documentation about how expand or change the app, but after spending some time with it, I was able to figure out the key details:</p> <h3>Schema Definitions</h3> <p>The app is designed to import Drupal nodes and store them in an SQLite database on the device. This way the app can be used offline. In the code, there is a schema definition designed for the DrupalCon event node type in the <span><strong>Resources/drupalcon/entity.js</strong></span> file. (You will also find a schema for Drupal.org users in there, too.) If you are building a new app from this source code, you need to modify their schema to match whatever fields your content types have. They have chosen to call their event schema “node”, but you can rename this to whatever you want, and add additional schemas for more types. If you are adding new schema types (or changing the name of them), you need to make entries for them in the <strong><span>Resources/drupal/entity.js</span></strong> file. There’s a section at the top that starts with </p> <p><strong><span>main: {<span> <br /></span>     ...</span></strong><br /><strong><span>     types {</span></strong><br /><strong><span>      <em>[a list of types and primary keys is here]</em></span></strong></p> <p>Add your new schema names to this list, following the pattern of the others in that section.</p> <p>One thing I found useful when modifying the schema were the two commented out lines in app.js that clear the DB on every app launch. </p> <p><strong><span>//Drupal.entity.db('main', 'node').initializeSchema();</span></strong><br /><strong><span>//Drupal.entity.db('main', 'user').initializeSchema();</span></strong></p> <p>These obviously need to be commented out in production, but are useful when changing the schema. (Adjust the parameters to fit your schema names.) Another helpful tool you will want to have is some sort of SQLite database browser. I ended up using the <a href="https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/">SQLite Manager Firefox extension</a>, though, I didn’t especially enjoy it. It works, but it’s kind of clunky. If you are building and iPhone app and working in the simulator, the SQLite database is difficult to find. Here’s where it’s at:</p> <p><span><strong>/Users/[your_username]/Library/Application Support/iPhone Simulator/[sdk_version]/Applications/[application_guid]/Library/Application Support/database/main.sql</strong></span></p> <p>Yeah...it’s really buried down there. One of those folders is hidden too, so you will not find that database file with Finder. You just have to know where it is.</p> <h2>Renderers</h2> <p>If you look in <strong><span>Resources/drupalcon/drupalcon.js</span></strong>, you will see a series of sections that start like this:</p> <p><strong><span>DrupalCon.renderers.session = function(session) {</span></strong></p> <p>These sections define “renderers” for different entities that you have in the SQLite database. They don’t do anything on their own. You have to call it yourself after you query the DB. But, when you look around in the app code, you’ll see that having a function that renders an SQLite database row as a TableViewRow is very handy. It’s sort of like defining a theme template for a particular node type. If you have added fields and types to the database schema, you will need to update the renderers to display your new fields.</p> <h2>Windows</h2> <p>In <strong><span>Resources/windows</span></strong> are a bunch of files that define the various screens of the app. I don’t have space in this post to go through them all, but if you look at each one, you’ll get an idea of what you need to do to make similar windows that match your project. Most of them are TableViews, which is often what you want. There’s also a MapDetailWindow that shows a static image, and other windows to render HTML content. Be sure to include any new window files you create in your <strong><span>Resources/app.js</span></strong> file. (There’s a section in it with all the includes in a list.) Also, you need to add your new windows to the app’s tab group. That can be done by following the pattern in <strong><span>Resources/main.js</span></strong>. </p> <h2>Connecting the App to Drupal</h2> <p>When I started this project, I expected to use the <a href="https://drupal.org/project/services">Services module </a>to access the Drupal data over JSON. My plan was to create a view for each content type that I needed to download and expose those views with the Views Service module. However, when trying this approach, I came across a big limitation of Views Service. This module only exposes the Views data that is directly returned by the query. It completely skips the normal rendering step of Views. This means if you want to include the URL for a specific Imagecache-processed version of an image, it can’t be done with Views Service. You also can’t rewrite the output of fields to combine two fields into one. Pretty much everything that is awesome about Views you can’t do with Views Service. </p> <p>Views Datasource to the rescue! The day after I hit this limitation, Palantir released their code for their DrupalCon app. In their post, you will see they reference the <a href="https://drupal.org/project/views_datasource">Views Datasource module</a> as an alternative to Services. Views Datasource allows you to expose Views as JSON, and it DOES send the output through the normal Views rendering engine. So, this means you can rewrite fields, get Imagecache urls, change field labels, and probably re-theme fields if you need to, though I didn’t try this last one. With this module, I was able to get exactly the JSON output I needed to download data into the app. I’m not going to go into a full detailed explanation, because actually, if you know how to use Views, it’s pretty straightforward. It works exactly like you expect it to.</p> <h2>Putting Everything Together</h2> <p><img src="https://www.zengenuity.com/sites/default/files/migrated/la2m-to-go-icon.jpeg" alt="LA2M to Go" title="LA2M to Go" width="175" height="175" />Once I had the JSON-formatted view on the Drupal site and the schemas defined in my application, everything else was just a matter of getting of the user experience and workflow that I wanted. (Ever app is different, so you’ll have to study the Titanium API and figure out what works for your project.) After only a couple weeks of development, I was able to go from conception to launching <a href="https://itunes.apple.com/us/app/la2m-to-go/id433060438?mt=8">LA2M to Go in the App Store</a>. While it was frustrating at times deciphering both the Titanium debug output and the DrupalCon app’s design, I’m really happy with the outcome. I’ll definitely use both of these technologies in future for Drupal-connected iPhone apps, and hopefully, this post will make it a little less frustrating for you to do the same.</p> <h2>Useful Resources</h2> <p><a href="https://developer.appcelerator.com/get_started">Getting Started with Titanium Mobile Platform</a></p> <p><a href="https://developer.appcelerator.com/blog/2010/05/how-to-create-a-tweetie-like-pull-to-refresh-table.html">How to Create a Pull-to-Refresh Table in Titanium</a> - Everyone loves this UI control.</p> <p><a href="https://github.com/workhabitinc/drupal-ios-sdk">Drupal-iOS SDK</a> - A separate project that connects an iPhone app to a Drupal site using only native code in XCode. Have not tried this one out. </p> </div> </div> <span>Wayne Eaker</span>May 10, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/android" hreflang="en">Android</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-planet" hreflang="en">Drupal Planet</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/iphone" hreflang="en">iPhone</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/mobile" hreflang="en">Mobile</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/services-module" hreflang="en">Services module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/titanium-mobile-framework" hreflang="en">Titanium mobile framework</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Tue, 10 May 2011 12:00:00 +0000 Wayne Eaker 143 at https://www.zengenuity.com The Week in Drupal: March 18, 2011 https://www.zengenuity.com/blog/2011-03/week-drupal-march-18-2011 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: March 18, 2011</span> <div class="paragraph html"> <div class="container"> <p>After taking a week off for <a href="https://chicago2011.drupal.org/">DrupalCon Chicago</a>, here'a s look back at interesting modules, articles and other <a href="https://drupal.org">Drupal</a> news of March 5 - March 18, 2011.</p> <p><a href="https://www.flickr.com/photos/danquah/5513641381/" title="danquah-20110308-4145 by Mads Danquah, on Flickr"><img src="https://farm6.static.flickr.com/5256/5513641381_862b12cbf4.jpg" alt="danquah-20110308-4145" width="500" height="333" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://www.lullabot.com/articles/martha-stewart-adds-dash-drupal">Martha Stewart Adds a Dash of Drupal</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><a href="https://cyrve.com/drush4"><strong>What's New in Drush 4</strong></a></p> <p><a href="https://www.palantir.net/blog/introducing-workbench-new-approach-managing-content-management"><strong>Introducing Workbench: A New Approach to Managing Content Management</strong></a></p> <p><strong><a href="https://www.computerminds.co.uk/articles/boosting-solr-search-results-query-time">Boosting Solr Search Results at Query Time</a></strong></p> <p><strong><a href="https://shvetsgroup.com/blog/optimizing-javascript-and-css-files-drupal">Optimizing Javascript and CSS Files in Drupal</a></strong></p> <p><strong><a href="https://friendlydrupal.com/screencasts/theming-individual-cck-fields-templates-and-preprocess-functions">Theming individual CCK fields with templates and preprocess functions</a></strong></p> <h2>Interesting New Modules and Themes</h2> <p><strong><a href="https://drupal.org/sandbox/epieddy/1094480">Views Items Per Page</a></strong> - Adds a selector for the number of rows to display in <a href="https://drupal.org/project/views">Views</a>.</p> <p><strong><a href="https://drupal.org/sandbox/paul.dambra/1097564">Webform Checkout</a></strong> - Link the <a href="https://drupal.org/project/webform">Webform</a> module to <a href="https://drupal.org/project/ubercart">Ubercart</a>.</p> <p><a href="https://drupal.org/sandbox/muriqui/1098290"><strong>Role Context</strong></a> - Give users a different role depending where in the site they are.</p> <p><strong><a href="https://drupal.org/project/jsloader">Javascript Loader</a></strong> - Use various libraries to load JS files asynchronously. </p> <p><strong><a href="https://drupal.org/sandbox/hunziker/1088266">UC PDF Invoice</a></strong> - Generate a PDF invoice for Ubercart orders.</p> <p><strong><a href="https://drupal.org/project/twitterminer">TwitterMiner</a></strong> - Query and store tweets. Output them with Views.</p> <p><strong><a href="https://drupal.org/sandbox/thsutton/1092908">Copyright Notice</a></strong> - Add a configurable copyright notice to your footer.</p> <p><a href="https://drupal.org/sandbox/smachaje/1098624"><strong>BlackBoard Single Sign-on</strong></a></p> <p><strong><a href="https://drupal.org/project/mobile_jquery">Mobile jQuery Theme</a></strong></p> </div> </div> <span>Wayne Eaker</span>March 18, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drush" hreflang="en">Drush</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/solr" hreflang="en">Solr</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/twitter" hreflang="en">Twitter</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/ubercart" hreflang="en">Ubercart</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/webform-module" hreflang="en">Webform module</a></span> </div> </div> Sat, 19 Mar 2011 02:00:04 +0000 Wayne Eaker 134 at https://www.zengenuity.com The Week in Drupal: March 4, 2011 https://www.zengenuity.com/blog/2011-03/week-drupal-march-4-2011 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: March 4, 2011</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other <a href="https://drupal.org">Drupal</a> news from February 25 - March 4, 2011. </p> <p><a href="https://www.flickr.com/photos/gaborhojtsy/279354242/" title="Drupal Themers by Gábor Hojtsy, on Flickr"><img src="https://farm1.static.flickr.com/121/279354242_e476733640.jpg" alt="Drupal Themers" width="500" height="375" /></a></p> <h2>Drupal News</h2> <p><a href="https://chicago2011.drupal.org/"><strong>3 Days to DrupalCon Chicago</strong></a> - See you there!</p> <p><strong><a href="https://civicactions.com/blog/2011/mar/03/voip_drupal_released">VOIP Drupal Released</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><strong><a href="https://public-action.org/content/stored-procedures-and-drupal-7">Stored Procedures and Drupal 7</a></strong></p> <h2>Interesting New Modules and Themes</h2> <p><strong><a href="https://drupal.org/sandbox/netsensei/1075748">Views Contextual Displays</a></strong> - Display different fields in <a href="https://drupal.org/project/views">Views</a> based on context.</p> <p><strong><a href="https://drupal.org/sandbox/bangpound/1074732">!&# Content</a></strong> - Pull content from Drupal into CiviCRM Dashlets.</p> <p><strong><a href="https://drupal.org/project/ifpreset">If Preset</a></strong> - Adds conditionals to <a href="https://drupal.org/project/imagecache">Imagecache</a> actions.</p> <p><strong><a href="https://drupal.org/project/wysiwyg_fields">WYSIWYG Fields</a></strong> - Add any CCK field to a WYSIWYG editor as in insert button. It's a generic form of <a href="https://drupal.org/project/wysiwyg_imagefield">WYSIWYG Imagefield</a></p> <p><strong><a href="https://drupal.org/sandbox/sepehr/1073796">Recently Viewed</a></strong> - Show a block with recently viewed nodes. Includes <a href="https://drupal.org/project/ubercart">Ubercart</a>-powered Recently Viewed Products.</p> <p><strong><a href="https://drupal.org/project/audioconverter">Audio Converter</a></strong> - Convert CCK audio fields to MP3 format automatically using FFMPEG.</p> <p><strong><a href="https://drupal.org/sandbox/rv0/1076396">WYSIWYG Button Order</a></strong> - Reorder buttons in editors enabled by the <a href="https://drupal.org/project/wysiwyg">WYSIWYG module</a>.</p> <p><strong><a href="https://drupal.org/sandbox/frakke/1079758">Computed Field Tools</a></strong> - Re-calculate <a href="https://drupal.org/project/computed_field">CCK Computed Field</a> fields in a batch.</p> <p><strong><a href="https://drupal.org/project/og_features">OG Features</a></strong> - Allows you disabled certain features of Organic Groups on a per-group basis. For example, disabling submitting certain content types.</p> <p><strong><a href="https://drupal.org/project/morecomments">More Comments</a></strong> - Replaces the normal comment pager with a More button that loads comments with AJAX.</p> <p><strong><a href="https://drupal.org/sandbox/noahlively/1077858">MuchoMenu</a></strong> - A "mega menus" implementation based on <a href="https://drupal.org/project/panels">Panels</a>.</p> <p><strong><a href="https://drupal.org/sandbox/mstenta/1080656">Ubercart Order Node</a></strong> - Link Ubercart orders to nodes so you can extend them with CCK.</p> <p><strong><a href="https://fusiondrupalthemes.com/story/110301/theming-drupal-commons-part-1-customizing-commons-theme">Fusion Commons</a></strong> - Fusion base theme for <a href="https://acquia.com/products-services/drupal-commons">Drupal Commons</a>.</p> </div> </div> <span>Wayne Eaker</span>March 4, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/cck-module" hreflang="en">CCK module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/civicrm" hreflang="en">CiviCRM</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/imagecache-module" hreflang="en">Imagecache module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/organic-groups-module" hreflang="en">Organic Groups module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/ubercart" hreflang="en">Ubercart</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/wysiwyg-module" hreflang="en">WYSIWYG module</a></span> </div> </div> Fri, 04 Mar 2011 10:30:00 +0000 Wayne Eaker 133 at https://www.zengenuity.com The Week in Drupal: February 25, 2011 https://www.zengenuity.com/blog/2011-02/week-drupal-february-25-2011 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: February 25, 2011</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other <a href="https://drupal.org">Drupal</a> news from February 18 - 25, 2011.</p> <p><a href="https://www.flickr.com/photos/pacmikey/3218801520/" title="Drop off an Icicle by pacmikey, on Flickr"><img src="https://farm4.static.flickr.com/3310/3218801520_571bfd2c3c.jpg" alt="Drop off an Icicle" width="500" height="419" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://chicago2011.drupal.org/">One Week to DrupalCon Chicago!</a></strong></p> <p><strong><a href="https://buytaert.net/sba-gov-using-drupal">SBA.gov Using Drupal</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><strong><a href="https://www.lullabot.com/podcasts/podcast-92-grammycom">Lullabot Podcast: Building GRAMMY.com</a></strong> -  Varnish, APC, Memcache, etc.</p> <p><strong><a href="https://www.commerceguys.com/resources/news/unveiling-drupal-commerce-beta">Unveiling the Drupal Commerce Beta</a></strong></p> <p><strong><a href="https://association.drupal.org/node/784">How the Drupal.org Home Page Map Works</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/panelizer">Panelizer</a></strong> - Attach <a href="https://drupal.org/project/panels">Panels</a> to nodes on an individual basis.</p> <p><strong><a href="https://drupal.org/project/context_rules">Context Rules</a></strong> - Integrate the <a href="https://drupal.org/project/context">Context</a> module with <a href="https://drupal.org/project/rules">Rules</a>.</p> <p><strong><a href="https://drupal.org/project/advimage">Advanced Gallery</a></strong> - Yet another image gallery system for Drupal. I like the idea behind this one, though. Nodereferences to nodes with <a href="https://drupal.org/project/imagefield">Imagefield</a> CCK fields.</p> <p><strong><a href="https://drupal.org/project/advagg">Advanced CSS/JS Aggregation</a></strong> - Adds several features beyond the default aggregation options.</p> <p><strong><a href="https://drupal.org/sandbox/cgv/1072652">Multiple Exposed Filter</a></strong> - Add new filters to a view dynamically.</p> <p><strong><a href="https://drupal.org/sandbox/HACGIS/1072434">Node Theme Switcher</a></strong> - Use a CCK field to switch your theme per node.</p> <p><strong><a href="https://drupal.org/project/atrium_glossary">Atrium Glossary</a></strong> - Add a glossary to Open Atrium.</p> </div> </div> <span>Wayne Eaker</span>February 25, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/context-module" hreflang="en">Context module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-commerce" hreflang="en">Drupal Commerce</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/high-performance" hreflang="en">High Performance</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/image-galleries" hreflang="en">Image Galleries</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/open-atrium" hreflang="en">Open Atrium</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/panels-module" hreflang="en">Panels module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/rules-module" hreflang="en">Rules module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/theming" hreflang="en">Theming</a></span> </div> </div> Fri, 25 Feb 2011 22:16:48 +0000 Wayne Eaker 132 at https://www.zengenuity.com The Week in Drupal: February 4, 2011 https://www.zengenuity.com/blog/2011-02/week-drupal-february-4-2011 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: February 4, 2011</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other <a href="https://drupal.org">Drupal</a> news from January 28 - February 4, 2011.</p> <p><a href="https://www.flickr.com/photos/audreyjm529/4164110822/" title="Frozen Drop On Rose Bush by audreyjm529, on Flickr"><img src="https://farm3.static.flickr.com/2628/4164110822_47e25d83d6.jpg" alt="Frozen Drop On Rose Bush" width="500" height="418" /></a></p> <h2>Drupal News</h2> <p><a href="https://chicago2011.drupal.org/schedule"><strong>DrupalCon Chicago Session Schedule Annouced</strong></a></p> <h2>Great Posts and Tutorials This Week</h2> <p><a href="https://crackingdrupal.com/blog/ben-jeavons/using-xss-steal-access"><strong>Using XSS (Cross site scripting) to steal access</strong></a></p> <p><strong><a href="https://www.opensourcecatholic.com/blog/oscatholic/beautiful-easy-maps-drup">Beautiful, Easy Maps with in Drupal with Views and Mapstraction</a></strong></p> <p><strong><a href="https://www.midwesternmac.com/blogs/jeff-geerling/integrate-webform-3x-paypal">Integrating Webform with Paypal</a></strong></p> <p><strong><a href="https://www.computerminds.co.uk/articles/creating-new-field-formatters-drupal-7">Creating new field formatters in Drupal 7</a></strong></p> <p><strong><a href="https://krimson.be/articles/drupal-coding-speed-tips-using-ide">Drupal Coding Speed Tips, using an IDE</a></strong></p> <p><strong><a href="https://www.vkareh.net/blog/render-arrays">Using Render Arrays in Drupal 7</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/hashtags">Hashtags</a></strong> - Allows Twitter-style #hashtag tagging in your node content. Makes the hashtags links, and integrates with the standard taxonomy system.</p> <p><strong><a href="https://drupal.org/project/fancy_insert">Fancy Insert</a></strong> - Provides a nicer interface for inserting <a href="https://drupal.org/project/imagefield">Imagefield</a> images into node content with the <a href="https://drupal.org/project/insert">Insert module</a>.</p> <p><strong><a href="https://drupal.org/project/taxonomy_additions">Taxonomy Additions</a></strong> - Extra taxonomy features and improved <a href="https://drupal.org/project/views">Views</a> integration for vocabularies and terms.</p> <p><strong><a href="https://drupal.org/project/atrium_leads">Atrium Leads</a></strong> - Add a "Business Lead" content type to <a href="https://www.openatrium.com/">Open Atrium</a> to make it function like a sales CRM.</p> <p><strong><a href="https://drupal.org/project/mediapool">Media Pool</a></strong> - Allow a randomized default for Imagefields when an image hasn't been uploaded.</p> <p><strong><a href="https://drupal.org/project/dummyimage">Dummy Image</a></strong> - Creates dummy placeholder images in nodes for missing <a href="https://drupal.org/project/imagecache">Imagecache</a> images. This is helpful if you are working on a development copy of a site and don't have all the uploaded images from the production server.</p> </div> </div> <span>Wayne Eaker</span>February 4, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/imagecache-module" hreflang="en">Imagecache module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/imagefield-module" hreflang="en">Imagefield module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/location-module" hreflang="en">Location module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/maps" hreflang="en">Maps</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/open-atrium" hreflang="en">Open Atrium</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/programming" hreflang="en">Programming</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/security" hreflang="en">Security</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/taxonomy-module" hreflang="en">Taxonomy module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/webform-module" hreflang="en">Webform module</a></span> </div> </div> Fri, 04 Feb 2011 15:07:42 +0000 Wayne Eaker 129 at https://www.zengenuity.com The Week in Drupal: January 14, 2011 https://www.zengenuity.com/blog/2011-01/week-drupal-january-14-2011 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: January 14, 2011</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other <a href="https://drupal.org">Drupal</a> news from January 7 - 14, 2011.</p> <p><a href="https://www.flickr.com/photos/pagedooley/3152936963/" title="On a path to 2009... by kevindooley, on Flickr"><img src="https://farm4.static.flickr.com/3294/3152936963_64c24ee816.jpg" alt="On a path to 2009..." width="500" height="422" /></a></p> <h2>Drupal News</h2> <p><a href="https://buytaert.net/us-house-of-representatives-using-drupal"><strong>U.S. House of Representatives Using Drupal</strong></a></p> <p><a href="https://www.sysarchitects.com/pdd7"><strong>Pro Drupal Development, Third Edition Arrives</strong></a></p> <p><strong><a href="https://drupal.org/node/1025092">Only Eight Weeks Until DrupalCon Chicago - Buy Your Early Bird Ticket Now!</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><strong><a href="https://nuvole.org/blog/2011/jan/13/five-reasons-code-driven-development-and-features-are-good-you">Five reasons code-driven development and Features are good for you</a></strong></p> <p><strong><a href="https://cruncht.com/417/mobile-drupal-groundwork">Mobile Drupal Websites - A Four Part Series</a> (<a href="https://cruncht.com/417/mobile-drupal-groundwork">Part 1</a>, <a href="https://cruncht.com/419/mobile-drupal-site-setup">Part 2</a>, <a href="https://cruncht.com/421/mobile-drupal-code">Part 3</a>, <a href="https://cruncht.com/423/mobile-drupal-conclusions">Part 4</a>)</strong></p> <p><strong><a href="https://civicactions.com/blog/2011/jan/12/report_content_management_systems_powering_foundation_websites">Report on Content Management Systems Powering Foundation Websites</a></strong></p> <p><strong><a href="https://longlake.co.uk/blogs/balazs/quick-peek-drush-4">Quick Peek at Drush 4</a></strong></p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/navigation404">404 Navigation</a></strong> - Show primary links and secondary links on your 404 error pages.</p> <p><strong><a href="https://drupal.org/project/webform_alt_ui">Webform Alternative UI</a></strong> - <a href="https://drupalgardens.com">Drupal Gardens</a>' custom Webform UI has been released for all.</p> <p><strong><a href="https://drupal.org/project/uc_partialpayment">UC Partial Payment</a></strong> - Accept partial payments at checkout with <a href="https://drupal.org/project/ubercart">Ubercart</a>.</p> <p><strong><a href="https://drupal.org/project/cache_backport">Cache Backport (D7 to D6)</a></strong> - Use multiple caching systems on the same Drupal 6 site, like you can with Drupal 7.</p> <p><strong><a href="https://drupal.org/project/processing">Processing.js</a></strong> - Render <a href="https://processingjs.org/">Processing.js</a> data visualization code with an input filter.</p> </div> </div> <span>Wayne Eaker</span>January 14, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/caching" hreflang="en">Caching</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drush" hreflang="en">Drush</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/features-module" hreflang="en">Features module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/javascript" hreflang="en">Javascript</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/mobile" hreflang="en">Mobile</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/ubercart" hreflang="en">Ubercart</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/webform-module" hreflang="en">Webform module</a></span> </div> </div> Fri, 14 Jan 2011 11:00:00 +0000 Wayne Eaker 126 at https://www.zengenuity.com The Week in Drupal: January 7, 2011 https://www.zengenuity.com/blog/2011-01/week-drupal-january-7-2011 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: January 7, 2011</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other <a href="https://drupal.org">Drupal</a> news from January 1 - 7, 2011.</p> <p><a href="https://drupal.org/drupal-7.0" title="Drupal 7: Get Started"><img src="https://www.zengenuity.com/sites/default/files/migrated/drupal548.png" alt="Drupal 7 Released" width="548" height="203" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://buytaert.net/drupal-7.0-released">Drupal 7 Released!</a></strong></p> <p><strong><a href="https://drupal.org/node/1011116">Session Selections Announced for DrupalCon Chicago</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><a href="https://www.leveltendesign.com/blog/tom/8-drupal-7-changes-love"><strong>8 New Drupal 7 Changes to Love</strong></a></p> <p><strong><a href="https://drupal.org/rocking-Drupal-7-release-party">Your guide rocking your Drupal 7 Release Party</a></strong></p> <p><strong><a href="https://drupal7releaseparty.org">A List of Drupal 7 Release Party Locations<br /><img src="https://www.zengenuity.com/sites/default/files/migrated/d7party.jpg" alt="Drupal 7 Release Party" width="250" height="250" /></a></strong></p> <h2>Interesting New Modules and Themes</h2> <p><strong><a href="https://drupal.org/project/advancedform">Advanced Form</a></strong> - Make Drupal node forms simple by hiding administrative or other fields until an "Advanced" button is pressed. This could be handy.</p> <p><strong><a href="https://drupal.org/project/jeditable">jEditable</a></strong> - Inline editing for <a href="https://drupal.org/project/cck">CCK</a> fields.</p> <p><strong><a href="https://thereisamoduleforthat.com/content/sheetnode-15-released-now-without-java">SheetNode 1.5 Released: Now without the Java</a></strong> - Spreadsheet editing for your site. </p> <p><strong><a href="https://drupal.org/project/cpn">Code Per Node</a></strong> - Inject javascript or CSS on a per-node basis.</p> </div> </div> <span>Wayne Eaker</span>January 7, 2011 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/cck-module" hreflang="en">CCK module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-7" hreflang="en">Drupal 7</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/high-performance" hreflang="en">High Performance</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/javascript" hreflang="en">Javascript</a></span> </div> </div> Fri, 07 Jan 2011 11:00:00 +0000 Wayne Eaker 125 at https://www.zengenuity.com The Week in Drupal: December 10, 2010 https://www.zengenuity.com/blog/2010-12/week-drupal-december-10-2010 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: December 10, 2010</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other <a href="https://drupal.org">Drupal</a> news of this week.</p> <p><a href="https://www.flickr.com/photos/audreyjm529/419036369/" title="Frozen Raindrop by audreyjm529, on Flickr"><img src="https://farm1.static.flickr.com/187/419036369_296c175dde.jpg" alt="Frozen Raindrop" width="500" height="428" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://drupal.org/drupal-7.0-rc2">Drupal 7 Release Candidate 2 (RC2) is Out!</a></strong></p> <p><strong><a href="https://chicago2011.drupal.org/news/drupalcon-chicago-session-voting-now-open">DrupalCon Chicago Session Voting is Now Open</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><strong><a href="https://sotak.co.uk/blog/head-js-script-drupal">Improve Javascript Loading with Head JS</a></strong> - Includes code for Drupal 6 and 7. (D6 code in comments)</p> <p><strong><a href="https://www.leveltendesign.com/blog/randall-knutson/7-ways-scale-learning-brick-wall-drupal">7 Ways to Scale the Learning Brick Wall of Drupal</a></strong> - A good list of resources. We also do <a href="https://172.28.128.3/services/drupal-training">Drupal Training in Michigan</a>, in addition to the trainers listed.</p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/media_facebook">Media: Facebook</a></strong> - Embed <a href="https://www.facebook.com">Facebook</a> images into content.</p> <p><strong><a href="https://drupal.org/project/botcha">Botcha Spam Prevention</a></strong> - Adds extra hidden fields to forms that trick spam bots into to filling them out, at which point they are blocked.</p> <p><strong><a href="https://drupal.org/project/views_slidedeck">SlideDeck for Views</a></strong> - <a href="https://www.slidedeck.com/">SlideDeck</a> is a slick accordion-style slideshow jQuery plugin. This module integrates it with <a href="https://drupal.org/project/views">Views</a>.</p> <p><strong><a href="https://drupal.org/project/feeds_youtube">Feeds: Youtube</a></strong> - Import <a href="https://youtube.com">Youtube</a> videos to your site with the <a href="https://drupal.org/project/feeds">Feeds</a> module.</p> <p><strong><a href="https://drupal.org/project/prod_check">Production Check and Production Monitor</a></strong> - Like a pre-launch checklist. Checks SEO, error logging and other important settings to make sure they are ready to go live.</p> <p><strong><a href="https://drupal.org/project/field_injector">Field Injector</a></strong> - Display <a href="https://drupal.org/project/cck">CCK</a> fields inside other fields, like putting an Imagefield image after the first paragraph. (Drupal 7 only)</p> <p><strong><a href="https://drupal.org/project/uc_option_categories">Ubercart Option Categories</a></strong> - Group your <a href="https://drupal.org/project/ubercart">Ubercart</a> dropdown attributes into categories.</p> <p><strong><a href="https://drupal.org/project/comment_registration">Comment Registration</a></strong> - Register new users inline with adding their first comment.</p> <p><strong><a href="https://drupal.org/project/panels_regions">Panels Regions</a></strong> - Remove certain regions in specific <a href="https://drupal.org/project/panels">Panels</a> variants.</p> </div> </div> <span>Wayne Eaker</span>December 10, 2010 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/cck-module" hreflang="en">CCK module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/comment-module" hreflang="en">Comment module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-7" hreflang="en">Drupal 7</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/facebook" hreflang="en">Facebook</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/feeds-module" hreflang="en">Feeds module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/jquery" hreflang="en">jQuery</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/panels-module" hreflang="en">Panels module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/spam" hreflang="en">Spam</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/ubercart" hreflang="en">Ubercart</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Fri, 10 Dec 2010 15:28:12 +0000 Wayne Eaker 122 at https://www.zengenuity.com The Week in Drupal: November 5, 2010 https://www.zengenuity.com/blog/2010-11/week-drupal-november-5-2010 <span class="field field--name-title field--type-string field--label-hidden">The Week in Drupal: November 5, 2010</span> <div class="paragraph html"> <div class="container"> <p>A look at interesting new modules, articles and other Drupal news of this week.</p> <p><a href="https://www.flickr.com/photos/bogenfreund/396297684/" title="Frost's Beautiful Defeat by bogenfreund, on Flickr"><img src="https://www.zengenuity.com/sites/default/files/migrated/frost_drop.jpg" alt="Frost's Beautiful Defeat" width="550" height="337" /></a></p> <h2>Drupal News</h2> <p><strong><a href="https://chicago2011.drupal.org/news/drupalcon-chicago-registration-and-call-speakers-open">DrupalCon Chicago Registration and Call for Speakers is Open!</a></strong></p> <h2>Great Posts and Tutorials This Week</h2> <p><strong><a href="https://awebfactory.com.ar/node/455">Deploying content on an already existing site - including the deployment module after the fact</a>.</strong></p> <p><strong><a href="https://civicactions.com/blog/2010/oct/31/advanced_voting_decisions_drupal_module">Advanced Voting with the Decisions Drupal Module</a></strong> - Building approval and ranked-choice style voting systems on Drupal.</p> <p><strong><a href="https://www.lullabot.com/articles/drupal-exposed">Drupal: Exposed</a></strong> - Webchick shows some quick core hacks (gasp!) that can really help with debugging and theming.</p> <p><strong><a href="https://nodeone.se/blogg/nodeone-talks-drupal-panels-38-and-panel-fields">Panels 3.8 and Panel Fields</a></strong> - Damn...now you can put panels inside your views?! Amazing.</p> <h2>Interesting New Modules</h2> <p><strong><a href="https://drupal.org/project/browserclass">Browser class</a></strong> - Add body classes to your page depending on browser and platform.</p> <p><strong><a href="https://drupal.org/project/context_useragent">Context UserAgent </a></strong>- Similar to Browser class but designed for the Context module.</p> <p><strong><a href="https://drupal.org/project/gigamenu">Giga Menu</a></strong> - A Mega-menu style menu module. Put more content in your dropdown menus.</p> <p><strong><a href="https://drupal.org/project/authorizenet">Authorize.Net</a> and <a href="https://drupal.org/project/paypal">PayPal</a> modules for the Payment API </strong>- This looks like it could be handy for simple e-commerce sites. Ones that don't need the overhead of <a href="https://drupal.org/project/ubercart">Ubercart</a>.</p> <p><strong><a href="https://drupal.org/project/feeds_hacks">Feeds Hacks</a></strong> - Add-ons for the <a href="https://drupal.org/project/feeds">Feeds module</a>.</p> <p><strong><a href="https://drupal.org/project/videojs">VideoJS</a></strong> - An HTML5 video player. Make your Drupal site iPad friendly.</p> <p><strong><a href="https://drupal.org/project/signhere">Sign Here</a></strong> - A jQuery-based CCK field for taking signatures on an iPad or similar device. Drupal POS, anyone?</p> </div> </div> <span>Wayne Eaker</span>November 5, 2010 <div class="tags"> <div class="container"> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/decisions-drupal-module" hreflang="en">Decisions Drupal Module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/deploy-module" hreflang="en">Deploy module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal" hreflang="en">Drupal</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupal-7" hreflang="en">Drupal 7</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/drupalcon-chicago" hreflang="en">DrupalCon Chicago</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/e-commerce" hreflang="en">E-Commerce</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/html5" hreflang="en">HTML5</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/panels-module" hreflang="en">Panels module</a></span> <span class="tag"><a href="https://www.zengenuity.com/blog/tags/views-module" hreflang="en">Views module</a></span> </div> </div> Fri, 05 Nov 2010 15:04:14 +0000 Wayne Eaker 113 at https://www.zengenuity.com