mdd 3.1.1 → 3.1.2

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/mdwa_helper.rb +13 -4
  3. data/app/views/template/mdwa/_autocomplete_multiple_tag.html.erb +3 -3
  4. data/app/views/template/mdwa/_autocomplete_remote_multiple_tag.html.erb +5 -2
  5. data/app/views/template/mdwa/_autocomplete_remote_tag.html.erb +21 -1
  6. data/lib/generators/mdwa/sandbox/sandbox_generator.rb +30 -7
  7. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/login_manifest.js +1 -1
  8. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/system_manifest.js +1 -1
  9. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/template/ajaxloader.js +16 -16
  10. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/template/all_pages.js +34 -30
  11. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/template/batch_update.js +35 -0
  12. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/mdwa/template/xls_export.js +14 -0
  13. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/jquery/{jquery-ui-1.10.0.custom.css → jquery-ui.css} +60 -57
  14. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/login/login.css +26 -2
  15. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/system_manifest.css +1 -0
  16. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/backend.css.erb +11 -91
  17. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/menu.css +86 -0
  18. data/lib/generators/mdwa/sandbox/templates/app/assets/stylesheets/mdwa/template/template.css.erb +71 -18
  19. data/lib/generators/mdwa/sandbox/templates/app/controllers/a/backend_controller.rb +14 -0
  20. data/lib/generators/mdwa/sandbox/templates/app/models/permission.rb +2 -2
  21. data/lib/generators/mdwa/sandbox/templates/app/views/layouts/login.html.erb +4 -1
  22. data/lib/generators/mdwa/sandbox/templates/app/views/layouts/public.html.erb +3 -3
  23. data/lib/generators/mdwa/sandbox/templates/app/views/layouts/system.html.erb +6 -4
  24. data/lib/generators/mdwa/sandbox/templates/app/views/template/mdwa/_login_text.html.erb +4 -0
  25. data/lib/generators/mdwa/sandbox/templates/app/views/template/mdwa/_menubar.html.erb +3 -0
  26. data/lib/generators/mdwa/sandbox/templates/app/views/template/mdwa/menubar/_administrators.html.erb +10 -0
  27. data/lib/generators/mdwa/sandbox/templates/config/initializers/mime_types.rb +2 -0
  28. data/lib/generators/mdwa/sandbox/templates/config/locales/mdwa.en.yml +8 -0
  29. data/lib/generators/mdwa/sandbox/templates/deploy.sh +17 -0
  30. data/lib/generators/mdwa/templates/templates/scaffold/controller.erb +23 -5
  31. data/lib/generators/mdwa/templates/templates/scaffold/model.erb +61 -19
  32. data/lib/generators/mdwa/templates/templates/scaffold/views/_form.html.erb +3 -5
  33. data/lib/generators/mdwa/templates/templates/scaffold/views/_form_fields.html.erb +23 -15
  34. data/lib/generators/mdwa/templates/templates/scaffold/views/_list.html.erb +38 -26
  35. data/lib/generators/mdwa/templates/templates/scaffold/views/batch_update.js.erb +3 -0
  36. data/lib/generators/mdwa/templates/templates/scaffold/views/index.html.erb +19 -4
  37. data/lib/generators/mdwa/templates/templates/scaffold/views/index.xls.erb +23 -0
  38. data/lib/generators/mdwa/templates/templates/scaffold/views/menu/menu.html.erb +13 -0
  39. data/lib/generators/mdwa/templates/templates_generator.rb +5 -0
  40. data/lib/generators/mdwa/transform/transform_generator.rb +91 -49
  41. data/lib/generators/mdwa/translate/templates/br/config/initializers/inflections.rb +58 -0
  42. data/lib/generators/mdwa/translate/templates/br/config/locales/devise.pt-BR.yml +59 -0
  43. data/lib/generators/mdwa/translate/templates/br/config/locales/mdwa.pt-BR.yml +294 -0
  44. data/lib/generators/mdwa/translate/templates/br/config/locales/mdwa.specific.pt-BR.yml +2 -0
  45. data/lib/generators/mdwa/translate/translate_generator.rb +38 -0
  46. data/lib/mdwa/dsl/entity.rb +1 -0
  47. data/lib/mdwa/generators/model_attribute.rb +5 -3
  48. data/lib/mdwa/version.rb +1 -1
  49. data/mdd.gemspec +4 -1
  50. data/test/entity_actions_test.rb +0 -1
  51. data/test/entity_attributes_options_test.rb +1 -2
  52. data/test/entity_specifications_test.rb +0 -1
  53. data/test/entity_status_test.rb +40 -0
  54. data/test/entity_test.rb +6 -7
  55. data/test/layout_test.rb +0 -1
  56. data/test/process_test.rb +0 -1
  57. data/test/requirements_test.rb +0 -1
  58. data/test/users_test.rb +0 -1
  59. metadata +52 -8
  60. data/lib/generators/mdwa/sandbox/templates/app/assets/javascripts/jquery/jquery.popup_window.js +0 -62
  61. data/lib/generators/mdwa/sandbox/templates/app/views/template/_leftbar.html.erb +0 -11
