mdd 3.1.0 → 3.1.1

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 (88) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/mdwa/mdwa_controller.rb +2 -1
  3. data/app/controllers/mdwa/requirements_controller.rb +2 -1
  4. data/app/helpers/mdwa_helper.rb +19 -5
  5. data/app/views/template/mdwa/_autocomplete_multiple_tag.html.erb +2 -2
  6. data/app/views/template/mdwa/_autocomplete_remote_multiple_tag.html.erb +49 -0
  7. data/app/views/template/mdwa/_autocomplete_remote_tag.html.erb +24 -0
  8. data/app/views/template/mdwa/_autocomplete_tag.html.erb +1 -1
  9. data/app/views/template/mdwa/_crud_error.html.erb +1 -1
  10. data/app/views/template/mdwa/_login_text.html.erb +4 -3
  11. data/app/views/template/mdwa/_notice.html.erb +3 -3
  12. data/lib/extensions/string.rb +2 -2
  13. data/lib/generators/mdwa/entity/entity_generator.rb +1 -1
  14. data/lib/generators/mdwa/entity/templates/entity.rb +1 -1
  15. data/lib/generators/mdwa/from_requirements/from_requirements_generator.rb +2 -2
  16. data/lib/generators/mdwa/requirement/templates/requirement.rb +2 -3
  17. data/lib/generators/mdwa/sandbox/sandbox_generator.rb +2 -1
  18. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/blank.gif +0 -0
  19. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/fancybox_loading.gif +0 -0
  20. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/fancybox_overlay.png +0 -0
  21. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/fancybox_sprite.png +0 -0
  22. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  23. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  24. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
  25. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  26. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  27. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  28. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  29. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  30. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  31. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_222222_256x240.png +0 -0
  32. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
  33. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
  34. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
  35. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  36. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/jquery/jquery.fancybox.js +45 -31
  37. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/jquery/jquery.mousewheel.js +12 -12
  38. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/login_manifest.js +1 -0
  39. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/template/all_pages.js +6 -3
  40. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/template/pagination.js +6 -2
  41. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/jquery/jquery-ui-1.10.0.custom.css +1174 -0
  42. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/jquery/{jquery.fancybox.css → jquery.fancybox.css.erb} +94 -71
  43. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/login/login.css +67 -60
  44. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/system_manifest.css +1 -7
  45. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb +35 -66
  46. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/template.css.erb +372 -34
  47. data/lib/generators/mdwa/sandbox/templates/config/locales/mdwa.en.yml +4 -0
  48. data/lib/generators/mdwa/scaffold/templates/controllers/ajax_controller.rb +1 -1
  49. data/lib/generators/mdwa/scaffold/templates/controllers/controller.rb +1 -1
  50. data/lib/generators/mdwa/scaffold/templates/specs/routing.rb +1 -1
  51. data/lib/generators/mdwa/templates/templates/general/routes.rb +2 -1
  52. data/lib/generators/mdwa/templates/templates/scaffold/controller.erb +51 -37
  53. data/lib/generators/mdwa/templates/templates/scaffold/views/_form_fields.html.erb +2 -2
  54. data/lib/generators/mdwa/templates/templates/scaffold/views/_list.html.erb +10 -9
  55. data/lib/generators/mdwa/templates/templates/scaffold/views/create.js.erb +1 -1
  56. data/lib/generators/mdwa/templates/templates/scaffold/views/destroy.js.erb +1 -1
  57. data/lib/generators/mdwa/templates/templates/scaffold/views/index.html.erb +46 -1
  58. data/lib/generators/mdwa/templates/templates/scaffold/views/index.js.erb +1 -1
  59. data/lib/generators/mdwa/templates/templates/scaffold/views/update.js.erb +1 -1
  60. data/lib/generators/mdwa/templates/templates_generator.rb +1 -1
  61. data/lib/generators/mdwa/transform/transform_generator.rb +81 -73
  62. data/lib/generators/mdwa/user/templates/user.rb +1 -1
  63. data/lib/generators/mdwa/user_scaffold/templates/migrate.erb +12 -4
  64. data/lib/generators/mdwa/user_scaffold/user_scaffold_generator.rb +9 -2
  65. data/lib/mdwa/dsl/entity.rb +11 -10
  66. data/lib/mdwa/dsl/entity_association.rb +11 -3
  67. data/lib/mdwa/dsl/entity_attribute.rb +8 -1
  68. data/lib/mdwa/dsl/process.rb +2 -0
  69. data/lib/mdwa/dsl/process_detail.rb +2 -0
  70. data/lib/mdwa/dsl/process_detail_next_action.rb +3 -1
  71. data/lib/mdwa/dsl/requirement.rb +6 -3
  72. data/lib/mdwa/dsl/requirements.rb +1 -1
  73. data/lib/mdwa/dsl/workflow.rb +1 -1
  74. data/lib/mdwa/generators/model.rb +8 -0
  75. data/lib/mdwa/generators/model_association.rb +9 -0
  76. data/lib/mdwa/generators/model_attribute.rb +46 -24
  77. data/lib/mdwa/version.rb +1 -1
  78. data/mdd.gemspec +1 -1
  79. data/test/entity_attributes_options_test.rb +43 -0
  80. data/test/entity_test.rb +6 -6
  81. data/test/process_test.rb +31 -31
  82. data/test/requirements_test.rb +3 -5
  83. metadata +36 -57
  84. data/lib/generators/mdwa/sandbox/templates/app/assets/images/mdwa/button_submit.gif +0 -0
  85. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/jquery/jquery.bgiframe.js +0 -10
  86. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/jquery/jquery-ui-theme1.css +0 -573
  87. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/leftbar.css.erb +0 -0
  88. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/visualization.css +0 -3
