hobo 1.4.0.pre8 → 2.0.0.pre1

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 (60) hide show
  1. data/CHANGES-1.4.txt +87 -3
  2. data/TODO-1.4.txt +3 -11
  3. data/VERSION +1 -1
  4. data/app/helpers/hobo_route_helper.rb +61 -20
  5. data/lib/generators/hobo/admin_subsite/USAGE +3 -11
  6. data/lib/generators/hobo/admin_subsite/admin_subsite_generator.rb +4 -1
  7. data/lib/generators/hobo/admin_subsite/templates/{site.css.erb → site.scss.erb} +0 -0
  8. data/lib/generators/hobo/assets/assets_generator.rb +2 -2
  9. data/lib/generators/hobo/assets/templates/{application.css → application.scss} +0 -0
  10. data/lib/generators/hobo/assets/templates/{front.css → front.scss} +0 -0
  11. data/lib/generators/hobo/model/templates/model_injection.rb.erb +1 -0
  12. data/lib/generators/hobo/plugin.rb +3 -1
  13. data/lib/generators/hobo/routes/router.rb +115 -0
  14. data/lib/generators/hobo/routes/templates/hobo_routes.rb.erb +42 -3
  15. data/lib/generators/hobo/setup_wizard/setup_wizard_generator.rb +35 -2
  16. data/lib/generators/hobo/subsite.rb +1 -1
  17. data/lib/generators/hobo/subsite/USAGE +3 -11
  18. data/lib/generators/hobo/subsite/subsite_generator.rb +3 -0
  19. data/lib/generators/hobo/subsite/templates/{site.css.erb → site.scss.erb} +0 -0
  20. data/lib/generators/hobo/subsite_taglib/subsite_taglib_generator.rb +4 -1
  21. data/lib/generators/hobo/user_mailer/templates/activation.erb +1 -1
  22. data/lib/generators/hobo/user_mailer/templates/forgot_password.erb +1 -1
  23. data/lib/generators/hobo/user_mailer/templates/invite.erb +1 -1
  24. data/lib/generators/hobo/user_model/templates/model_injection.rb.erb +1 -0
  25. data/lib/hobo.rb +2 -2
  26. data/lib/hobo/controller.rb +3 -11
  27. data/lib/hobo/controller/model.rb +89 -89
  28. data/lib/hobo/engine.rb +12 -0
  29. data/lib/hobo/extensions/active_record/permissions.rb +15 -24
  30. data/lib/hobo/model.rb +3 -0
  31. data/lib/hobo/model/permissions.rb +1 -1
  32. data/lib/hobo/rapid/generators/rapid/cards.dryml.erb +10 -3
  33. data/lib/hobo/rapid/generators/rapid/forms.dryml.erb +9 -2
  34. data/lib/hobo/rapid/generators/rapid/pages.dryml.erb +11 -4
  35. data/lib/hobo/routes.rb +2 -0
  36. data/test/doctest/hobo/hobo_helper.rdoctest +23 -20
  37. data/test/doctest/hobo/lifecycles.rdoctest +1 -0
  38. data/test/doctest/hobo/model.rdoctest +4 -0
  39. data/test/doctest/hobo/multi_model_forms.rdoctest +2 -0
  40. data/test/doctest/hobo/scopes.rdoctest +18 -5
  41. data/test/doctest/prepare_testapp.rb +4 -2
  42. data/test/irt/generators/admin_subsite.irt +2 -6
  43. data/test/irt/generators/assets.irt +1 -7
  44. data/test/irt/generators/front_controller.irt +1 -3
  45. data/test/irt/generators/model.irt +1 -2
  46. data/test/irt/generators/partials/_account_user_model_tests.rb +1 -3
  47. data/test/irt/generators/partials/_accounts_users_controller_tests.rb +1 -3
  48. data/test/irt/generators/partials/_default_user_model_tests.rb +1 -3
  49. data/test/irt/generators/partials/_default_users_controller_tests.rb +1 -3
  50. data/test/irt/generators/partials/_house_controller_tests.rb +1 -3
  51. data/test/irt/generators/partials/_user_mailer_tests.rb +1 -3
  52. data/test/irt/generators/subsite.irt +5 -6
  53. data/test/irt/generators/user_mailer.irt +2 -0
  54. metadata +12 -18
  55. data/lib/generators/hobo/rapid/templates/themes/clean-sidemenu/public/images/100-ACD3E6-DBE1E5-H.png +0 -0
  56. data/lib/generators/hobo/rapid/templates/themes/clean-sidemenu/public/images/100-DBE1E5-FCFEF5-H.png +0 -0
  57. data/lib/generators/hobo/rapid/templates/themes/clean-sidemenu/public/images/300-3B5F87-ACD3E6-H.png +0 -0
  58. data/lib/generators/hobo/rapid/templates/themes/clean-sidemenu/public/images/spinner.gif +0 -0
  59. data/lib/generators/hobo/rapid/templates/themes/clean-sidemenu/public/stylesheets/clean-sidemenu.css +0 -81
  60. data/lib/generators/hobo/rapid/templates/themes/clean-sidemenu/views/clean-sidemenu.dryml +0 -30
