mdd 2.0.3 → 3.0.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 (170) hide show
  1. data/{lib/generators/mdd/.DS_Store → .DS_Store} +0 -0
  2. data/README.md +1 -1
  3. data/Rakefile +8 -0
  4. data/app/helpers/{mdd_helper.rb → mdwa_helper.rb} +1 -1
  5. data/lib/{generators/mdd/association/templates/.DS_Store → .DS_Store} +0 -0
  6. data/lib/generators/{mdd/sandbox/templates/app/assets/images → mdwa}/.DS_Store +0 -0
  7. data/lib/generators/{mdd → mdwa}/association/USAGE +5 -5
  8. data/lib/generators/mdwa/association/association_generator.rb +152 -0
  9. data/lib/generators/{mdd/sandbox/templates/app/assets/javascripts → mdwa/association/templates}/.DS_Store +0 -0
  10. data/lib/generators/{mdd → mdwa}/association/templates/migrate/many_to_many.rb +0 -0
  11. data/lib/generators/{mdd → mdwa}/association/templates/migrate/one_field.rb +0 -0
  12. data/lib/generators/{mdd → mdwa}/sandbox/USAGE +1 -1
  13. data/lib/generators/{mdd → mdwa}/sandbox/sandbox_generator.rb +5 -4
  14. data/lib/generators/{mdd/sandbox/templates/app/assets/javascripts/mdwa → mdwa/sandbox/templates/app/assets/images}/.DS_Store +0 -0
  15. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/ajax-loader.gif +0 -0
  16. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/backend_bg.png +0 -0
  17. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/barra-16.gif +0 -0
  18. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/bg_ip.png +0 -0
  19. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/bg_left.jpg +0 -0
  20. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/bg_window_header.png +0 -0
  21. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/bt_g.png +0 -0
  22. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/button_submit.gif +0 -0
  23. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/fancybox_loading.gif +0 -0
  24. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/fancybox_sprite.png +0 -0
  25. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/headerbg.png +0 -0
  26. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/icons/add.png +0 -0
  27. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/icons/delete.png +0 -0
  28. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/icons/dropdown.png +0 -0
  29. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/icons/edit.png +0 -0
  30. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/icons/lupa.png +0 -0
  31. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/icons/remove-icon.png +0 -0
  32. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  33. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  34. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
  35. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  36. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  37. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  38. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  39. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  40. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  41. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_222222_256x240.png +0 -0
  42. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
  43. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
  44. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
  45. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  46. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/images/mdwa/notice_close.png +0 -0
  47. data/lib/generators/{mdd/sandbox/templates/app/assets/stylesheets → mdwa/sandbox/templates/app/assets/javascripts}/.DS_Store +0 -0
  48. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery-ui.js +0 -0
  49. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.bgiframe.js +0 -0
  50. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.easing.js +0 -0
  51. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.fancybox.js +0 -0
  52. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.hover_intent.js +0 -0
  53. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.mousewheel.js +0 -0
  54. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.popup_window.js +0 -0
  55. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/jquery/jquery.validate.js +0 -0
  56. data/lib/generators/{mdd/sandbox/templates/app/assets/stylesheets/jquery → mdwa/sandbox/templates/app/assets/javascripts/mdwa}/.DS_Store +0 -0
  57. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/login_manifest.js +0 -0
  58. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/public_manifest.js +0 -0
  59. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/system_manifest.js +0 -0
  60. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/template/ajaxloader.js +0 -0
  61. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/template/all_pages.js +0 -0
  62. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/template/clicable_title.js +0 -0
  63. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/javascripts/mdwa/template/pagination.js +0 -0
  64. data/lib/generators/{mdd/sandbox/templates/app/assets/stylesheets/mdwa → mdwa/sandbox/templates/app/assets/stylesheets}/.DS_Store +0 -0
  65. data/lib/generators/{mdd/sandbox/templates/app/assets/stylesheets/mdwa/template → mdwa/sandbox/templates/app/assets/stylesheets/jquery}/.DS_Store +0 -0
  66. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/jquery/jquery-ui-theme1.css +0 -0
  67. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/jquery/jquery.fancybox.css +0 -0
  68. data/lib/generators/{mdd/sandbox/templates/db/seeds → mdwa/sandbox/templates/app/assets/stylesheets/mdwa}/.DS_Store +0 -0
  69. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/login/login.css +0 -0
  70. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/login_manifest.css +0 -0
  71. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/public_manifest.css +0 -0
  72. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/system_manifest.css +0 -0
  73. data/lib/generators/{mdd/scaffold/templates → mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template}/.DS_Store +0 -0
  74. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb +0 -0
  75. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/template/cssbase.css +0 -0
  76. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/template/grid.css +0 -0
  77. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/template/leftbar.css.erb +0 -0
  78. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/template/reset.css +0 -0
  79. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/assets/stylesheets/mdwa/template/template.css.erb +0 -0
  80. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/controllers/a/administrators_controller.rb +2 -0
  81. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/controllers/a/backend_controller.rb +0 -0
  82. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/controllers/a/home_controller.rb +0 -0
  83. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/controllers/a/users/passwords_controller.rb +0 -0
  84. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/controllers/a/users/sessions_controller.rb +0 -0
  85. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/controllers/public_controller.rb +0 -0
  86. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/models/ability.rb +0 -0
  87. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/models/administrator.rb +0 -0
  88. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/models/permission.rb +0 -0
  89. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/models/user.rb +0 -0
  90. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/administrators/_administrators.html.erb +0 -0
  91. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/administrators/_form.html.erb +0 -0
  92. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/administrators/edit.html.erb +0 -0
  93. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/administrators/index.html.erb +0 -0
  94. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/administrators/new.html.erb +0 -0
  95. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/home/index.html.erb +0 -0
  96. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/_welcome.html.erb +0 -0
  97. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/confirmations/new.html.erb +0 -0
  98. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/mailer/confirmation_instructions.html.erb +0 -0
  99. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/mailer/reset_password_instructions.html.erb +0 -0
  100. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/mailer/unlock_instructions.html.erb +0 -0
  101. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/passwords/edit.html.erb +0 -0
  102. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/passwords/new.html.erb +0 -0
  103. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/registrations/edit.html.erb +0 -0
  104. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/registrations/new.html.erb +0 -0
  105. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/sessions/new.html.erb +0 -0
  106. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/shared/_links.erb +0 -0
  107. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/a/users/unlocks/new.html.erb +0 -0
  108. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/layouts/login.html.erb +0 -0
  109. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/layouts/public.html.erb +0 -0
  110. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/layouts/system.html.erb +0 -0
  111. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/public/index.html.erb +0 -0
  112. data/lib/generators/{mdd → mdwa}/sandbox/templates/app/views/template/_leftbar.html.erb +0 -0
  113. data/lib/generators/{mdd → mdwa}/sandbox/templates/config/initializers/devise.rb +0 -0
  114. data/lib/generators/{mdd/sandbox/templates/config/initializers/mdd_inflections.rb → mdwa/sandbox/templates/config/initializers/mdwa_inflections.rb} +0 -0
  115. data/lib/generators/mdwa/sandbox/templates/config/initializers/mdwa_layout.rb +8 -0
  116. data/lib/generators/{mdd → mdwa}/sandbox/templates/config/initializers/will_paginate.rb +0 -0
  117. data/lib/generators/{mdd → mdwa}/sandbox/templates/config/locales/devise.en.yml +0 -0
  118. data/lib/generators/{mdd → mdwa}/sandbox/templates/config/locales/mdwa.en.yml +2 -0
  119. data/lib/generators/mdwa/sandbox/templates/config/locales/mdwa_model_specific.en.yml +0 -0
  120. data/lib/generators/{mdd → mdwa}/sandbox/templates/db/migrate/create_permissions.rb +0 -0
  121. data/lib/generators/{mdd → mdwa}/sandbox/templates/db/migrate/create_user_permissions.rb +0 -0
  122. data/lib/generators/{mdd → mdwa}/sandbox/templates/db/migrate/devise_create_users.rb +0 -0
  123. data/lib/generators/{mdd → mdwa}/sandbox/templates/db/seeds.rb +0 -0
  124. data/lib/generators/{mdd/scaffold/templates/db_migrate → mdwa/sandbox/templates/db/seeds}/.DS_Store +0 -0
  125. data/lib/generators/{mdd → mdwa}/sandbox/templates/db/seeds/site.rb +0 -0
  126. data/lib/generators/{mdd → mdwa}/scaffold/USAGE +10 -10
  127. data/lib/generators/{mdd → mdwa}/scaffold/scaffold_generator.rb +11 -12
  128. data/lib/{mdd → generators/mdwa/scaffold/templates}/.DS_Store +0 -0
  129. data/lib/generators/{mdd → mdwa}/scaffold/templates/controllers/ajax_controller.rb +0 -0
  130. data/lib/generators/{mdd → mdwa}/scaffold/templates/controllers/controller.rb +0 -0
  131. data/lib/generators/mdwa/scaffold/templates/db_migrate/.DS_Store +0 -0
  132. data/lib/generators/{mdd → mdwa}/scaffold/templates/db_migrate/migrate.rb +0 -0
  133. data/lib/generators/{mdd → mdwa}/scaffold/templates/models/model.rb +0 -0
  134. data/lib/generators/{mdd → mdwa}/scaffold/templates/models/module.rb +0 -0
  135. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/_form.html.erb +0 -0
  136. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/_form_fields.html.erb +0 -0
  137. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/_list.html.erb +0 -0
  138. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/create.js.erb +0 -0
  139. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/destroy.js.erb +0 -0
  140. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/edit.html.erb +0 -0
  141. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/index.html.erb +0 -0
  142. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/index.js.erb +0 -0
  143. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/new.html.erb +0 -0
  144. data/lib/generators/{mdd → mdwa}/scaffold/templates/views/show.html.erb +0 -0
  145. data/lib/mdd.rb +4 -19
  146. data/lib/mdwa.rb +6 -0
  147. data/lib/mdwa/.DS_Store +0 -0
  148. data/lib/mdwa/all.rb +5 -0
  149. data/lib/mdwa/dsl.rb +9 -0
  150. data/lib/mdwa/dsl/.DS_Store +0 -0
  151. data/lib/mdwa/dsl/entities.rb +45 -0
  152. data/lib/mdwa/dsl/entity.rb +41 -0
  153. data/lib/mdwa/generators.rb +10 -0
  154. data/lib/mdwa/generators/.DS_Store +0 -0
  155. data/lib/{mdd → mdwa}/generators/model.rb +2 -1
  156. data/lib/mdwa/generators/model_association.rb +77 -0
  157. data/lib/{mdd → mdwa}/generators/model_attribute.rb +4 -6
  158. data/lib/mdwa/layout.rb +18 -0
  159. data/lib/mdwa/layout/.DS_Store +0 -0
  160. data/lib/{mdd → mdwa}/layout/base.rb +3 -1
  161. data/lib/{mdd → mdwa}/layout/helper.rb +5 -2
  162. data/lib/mdwa/version.rb +4 -0
  163. data/mdd.gemspec +3 -2
  164. data/test/entity_test.rb +67 -0
  165. data/test/generators_test.rb +0 -0
  166. data/test/layout_test.rb +59 -0
  167. metadata +184 -148
  168. data/lib/generators/mdd/association/association_generator.rb +0 -157
  169. data/lib/generators/mdd/sandbox/templates/config/initializers/mdd_layout.rb +0 -7
  170. data/lib/mdd/version.rb +0 -3