@@ -12,6 +12,7 @@ en:
12
12
  logged_info_edit_account: "My Account"
13
13
  cancel_button: "Cancel"
14
14
  save_button: "Save"
15
+ search_button: "Search"
15
16
  index_id: "ID"
16
17
  index_edit: "Edit"
17
18
  index_edit_label: "Edit"
@@ -21,6 +22,9 @@ en:
21
22
  add_by_ajax: "Add new %{name}"
22
23
  edit_by_ajax: "Edit %{name}"
23
24
  no_file: "No file"
25
+ yes: "Yes"
26
+ no: "No"
27
+ both: "Both"
24
28
 
25
29
  administrators:
26
30
  edit_title: "Editing account: %{name}"
@@ -4,7 +4,7 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
4
4
  load_and_authorize_resource :class => "<%= @model.klass %>"
5
5
 
6
6
  def index
7
- @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page]
7
+ @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page], :per_page => params[:per_page]
8
8
 
9
9
  respond_to do |format|
10
10
  format.html
@@ -4,7 +4,7 @@ class <%= @model.controller_name %>Controller < <%= @inherit_controller || 'Appl
4
4
  load_and_authorize_resource :class => "<%= @model.klass %>"
5
5
 
6
6
  def index
7
- @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page]
7
+ @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page], :per_page => params[:per_page]
8
8
 
9
9
  respond_to do |format|
10
10
  format.html
@@ -33,4 +33,4 @@ describe <%= @model.controller_name %>Controller do
33
33
  end
34
34
 
35
35
  end
36
- end
36
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  def mdwa_router(router)
2
3
 
3
- end
4
+ end
@@ -9,17 +9,44 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
9
9
  # Hook for code generations. Do not delete.
10
10
  #===controller_init===
11
11
 
12
- def index
13
- @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page]
12
+ def index
13
+ conditions = []
14
+ <%-
15
+ atributos_com_filtro = @entity.attributes.values.select {|attr| attr.options[:filtered]}
16
+ associacoes_com_filtro = @entity.associations.values.select {|assoc| assoc.options[:filtered]}
17
+ -%>
18
+ <%- if !atributos_com_filtro.count.zero? -%>
19
+ <%- atributos_com_filtro.each do |atributo| -%>
20
+ <%- if [:integer, :float, :decimal, :boolean].include? atributo.type.to_sym -%>
21
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> = '#{params[:<%= atributo.name %>]}')" unless params[:<%= atributo.name %>].blank?
22
+ <%- elsif [:string, :text].include? atributo.type.to_sym -%>
23
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> LIKE '%#{params[:<%= atributo.name %>]}%')" unless params[:<%= atributo.name %>].blank?
24
+ <%- elsif [:date].include? atributo.type.to_sym -%>
25
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> BETWEEN '#{params[:<%= atributo.name %>_0].to_date}' AND '#{params[:<%= atributo.name %>_1].to_date}')" if !params[:<%= atributo.name %>_0].blank? and !params[:<%= atributo.name %>_1].blank?
26
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> >= '#{params[:<%= atributo.name %>_0].to_date}')" if !params[:<%= atributo.name %>_0].blank? and params[:<%= atributo.name %>_0].blank?
27
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> <= '#{params[:<%= atributo.name %>_1].to_date}')" if params[:<%= atributo.name %>_0].blank? and !params[:<%= atributo.name %>_1].blank?
28
+ <%- elsif [:datetime, :timestamp].include? atributo.type.to_sym -%>
29
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> BETWEEN '#{params[:<%= atributo.name %>_0].to_date.beginning_of_day}' AND '#{params[:<%= atributo.name %>_1].to_date.end_of_day}')" if !params[:<%= atributo.name %>_0].blank? and !params[:<%= atributo.name %>_1].blank?
30
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> >= '#{params[:<%= atributo.name %>_0].to_date.beginning_of_day}')" if !params[:<%= atributo.name %>_0].blank? and params[:<%= atributo.name %>_0].blank?
31
+ conditions << "(<%= @model.plural_name %>.<%= atributo.name %> <= '#{params[:<%= atributo.name %>_1].to_date.end_of_day}')" if params[:<%= atributo.name %>_0].blank? and !params[:<%= atributo.name %>_1].blank?
32
+ <%- end -%>
33
+ <%- end -%>
34
+ <%- end -%>
35
+
36
+ <%- associacoes_com_filtro.each do |associacao| -%>
37
+ conditions << "(<%= @model.plural_name %>.<%= associacao.name %>_id = #{params[:<%= associacao.name %>_id]})" unless params[:<%= associacao.name %>_id].blank?
38
+ <%- end -%>
39
+
40
+ @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => params[:page], :per_page => params[:per_page], :conditions => conditions.join(' AND ')
14
41
 