@@ -200,6 +200,66 @@ The default doctype has been changed from `XHTML 1.0 TRANSITIONAL` to
200
200
  `html`, also known as "standards mode" in Internet Explorer 8 and 9
201
201
  and "html5" in other browsers.
202
202
 
203
+ ## named routes' names changed to use standard Rails names
204
+
205
+ The names of named routes generated by Hobo have changed to more
206
+ closely match the default names generated by the Rails REST route
207
+ generator. The standard 7 REST routes have not changed, but some
208
+ additional routes such as nested routes and lifecycle routes have been
209
+ renamed.
210
+
211
+ For the moment you can ask Hobo to emit both the new style and old
212
+ style routes by not defining
213
+ `config.hobo.dont_emit_deprecated_routes`.
214
+
215
+ Note that paths and method names have not changed, only the named
216
+ route has changed, so this change should not be visible to the user or
217
+ impact controller code.
218
+
219
+ The route name is leftmost column in `rake routes`.
220
+
221
+ Here are some example changes:
222
+
223
+ create_task_path => create_tasks_path # tasks#create
224
+ create_task_for_story_path => create_story_tasks_path # tasks#create_for_story
225
+ foo_transition_path => transition_foo_path # foos lifecycle transition
226
+ foo_show2_path => show2_foo_path # show_action :show2 in foos_controller
227
+
228
+ Note that in the second example, create_story_tasks_path, the
229
+ controller method name is `create_for_story`. This is the same method
230
+ name that Hobo 1.0 and 1.3 use; the default Rails method name would be
231
+ just plain `create`.
232
+
233
+ There are several named routes used in the user_mailer views generated
234
+ in a new application. These must be fixed up when upgrading an old
235
+ application. For instance, user_activate_url must be changed to
236
+ activate_user_url in activation.erb.
237
+
238
+ In exchange for the pain of updating some of your named routes, we
239
+ receive the following benefits:
240
+
241
+ - polymorphic_url works with nested routes and in more situations
242
+
243
+ - url_for will work in more situations
244
+
245
+ - the `<a>` tag and the many tags which use it now accept all the
246
+ `url_for` options, such as host and port.
247
+
248
+ - hobo_routes.rb is easier to read and understand
249
+
250
+ - code reduction in Hobo
251
+
252
+ ## `remote-method-button` and `update-button` broken
253
+
254
+ `remote-method-button`, `update-button` and similar buttons such as
255
+ `delete-button` were written early in the history of Hobo, before
256
+ standard form/part ajax was supported. These tags are easy to replace
257
+ with the much more flexible forms.
258
+
259
+ For backwards compatibility, most of these buttons have been updated
260
+ to 1.4. However, the little used `remote-method-button` and
261
+ `update-button` have not been converted to the 1.4 form.
262
+
203
263
  ## default field-list changed
