App Themer

App Themer is a rails generator originally by Andrea Franz later extended by the team at Poetic Systems(http://poeticsystems.com) that you can use to generate admin panels quickly. Inspired by cool themes like Lighthouse, Basecamp, RadiantCMS and others, it wants to be an idea to start developing a complete web application layout.

Installation

You can use app-themer with Rails 3. Specify the app-themer gem in your Gemfile, only for :development and :test

group :development, :test do
  gem 'app-themer'
end

Usage

Layout Generator

Used without parameters, app_themer generates the layout inside the application.html.erb file using the default theme.

rails g app_themer:layout

You can specify the layout file name in the first parameter:

rails g app_themer:layout admin # this will generate a layout called `admin.html.erb`

If you want to use another theme, instead of the default, you can use the --theme option:

rails g app_themer:layout admin --theme="drastic-dark"

You can specify the template engine with --engine=name option, where name can be erb (default) or haml:

rails g app_themer:layout --engine=haml # you must specify haml in your Gemfile

If you want to generate the stylesheets of a specific theme without changing the previously generated layout you can pass the --no-layout option:

rails g app_themer:layout --theme=bec --no-layout

You can specify the text used in the header with the --app-name option:

rails g app_themer:layout --app-name="My New Application"

If you need a layout for login and signup pages, you can use the --type option with sign as value. Ìf not specified, the default value is admin

rails g app_themer:layout login --layout-type=login

View Generator

Start creating your controllers manually or with a scaffold, and then use the view generator to overwrite the previously generated views.

If you have a controller named like the plural of the used model you can specify just the first parameter:

rails g app_themer:view posts # you have a model named Post and a controller named PostsController

rails g app_themer:view admin/gallery_pictures # you have a model named GalleryPicture and a controller named Admin::GalleryPicturesController

Use the --layout option specifying the previously generated layout to add a link to the controller you are working on:

rails g app_themer:view posts --layout=admin # you will see the `Posts` link in the navigation

If the controller has a name different to the model used, specify the controller path in the first parameter and the model name in the second one:

rails g app_themer:view items post

rails g app_themer:view admin/items post

If you use will_paginate for pagination use the --with_will_paginate:

rails g app_themer:view items post --will-paginate

You can specify the template engine with --engine=name option, where name can be erb (default) or haml:

rails g app_themer:view posts --engine=haml

If you have something like map.resource :dashboard in your routes.rb file, you can use the --type=text to generate a view with just text:

rails g app_themer:view dashboards --view-type=text

If you want to show form error messages inside the generated forms, use the following code inside your environment.rb

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  if html_tag =~ /<label/
    %|<div class="fieldWithErrors">#{html_tag} <span class="error">#{[instance.error_message].join(', ')}</span></div>|.html_safe
  else
    html_tag
  end
end

If you want to have translated pages, simple create in your locale.yml the keys just like config/locales/en_us.yml example.

en_us: app-themer: save: Save cancel: Cancel list: List edit: Edit new: New show: Show delete: Delete confirm: Are you sure? created_at: Created at all: All

Web App Theme screenshot

Contributing

  • Fork this repository.
  • Duplicate the 'themes/default' folder and rename it.
  • Modify the style.css file adding your favorite colors.
  • Add a link to your theme in the 'Switch Theme' block inside the index.html file.
  • Send a pull request.

Author

Andrea Franz - http://gravityblast.com

Contributors

  • Nelson Fernandez
  • Giovanni Intini
  • Jeremy Durham
  • Wouter de Vries
  • Marco Borromeo
  • rick mckay
  • Peter Sarnacki
  • Garret Alfert
  • Mikkel Hoegh
  • Juan Maria Martinez Arce
  • Stas SUSHKOV
  • Daniel Cukier
  • Roberto Klein
  • Bryan Woods
  • Sandro Duarte
  • David Francisco

Credits