15
42
  respond_to do |format|
16
43
  format.html
17
44
  format.js
18
45
  end
19
- end
46
+ end
20
47
 
21
48
 
22
- def show
49
+ def show
23
50
  @<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
24
51
 
25
52
  <%- if @entity.ajax? -%>
@@ -29,9 +56,9 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
29
56
  format.html
30
57
  end
31
58
  <%- end -%>
32
- end
59
+ end
33
60
 
34
- def new
61
+ def new
35
62
  @<%= @model.singular_name %> = <%= @model.klass %>.new
36
63
  <%- @model.associations.select {|a| a.nested_one?}.each do |assoc| -%>
37
64
  @<%= @model.singular_name %>.<%= assoc.model2.singular_name %> = <%= assoc.model2.klass %>.new
@@ -44,9 +71,9 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
44
71
  format.html
45
72
  end
46
73
  <%- end -%>
47
- end
74
+ end
48
75
 
49
- def edit
76
+ def edit
50
77
  @<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
51
78
 
52
79
  <%- if @entity.ajax? -%>
@@ -56,15 +83,12 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
56
83
  format.html
57
84
  end
58
85
  <%- end -%>
59
- end
86
+ end
60
87
 
61
- def create
88
+ def create
62
89
  @<%= @model.singular_name %> = <%= @model.klass %>.new(params[:<%= @model.to_params %>])
63
90
  saved_ok = @<%= @model.singular_name %>.save
64
- @system_notice = t('<%= @model.plural_name %>.create_success') if saved_ok
65
- <%- if @entity.ajax? -%>
66
- load_list # loads all <%= @model.plural_name %> to display in the list
67
- <%- end -%>
91
+ @system_notice = t('<%= @model.plural_name %>.notice.create') if saved_ok
68
92
 
69
93
  <%- @model.associations.select{|a| a.has_and_belongs_to_many? and a.composition?}.each do |association| -%>
70
94
  unless params[:<%= association.model2.plural_name %>].nil?
@@ -86,9 +110,9 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
86
110
  end
87
111
  <%- end -%>
88
112
  end
89
- end
113
+ end
90
114
 
91
- def update
115
+ def update
92
116
  @<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
93
117
  <%- if @entity.user? -%>
94
118
  # if password is blank, delete from params
@@ -97,11 +121,9 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
97
121
  params[:<%= @model.object_name %>].delete :password_confirmation
98
122
  end
99
123
  <%- end -%>
100
- saved_ok = @<%= @model.singular_name %>.update_attributes(params[:<%= @model.to_params %>])
101
- <%- if @entity.ajax? -%>
102
- @system_notice = t('<%= @model.plural_name %>.update_success') if saved_ok
103
- load_list # loads all <%= @model.plural_name %> to display in the list
104
- <%- end -%>
124
+ @<%= @model.singular_name %>.attributes = params[:<%= @model.to_params %>]
125
+ saved_ok = @<%= @model.singular_name %>.save
126
+ @system_notice = t('<%= @model.plural_name %>.notice.update') if saved_ok
105
127
 
106
128
  <%- @model.associations.select{|a| a.has_and_belongs_to_many? and a.composition?}.each do |association| -%>
107
129
  unless params[:<%= association.model2.plural_name %>].nil?
@@ -116,21 +138,18 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
116
138
  <%- if @entity.ajax? -%>
117
139
  format.js
118
140
  <%- else -%>
119
- if @<%= @model.singular_name %>.update_attributes(params[:<%= @model.object_name %>])
120
- format.html { redirect_to <%= @model.object_name.pluralize %>_path, notice: t('<%= @model.plural_name %>.update_success') }
141
+ if saved_ok
142
+ format.html { redirect_to <%= @model.object_name.pluralize %>_path, notice: @system_notice }
121
143
  else
122
144
  format.html { render action: "edit" }
123
145
  end
124
146
  <%- end -%>
125
147
  end
126
- end
148
+ end
127
149
 
128
- def destroy
150
+ def destroy
129
151
  @<%= @model.singular_name %> = <%= @model.klass %>.find(params[:id])
130
- @system_notice = t('<%= @model.plural_name %>.destroy_success') if @<%= @model.singular_name %>.destroy
131
- <%- if @entity.ajax? -%>
132
- load_list # loads all <%= @model.plural_name %> to display in the list
133
- <%- end -%>
152
+ @system_notice = t('<%= @model.plural_name %>.notice.destroy') if @<%= @model.singular_name %>.destroy
134
153
 