data/README.md CHANGED
@@ -22,7 +22,7 @@ Run the bundle command to install it.
22
22
  After you install MDD and add it to your Gemfile, you need to run the generator:
23
23
 
24
24
  ```console
25
- rails generate mdd:sandbox
25
+ rails generate mdwa:sandbox
26
26
  ```
27
27
  This generator will setup the clean sandbox environment with:
28
28
 
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs.push "lib"
7
+ t.test_files = FileList['test/*_test.rb']
8
+ t.verbose = true
9
+ end
@@ -1,4 +1,4 @@
1
- module MddHelper
1
+ module MdwaHelper
2
2
 
3
3
  def pagination_footer( object_list )
4
4
  html = []
@@ -3,20 +3,20 @@ Description:
3
3
  Use the model class name.
4
4
 
5
5
  Example:
6
- rails g mdd:association Library has_many Books
6
+ rails g mdwa:association Library has_many Books
7
7
 
8
- rails g mdd:association Book belongs_to Library --with-opposite
8
+ rails g mdwa:association Book belongs_to Library --with-opposite
9
9
  Generates the first example as the opposite
10
10
 
11
- rails g mdd:association Company nested_one Address
11
+ rails g mdwa:association Company nested_one Address
12
12
  Creates address_id in migration and belongs_to :address and accepts_nested_attrs in Company model
