resource_controller_views 0.6.6.views2

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 (240) hide show
  1. data/LICENSE +22 -0
  2. data/README.rdoc +361 -0
  3. data/TODO +0 -0
  4. data/VERSION.yml +5 -0
  5. data/generators/scaffold_resource/USAGE +29 -0
  6. data/generators/scaffold_resource/scaffold_resource_generator.rb +179 -0
  7. data/generators/scaffold_resource/templates/controller.rb +2 -0
  8. data/generators/scaffold_resource/templates/fixtures.yml +10 -0
  9. data/generators/scaffold_resource/templates/functional_test.rb +57 -0
  10. data/generators/scaffold_resource/templates/helper.rb +2 -0
  11. data/generators/scaffold_resource/templates/migration.rb +15 -0
  12. data/generators/scaffold_resource/templates/model.rb +2 -0
  13. data/generators/scaffold_resource/templates/old_migration.rb +13 -0
  14. data/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
  15. data/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
  16. data/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
  17. data/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
  18. data/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
  19. data/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
  20. data/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
  21. data/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
  22. data/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
  23. data/generators/scaffold_resource/templates/unit_test.rb +7 -0
  24. data/generators/scaffold_resource/templates/view__form.erb +6 -0
  25. data/generators/scaffold_resource/templates/view__form.haml +5 -0
  26. data/generators/scaffold_resource/templates/view_edit.erb +16 -0
  27. data/generators/scaffold_resource/templates/view_edit.haml +11 -0
  28. data/generators/scaffold_resource/templates/view_index.erb +22 -0
  29. data/generators/scaffold_resource/templates/view_index.haml +19 -0
  30. data/generators/scaffold_resource/templates/view_new.erb +12 -0
  31. data/generators/scaffold_resource/templates/view_new.haml +9 -0
  32. data/generators/scaffold_resource/templates/view_show.erb +9 -0
  33. data/generators/scaffold_resource/templates/view_show.haml +9 -0
  34. data/lib/resource_controller.rb +43 -0
  35. data/lib/resource_controller/accessors.rb +77 -0
  36. data/lib/resource_controller/action_options.rb +40 -0
  37. data/lib/resource_controller/actions.rb +75 -0
  38. data/lib/resource_controller/base.rb +15 -0
  39. data/lib/resource_controller/class_methods.rb +24 -0
  40. data/lib/resource_controller/controller.rb +76 -0
  41. data/lib/resource_controller/failable_action_options.rb +25 -0
  42. data/lib/resource_controller/helpers.rb +29 -0
  43. data/lib/resource_controller/helpers/current_objects.rb +75 -0
  44. data/lib/resource_controller/helpers/internal.rb +80 -0
  45. data/lib/resource_controller/helpers/nested.rb +67 -0
  46. data/lib/resource_controller/helpers/pagination.rb +13 -0
  47. data/lib/resource_controller/helpers/searchlogic.rb +20 -0
  48. data/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
  49. data/lib/resource_controller/helpers/urls.rb +132 -0
  50. data/lib/resource_controller/helpers/views.rb +21 -0
  51. data/lib/resource_controller/partials.rb +25 -0
  52. data/lib/resource_controller/response_collector.rb +27 -0
  53. data/lib/resource_controller/singleton.rb +15 -0
  54. data/lib/resource_controller/views.rb +19 -0
  55. data/lib/urligence.rb +50 -0
  56. data/rails/init.rb +6 -0
  57. data/test/Rakefile +10 -0
  58. data/test/app/controllers/accounts_controller.rb +6 -0
  59. data/test/app/controllers/application_controller.rb +5 -0
  60. data/test/app/controllers/cms/options_controller.rb +3 -0
  61. data/test/app/controllers/cms/personnel_controller.rb +2 -0
  62. data/test/app/controllers/cms/photos_controller.rb +6 -0
  63. data/test/app/controllers/cms/products_controller.rb +3 -0
  64. data/test/app/controllers/comments_controller.rb +3 -0
  65. data/test/app/controllers/images_controller.rb +4 -0
  66. data/test/app/controllers/options_controller.rb +8 -0
  67. data/test/app/controllers/people_controller.rb +11 -0
  68. data/test/app/controllers/photos_controller.rb +14 -0
  69. data/test/app/controllers/posts_controller.rb +10 -0
  70. data/test/app/controllers/projects_controller.rb +3 -0
  71. data/test/app/controllers/somethings_controller.rb +3 -0
  72. data/test/app/controllers/tags_controller.rb +13 -0
  73. data/test/app/controllers/users_controller.rb +12 -0
  74. data/test/app/helpers/accounts_helper.rb +2 -0
  75. data/test/app/helpers/application_helper.rb +3 -0
  76. data/test/app/helpers/cms/products_helper.rb +2 -0
  77. data/test/app/helpers/comments_helper.rb +2 -0
  78. data/test/app/helpers/images_helper.rb +2 -0
  79. data/test/app/helpers/options_helper.rb +2 -0
  80. data/test/app/helpers/people_helper.rb +2 -0
  81. data/test/app/helpers/photos_helper.rb +2 -0
  82. data/test/app/helpers/posts_helper.rb +2 -0
  83. data/test/app/helpers/projects_helper.rb +2 -0
  84. data/test/app/helpers/somethings_helper.rb +2 -0
  85. data/test/app/helpers/tags_helper.rb +2 -0
  86. data/test/app/helpers/users_helper.rb +2 -0
  87. data/test/app/models/account.rb +4 -0
  88. data/test/app/models/comment.rb +3 -0
  89. data/test/app/models/image.rb +3 -0
  90. data/test/app/models/option.rb +3 -0
  91. data/test/app/models/personnel.rb +3 -0
  92. data/test/app/models/photo.rb +5 -0
  93. data/test/app/models/post.rb +3 -0
  94. data/test/app/models/product.rb +3 -0
  95. data/test/app/models/project.rb +2 -0
  96. data/test/app/models/something.rb +2 -0
  97. data/test/app/models/tag.rb +3 -0
  98. data/test/app/models/user.rb +3 -0
  99. data/test/app/views/accounts/_form.html.erb +4 -0
  100. data/test/app/views/accounts/edit.html.erb +14 -0
  101. data/test/app/views/accounts/new.html.erb +12 -0
  102. data/test/app/views/accounts/show.html.erb +5 -0
  103. data/test/app/views/cms/options/edit.rhtml +17 -0
  104. data/test/app/views/cms/options/index.rhtml +20 -0
  105. data/test/app/views/cms/options/new.rhtml +16 -0
  106. data/test/app/views/cms/options/show.rhtml +8 -0
  107. data/test/app/views/cms/photos/edit.rhtml +17 -0
  108. data/test/app/views/cms/photos/index.rhtml +20 -0
  109. data/test/app/views/cms/photos/new.rhtml +16 -0
  110. data/test/app/views/cms/photos/show.rhtml +8 -0
  111. data/test/app/views/cms/products/edit.rhtml +17 -0
  112. data/test/app/views/cms/products/index.rhtml +20 -0
  113. data/test/app/views/cms/products/new.rhtml +16 -0
  114. data/test/app/views/cms/products/show.rhtml +8 -0
  115. data/test/app/views/comments/edit.rhtml +27 -0
  116. data/test/app/views/comments/index.rhtml +24 -0
  117. data/test/app/views/comments/new.rhtml +26 -0
  118. data/test/app/views/comments/show.rhtml +18 -0
  119. data/test/app/views/images/_form.html.erb +4 -0
  120. data/test/app/views/images/edit.html.erb +14 -0
  121. data/test/app/views/images/new.html.erb +12 -0
  122. data/test/app/views/layouts/application.rhtml +17 -0
  123. data/test/app/views/layouts/comments.rhtml +17 -0
  124. data/test/app/views/layouts/options.rhtml +17 -0
  125. data/test/app/views/layouts/people.rhtml +17 -0
  126. data/test/app/views/layouts/photos.rhtml +17 -0
  127. data/test/app/views/layouts/projects.rhtml +17 -0
  128. data/test/app/views/layouts/somethings.rhtml +17 -0
  129. data/test/app/views/layouts/tags.rhtml +17 -0
  130. data/test/app/views/options/_form.html.erb +8 -0
  131. data/test/app/views/options/edit.html.erb +16 -0
  132. data/test/app/views/options/index.html.erb +21 -0
  133. data/test/app/views/options/new.html.erb +12 -0
  134. data/test/app/views/options/show.html.erb +10 -0
  135. data/test/app/views/people/_form.rhtml +4 -0
  136. data/test/app/views/people/index.rhtml +20 -0
  137. data/test/app/views/people/show.rhtml +8 -0
  138. data/test/app/views/photos/_form.rhtml +4 -0
  139. data/test/app/views/photos/_info.rhtml +1 -0
  140. data/test/app/views/photos/index.rhtml +20 -0
  141. data/test/app/views/photos/show.rhtml +8 -0
  142. data/test/app/views/posts/edit.rhtml +22 -0
  143. data/test/app/views/posts/index.rhtml +22 -0
  144. data/test/app/views/posts/new.rhtml +21 -0
  145. data/test/app/views/posts/show.rhtml +13 -0
  146. data/test/app/views/projects/edit.rhtml +17 -0
  147. data/test/app/views/projects/index.rhtml +20 -0
  148. data/test/app/views/projects/new.rhtml +16 -0
  149. data/test/app/views/projects/show.rhtml +8 -0
  150. data/test/app/views/scaffold/edit.rhtml +18 -0
  151. data/test/app/views/scaffold/new.rhtml +13 -0
  152. data/test/app/views/somethings/edit.rhtml +17 -0
  153. data/test/app/views/somethings/index.rhtml +20 -0
  154. data/test/app/views/somethings/new.rhtml +16 -0
  155. data/test/app/views/somethings/show.rhtml +8 -0
  156. data/test/app/views/tags/edit.rhtml +17 -0
  157. data/test/app/views/tags/index.rhtml +20 -0
  158. data/test/app/views/tags/index.rjs +0 -0
  159. data/test/app/views/tags/new.rhtml +16 -0
  160. data/test/app/views/tags/show.rhtml +8 -0
  161. data/test/app/views/users/edit.rhtml +17 -0
  162. data/test/app/views/users/index.rhtml +20 -0
  163. data/test/app/views/users/new.rhtml +16 -0
  164. data/test/app/views/users/show.rhtml +8 -0
  165. data/test/config/boot.rb +110 -0
  166. data/test/config/database.yml +9 -0
  167. data/test/config/environment.rb +49 -0
  168. data/test/config/environments/development.rb +17 -0
  169. data/test/config/environments/test.rb +19 -0
  170. data/test/config/initializers/inflections.rb +14 -0
  171. data/test/config/routes.rb +61 -0
  172. data/test/db/migrate/001_create_posts.rb +12 -0
  173. data/test/db/migrate/002_create_products.rb +11 -0
  174. data/test/db/migrate/003_create_comments.rb +13 -0
  175. data/test/db/migrate/004_create_options.rb +13 -0
  176. data/test/db/migrate/005_create_photos.rb +11 -0
  177. data/test/db/migrate/006_create_tags.rb +17 -0
  178. data/test/db/migrate/007_create_somethings.rb +11 -0
  179. data/test/db/migrate/008_create_accounts.rb +11 -0
  180. data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
  181. data/test/db/migrate/010_create_projects.rb +11 -0
  182. data/test/db/migrate/011_create_images.rb +12 -0
  183. data/test/db/migrate/012_create_users.rb +11 -0
  184. data/test/db/migrate/013_create_personnel.rb +11 -0
  185. data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  186. data/test/db/schema.rb +78 -0
  187. data/test/script/console +3 -0
  188. data/test/script/destroy +3 -0
  189. data/test/script/generate +3 -0
  190. data/test/script/server +3 -0
  191. data/test/test/fixtures/accounts.yml +7 -0
  192. data/test/test/fixtures/comments.yml +11 -0
  193. data/test/test/fixtures/images.yml +6 -0
  194. data/test/test/fixtures/options.yml +9 -0
  195. data/test/test/fixtures/personnel.yml +5 -0
  196. data/test/test/fixtures/photos.yml +9 -0
  197. data/test/test/fixtures/photos_tags.yml +3 -0
  198. data/test/test/fixtures/posts.yml +9 -0
  199. data/test/test/fixtures/products.yml +7 -0
  200. data/test/test/fixtures/projects.yml +7 -0
  201. data/test/test/fixtures/somethings.yml +7 -0
  202. data/test/test/fixtures/tags.yml +7 -0
  203. data/test/test/fixtures/users.yml +5 -0
  204. data/test/test/functional/cms/options_controller_test.rb +23 -0
  205. data/test/test/functional/cms/photos_controller_test.rb +43 -0
  206. data/test/test/functional/cms/products_controller_test.rb +23 -0
  207. data/test/test/functional/comments_controller_test.rb +19 -0
  208. data/test/test/functional/images_controller_test.rb +30 -0
  209. data/test/test/functional/people_controller_test.rb +35 -0
  210. data/test/test/functional/photos_controller_test.rb +123 -0
  211. data/test/test/functional/posts_controller_test.rb +27 -0
  212. data/test/test/functional/projects_controller_test.rb +21 -0
  213. data/test/test/functional/somethings_controller_test.rb +21 -0
  214. data/test/test/functional/tags_controller_test.rb +57 -0
  215. data/test/test/functional/users_controller_test.rb +17 -0
  216. data/test/test/test_helper.rb +13 -0
  217. data/test/test/unit/accessors_test.rb +110 -0
  218. data/test/test/unit/account_test.rb +7 -0
  219. data/test/test/unit/action_options_test.rb +109 -0
  220. data/test/test/unit/base_test.rb +11 -0
  221. data/test/test/unit/comment_test.rb +10 -0
  222. data/test/test/unit/failable_action_options_test.rb +77 -0
  223. data/test/test/unit/helpers/current_objects_test.rb +133 -0
  224. data/test/test/unit/helpers/internal_test.rb +106 -0
  225. data/test/test/unit/helpers/nested_test.rb +86 -0
  226. data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
  227. data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
  228. data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
  229. data/test/test/unit/helpers/urls_test.rb +75 -0
  230. data/test/test/unit/helpers_test.rb +25 -0
  231. data/test/test/unit/image_test.rb +7 -0
  232. data/test/test/unit/option_test.rb +10 -0
  233. data/test/test/unit/photo_test.rb +10 -0
  234. data/test/test/unit/post_test.rb +10 -0
  235. data/test/test/unit/project_test.rb +10 -0
  236. data/test/test/unit/response_collector_test.rb +49 -0
  237. data/test/test/unit/something_test.rb +10 -0
  238. data/test/test/unit/tag_test.rb +10 -0
  239. data/test/test/unit/urligence_test.rb +203 -0
  240. metadata +394 -0
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * controller_class_nesting_depth %>/../../spec_helper')
2
+
3
+ describe "/<%= table_name %>/edit.<%= default_file_extension %>" do
4
+ include <%= controller_class_name %>Helper
5
+
6
+ before do
7
+ @<%= file_name %> = mock_model(<%= class_name %>)
8
+ <% for attribute in attributes -%>
9
+ @<%= file_name %>.stub!(:<%= attribute.name %>).and_return(<%= attribute.default_value %>)
10
+ <% end -%>
11
+ assigns[:<%= file_name %>] = @<%= file_name %>
12
+
13
+ template.should_receive(:object_url).twice.and_return(<%= file_name %>_path(@<%= file_name %>))
14
+ template.should_receive(:collection_url).and_return(<%= file_name.pluralize %>_path)
15
+ end
16
+
17
+ it "should render edit form" do
18
+ render "/<%= table_name %>/edit.<%= default_file_extension %>"
19
+
20
+ response.should have_tag("form[action=#{<%= file_name %>_path(@<%= file_name %>)}][method=post]") do
21
+ <% for attribute in attributes -%><% unless attribute.name =~ /_id/ || [:datetime, :timestamp, :time, :date].index(attribute.type) -%>
22
+ with_tag('<%= attribute.input_type -%>#<%= file_name %>_<%= attribute.name %>[name=?]', "<%= file_name %>[<%= attribute.name %>]")
23
+ <% end -%><% end -%>
24
+ end
25
+ end
26
+ end
27
+
28
+
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * controller_class_nesting_depth %>/../../spec_helper')
2
+
3
+ describe "/<%= table_name %>/index.<%= default_file_extension %>" do
4
+ include <%= controller_class_name %>Helper
5
+
6
+ before(:each) do
7
+ <% [98,99].each do |id| -%>
8
+ <%= file_name %>_<%= id %> = mock_model(<%= class_name %>)
9
+ <% for attribute in attributes -%>
10
+ <%= file_name %>_<%= id %>.should_receive(:<%= attribute.name %>).and_return(<%= attribute.default_value %>)
11
+ <% end -%><% end %>
12
+ assigns[:<%= table_name %>] = [<%= file_name %>_98, <%= file_name %>_99]
13
+
14
+ template.stub!(:object_url).and_return(<%= file_name %>_path(<%= file_name %>_99))
15
+ template.stub!(:new_object_url).and_return(new_<%= file_name %>_path)
16
+ template.stub!(:edit_object_url).and_return(edit_<%= file_name %>_path(<%= file_name %>_99))
17
+ end
18
+
19
+ it "should render list of <%= table_name %>" do
20
+ render "/<%= table_name %>/index.<%= default_file_extension %>"
21
+ <% for attribute in attributes -%><% unless attribute.name =~ /_id/ || [:datetime, :timestamp, :time, :date].index(attribute.type) -%>
22
+ response.should have_tag("tr>td", <%= attribute.default_value %>, 2)
23
+ <% end -%><% end -%>
24
+ end
25
+ end
26
+
@@ -0,0 +1,30 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * controller_class_nesting_depth %>/../../spec_helper')
2
+
3
+ describe "/<%= table_name %>/new.<%= default_file_extension %>" do
4
+ include <%= controller_class_name %>Helper
5
+
6
+ before(:each) do
7
+ @<%= file_name %> = mock_model(<%= class_name %>)
8
+ @<%= file_name %>.stub!(:new_record?).and_return(true)
9
+ <% for attribute in attributes -%>
10
+ @<%= file_name %>.stub!(:<%= attribute.name %>).and_return(<%= attribute.default_value %>)
11
+ <% end -%>
12
+ assigns[:<%= file_name %>] = @<%= file_name %>
13
+
14
+
15
+ template.stub!(:object_url).and_return(<%= file_name %>_path(@<%= file_name %>))
16
+ template.stub!(:collection_url).and_return(<%= file_name.pluralize %>_path)
17
+ end
18
+
19
+ it "should render new form" do
20
+ render "/<%= table_name %>/new.<%= default_file_extension %>"
21
+
22
+ response.should have_tag("form[action=?][method=post]", <%= table_name %>_path) do
23
+ <% for attribute in attributes -%><% unless attribute.name =~ /_id/ || [:datetime, :timestamp, :time, :date].index(attribute.type) -%>
24
+ with_tag("<%= attribute.input_type -%>#<%= file_name %>_<%= attribute.name %>[name=?]", "<%= file_name %>[<%= attribute.name %>]")
25
+ <% end -%><% end -%>
26
+ end
27
+ end
28
+ end
29
+
30
+
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '<%= '/..' * controller_class_nesting_depth %>/../../spec_helper')
2
+
3
+ describe "/<%= table_name %>/show.<%= default_file_extension %>" do
4
+ include <%= controller_class_name %>Helper
5
+
6
+ before(:each) do
7
+ @<%= file_name %> = mock_model(<%= class_name %>)
8
+ <% for attribute in attributes -%>
9
+ @<%= file_name %>.stub!(:<%= attribute.name %>).and_return(<%= attribute.default_value %>)
10
+ <% end -%>
11
+
12
+ assigns[:<%= file_name %>] = @<%= file_name %>
13
+
14
+ template.stub!(:edit_object_url).and_return(edit_<%= file_name %>_path(@<%= file_name %>))
15
+ template.stub!(:collection_url).and_return(<%= file_name.pluralize %>_path)
16
+ end
17
+
18
+ it "should render attributes in <p>" do
19
+ render "/<%= table_name %>/show.<%= default_file_extension %>"
20
+ <% for attribute in attributes -%><% unless attribute.name =~ /_id/ || [:datetime, :timestamp, :time, :date].index(attribute.type) -%>
21
+ response.should have_text(/<%= Regexp.escape(attribute.default_value)[1..-2]%>/)
22
+ <% end -%><% end -%>
23
+ end
24
+ end
25
+
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * controller_class_nesting_depth %>/../test_helper'
2
+ require '<%= controller_file_path %>_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class <%= controller_class_name %>Controller; def rescue_action(e) raise e end; end
6
+
7
+ class <%= controller_class_name %>ControllerTest < Test::Unit::TestCase
8
+ def setup
9
+ @controller = <%= controller_class_name %>Controller.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @<%= singular_name %> = <%= plural_name %> :one
13
+ end
14
+
15
+ should_be_restful do |resource|
16
+ resource.formats = [:html]
17
+ end
18
+
19
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
2
+
3
+ class <%= class_name %>Test < Test::Unit::TestCase
4
+ def test_truth
5
+ assert true
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ <%- for attribute in attributes -%>
2
+ <p>
3
+ <label for="<%= singular_name %>_<%= attribute.name %>"><%= attribute.column.human_name %>:</label>
4
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
5
+ </p>
6
+ <% end -%>
@@ -0,0 +1,5 @@
1
+ <%- for attribute in attributes -%>
2
+ %p
3
+ %label{:for => "<%= singular_name %>_<%= attribute.name %>"} <%= attribute.column.human_name %>:
4
+ = f.<%= attribute.field_type %> :<%= attribute.name %>
5
+ <% end -%>
@@ -0,0 +1,16 @@
1
+ <h1>Editing <%= singular_name.titleize %></h1>
2
+
3
+ <%%= error_messages_for :<%= singular_name %> %>
4
+
5
+ <%% form_for(:<%= singular_name %>, :url => object_url, :html => { :method => :put }) do |f| %>
6
+ <%%= render :partial => "form", :locals => { :f => f } %>
7
+ <p>
8
+ <%%=submit_tag "Update"%>
9
+ </p>
10
+ <%% end %>
11
+
12
+ <br/>
13
+
14
+ <%%= link_to 'Show', object_url %>
15
+ |
16
+ <%%= link_to 'Back', collection_url %>
@@ -0,0 +1,11 @@
1
+ %h1 Editing <%= singular_name %>
2
+
3
+ = error_messages_for :<%= singular_name %>
4
+
5
+ - form_for(:<%= singular_name %>, :url => object_url, :html => { :method => :put }) do |f|
6
+ = render :partial => "form", :locals => { :f => f }
7
+ %p= submit_tag "Update"
8
+
9
+ = link_to 'Show', object_url
10
+ |
11
+ = link_to 'Back', collection_url
@@ -0,0 +1,22 @@
1
+ <h1>Listing <%= plural_name.titleize %></h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <% for attribute in attributes -%>
6
+ <th><%= attribute.column.human_name %></th>
7
+ <% end -%>
8
+ </tr>
9
+ <%%- @<%= plural_name %>.each do |<%= singular_name %>|%>
10
+ <tr>
11
+ <%- for attribute in attributes -%>
12
+ <td><%%=h <%= singular_name %>.<%= attribute.name %> %></td>
13
+ <%- end -%>
14
+ <td><%%=link_to 'Show', object_url(<%= singular_name %>) %></td>
15
+ <td><%%=link_to 'Edit', edit_object_url(<%= singular_name %>) %></td>
16
+ <td><%%=link_to 'Destroy', object_url(<%= singular_name %>), :confirm => 'Are you sure?', :method => :delete %></td>
17
+ </tr>
18
+ <%% end %>
19
+ </table>
20
+ <br/>
21
+
22
+ <%%= link_to 'New <%= singular_name.titleize %>', new_object_url %>
@@ -0,0 +1,19 @@
1
+ %h1 Listing <%= plural_name %>
2
+
3
+ %table
4
+ %tr
5
+ <% for attribute in attributes -%>
6
+ %th <%= attribute.column.human_name %>
7
+ <% end -%>
8
+ - @<%= plural_name %>.each do |<%= singular_name %>|
9
+ %tr
10
+ <% for attribute in attributes -%>
11
+ %td= h <%= singular_name %>.<%= attribute.name %>
12
+ <% end -%>
13
+ %td= link_to 'Show', object_url(<%= singular_name %>)
14
+ %td= link_to 'Edit', edit_object_url(<%= singular_name %>)
15
+ %td= link_to 'Destroy', object_url(<%= singular_name %>), :confirm => 'Are you sure?', :method => :delete
16
+
17
+ %br/
18
+
19
+ =link_to 'New <%= singular_name %>', new_object_url
@@ -0,0 +1,12 @@
1
+ <h1>New <%= singular_name.titleize %></h1>
2
+
3
+ <%%= error_messages_for :<%= singular_name %> %>
4
+
5
+ <%% form_for(:<%= singular_name %>, :url => collection_url) do |f| %>
6
+ <%%= render :partial => "form", :locals => { :f => f } %>
7
+ <p>
8
+ <%%= submit_tag "Create" %>
9
+ </p>
10
+ <%% end %>
11
+ <br/>
12
+ <%%= link_to 'Back', collection_url %>
@@ -0,0 +1,9 @@
1
+ %h1 New <%= singular_name %>
2
+
3
+ = error_messages_for :<%= singular_name %>
4
+
5
+ - form_for(:<%= singular_name %>, :url => collection_url) do |f|
6
+ = render :partial => "form", :locals => { :f => f }
7
+ %p= submit_tag "Create"
8
+
9
+ = link_to 'Back', collection_url
@@ -0,0 +1,9 @@
1
+ <% for attribute in attributes -%>
2
+ <p>
3
+ <strong><%= attribute.column.human_name %>:</strong><%%=h @<%= singular_name %>.<%= attribute.name %> %>
4
+ </p>
5
+ <% end -%>
6
+
7
+ <%%= link_to 'Edit', edit_object_url %>
8
+ |
9
+ <%%= link_to 'Back', collection_url %>
@@ -0,0 +1,9 @@
1
+ <% for attribute in attributes -%>
2
+ %p
3
+ %strong <%= attribute.column.human_name %>:
4
+ =h @<%= singular_name %>.<%= attribute.name %>
5
+ <% end -%>
6
+
7
+ = link_to 'Edit', edit_object_url
8
+ |
9
+ = link_to 'Back', collection_url
@@ -0,0 +1,43 @@
1
+ begin
2
+ require_dependency 'application_controller'
3
+ rescue LoadError => e
4
+ require_dependency 'application'
5
+ end
6
+
7
+ module ResourceController
8
+ ACTIONS = [:index, :show, :new_action, :create, :edit, :update, :destroy].freeze
9
+ SINGLETON_ACTIONS = (ACTIONS - [:index]).freeze
10
+ FAILABLE_ACTIONS = ACTIONS - [:index, :new_action, :edit].freeze
11
+ NAME_ACCESSORS = [:model_name, :route_name, :object_name]
12
+
13
+ module ActionControllerExtension
14
+ unloadable
15
+
16
+ # Adds resource_controller functionality to a view. Options can be passed into this method to modify the view and action behaviours.
17
+ #
18
+ # Options Include:
19
+ #
20
+ # :searchlogic => Pull searchlogic options from the @search variable. Also provides @search to views.
21
+ # :scaffold_root => The path which contains the default views to use if they're not present in the controllers view path.
22
+ # :pagination => Use pagination. Pulls the per_page option from either the resource_controller declaration, or params (defaults to 20 otherwise).
23
+ # :per_page => How many items to display per page. Activates pagination if not explicitly activated.
24
+ #
25
+ # Notes:
26
+ # All options given to resource_controller are available to the views and controllers through the method resource_controller_options which is a Hash.
27
+ # This can be useful to define things such as headings, etc at the view level.
28
+ def resource_controller(*args)
29
+ cattr_accessor :resource_controller_options
30
+ self.resource_controller_options = args.detect { |arg| arg.is_a?(Hash) } || Hash.new
31
+
32
+ include ResourceController::Controller
33
+ include ResourceController::Helpers::Pagination if resource_controller_options[:per_page] || resource_controller_options[:pagination]
34
+ include ResourceController::Helpers::Searchlogic if resource_controller_options[:searchlogic] == true
35
+
36
+ if args.include?(:singleton)
37
+ include ResourceController::Helpers::SingletonCustomizations
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ require File.dirname(__FILE__)+'/../rails/init.rb' unless ActionController::Base.include?(Urligence)
@@ -0,0 +1,77 @@
1
+ module ResourceController # :nodoc:
2
+ module Accessors # :nodoc:
3
+ private
4
+ def block_accessor(*accessors)
5
+ accessors.each do |block_accessor|
6
+ class_eval <<-"end_eval", __FILE__, __LINE__
7
+
8
+ def #{block_accessor}(*args, &block)
9
+ unless args.empty? && block.nil?
10
+ args.push block if block_given?
11
+ @#{block_accessor} = [args].flatten
12
+ end
13
+
14
+ @#{block_accessor}
15
+ end
16
+
17
+ end_eval
18
+ end
19
+ end
20
+
21
+ def scoping_reader(*accessor_names)
22
+ accessor_names.each do |accessor_name|
23
+ class_eval <<-"end_eval", __FILE__, __LINE__
24
+ def #{accessor_name}(&block)
25
+ @#{accessor_name}.instance_eval &block if block_given?
26
+ @#{accessor_name}
27
+ end
28
+ end_eval
29
+ end
30
+ end
31
+
32
+ def class_scoping_reader(accessor_name, start_value)
33
+ write_inheritable_attribute accessor_name, start_value
34
+
35
+ class_eval <<-"end_eval", __FILE__, __LINE__
36
+ def self.#{accessor_name}(&block)
37
+ read_inheritable_attribute(:#{accessor_name}).instance_eval(&block) if block_given?
38
+ read_inheritable_attribute(:#{accessor_name})
39
+ end
40
+ end_eval
41
+ end
42
+
43
+ def reader_writer(accessor_name)
44
+ class_eval <<-"end_eval", __FILE__, __LINE__
45
+ def #{accessor_name}(*args, &block)
46
+ args << block unless block.nil?
47
+ @#{accessor_name} = args.first unless args.empty?
48
+ @#{accessor_name}
49
+ end
50
+ end_eval
51
+ end
52
+
53
+ def class_reader_writer(*accessor_names)
54
+ accessor_names.each do |accessor_name|
55
+ class_eval <<-"end_eval", __FILE__, __LINE__
56
+ def self.#{accessor_name}(*args)
57
+ unless args.empty?
58
+ write_inheritable_attribute :#{accessor_name}, args.first if args.length == 1
59
+ write_inheritable_attribute :#{accessor_name}, args if args.length > 1
60
+ end
61
+
62
+ read_inheritable_attribute :#{accessor_name}
63
+ end
64
+
65
+ def #{accessor_name}(*args)
66
+ unless args.empty?
67
+ self.class.write_inheritable_attribute :#{accessor_name}, args.first if args.length == 1
68
+ self.class.write_inheritable_attribute :#{accessor_name}, args if args.length > 1
69
+ end
70
+
71
+ self.class.read_inheritable_attribute :#{accessor_name}
72
+ end
73
+ end_eval
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,40 @@
1
+ module ResourceController
2
+ class ActionOptions
3
+ extend ResourceController::Accessors
4
+
5
+ reader_writer :flash
6
+ reader_writer :flash_now
7
+
8
+ block_accessor :after, :before
9
+
10
+ def initialize
11
+ @collector = ResourceController::ResponseCollector.new
12
+ end
13
+
14
+ def response(*args, &block)
15
+ if !args.empty? || block_given?
16
+ @collector.clear
17
+ args.flatten.each { |symbol| @collector.send(symbol) }
18
+ block.call(@collector) if block_given?
19
+ end
20
+
21
+ @collector.responses
22
+ end
23
+ alias_method :respond_to, :response
24
+ alias_method :responds_to, :response
25
+
26
+ def wants
27
+ @collector
28
+ end
29
+
30
+ def dup
31
+ returning self.class.new do |duplicate|
32
+ duplicate.instance_variable_set(:@collector, wants.dup)
33
+ duplicate.instance_variable_set(:@before, before.dup) unless before.nil?
34
+ duplicate.instance_variable_set(:@after, after.dup) unless after.nil?
35
+ duplicate.instance_variable_set(:@flash, flash.dup) unless flash.nil?
36
+ duplicate.instance_variable_set(:@flash_now, flash_now.dup) unless flash_now.nil?
37
+ end
38
+ end
39
+ end
40
+ end