active_scaffold 3.7.0 → 3.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +20 -0
  3. data/README.md +2 -0
  4. data/app/assets/javascripts/jquery/active_scaffold.js +68 -62
  5. data/app/assets/stylesheets/active_scaffold_layout.css +1 -1
  6. data/app/views/active_scaffold_overrides/_form_association_record.html.erb +2 -1
  7. data/app/views/active_scaffold_overrides/_render_field.js.erb +9 -6
  8. data/config/locales/de.yml +6 -3
  9. data/config/locales/en.yml +3 -0
  10. data/config/locales/es.yml +3 -0
  11. data/config/locales/fr.yml +9 -6
  12. data/config/locales/hu.yml +20 -17
  13. data/config/locales/ja.yml +25 -22
  14. data/config/locales/ru.yml +17 -14
  15. data/lib/active_scaffold/actions/update.rb +3 -3
  16. data/lib/active_scaffold/attribute_params.rb +7 -17
  17. data/lib/active_scaffold/bridges/active_storage/form_ui.rb +6 -6
  18. data/lib/active_scaffold/bridges/active_storage/list_ui.rb +7 -7
  19. data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +2 -2
  20. data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +12 -14
  21. data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +2 -2
  22. data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +1 -1
  23. data/lib/active_scaffold/bridges/chosen/helpers.rb +10 -10
  24. data/lib/active_scaffold/bridges/country_select/country_select_bridge_helper.rb +7 -7
  25. data/lib/active_scaffold/bridges/date_picker/ext.rb +20 -9
  26. data/lib/active_scaffold/bridges/date_picker/helper.rb +5 -5
  27. data/lib/active_scaffold/bridges/date_picker.rb +2 -0
  28. data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +3 -3
  29. data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +5 -5
  30. data/lib/active_scaffold/bridges/file_column/form_ui.rb +1 -1
  31. data/lib/active_scaffold/bridges/file_column/list_ui.rb +3 -3
  32. data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +1 -1
  33. data/lib/active_scaffold/bridges/paperclip/form_ui.rb +3 -3
  34. data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
  35. data/lib/active_scaffold/bridges/record_select/helpers.rb +15 -15
  36. data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +6 -6
  37. data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +5 -5
  38. data/lib/active_scaffold/bridges.rb +0 -3
  39. data/lib/active_scaffold/constraints.rb +22 -7
  40. data/lib/active_scaffold/core.rb +5 -3
  41. data/lib/active_scaffold/data_structures/column.rb +108 -23
  42. data/lib/active_scaffold/engine.rb +15 -0
  43. data/lib/active_scaffold/extensions/routing_mapper.rb +1 -0
  44. data/lib/active_scaffold/finder.rb +142 -27
  45. data/lib/active_scaffold/helpers/controller_helpers.rb +9 -4
  46. data/lib/active_scaffold/helpers/form_column_helpers.rb +114 -94
  47. data/lib/active_scaffold/helpers/human_condition_helpers.rb +48 -14
  48. data/lib/active_scaffold/helpers/list_column_helpers.rb +34 -18
  49. data/lib/active_scaffold/helpers/search_column_helpers.rb +131 -55
  50. data/lib/active_scaffold/helpers/show_column_helpers.rb +6 -6
  51. data/lib/active_scaffold/orm_checks.rb +21 -1
  52. data/lib/active_scaffold/version.rb +1 -1
  53. data/lib/active_scaffold.rb +3 -2
  54. data/test/bridges/date_picker_test.rb +3 -2
  55. data/test/bridges/paperclip_test.rb +3 -2
  56. data/test/bridges/tiny_mce_test.rb +4 -2
  57. data/test/helpers/form_column_helpers_test.rb +7 -5
  58. data/test/helpers/search_column_helpers_test.rb +2 -1
  59. data/test/misc/constraints_test.rb +1 -0
  60. data/test/misc/finder_test.rb +38 -0
  61. metadata +2 -6
  62. data/config/brakeman.ignore +0 -26
  63. data/config/brakeman.yml +0 -3
  64. data/config/i18n-tasks.yml +0 -121
  65. data/lib/active_scaffold/bridges/shared/date_bridge.rb +0 -221
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26ce6ce8562249c43e685b6b8bbdf14f7ecb13d245b83431145e7cae5c56ac37
4
- data.tar.gz: 51e9f055da4ebda5bb2c91ece952095dcb179d263218e510abc94029bc2cc47b
3
+ metadata.gz: d7debc9ce2befd3f2d71287600caa1d45a0667064315e6666564feaf4cc7dd9e
4
+ data.tar.gz: 47315a56e65cad1164aba74b672aaeba53d404c2e82106a7765f51fd2f059d34
5
5
  SHA512:
