mdd 3.0.2 → 3.0.3
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.
- data/app/helpers/mdwa_helper.rb +2 -1
- data/lib/generators/mdwa/association/association_generator.rb +1 -1
- data/lib/generators/mdwa/association/templates/migrate/many_to_many.rb +1 -1
- data/lib/generators/mdwa/association/templates/migrate/one_field.rb +2 -1
- data/lib/generators/mdwa/code/code_generator.rb +54 -22
- data/lib/generators/mdwa/code/templates/migration.rb +2 -1
- data/lib/generators/mdwa/entity/entity_generator.rb +1 -2
- data/lib/generators/mdwa/entity/templates/entity.rb +2 -1
- data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +56 -0
- data/lib/generators/mdwa/process/USAGE +4 -0
- data/lib/generators/mdwa/process/process_generator.rb +24 -0
- data/lib/generators/mdwa/process/templates/process.rb +49 -0
- data/lib/generators/mdwa/requirement/USAGE +4 -0
- data/lib/generators/mdwa/requirement/requirement_generator.rb +24 -0
- data/lib/generators/mdwa/requirement/templates/requirement.rb +21 -0
- data/lib/generators/mdwa/sandbox/sandbox_generator.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb +2 -2
- data/lib/generators/mdwa/sandbox/templates/app/controllers/a/backend_controller.rb +2 -1
- data/lib/generators/mdwa/sandbox/templates/app/controllers/a/users/sessions_controller.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/app/controllers/public_controller.rb +1 -0
- data/lib/generators/mdwa/sandbox/templates/config/initializers/devise.rb +1 -0
- data/lib/generators/mdwa/sandbox/templates/config/initializers/mdwa_layout.rb +2 -1
- data/lib/generators/mdwa/sandbox/templates/config/locales/mdwa.en.yml +1 -1
- data/lib/generators/mdwa/sandbox/templates/db/migrate/devise_create_users.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/db/seeds.rb +1 -1
- data/lib/generators/mdwa/sandbox/templates/db/seeds/site.rb +1 -1
- data/lib/generators/mdwa/scaffold/scaffold_generator.rb +10 -3
- data/lib/generators/mdwa/scaffold/templates/controllers/ajax_controller.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/controllers/controller.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/db_migrate/migrate.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/models/model.rb +2 -1
- data/lib/generators/mdwa/scaffold/templates/models/module.rb +2 -1
- data/lib/generators/mdwa/user/templates/user.rb +12 -0
- data/lib/generators/mdwa/user/user_generator.rb +13 -104
- data/lib/generators/mdwa/{user → user_scaffold}/USAGE +1 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/controllers/ajax_controller.rb +2 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/controllers/controller.rb +2 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/migrate.rb +2 -1
- data/lib/generators/mdwa/{user → user_scaffold}/templates/views/update.js.erb +0 -0
- data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +139 -0
- data/lib/mdd.rb +1 -1
- data/lib/mdwa.rb +1 -1
- data/lib/mdwa/all.rb +1 -1
- data/lib/mdwa/dsl.rb +17 -4
- data/lib/mdwa/dsl/action.rb +78 -0
- data/lib/mdwa/dsl/entities.rb +4 -4
- data/lib/mdwa/dsl/entity.rb +59 -23
- data/lib/mdwa/dsl/entity_actions.rb +73 -0
- data/lib/mdwa/dsl/entity_association.rb +1 -1
- data/lib/mdwa/dsl/entity_attribute.rb +1 -1
- data/lib/mdwa/dsl/entity_specification.rb +22 -0
- data/lib/mdwa/dsl/process.rb +53 -0
- data/lib/mdwa/dsl/process_detail.rb +57 -0
- data/lib/mdwa/dsl/process_detail_next_action.rb +16 -0
- data/lib/mdwa/dsl/requirement.rb +23 -0
- data/lib/mdwa/dsl/requirements.rb +57 -0
- data/lib/mdwa/dsl/user.rb +34 -0
- data/lib/mdwa/dsl/users.rb +57 -0
- data/lib/mdwa/dsl/workflow.rb +57 -0
- data/lib/mdwa/generators.rb +1 -1
- data/lib/mdwa/generators/model.rb +3 -1
- data/lib/mdwa/generators/model_association.rb +4 -1
- data/lib/mdwa/generators/model_attribute.rb +2 -1
- data/lib/mdwa/layout.rb +1 -1
- data/lib/mdwa/layout/base.rb +1 -1
- data/lib/mdwa/layout/helper.rb +1 -1
- data/lib/mdwa/version.rb +1 -1
- data/test/entity_actions_test.rb +101 -0
- data/test/entity_specifications_test.rb +37 -0
- data/test/entity_test.rb +1 -1
- data/test/layout_test.rb +1 -1
- data/test/process_test.rb +86 -0
- data/test/requirements_test.rb +44 -0
- data/test/users_test.rb +55 -0
- metadata +37 -10
- data/lib/mdwa/dsl/generator.rb +0 -10
- data/test/generators_test.rb +0 -0
data/app/helpers/mdwa_helper.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
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,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,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,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
|
data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb
CHANGED
@@ -231,7 +231,7 @@ div.inside {
|
|
231
231
|
}
|
232
232
|
|
233
233
|
#leftbar ul li a:hover {
|
234
|
-
background:
|
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
|
-
|
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
|