@@ -0,0 +1,3 @@
1
+ ===entity_code===
2
+ $('#<%= @model.plural_name %>_filter_form').submit();
3
+ $('body').append("<%%= j( render '/template/mdwa/notice', :notice => @system_notice )%>");
@@ -2,11 +2,25 @@
2
2
  <div id="<%= @model.plural_name %>_index" class="mdwa_index">
3
3
  <div class="page_header">
4
4
  <h1><%%= t '<%= @model.plural_name %>.title.index' %></h1>
5
- <%- if @entity.ajax -%>
6
5
  <div class="page_header_right_tab">
6
+ <%% if can? :destroy, <%= @model.klass %> %>
7
+ <%%= link_to t('<%= @model.plural_name %>.index.remove'), <%= @model.object_name.pluralize %>_batch_update_path, attribute: :removed, value: 1, class: :batch_update %>
8
+ <%% end %>
9
+
10
+ <%% if can? :update, <%= @model.klass %> %>
11
+ <%- @entity.attributes.select{|name, attr| attr.type.to_sym == :status}.each do |name, attr| -%>
12
+ <%- attr.options[:possible_values].each do |value| -%>
13
+ <%%= link_to t('<%= @model.plural_name %>.<%= name %>.<%= value.to_s.underscore %>_alter'), <%= @model.object_name.pluralize %>_batch_update_path, attribute: :<%= name %>, value: <%= @model.klass %>::<%= value.to_s.underscore.upcase %>, class: :batch_update %>
14
+ <%- end -%>
15
+ <%- end -%>
16
+ <%% end %>
17
+
18
+ <%- if @entity.ajax -%>
19
+ <%% if can? :create, <%= @model.klass %> %>
7
20
  <%%= link_to t('<%= @model.plural_name %>.index.add'), new_<%= @model.object_name %>_path, :class => 'lightbox various fancybox.ajax' %>
8
- </div>
21
+ <%% end %>
9
22
  <%- end -%>
23
+ </div>
10
24
  </div>
11
25
 
12
26
  <div class="inside">
@@ -22,7 +36,7 @@
22
36
  <%- if !atributos_com_filtro.count.zero? or !associacoes_com_filtro.count.zero? -%>
23
37
  <%- atributos_com_filtro.each do |atributo| -%>
24
38
  <div class="yui3-u-1-5">
25
- <div class="field">
39
+ <div class="field <%= 'datas' if atributo.type.to_sym == :date %>">
26
40
  <%%= label_tag :<%= atributo.name %>, t('<%= @model.plural_name %>.filtros.<%= atributo.name %>') %>
27
41
  <%- atributo.to_model_attribute.filter_input.each do |input| -%>
28
42
  <%%= <%= input %> %>
@@ -45,8 +59,9 @@
45
59
  <!-- Botão buscar -->
46
60
  <div class="yui3-u-1-5">
47
61
  <div class="field">
48
- <label>&nbsp;</label>
62
+ <div class="label_height"></div>
49
63
  <%%= submit_tag t('system.search_button'), :class => :button %>
64
+ <%%= link_to t('system.export_xls'), 'javascript:void(0)', :class => [:export, :xls], :form => :<%= @model.plural_name %>_filter_form %>
50
65
  </div>
51
66
  </div>
52
67
  <%- end -%>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0"?>