6
- metadata.gz: 4f93b85f2714ce8f6d845c704a455de9c3d0fa70aa5225d02d106cf190d75942030804cc2a1f13268e658270ca9a6b734fb2c9c2fdb550bf3ef933ae207d8c55
7
- data.tar.gz: 7a6b39eaf2b2b0f83a809c5bbb98884d9e39373a69fef9a28faf29eeb29d30632cd0fc887024d95d76902a87521edb0289201bcf2014d289d4289087bd235b85
6
+ metadata.gz: fbf8863ff656077485d071eebef80706b91d34c474f9f08f4edd1a1e98448eeb24b5ef4df36e8c06e5edb72da60b1ccf9e32e3e73972dcc6466d3fe653bea22c
7
+ data.tar.gz: 1cd3b5d872b7f62be2a7eebfbb8b974ac8fa4cd2ff30ced0cbb37352f6e6a4990f6a616a527d4b41b1af47f8851ce959d81259796ceed061c994eeb20218b93c
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,23 @@
1
+ - Nullable boolean columns default to use :boolean form_ui instead of :checkbox
2
+ - Display the value set in options[:include_blank] for boolean columns when value is nil, to match the label in the form
3
+ - Support :select_multiple in search_ui, and :draggable in form_ui and search_ui, as shorthands
4
+ - Support assigning options next to the UI type in form_ui, list_ui, show_ui, search_ui, so they are used instead of common options
5
+ - Support :refresh_link option in :select form_ui for non-association columns
6
+ - Support using a hash in :refresh_link option instead of true, with html
7
+ - Support select with multiple attribute for plural associations using :select form_ui, instead of checkboxes, using {html_options: {multiple: true}}, or :select_multiple
8
+ - Support attributes= in column, to set multiple settings with a hash
9
+ - Fix update_columns in type column of polymorphic association, when foreign key has value, it will look for old id with new type and may fail
10
+ - Support changing between subform and form_ui with update_columns
11
+ - Deprecate automatic :select form_ui for associations in subforms, set :select in the controller config to remove deprecation warning, or enable new behaviour of nested subforms with ActiveScaffold.nested_subforms = true
12
+ - Some fixes for human conditions with some search UI
13
+ - Add more string comparators in field search
14
+ - Support date and datetime searches with operators using html5 inputs, as was supported when using date picker. The different bridges, date_picker and calendar_date_select, will just replace the input fields.
15
+ - Support disabling default usage of jquery UI date picker, in case of sortable is wanted, so jquery-ui-rails is loaded, but wants to use HTML5 date input.
16
+ - Support multiple id in constraints for polymorphic association, and don't register constrained field if value is an array.
17
+ - Support subqueries in field_search, with new syntax for search_sql, so search in polymorphic associations is possible.
18
+ - Better support for active model attributes
19
+ - Load files on boot using initializer blocks and use hooks to patch rails classes, run hook :active_scaffold_routing when routing is loaded so other plugins can extend routes
20
+
1
21
  = 3.7.0
2
22
  - Drop support for rails < 5.2 and ruby < 2.5
3
23
  - Support adding settings for chosen and tinyMCE in initializer (ActiveScaffold.js_config) or JavaScript code (ActiveScaffold.config, needed for callbacks)
data/README.md CHANGED
@@ -62,6 +62,8 @@ rails db:migrate
62
62
 
63
63
  Run the app and visit localhost:3000/<plural_model>
64
64
 
65
+ It's recommended to call `clear_helpers` in ApplicationController, as some helpers defined by ActiveScaffold, such as active_scaffold_enum_options, options_for_association_conditions, association_klass_scoped, are usually overrided for different controllers, and it may cause issues when all helper modules are available to every controller, specially when models have associations or columns with the same name but need different code for those overrided helper methods.
66
+
65
67
  Threadsafe
66
68
  ----------
67
69
 
