mdd 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/app/helpers/mdwa_helper.rb +2 -1
  2. data/lib/generators/mdwa/association/association_generator.rb +1 -1
  3. data/lib/generators/mdwa/association/templates/migrate/many_to_many.rb +1 -1
  4. data/lib/generators/mdwa/association/templates/migrate/one_field.rb +2 -1
  5. data/lib/generators/mdwa/code/code_generator.rb +54 -22
  6. data/lib/generators/mdwa/code/templates/migration.rb +2 -1
  7. data/lib/generators/mdwa/entity/entity_generator.rb +1 -2
  8. data/lib/generators/mdwa/entity/templates/entity.rb +2 -1
  9. data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +56 -0
  10. data/lib/generators/mdwa/process/USAGE +4 -0
  11. data/lib/generators/mdwa/process/process_generator.rb +24 -0
  12. data/lib/generators/mdwa/process/templates/process.rb +49 -0
  13. data/lib/generators/mdwa/requirement/USAGE +4 -0
  14. data/lib/generators/mdwa/requirement/requirement_generator.rb +24 -0
  15. data/lib/generators/mdwa/requirement/templates/requirement.rb +21 -0
  16. data/lib/generators/mdwa/sandbox/sandbox_generator.rb +1 -1
  17. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb +2 -2
  18. data/lib/generators/mdwa/sandbox/templates/app/controllers/a/backend_controller.rb +2 -1
  19. data/lib/generators/mdwa/sandbox/templates/app/controllers/a/users/sessions_controller.rb +1 -1
  20. data/lib/generators/mdwa/sandbox/templates/app/controllers/public_controller.rb +1 -0
  21. data/lib/generators/mdwa/sandbox/templates/config/initializers/devise.rb +1 -0
  22. data/lib/generators/mdwa/sandbox/templates/config/initializers/mdwa_layout.rb +2 -1
  23. data/lib/generators/mdwa/sandbox/templates/config/locales/mdwa.en.yml +1 -1
  24. data/lib/generators/mdwa/sandbox/templates/db/migrate/devise_create_users.rb +1 -1
  25. data/lib/generators/mdwa/sandbox/templates/db/seeds.rb +1 -1
  26. data/lib/generators/mdwa/sandbox/templates/db/seeds/site.rb +1 -1
  27. data/lib/generators/mdwa/scaffold/scaffold_generator.rb +10 -3
  28. data/lib/generators/mdwa/scaffold/templates/controllers/ajax_controller.rb +2 -1
  29. data/lib/generators/mdwa/scaffold/templates/controllers/controller.rb +2 -1
  30. data/lib/generators/mdwa/scaffold/templates/db_migrate/migrate.rb +2 -1
  31. data/lib/generators/mdwa/scaffold/templates/models/model.rb +2 -1
  32. data/lib/generators/mdwa/scaffold/templates/models/module.rb +2 -1
  33. data/lib/generators/mdwa/user/templates/user.rb +12 -0
  34. data/lib/generators/mdwa/user/user_generator.rb +13 -104
  35. data/lib/generators/mdwa/{user → user_scaffold}/USAGE +1 -1
  36. data/lib/generators/mdwa/{user → user_scaffold}/templates/controllers/ajax_controller.rb +2 -1
  37. data/lib/generators/mdwa/{user → user_scaffold}/templates/controllers/controller.rb +2 -1
  38. data/lib/generators/mdwa/{user → user_scaffold}/templates/migrate.rb +2 -1
  39. data/lib/generators/mdwa/{user → user_scaffold}/templates/views/update.js.erb +0 -0
  40. data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +139 -0
  41. data/lib/mdd.rb +1 -1
  42. data/lib/mdwa.rb +1 -1
  43. data/lib/mdwa/all.rb +1 -1
  44. data/lib/mdwa/dsl.rb +17 -4
  45. data/lib/mdwa/dsl/action.rb +78 -0
  46. data/lib/mdwa/dsl/entities.rb +4 -4
  47. data/lib/mdwa/dsl/entity.rb +59 -23
  48. data/lib/mdwa/dsl/entity_actions.rb +73 -0
  49. data/lib/mdwa/dsl/entity_association.rb +1 -1
  50. data/lib/mdwa/dsl/entity_attribute.rb +1 -1
  51. data/lib/mdwa/dsl/entity_specification.rb +22 -0
  52. data/lib/mdwa/dsl/process.rb +53 -0
  53. data/lib/mdwa/dsl/process_detail.rb +57 -0
  54. data/lib/mdwa/dsl/process_detail_next_action.rb +16 -0
  55. data/lib/mdwa/dsl/requirement.rb +23 -0
  56. data/lib/mdwa/dsl/requirements.rb +57 -0
  57. data/lib/mdwa/dsl/user.rb +34 -0
  58. data/lib/mdwa/dsl/users.rb +57 -0
  59. data/lib/mdwa/dsl/workflow.rb +57 -0
  60. data/lib/mdwa/generators.rb +1 -1
  61. data/lib/mdwa/generators/model.rb +3 -1
  62. data/lib/mdwa/generators/model_association.rb +4 -1
  63. data/lib/mdwa/generators/model_attribute.rb +2 -1
  64. data/lib/mdwa/layout.rb +1 -1
  65. data/lib/mdwa/layout/base.rb +1 -1
  66. data/lib/mdwa/layout/helper.rb +1 -1
  67. data/lib/mdwa/version.rb +1 -1
  68. data/test/entity_actions_test.rb +101 -0
  69. data/test/entity_specifications_test.rb +37 -0
  70. data/test/entity_test.rb +1 -1
  71. data/test/layout_test.rb +1 -1
  72. data/test/process_test.rb +86 -0
  73. data/test/requirements_test.rb +44 -0
  74. data/test/users_test.rb +55 -0
  75. metadata +37 -10
  76. data/lib/mdwa/dsl/generator.rb +0 -10
  77. data/test/generators_test.rb +0 -0
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module MdwaHelper
2
3
 