2
+ <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
3
+ xmlns:o="urn:schemas-microsoft-com:office:office"
4
+ xmlns:x="urn:schemas-microsoft-com:office:excel"
5
+ xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
6
+ xmlns:html="http://www.w3.org/TR/REC-html40">
7
+ <Worksheet ss:Name="Sheet1">
8
+ <Table>
9
+ <Row>
10
+ <%- @model.attributes.select{|a| a.type.to_sym != :file}.each do |attr| -%>
11
+ <Cell><Data ss:Type="String"><%%= t '<%= @model.plural_name %>.index.<%= attr.name %>' %></Data></Cell>
12
+ <%- end -%>
13
+ </Row>
14
+ <%% @<%= @model.plural_name %>.each do |<%= @model.singular_name %>| %>
15
+ <Row>
16
+ <%- @model.attributes.select{|a| a.type.to_sym != :file}.each do |attr| -%>
17
+ <Cell><Data ss:Type="String"><%%= <%= @model.singular_name %>.<%= attr.name %><%= '_to_s' if attr.type.to_sym == :status %> %></Data></Cell>
18
+ <%- end -%>
19
+ </Row>
20
+ <%% end %>
21
+ </Table>
22
+ </Worksheet>
23
+ </Workbook>
@@ -0,0 +1,13 @@
1
+ ===entity_code===
2
+ <%% if can? :index, <%= @model.klass %> %>
3
+ <li>
4
+ <%%= link_to <%= @model.object_name.pluralize %>_path do %><span><%%= t '<%= @model.plural_name %>.menu.index' %></span><%% end %>
5
+ <%- unless @entity.ajax? -%>
6
+ <%% if can? :create, <%= @model.klass %> %>
7
+ <ul class="submenu">
8
+ <li><%%= link_to new_<%= @model.object_name %>_path do %><span><%%= t( '<%= @model.plural_name %>.menu.new' ) %></span><%% end %></li>
9
+ </ul>
10
+ <%% end %>
11
+ <%- end -%>
12
+ </li>
13
+ <%% end %>
@@ -61,13 +61,18 @@ module Mdwa
61
61
  copy_with_header 'scaffold/views/_form.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/_form.html.erb", entity.name
62
62
  copy_with_header 'scaffold/views/_list.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/_list.html.erb", entity.name
63
63
  copy_with_header 'scaffold/views/create.js.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/create.js.erb", entity.name
64
+ copy_with_header 'scaffold/views/batch_update.js.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/batch_update.js.erb", entity.name
64
65
  copy_with_header 'scaffold/views/destroy.js.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/destroy.js.erb", entity.name
65
66
  copy_with_header 'scaffold/views/edit.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/edit.html.erb", entity.name
66
67
  copy_with_header 'scaffold/views/index.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/index.html.erb", entity.name
68
+ copy_with_header 'scaffold/views/index.xls.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/index.xls.erb", entity.name
67
69
  copy_with_header 'scaffold/views/index.js.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/index.js.erb", entity.name
68
70
  copy_with_header 'scaffold/views/new.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/new.html.erb", entity.name
69
71
  copy_with_header 'scaffold/views/show.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/show.html.erb", entity.name
70
72
  copy_with_header 'scaffold/views/update.js.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/update.js.erb", entity.name
73
+
74
+ # menu
75
+ copy_with_header 'scaffold/views/menu/menu.html.erb', "#{MDWA::DSL::TEMPLATES_PATH}#{entity.file_name}/#{model.space + '/'}views/menu/menu.html.erb", entity.name
71
76
  end
72
77
  end
73
78
 
@@ -67,15 +67,26 @@ module Mdwa
67
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
68
 
69
69
  # Gera as views
70
- Dir.glob("#{templates_deste_namespace}/views/*").each do |file|
70
+ Dir.glob("#{templates_deste_namespace}/views/*").select{|d| !File.directory?(d)}.each do |file|
71
71
  file_name = File.basename(file)
72
72
  mdwa_template "#{entity.file_name}/#{namespace}/views/#{file_name}", "app/views/#{namespace_destino}/#{generator_model.plural_name}/#{file_name}"
73
73
  end
74
+ # Item de menu
75
+ mdwa_template "#{entity.file_name}/#{namespace}/views/menu/menu.html.erb", "app/views/template/mdwa/menubar/_#{generator_model.plural_name}.html.erb"
74
76
 
75
77
  end # nm.each
76
78
  end # if nm == 0
77
79
  end # each
78
80
  end # def
81
+
82
+ def create_menu_item
83
+ @entities.each do |entity|
84
+ generator_model = entity.generator_model
85
+ insert_into_file 'app/views/template/mdwa/_menubar.html.erb', before: '</ul>' do
86
+ " <%= render '/template/mdwa/menubar/#{generator_model.plural_name}' %>\n"
87
+ end
88
+ end
89
+ end
79
90
 
80
91
  def generate_routes
81
92
 
@@ -107,6 +118,7 @@ module Mdwa
107
118
  route_str = []
108
119
  route_str << "\n namespace :#{generator_model.space} do" if generator_model.namespace?
109
120
  route_str << " controller :#{generator_model.plural_name} do"
121
+ route_str << " post '#{generator_model.plural_name}/batch_update' => :batch_update, as: :#{generator_model.plural_name}_batch_update"
110
122
  route_str << " end"
111
123
  route_str << " resources :#{generator_model.plural_name}"
112
124
  route_str << " end\n" if generator_model.namespace?
@@ -130,60 +142,86 @@ module Mdwa
130
142
  return nil if options.skip_locales
131
143
 
132
144
  locales_file = 'config/locales/mdwa.specific.en.yml'
