hobo 0.8.3 → 0.8.4

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/CHANGES.txt +330 -0
  2. data/Manifest +12 -4
  3. data/Rakefile +4 -6
  4. data/dryml_generators/rapid/cards.dryml.erb +5 -1
  5. data/dryml_generators/rapid/forms.dryml.erb +8 -10
  6. data/dryml_generators/rapid/pages.dryml.erb +65 -36
  7. data/hobo.gemspec +28 -15
  8. data/lib/active_record/association_collection.rb +3 -22
  9. data/lib/hobo.rb +25 -258
  10. data/lib/hobo/accessible_associations.rb +131 -0
  11. data/lib/hobo/authentication_support.rb +15 -9
  12. data/lib/hobo/composite_model.rb +1 -1
  13. data/lib/hobo/controller.rb +7 -8
  14. data/lib/hobo/dryml.rb +9 -10
  15. data/lib/hobo/dryml/dryml_builder.rb +7 -1
  16. data/lib/hobo/dryml/dryml_doc.rb +161 -0
  17. data/lib/hobo/dryml/dryml_generator.rb +18 -9
  18. data/lib/hobo/dryml/part_context.rb +76 -42
  19. data/lib/hobo/dryml/tag_parameters.rb +1 -0
  20. data/lib/hobo/dryml/taglib.rb +2 -1
  21. data/lib/hobo/dryml/template.rb +39 -29
  22. data/lib/hobo/dryml/template_environment.rb +79 -37
  23. data/lib/hobo/dryml/template_handler.rb +66 -21
  24. data/lib/hobo/guest.rb +2 -10
  25. data/lib/hobo/hobo_helper.rb +125 -53
  26. data/lib/hobo/include_in_save.rb +0 -1
  27. data/lib/hobo/lifecycles.rb +54 -24
  28. data/lib/hobo/lifecycles/actions.rb +95 -31
  29. data/lib/hobo/lifecycles/creator.rb +18 -23
  30. data/lib/hobo/lifecycles/lifecycle.rb +86 -62
  31. data/lib/hobo/lifecycles/state.rb +1 -2
  32. data/lib/hobo/lifecycles/transition.rb +22 -28
  33. data/lib/hobo/model.rb +64 -176
  34. data/lib/hobo/model_controller.rb +67 -54
  35. data/lib/hobo/model_router.rb +5 -2
  36. data/lib/hobo/permissions.rb +397 -0
  37. data/lib/hobo/permissions/associations.rb +167 -0
  38. data/lib/hobo/scopes.rb +15 -38
  39. data/lib/hobo/scopes/association_proxy_extensions.rb +15 -5
  40. data/lib/hobo/scopes/automatic_scopes.rb +43 -18
  41. data/lib/hobo/scopes/named_scope_extensions.rb +2 -2
  42. data/lib/hobo/user.rb +10 -4
  43. data/lib/hobo/user_controller.rb +6 -5
  44. data/lib/hobo/view_hints.rb +58 -0
  45. data/rails_generators/hobo/hobo_generator.rb +7 -3
  46. data/rails_generators/hobo/templates/guest.rb +1 -13
  47. data/rails_generators/hobo_front_controller/hobo_front_controller_generator.rb +1 -1
  48. data/rails_generators/hobo_model/hobo_model_generator.rb +4 -2
  49. data/rails_generators/hobo_model/templates/hints.rb +4 -0
  50. data/rails_generators/hobo_model/templates/model.rb +8 -8
  51. data/rails_generators/hobo_model_controller/hobo_model_controller_generator.rb +10 -0
  52. data/rails_generators/hobo_model_controller/templates/controller.rb +1 -1
  53. data/rails_generators/hobo_rapid/templates/hobo-rapid.js +91 -56
  54. data/rails_generators/hobo_rapid/templates/lowpro.js +15 -15
  55. data/rails_generators/hobo_rapid/templates/reset.css +36 -3
  56. data/rails_generators/hobo_rapid/templates/themes/clean/public/stylesheets/clean.css +13 -17
  57. data/rails_generators/hobo_user_controller/templates/controller.rb +1 -1
  58. data/rails_generators/hobo_user_model/templates/model.rb +18 -16
  59. data/taglibs/core.dryml +60 -18
  60. data/taglibs/rapid.dryml +8 -401
  61. data/taglibs/rapid_core.dryml +586 -0
  62. data/taglibs/rapid_document_tags.dryml +28 -10
  63. data/taglibs/rapid_editing.dryml +92 -55
  64. data/taglibs/rapid_forms.dryml +406 -87
  65. data/taglibs/rapid_generics.dryml +1 -1
  66. data/taglibs/rapid_navigation.dryml +2 -1
  67. data/taglibs/rapid_pages.dryml +7 -16
  68. data/taglibs/rapid_plus.dryml +39 -14
  69. data/taglibs/rapid_support.dryml +1 -1
  70. data/taglibs/rapid_user_pages.dryml +14 -4
  71. data/tasks/{generate_tag_reference.rb → generate_tag_reference.rake} +49 -18
  72. data/tasks/hobo_tasks.rake +16 -0
  73. data/test/permissions/models/models.rb +134 -0
  74. data/test/permissions/models/schema.rb +55 -0
  75. data/test/permissions/models/test.sqlite3 +0 -0
  76. data/test/permissions/test_permissions.rb +436 -0
  77. metadata +27 -14
  78. data/lib/hobo/mass_assignment.rb +0 -64
  79. data/rails_generators/hobo/templates/patch_routing.rb +0 -30
  80. data/uninstall.rb +0 -1