13
13
  Creates has_one :company in Address model if opposite requested
14
14
 
15
- rails g mdd:association Sale nested_many SaleItem
15
+ rails g mdwa:association Sale nested_many SaleItem
16
16
  Creates sale_id and belongs_to in SaleItem
17
17
  Creates has_many and accepts_nested_attrs in Sale
18
18
 
19
- rails g mdd:association User has_and_belongs_to_many Project
19
+ rails g mdwa:association User has_and_belongs_to_many Project
20
20
  Creates the join table projects_users
21
21
  Creates has_and_belongs_to_many association in both models
22
22
  The generated code indicates the join_table parameter, because often users have many to many associations and may be inheritance involved.
@@ -0,0 +1,152 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/migration'
5
+ require 'mdwa/generators'
6
+
7
+ module Mdwa
8
+ module Generators
9
+ class AssociationGenerator < Rails::Generators::Base
10
+
11
+ include Rails::Generators::Migration
12
+
13
+ source_root File.expand_path("../templates", __FILE__)
14
+
15
+ attr_accessor :model1, :attribute, :model2, :pending_migrations
16
+
17
+ argument :model1, :type => :string, :banner => "First part of relation"
18
+ argument :relation, :type => :string, :banner => "has_many, belongs, has_one, nested_many, nested_one..."
19
+ argument :model2, :type => :string, :banner => "Second part of relation"
20
+
21
+ class_option :with_opposite, :desc => 'Generate the opposite relation too. For example, the oposite of belongs_to is has_many.', :type => :boolean, :default => false
22
+ class_option :skip_rake_migrate, :desc => 'Skips rake db:migrate', :type => :boolean, :default => false
23
+ class_option :skip_migrations, :desc => 'Skips migration files', :type => :boolean, :default => false
24
+ class_option :ask, :desc => 'Asks if the opposite should be generated.', :type => :boolean, :default => false
25
+
26
+ def initialize(*args, &block)
27
+
28
+ super
29
+
30
+ @association = Generators::ModelAssocation.new(model1, model2, relation)
31
+
32
+ end
33
+
34
+
35
+ def model
36
+ if @association.belongs_to?
37
+ inject_into_class "app/models/#{@association.model1.space}/#{@association.model1.singular_name}.rb", @association.model1.klass.classify.constantize do
38
+ ret = []
39
+ ret << "\n\tbelongs_to :#{@association.model2.singular_name}, :class_name => '#{@association.model2.klass}'"
40
+ ret << "\tattr_accessible :#{@association.model2.singular_name.foreign_key}"
41
+ ret.join("\n")
42
+ end
43
+ end
44
+ if @association.has_one?
45
+ inject_into_class "app/models/#{@association.model1.space}/#{@association.model1.singular_name}.rb", @association.model1.klass.classify.constantize do
46
+ "\n\thas_one :#{@association.model2.singular_name}, :class_name => '#{@association.model2.klass}'\n"
47
+ end
48
+ end
49
+ if @association.has_many?
50
+ inject_into_class "app/models/#{@association.model1.space}/#{@association.model1.singular_name}.rb", @association.model1.klass.classify.constantize do
51
+ "\n\thas_many :#{@association.model2.plural_name}, :class_name => '#{@association.model2.klass}'\n"
52
+ end
53
+ end
54
+ if @association.has_and_belongs_to_many?
55
+ inject_into_class "app/models/#{@association.model1.space}/#{@association.model1.singular_name}.rb", @association.model1.klass.classify.constantize do
56
+ "\n\thas_and_belongs_to_many :#{@association.model2.plural_name}, :join_table => :#{many_to_many_table_name}\n"
57
+ end
58
+ inject_into_class "app/models/#{@association.model2.space}/#{@association.model2.singular_name}.rb", @association.model2.klass.classify.constantize do
59
+ "\n\thas_and_belongs_to_many :#{@association.model1.plural_name}, :join_table => :#{many_to_many_table_name}\n"
60
+ end
61
+ end
62
+ if @association.nested_one?
63
+ inject_into_class "app/models/#{@association.model1.space}/#{@association.model1.singular_name}.rb", @association.model1.klass.classify.constantize do
64
+ # belongs_to
65
+ # attr_accessible attributes
66
+ # attr_nested_attributes
67
+ "\n\tbelongs_to :#{@association.model2.singular_name}, :class_name => '#{@association.model2.klass}'\n\tattr_accessible :#{@association.model2.singular_name}_attributes, :#{@association.model2.singular_name.foreign_key}\n\taccepts_nested_attributes_for :#{@association.model2.singular_name}, :allow_destroy => true\n"
68
+ end
69
+ end
70
+ if @association.nested_many?
71
+ inject_into_class "app/models/#{@association.model1.space}/#{@association.model1.singular_name}.rb", @association.model1.klass.classify.constantize do
72
+ # belongs_to
73
+ # attr_accessible attributes
74
+ # attr_nested_attributes
75
+ "\n\thas_many :#{@association.model2.plural_name}, :class_name => '#{@association.model2.klass}', :dependent => :destroy\n\tattr_accessible :#{@association.model2.plural_name}_attributes\n\taccepts_nested_attributes_for :#{@association.model2.plural_name}, :allow_destroy => true\n"
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ def migrate
82
+ unless options.skip_migrations
83
+
84
+ @pending_migrations = true
85
+ case @association.relation.to_sym
86
+ when :belongs_to, :nested_one
87
+ @table = @association.model1
88
+ @field = @association.model2
89
+ migration_template 'migrate/one_field.rb', "db/migrate/add_#{@field.singular_name.foreign_key}_to_#{@table.plural_name}.rb"
90
+ when :has_and_belongs_to_many
91
+ migration_template 'migrate/many_to_many.rb', "db/migrate/create_#{many_to_many_table_name}.rb"
92
+ else
93
+ @pending_migrations = false
94
+ end
95
+
96
+ end
97
+
98
+ end
99
+
100
+ def run_rake_db_migrate
101
+ rake('db:migrate') if !options.skip_rake_migrate and @pending_migrations and yes? 'Run rake db:migrate?'
102
+ end
103
+
104
+ def opposite
105
+
106
+ if options.with_opposite or options.ask
107
+ # belongs_to
108
+ if @association.belongs_to? and (options.with_opposite or ( options.ask and yes?("#{@association.model1.name} belongs to #{@association.model2.singular_name}. Create has_many association?") ))
109
+ generate "mdwa:association #{@association.model2.raw} has_many #{@association.model1.raw} #{'--force' if options.force}"
110
+ end
111
+
112
+ # has_many
113
+ if @association.has_many? and (options.with_opposite or ( options.ask and yes?("#{@association.model1.name} has many #{@association.model2.plural_name}. Create belongs_to association?") ))
114
+ generate "mdwa:association #{@association.model2.raw} belongs_to #{@association.model1.raw} #{'--force' if options.force}"
115
+ end
116
+
117
+ # has_one
118
+ if @association.has_one? and (options.with_opposite or ( options.ask and yes?("#{@association.model1.name} has one #{@association.model2.singular_name}. Create belongs_to association?") ))
119
+ generate "mdwa:association #{@association.model2.raw} belongs_to #{@association.model1.raw} #{'--force' if options.force}"
120
+ end
121
+
122
+ # nested_many
123
+ if @association.nested_many? and (options.with_opposite or ( options.ask and yes?("#{@association.model1.name} has many (nested) with #{@association.model2.plural_name}. Create belongs_to association?") ))
124
+ generate "mdwa:association #{@association.model2.raw} belongs_to #{@association.model1.raw} #{'--force' if options.force}"
125
+ end
126
+
127
+ # nested_one
128
+ if @association.nested_one? and (options.with_opposite or ( options.ask and yes?("#{@association.model1.name} belongs nested to #{@association.model2.singular_name}. Create has_one association?") ))
129
+ generate "mdwa:association #{@association.model2.raw} has_one #{@association.model1.raw} #{'--force' if options.force}"
130
+ end
131
+
132
+ end
133
+ end
134
+
135
+ # Implement the required interface for Rails::Generators::Migration.
136
+ def self.next_migration_number(dirname)
137
+ if ActiveRecord::Base.timestamped_migrations
138
+ Time.now.utc.strftime("%Y%m%d%H%M%S").to_s
139
+ else
140
+ "%.3d" % (current_migration_number(dirname) + 1)
141
+ end
142
+ end
143
+
144
+ private
145
+ def many_to_many_table_name
146
+ "#{@association.ordered.first.plural_name}_#{@association.ordered.last.plural_name}"
147
+ end
148
+
149
+
150
+ end
151
+ end
152
+ end
@@ -6,4 +6,4 @@ Description:
6
6
  Referenced models also have their relations configured in models and views.