133
- locales_content = File.read(locales_file)
134
145
  # make sure the file exist
135
146
  create_file locales_file unless File.exist?(Rails.root + locales_file)
147
+ locales_content = File.read(locales_file)
148
+
149
+ # translated
150
+ if I18n.locale.to_sym != :en
151
+ locales_translated_file = "config/locales/mdwa.specific.#{I18n.locale}.yml"
152
+ create_file locales_translated_file unless File.exist?(Rails.root + locales_translated_file)
153
+ locales_translated_content = File.read(locales_translated_file)
154
+ end
136
155
 
137
156
  @entities.each do |entity|
138
157
  model = entity.generator_model
139
- if !locales_content.include?( " #{model.plural_name}:" )
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}\"")
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}\"")
158
+
159
+ lines = []
160
+ lines << "\n"
161
+ lines << " #{model.plural_name}:"
162
+ lines << " notice:"
163
+ lines << " create: \"#{model.singular_name.humanize} created.\""
164
+ lines << " update: \"#{model.singular_name.humanize} updated.\""
165
+ lines << " destroy: \"#{model.singular_name.humanize} destroyed.\""
166
+ lines << " batch_update: \"#{model.singular_name.humanize} updated.\""
167
+ lines << " title:"
168
+ lines << " index: \"#{model.plural_name.humanize}\""
169
+ lines << " show: \"#{model.singular_name.humanize}\""
170
+ lines << " new: \"New #{model.singular_name.humanize}\""
171
+ lines << " edit: \"Edit #{model.singular_name.humanize}\""
172
+ lines << " menu:"
173
+ lines << " index: \"#{model.plural_name.humanize}\""
174
+ lines << " new: \"New #{model.singular_name.humanize}\""
175
+ # Status
176
+ if entity.attributes.select{|name, attr| attr.type.to_sym == :status}.count > 0
177
+ entity.attributes.select{|name, attr| attr.type.to_sym == :status}.each do |name, attr|
178
+ lines << " #{name}:"
179
+ lines << " prompt_select: '- Status -'"
180
+ attr.options[:possible_values].each_with_index do |value, index|
181
+ lines << " #{value.to_s.underscore}: '#{value.to_s.humanize}'"
182
+ lines << " #{value.to_s.underscore}_alter: 'Change #{name} to #{value.to_s.humanize}'"
183
+ end
182
184
  end
183
- lines << "\n"
185
+ end
186
+ # INDEX
187
+ lines << " index:"
188
+ lines << " add: 'Add'"
189
+ lines << " edit: 'Edit'"
190
+ lines << " edit_label: 'Edit'"
191
+ lines << " remove: 'Remove'"
192
+ lines << " remove_label: 'Remove'"
193
+ lines << " confirm_deletion: 'Are you sure?'"
194
+ model.attributes.each do |attr|
195
+ lines << " #{attr.name}: \"#{attr.name.humanize}\""
196
+ end
197
+ model.associations.each do |assoc|
198
+ 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}\"")
199
+ end
200
+ # EDIT
201
+ lines << " edit:"
202
+ model.attributes.each do |attr|
203
+ lines << " #{attr.name}: \"#{attr.name.humanize}\""
204
+ end
205
+ model.associations.each do |assoc|
206
+ 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}\"")
207
+ end
208
+ # SHOW
209
+ lines << " show:"
210
+ model.attributes.each do |attr|
211
+ lines << " #{attr.name}: \"#{attr.name.humanize}\""
212
+ end
213
+ model.associations.each do |assoc|
214
+ 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}\"")
215
+ end
216
+ lines << "\n"
184
217
 
218
+ if !locales_content.include?( " #{model.plural_name}:" )
185
219
  append_file locales_file, lines.join("\n"), :after => "en:"
186
220
  end
221
+
222
+ if I18n.locale.to_sym != :en and !locales_translated_content.include?( " #{model.plural_name}:" )
223
+ append_file locales_translated_file, lines.join("\n"), :after => "#{I18n.locale}:"
224
+ end
187
225
 
188
226
  end # @entities loop
189
227
 
@@ -258,7 +296,7 @@ module Mdwa
258
296
  # attribute exists in model and entity, but changed type
259
297
  elsif entity_attribute.type.to_sym != column.type.to_sym
260
298
  # ignores files, passwords and float, decimal, integer variations
261
- next if entity_attribute.type.to_sym == :password or ((column.type.to_sym == :integer or column.type.to_sym == :decimal) and entity_attribute.type.to_sym == :float)
299
+ next if entity_attribute.type.to_sym == :password or (entity_attribute.type.to_sym == :status and column.type.to_sym == :integer) or ((column.type.to_sym == :integer or column.type.to_sym == :decimal) and entity_attribute.type.to_sym == :float)
262
300
  @changes << {:entity => entity, :type => 'change_column', :column => column.name, :attr_type => entity_attribute.type, :from => column.type}
