web-app-theme 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/.gitignore +2 -1
  2. data/README.md +24 -23
  3. data/VERSION +1 -1
  4. data/index.html +1 -0
  5. data/{rails_generators/theme/templates/view_layout_administration.html.erb → lib/generators/web_app_theme/theme/templates/layout_admin.html.erb} +9 -8
  6. data/lib/generators/web_app_theme/theme/templates/layout_sign.html.erb +15 -0
  7. data/lib/generators/web_app_theme/theme/theme_generator.rb +61 -0
  8. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_edit.html.erb +1 -1
  9. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_form.html.erb +2 -2
  10. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_new.html.erb +1 -1
  11. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_show.html.erb +2 -2
  12. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_sidebar.html.erb +0 -0
  13. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_signin.html.erb +0 -0
  14. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_signup.html.erb +0 -0
  15. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_tables.html.erb +1 -1
  16. data/{rails_generators → lib/generators/web_app_theme}/themed/templates/view_text.html.erb +0 -0
  17. data/lib/generators/web_app_theme/themed/themed_generator.rb +126 -0
  18. data/stylesheets/base.css +2 -2
  19. data/stylesheets/override.css +1 -0
  20. data/stylesheets/themes/activo/style.css +466 -0
  21. data/stylesheets/themes/amro/style.css +1 -1
  22. data/stylesheets/themes/bec-green/style.css +1 -1
  23. data/stylesheets/themes/bec/style.css +1 -1
  24. data/stylesheets/themes/blue/style.css +1 -1
  25. data/stylesheets/themes/default/style.css +1 -1
  26. data/stylesheets/themes/djime-cerulean/style.css +1 -1
  27. data/stylesheets/themes/drastic-dark/style.css +1 -1
  28. data/stylesheets/themes/kathleene/style.css +1 -1
  29. data/stylesheets/themes/olive/style.css +1 -1
  30. data/stylesheets/themes/orange/style.css +1 -1
  31. data/stylesheets/themes/reidb-greenish/style.css +1 -1
  32. data/stylesheets/themes/warehouse/style.css +1 -1
  33. data/web-app-theme.gemspec +17 -29
  34. metadata +20 -32
  35. data/rails_generators/theme/USAGE +0 -5
  36. data/rails_generators/theme/templates/view_layout_administration.html.haml +0 -30
  37. data/rails_generators/theme/templates/view_layout_sign.html.erb +0 -15
  38. data/rails_generators/theme/templates/view_layout_sign.html.haml +0 -10
  39. data/rails_generators/theme/templates/web_app_theme_override.css +0 -1
  40. data/rails_generators/theme/theme_generator.rb +0 -45
  41. data/rails_generators/themed/USAGE +0 -5
  42. data/rails_generators/themed/templates/view_edit.html.haml +0 -13
  43. data/rails_generators/themed/templates/view_form.html.haml +0 -11
  44. data/rails_generators/themed/templates/view_new.html.haml +0 -12
  45. data/rails_generators/themed/templates/view_show.html.haml +0 -18
  46. data/rails_generators/themed/templates/view_sidebar.html.haml +0 -10
  47. data/rails_generators/themed/templates/view_signin.html.haml +0 -22
  48. data/rails_generators/themed/templates/view_signup.html.haml +0 -32
  49. data/rails_generators/themed/templates/view_tables.html.haml +0 -36
  50. data/rails_generators/themed/templates/view_text.html.haml +0 -15
  51. data/rails_generators/themed/themed_generator.rb +0 -107
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  .DS_Store
2
- pkg
2
+ pkg
3
+ web-app-theme-*.gem
data/README.md CHANGED
@@ -8,13 +8,12 @@ it wants to be an idea to start developing a complete web application layout.
8
8
  Installation
9
9
  ------------
10
10
 
11
- Install the gem with:
11
+ You can use web-app-theme >= 0.6.0 with Rails 3. If you want to use it with rails 2, use web-app-theme 0.5.3
12
+ Specify the web-app-theme gem in your Gemfile, only for :development and :test
12
13
 
13
- sudo gem install web-app-theme -s http://gemcutter.org
14
-
15
- You can also install it as a rails plugin:
16
-
17
- script/plugin install git://github.com/pilu/web-app-theme.git
14
+ group :development, :test do
15
+ gem 'web-app-theme', '>= 0.6.0'
16
+ end
18
17
 