7
7
 
8
8
  Example:
9
- rails generate mdd:scaffold Model name:string initial_date:date category_id:category:name:belongs
9
+ rails generate mdwa:scaffold Model name:string initial_date:date category_id:category:name:belongs
@@ -3,7 +3,7 @@
3
3
  require 'rails/generators'
4
4
  require 'rails/generators/migration'
5
5
 
6
- module Mdd
6
+ module Mdwa
7
7
  module Generators
8
8
  class SandboxGenerator < Rails::Generators::Base
9
9
 
@@ -112,13 +112,14 @@ module Mdd
112
112
  def config
113
113
  # initializers
114
114
  copy_file 'config/initializers/devise.rb', 'config/initializers/mdwa_devise.rb'
115
- copy_file 'config/initializers/mdd_inflections.rb', 'config/initializers/mdwa_inflections.rb'
116
- copy_file 'config/initializers/mdd_layout.rb', 'config/initializers/mdwa_layout.rb'
117
- copy_file 'config/initializers/will_paginate.rb', 'config/initializers/mdwa_will_paginte.rb'
115
+ copy_file 'config/initializers/mdwa_inflections.rb', 'config/initializers/mdwa_inflections.rb'
116
+ copy_file 'config/initializers/mdwa_layout.rb', 'config/initializers/mdwa_layout.rb'
117
+ copy_file 'config/initializers/will_paginate.rb', 'config/initializers/mdwa_will_paginate.rb'
118
118
 
119
119
  # language files
120
120
  copy_file 'config/locales/devise.en.yml', 'config/locales/devise.en.yml'
121
121
  copy_file 'config/locales/mdwa.en.yml', 'config/locales/mdwa.en.yml'
122
+ copy_file 'config/locales/mdwa.en.yml', 'config/locales/mdwa_model_specific.en.yml'
122
123
  end
123
124
 
124
125
  def routes
@@ -1,6 +1,8 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  class A::AdministratorsController < A::BackendController
3
3
 
4
+ load_and_authorize_resource
5
+
4
6
  def index
5
7
  @administrators = Administrator.paginate :page => params[:page]
6
8