hobo 0.8.3 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
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