19
18
  Usage
20
19
  -----
@@ -22,33 +21,33 @@ Usage
22
21
  ### Theme Generator
23
22
 
24
23
  Used without parameters, it generates the layout inside the application.html.erb file using the default theme.
25
-
26
- script/generate theme
24
+
25
+ rails g web_app_theme:theme
27
26
 
28
27
  You can specify the layout file name in the first parameter:
29
28
 
30
- script/generate theme admin # it will generate a layout called `admin.html.erb`
29
+ rails g web_app_theme:theme admin # it will generate a layout called `admin.html.erb`
31
30
 
32
31
  If you want to use another theme, instead of the default, you can use the `--theme` option:
33
32
 
34
- script/generate theme --theme="drastic-dark"
33
+ rails g web_app_theme:theme admin --theme="drastic-dark"
35
34
 
36
35
  You can specify the template engine with `--engine=name` option, where name can be erb (default) or haml:
37
36
 
38
- script/generate theme --engine=haml
37
+ rails g web_app_theme:theme --engine=haml # you must specify haml in your Gemfile
39
38
 
40
39
  If you want to generate the stylesheets of a specific theme without changing the previously generated layout you can pass the `--no-layout` option:
41
40
 
42
- script/generate theme --theme=bec --no_layout
41
+ rails g web_app_theme:theme --theme=bec --no-layout
43
42
 
44
43
 
45
44
  You can specify the text used in the header with the `--app-name` option:
46
45
 
47
- script/generate theme --app_name="My New Application"
46
+ rails g web_app_theme:theme --app-name="My New Application"
48
47
 
49
48
  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 `administration`
50
49
 
51
- script/generate theme --type=sign
50
+ rails g web_app_theme:theme sign --layout-type=sign
52
51
 
53
52
  ### Themed Generator
54
53
 