3
4
  def pagination_footer( object_list )
@@ -13,4 +14,4 @@ module MdwaHelper
13
14
  return results.collect{ |c| "{label: '#{c.send field_name}', value: '#{c.id}'}" }.join( ',' )
14
15
  end
15
16
 
16
- end
17
+ end
@@ -150,4 +150,4 @@ module Mdwa
150
150
 
151
151
  end
152
152
  end
153
- end
153
+ end
@@ -5,4 +5,4 @@ class Create<%= @association.ordered.first.plural_name.camelize %><%= @associati
5
5
  t.references :<%= @association.ordered.first.singular_name %>, :<%= @association.ordered.last.singular_name %>
6
6
  end
7
7
  end
8
- end
8
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class Add<%= @field.singular_name.foreign_key.camelize %>To<%= @table.plural_name.camelize %> < ActiveRecord::Migration
2
3
 
3
4
  def self.up
@@ -10,4 +11,4 @@ class Add<%= @field.singular_name.foreign_key.camelize %>To<%= @table.plural_nam
10
11
  remove_index :<%= @table.plural_name %>, :<%= @field.singular_name.foreign_key %>
11
12
  end
12
13
 
13
- end
14
+ end
@@ -20,29 +20,37 @@ module Mdwa
20
20
  class_option :run_migrations, :type => :boolean, :default => false, :desc => 'Run rake db:migrate directly'
21
21
  class_option :only_interface, :type => :boolean, :default => false, :desc => 'Generate only user interface'
22
22
 
23
+ #
24
+ # Constructor
25
+ # Require all entities to load the DSL of the application
26
+ #
23
27
  def initialize(*args, &block)
24
28
  super
25
29
 
26
30
  # include files with entities
31
+ # select entities that will be generated
27
32
  inside Rails.root do
28
33
  if entities.count.zero?
29
- require_all MDWA::DSL::STRUCTURAL_PATH
34
+ require_all MDWA::DSL::STRUCTURAL_PATH unless Dir.glob("#{MDWA::DSL::STRUCTURAL_PATH}/*.rb").count.zero?
30
35
  else
31
36
  files = entities.collect{ |e| "#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(e).file_name}.rb" }
