easy_admin_ui 0.4.0 → 0.5.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 (80) hide show
  1. data/README +4 -15
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/{assets/icons → app/assets/images/easy_admin_ui}/classify.png +0 -0
  5. data/{assets/icons → app/assets/images/easy_admin_ui}/connect.png +0 -0
  6. data/{assets/icons → app/assets/images/easy_admin_ui}/delete.png +0 -0
  7. data/{assets/icons → app/assets/images/easy_admin_ui}/disconnect.png +0 -0
  8. data/{assets/icons → app/assets/images/easy_admin_ui}/pencil.png +0 -0
  9. data/{assets/icons → app/assets/images/easy_admin_ui}/show.png +0 -0
  10. data/app/assets/stylesheets/easy_admin_ui/easy_admin_ui.sass +47 -0
  11. data/app/views/easy_admin_ui/destroy.js.erb +1 -0
  12. data/{templates → app/views}/easy_admin_ui/edit.html.erb +0 -0
  13. data/{templates → app/views}/easy_admin_ui/index.html.erb +0 -0
  14. data/{templates → app/views}/easy_admin_ui/new.html.erb +0 -0
  15. data/{templates → app/views}/easy_admin_ui/show.html.erb +0 -0
  16. data/easy_admin_ui.gemspec +80 -21
  17. data/lib/easy_admin_ui/core_ext.rb +1 -3
  18. data/lib/easy_admin_ui/rails/engine.rb +10 -0
  19. data/lib/easy_admin_ui/tasks.rb +0 -10
  20. data/lib/easy_admin_ui/view_helpers.rb +3 -3
  21. data/lib/easy_admin_ui.rb +1 -9
  22. data/vendor/plugins/make_resourceful/.gitignore +1 -0
  23. data/vendor/plugins/make_resourceful/DEFAULTS +148 -0
  24. data/vendor/plugins/make_resourceful/LICENSE +7 -0
  25. data/vendor/plugins/make_resourceful/README.rdoc +239 -0
  26. data/vendor/plugins/make_resourceful/Rakefile +31 -0
  27. data/vendor/plugins/make_resourceful/VERSION +1 -0
  28. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/resourceful_scaffold_generator.rb +87 -0
  29. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/controller.rb +5 -0
  30. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/fixtures.yml +10 -0
  31. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/functional_test.rb +50 -0
  32. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/helper.rb +2 -0
  33. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/migration.rb +13 -0
  34. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/model.rb +2 -0
  35. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/unit_test.rb +7 -0
  36. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view__form.haml +5 -0
  37. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_edit.haml +11 -0
  38. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_index.haml +5 -0
  39. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_new.haml +9 -0
  40. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_partial.haml +12 -0
  41. data/vendor/plugins/make_resourceful/generators/resourceful_scaffold/templates/view_show.haml +14 -0
  42. data/vendor/plugins/make_resourceful/init.rb +3 -0
  43. data/vendor/plugins/make_resourceful/lib/resourceful/base.rb +63 -0
  44. data/vendor/plugins/make_resourceful/lib/resourceful/builder.rb +385 -0
  45. data/vendor/plugins/make_resourceful/lib/resourceful/default/accessors.rb +402 -0
  46. data/vendor/plugins/make_resourceful/lib/resourceful/default/actions.rb +101 -0
  47. data/vendor/plugins/make_resourceful/lib/resourceful/default/callbacks.rb +51 -0
  48. data/vendor/plugins/make_resourceful/lib/resourceful/default/responses.rb +118 -0
  49. data/vendor/plugins/make_resourceful/lib/resourceful/default/urls.rb +137 -0
  50. data/vendor/plugins/make_resourceful/lib/resourceful/maker.rb +84 -0
  51. data/vendor/plugins/make_resourceful/lib/resourceful/response.rb +33 -0
  52. data/vendor/plugins/make_resourceful/lib/resourceful/serialize.rb +185 -0
  53. data/vendor/plugins/make_resourceful/spec/accessors_spec.rb +474 -0
  54. data/vendor/plugins/make_resourceful/spec/actions_spec.rb +310 -0
  55. data/vendor/plugins/make_resourceful/spec/base_spec.rb +12 -0
  56. data/vendor/plugins/make_resourceful/spec/builder_spec.rb +332 -0
  57. data/vendor/plugins/make_resourceful/spec/callbacks_spec.rb +71 -0
  58. data/vendor/plugins/make_resourceful/spec/integration_spec.rb +394 -0
  59. data/vendor/plugins/make_resourceful/spec/maker_spec.rb +91 -0
  60. data/vendor/plugins/make_resourceful/spec/response_spec.rb +37 -0
  61. data/vendor/plugins/make_resourceful/spec/responses_spec.rb +314 -0
  62. data/vendor/plugins/make_resourceful/spec/rspec-rails/LICENSE +37 -0
  63. data/vendor/plugins/make_resourceful/spec/rspec-rails/redirect_to.rb +113 -0
  64. data/vendor/plugins/make_resourceful/spec/rspec-rails/render_template.rb +90 -0
  65. data/vendor/plugins/make_resourceful/spec/serialize_spec.rb +133 -0
  66. data/vendor/plugins/make_resourceful/spec/spec_helper.rb +319 -0
  67. data/vendor/plugins/make_resourceful/spec/urls_spec.rb +282 -0
  68. data/vendor/plugins/make_resourceful/spec/views/things/create.rjs +1 -0
  69. data/vendor/plugins/make_resourceful/spec/views/things/destroy.rjs +1 -0
  70. data/vendor/plugins/make_resourceful/spec/views/things/edit.html.erb +4 -0
  71. data/vendor/plugins/make_resourceful/spec/views/things/edit.rjs +1 -0
  72. data/vendor/plugins/make_resourceful/spec/views/things/index.html.erb +4 -0
  73. data/vendor/plugins/make_resourceful/spec/views/things/index.rjs +1 -0
  74. data/vendor/plugins/make_resourceful/spec/views/things/new.html.erb +4 -0
  75. data/vendor/plugins/make_resourceful/spec/views/things/new.rjs +1 -0
  76. data/vendor/plugins/make_resourceful/spec/views/things/show.html.erb +4 -0
  77. data/vendor/plugins/make_resourceful/spec/views/things/show.rjs +1 -0
  78. data/vendor/plugins/make_resourceful/spec/views/things/update.rjs +1 -0
  79. metadata +75 -16
  80. data/assets/css/easy_admin_ui.css +0 -69