@@ -56,43 +55,44 @@ Start creating your controllers manually or with a scaffold, and then use the `t
56
55
 
57
56
  If you have a controller named like the plural of the used model you can specify just the first parameter:
58
57
 
59
- script/generate themed posts # you have a model named Post and a controller named PostsController
58
+ rails g web_app_theme:themed posts # you have a model named Post and a controller named PostsController
60
59
 
61
- script/generate themed admin/gallery_pictures # you have a model named GalleryPicture and a controller named Admin::GalleryPicturesController
60
+ rails g web_app_theme:themed admin/gallery_pictures # you have a model named GalleryPicture and a controller named Admin::GalleryPicturesController
62
61
 
63
62
  Use the `--layout` option specifying the previously generated layout to add a link to the controller you are working on:
64
63
 
65
- script/generate themed posts --layout=admin # you will see the `Posts` link in the navigation
64
+ rails g web_app_theme:themed posts --layout=admin # you will see the `Posts` link in the navigation
66
65
 
67
66
  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:
68
67
 
69
- script/generate themed items post
68
+ rails g web_app_theme:themed items post
70
69
 
71
- script/generate themed admin/items post
70
+ rails g web_app_theme:themed admin/items post
72
71
 
73
72
  If you use `will_paginate` for pagination use the `--with_will_paginate`:
74
73
 
75
- script/generate themed items post --with_will_paginate
74
+ rails g web_app_theme:themed items post --will-paginate
76
75
 
77
76
  You can specify the template engine with `--engine=name` option, where name can be erb (default) or haml:
78
77
 
79
- script/generate themed posts --engine=haml
78
+ rails g web_app_theme:themed posts --engine=haml
80
79
 
81
80
  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:
82
81
 
83
- script/generate themed homes --type=text
82
+ rails g web_app_theme:themed dashboards --themed-type=text
84
83
 
85
84
  If you want to show form error messages inside the generated forms, use the following code inside your `environment.rb`
86
85
 
87
86
  ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
88
87
  if html_tag =~ /<label/
89
- %|<div class="fieldWithErrors">#{html_tag} <span class="error">#{[instance.error_message].join(', ')}</span></div>|
88
+ %|<div class="fieldWithErrors">#{html_tag} <span class="error">#{[instance.error_message].join(', ')}</span></div>|.html_safe
90
89
  else
91
90
  html_tag
92
91
  end
93
92
  end
94
93
 
95
94
  If you want to have translated pages, simple create in your locale.yml the keys just like config/locales/en_us.yml example.
95
+
96
96
  en_us:
97
97
  web-app-theme:
98
98
  save: Save
@@ -150,6 +150,7 @@ Contributors
150
150
  * Roberto Klein
151
151
  * Bryan Woods
152
152
  * Sandro Duarte
153
+ * David Francisco
153
154
 
154
155
  Credits
155
156
  -------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.3
1
+ 0.6.0
data/index.html CHANGED
@@ -344,6 +344,7 @@
344
344
  <h3>Switch Theme</h3>
345
345
  <ul class="navigation">
346
346
  <li><a href="#" onclick="Theme.activate('default'); return false;">Default</a></li>
347
+ <li><a href="#" onclick="Theme.activate('activo'); return false;">Activo</a></li>
347
348
  <li><a href="#" onclick="Theme.activate('amro'); return false;">Amro</a></li>
348
349
  <li><a href="#" onclick="Theme.activate('bec'); return false;">Bec</a></li>
349
350
  <li><a href="#" onclick="Theme.activate('bec-green'); return false;">Bec-Green</a></li>
@@ -1,21 +1,22 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
1
+ <!DOCTYPE html>
2
+ <html>
3
3
  <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
- <title><%= options[:app_name] %></title>
6
- <%%= stylesheet_link_tag "web_app_theme", "web_app_theme_override", "themes/<%= options[:theme] %>/style", :cache => true %>
4
+ <title><%= options.app_name %></title>
5
+ <%%= stylesheet_link_tag "web-app-theme/base", "web-app-theme/themes/<%= options.theme %>/style", "web-app-theme/override", :cache => true %>
6
+ <%%= javascript_include_tag :defaults, :cache => true %>
7
+ <%%= csrf_meta_tag %>
7
8
  </head>
8
9
  <body>
9
10
  <div id="container">
10
11
  <div id="header">
11
- <h1><a href="/"><%= options[:app_name] %></a></h1>
12
+ <h1><a href="/"><%= options.app_name %></a></h1>
12
13
  <div id="user-navigation">
13
14
  <ul class="wat-cf">
14
15
  <li><a href="#"><%%= t("web-app-theme.profile", :default => "Profile") %></a></li>
15
16
  <li><a href="#"><%%= t("web-app-theme.settings", :default => "Settings") %></a></li>
16
17
  <li><a href="/logout" class="logout"><%%= t("web-app-theme.logout", :default => "Logout") %></a></li>
17
18
  </ul>
18
- </div>
19
+ </div>
19
20
  <div id="main-navigation">
20
21
  <ul class="wat-cf"></ul>
21
22
  </div>
@@ -32,7 +33,7 @@
32
33
  <%%= yield %>
33
34
  <div id="footer">
34
35
  <div class="block">
35
- <p>Copyright &copy; <%%= Time.now.year %> <%= options[:app_name] %>.</p>
36
+ <p>Copyright &copy; <%%= Time.now.year %> <%= options.app_name %>.</p>
36
37
  </div>
37
38
  </div>
38
39
  </div>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%= options.app_name %></title>
5
+ <%%= stylesheet_link_tag "web-app-theme/base", "web-app-theme/themes/<%= options.theme %>/style", "web-app-theme/override", :cache => true %>
6
+ <%%= csrf_meta_tag %>
7
+ </head>
8
+ <body>
9
+ <div id="container">
10
+ <div id="box">
11
+ <%%= yield %>
12
+ </div>
13
+ </div>
14
+ </body>
15
+ </html>
@@ -0,0 +1,61 @@
1
+ module WebAppTheme
2
+ class ThemeGenerator < Rails::Generators::Base
3
+ source_root File.expand_path('../templates', __FILE__)
4
+
5
+ argument :layout_name, :type => :string, :default => 'application'
6
+
7
+ class_option :theme, :type => :string, :default => :default, :desc => 'Specify the layout theme'
8
+ class_option :app_name, :type => :string, :default => 'Web App', :desc => 'Specify the application name'
9
+ class_option :engine, :type => :string, :default => 'erb', :desc => 'Specify the template engine'
10
+ class_option :no_layout, :type => :boolean, :default => false, :desc => 'Use this option if you want to generate only stylesheets'
11
+ class_option :layout_type, :type => :string, :default => 'admin', :desc => 'Layout type, admin or sign'
12
+
13
+ def copy_layout
14
+ return if options.no_layout
15
+ admin_layout_name = options.layout_type == 'sign' ? "layout_sign.html.erb" : "layout_admin.html.erb"
16
+ case options.engine
17
+ when 'erb'
18
+ template admin_layout_name, "app/views/layouts/#{layout_name.underscore}.html.erb"
19
+ when 'haml'
20
+ generate_haml_layout(admin_layout_name)
21
+ end
22
+ end
23
+
24
+ def copy_base_stylesheets
25
+ copy_file "#{stylesheets_path}/base.css", "public/stylesheets/web-app-theme/base.css"
26
+ copy_file "#{stylesheets_path}/override.css", "public/stylesheets/web-app-theme/override.css"
27
+ end
28
+
29
+ def copy_theme_stylesheets
30
+ directory "#{stylesheets_path}/themes/#{options.theme}", "public/stylesheets/web-app-theme/themes/#{options.theme}"
31
+ end
32
+
33
+ def copy_images
34
+ directory "#{images_path}", "public/images/web-app-theme"
35
+ end
36
+
37
+ protected
38
+
39
+ def stylesheets_path
40
+ "../../../../../stylesheets"
41
+ end
42
+
43
+ def images_path
44
+ "../../../../../images"
45
+ end
46
+
47
+ def generate_haml_layout(admin_layout_name)
48
+ require 'haml'
49
+ Dir.mktmpdir('web-app-theme-haml') do |haml_root|
50
+ tmp_html_path = "#{haml_root}/#{admin_layout_name}"
51
+ tmp_haml_path = "#{haml_root}/#{admin_layout_name}.haml"
52
+ template admin_layout_name, tmp_html_path, :verbose => false
53
+ `html2haml -r #{tmp_html_path} #{tmp_haml_path}`
54
+ copy_file tmp_haml_path, "app/views/layouts/#{layout_name.underscore}.html.haml"
55
+ end
56
+ rescue LoadError
57
+ say "HAML is not installed, or it is not specified in your Gemfile."
58
+ exit
59
+ end
60
+ end
61
+ end
@@ -9,7 +9,7 @@
9
9
  <div class="content">