135
154
  respond_to do |format|
136
155
  <%- if @entity.ajax? -%>
@@ -139,12 +158,7 @@ class <%= @model.controller_name %>Controller < <%= (@model.space == 'a') ? 'A::
139
158
  format.html { redirect_to <%= @model.object_name.pluralize %>_path, notice: @system_notice }
140
159
  <%- end -%>
141
160
  end
142
- end
143
-
144
-
145
- private
146
- def load_list
147
- @<%= @model.plural_name %> = <%= @model.klass %>.paginate :page => 1
148
- end
149
-
161
+ end
162
+
163
+
150
164
  end
@@ -3,7 +3,7 @@
3
3
  <div class="field">
4
4
  <%%= f.label :<%= attr.name %>, t('<%= @model.plural_name %>.edit.<%= attr.name %>') %>
5
5
  <%- if attr.type.to_sym == :file -%>
6
- <%% unless @<%= @model.singular_name %>.new_record? %>
6
+ <%% if !@<%= @model.singular_name %>.new_record? and !@<%= @model.singular_name %>.<%= attr.name %>.blank? %>
7
7
  <span><%%= link_to image_tag(file_icon_path(@<%= @model.singular_name %>.<%= attr.name %>_file_name)), @<%= @model.singular_name %>.<%= attr.name %>.url, :target => '_blank' %></span>
8
8
  <%% end %>
9
9
  <%- end -%>
@@ -18,7 +18,7 @@
18
18
  <%%= f.label :<%= assoc.model2.singular_name.foreign_key %>, t('<%= @model.plural_name %>.edit.<%= assoc.model2.singular_name %>') %>
19
19
  <%%= f.select :<%= assoc.model2.singular_name.foreign_key %>,
20
20
  options_for_select( <%= assoc.model2.klass %>.order('<%= assoc.reference_field %> ASC').collect{ |c| [c.<%= assoc.reference_field %>, c.id] }, f.object.<%= assoc.model2.singular_name.foreign_key %> ),
21
- :prompt => '-- Select --' %>
21
+ :prompt => t('<%= @model.plural_name %>.edit.<%= assoc.model2.singular_name %>_select') %>
22
22
  </div>
23
23
  <%- end # if -%>
24
24
 
@@ -1,15 +1,15 @@
1
1
  ===entity_code===
2
2
  <table class="list">
3
3
  <thead>
4
- <th class="list_show"><%%= t 'system.index_id' %></th>
5
- <th class="list_edit"><%%= t 'system.index_edit' %></th>
4
+ <th class="list_show"><%%= t '<%= @model.plural_name %>.index.id' %></th>
6
5
  <%- @model.attributes.select{|a| !['id', 'created_at', 'updated_at'].include?(a.name)}.each do |attr| -%>
7
- <th><%%= t '<%= @model.plural_name %>.index_<%= attr.name %>' %></th>
6
+ <th><%%= t '<%= @model.plural_name %>.index.<%= attr.name %>' %></th>
8
7
  <%- end -%>
9
8
  <%- @model.associations.each do |assoc| -%>
10
9
  <th><%%= t '<%= @model.plural_name %>.index.<%= assoc.model2.singular_name %>' %></th>
11
10
  <%- end -%>
12
- <th class="list_remove"><%%= t 'system.index_remove' %></th>
11
+ <th class="list_edit"><%%= t '<%= @model.plural_name %>.index.edit' %></th>
12
+ <th class="list_remove"><%%= t '<%= @model.plural_name %>.index.remove' %></th>
13
13
  </thead>
14
14
 
15
15
  <%% @<%= @model.plural_name %>.each do |<%= @model.singular_name %>| %>
@@ -17,16 +17,14 @@
17
17
  <td class="list_show">
18
18
  <%%= link_to <%= @model.singular_name %>.id, <%= @model.object_name %>_path(<%= @model.singular_name %>) <%= ", :class => 'lightbox various fancybox.ajax'" if @entity.ajax %> %>
19
19
  </td>
20
- <td class="list_edit">
21
- <%%= link_to t('system.index_edit_label'), edit_<%= @model.object_name %>_path(<%= @model.singular_name %>) <%= ", :class => 'lightbox various fancybox.ajax'" if @entity.ajax %> %>
22
- </td>
20
+
23
21
  <%- @model.attributes.select{|a| a.name != 'id' and a.name != 'created_at' and a.name != 'updated_at'}.each do |attr| -%>
24
22
  <td>
25
23
  <%- if attr.type.to_sym == :file -%>
26
24
  <%% unless <%= @model.singular_name %>.<%= attr.name %>_file_name.blank? %>
27
25
  <%%= link_to image_tag(file_icon_path(<%= @model.singular_name %>.<%= attr.name %>_file_name)), <%= @model.singular_name %>.<%= attr.name %>.url, :target => '_blank' %>
28
26
  <%% else %>