@@ -0,0 +1,239 @@
1
+ = make_resourceful
2
+ ===== Take back control of your Controllers. Make them awesome. Make them sleek. Make them resourceful.
3
+
4
+ REST is a fine pattern for designing controllers,
5
+ but it can be pretty repetitive.
6
+ Who wants to write out the same actions and copy the same model lookup logic
7
+ all over their application?
8
+
9
+ make_resourceful handles all that for you.
10
+ It sets up all your RESTful actions and responses with next to no code.
11
+ Everything has full, sensible default functionality.
12
+
13
+ Of course, no controller _only_ uses the defaults.
14
+ So make_resourceful can be massively customized,
15
+ while still keeping your controllers trim and readable.
16
+
17
+ == Get it!
18
+
19
+ Rails
20
+
21
+ $ ruby script/plugin install git://github.com/hcatlin/make_resourceful.git
22
+
23
+ Git
24
+
25
+ $ git clone git://github.com/hcatlin/make_resourceful.git
26
+
27
+ == Use it!
28
+
29
+ The easiest way to start with make_resourceful
30
+ is to run the resource_scaffold generator.
31
+ It uses the same syntax as the Rails scaffold_resource generator:
32
+
33
+ $ script/generate resource_scaffold post title:string body:text
34
+
35
+ It does, however, require {Haml}[http://haml-lang.com].
36
+ You _are_ using Haml, right? No?
37
+ I'll wait here while you go fall in love with it.
38
+
39
+ If you want to try make_resourceful on one of your current controllers,
40
+ just replace the mess of repetition with this:
41
+
42
+ class FooController < ApplicationController
43
+ make_resourceful do
44
+ actions :all
45
+ end
46
+ end
47
+
48
+ Those three lines will replace the entire default controller
49
+ that comes out of the scaffold_resource generator.
50
+
51
+ === Really?
52
+
53
+ Yes.
54
+
55
+ === Can I do nested resources?
56
+
57
+ make_resourceful do
58
+ actions :all
59
+ belongs_to :post
60
+ end
61
+
62
+ === What if I want to use fancy permalinks?
63
+
64
+ def current_object
65
+ @current_object ||= current_model.find_by_permalink(params[:id])
66
+ end
67
+
68
+ === What about paging?
69
+
70
+ def current_objects
71
+ @current_objects ||= current_model.find(:all,
72
+ :order => "created_at DESC", :page => {:current => params[:page], :size => 10 } )
73
+ end
74
+
75
+ === What if I want to do something in the middle of an action?
76
+
77
+ before :show, :index do
78
+ @page_title = "Awesome!"
79
+ end
80
+
81
+ after :create_fails do
82
+ @page_title = "Not So Awesome!"
83
+ end
84
+
85
+ === What about all of my awesome respond_to blocks for my XML APIs and RJS responses?
86
+
87
+ response_for :show do |format|
88
+ format.html
89
+ format.js
90
+ format.xml
91
+ end
92
+
93
+ response_for :update_fails do |format|
94
+ format.html { render :action => 'edit' }
95
+ format.json { render :json => false.to_json, :status => 422 }
96
+ end
97
+
98
+ === So I guess I have to write responses for all my actions?
99
+
100
+ Nope! make_resourceful makes them do the right thing by default.
101
+ You only need to customize them if you want to do something special.
102
+
103
+ === Seriously?!
104
+
105
+ Yes!
106
+
107
+ == Grok it!
108
+
109
+ === +make_resourceful+ the Method
110
+
111
+ The +make_resourceful+ block is where most of the action happens.
112
+ Here you specify which actions you want to auto-generate,
113
+ what code you want to run for given callbacks,
114
+ and so forth.
115
+
116
+ You also use the block to declare various bits of information about your controller.
117
+ For instance, if the controller is nested, you'd call +belongs_to+.
118
+ If you wanted to expose your models as some sort of text format,
119
+ you'd call +publish+.
120
+
121
+ Check out the documentation of Resourceful::Builder
122
+ for more information on the methods you can call here.
123
+
124
+ === Helper Methods
125
+
126
+ make_resourceful provides lots of useful methods
127
+ that can be used in your callbacks and in your views.
128
+ They range from accessing the records you're looking up
129
+ to easily generating URLs for a record
130
+ to getting information about the action itself.
131
+
132
+ Two of the most useful methods are +current_object+ and +current_objects+
133
+ (note the subtle plurality difference).
134
+ +current_objects+ only works for +index+,
135
+ and returns all the records in the current model.
136
+ +current_object+ works for all actions other than +index+,
137
+ and returns the record that's currently being dealt with.
138
+
139
+ The full documentation of the helper methods
140
+ is in Resourceful::Default::Accessors and Resourceful::Default::URLs.
141
+
142
+ === Nested Resources
143
+
144
+ make_resourceful supports easy management of nested resources.
145
+ This is set up with the Resourceful::Builder#belongs_to declaration.
146
+ Pass in the name of the parent model,
147
+
148
+ belongs_to :user
149
+
150
+ and everything will be taken care of.
151
+ When +index+ is run for GET /users/12/albums,
152
+ parent_object
153
+ will get <tt>User.find(params[:user_id])</tt>,
154
+ and current_objects
155
+ will get <tt>parent_object.albums</tt>.
156
+ When +create+ is run for POST /users/12/albums,
157
+ the newly created Album will automatically belong to the user
158
+ with id 12.
159
+
160
+ The normal non-scoped actions still work, too.
161
+ GET /albums/15 runs just fine.
162
+ make_resourceful knows that since there's no <tt>params[:user_id]</tt>,
163
+ you just want to deal with the album.
164
+
165
+ You can even have a single resource nested under several different resources.
166
+ Just pass multiple parent names to the Resourceful::Builder#belongs_to, like
167
+
168
+ belongs_to :user, :artist
169
+
170
+ Then /users/15/albums and /artists/7/albums will both work.
171
+
172
+ This does, however, mean that make_resourceful only supports one level of nesting.
173
+ There's no automatic handling of /users/15/collections/437/albums.
174
+ However, this is really the best way to organize most resources anyway;
175
+ see this {article}[http://weblog.jamisbuck.org/2007/2/5/nesting-resources].
176
+
177
+ If you really need a deeply nested controller,
178
+ it should be easy enough to set up on your own.
179
+ Just override current_model.
180
+ See the next section for more details.
181
+
182
+ === Overriding Methods
183
+
184
+ Not only are helper methods useful to the developer to use,
185
+ they're used internally by the actions created by make_resourceful.
186
+ Thus one of the main ways make_resourceful can be customized
187
+ is by overriding accessors.
188
+
189
+ For instance, if you want to only look up the 10 most recent records for +index+,
190
+ you're override +current_objects+.
191
+ If you wanted to use a different model than that suggested by the name of the controller,
192
+ you'd override +current_model+.
193
+
194
+ When you're overriding methods that do SQL lookups, though, be a little cautious.
195
+ By default, these methods cache their values in instance variables
196
+ so that multiple SQL queries aren't run on multiple calls.
197
+ When overriding them, it's wise for you to do the same.
198
+ For instance,
199
+
200
+ def current_object
201
+ @current_object ||= current_model.find_by_name(params[:name])
202
+ end
203
+
204
+ === For More Information...
205
+
206
+ Haven't found all the information you need in the RDoc?
207
+ Still a little confused about something?
208
+ Don't despair, there are still more resources available!
209
+
210
+ * Read the source code!
211
+ It's very straightforward,
212
+ and make_resourceful is built to encourage overriding methods
213
+ and hacking the source.
214
+ * Nathan Weizenbaum has some good blog posts about make_resourceful.
215
+ They may be a little outdated, but they should still be useful and explanatory.
216
+ * On nesting and associations: {here}[http://nex-3.com/posts/55-nesting-and-make_resourceful].
217
+ * An overview of make_resourceful 0.2.0 and 0.2.2: {here}[http://localhost:3000/posts/54-make_resourceful-0-2-0].
218
+ * On Resourceful::Builder#publish
219
+ and Resourceful::Serialize:
220
+ {here}[http://nex-3.com/posts/35-make_resourceful-the-basics-of-publish] and
221
+ {here}[http://nex-3.com/posts/36-make_resourceful-publish-extras].
222
+ * There's an excellent, active Google Group http://groups.google.com/group/make_resourceful
223
+ where people will be happy to answer your questions.
224
+
225
+ ---
226
+
227
+ Copyright 2007-2010 Hampton Catlin and Nathan Weizenbaum.
228
+ Contributions by:
229
+
230
+ * Russell Norris
231
+ * Jonathan Linowes
232
+ * Cristi Balan
233
+ * Mike Ferrier
234
+ * James Golick
235
+ * Don Petersen
236
+ * Alex Ross
237
+ * Tom Stuart
238
+ * Glenn Powell
239
+ * Johannes Jörg Schmidt
@@ -0,0 +1,31 @@
1
+ require 'rake'
2
+ require 'rake/rdoctask'
3
+ require 'spec/rake/spectask'
4
+
5
+ desc 'Default: run specs.'
6
+ task :default => :spec
7
+
8
+ spec_files = Rake::FileList["spec/**/*_spec.rb"]
9
+
10
+ desc "Run specs"
11
+ Spec::Rake::SpecTask.new do |t|
12
+ t.spec_files = spec_files
13
+ t.spec_opts = ["-c"]
14
+ end
15
+
16
+ desc "Generate code coverage"
17
+ Spec::Rake::SpecTask.new(:coverage) do |t|
18
+ t.spec_files = spec_files
19
+ t.rcov = true
20
+ t.rcov_opts = ['--exclude', 'spec,/var/lib/gems']
21
+ end
22
+
23
+ desc 'Generate documentation for the make_resourceful plugin.'
24
+ Rake::RDocTask.new(:rdoc) do |rdoc|
25
+ rdoc.rdoc_dir = 'rdoc'
26
+ rdoc.title = 'make_resourceful'
27
+ rdoc.options << '--line-numbers' << '--inline-source'
28
+ rdoc.main = 'README'
29
+ rdoc.rdoc_files.include(FileList.new('*').exclude(/[^A-Z0-9]/))
30
+ rdoc.rdoc_files.include('lib/**/*.rb')
31
+ end
@@ -0,0 +1 @@
1
+ 0.9.9
@@ -0,0 +1,87 @@
1
+ class ResourcefulScaffoldGenerator < Rails::Generator::NamedBase
2
+ attr_reader :controller_class_path,
3
+ :controller_file_path,
4
+ :controller_class_nesting,
5
+ :controller_class_nesting_depth,
6
+ :controller_class_name,
7
+ :controller_underscore_name,
8
+ :controller_plural_name
9
+ alias_method :controller_file_name, :controller_underscore_name
10
+ alias_method :controller_table_name, :controller_plural_name
11
+
12
+ def initialize(runtime_args, runtime_options = {})
13
+ super
14
+
15
+ base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@name.pluralize)
16
+ @controller_class_name_without_nesting, @controller_underscore_name, @controller_plural_name = inflect_names(base_name)
17
+
18
+ if @controller_class_nesting.empty?
19
+ @controller_class_name = @controller_class_name_without_nesting
20
+ else
21
+ @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
22
+ end
23
+ end
24
+
25
+ def manifest
26
+ record do |m|
27
+ # Check for class naming collisions.
28
+ m.class_collisions(controller_class_path, "#{controller_class_name}Controller", "#{controller_class_name}Helper")
29
+ m.class_collisions(class_path, "#{class_name}")
30
+
31
+ # Controller, helper, views, and test directories.
32
+ m.directory(File.join('app/models', class_path))
33
+ m.directory(File.join('app/controllers', controller_class_path))
34
+ m.directory(File.join('app/helpers', controller_class_path))
35
+ m.directory(File.join('app/views', controller_class_path, controller_file_name))
36
+ m.directory(File.join('test/functional', controller_class_path))
37
+ m.directory(File.join('test/unit', class_path))
38
+ m.directory(File.join('test/fixtures', class_path))
39
+
40
+ # Views
41
+ for action in scaffold_views
42
+ m.template("view_#{action}.haml", File.join('app/views', controller_class_path, controller_file_name, "#{action}.html.haml"))
43
+ end
44
+ m.template('view_partial.haml', File.join('app/views', controller_class_path, controller_file_name, "_#{singular_name}.html.haml"))
45
+
46
+ # Helper
47
+ m.template('helper.rb', File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb"))
48
+
49
+ # Model
50
+ m.template('model.rb', File.join('app/models', class_path, "#{file_name}.rb"))
51
+
52
+ unless options[:skip_migration]
53
+ m.migration_template('migration.rb', 'db/migrate',
54
+ :assigns => {
55
+ :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}",
56
+ :attributes => attributes
57
+ },
58
+ :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}")
59
+ end
60
+
61
+ # Controller
62
+ m.template('controller.rb', File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb"))
63
+
64
+ # Tests
65
+ m.template('functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb"))
66
+ m.template('unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb"))
67
+ m.template('fixtures.yml', File.join('test/fixtures', "#{table_name}.yml"))
68
+
69
+ # Route
70
+ m.route_resources controller_file_name
71
+ end
72
+ end
73
+
74
+ protected
75
+
76
+ def banner
77
+ "Usage: #{$0} resourcefulscaffold ModelName [field:type, field:type]"
78
+ end
79
+
80
+ def scaffold_views
81
+ %w[ index show new edit _form ]
82
+ end
83
+
84
+ def model_name
85
+ class_name.demodulize
86
+ end
87
+ end
@@ -0,0 +1,5 @@
1
+ class <%= controller_class_name %>Controller < ApplicationController
2
+ make_resourceful do
3
+ actions :all
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ one:
2
+ id: 1
3
+ <% for attribute in attributes -%>
4
+ <%= attribute.name %>: <%= attribute.default %>
5
+ <% end -%>
6
+ two:
7
+ id: 2
8
+ <% for attribute in attributes -%>
9
+ <%= attribute.name %>: <%= attribute.default %>
10
+ <% end -%>
@@ -0,0 +1,50 @@
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 < ActionController::TestCase
8
+
9
+ def test_should_get_index
10
+ get :index
11
+ assert_response :success
12
+ assert assigns(:<%= table_name %>)
13
+ end
14
+
15
+ def test_should_get_new
16
+ get :new
17
+ assert_response :success
18
+ end
19
+
20
+ def test_should_create_<%= file_name %>
21
+ old_count = <%= class_name %>.count
22
+ post :create, :<%= file_name %> => { }
23
+ assert_equal old_count + 1, <%= class_name %>.count
24
+
25
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
26
+ end
27
+
28
+ def test_should_show_<%= file_name %>
29
+ get :show, :id => 1
30
+ assert_response :success
31
+ end
32
+
33
+ def test_should_get_edit
34
+ get :edit, :id => 1
35
+ assert_response :success
36
+ end
37
+
38
+ def test_should_update_<%= file_name %>
39
+ put :update, :id => 1, :<%= file_name %> => { }
40
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
41
+ end
42
+
43
+ def test_should_destroy_<%= file_name %>
44
+ old_count = <%= class_name %>.count
45
+ delete :destroy, :id => 1
46
+ assert_equal old_count-1, <%= class_name %>.count
47
+
48
+ assert_redirected_to <%= table_name %>_path
49
+ end
50
+ end
@@ -0,0 +1,2 @@
1
+ module <%= controller_class_name %>Helper
2
+ end
@@ -0,0 +1,13 @@
1
+ class <%= migration_name %> < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= table_name %>, :force => true do |t|
4
+ <% for attribute in attributes -%>
5
+ t.column :<%= attribute.name %>, :<%= attribute.type %>
6
+ <% end -%>
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ drop_table :<%= table_name %>
12
+ end
13
+ end
@@ -0,0 +1,2 @@
1
+ class <%= class_name %> < ActiveRecord::Base
2
+ 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,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,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_path
10
+ |
11
+ = link_to 'Back', objects_path
@@ -0,0 +1,5 @@
1
+ %h1 Listing <%= plural_name %>
2
+
3
+ = render :partial => '<%= singular_name %>', :collection => current_objects
4
+
5
+ = link_to 'New <%= singular_name %>', new_object_path
@@ -0,0 +1,9 @@
1
+ %h1 Creating <%= singular_name %>
2
+
3
+ = error_messages_for :<%= singular_name %>
4
+
5
+ - form_for(:<%= singular_name %>, :url => objects_url) do |f|
6
+ = render :partial => "form", :locals => {:f => f}
7
+ %p= submit_tag "Create"
8
+
9
+ = link_to 'Back', objects_path
@@ -0,0 +1,12 @@
1
+ %div[<%= singular_name %>]
2
+ <% for attribute in attributes -%>
3
+ %p.<%= attribute.name %>
4
+ %strong <%= attribute.column.human_name %>
5
+ = h <%= singular_name %>.<%= attribute.name %>
6
+ <% end -%>
7
+
8
+ = link_to 'Show', object_path(<%= singular_name %>)
9
+ |
10
+ = link_to 'Edit', edit_object_path(<%= singular_name %>)
11
+ |
12
+ = link_to 'Destroy', object_path(<%= singular_name %>), :confirm => 'Really destroy <%= singular_name %>?', :method => :delete
@@ -0,0 +1,14 @@
1
+ %h1 Viewing <%= singular_name %>
2
+
3
+ %div[current_object]
4
+ <% for attribute in attributes -%>
5
+ %p.<%= attribute.name %>
6
+ %strong <%= attribute.column.human_name %>
7
+ = h current_object.<%= attribute.name %>
8
+ <% end -%>
9
+
10
+ = link_to 'Edit', edit_object_path
11
+ |
12
+ = link_to 'Destroy', object_path, :confirm => 'Really destroy <%= singular_name %>?', :method => :delete
13
+ |
14
+ = link_to 'Back', objects_path
@@ -0,0 +1,3 @@
1
+ require 'resourceful/maker'
2
+
3
+ ActionController::Base.extend Resourceful::Maker
@@ -0,0 +1,63 @@
1
+ # The module containing all the code for make_resourceful.
2
+ #
3
+ # For methods available in the +make_resourceful+ block,
4
+ # see Resourceful::Builder.
5
+ #
6
+ # For helper methods and methods you can override
7
+ # to customize the behavior of your actions,
8
+ # see Resourceful::Default::Accessors
9
+ # and Resourceful::Default::URLs.
10
+ module Resourceful
11
+ # We want to define some stuff before we load other modules
12
+
13
+ # The default actions generated by make_resourceful.
14
+ ACTIONS = [:index, :show, :edit, :update, :create, :new, :destroy]
15
+
16
+ # The actions that modify the database.
17
+ MODIFYING_ACTIONS = [:update, :create, :destroy]
18
+
19
+ # The actions that act on multiple records.
20
+ PLURAL_ACTIONS = [:index]
21
+
22
+ # The actions that act on just one record.
23
+ SINGULAR_ACTIONS = ACTIONS - PLURAL_ACTIONS
24
+
25
+ # The actions that act on just one record.
26
+ SINGULAR_PRELOADED_ACTIONS = SINGULAR_ACTIONS - [:new, :create]
27
+ end
28
+
29
+ require 'resourceful/default/accessors'
30
+ require 'resourceful/default/responses'
31
+ require 'resourceful/default/callbacks'
32
+ require 'resourceful/default/urls'
33
+
34
+ # All modules included by this module
35
+ # are made available to the controller as accessors.
36
+ module Resourceful::Base
37
+ @@made_resourceful_callbacks = []
38
+
39
+ # This method is meant to be called by included classes.
40
+ # It takes a block of the same form as that given to Maker#make_resourceful.
41
+ # The Maker will then run that block
42
+ # along with the blocks given by the individual controllers.
43
+ def self.made_resourceful(&block)
44
+ if block
45
+ @@made_resourceful_callbacks << block
46
+ else
47
+ @@made_resourceful_callbacks
48
+ end
49
+ end
50
+
51
+ include Resourceful::Default::Accessors
52
+ include Resourceful::Default::Responses
53
+ include Resourceful::Default::Callbacks
54
+ include Resourceful::Default::URLs
55
+
56
+ # FIXME HACK
57
+ # making methods assigned to controller private
58
+ # prevents access from dispatcher.
59
+ private *Resourceful::Default::Accessors.public_instance_methods
60
+ private *Resourceful::Default::Responses.public_instance_methods
61
+ private *Resourceful::Default::Callbacks.public_instance_methods
62
+ private *Resourceful::Default::URLs.public_instance_methods
63
+ end