10
10
  <h2 class="title"><%%= t("web-app-theme.edit", :default => "Edit") %> <%= model_name %></h2>
11
11
  <div class="inner">
12
- <%% form_for @<%= model_name.underscore %>, :url => <%= singular_controller_routing_path %>_path(@<%= resource_name %>), :html => { :class => :form } do |f| -%>
12
+ <%%= form_for @<%= model_name.underscore %>, :url => <%= singular_controller_routing_path %>_path(@<%= resource_name %>), :html => { :class => :form } do |f| -%>
13
13
  <%%= render :partial => "form", :locals => {:f => f} %>
14
14
  <%% end -%>
15
15
  </div>
@@ -7,7 +7,7 @@
7
7
  <%- end -%>
8
8
  <div class="group navform wat-cf">
9
9
  <button class="button" type="submit">
10
- <%%= image_tag("web-app-theme/tick.png", :alt => "#{t("web-app-theme.save", :default => "Save")}") %> <%%= t("web-app-theme.save", :default => "Save") %>
10
+ <%%= image_tag("web-app-theme/icons/tick.png", :alt => "#{t("web-app-theme.save", :default => "Save")}") %> <%%= t("web-app-theme.save", :default => "Save") %>
11
11
  </button>
12
- <%%= link_to "#{image_tag("web-app-theme/cross.png", :alt => "#{t("web-app-theme.cancel", :default => "Cancel")}")} #{t("web-app-theme.cancel", :default => "Cancel")}", <%= controller_routing_path %>_path, :class => "button" %>
12
+ <%%= link_to image_tag("web-app-theme/icons/cross.png", :alt => "#{t("web-app-theme.cancel", :default => "Cancel")}") + " " + t("web-app-theme.cancel", :default => "Cancel"), <%= controller_routing_path %>_path, :class => "button" %>
13
13
  </div>