263
301
  end
264
302
  end
@@ -336,14 +374,18 @@ module Mdwa
336
374
  migration_string << "\n\tdef self.up"
337
375
  migration_string << "\t\tcreate_table :#{generator_model.plural_name} do |t|"
338
376
  generator_model.attributes.select{|a| !['id', 'created_at', 'updated_at'].include?(a.name)}.each do |attr|
339
- migration_string << "\t\t\tt.#{attr.migration_field} :#{attr.name}"
377
+ if attr.name.to_sym == :removed
378
+ migration_string << "\t\t\tt.#{attr.migration_field} :#{attr.name}, default: false"
379
+ else
380
+ migration_string << "\t\t\tt.#{attr.migration_field} :#{attr.name}"
381
+ end
340
382
  end
341
383
  generator_model.associations.each do |assoc|
342
384
  if assoc.belongs_to? or assoc.nested_one?
343
385
  migration_string << "\t\t\tt.integer :#{assoc.model2.singular_name.foreign_key}"
344
386
  end
345
387
  end
346
- migration_string << "\n\t\tt.timestamps"
388
+ migration_string << "\n\t\t\tt.timestamps"
347
389
  migration_string << "\t\tend" # fim do create_table
348
390
  generator_model.associations.each do |assoc|
349
391
  if assoc.belongs_to? or assoc.nested_one?