29
- No file.
27
+ <%%= t 'system.no_file' %>
30
28
  <%% end %>
31
29
  <%- else -%>
32
30
  <%%= <%= @model.singular_name %>.<%= attr.name %> %>
@@ -47,8 +45,11 @@
47
45
  <%- end -%>
48
46
  </td>
49
47
  <%- end -%>
48
+ <td class="list_edit">
49
+ <%%= link_to t('<%= @model.plural_name %>.index.edit_label'), edit_<%= @model.object_name %>_path(<%= @model.singular_name %>) <%= ", :class => 'lightbox various fancybox.ajax'" if @entity.ajax %> %>
50
+ </td>
50
51
  <td class="list_remove">
51
- <%%= link_to t('system.index_remove_label'), <%= @model.to_route_object %>, :method => :delete, <%= ':remote => true,' if @entity.ajax %> :data => {:confirm => t('system.index_confirm_deletion')} %>
52
+ <%%= link_to t('<%= @model.plural_name %>.index.remove_label'), <%= @model.to_route_object %>, :method => :delete, <%= ':remote => true,' if @entity.ajax %> :data => {:confirm => t('<%= @model.plural_name %>.index.confirm_deletion')} %>
52
53
  </td>
53
54
  </tr>
54
55
  <%% end %>
@@ -3,6 +3,6 @@
3
3
  $("#mdwa_error").html("<%%= j( render '/template/mdwa/crud_error', :object => @<%= @model.singular_name %> )%>");
4
4
  <%% else %>
5
5
  $.fancybox.close(true);
6
- $("#<%= @model.plural_name %>_list").html("<%%= j( render 'list' )%>");
6
+ $('#<%= @model.plural_name %>_filter_form').submit();
7
7
  $('body').append("<%%= j( render '/template/mdwa/notice', :notice => @system_notice )%>");
8
8
  <%% end %>
@@ -1,3 +1,3 @@
1
1
  ===entity_code===
2
- $("#<%= @model.plural_name %>_list").html("<%%= j( render 'list' )%>");
2
+ $('#<%= @model.plural_name %>_filter_form').submit();
3
3
  $('body').append("<%%= j( render '/template/mdwa/notice', :notice => @system_notice )%>");
@@ -4,12 +4,57 @@
4
4
  <h1><%%= t '<%= @model.plural_name %>.title.index' %></h1>
5
5
  <%- if @entity.ajax -%>
6
6
  <div class="page_header_right_tab">
7
- <%%= link_to t('system.add_by_ajax', :name => '<%= @model.singular_name.humanize %>'), new_<%= @model.object_name %>_path, :class => 'lightbox various fancybox.ajax' %>
7
+ <%%= link_to t('<%= @model.plural_name %>.index.add'), new_<%= @model.object_name %>_path, :class => 'lightbox various fancybox.ajax' %>
8
8
  </div>
9
9
  <%- end -%>
10
10
  </div>
11
11
 
12
12
  <div class="inside">
13
+
14
+ <div class="topo">
15
+ <div class="yui3-g">
16
+ <%%= form_tag <%= @model.object_name.pluralize %>_path, :method => :get, :remote => true, :id => '<%= @model.plural_name %>_filter_form' do %>
17
+
18
+ <%-
19
+ atributos_com_filtro = @entity.attributes.values.select {|attr| attr.options[:filtered]}
20
+ associacoes_com_filtro = @entity.associations.values.select {|assoc| assoc.options[:filtered]}
21
+ -%>
22
+ <%- if !atributos_com_filtro.count.zero? or !associacoes_com_filtro.count.zero? -%>
23
+ <%- atributos_com_filtro.each do |atributo| -%>
24
+ <div class="yui3-u-1-5">
25
+ <div class="field">
26
+ <%%= label_tag :<%= atributo.name %>, t('<%= @model.plural_name %>.filtros.<%= atributo.name %>') %>
27
+ <%- atributo.to_model_attribute.filter_input.each do |input| -%>
28
+ <%%= <%= input %> %>
29
+ <%- end -%>
30
+ </div>
31
+ </div>
32
+ <%- end -%>
33
+
34
+ <%- associacoes_com_filtro.each do |associacao| -%>
35
+ <div class="yui3-u-1-5">
36
+ <div class="field">
37
+ <%%= label_tag :<%= associacao.name %>, t('<%= @model.plural_name %>.filtros.<%= associacao.name %>') %>
38
+ <%- associacao.to_model_association.filter_input(associacao.options[:filter_field]).each do |input| -%>
39
+ <%%= <%= input %> %>
40
+ <%- end -%>
41
+ </div>
42
+ </div>
43
+ <%- end -%>
44
+
45
+ <!-- Botão buscar -->
46
+ <div class="yui3-u-1-5">
47
+ <div class="field">
48
+ <label>&nbsp;</label>
49
+ <%%= submit_tag t('system.search_button'), :class => :button %>
50
+ </div>
51
+ </div>
52
+ <%- end -%>
53
+
54
+ <%% end %>
55
+ </div>
56
+ </div>
57
+
13
58
  <div id="<%= @model.plural_name %>_list">