@@ -8,7 +8,7 @@
8
8
  <div class="content">
9
9
  <h2 class="title"><%%= t("web-app-theme.new", :default => "New")%> <%= model_name %></h2>
10
10
  <div class="inner">
11
- <%% form_for :<%= model_name.underscore %>, :url => <%= controller_routing_path %>_path, :html => { :class => :form } do |f| -%>
11
+ <%%= form_for :<%= model_name.underscore %>, :url => <%= controller_routing_path %>_path, :html => { :class => :form } do |f| -%>
12
12
  <%%= render :partial => "form", :locals => {:f => f} %>
13
13
  <%% end -%>
14
14
  </div>
@@ -15,8 +15,8 @@
15
15
  </p>
16
16
  <%- end -%>
17
17
  <div class="wat-cf">
18
- <%%= link_to "#{image_tag("web-app-theme/application_edit.png", :alt => "#{t("web-app-theme.edit", :default=> "Edit")}")} #{t("web-app-theme.edit", :default=> "Edit")}", edit_<%= singular_controller_routing_path %>_path(@<%= resource_name %>), :class => "button" %>
19
- <%%= link_to "#{image_tag("web-app-theme/cross.png", :alt => "#{t("web-app-theme.delete", :default=> "Delete")}")} #{t("web-app-theme.delete", :default => "Delete")}", <%= singular_controller_routing_path %>_path(@<%= resource_name %>), :method => "delete", :class => "button", :confirm => "#{t("web-app-theme.confirm", :default => "Are you sure?")}" %>
18
+ <%%= link_to image_tag("web-app-theme/icons/application_edit.png", :alt => "#{t("web-app-theme.edit", :default=> "Edit")}") + " " + t("web-app-theme.edit", :default=> "Edit"), edit_<%= singular_controller_routing_path %>_path(@<%= resource_name %>), :class => "button" %>
19
+ <%%= link_to image_tag("web-app-theme/icons/cross.png", :alt => "#{t("web-app-theme.delete", :default=> "Delete")}") + " " + t("web-app-theme.delete", :default => "Delete"), <%= singular_controller_routing_path %>_path(@<%= resource_name %>), :method => "delete", :class => "button", :confirm => "#{t("web-app-theme.confirm", :default => "Are you sure?")}" %>
20
20
  </div>
21
21
  </div>
22
22
  </div>
@@ -43,7 +43,7 @@
43
43
  <div class="actions-bar wat-cf">
44
44
  <div class="actions">
45
45
  </div>
46
- <% if options[:will_paginate] %>
46
+ <% if options.will_paginate %>
47
47
  <%%= will_paginate @<%= plural_resource_name %> %>
48
48
  <% end %>
49
49
  </div>
