corntrace-nifty-generators 0.4.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 (193) hide show
  1. data/CHANGELOG +128 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +104 -0
  4. data/Rakefile +18 -0
  5. data/features/nifty_authentication.feature +59 -0
  6. data/features/nifty_config.feature +17 -0
  7. data/features/nifty_layout.feature +19 -0
  8. data/features/nifty_scaffold.feature +22 -0
  9. data/features/step_definitions/common_steps.rb +37 -0
  10. data/features/step_definitions/rails_setup_steps.rb +6 -0
  11. data/features/support/env.rb +6 -0
  12. data/features/support/matchers.rb +7 -0
  13. data/lib/generators/nifty/authentication/USAGE +50 -0
  14. data/lib/generators/nifty/authentication/authentication_generator.rb +145 -0
  15. data/lib/generators/nifty/authentication/templates/authentication.rb +60 -0
  16. data/lib/generators/nifty/authentication/templates/authlogic_session.rb +2 -0
  17. data/lib/generators/nifty/authentication/templates/fixtures.yml +24 -0
  18. data/lib/generators/nifty/authentication/templates/migration.rb +20 -0
  19. data/lib/generators/nifty/authentication/templates/sessions_controller.rb +45 -0
  20. data/lib/generators/nifty/authentication/templates/sessions_helper.rb +2 -0
  21. data/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb +39 -0
  22. data/lib/generators/nifty/authentication/templates/tests/rspec/user.rb +83 -0
  23. data/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb +26 -0
  24. data/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
  25. data/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb +85 -0
  26. data/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb +27 -0
  27. data/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb +36 -0
  28. data/lib/generators/nifty/authentication/templates/tests/testunit/user.rb +88 -0
  29. data/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb +23 -0
  30. data/lib/generators/nifty/authentication/templates/user.rb +42 -0
  31. data/lib/generators/nifty/authentication/templates/users_controller.rb +18 -0
  32. data/lib/generators/nifty/authentication/templates/users_helper.rb +2 -0
  33. data/lib/generators/nifty/authentication/templates/views/erb/login.html.erb +30 -0
  34. data/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb +24 -0
  35. data/lib/generators/nifty/authentication/templates/views/haml/login.html.haml +30 -0
  36. data/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml +24 -0
  37. data/lib/generators/nifty/config/USAGE +23 -0
  38. data/lib/generators/nifty/config/config_generator.rb +24 -0
  39. data/lib/generators/nifty/config/templates/config.yml +8 -0
  40. data/lib/generators/nifty/config/templates/load_config.rb +2 -0
  41. data/lib/generators/nifty/layout/USAGE +25 -0
  42. data/lib/generators/nifty/layout/layout_generator.rb +29 -0
  43. data/lib/generators/nifty/layout/templates/error_messages_helper.rb +23 -0
  44. data/lib/generators/nifty/layout/templates/layout.html.erb +19 -0
  45. data/lib/generators/nifty/layout/templates/layout.html.haml +21 -0
  46. data/lib/generators/nifty/layout/templates/layout_helper.rb +22 -0
  47. data/lib/generators/nifty/layout/templates/stylesheet.css +75 -0
  48. data/lib/generators/nifty/layout/templates/stylesheet.sass +66 -0
  49. data/lib/generators/nifty/scaffold/USAGE +51 -0
  50. data/lib/generators/nifty/scaffold/scaffold_generator.rb +241 -0
  51. data/lib/generators/nifty/scaffold/templates/actions/create.rb +9 -0
  52. data/lib/generators/nifty/scaffold/templates/actions/destroy.rb +6 -0
  53. data/lib/generators/nifty/scaffold/templates/actions/edit.rb +3 -0
  54. data/lib/generators/nifty/scaffold/templates/actions/index.rb +3 -0
  55. data/lib/generators/nifty/scaffold/templates/actions/new.rb +3 -0
  56. data/lib/generators/nifty/scaffold/templates/actions/show.rb +3 -0
  57. data/lib/generators/nifty/scaffold/templates/actions/update.rb +9 -0
  58. data/lib/generators/nifty/scaffold/templates/controller.rb +3 -0
  59. data/lib/generators/nifty/scaffold/templates/fixtures.yml +9 -0
  60. data/lib/generators/nifty/scaffold/templates/helper.rb +2 -0
  61. data/lib/generators/nifty/scaffold/templates/migration.rb +16 -0
  62. data/lib/generators/nifty/scaffold/templates/model.rb +3 -0
  63. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb +11 -0
  64. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  65. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  66. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb +4 -0
  67. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb +4 -0
  68. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb +4 -0
  69. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb +11 -0
  70. data/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb +8 -0
  71. data/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb +7 -0
  72. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  73. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  74. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  75. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  76. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  77. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  78. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  79. data/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb +5 -0
  80. data/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb +7 -0
  81. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb +11 -0
  82. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  83. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  84. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb +4 -0
  85. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb +4 -0
  86. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb +4 -0
  87. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb +11 -0
  88. data/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb +5 -0
  89. data/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb +7 -0
  90. data/lib/generators/nifty/scaffold/templates/views/erb/_form.html.erb +10 -0
  91. data/lib/generators/nifty/scaffold/templates/views/erb/edit.html.erb +14 -0
  92. data/lib/generators/nifty/scaffold/templates/views/erb/index.html.erb +29 -0
  93. data/lib/generators/nifty/scaffold/templates/views/erb/new.html.erb +7 -0
  94. data/lib/generators/nifty/scaffold/templates/views/erb/show.html.erb +20 -0
  95. data/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml +10 -0
  96. data/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml +14 -0
  97. data/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml +25 -0
  98. data/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml +7 -0
  99. data/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml +20 -0
  100. data/lib/generators/nifty.rb +15 -0
  101. data/rails_generators/nifty_authentication/USAGE +50 -0
  102. data/rails_generators/nifty_authentication/lib/insert_commands.rb +74 -0
  103. data/rails_generators/nifty_authentication/nifty_authentication_generator.rb +128 -0
  104. data/rails_generators/nifty_authentication/templates/authentication.rb +61 -0
  105. data/rails_generators/nifty_authentication/templates/authlogic_session.rb +2 -0
  106. data/rails_generators/nifty_authentication/templates/fixtures.yml +24 -0
  107. data/rails_generators/nifty_authentication/templates/migration.rb +20 -0
  108. data/rails_generators/nifty_authentication/templates/sessions_controller.rb +45 -0
  109. data/rails_generators/nifty_authentication/templates/sessions_helper.rb +2 -0
  110. data/rails_generators/nifty_authentication/templates/tests/rspec/sessions_controller.rb +39 -0
  111. data/rails_generators/nifty_authentication/templates/tests/rspec/user.rb +83 -0
  112. data/rails_generators/nifty_authentication/templates/tests/rspec/users_controller.rb +26 -0
  113. data/rails_generators/nifty_authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
  114. data/rails_generators/nifty_authentication/templates/tests/shoulda/user.rb +85 -0
  115. data/rails_generators/nifty_authentication/templates/tests/shoulda/users_controller.rb +27 -0
  116. data/rails_generators/nifty_authentication/templates/tests/testunit/sessions_controller.rb +36 -0
  117. data/rails_generators/nifty_authentication/templates/tests/testunit/user.rb +88 -0
  118. data/rails_generators/nifty_authentication/templates/tests/testunit/users_controller.rb +23 -0
  119. data/rails_generators/nifty_authentication/templates/user.rb +42 -0
  120. data/rails_generators/nifty_authentication/templates/users_controller.rb +18 -0
  121. data/rails_generators/nifty_authentication/templates/users_helper.rb +2 -0
  122. data/rails_generators/nifty_authentication/templates/views/erb/login.html.erb +30 -0
  123. data/rails_generators/nifty_authentication/templates/views/erb/signup.html.erb +24 -0
  124. data/rails_generators/nifty_authentication/templates/views/haml/login.html.haml +30 -0
  125. data/rails_generators/nifty_authentication/templates/views/haml/signup.html.haml +24 -0
  126. data/rails_generators/nifty_config/USAGE +23 -0
  127. data/rails_generators/nifty_config/nifty_config_generator.rb +32 -0
  128. data/rails_generators/nifty_config/templates/config.yml +8 -0
  129. data/rails_generators/nifty_config/templates/load_config.rb +2 -0
  130. data/rails_generators/nifty_layout/USAGE +25 -0
  131. data/rails_generators/nifty_layout/nifty_layout_generator.rb +44 -0
  132. data/rails_generators/nifty_layout/templates/helper.rb +22 -0
  133. data/rails_generators/nifty_layout/templates/layout.html.erb +22 -0
  134. data/rails_generators/nifty_layout/templates/layout.html.haml +19 -0
  135. data/rails_generators/nifty_layout/templates/stylesheet.css +81 -0
  136. data/rails_generators/nifty_layout/templates/stylesheet.sass +67 -0
  137. data/rails_generators/nifty_scaffold/USAGE +51 -0
  138. data/rails_generators/nifty_scaffold/nifty_scaffold_generator.rb +232 -0
  139. data/rails_generators/nifty_scaffold/templates/actions/create.rb +9 -0
  140. data/rails_generators/nifty_scaffold/templates/actions/destroy.rb +6 -0
  141. data/rails_generators/nifty_scaffold/templates/actions/edit.rb +3 -0
  142. data/rails_generators/nifty_scaffold/templates/actions/index.rb +3 -0
  143. data/rails_generators/nifty_scaffold/templates/actions/new.rb +3 -0
  144. data/rails_generators/nifty_scaffold/templates/actions/show.rb +3 -0
  145. data/rails_generators/nifty_scaffold/templates/actions/update.rb +9 -0
  146. data/rails_generators/nifty_scaffold/templates/controller.rb +3 -0
  147. data/rails_generators/nifty_scaffold/templates/fixtures.yml +9 -0
  148. data/rails_generators/nifty_scaffold/templates/helper.rb +2 -0
  149. data/rails_generators/nifty_scaffold/templates/migration.rb +16 -0
  150. data/rails_generators/nifty_scaffold/templates/model.rb +3 -0
  151. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/create.rb +11 -0
  152. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  153. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  154. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/index.rb +4 -0
  155. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/new.rb +4 -0
  156. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/show.rb +4 -0
  157. data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/update.rb +11 -0
  158. data/rails_generators/nifty_scaffold/templates/tests/rspec/controller.rb +8 -0
  159. data/rails_generators/nifty_scaffold/templates/tests/rspec/model.rb +7 -0
  160. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  161. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  162. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  163. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  164. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  165. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  166. data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  167. data/rails_generators/nifty_scaffold/templates/tests/shoulda/controller.rb +5 -0
  168. data/rails_generators/nifty_scaffold/templates/tests/shoulda/model.rb +7 -0
  169. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/create.rb +11 -0
  170. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  171. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  172. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/index.rb +4 -0
  173. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/new.rb +4 -0
  174. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/show.rb +4 -0
  175. data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/update.rb +11 -0
  176. data/rails_generators/nifty_scaffold/templates/tests/testunit/controller.rb +5 -0
  177. data/rails_generators/nifty_scaffold/templates/tests/testunit/model.rb +7 -0
  178. data/rails_generators/nifty_scaffold/templates/views/erb/_form.html.erb +10 -0
  179. data/rails_generators/nifty_scaffold/templates/views/erb/edit.html.erb +14 -0
  180. data/rails_generators/nifty_scaffold/templates/views/erb/index.html.erb +29 -0
  181. data/rails_generators/nifty_scaffold/templates/views/erb/new.html.erb +7 -0
  182. data/rails_generators/nifty_scaffold/templates/views/erb/show.html.erb +20 -0
  183. data/rails_generators/nifty_scaffold/templates/views/haml/_form.html.haml +10 -0
  184. data/rails_generators/nifty_scaffold/templates/views/haml/edit.html.haml +14 -0
  185. data/rails_generators/nifty_scaffold/templates/views/haml/index.html.haml +25 -0
  186. data/rails_generators/nifty_scaffold/templates/views/haml/new.html.haml +7 -0
  187. data/rails_generators/nifty_scaffold/templates/views/haml/show.html.haml +20 -0
  188. data/test/test_helper.rb +119 -0
  189. data/test/test_nifty_authentication_generator.rb +274 -0
  190. data/test/test_nifty_config_generator.rb +37 -0
  191. data/test/test_nifty_layout_generator.rb +42 -0
  192. data/test/test_nifty_scaffold_generator.rb +534 -0
  193. metadata +255 -0