32
37
  require_all files.join(', ')
33
38
  end
34
39
  end
35
-
36
- # select models that will be generated
37
- # only required models are included
38
40
  @all_entities = MDWA::DSL.entities.all
39
41
 
42
+ # entity changes and migrations
40
43
  @changes = []
41
44
  @random_migration_key = rand.to_s.gsub('.','').to_i
42
-
45
+
43
46
  end
44
47
 
45
- def code_generation
48
+
49
+ #
50
+ # Generate code for entities or entity changes.
51
+ # Generate migration for field changes.
52
+ #
53
+ def entities_and_changes
46
54
 
47
55
  return false if options.only_interface
48
56
 
@@ -100,9 +108,18 @@ module Mdwa
100
108
 
101
109
  end
102
110
 
111
+ # generate changed code
112
+ unless @changes.empty?
113
+ migration_template 'migration.rb', "db/migrate/alter_#{@all_entities.select{|e| e.resource?}.collect{|e| e.file_name}.join('_')}#{@random_migration_key}.rb"
114
+ end
115
+
103
116
  end
104
117
 
105
- def only_interface_generation
118
+
119
+ #
120
+ # Generate entities interface.
121
+ #
122
+ def entities_interface
106
123
 
107
124
  if options.only_interface
108
125
  @all_entities.each do |entity|
@@ -129,31 +146,46 @@ module Mdwa
129
146
  end
130
147
  end
131
148
 
132
- end
149
+ end
133
150
 
134
- def migration_generation
135
- unless @changes.empty?
136
- # generate changed code
137
- migration_template 'migration.rb', "db/migrate/alter_#{@all_entities.select{|e| e.resource?}.collect{|e| e.file_name}.join('_')}#{@random_migration_key}.rb"
138
- end
151
+
152
+ #
153
+ # Generate actions for entities.
154
+ #
155
+ def entities_actions
156
+ end
157
+
158
+ #
159
+ # Generate code for entities specify.
160
+ #
161
+ def entites_specifications
139
162
  end
163
+
140
164
 
165
+ #
166
+ # Run rake db:migrate
167
+ #
141
168
  def rake_db_migrate
142
169
  if options.run_migrations
143
170
  rake 'db:migrate'
144
171
  end
145
172
  end
173
+
174
+
175
+
146
176
 
147
- # Implement the required interface for Rails::Generators::Migration.
148
- def self.next_migration_number(dirname) #:nodoc:
149
- if ActiveRecord::Base.timestamped_migrations
150
- Time.now.utc.strftime("%Y%m%d%H%M%S")
151
- else
152
- "%.3d" % (current_migration_number(dirname) + 1)
153
- end
154
- end
155
177
 
156
178
  private
179
+
180
+ # Implement the required interface for Rails::Generators::Migration.
181
+ def self.next_migration_number(dirname) #:nodoc:
182
+ if ActiveRecord::Base.timestamped_migrations
183
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
184
+ else
185
+ "%.3d" % (current_migration_number(dirname) + 1)
186
+ end
187
+ end
188
+
157
189
  def inverse_migration_type(type)
158
190
  case type.to_sym
159
191
  when :add_column then 'remove_column'
@@ -165,4 +197,4 @@ module Mdwa
165
197
  end # class
166
198
  end # generators
167
199
  end # mdwa
168
-
200
+
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class Alter<%= @all_entities.select{|e| e.resource?}.collect{|e| e.file_name.camelize}.join('') %><%= @random_migration_key %> < ActiveRecord::Migration
2
3
 
3
4
  def self.up
