web-app-theme 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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