@@ -0,0 +1,18 @@
1
+ class <%= user_plural_class_name %>Controller < ApplicationController
2
+ def new
3
+ @<%= user_singular_name %> = <%= user_class_name %>.new
4
+ end
5
+
6
+ def create
7
+ @<%= user_singular_name %> = <%= user_class_name %>.new(params[:<%= user_singular_name %>])
8
+ if @<%= user_singular_name %>.save
9
+ <%- unless options[:authlogic] -%>
10
+ session[:<%= user_singular_name %>_id] = @<%= user_singular_name %>.id
11
+ <%- end -%>
12
+ flash[:notice] = "Thank you for signing up! You are now logged in."
13
+ redirect_to "/"
14
+ else
15
+ render :action => 'new'
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ module <%= user_plural_class_name %>Helper
2
+ end
@@ -0,0 +1,30 @@
1
+ <%% title "Log in" %>
2
+
3
+ <p>Don't have an account? <%%= link_to "Sign up!", signup_path %></p>
4
+
5
+ <%- if options[:authlogic] -%>
6
+ <%%= form_for @<%= session_singular_name %> do |f| %>
7
+ <%%= f.error_messages %>
8
+ <p>
9
+ <%%= f.label :username %><br />
10
+ <%%= f.text_field :username %>
11
+ </p>
12
+ <p>
13
+ <%%= f.label :password %><br />
14
+ <%%= f.password_field :password %>
15
+ </p>
16
+ <p><%%= f.submit "Log in" %></p>
17
+ <%% end %>
18
+ <%- else -%>
19
+ <%%= form_tag <%= session_plural_name %>_path do %>
20
+ <p>
21
+ <%%= label_tag :login, "Username or Email Address" %><br />
22
+ <%%= text_field_tag :login, params[:login] %>
23
+ </p>
24
+ <p>
25
+ <%%= label_tag :password %><br />
26
+ <%%= password_field_tag :password %>
27
+ </p>
28
+ <p><%%= submit_tag "Log in" %></p>
29
+ <%% end %>
30
+ <%- end -%>
@@ -0,0 +1,24 @@
1
+ <%% title "Sign up" %>
2
+
3
+ <p>Already have an account? <%%= link_to "Log in", login_path %>.</p>
4
+
5
+ <%%= form_for @<%= user_singular_name %> do |f| %>
6
+ <%%= f.error_messages %>
7
+ <p>
8
+ <%%= f.label :username %><br />
9
+ <%%= f.text_field :username %>
10
+ </p>
11
+ <p>
12
+ <%%= f.label :email, "Email Address" %><br />
13
+ <%%= f.text_field :email %>
14
+ </p>
15
+ <p>
16
+ <%%= f.label :password %><br />
17
+ <%%= f.password_field :password %>
18
+ </p>
19
+ <p>
20
+ <%%= f.label :password_confirmation, "Confirm Password" %><br />
21
+ <%%= f.password_field :password_confirmation %>
22
+ </p>
23
+ <p><%%= f.submit "Sign up" %></p>
24
+ <%% end %>
@@ -0,0 +1,30 @@
1
+ - title "Log in"
2
+
3
+ %p== Don't have an account? #{link_to "Sign up!", signup_path}
4
+
5
+ <%- if options[:authlogic] -%>
6
+ - form_for @<%= session_singular_name %> do |f|
7
+ = f.error_messages
8
+ %p
9
+ = f.label :username
10
+ %br
11
+ = f.text_field :username
12
+ %p
13
+ = f.label :password
14
+ %br
15
+ = f.password_field :password
16
+ %p
17
+ = f.submit "Log in"
18
+ <%- else -%>
19
+ - form_tag <%= session_plural_name %>_path do
20
+ %p
21
+ = label_tag :login, "Username or Email Address"
22
+ %br
23
+ = text_field_tag :login, params[:login]
24
+ %p
25
+ = label_tag :password
26
+ %br
27
+ = password_field_tag :password
28
+ %p
29
+ = submit_tag "Log in"
30
+ <%- end -%>
@@ -0,0 +1,24 @@
1
+ - title "Sign up"
2
+
3
+ %p== Already have an account? #{link_to "Log in", login_path}.
4
+
5
+ - form_for @<%= user_singular_name %> do |f|
6
+ = f.error_messages
7
+ %p
8
+ = f.label :username
9
+ %br
10
+ = f.text_field :username
11
+ %p
12
+ = f.label :email, "Email Address"
13
+ %br
14
+ = f.text_field :email
15
+ %p
16
+ = f.label :password
17
+ %br
18
+ = f.password_field :password
19
+ %p
20
+ = f.label :password_confirmation, "Confirm Password"
21
+ %br
22
+ = f.password_field :password_confirmation
23
+ %p
24
+ = f.submit "Sign up"
@@ -0,0 +1,23 @@
1
+ Description:
2
+ The nifty_config generator creates YAML file in your config
3
+ directory and an initializer to load this config. The config has a
4
+ separate section for each environment. This is a great place to put
5
+ any config settings you don't want in your app.
6
+
7
+ The config is loaded into a constant called APP_CONFIG by default,
8
+ this changes depending on the name you choose to pass the generator.
9
+ Use this constant to access the config settings like this.
10
+
11
+ APP_CONFIG[:some_setting]
12
+
13
+
14
+ Examples:
15
+ rails generate nifty:config
16
+
17
+ Config: config/app_config.yml
18
+ Initializer: config/initializers/load_app_config.rb
19
+
20
+ rails generate nifty:config passwords
21
+
22
+ Config: config/passwords_config.yml
23
+ Initializer: config/initializers/load_passwords_config.rb
@@ -0,0 +1,24 @@
1
+ require 'generators/nifty'
2
+
3
+ module Nifty
4
+ module Generators
5
+ class ConfigGenerator < Base
6
+ argument :config_name, :type => :string, :default => 'app', :banner => 'config_name'
7
+
8
+ def create_config
9
+ template "load_config.rb", "config/initializers/load_#{file_name}_config.rb"
10
+ copy_file "config.yml", "config/#{file_name}_config.yml"
11
+ end
12
+
13
+ private
14
+
15
+ def file_name
16
+ config_name.underscore
17
+ end
18
+
19
+ def constant_name
20
+ config_name.underscore.upcase
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ development:
2
+ domain: localhost:3000
3
+
4
+ test:
5
+ domain: test.host
6
+
7
+ production:
8
+ domain: example.com
@@ -0,0 +1,2 @@
1
+ raw_config = File.read("#{Rails.root}/config/<%= file_name %>_config.yml")
2
+ <%= constant_name %>_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys
@@ -0,0 +1,25 @@
1
+ Description:
2
+ The nifty_layout generator creates a basic layout, stylesheet and
3
+ helper which will give some structure to a starting Rails app.
4
+
5
+ The generator takes one argument which will be the name of the
6
+ layout and stylesheet files. If no argument is passed then it defaults
7
+ to "application".
8
+
9
+ The helper module includes some methods which can be called in any
10
+ template or partial to set variables to be used in the layout, such as
11
+ page title and javascript/stylesheet includes.
12
+
13
+ Examples:
14
+ rails generate nifty:layout
15
+
16
+ Layout: app/views/layouts/application.html.erb
17
+ Stylesheet: public/stylesheets/application.css
18
+ Helper: app/helpers/layout_helper.rb
19
+
20
+
21
+ rails generate nifty:layout admin
22
+
23
+ Layout: app/views/layouts/admin.html.erb
24
+ Stylesheet: public/stylesheets/admin.css
25
+ Helper: app/helpers/layout_helper.rb
@@ -0,0 +1,29 @@
1
+ require 'generators/nifty'
2
+
3
+ module Nifty
4
+ module Generators
5
+ class LayoutGenerator < Base
6
+ argument :layout_name, :type => :string, :default => 'application', :banner => 'layout_name'
7
+
8
+ class_option :haml, :desc => 'Generate HAML for view, and SASS for stylesheet.', :type => :boolean
9
+
10
+ def create_layout
11
+ if options.haml?
12
+ template 'layout.html.haml', "app/views/layouts/#{file_name}.html.haml"
13
+ copy_file 'stylesheet.sass', "public/stylesheets/sass/#{file_name}.sass"
14
+ else
15
+ template 'layout.html.erb', "app/views/layouts/#{file_name}.html.erb"
16
+ copy_file 'stylesheet.css', "public/stylesheets/#{file_name}.css"
17
+ end
18
+ copy_file 'layout_helper.rb', 'app/helpers/layout_helper.rb'
19
+ copy_file 'error_messages_helper.rb', 'app/helpers/error_messages_helper.rb'
20
+ end
21
+
22
+ private
23
+
24
+ def file_name
25
+ layout_name.underscore
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ module ErrorMessagesHelper
2
+ # Render error messages for the given objects. The :message and :header_message options are allowed.
3
+ def error_messages_for(*objects)
4
+ options = objects.extract_options!
5
+ options[:header_message] ||= "Invalid Fields"
6
+ options[:message] ||= "Correct the following errors and try again."
7
+ messages = objects.compact.map { |o| o.errors.full_messages }.flatten
8
+ unless messages.empty?
9
+ content_tag(:div, :class => "error_messages") do
10
+ list_items = messages.map { |msg| content_tag(:li, msg) }
11
+ content_tag(:h2, options[:header_message]) + content_tag(:p, options[:message]) + content_tag(:ul, list_items.join.html_safe)
12
+ end
13
+ end
14
+ end
15
+
16
+ module FormBuilderAdditions
17
+ def error_messages(options = {})
18
+ @template.error_messages_for(@object, options)
19
+ end
20
+ end
21
+ end
22
+
23
+ ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title><%%= yield(:title) || "Untitled" %></title>
5
+ <%%= stylesheet_link_tag "<%= file_name %>" %>
6
+ <%%= javascript_include_tag :defaults %>
7
+ <%%= csrf_meta_tag %>
8
+ <%%= yield(:head) %>
9
+ </head>
10
+ <body>
11
+ <div id="container">
12
+ <%% flash.each do |name, msg| %>
13
+ <%%= content_tag :div, msg, :id => "flash_#{name}" %>
14
+ <%% end %>
15
+ <%%= content_tag :h1, yield(:title) if show_title? %>
16
+ <%%= yield %>
17
+ </div>
18
+ </body>
19
+ </html>
@@ -0,0 +1,21 @@
1
+ !!!
2
+ %html
3
+
4
+ %head
5
+ %title
6
+ = yield(:title) || "Untitled"
7
+ %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
8
+ = stylesheet_link_tag "<%= file_name %>"
9
+ = javascript_include_tag :defaults
10
+ = csrf_meta_tag
11
+ = yield(:head)
12
+
13
+ %body
14
+ #container
15
+ - flash.each do |name, msg|
16
+ = content_tag :div, msg, :id => "flash_#{name}"
17
+
18
+ - if show_title?
19
+ %h1= yield(:title)
20
+
21
+ = yield
@@ -0,0 +1,22 @@
1
+ # These helper methods can be called in your template to set variables to be used in the layout
2
+ # This module should be included in all views globally,
3
+ # to do so you may need to add this line to your ApplicationController
4
+ # helper :layout
5
+ module LayoutHelper
6
+ def title(page_title, show_title = true)
7
+ content_for(:title) { page_title.to_s }
8
+ @show_title = show_title
9
+ end
10
+
11
+ def show_title?
12
+ @show_title
13
+ end
14
+
15
+ def stylesheet(*args)
16
+ content_for(:head) { stylesheet_link_tag(*args) }
17
+ end
18
+
19
+ def javascript(*args)
20
+ content_for(:head) { javascript_include_tag(*args) }
21
+ end
22
+ end
@@ -0,0 +1,75 @@
1
+ body {
2
+ background-color: #4B7399;
3
+ font-family: Verdana, Helvetica, Arial;
4
+ font-size: 14px;
5
+ }
6
+
7
+ a img {
8
+ border: none;
9
+ }
10
+
11
+ a {
12
+ color: #0000FF;
13
+ }
14
+
15
+ .clear {
16
+ clear: both;
17
+ height: 0;
18
+ overflow: hidden;
19
+ }
20
+
21
+ #container {
22
+ width: 75%;
23
+ margin: 0 auto;
24
+ background-color: #FFF;
25
+ padding: 20px 40px;
26
+ border: solid 1px black;
27
+ margin-top: 20px;
28
+ }
29
+
30
+ #flash_notice, #flash_error, #flash_alert {
31
+ padding: 5px 8px;
32
+ margin: 10px 0;
33
+ }
34
+
35
+ #flash_notice {
36
+ background-color: #CFC;
37
+ border: solid 1px #6C6;
38
+ }
39
+
40
+ #flash_error, #flash_alert {
41
+ background-color: #FCC;
42
+ border: solid 1px #C66;
43
+ }
44
+
45
+ .fieldWithErrors {
46
+ display: inline;
47
+ }
48
+
49
+ .error_messages {
50
+ width: 400px;
51
+ border: 2px solid #CF0000;
52
+ padding: 0px;
53
+ padding-bottom: 12px;
54
+ margin-bottom: 20px;
55
+ background-color: #f0f0f0;
56
+ font-size: 12px;
57
+ }
58
+
59
+ .error_messages h2 {
60
+ text-align: left;
61
+ font-weight: bold;
62
+ padding: 5px 10px;
63
+ font-size: 12px;
64
+ margin: 0;
65
+ background-color: #c00;
66
+ color: #fff;
67
+ }
68
+
69
+ .error_messages p {
70
+ margin: 8px 10px;
71
+ }
72
+
73
+ .error_messages ul {
74
+ margin: 0;
75
+ }
@@ -0,0 +1,66 @@
1
+ !primary_color = #4B7399
2
+
3
+ body
4
+ :background-color = !primary_color
5
+ :font
6
+ :family Verdana, Helvetica, Arial
7
+ :size 14px
8
+
9
+ a
10
+ :color #0000FF
11
+ img
12
+ :border none
13
+
14
+ .clear
15
+ :clear both
16
+ :height 0
17
+ :overflow hidden
18
+
19
+ #container
20
+ :width 75%
21
+ :margin 0 auto
22
+ :background #fff
23
+ :padding 20px 40px
24
+ :border solid 1px black
25
+ :margin-top 20px
26
+
27
+ #flash_notice,
28
+ #flash_error,
29
+ #flash_alert
30
+ :padding 5px 8px
31
+ :margin 10px 0
32
+
33
+ #flash_notice
34
+ :background-color #CFC
35
+ :border solid 1px #6C6
36
+
37
+ #flash_error,
38
+ #flash_alert
39
+ :background-color #FCC
40
+ :border solid 1px #C66
41
+
42
+ .fieldWithErrors
43
+ :display inline
44
+
45
+ .error_messages
46
+ :width 400px
47
+ :border 2px solid #CF0000
48
+ :padding 0
49
+ :padding-bottom 12px
50
+ :margin-bottom 20px
51
+ :background-color #f0f0f0
52
+ :font
53
+ :size 12px
54
+ h2
55
+ :text-align left
56
+ :padding 5px 5px 5px 15px
57
+ :margin 0
58
+ :font
59
+ :weight bold
60
+ :size 12px
61
+ :background-color #c00
62
+ :color #fff
63
+ p
64
+ :margin 8px 10px
65
+ ul
66
+ :margin 0
@@ -0,0 +1,51 @@
1
+ Description:
2
+ Scaffolds an entire resource, from model and migration to controller and
3
+ views. The resource is ready to use as a starting point for your restful,
4
+ resource-oriented application. Tests or specs are also generated depending
5
+ on if you have a "spec" directory or not.
6
+
7
+ IMPORTANT: This generator uses the "title" helper method which is generated
8
+ by the nifty_layout generator. You may want to run that generator first.
9
+
10
+ Usage:
11
+ Pass the name of the model, either CamelCased or under_scored, as the first
12
+ argument along with an optional list of attribute pairs and controller actions.
13
+
14
+ If no controller actions are specified, they will default to index, show,
15
+ new, create, edit, update, and destroy.
16
+
17
+ IMPORTANT: If no attribute pairs are specified, no model will be generated.
18
+ It will try to determine the attributes from an existing model.
19
+
20
+ Attribute pairs are column_name:sql_type arguments specifying the
21
+ model's attributes. Timestamps are added by default, so you don't have to
22
+ specify them by hand as 'created_at:datetime updated_at:datetime'.
23
+
24
+ For example, `nifty_scaffold post name:string content:text hidden:boolean`
25
+ gives you a model with those three attributes, a controller that handles
26
+ the create/show/update/destroy, forms to create and edit your posts, and
27
+ an index that lists them all, as well as a map.resources :posts
28
+ declaration in config/routes.rb.
29
+
30
+ Adding an "!" in the mix of arguments will invert the passed controller
31
+ actions. This will include all 7 controller actitons except the ones
32
+ mentioned. This option doesn't affect model attributes.
33
+
34
+ Examples:
35
+ rails generate nifty:scaffold post
36
+
37
+ Will create a controller called "posts" it will contain all seven
38
+ CRUD actions along with the views. A model will NOT be created,
39
+ instead it will look for an existing model and use those attributes.
40
+
41
+ rails generate nifty:scaffold post name:string content:text index new edit
42
+
43
+ Will create a Post model and migration file with the name and content
44
+ attributes. It will also create a controller with index, new, create,
45
+ edit, and update actions. Notice the create and update actions are
46
+ added automatically with new and edit.
47
+
48
+ rails generate nifty:scaffold post ! show new
49
+
50
+ Creates a posts controller (no model) with index, edit, update, and
51
+ destroy actions.