@@ -12,4 +13,4 @@ class Alter<%= @all_entities.select{|e| e.resource?}.collect{|e| e.file_name.cam
12
13
  <%- end -%>
13
14
  end
14
15
 
15
- end
16
+ end
@@ -1,7 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  require 'rails/generators'
4
- require 'rails/generators/migration'
5
4
 
6
5
  require 'mdwa/dsl'
7
6
 
@@ -22,4 +21,4 @@ module Mdwa
22
21
 
23
22
  end # entity
24
23
  end #generators
25
- end #mdwa
24
+ end #mdwa
@@ -1,4 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
+ require 'mdwa/dsl'
2
3
  MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
3
4
 
4
5
  <%- if options.user -%>
@@ -47,4 +48,4 @@ MDWA::DSL.entities.register "<%= name.singularize.camelize %>" do |e|
47
48
  # end
48
49
  <%- end -%>
49
50
 
50
- end
51
+ end
@@ -0,0 +1,56 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require 'rails/generators'
4
+
5
+ require 'mdwa/dsl'
6
+
7
+ module Mdwa
8
+ module Generators
9
+
10
+ class FromRequirementsGenerator < Rails::Generators::Base
11
+
12
+ source_root File.expand_path("../templates", __FILE__)
13
+ attr_accessor :requirements
14
+
15
+ #
16
+ # Constructor
17
+ # Require all entities to load the DSL of the application
18
+ #
19
+ def initialize(*args, &block)
20
+ super
21
+
22
+ # include files with requirements
23
+ inside Rails.root do
24
+ require_all MDWA::DSL::REQUIREMENTS_PATH
25
+ end
26
+ @requirements = MDWA::DSL.requirements.all
27
+
28
+ end
29
+
30
+
31
+ #
32
+ # Generate code for requirements.
33
+ # Generate files for entities and users.
34
+ def requirements
35
+
36
+ # For all requirements, generate users and entities
37
+ @requirements.each do |requirement|
38
+
39
+ # generate entities
40
+ requirement.entities.each do |entity|
41
+ generate "mdwa:entity #{entity}" unless File.exist?("#{Rails.root}/#{MDWA::DSL::STRUCTURAL_PATH}#{MDWA::DSL::Entity.new(entity).file_name}.rb")
42
+ end
43
+
44
+ # generate users
45
+ requirement.users.each do |user|
46
+ generate "mdwa:user #{user}" unless File.exist?("#{Rails.root}/#{MDWA::DSL::USERS_PATH}#{MDWA::DSL::Entity.new(user).file_name}.rb")
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end # class
54
+
55
+ end # generators
56
+ end # mdwa
@@ -0,0 +1,4 @@
1
+ Generates a new process.
2
+ USAGE
3
+ rails g mdwa:process 'Put product in shopping cart'
4
+ rails g mdwa:process 'Ship delivery' --no-comments
@@ -0,0 +1,24 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require 'rails/generators'
4
+
5
+ require 'mdwa/dsl'
6
+
7
+ module Mdwa
8
+ module Generators
9
+ class ProcessGenerator < Rails::Generators::Base
10
+
11
+ source_root File.expand_path("../templates", __FILE__)
12
+
13
+ argument :description, :type => :string, :banner => 'Process description'
14
+
15
+ class_option :no_comments, :type => :boolean, :default => false, :desc => 'Generates process without comments.'
16
+
17
+ def code_generation
18
+ @process = MDWA::DSL::Process.new(description)
19
+ template 'requirement.rb', "#{MDWA::DSL::WORKFLOW_PATH}#{@process.alias}.rb"
20
+ end
21
+
22
+ end # entity
23
+ end # generators
24
+ end # mdwa
@@ -0,0 +1,49 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'mdwa/dsl'
3
+ MDWA::DSL.workflow.register '<%= @description %>' do |p|
4
+
5
+ p.alias = '<%= @process.alias %>'
6
+
7
+ <%- unless options.no_comments -%>
8
+ # The process start point for every user role
9
+ # Params: :user_role, alias or entity listing
10
+ # p.start_for 'ProjectManager', 'new_project_group'
11
+ # p.start_for 'TeamMember', 'new_task'
12
+
13
+ # p.detail "Create project group" do |d|
14
+
15
+ # Unique alias for detailing
16
+ # Default: Detail name underscored
17
+ # d.alias = 'create_project_group'
18
+
19
+ # Roles with permission to execute this action
20
+ # Default: all -> no restriction
21
+ # d.user_roles ['ProjectManager']
22
+
23
+ # Refered action
24
+ # Params:
25
+ # => :alias
26
+ # => :entity
27
+ # => :action
28
+ # => :method => :get (default), :post, :put, :delete
29
+ # => :request_type => :html (default), :ajax, :ajax_js, :modalbox
30
+ # d.action 'project_group', 'create'
31
+
32
+ # Possible next action
33
+ # Params:
34
+ # => :alias
35
+ # => :entity
36
+ # => :action
37
+ # => :method
38
+ # => :request
39
+ # => :redirect => boolean
40
+ # => :render => boolean
41
+ # => :when - situation when it might occur
42
+ # d.next_action 'new_project_group', :when => 'save failed'
43
+ # d.next_action entity: 'project_group', action: 'index', :redirect => true, :when => 'save ok'
44
+ # d.next_action 'project', 'new', :when => 'clicked save & new project'
45
+
46
+ # end
47
+ <%- end -%>
48
+
49
+ end
@@ -0,0 +1,4 @@
1
+ Generates a new requirement.
2
+ USAGE
3
+ rails g mdwa:requirement 'Manage clients and projects'
4
+ rails g mdwa:requirement 'Manage project tasks' --no-comments
@@ -0,0 +1,24 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require 'rails/generators'
4
+
5
+ require 'mdwa/dsl'
6
+
7
+ module Mdwa
8
+ module Generators
9
+ class RequirementGenerator < Rails::Generators::Base
10
+
11
+ source_root File.expand_path("../templates", __FILE__)
12
+
13
+ argument :summary, :type => :string, :banner => 'Requirement summary'
14
+
15
+ class_option :no_comments, :type => :boolean, :default => false, :desc => 'Generates requirements without comments.'
16
+
17
+ def code_generation
18
+ @requirement = MDWA::DSL::Requirement.new(summary)
19
+ template 'requirement.rb', "#{MDWA::DSL::REQUIREMENTS_PATH}#{@requirement.alias}.rb"
20
+ end
21
+
22
+ end # entity
23
+ end # generators
24
+ end # mdwa
@@ -0,0 +1,21 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'mdwa/dsl'
3
+ MDWA::DSL.requirements.register do |r|
4
+
5
+ r.summary = '<%= @summary %>'
6
+ <%- unless options.no_comments %>
7
+ # r.alias = '<%= @requirement.alias %>' # alias is the unique requirement name and it's created automatically, you can override with this argument.
8
+ # r.description = %q{Detailed description of the requirement.}
9
+
10
+ #
11
+ # Entities involved in this requirement.
12
+ # Use an array of entity names.
13
+ # r.entities = ['ProjectGroup', 'Project', 'Task', 'Milestone']
14
+
15
+ #
16
+ # Users involved in this requirement.
17
+ # Use an array of user names.
18
+ # r.users = ['Administrator', 'TeamMember']
19
+ <% end %>
20
+
21
+ end
@@ -176,4 +176,4 @@ module Mdwa
176
176
 
177
177
  end
178
178
  end
179
- end
179
+ end
@@ -231,7 +231,7 @@ div.inside {
231
231
  }
232
232
 
233
233
  #leftbar ul li a:hover {
234
- background: none repeat scroll 0 0 rgba(0, 0, 0, 0.075);
234
+ background-image: rgba(0, 0, 0, 0.075);
235
235
  }
236
236
 
237
237
  #leftbar ul.submenu {
@@ -244,7 +244,7 @@ div.inside {
244
244
  }
245
245
 
246
246
  #leftbar ul.submenu li a:hover {
247
- background: #5D5D5D !important
247
+ background-image: rgba(0, 0, 0, 0.075);
248
248
  }
249
249
 
250
250
  #leftbar ul li a span {
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class A::BackendController < ApplicationController
2
3
 
3
4
  before_filter :authenticate_a_user!
@@ -12,4 +13,4 @@ class A::BackendController < ApplicationController
12
13
  return current_a_user
13
14
  end
14
15
  helper_method :current_user
15
- end
16
+ end
@@ -1,3 +1,3 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  class A::Users::SessionsController < Devise::SessionsController
3
- end
3
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class PublicController < ApplicationController
2
3
  def index
3
4
  end