@@ -0,0 +1,58 @@
1
+ # -*- encoding : utf-8 -*-
2
+ ActiveSupport::Inflector.inflections do |inflect|
3
+
4
+ inflect.clear
5
+
6
+ inflect.plural(/$/, 's')
7
+ inflect.plural(/(s)$/i, '\1')
8
+ inflect.plural(/^(paí)s$/i, '\1ses')
9
+ inflect.plural(/(z|r)$/i, '\1es')
10
+ inflect.plural(/al$/i, 'ais')
11
+ inflect.plural(/el$/i, 'eis')
12
+ inflect.plural(/ol$/i, 'ois')
13
+ inflect.plural(/ul$/i, 'uis')
14
+ inflect.plural(/([^aeou])il$/i, '\1is')
15
+ inflect.plural(/m$/i, 'ns')
16
+ inflect.plural(/^(japon|escoc|ingl|dinamarqu|fregu|portugu)ês$/i, '\1eses')
17
+ inflect.plural(/^(|g)ás$/i, '\1ases')
18
+ inflect.plural(/ão$/i, 'ões')
19
+ inflect.plural(/^(irm|m)ão$/i, '\1ãos')
20
+ inflect.plural(/^(alem|c|p)ão$/i, '\1ães')
21
+
22
+ # Sem acentos...
23
+ inflect.plural(/ao$/i, 'oes')
24
+ inflect.plural(/^(irm|m)ao$/i, '\1aos')
25
+ inflect.plural(/^(alem|c|p)ao$/i, '\1aes')
26
+
27
+ inflect.singular(/([^ê])s$/i, '\1')
28
+ inflect.singular(/^(á|gá|paí)s$/i, '\1s')
29
+ inflect.singular(/(r|z)es$/i, '\1')
30
+ inflect.singular(/([^p])ais$/i, '\1al')
31
+ inflect.singular(/eis$/i, 'el')
32
+ inflect.singular(/ois$/i, 'ol')
33
+ inflect.singular(/uis$/i, 'ul')
34
+ inflect.singular(/(r|t|f|v)is$/i, '\1il')
35
+ inflect.singular(/ns$/i, 'm')
36
+ inflect.singular(/sses$/i, 'sse')
37
+ inflect.singular(/^(.*[^s]s)es$/i, '\1')
38
+ inflect.singular(/ães$/i, 'ão')
39
+ inflect.singular(/aes$/i, 'ao')
40
+ inflect.singular(/ãos$/i, 'ão')
41
+ inflect.singular(/aos$/i, 'ao')
42
+ inflect.singular(/ões$/i, 'ão')
43
+ inflect.singular(/oes$/i, 'ao')
44
+ inflect.singular(/(japon|escoc|ingl|dinamarqu|fregu|portugu)eses$/i, '\1ês')
45
+ inflect.singular(/^(g|)ases$/i, '\1ás')
46
+
47
+ # Incontáveis
48
+ inflect.uncountable %w( tórax tênis ônibus lápis fênix )
49
+
50
+ # Irregulares
51
+ inflect.irregular "país", "países"
52
+ ####
53
+
54
+ # MDWA - Sandbox
55
+ inflect.irregular "user", "users"
56
+ inflect.irregular "administrator", "administrators"
57
+
58
+ end
@@ -0,0 +1,59 @@
1
+ # Additional translations at http://github.com/plataformatec/devise/wiki/I18n
2
+
3
+ pt-BR:
4
+ errors:
5
+ messages:
6
+ expired: "expirou, por favor requisite outro"
7
+ not_found: "não encontrado"
8
+ already_confirmed: "já foi confirmado, tente acessar novamente"
9
+ not_locked: "não foi bloqueada"
10
+ not_saved:
11
+ one: "1 erro:"
12
+ other: "%{count} erros:"
13
+
14
+ devise:
15
+ failure:
16
+ already_authenticated: 'Você já está logado.'
17
+ unauthenticated: 'Você precisa estar registrado antes de continuar.'
18
+ unconfirmed: 'Você precisa confirmar sua conta antes de continuar.'
19
+ locked: 'Sua conta está bloqueada.'
20
+ invalid: 'Email ou senha incorretos.'
21
+ invalid_token: 'Autenticação inválida.'
22
+ timeout: 'Sua sessão expirou. Faça o login antes de continuar.'
23
+ inactive: 'Sua conta está bloqueada.'
24
+ usuario_cliente:
25
+ not_found_in_database: 'O email ou senha estão incorretos.'
26
+ sessions:
27
+ signed_in: 'Login bem sucedido.'
28
+ signed_out: 'Você saiu do sistema.'
29
+ passwords:
30
+ send_instructions: 'Você receberá um email com instruções de como recuperar sua senha em poucos minutos.'
31
+ updated: 'Sua senha foi alterada com sucesso. Você já está logado.'
32
+ updated_not_active: 'Senha alterada com sucesso.'
33
+ send_paranoid_instructions: "Se seu email já existir, você receberá um email com a recuperação da senha."
34
+ confirmations:
35
+ send_instructions: 'Você receberá um email com instruções de como confirmar a criação da sua conta em alguns minutos.'
36
+ send_paranoid_instructions: 'Se seu email já existir, você receberá um email com instruções de como confirmar a criação da sua conta em alguns minutos.'
37
+ confirmed: 'Sua conta foi confirmada. Você foi logado no sistema.'
38
+ registrations:
39
+ signed_up: 'Bem vindo. Seu cadastro foi efetuado com sucesso.'
40
+ signed_up_but_unconfirmed: 'Uma mensagem com o link de confirmação foi enviada para seu e-mail. Por favor, acesse o link para ativar sua conta.'
41
+ signed_up_but_inactive: 'Cadastro realizado com sucesso. Porém, você não pode acessar o sistema pois sua conta ainda não foi ativada.'
42
+ signed_up_but_locked: 'Cadastro realizado com sucesso. Porém você não pode acessar o sistema pois sua conta está travada.'
43
+ updated: 'Você alterou sua conta com sucesso.'
44
+ update_needs_confirmation: "A atualização foi realizada com sucesso, porém precisamos verificar seu novo endereço de e-mail. Por favor verifique seu e-mail e acesse o link de confirmação para validar seu novo endereço de e-mail."
45
+ destroyed: 'Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve.'
46
+ unlocks:
47
+ send_instructions: 'Você receberá um email com instruções de como desbloquear sua conta em poucos minutos.'
48
+ unlocked: 'Sua conta foi desbloqueada com sucesso. Você está logado.'
49
+ send_paranoid_instructions: 'Se sua conta existir, Você receberá um email com instruções de como desbloquear sua conta em poucos minutos.'
50
+ omniauth_callbacks:
51
+ success: 'Autorização com sucesso em sua %{kind} conta.'
52
+ failure: 'Autorização falhou em sua %{kind} conta porque "%{reason}".'
53
+ mailer:
54
+ confirmation_instructions:
55
+ subject: '[Black Bull] Instruções de confirmação de conta'
56
+ reset_password_instructions:
57
+ subject: '[Black Bull] Instruções de recuperação de senha'
58
+ unlock_instructions:
59
+ subject: '[Black Bull] Instruções de desbloqueio de conta'
@@ -0,0 +1,294 @@
1
+ # encoding: UTF-8
2
+ # pt-BR translations for Ruby on Rails
3
+ pt-BR:
4
+ # formatos de data e hora
5
+ date:
6
+ formats:
7
+ default: "%d/%m/%Y"
8
+ short: "%d de %B"
9
+ long: "%d de %B de %Y"
10
+ month: "%B/%Y"
11
+
12
+ day_names:
13
+ - Domingo
14
+ - Segunda
15
+ - Terça
16
+ - Quarta
17
+ - Quinta
18
+ - Sexta
19
+ - Sábado
20
+ abbr_day_names:
21
+ - Dom
22
+ - Seg
23
+ - Ter
24
+ - Qua
25
+ - Qui
26
+ - Sex
27
+ - Sáb
28
+
29
+ month_names:
30
+ - ~
31
+ - Janeiro
32
+ - Fevereiro
33
+ - Março
34
+ - Abril
35
+ - Maio
36
+ - Junho
37
+ - Julho
38
+ - Agosto
39
+ - Setembro
40
+ - Outubro
41
+ - Novembro
42
+ - Dezembro
43
+ abbr_month_names:
44
+ - ~
45
+ - Jan
46
+ - Fev
47
+ - Mar
48
+ - Abr
49
+ - Mai
50
+ - Jun
51
+ - Jul
52
+ - Ago
53
+ - Set
54
+ - Out
55
+ - Nov
56
+ - Dez
57
+ order:
58
+ - :day
59
+ - :month
60
+ - :year
61
+
62
+ time:
63
+ formats:
64
+ default: "%A, %d de %B de %Y, %H:%M h"
65
+ short: "%d/%m/%Y às %H:%Mh"
66
+ long: "%A, %d de %B de %Y, %H:%M h"
67
+ time: "%H:%M"
68
+ am: ''
69
+ pm: ''
70
+
71
+ # Usado no Array.to_sentence
72
+ support:
73
+ array:
74
+ words_connector: ", "
75
+ two_words_connector: " e "
76
+ last_word_connector: " e "
77
+
78
+ select:
79
+ prompt: "Por favor selecione"
80
+
81
+ number:
82
+ format:
83
+ separator: ','
84
+ delimiter: '.'
85
+ precision: 3
86
+ significant: false
87
+ strip_insignificant_zeros: false
88
+
89
+ currency:
90
+ format:
91
+ format: '%u&nbsp;&nbsp;%n'
92
+ negative_format: '%u&nbsp;-%n'
93
+ unit: 'R$'
94
+ separator: ','
95
+ delimiter: '.'
96
+ precision: 2
97
+ significant: false
98
+ strip_insignificant_zeros: false
99
+
100
+ percentage:
101
+ format:
102
+ delimiter: '.'
103
+
104
+ precision:
105
+ format:
106
+ delimiter: '.'
107
+
108
+ human:
109
+ format:
110
+ delimiter: '.'
111
+ precision: 2
112
+ significant: true
113
+ strip_insignificant_zeros: true
114
+ storage_units:
115
+ format: "%n %u"
116
+ units:
117
+ byte:
118
+ one: "Byte"
119
+ other: "Bytes"
120
+ kb: "KB"
121
+ mb: "MB"
122
+ gb: "GB"
123
+ tb: "TB"
124
+ # number_to_human()
125
+ # new in rails 3: please add to other locales
126
+ decimal_units:
127
+ format: "%n %u"
128
+ units:
129
+ unit: ""
130
+ thousand: "mil"
131
+ million:
132
+ one: milhão
133
+ other: milhões
134
+ billion:
135
+ one: bilhão
136
+ other: bilhões
137
+ trillion:
138
+ one: trilhão
139
+ other: trilhões
140
+ quadrillion:
141
+ one: quatrilhão
142
+ other: quatrilhões
143
+
144
+ # distancia do tempo em palavras
145
+ datetime:
146
+ distance_in_words:
147
+ half_a_minute: 'meio minuto'
148
+ less_than_x_seconds:
149
+ one: 'menos de 1 segundo'
150
+ other: 'menos de %{count} segundos'
151
+ x_seconds:
152
+ one: '1 segundo'
153
+ other: '%{count} segundos'
154
+ less_than_x_minutes:
155
+ one: 'menos de um minuto'
156
+ other: 'menos de %{count} minutos'
157
+ x_minutes:
158
+ one: '1 minuto'
159
+ other: '%{count} minutos'
160
+ about_x_hours:
161
+ one: 'aproximadamente 1 hora'
162
+ other: 'aproximadamente %{count} horas'
163
+ x_days:
164
+ one: '1 dia'
165
+ other: '%{count} dias'
166
+ about_x_months:
167
+ one: 'aproximadamente 1 mês'
168
+ other: 'aproximadamente %{count} meses'
169
+ x_months:
170
+ one: '1 mês'
171
+ other: '%{count} meses'
172
+ about_x_years:
173
+ one: 'aproximadamente 1 ano'
174
+ other: 'aproximadamente %{count} anos'
175
+ over_x_years:
176
+ one: 'mais de 1 ano'
177
+ other: 'mais de %{count} anos'
178
+ almost_x_years:
179
+ one: 'quase 1 ano'
180
+ other: 'quase %{count} anos'
181
+ prompts:
182
+ year: "Ano"
183
+ month: "Mês"
184
+ day: "Dia"
185
+ hour: "Hora"
186
+ minute: "Minuto"
187
+ second: "Segundo"
188
+
189
+ helpers:
190
+ select:
191
+ prompt: "Por favor selecione"
192
+
193
+ submit:
194
+ create: 'Criar %{model}'
195
+ update: 'Atualizar %{model}'
196
+ submit: 'Salvar %{model}'
197
+
198
+ errors:
199
+ format: "%{attribute} %{message}"
200
+
201
+ template:
202
+ header:
203
+ one: "Não foi possível gravar %{model}: 1 erro"
204
+ other: "Não foi possível gravar %{model}: %{count} erros."
205
+ body: "Por favor, verifique o(s) seguinte(s) campo(s):"
206
+
207
+ messages: &errors_messages
208
+ inclusion: "não está incluído na lista"
209
+ exclusion: "não está disponível"
210
+ invalid: "não é válido"
211
+ confirmation: "não está de acordo com a confirmação"
212
+ accepted: "deve ser aceito"
213
+ empty: "não pode ficar vazio"
214
+ blank: "não pode ficar em branco"
215
+ too_long: "é muito longo (máximo: %{count} caracteres)"
216
+ too_short: "é muito curto (mínimo: %{count} caracteres)"
217
+ wrong_length: "não possui o tamanho esperado (%{count} caracteres)"
218
+ not_a_number: "não é um número"
219
+ not_an_integer: "não é um número inteiro"
220
+ greater_than: "deve ser maior que %{count}"
221
+ greater_than_or_equal_to: "deve ser maior ou igual a %{count}"
222
+ equal_to: "deve ser igual a %{count}"
223
+ less_than: "deve ser menor que %{count}"
224
+ less_than_or_equal_to: "deve ser menor ou igual a %{count}"
225
+ odd: "deve ser ímpar"
226
+ even: "deve ser par"
227
+
228
+ activerecord:
229
+ errors:
230
+ template:
231
+ header:
232
+ one: "Não foi possível gravar %{model}: 1 erro"
233
+ other: "Não foi possível gravar %{model}: %{count} erros."
234
+ body: "Por favor, verifique o(s) seguinte(s) campo(s):"
235
+
236
+ messages:
237
+ taken: "já está em uso"
238
+ record_invalid: "A validação falhou: %{errors}"
239
+ <<: *errors_messages
240
+
241
+ full_messages:
242
+ format: "%{attribute} %{message}"
243
+
244
+ will_paginate:
245
+ previous_label: "Anterior"
246
+ next_label: "Próxima"
247
+ page_gap: "&hellip;"
248
+ all: '- Todos -'
249
+ show_label: 'Exibir'
250
+
251
+ login:
252
+ email_label: "E-mail:"
253
+ password_label: "Senha:"
254
+ login_button_label: "Login"
255
+ login_text_pre_form: "Bem-vindo à área administrativa da aplicação MDWA. <br />Faça seu login."
256
+
257
+ system:
258
+ sim: "Sim"
259
+ nao: "Não"
260
+ ambos: "Ambos"
261
+ error: "erro"
262
+ no_file: "- Sem arquivo -"
263
+ logged_info_user: "Bem-vindo, <span>%{user}</span>."
264
+ logged_info_logout: "(Logout)"
265
+ logged_info_edit_account: "Minha conta"
266
+ cancel_button: "Cancelar"
267
+ index_id: "ID"
268
+ index_edit: "Editar"
269
+ index_edit_label: "Editar"
270
+ index_remove: "Remover"
271
+ index_remove_label: "Remover"
272
+ index_confirm_deletion: "Você tem certeza?"
273
+ index_activate: "Ativo"
274
+ add_by_ajax: "Adicionar novo %{name}"
275
+ edit_by_ajax: "Editar %{name}"
276
+ interval_separator: 'à'
277
+ interval_separator_to: 'até'
278
+ save_button: 'Salvar'
279
+ save_and_add_button: 'Salvar e adicionar novo'
280
+ search_button: 'Buscar'
281
+ reset_button: 'Buscar todos'
282
+ combo_estado: '-- Selecione um estado --'
283
+ combo_cidade_estado: '-- Selecione primeiro um estado --'
284
+ combo_cidade: '-- Selecione uma cidade --'
285
+ selecionar_todos: '(Selecionar / Retirar todos)'
286
+ export_xls: "Exportar para XLS"
287
+ export_all_xls: "Exportar tudo para XLS"
288
+ export_csv: "Exportar para CSV"
289
+ export_all_csv: "Exportar tudo para CSV"
290
+
291
+ nested:
292
+ add: "Adicionar %{name}"
293
+ remove: "Remover"
294
+