@@ -1,34 +1,34 @@
1
1
  jQuery(document).ready(function($) {
2
- /* It should not be needed, latest chrome is caching by itself
3
- if (ActiveScaffold.config.conditional_get) jQuery.ajaxSettings.ifModified = true;
4
- jQuery(document).on('ajax:beforeSend', function(event, xhr, settings){
5
- xhr.cacheUrl = settings.url;
6
- });
7
- jQuery(document).on('ajax:success', function(event, data, status, xhr){
8
- var etag=xhr.getResponseHeader("etag");
9
- if (etag && xhr.status==304) {
10
- var key = etag + xhr.cacheUrl;
11
- xhr.responseText=jQuery(document).data(key);
12
- var conv = jQuery(document).data('type-'+key);
13
- if (conv) conv(xhr.responseText);
14
- }
15
- });
16
- jQuery(document).ajaxComplete(function(event, xhr, settings){
17
- var etag=xhr.getResponseHeader("etag");
18
- if (etag && settings.ifModified && xhr.responseText) {
19
- var key = etag + xhr.cacheUrl;
20
- jQuery(document).data(key, xhr.responseText);
21
- var contentType = xhr.getResponseHeader('Content-Type');
22
- for(s in settings.contents) {
23
- if (settings.contents[s].test(contentType)) {
24
- var conv = settings.converters['text '+s];
25
- if (typeof conv == 'function') jQuery(document).data('type-'+key, conv);
26
- break;
2
+ /* It should not be needed, latest chrome is caching by itself
3
+ if (ActiveScaffold.config.conditional_get) jQuery.ajaxSettings.ifModified = true;
4
+ jQuery(document).on('ajax:beforeSend', function(event, xhr, settings){
5
+ xhr.cacheUrl = settings.url;
6
+ });
7
+ jQuery(document).on('ajax:success', function(event, data, status, xhr){
8
+ var etag=xhr.getResponseHeader("etag");
9
+ if (etag && xhr.status==304) {
10
+ var key = etag + xhr.cacheUrl;
11
+ xhr.responseText=jQuery(document).data(key);
12
+ var conv = jQuery(document).data('type-'+key);
13
+ if (conv) conv(xhr.responseText);
14
+ }
15
+ });
16
+ jQuery(document).ajaxComplete(function(event, xhr, settings){
17
+ var etag=xhr.getResponseHeader("etag");
18
+ if (etag && settings.ifModified && xhr.responseText) {
19
+ var key = etag + xhr.cacheUrl;
20
+ jQuery(document).data(key, xhr.responseText);
21
+ var contentType = xhr.getResponseHeader('Content-Type');
22
+ for(s in settings.contents) {
23
+ if (settings.contents[s].test(contentType)) {
24
+ var conv = settings.converters['text '+s];
25
+ if (typeof conv == 'function') jQuery(document).data('type-'+key, conv);
26
+ break;
27
+ }
27
28
  }
28
29
  }
29
- }
30
- });
31
- */
30
+ });
31
+ */
32
32
  if (/1\.[2-7]\..*/.test(jQuery().jquery)) {
33
33
  var error = 'ActiveScaffold requires jquery 1.8.0 or greater, please use jquery-rails 2.1.x gem or greater';
34
34
  if (typeof console != 'undefined') console.error(error);
@@ -198,7 +198,7 @@ jQuery(document).ready(function($) {
198
198
  var td = jQuery(this), span = td.find('span.in_place_editor_field');
199
199
  if (event.type == 'mouseenter') {
200
200
  if (td.hasClass('empty') || typeof(span.data('editInPlace')) === 'undefined') td.find('span').addClass("hover");
201
- }
201
+ }
202
202
  if (event.type == 'mouseleave') {
203
203
  if (td.hasClass('empty') || typeof(span.data('editInPlace')) === 'undefined') td.find('span').removeClass("hover");
204
204
  }
@@ -266,6 +266,7 @@ jQuery(document).ready(function($) {
266
266
  var element = jQuery(this);
267
267
  var form_element = element.prev();
268
268
  var value;
269
+ if (form_element.is(".field_with_errors")) form_element = form_element.children().last();
269
270
  if (form_element.is(".checkbox-list")) {
270
271
  value = form_element.find(':checked').map(function(item){return $(this).val();}).toArray();
271
272
  form_element = form_element.parent().find("input:checkbox"); // parent is needed for draggable-list, checked list may be empty
@@ -400,7 +401,7 @@ jQuery(document).ready(function($) {
400
401
  }
401
402
  if (ActiveScaffold.config.warn_changes) ActiveScaffold.setup_warn_changes();
402
403
  jQuery(document).on('as:element_updated as:element_created', function(e, action_link) {
403
- ActiveScaffold.setup(e.target);
404
+ ActiveScaffold.setup(e.target);
404
405
  });
405
406
  jQuery(document).on('as:element_removed', function(e, action_link) {
406
407
  setTimeout(ActiveScaffold.update_floating_form_footer); // delay so form is already removed
@@ -443,7 +444,7 @@ jQuery(document).on('turbolinks:load turbo:load', function($) {
443
444
  for (var name in prop) {
444
445
  // Check if we're overwriting an existing function
445
446
  prototype[name] = typeof prop[name] == "function" &&
446
- typeof _super[name] == "function" && fnTest.test(prop[name]) ?
447
+ typeof _super[name] == "function" && fnTest.test(prop[name]) ?
447
448
  (function(name, fn){
448
449
  return function() {
449
450
  var tmp = this._super;
@@ -930,25 +931,30 @@ var ActiveScaffold = {
930
931
  render_form_field: function(source, content, options) {
931
932
  if (typeof(source) == 'string') source = '#' + source;
932
933
  var source = jQuery(source);
933
- var element = source.closest('.sub-form-record'), selector = '';
934
- if (element.length == 0) {
935
- element = source.closest('form > ol.form');
934
+ var element, container = source.closest('.sub-form-record'), selector = '';
935
+ if (container.length == 0) {
936
+ container = source.closest('form > ol.form');
936
937
  selector = 'li';
937
938
  }
938
939
  // find without entering new subforms
939
- selector = options.is_subform ? '' : selector + ':not(.sub-form) ';
940
- element = element.find(selector + '.' + options.field_class).first();
940
+ element = container.find(selector + ':not(.sub-form) .' + options.field_class).first();
941
+ if (element.length)
942
+ element = element.closest('dl');
943
+ else if (options.subform_class)
944
+ element = container.find(selector + '.' + options.subform_class).first();
941
945
 
942
946
  if (element.length) {
943
- if (options.is_subform == false) {
944
- if (typeof(options.hidden) != 'undefined') {
945
- var li = element.closest('li');
946
- li[options.hidden ? 'addClass' : 'removeClass'].call(li, 'hidden')
947
- }
948
- this.replace(element.closest('dl'), content);
949
- } else {
947
+ var parent = element.is('li, td') ? element : element.parent('li, td');
948
+ if (element.is('li'))
950
949
  this.replace_html(element, content);
950
+ else
951
+ this.replace(element, content);
952
+ if (parent.is('li')) {
953
+ for (var attr in options.attrs)
954
+ parent.attr(attr, options.attrs[attr]);
951
955
  }
956
+ if (typeof(options.hidden) != 'undefined')
957
+ parent[options.hidden ? 'addClass' : 'removeClass'].call(parent, 'hidden')
952
958
  }
953
959
  },
954
960
 
@@ -981,23 +987,23 @@ var ActiveScaffold = {
981
987
  // test editor is open
982
988
  if (typeof(span.data('editInPlace')) === 'undefined') {
983
989
  var options = {show_buttons: true,
984
- hover_class: 'hover',
985
- element_id: 'editor_id',
986
- ajax_data_type: "script",
987
- delegate: {
988
- willCloseEditInPlace: function(span, options) {
989
- if (span.data('addEmptyOnCancel')) span.closest('td').addClass('empty');
990
- span.closest('tr').find('td.actions .loading-indicator').css('visibility','visible');
991
- },
992
- didCloseEditInPlace: function(span, options) {
993
- span.closest('tr').find('td.actions .loading-indicator').css('visibility','hidden');
994
- }
995
- },
996
- update_value: 'value'},
997
- csrf_param = jQuery('meta[name=csrf-param]').first(),
998
- csrf_token = jQuery('meta[name=csrf-token]').first(),
999
- my_parent = span.parent(),
1000
- column_heading = null;
990
+ hover_class: 'hover',
991
+ element_id: 'editor_id',
992
+ ajax_data_type: "script",
993
+ delegate: {
994
+ willCloseEditInPlace: function(span, options) {
995
+ if (span.data('addEmptyOnCancel')) span.closest('td').addClass('empty');
996
+ span.closest('tr').find('td.actions .loading-indicator').css('visibility','visible');
997
+ },
998
+ didCloseEditInPlace: function(span, options) {
999
+ span.closest('tr').find('td.actions .loading-indicator').css('visibility','hidden');
1000
+ }
1001
+ },
1002
+ update_value: 'value'},
1003
+ csrf_param = jQuery('meta[name=csrf-param]').first(),
1004
+ csrf_token = jQuery('meta[name=csrf-token]').first(),
1005
+ my_parent = span.parent(),
1006
+ column_heading = null;
1001
1007
 
1002
1008
  if(!(my_parent.is('td') || my_parent.is('th'))){
1003
1009
  my_parent = span.parents('td').eq(0);
@@ -1011,8 +1017,8 @@ var ActiveScaffold = {
1011
1017
  }
1012
1018
 
1013
1019
  var render_url = column_heading.data('ie-render-url'),
1014
- mode = column_heading.data('ie-mode'),
1015
- record_id = span.data('ie-id') || '';
1020
+ mode = column_heading.data('ie-mode'),
1021
+ record_id = span.data('ie-id') || '';
1016
1022
 
1017
1023
  ActiveScaffold.read_inplace_edit_heading_attributes(column_heading, options);
1018
1024
 
@@ -855,7 +855,7 @@ padding-left: 5px;
855
855
  .active-scaffold .form-element .sub-form.optional {
856
856
  float: none;
857
857
  }
858
- .active-scaffold .form-element .show-new-subform {
858
+ .active-scaffold .form-element a.show-new-subform {
859
859
  margin-left: 5px;
860
860
  }
861
861
 
@@ -52,7 +52,8 @@
52
52
  next unless in_subform?(column, parent_record, record_column)
53
53
  columns_length += 1
54
54
  show_actions = true
55
- if column.association && column.form_ui.nil?
55
+ if !ActiveScaffold.nested_subforms && !readonly && column.association && column.form_ui.nil?
56
+ ActiveSupport::Deprecation.warn "Nested subforms are allowed now, set form_ui = :select for #{column.name} in controller for #{config.model.name}"
56
57
  column = column.dup unless ActiveScaffold.threadsafe
57
58
  column.form_ui = :select
58
59
  end
@@ -14,11 +14,14 @@
14
14
  renders_as = column_renders_as(column)
15
15
  form_ui = column.form_ui
16
16
  end
17
- if renders_as == :subform
18
- options = {is_subform: true, field_class: "#{column.name}-sub-form"}
19
- else
20
- options = {is_subform: false, field_class: "#{column.name}-input", hidden: form_ui == :hidden}
21
- end
17
+ options = {field_class: "#{column.name}-input", hidden: form_ui == :hidden}
18
+ options[:subform_class] = "#{column.name}-sub-form" if column.association
19
+ options[:attrs] =
20
+ if renders_as == :subform
21
+ active_scaffold_subform_attributes(column, (column.css_class unless column.css_class.is_a?(Proc)))
22
+ else
23
+ {class: 'form-element', id: ''}
24
+ end
22
25
  html =
23
26
  if scope
24
27
  readonly = @record.readonly? || !@record.authorized_for?(:crud_type => :update)
@@ -34,5 +37,5 @@
34
37
 
35
38
  ActiveScaffold.render_form_field('<%= source_id %>','<%= escape_javascript(html) %>', <%= options.to_json.html_safe %>);
36
39
  <%if column.update_columns && !column.update_columns.empty?%>
37
- <%= render(partial: "render_field", collection: column.update_columns, locals: {source_id: source_id, scope: scope})%>
40
+ <%= render(partial: "render_field", collection: column.update_columns, locals: {source_id: source_id, scope: scope})%>
38
41
  <%end%>
@@ -47,6 +47,9 @@ de:
47
47
  deleted_model: "%{model} gelöscht"
48
48
  deleted_records: Gelöschte Records auflisten
49
49
  delimiter: Trennzeichen
50
+ doesnt_begin_with:
51
+ doesnt_contain:
52
+ doesnt_end_with:
50
53
  download: Herunterladen
51
54
  edit: Bearbeiten
52
55
  ends_with: Endet
@@ -138,10 +141,10 @@ de:
138
141
  yesterday: Gestern
139
142
  date:
140
143
  formats:
141
- month:
144
+ month: "%B"
142
145
  quarter: Quartal %{num}
143
- week:
144
- year_month:
146
+ week:
147
+ year_month: "%b %Y"
145
148
  year_quarter: Quartal %{quarter} %{year}
146
149
  time:
147
150
  formats:
@@ -47,6 +47,9 @@ en:
47
47
  deleted_model: Deleted %{model}
48
48
  deleted_records: List Deleted Records
49
49
  delimiter: Delimiter
50
+ doesnt_begin_with: Doesn't begin with
51
+ doesnt_contain: Doesn't contain
52
+ doesnt_end_with: Doesn't end with
50
53
  download: Download
51
54
  edit: Edit
52
55
  ends_with: Ends with
@@ -47,6 +47,9 @@ es:
47
47
  deleted_model: "%{model} borrado"
48
48
  deleted_records: Ver Eliminados
49
49
  delimiter: Delimitador
50
+ doesnt_begin_with: No empieza con
51
+ doesnt_contain: No contiene
52
+ doesnt_end_with: No termina con
50
53
  download: Descargar
51
54
  edit: Editar
52
55
  ends_with: Termina con
@@ -47,6 +47,9 @@ fr:
47
47
  deleted_model: Suppression de %{model}
48
48
  deleted_records: Lister les enregistrements supprimés
49
49
  delimiter: Délimiteur
50
+ doesnt_begin_with:
51
+ doesnt_contain:
52
+ doesnt_end_with:
50
53
  download: Télécharger
51
54
  edit: Éditer
52
55
  ends_with: Se terminant par
@@ -63,7 +66,7 @@ fr:
63
66
  found: Trouvé
64
67
  future: Futur
65
68
  group_by: Grouper par
66
- grouped_by:
69
+ grouped_by:
67
70
  hide: "(Cacher)"
68
71
  hours: Heures
69
72
  human_conditions:
@@ -138,11 +141,11 @@ fr:
138
141
  yesterday: Hier
139
142
  date:
140
143
  formats:
141
- month:
142
- quarter:
143
- week:
144
- year_month:
145
- year_quarter:
144
+ month: "%B"
145
+ quarter:
146
+ week:
147
+ year_month: "%b %Y"
148
+ year_quarter:
146
149
  time:
147
150
  formats:
148
151
  picker: "%a, %d %b %Y %H:%M:%S"
@@ -18,7 +18,7 @@ hu:
18
18
  between: Között
19
19
  cancel: Mégse
20
20
  cant_destroy_record: 'nem törölhető: %{record}'
21
- changes:
21
+ changes:
22
22
  click_to_edit: Kattints a szerkesztéshez
23
23
  click_to_reset: Kattints az alapállapothoz
24
24
  close: Bezárás
@@ -27,7 +27,7 @@ hu:
27
27
  contains: Contains
28
28
  create: Létrehozás
29
29
  create_another: Create Another %{model}
30
- create_apply:
30
+ create_apply:
31
31
  create_model: "%{model} létrehozása"
32
32
  create_new: Új létrehozása
33
33
  created_model: "%{model} létrehozva"
@@ -38,15 +38,18 @@ hu:
38
38
  showMonthAfterYear: false
39
39
  weekHeader: Wk
40
40
  datetime_picker_options:
41
- closeText:
42
- currentText:
41
+ closeText:
42
+ currentText:
43
43
  timeText:
44
- timezoneText: Timezone
44
+ timezoneText:
45
45
  days: Days
46
46
  delete: Törlés
47
47
  deleted_model: "%{model} törölve"
48
- deleted_records:
48
+ deleted_records:
49
49
  delimiter: Elválasztó
50
+ doesnt_begin_with:
51
+ doesnt_contain:
52
+ doesnt_end_with:
50
53
  download: Letöltés
51
54
  edit: Szerkesztés
52
55
  ends_with: Ends with
@@ -62,8 +65,8 @@ hu:
62
65
  filtered: "(Szűrt)"
63
66
  found: Találat
64
67
  future: Future
65
- group_by:
66
- grouped_by:
68
+ group_by:
69
+ grouped_by:
67
70
  hide: "(Elrejtés)"
68
71
  hours: Hours
69
72
  human_conditions:
@@ -85,9 +88,9 @@ hu:
85
88
  next_week: Next Week
86
89
  next_year: Next Year
87
90
  no_authorization_for_action: No Authorization for action %{action}
88
- no_color:
91
+ no_color:
89
92
  no_entries: Nincs elem
90
- no_group:
93
+ no_group:
91
94
  no_options: nincsenek opciók
92
95
  not_null: Not Null
93
96
  'null': 'Null'
@@ -109,7 +112,7 @@ hu:
109
112
  refresh: Frissítés
110
113
  remove: Törlés
111
114
  remove_file: Fájl törlése, vagy cseréje
112
- remove_files: Fájlok törlése, vagy hozzáadása
115
+ remove_files:
113
116
  replace_existing: Replace existing
114
117
  replace_with_new: Csere újjal
115
118
  reset: Alapállapot
@@ -129,7 +132,7 @@ hu:
129
132
  tomorrow: Tomorrow
130
133
  'true': 'True'
131
134
  update: Modosítás
132
- update_apply:
135
+ update_apply:
133
136
  update_model: "%{model} modosítása"
134
137
  updated_model: "%{model} módosítva"
135
138
  version_inconsistency: Verzió ütközés - ezt a rekordot módosították mióta elkezdted szerkeszteni.
@@ -138,11 +141,11 @@ hu:
138
141
  yesterday: Yesterday
139
142
  date:
140
143
  formats:
141
- month:
142
- quarter:
143
- week:
144
- year_month:
145
- year_quarter:
144
+ month:
145
+ quarter:
146
+ week:
147
+ year_month:
148
+ year_quarter:
146
149
  time:
147
150
  formats:
148
151
  picker: "%a, %d %b %Y %H:%M:%S"
@@ -22,12 +22,12 @@ ja:
22
22
  click_to_edit: クリックして編集
23
23
  click_to_reset: クリックしてリセット
24
24
  close: 閉じる
25
- config_list: Configure
26
- config_list_model: Configure Columns for %{model}
25
+ config_list:
26
+ config_list_model:
27
27
  contains: 部分一致検索
28
28
  create: 作成
29
- create_another: Create Another %{model}
30
- create_apply:
29
+ create_another:
30
+ create_apply:
31
31
  create_model: "%{model}を作成"
32
32
  create_new: 新規作成
33
33
  created_model: "%{model}を作成しました"
@@ -45,25 +45,28 @@ ja:
45
45
  days: 日分
46
46
  delete: 削除
47
47
  deleted_model: "%{model}を削除しました"
48
- deleted_records:
48
+ deleted_records:
49
49
  delimiter: 区切り文字
50
+ doesnt_begin_with:
51
+ doesnt_contain:
52
+ doesnt_end_with:
50
53
  download: ダウンロード
51
54
  edit: 編集
52
55
  ends_with: 終了時間
53
56
  error_500: "(コード500:内部エラー)"
54
57
  errors:
55
58
  template:
56
- body: '次のフィールドに問題がありました:'
59
+ body: 次のフィールドに問題がありました:
57
60
  header:
58
61
  one: 1件のエラーにより、この%{model}が保存できませんでした
59
62
  other: "%{count}件のエラーにより、この%{model}が保存できませんでした"
60
63
  export: エクスポート
61
- 'false': 'False'
64
+ 'false':
62
65
  filtered: "(フィルタ中)"
63
66
  found: 個ありました
64
67
  future: 未来
65
- group_by:
66
- grouped_by:
68
+ group_by:
69
+ grouped_by:
67
70
  hide: "(隠す)"
68
71
  hours: 時間分
69
72
  human_conditions:
@@ -79,23 +82,23 @@ ja:
79
82
  minutes: 分間
80
83
  months: か月分
81
84
  nested_for_model: "%{parent_model}の%{nested_model}"
82
- nested_of_model: "%{nested_model} of %{parent_model}"
85
+ nested_of_model:
83
86
  next: 次
84
87
  next_month: 来月
85
88
  next_week: 来週
86
89
  next_year: 来年
87
- no_authorization_for_action: No Authorization for action %{action}
88
- no_color:
90
+ no_authorization_for_action:
91
+ no_color:
89
92
  no_entries: 見つかりませんでした
90
- no_group:
93
+ no_group:
91
94
  no_options: オプション無し
92
- not_null: Not Null
93
- 'null': 'Null'
94
- omit_header: Omit Header
95
- optional_attributes: Further Options
95
+ not_null:
96
+ 'null':
97
+ omit_header:
98
+ optional_attributes:
96
99
  options: オプション
97
100
  past: 過去
98
- pdf: PDF
101
+ pdf:
99
102
  prev_month: 先月
100
103
  prev_week: 先週
101
104
  prev_year: 去年
@@ -110,10 +113,10 @@ ja:
110
113
  remove: 削除
111
114
  remove_file: ファイルを削除または置換
112
115
  remove_files: ファイルを削除または追加する
113
- replace_existing: Replace existing
116
+ replace_existing:
114
117
  replace_with_new: 新しいもので置換
115
118
  reset: リセット
116
- revisions_for_model: Revisions for %{model}
119
+ revisions_for_model:
117
120
  saving: 保存中…
118
121
  search: 検索
119
122
  search_terms: 検索単語
@@ -127,9 +130,9 @@ ja:
127
130
  this_year: 今年
128
131
  today: 今日
129
132
  tomorrow: 明日
130
- 'true': 'True'
133
+ 'true':
131
134
  update: 更新
132
- update_apply:
135
+ update_apply:
133
136
  update_model: "%{model}を更新"
134
137
  updated_model: "%{model}を更新しました"
135
138
  version_inconsistency: バージョンが一致しません - あなたが編集している間にこのレコードが変更されました。
@@ -18,7 +18,7 @@ ru:
18
18
  between: В интервале
19
19
  cancel: Отмена
20
20
  cant_destroy_record: Запись %{record} не может быть удалена
21
- changes:
21
+ changes:
22
22
  click_to_edit: Нажмите для редактирования
23
23
  click_to_reset: Нажмите для сброса
24
24
  close: Закрыть
@@ -27,7 +27,7 @@ ru:
27
27
  contains: Содержит
28
28
  create: Создать
29
29
  create_another: "%{model}: Создать другую запись"
30
- create_apply:
30
+ create_apply:
31
31
  create_model: "%{model}: создать запись"
32
32
  create_new: Создать новую запись
33
33
  created_model: "%{model}: запись создана"
@@ -41,12 +41,15 @@ ru:
41
41
  closeText: Закрыть
42
42
  currentText: Текущее время
43
43
  timeText:
44
- timezoneText: Timezone
44
+ timezoneText:
45
45
  days: дней
46
46
  delete: Удалить
47
47
  deleted_model: "%{model}: запись удалена"
48
- deleted_records:
48
+ deleted_records:
49
49
  delimiter: Разделитель
50
+ doesnt_begin_with:
51
+ doesnt_contain:
52
+ doesnt_end_with:
50
53
  download: Загрузить
51
54
  edit: Изменить
52
55
  ends_with: Оканчивается на
@@ -68,8 +71,8 @@ ru:
68
71
  one: запись
69
72
  other: записи
70
73
  future: Будущие
71
- group_by:
72
- grouped_by:
74
+ group_by:
75
+ grouped_by:
73
76
  hide: "(Скрыть)"
74
77
  hours: часов
75
78
  human_conditions:
@@ -91,9 +94,9 @@ ru:
91
94
  next_week: На следующей неделе
92
95
  next_year: В следующем году
93
96
  no_authorization_for_action: Нет прав на выполнение действия "%{action}"
94
- no_color:
97
+ no_color:
95
98
  no_entries: Нет записей
96
- no_group:
99
+ no_group:
97
100
  no_options: Нет вариантов
98
101
  not_null: Не пусто
99
102
  'null': Пусто
@@ -137,7 +140,7 @@ ru:
137
140
  tomorrow: Завтра
138
141
  'true': Да
139
142
  update: Обновить запись
140
- update_apply:
143
+ update_apply:
141
144
  update_model: "%{model}: обновить запись"
142
145
  updated_model: "%{model}: запись обновлена"
143
146
  version_inconsistency: Эта запись была обновлена с того момента, как вы начали ее редактировать
@@ -146,11 +149,11 @@ ru:
146
149
  yesterday: Вчера
147
150
  date:
148
151
  formats:
149
- month:
150
- quarter:
151
- week:
152
- year_month:
153
- year_quarter:
152
+ month:
153
+ quarter:
154
+ week:
155
+ year_month:
156
+ year_quarter:
154
157
  time:
155
158
  formats:
156
159
  picker: "%a, %d %b %Y %H:%M:%S"