14
59
  <%%= render 'list' %>
15
60
  </div>
@@ -1,2 +1,2 @@
1
1
  ===entity_code===
2
- $("#<%= @model.plural_name %>_list").html("<%%= escape_javascript( render 'list' )%>");
2
+ $("#<%= @model.plural_name %>_list").html("<%%= j( render 'list' )%>");
@@ -4,7 +4,7 @@
4
4
  <%% else %>
5
5
  if( $('#<%= @model.plural_name %>_list').length > 0 ) {
6
6
  $.fancybox.close(true);
7
- $("#<%= @model.plural_name %>_list").html("<%%= j( render 'list' )%>");
7
+ $('#<%= @model.plural_name %>_filter_form').submit();
8
8
  }
9
9
  else if( $("#edit_<%= @model.plural_name %>").length > 0 ) {
10
10
  $("#edit_<%= @model.plural_name %> .inside").html("<%%= j( render 'form' )%>");
@@ -149,4 +149,4 @@ module Mdwa
149
149
 
150
150
  end
151
151
  end
152
- end
152
+ end
@@ -1,3 +1,5 @@
1
+ # -*- encoding : utf-8 -*-
2
+
1
3
  require 'erb'
2
4
  require 'mdwa/dsl'
3
5
 
@@ -15,6 +17,7 @@ module Mdwa
15
17
  attr_accessor :pending_migrations
16
18
 
17
19
  argument :entities, :type => :array, :banner => 'Entities to transform', :default => []
20
+ class_option :skip_locales, :type => :boolean, :default => false, :desc => "Skip I18n generation?"
18
21
 
19
22
  source_root File.expand_path("../templates", __FILE__)
20
23
 
@@ -45,30 +48,34 @@ module Mdwa
45
48
  def generate_model_controller_helper_views
46
49
  @entities.each do |entity|
47
50
  generator_model = entity.generator_model
48
-
49
- namespaces = Dir.glob("#{Rails.root}/#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/*").select{|d| File.directory?(d) and File.basename(d) != 'views'}
51
+
52
+ #
53
+ # Para cada namespace, gera seu código
54
+ #
55
+ # Pasta onde o código gerado vai ser colocado
56
+ # Namespace 'frontend' é o público e gera código nas raízes do Rails
57
+ namespaces = Dir.glob("#{Rails.root}/#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/*").select{|d| File.directory?(d)}.collect {|n| File.basename(n)}
50
58
  if !namespaces.count.zero?
51
59
  namespaces.each do |namespace|
52
- mdwa_template "#{entity.file_name}/#{File.basename namespace}/model.erb", "app/models/#{File.basename namespace}/#{generator_model.singular_name}.rb"
53
- mdwa_template "#{entity.file_name}/#{File.basename namespace}/helper.erb", "app/helpers/#{File.basename namespace}/#{generator_model.plural_name}_helper.rb"
54
- mdwa_template "#{entity.file_name}/#{File.basename namespace}/controller.erb", "app/controllers/#{File.basename namespace}/#{generator_model.plural_name}_controller.rb"
55
- Dir.glob("#{namespace}/views/*").each do |file|
60
+
61
+ namespace_destino = (namespace != 'frontend') ? namespace : ''
62
+ templates_deste_namespace = MDWA::DSL::TEMPLATES_PATH + entity.file_name + '/' + namespace + '/'
63
+
64
+ # Gera model, controllers e helper
65
+ mdwa_template "#{entity.file_name}/#{namespace}/model.erb", "app/models/#{namespace_destino}/#{generator_model.singular_name}.rb" if File.exists?(templates_deste_namespace + 'model.erb')
66
+ mdwa_template "#{entity.file_name}/#{namespace}/helper.erb", "app/helpers/#{namespace_destino}/#{generator_model.plural_name}_helper.rb" if File.exists?(templates_deste_namespace + 'helper.erb')
67
+ mdwa_template "#{entity.file_name}/#{namespace}/controller.erb", "app/controllers/#{namespace_destino}/#{generator_model.plural_name}_controller.rb" if File.exists?(templates_deste_namespace + 'controller.erb')
68
+
69
+ # Gera as views
70
+ Dir.glob("#{templates_deste_namespace}/views/*").each do |file|
56
71
  file_name = File.basename(file)
57
- mdwa_template "#{entity.file_name}/#{File.basename namespace}/views/#{file_name}", "app/views/#{File.basename namespace}/#{generator_model.plural_name}/#{file_name}"
72
+ mdwa_template "#{entity.file_name}/#{namespace}/views/#{file_name}", "app/views/#{namespace_destino}/#{generator_model.plural_name}/#{file_name}"
58
73
  end
59
- end
60
- else
61
- entity_name = "#{Rails.root}/#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}"
62
- mdwa_template "#{entity_name}/model.rb", "app/models/#{generator_model.space}/#{generator_model.singular_name}.rb"
63
- mdwa_template "#{entity_name}/helper.rb", "app/helpers/#{generator_model.space}/#{generator_model.plural_name}_helper.rb"
64
- mdwa_template "#{entity_name}/controller.rb", "app/controllers/#{generator_model.space}/#{generator_model.plural_name}_controller.rb"
65
- Dir.glob("#{entity_name}/views/*").each do |file|
66
- file_name = File.basename(file)
67
- mdwa_template "#{entity.file_name}/views/#{file_name}", "app/views/#{generator_model.space}/#{generator_model.plural_name}/#{file_name}"
68
- end
69
- end
70
- end
71
- end
74
+
75
+ end # nm.each
76
+ end # if nm == 0
77
+ end # each
78
+ end # def
72
79
 
73
80
  def generate_routes
74
81
 
@@ -120,6 +127,8 @@ module Mdwa
120
127
 
121
128
  def generate_locales
122
129
 
130
+ return nil if options.skip_locales
131
+
123
132
  locales_file = 'config/locales/mdwa.specific.en.yml'
124
133
  locales_content = File.read(locales_file)
125
134
  # make sure the file exist
@@ -128,46 +137,52 @@ module Mdwa
128
137
  @entities.each do |entity|
129
138
  model = entity.generator_model
130
139
  if !locales_content.include?( " #{model.plural_name}:" )
131
- append_file locales_file, :after => "en:\n" do
132
- lines = []
133
- lines << " #{model.plural_name}:"
134
- lines << " notice:"
135
- lines << " create: \"#{model.singular_name.humanize} created.\""
136
- lines << " update: \"#{model.singular_name.humanize} updated.\""
137
- lines << " destroy: \"#{model.singular_name.humanize} destroyed.\""
138
- lines << " title:"
139
- lines << " index: \"#{model.plural_name.humanize}\""
140
- lines << " show: \"#{model.singular_name.humanize}\""
141
- lines << " new: \"New #{model.singular_name.humanize}\""
142
- lines << " edit: \"Edit #{model.singular_name.humanize}\""
143
- # INDEX
144
- lines << " index:"
145
- model.attributes.each do |attr|
146
- lines << " #{attr.name}: \"#{attr.name.humanize}\""
147
- end
148
- model.associations.each do |assoc|
149
- lines << ((assoc.belongs_to? or assoc.nested_one? or assoc.has_one?) ? " #{assoc.model2.singular_name}: \"#{assoc.model2.singular_name.humanize}\"" : " #{assoc.model2.singular_name}: \"#{assoc.model2.plural_name.humanize}\"")
150
- end
151
- # EDIT
152
- lines << " edit:"
153
- model.attributes.each do |attr|
154
- lines << " #{attr.name}: \"#{attr.name.humanize}\""
155
- end
156
- model.associations.each do |assoc|
157
- lines << ((assoc.belongs_to? or assoc.nested_one? or assoc.has_one?) ? " #{assoc.model2.singular_name}: \"#{assoc.model2.singular_name.humanize}\"" : " #{assoc.model2.singular_name}: \"#{assoc.model2.plural_name.humanize}\"")
158
- end
159
- # SHOW
160
- lines << " show:"
161
- model.attributes.each do |attr|
162
- lines << " #{attr.name}: \"#{attr.name.humanize}\""
163
- end
164
- model.associations.each do |assoc|
165
- lines << ((assoc.belongs_to? or assoc.nested_one? or assoc.has_one?) ? " #{assoc.model2.singular_name}: \"#{assoc.model2.singular_name.humanize}\"" : " #{assoc.model2.singular_name}: \"#{assoc.model2.plural_name.humanize}\"")
166
- end
167
-
168
- lines << "\n"
169
- lines.join("\n")
140
+ puts "Não tem"
141
+ lines = []
142
+ lines << "\n"
143
+ lines << " #{model.plural_name}:"
144
+ lines << " notice:"
145
+ lines << " create: \"#{model.singular_name.humanize} created.\""
146
+ lines << " update: \"#{model.singular_name.humanize} updated.\""
147
+ lines << " destroy: \"#{model.singular_name.humanize} destroyed.\""
148
+ lines << " title:"
149
+ lines << " index: \"#{model.plural_name.humanize}\""
150
+ lines << " show: \"#{model.singular_name.humanize}\""
151
+ lines << " new: \"New #{model.singular_name.humanize}\""
152
+ lines << " edit: \"Edit #{model.singular_name.humanize}\""
153
+ # INDEX
154
+ lines << " index:"
155
+ lines << " add: 'Adicionar'"
156
+ lines << " edit: 'Edit'"
157
+ lines << " edit_label: 'Edit'"
158
+ lines << " remove: 'Remove'"
159
+ lines << " remove_label: 'Remove'"
160
+ lines << " confirm_deletion: 'Are you sure?'"
161
+ model.attributes.each do |attr|
162
+ lines << " #{attr.name}: \"#{attr.name.humanize}\""
163
+ end
164
+ model.associations.each do |assoc|
165
+ lines << ((assoc.belongs_to? or assoc.nested_one? or assoc.has_one?) ? " #{assoc.model2.singular_name}: \"#{assoc.model2.singular_name.humanize}\"" : " #{assoc.model2.singular_name}: \"#{assoc.model2.plural_name.humanize}\"")
170
166
  end
167
+ # EDIT
168
+ lines << " edit:"
169
+ model.attributes.each do |attr|
170
+ lines << " #{attr.name}: \"#{attr.name.humanize}\""
171
+ end
172
+ model.associations.each do |assoc|
173
+ lines << ((assoc.belongs_to? or assoc.nested_one? or assoc.has_one?) ? " #{assoc.model2.singular_name}: \"#{assoc.model2.singular_name.humanize}\"" : " #{assoc.model2.singular_name}: \"#{assoc.model2.plural_name.humanize}\"")
174
+ end
175
+ # SHOW
176
+ lines << " show:"
177
+ model.attributes.each do |attr|
178
+ lines << " #{attr.name}: \"#{attr.name.humanize}\""
179
+ end
180
+ model.associations.each do |assoc|
181
+ lines << ((assoc.belongs_to? or assoc.nested_one? or assoc.has_one?) ? " #{assoc.model2.singular_name}: \"#{assoc.model2.singular_name.humanize}\"" : " #{assoc.model2.singular_name}: \"#{assoc.model2.plural_name.humanize}\"")
182
+ end
183
+ lines << "\n"
184
+
185
+ append_file locales_file, lines.join("\n"), :after => "en:"
171
186
  end
172
187
 
173
188
  end # @entities loop
@@ -235,10 +250,10 @@ module Mdwa
235
250
  @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type}
