Developer's Blog

Entries by Justin Lewis (8)

Interface Fall 2010 Update

Posted November 30, 2010 by Justin Lewis. Filed under Interface.

Here’s what we’re working on for future Interface releases:

  • WYSIWYG Editor – We have decided to move away from the simple textile editor in favor of a full WYSIWYG editor.
  • File Repository – We are going to expose the file structure within Interface to allow a better file browsing experience.
  • Page Models – Imagine that you can treat each page in your site like a model with custom content fields.
  • Content Folders – The ability to group content items into folders allowing you to simply visual clutter and increase organization.
  • UI Improvements – Many more to come including dashboard updates, search improvements, content ordering, etc.
  • Rails Style MVC System – Interface was built on the Rails MVC philosophy. This next year we are going to expose this architecture to allow developers to use harness Rails knowledge while building sites and applications in Interface.
  • Technology Stack Upgrade – We are in the process of moving Interface to Ruby v1.9.2 and to Rails v3.0.3.
  • Local Development Application – We are currently in beta of a desktop app that will support local Interface development.
  • Environments – Imagine that you can seamlessly move data, structure, and templates between local, dev, and production environments.
  • Commerce – Selling stuff is one of the reasons the Internet is great. Interface, meet Shopify.
  • Search – We’ve tried and failed at adding a true search index to Interface so we’ve decided to bypass the plugins and roll our own this next year.
  • Email – We’re revamping the current Mailers system in favor of more robust Email capabilities.

Also…

  • Expect a new account center and several updates to the getinterface.com website.

Thanks for using Interface!

Justin

Add comment

Interface Development Road Map

Posted September 12, 2009 by Justin Lewis. Filed under Interface.

Interface has seen numerous advancements with our recent upgrade to version 2.0, including a new UI design, functionality and usability improvements, and an account center with centralized user system. While we continue to refine and enhance these features, we are also looking ahead to upcoming features and upgrades.

Our philosophy with improvements and new features is straightforward: Improve the user experience and application functionality with deliberate and simple changes. We aim to avoid fancy or complex developments, providing uncomplicated yet effective enhancements. Here are some things we are looking towards…

Around the bend

  • Batch creation & editing for content
  • E-commerce capability enhancements
  • Ready-made model examples & bundles
  • Support ticketing system
  • Additional UI improvements

Down the road

  • Improved asset management
  • File CDN
  • Alternate content views (i.e., tables)
  • Syncing between Development and Production environments
  • Asset upload utility
  • Better search support

We don’t have a specific timeline for these and other features, but are fully committed to ongoing additions and improvements to Interface. We may find as we continue to refine Interface that some of these features get tackled sooner or later than laid out here, but our core goal of giving users the tools to build better websites will never change.

Add comment

Interface Office: Construction Update 1

Posted September 11, 2009 by Justin Lewis. Filed under Office.

Interface and Instrument will be moving into the top floor of the new Alberta Central building on Alberta Street in NE Portland this winter. We thought it would be fun to share some construction photos and document the progress.

/assets/0000/0229/IMG_1550.jpg

/assets/0000/0238/IMG_1556.jpg

/assets/0000/0235/IMG_1552.jpg

/assets/0000/0232/IMG_1547.jpg

Add comment

Using the Search Language to search across associations

Posted July 08, 2009 by Justin Lewis. Filed under Code.

Interface has a unique Search Language that allows you to easily search for content, from simple queries on one field to multiple grouped conditional statements. Also, because content can have associated items, there is the ability to search across those associations. Here’s how.

Using Search in Content Tag

Assuming your model is called Product, place the following in your template:

<% content_tag(:model => :product).each do |product| -%>
<h3><%= product.name %></h3>
<% end -%>

That will get all content from the Product model. But what if you wanted to show only Products that had a certain ProductCategory?

<% content_tag(:model => :blog_item, :find => "product_category.name!Widgets").each do |product| -%>
<h3><%= product.name %></h3>
<% end -%>

Even more, you can search across any time of association. If the Product has multiple ProductCategories, you could also do:

<% content_tag(:model => :blog_item, :find => "(product_categories.name!Widgets|product_categories.name!Thingies)").each do |product| -%>
<h3><%= product.name %></h3>
<% end -%>

Which would pull all Products that are in either the Widgets or Thingies ProductCategories.

Using the API

You can use the same Search Language in the API to pull content:

http://yoursite.interfacecms.com/api/product.xml?search=(product_categories.name!Widgets|product_categories.name!Thingies)

For more on info, see the Search Language Documentation and the Content Tag Documentation in the Interface User Manual.

Add comment

Blueprint CSS Framework

Posted July 02, 2009 by Justin Lewis. Filed under Tips.

Blueprint is a CSS framework, which aims to cut down on your development time. It gives you a solid foundation to build your project on top of, with an easy-to-use grid, sensible typography, useful plugins, and even a stylesheet for printing.

Read more at blueprintcss.org

Add comment

Using Rescue Statement When Outputting Data in ERB

Posted May 26, 2009 by Justin Lewis. Filed under Code.

Sometimes when you’re writing ERB, you’ll have to output something like this:

<%= article.category.name %>

But if the category is not set, you’ll probably get an error page with a nasty backtrace of an exception, along with an error like:

undefined method 'name' for nilclass

There are a couple ways to avoid this. First, you can test if category is nil before outputting the value:

<% if not article.category.blank? -%>
<%= article.category.name %>
<% else -%>
No Category
<% end -%>

Another way that is a bit cleaner is to add a rescue statement to the end of your output:

<%= article.category.name rescue 'No Category' %>

Using rescue will only catch exceptions, and will not test if the name itself is nil or an empty string. So, use either one based on your situation.

Add comment

Gaia Flash Framework

Posted May 06, 2009 by Justin Lewis. Filed under Tips.

Gaia is an open-source front-end Flash Framework for AS3 and AS2 designed to dramatically reduce development time.

Read more at gaiaflashframework.com

Add comment

Cufon Font Replacement

Posted May 06, 2009 by Justin Lewis. Filed under Tips.

A text replacement alternative to sIFR that requires no images or Flash, instead using Canvas and VML to create a similar effect. Read more on GitHub

Add comment