@@ -1,64 +0,0 @@
1
- module Hobo
2
-
3
- MassAssignment = classy_module do
4
-
5
- include IncludeInSave
6
-
7
-
8
- # --- has_many mass assignment support --- #
9
-
10
- def self.has_many_with_mass_assignment(name, options={}, &block)
11
- accessible = options.delete(:accessible)
12
- has_many_without_mass_assignment(name, options, &block)
13
-
14
- if accessible
15
- class_eval %{
16
- def #{name}_with_mass_assignment=(array_or_hash)
17
- items = prepare_has_many_assignment(:#{name}, array_or_hash)
18
- self.#{name}_without_mass_assignment = items
19
- # ensure the loaded array contains any changed records
20
- self.#{name}.proxy_target[0..-1] = items
21
- end}, __FILE__, __LINE__ - 3
22
- alias_method_chain :"#{name}=", :mass_assignment
23
- end
24
- end
25
- metaclass.alias_method_chain :has_many, :mass_assignment
26
-
27
-
28
- def prepare_has_many_assignment(association_name, array_or_hash)
29
- association = send(association_name)
30
-
31
- array = params_hash_to_array(array_or_hash)
32
- array.map do |record_or_hash|
33
- if record_or_hash.is_a?(Hash)
34
- hash = record_or_hash
35
-
36
- id = hash.delete(:id)
37
- record = if id
38
- association.find(id) # TODO: We don't really want to find these one by one
39
- else
40
- # Remove completely blank hashes
41
- next if hash.values.join.blank?
42
-
43
- record = association.build
44
- end
45
- record.attributes = hash
46
- include_in_save(association_name, record)
47
- else
48
- record = record_or_hash
49
- end
50
- record
51
-
52
- end.compact
53
-
54
- end
55
-
56
- def params_hash_to_array(array_or_hash)
57
- if array_or_hash.is_a?(Hash)
58
- array = array_or_hash.get(*array_or_hash.keys.sort_by(&:to_i))
59
- else
60
- array_or_hash
61
- end
62
- end
63
- end
64
- end
@@ -1,30 +0,0 @@
1
- if Rails::VERSION::STRING.in? ["2.1.0", "2.1.1"]
2
- module ActionController
3
- module Routing
4
- class RouteSet
5
- def clear_recognize_optimized!
6
- instance_eval %{
7
- def recognize_optimized(path, env)
8
- write_recognize_optimized
9
- recognize_optimized(path, env)
10
- end
11
- }, __FILE__, __LINE__
12
- end
13
-
14
- def clear_with_optimization!
15
- clear_without_optimization!
16
- clear_recognize_optimized!
17
- end
18
- alias_method_chain :clear!, :optimization
19
-
20
- end
21
- end
22
- end
23
-
24
- else
25
- RAILS_DEFAULT_LOGGER.info "****"
26
- RAILS_DEFAULT_LOGGER.info "**** The file config/initializers/patch_routing.rb is not in use"
27
- RAILS_DEFAULT_LOGGER.info "**** with this version of Rails and can be removed"
28
- RAILS_DEFAULT_LOGGER.info "****"
29
- end
30
-
@@ -1 +0,0 @@
1
- # Uninstall hook code here