236
251
  else
237
252
  # se o atributo é derivado de file e não existe o file na entidade, apaga
238
- @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_file_name") and entity.attributes[column.name.delete("_file_name")].nil?
239
- @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_content_type") and entity.attributes[column.name.delete("_content_type")].nil?
240
- @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_file_size") and entity.attributes[column.name.delete("_file_size")].nil?
241
- @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_updated_at") and entity.attributes[column.name.delete("_updated_at")].nil?
253
+ @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_file_name") and entity.attributes[column.name.gsub("_file_name", '')].nil?
254
+ @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_content_type") and entity.attributes[column.name.gsub("_content_type", '')].nil?
255
+ @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_file_size") and entity.attributes[column.name.gsub("_file_size", '')].nil?
256
+ @changes << {:entity => entity, :type => 'remove_column', :column => column.name, :attr_type => column.type} if column.name.ends_with?("_updated_at") and entity.attributes[column.name.gsub("_updated_at", '')].nil?
242
257
  end
243
258
  # attribute exists in model and entity, but changed type
244
259
  elsif entity_attribute.type.to_sym != column.type.to_sym
@@ -251,7 +266,7 @@ module Mdwa
251
266
  # new attributes
252
267
  # no column with that name -> column must be added
253
268
  entity.attributes.each do |key, attr|