204
264
 
205
265
  The default for `<field-list>` has changed to `<feckless-fieldset>`.
@@ -224,10 +284,9 @@ app/helpers/hobo_deprecated_helper.rb
224
284
  If your application depends on any of these, you can set
225
285
  config.hobo.include_deprecated_helper.
226
286
 
227
- ## Rails 3.1 required
287
+ ## Rails 3.2 required
228
288
 
229
- Hobo 1.4 currently requires Rails 3.1 for operation. We expect to be
230
- on Rails 3.2 before final release.
289
+ Hobo 1.4 currently requires Rails 3.2 for operation.
231
290
 
232
291
  ## Enhancements
233
292
 
@@ -587,6 +646,23 @@ The signature for the function update_response and friends has changed. This s
587
646
  end
588
647
  end
589
648
 
649
+ ### default controller actions now use respond_with
650
+
651
+ All Hobo model controller actions now use [respond_with](http://apidock.com/rails/ActionController/MimeResponds/respond_with) where appropriate. This means that you can create an API interface for a controller simply by adding:
652
+
653
+ respond_to :html, :json, :xml
654
+
655
+ See [respond_to](http://apidock.com/rails/ActionController/MimeResponds/ClassMethods/respond_to) and Google for "respond_with" for more information.
656
+
657
+ Note that the JSON and XML interfaces will only use coarse grained
658
+ model-level permission checking rather than fine grained attribute
659
+ level permission checking.
660
+
661
+ ### before-unload
662
+
663
+ `<form>` has gained a new option, before-unload, which adds an
664
+ onbeforeunload helper to the page.
665
+
590
666
  ## Editors
591
667
 
592
668
  Editors are no longer special-cased, they now use the standard DRYML
@@ -668,6 +744,14 @@ environment no longer automatically imports ActionView::Helpers.
668
744
  All application helpers are now available in the template
669
745
  environment.
670
746
 
747
+ ## Attribute Whitelist
748
+
749
+ Rails 3.2.3 and later changed the default for config.whitelist_attributes to true, so any newly generated Hobo apps will have this feature turned on. Hobo heavily depends on mass attribute assignation, so this may cause inconveniences.
750
+
751
+ Mass assignment protection is redundant in Hobo: your primary protection should come through the edit_permitted? function. If all of your models have properly defined edit_permitted? then it is safe to turn off config.whitelist_attributes.
752
+
753
+ If you choose not to turn off config.whitelist_attributes, any fields that are not in your attr_accessible declaration will not be available in forms. Hobo's generators will now assist in the creation of attr_accessible declarations.
754
+
671
755
  # jQuery rewrite
672
756
 
673
757
  FIXME: pull into separate document, along with interface specs
@@ -2,22 +2,17 @@
2
2
 
3
3
  ## regressions
4
4
 
5
- * sortable-input-many does not work
6
- * remote-method-button, create-button, update-button,
7
- transition-button: normal usages of these tags work, but they do
5
+ * remote-method-button, update-button: normal usages of these tags work, but they do
8
6
  not work if you ask them to do AJAX
9
7
  * live-search works, but it's not 'live'. You have to press return
10
8
  to start the search
11
- * remove-button, remote-method-button, create-button & update-button
12
- used to display inline but now display as a block. In other
13
- words, they now display one per line rather than several in a
14
- single line.
15
9
  * the rapid_summary tags have been moved out
16
10
  of core Hobo into their own plugin,
17
11
  https://github.com/Hobo/hobo_summary, which is not yet in a working state
18
12
 
19
13
  ## documentation
20
14
 
15
+ * touchpunch for mobile sortables
21
16
  * document themes/plugins
22
17
  * FAQ
23
18
  * agility
@@ -50,9 +45,6 @@ you notice any such omissions, please let us know, it is easy to fix..
50
45
  * multiple file support for AJAX uploads
51
46
  * cache: redis support
52
47
  * fixup deprecation warnings
53
- * port to Rails 3.2 and/or 4.0
54
- * nuke any remaining prototype code
55
- * add a sane default for non-AJAX JSON requests.
56
48
  * trawl the lighthouse && pull requests
57
49
  * steal the tags from Portal
58
50
  * fixup hobo-contrib
@@ -64,4 +56,4 @@ you notice any such omissions, please let us know, it is easy to fix..
64
56
  * create a bootstrap theme
65
57
  * add theme chooser to setup wizard
66
58
  * add support for has-one
67
- * convert old Hobo plugins: imaginary-dryml, hoboyui
59
+ * convert old Hobo plugins: imaginary-dryml, hoboyui, nice theme
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0.pre8
1
+ 2.0.0.pre1
@@ -1,5 +1,16 @@
1
1
  module HoboRouteHelper
2
2
  extend HoboHelperBase
3
+ def object_url(obj, *args)
4
+ new_ = object_url_new(obj, *args)
5
+
6
+ unless Rails.configuration.hobo.dont_emit_deprecated_routes
7
+ old_ = object_url_old(obj, *args)
8
+ debugger if old_ != new_
9
+ raise Hobo::Error.new("new style url #{new_} does not match old style url #{old_}. obj: #{obj.inspect}. args: #{args.inspect}. backtrace: #{caller.inspect}") if old_ != new_
10
+ end
11
+ new_
12
+ end
13
+
3
14
  protected
4
15
  def base_url
5
16
  ENV['RAILS_RELATIVE_URL_ROOT'] || ''
@@ -20,7 +31,7 @@ module HoboRouteHelper
20
31
 
21
32
  IMPLICIT_ACTIONS = [:index, :show, :create, :update, :destroy]
22
33
 
23
- def object_url(obj, *args)
34
+ def object_url_old(obj, *args)
24
35
  params = args.extract_options!
25
36
  action = args.first._?.to_sym
26
37
  options, params = params.partition_hash([:subsite, :method, :format])
@@ -78,29 +89,59 @@ module HoboRouteHelper
78
89
  end
79
90
  end
80
91
 
92
+ def object_url_new(obj, *args)
93
+ options = args.extract_options!
94
+ action = args.first._?.to_sym
95
+ options, params = options.partition_hash([:subsite, :method, :format])
96
+ options[:subsite] ||= self.subsite
97
+
98
+ if obj.respond_to?(:member_class)
99
+ if obj.respond_to?(:origin) && obj.origin
100
+ # Asking for URL of a collection, e.g. category/1/adverts or category/1/adverts/new
101
+ refl = obj.origin.class.reverse_reflection(obj.origin_attribute)
102
+ owner_name = refl.name.to_s
103
+ owner_name = owner_name.singularize if refl.macro == :has_many
104
+ poly = [owner_name, obj.member_class]
105
+ params[:"#{owner_name}_id"] = obj.origin
106
+ else
107
+ poly = [obj.member_class]
108
+ end
109
+ else
110
+ poly = [obj]
111
+ end
112
+
113
+ poly = [options[:subsite]] + poly if options[:subsite]
114
+
115
+ action ||= case options[:method].to_s
116
+ when 'put'; :update
117
+ when 'post'; :create
118
+ when 'delete'; :destroy
119
+ else; obj.is_a?(Class) ? :index : :show
120
+ end
121
+
122
+ params[:action] = action unless action.in?(IMPLICIT_ACTIONS)
123
+
124
+ begin
125
+ url = polymorphic_path(poly, params)
126
+ # validate URL, since polymorphic URL may return a URL for a
127
+ # different method
128
+ Rails.application.routes.recognize_path(url, {:method => options[:method]})
129
+ url
130
+ rescue NoMethodError => e # raised if polymorphic_url fails
131
+ nil
132
+ rescue ArgumentError => e # raised from polymorphic_url
133
+ nil
134
+ rescue ActionController::RoutingError => e # raised if recognize_path fails
135
+ nil
136
+ end
137
+
138
+ end
81
139
 
82
140
  def linkable?(*args)
83
141
  options = args.extract_options!
84
142
  target = args.empty? || args.first.is_a?(Symbol) ? this : args.shift
85
143
  action = args.first
86
- return false if action.nil? && target.try.new_record?
87
-
88
- if target.respond_to?(:member_class) && (origin = target.try.origin)
89
- klass = origin.class
90
- action = if action == :new
91
- "new_#{target.origin_attribute.to_s.singularize}"
92
- elsif action.nil?
93
- target.origin_attribute
94
- end
95
- elsif target.is_a?(Class)
96
- klass = target
97
- action ||= :index
98
- else
99
- klass = target.class
100
- action ||= :show
101
- end
102
-
103
- Hobo::Routes.linkable?(klass, action, options.reverse_merge(:subsite => subsite))
144
+ object_url_new(target, action, options)
104
145
  end
105
146
 
106
147
  def base_url_for(object, subsite, action)
@@ -173,7 +214,7 @@ module HoboRouteHelper
173
214
 
174
215
  # Sign-up url for a given user record or user class
175
216
  def signup_url(user_class=Hobo::Model::UserBase.default_user_model)
176
- send("#{user_class.name.underscore}_signup_url") rescue nil
217
+ send("signup_#{user_class.name.underscore.pluralize}_url") rescue nil
177
218
  end
178
219
 
179
220
 
@@ -8,17 +8,9 @@ Description:
8
8
  and two different sets of views for the same model.
9
9
 
10
10
  The subsite will use app/views/taglibs/<subsite_name>_site.dryml
11
- as well as app/views/taglibs/application.dryml. This allows you
12
- to customize the look and feel of a portion of your site. The
13
- remaining views of your application that are not under a subsite
14
- load both application.dryml and front_site.dryml.
15
-
16
- It is thus recommended that you ensure that
17
- <subsite_name>_site.dryml and application.dryml do not repeat
18
- code, such as the inclusion of rapid or the setting of the theme.
19
- One easy way of ensuring this is to use the --make-front-site
20
- option. If you have already accounted for this, use
21
- --make-front-site=false.
11
+ for common tags. The assets that the subsite will load are
12
+ specified in app/assets/javascripts/<subsite_name>.js and
13
+ app/assets/stylesheets/<subsite_name>.[s]css
22
14
 
23
15
  The difference between hobo:admin_site and hobo:subsite is that
24
16
  hobo:admin_site limits the subsite to use by administrators only.
@@ -5,6 +5,9 @@ module Hobo
5
5
  # overrides the default
6
6
  argument :name, :type => :string, :default => 'admin', :optional => true
7
7
 
8
+ class_option :theme, :type => :string, :desc => "Theme", :default => 'clean_admin'
9
+ class_option :ui_theme, :type => :string, :desc => "jQuery-UI Theme", :default => 'flick'
10
+
8
11
  include Generators::Hobo::InviteOnly
9
12
  include Generators::HoboSupport::EvalTemplate
10
13
 
@@ -14,7 +17,7 @@ module Hobo
14
17
 
15
18
  def generate_admin_user_controller
16
19
  invoke "hobo:controller", ["#{file_name}/#{options[:user_resource_name].pluralize.underscore}"], options
17
- template "users_index.dryml", "app/views/#{file_name}/#{options[:user_resource_name].pluralize.underscore}/index.dryml"
20
+ template "users_index.dryml", "app/views/#{file_name}/#{options[:user_resource_name].pluralize.underscore}/index.dryml" if invite_only?
18
21
  end
19
22
 
20
23
  include Generators::Hobo::Subsite
@@ -14,9 +14,9 @@ module Hobo
14
14
  copy_file 'guest.rb', 'app/models/guest.rb'
15
15
 
16
16
  FileUtils.mv 'app/assets/stylesheets/application.css', 'app/assets/stylesheets/application.css.orig'
17
- copy_file 'application.css', 'app/assets/stylesheets/application.css'
17
+ copy_file 'application.scss', 'app/assets/stylesheets/application.scss'
18
18
  copy_file 'gitkeep', 'app/assets/stylesheets/application/.gitkeep'
19
- copy_file 'front.css', 'app/assets/stylesheets/front.css'
19
+ copy_file 'front.scss', 'app/assets/stylesheets/front.scss'
20
20
  copy_file 'gitkeep', 'app/assets/stylesheets/front/.gitkeep'
21
21
 
22
22
  FileUtils.mv 'app/assets/javascripts/application.js', 'app/assets/javascripts/application.js.orig'
@@ -7,6 +7,7 @@
7
7
  <% end -%>
8
8
  timestamps
9
9
  end
10
+ attr_accessible <%= accessible_attributes.map {|a| ":#{a.name}"}.join ", " %>
10
11
 
11
12
  <% for bt in bts -%>
12
13
  belongs_to :<%= bt %>
@@ -68,7 +68,9 @@ module Generators
68
68
  end
69
69
 
70
70
  def inject_css_require(name, subsite, comments)
71
- application_file = "app/assets/stylesheets/#{subsite}.css"
71
+ application_file = "app/assets/stylesheets/#{subsite}.scss"
72
+ application_file = "app/assets/stylesheets/#{subsite}.css" unless exists?(application_file)
73
+ raise Thor::Error, "Couldn't find #{subsite}.css!" unless exists?(application_file)
72
74
  opts = {:before => /\*=(?!.*\*=).*?$/m}
73
75
 
74
76
  raise Thor::Error, "Couldn't find #{subsite}.css!" unless exists?(application_file)
@@ -17,12 +17,121 @@ module Generators
17
17
  @record = @records.singularize
18
18
  end
19
19
 
20
+ def emit_hash(hash, prefix)
21
+ s = ""
22
+ hash.each do |key, val|
23
+ s << "#{prefix}#{key}"
24
+ unless val.blank?
25
+ s << " do\n"
26
+ val.each do |sub|
27
+ if sub.is_a?(Hash)
28
+ s << emit_hash(sub, prefix + " ")
29
+ else
30
+ s << "#{prefix} #{sub}\n"
31
+ end
32
+ end
33
+ s << "#{prefix}end\n"
34
+ else
35
+ s << "\n"
36
+ end
37
+ end
38
+ s
39
+ end
40
+
41
+ def resources_hash
42
+ collections = []
43
+ collections += index_actions
44
+ collections += lifecycle_collection_actions
45
+ collections << "post 'reorder'" if controller.public_method_defined?(:reorder)
46
+ members = []
47
+ members += show_actions
48
+ members += web_methods
49
+ members += lifecycle_member_actions
50
+ right = []
51
+ right << {"collection" => collections} unless collections.blank?
52
+ right << {"member" => members} unless members.blank?
53
+ {basic_resources => right}
54
+ end
55
+
56
+ def basic_resources
57
+ actions = %w(index new edit show create update destroy).select {|action| controller.public_method_defined?(action)}
58
+ if actions.length == 7
59
+ "resources :#{records}"
60
+ else
61
+ "resources :#{records}, :only => [#{actions.map{|a| ':'+a}.join(', ')}]"
62
+ end
63
+ end
64
+
65
+ def index_actions
66
+ controller.index_actions.map do |action|
67
+ "get '#{action}'"
68
+ end
69
+ end
70
+
71
+ def show_actions
72
+ controller.show_actions.map do |action|
73
+ "get '#{action}'"
74
+ end
75
+ end
76
+
77
+ def lifecycle_collection_actions
78
+ return [] unless defined? model::Lifecycle
79
+ model::Lifecycle.creators.values.where.routable_for?(@subsite).*.name.map do |creator|
80
+ ["post '#{creator}', :action => 'do_#{creator}'",
81
+ "get '#{creator}'" ]
82
+ end.flatten
83
+ end
84
+
85
+ def lifecycle_member_actions
86
+ return [] unless defined? model::Lifecycle
87
+ model::Lifecycle.transitions.where.routable_for?(@subsite).*.name.map do |transition|
88
+ ["put '#{transition}', :action => 'do_#{transition}'",
89
+ "get '#{transition}'"]
90
+ end.flatten
91
+ end
92
+
93
+ def web_methods
94
+ controller.web_methods.map do |action|
95
+ "post '#{action}'"
96
+ end
97
+ end
98
+
99
+ def owner_actions
100
+ controller.owner_actions.map do |owner, actions|
101
+ collection_refl = model.reverse_reflection(owner)
102
+ raise ::Hobo::Error, "Hob routing error -- can't find reverse association for #{model}##{owner} " +
103
+ "(e.g. the :has_many that corresponds to a :belongs_to)" if collection_refl.nil?
104
+ collection = collection_refl.name
105
+ owner_class = model.reflections[owner].klass.name.underscore
106
+ owner = owner.to_s.singularize if model.reflections[owner].macro == :has_many
107
+ collection_path = "#{owner_class.pluralize}/:#{owner}_id/#{collection}"
108
+
109
+ routes = []
110
+ routes << "get 'new', :on => :new, :action => 'new_for_#{owner}'" if actions.include?(:new)
111
+ collection_routes = []
112
+ collection_routes << "get 'index', :action => 'index_for_#{owner}'" if actions.include?(:index)
113
+ collection_routes << "post 'create', :action => 'create_for_#{owner}'" if actions.include?(:create)
114
+ routes << {"collection" => collection_routes} unless collection_routes.empty?
115
+
116
+ { "resources :#{owner_class.pluralize}, :as => :#{owner}, :only => []" =>
117
+ [ "resources :#{collection}, :only => []" => routes]
118
+ }
119
+ end
120
+ end
121
+
122
+ def emit_resources
123
+ "# #{@resource_hash.inspect}\n"+
124
+ "# #{owner_actions.inspect}"
125
+ end
126
+
127
+ # deprecated
20
128
  def index_action_routes
21
129
  controller.index_actions.map do |action|
22
130
  link( "get '#{records}/#{action}(.:format)', :as => '#{action}_#{records}'", action )
23
131
  end.compact
24
132
  end
25
133
 
134
+ # deprecated
26
135
  def lifecycle_routes(subsite)
27
136
  return [] unless defined? model::Lifecycle
28
137
  routes = []
@@ -37,6 +146,7 @@ module Generators
37
146
  routes.compact.uniq
38
147
  end
39
148
 
149
+ # deprecated
40
150
  def resource_routes
41
151
  [
42
152
  link("get '#{records}(.:format)' => '#{records}#index', :as => '#{records}'", 'index'),
@@ -49,6 +159,7 @@ module Generators
49
159
  ].compact
50
160
  end
51
161
 
162
+ # deprecated
52
163
  def owner_routes
53
164
  routes = []
54
165
  controller.owner_actions.each_pair do |owner, actions|
@@ -75,22 +186,26 @@ module Generators
75
186
  routes.compact
76
187
  end
77
188
 
189
+ # deprecated
78
190
  def web_method_routes
79
191
  controller.web_methods.map do |action|
80
192
  link("post '#{records}/:id/#{action}(.:format)' => '#{records}##{action}', :as => '#{record}_#{action}'", action, :post)
81
193
  end.compact
82
194
  end
83
195
 
196
+ # deprecated
84
197
  def show_action_routes
85
198
  controller.show_actions.map do |action|
86
199
  link("get '#{records}/:id/#{action}(.:format)' => '#{records}##{action}', :as => '#{record}_#{action}'", action)
87
200
  end.compact
88
201
  end
89
202
 
203
+ # deprecated
90
204
  def reorder_routes
91
205
  [ link("post '#{records}/reorder(.:format)', :as => 'reorder_#{records}'", 'reorder', :post) ].compact
92
206
  end
93
207
 
208
+ # NOT deprecated
94
209
  def user_routes
95
210
  return [] unless controller < ::Hobo::Controller::UserBase
96
211
  prefix = records == "users" ? "" : "#{record}_"