@@ -0,0 +1,126 @@
1
+ require 'rails/generators/generated_attribute'
2
+
3
+ module WebAppTheme
4
+ class ThemedGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../templates', __FILE__)
6
+
7
+ argument :controller_path, :type => :string
8
+ argument :model_name, :type => :string, :required => false
9
+
10
+ class_option :layout, :type => :string, :desc => 'Specify the layout name'
11
+ class_option :engine, :type => :string, :default => 'erb', :desc => 'Specify the template engine'
12
+ class_option :will_paginate, :type => :boolean, :default => false, :desc => 'Specify if you use will_paginate'
13
+ class_option :themed_type, :type => :string, :default => 'crud', :desc => 'Specify the themed type, crud or text. Default is crud'
14
+
15
+ def initialize(args, *options)
16
+ super(args, *options)
17
+ initialize_views_variables
18
+ end
19
+
20
+ def copy_views
21
+ generate_views
22
+ unless options.layout.blank?
23
+ gsub_file(File.join('app/views/layouts', "#{options[:layout]}.html.#{options.engine}"), /\<div\s+id=\"main-navigation\">.*\<\/ul\>/mi) do |match|
24
+ match.gsub!(/\<\/ul\>/, "")
25
+ if @engine.to_s =~ /haml/
26
+ %|#{match}
27
+ %li{:class => controller.controller_path == '#{@controller_file_path}' ? 'active' : '' }
28
+ %a{:href => #{controller_routing_path}_path} #{plural_model_name}
29
+ </ul>|
30
+ else
31
+ %|#{match} <li class="<%= controller.controller_path == '#{@controller_file_path}' ? 'active' : '' %>"><a href="<%= #{controller_routing_path}_path %>">#{plural_model_name}</a></li></ul>|
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ protected
38
+
39
+ def initialize_views_variables
40
+ @base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(controller_path)
41
+ @controller_routing_path = @controller_file_path.gsub(/\//, '_')
42
+ @model_name = @base_name.singularize unless @model_name
43
+ @model_name = @model_name.camelize
44
+ end
45
+
46
+ def controller_routing_path
47
+ @controller_routing_path
48
+ end
49
+
50
+ def singular_controller_routing_path
51
+ @controller_routing_path.singularize
52
+ end
53
+
54
+ def model_name
55
+ @model_name
56
+ end
57
+
58
+ def plural_model_name
59
+ @model_name.pluralize
60
+ end
61
+
62
+ def resource_name
63
+ @model_name.underscore
64
+ end
65
+
66
+ def plural_resource_name
67
+ resource_name.pluralize
68
+ end
69
+
70
+ def columns
71
+ excluded_column_names = %w[id created_at updated_at]
72
+ Kernel.const_get(@model_name).columns.reject{|c| excluded_column_names.include?(c.name) }.collect{|c| Rails::Generators::GeneratedAttribute.new(c.name, c.type)}
73
+ end
74
+
75
+ def extract_modules(name)
76
+ modules = name.include?('/') ? name.split('/') : name.split('::')
77
+ name = modules.pop
78
+ path = modules.map { |m| m.underscore }
79
+ file_path = (path + [name.underscore]).join('/')
80
+ nesting = modules.map { |m| m.camelize }.join('::')
81
+ [name, path, file_path, nesting, modules.size]
82
+ end
83
+
84
+ def generate_views
85
+ views = {
86
+ 'crud' => {
87
+ 'view_tables.html.erb' => File.join('app/views', @controller_file_path, "index.html.#{options.engine}"),
88
+ 'view_new.html.erb' => File.join('app/views', @controller_file_path, "new.html.#{options.engine}"),
89
+ 'view_edit.html.erb' => File.join('app/views', @controller_file_path, "edit.html.#{options.engine}"),
90
+ 'view_form.html.erb' => File.join('app/views', @controller_file_path, "_form.html.#{options.engine}"),
91
+ 'view_show.html.erb' => File.join('app/views', @controller_file_path, "show.html.#{options.engine}"),
92
+ 'view_sidebar.html.erb' => File.join('app/views', @controller_file_path, "_sidebar.html.#{options.engine}")
93
+ },
94
+ 'text' => {
95
+ 'view_text.html.erb' => File.join('app/views', @controller_file_path, "show.html.#{options.engine}"),
96
+ 'view_sidebar.html.erb' => File.join('app/views', @controller_file_path, "_sidebar.html.#{options.engine}")
97
+ }
98
+ }
99
+ selected_views = views[options.themed_type]
100
+ options.engine == 'haml' ? generate_haml_views(selected_views) : generate_erb_views(selected_views)
101
+ end
102
+
103
+ def generate_erb_views(views)
104
+ views.each do |template_name, output_path|
105
+ template template_name, output_path
106
+ end
107
+ end
108
+
109
+ def generate_haml_views(views)
110
+ require 'haml'
111
+ Dir.mktmpdir('web-app-theme-haml') do |haml_root|
112
+ views.each do |template_name, output_path|
113
+ tmp_html_path = "#{haml_root}/#{template_name}"
114
+ tmp_haml_path = "#{haml_root}/#{template_name}.haml"
115
+ template template_name, tmp_html_path, :verbose => false
116
+ `html2haml -r #{tmp_html_path} #{tmp_haml_path}`
117
+ copy_file tmp_haml_path, output_path
118
+ end
119
+ end
120
+
121
+ rescue LoadError
122
+ say "HAML is not installed, or it is not specified in your Gemfile."
123
+ exit
124
+ end
125
+ end
126
+ end