254
- # se a entidade for file e não existir seus atributos no banco de dados, corrige
269
+ # se o atributo for file e não existir seus atributos no banco de dados, corrige
255
270
  if attr.type.to_sym == :file
256
271
  @changes << {:entity => entity, :type => 'add_column', :column => "#{attr.name}_file_name", :attr_type => 'string'} if model_class.columns.select{|c| c.name == "#{attr.name}_file_name"}.count.zero?
257
272
  @changes << {:entity => entity, :type => 'add_column', :column => "#{attr.name}_content_type", :attr_type => 'string'} if model_class.columns.select{|c| c.name == "#{attr.name}_content_type"}.count.zero?
@@ -321,14 +336,7 @@ module Mdwa
321
336
  migration_string << "\n\tdef self.up"
322
337
  migration_string << "\t\tcreate_table :#{generator_model.plural_name} do |t|"
323
338
  generator_model.attributes.select{|a| !['id', 'created_at', 'updated_at'].include?(a.name)}.each do |attr|
324
- if attr.type.to_sym != :file
325
- migration_string << "\t\t\tt.#{attr.migration_field} :#{attr.name}"
326
- else
327
- migration_string << "\t\t\tt.string :#{attr.name}_file_name"
328
- migration_string << "\t\t\tt.string :#{attr.name}_content_type"
329
- migration_string << "\t\t\tt.integer :#{attr.name}_file_size"
330
- migration_string << "\t\t\tt.datetime :#{attr.name}_updated_at"
331
- end
339
+ migration_string << "\t\t\tt.#{attr.migration_field} :#{attr.name}"
332
340
  end
333
341
  generator_model.associations.each do |assoc|
334
342
  if assoc.belongs_to? or assoc.nested_one?
@@ -392,4 +400,4 @@ module Mdwa
392
400
  end
393
401
 
394
402
  end
395
- end
403
+ end