activeadmin 2.14.0 → 3.3.0

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 (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +143 -0
  3. data/CONTRIBUTING.md +0 -7
  4. data/README.md +2 -2
  5. data/app/assets/stylesheets/active_admin/_forms.scss +1 -2
  6. data/app/assets/stylesheets/active_admin/components/_comments.scss +1 -1
  7. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +7 -4
  8. data/app/assets/stylesheets/active_admin/components/_pagination.scss +5 -2
  9. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +9 -6
  10. data/app/assets/stylesheets/active_admin/components/_tabs.scss +10 -7
  11. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +2 -2
  12. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +1 -1
  13. data/app/assets/stylesheets/active_admin/structure/_footer.scss +1 -1
  14. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +6 -3
  15. data/config/locales/ar.yml +0 -7
  16. data/config/locales/az.yml +0 -7
  17. data/config/locales/bg.yml +0 -7
  18. data/config/locales/bs.yml +0 -7
  19. data/config/locales/ca.yml +0 -7
  20. data/config/locales/cs.yml +0 -7
  21. data/config/locales/da.yml +0 -7
  22. data/config/locales/de-CH.yml +0 -7
  23. data/config/locales/de.yml +0 -8
  24. data/config/locales/el.yml +0 -7
  25. data/config/locales/en-CA.yml +0 -7
  26. data/config/locales/en-GB.yml +0 -7
  27. data/config/locales/en.yml +0 -8
  28. data/config/locales/eo.yml +0 -8
  29. data/config/locales/es-MX.yml +0 -7
  30. data/config/locales/es.yml +0 -8
  31. data/config/locales/fa.yml +0 -7
  32. data/config/locales/fi.yml +0 -7
  33. data/config/locales/fr.yml +0 -8
  34. data/config/locales/he.yml +0 -9
  35. data/config/locales/hr.yml +0 -7
  36. data/config/locales/hu.yml +0 -8
  37. data/config/locales/id.yml +0 -7
  38. data/config/locales/it.yml +0 -8
  39. data/config/locales/ja.yml +0 -8
  40. data/config/locales/ko.yml +0 -7
  41. data/config/locales/lt.yml +0 -8
  42. data/config/locales/lv.yml +0 -7
  43. data/config/locales/mk.yml +0 -8
  44. data/config/locales/nb.yml +0 -8
  45. data/config/locales/nl.yml +0 -8
  46. data/config/locales/pl.yml +0 -8
  47. data/config/locales/pt-BR.yml +0 -8
  48. data/config/locales/pt-PT.yml +0 -7
  49. data/config/locales/ro.yml +0 -7
  50. data/config/locales/ru.yml +0 -6
  51. data/config/locales/sk.yml +0 -8
  52. data/config/locales/sv-SE.yml +58 -39
  53. data/config/locales/tr.yml +0 -11
  54. data/config/locales/uk.yml +0 -6
  55. data/config/locales/vi.yml +0 -8
  56. data/config/locales/zh-CN.yml +0 -8
  57. data/config/locales/zh-TW.yml +0 -7
  58. data/lib/active_admin/csv_builder.rb +23 -2
  59. data/lib/active_admin/engine.rb +4 -0
  60. data/lib/active_admin/filters/active_filter.rb +1 -1
  61. data/lib/active_admin/filters/forms.rb +2 -2
  62. data/lib/active_admin/filters/formtastic_addons.rb +1 -1
  63. data/lib/active_admin/form_builder.rb +5 -6
  64. data/lib/active_admin/inputs/filters/base/search_method_select.rb +2 -2
  65. data/lib/active_admin/inputs/filters/date_range_input.rb +2 -2
  66. data/lib/active_admin/inputs/filters/numeric_input.rb +1 -1
  67. data/lib/active_admin/inputs/filters/select_input.rb +3 -3
  68. data/lib/active_admin/inputs/filters/string_input.rb +1 -1
  69. data/lib/active_admin/menu.rb +1 -0
  70. data/lib/active_admin/namespace.rb +1 -1
  71. data/lib/active_admin/namespace_settings.rb +1 -1
  72. data/lib/active_admin/orm/active_record/comments/comment.rb +8 -0
  73. data/lib/active_admin/pundit_adapter.rb +2 -2
  74. data/lib/active_admin/resource/attributes.rb +8 -1
  75. data/lib/active_admin/resource/belongs_to.rb +0 -1
  76. data/lib/active_admin/resource_controller/decorators.rb +1 -1
  77. data/lib/active_admin/resource_controller/streaming.rb +1 -1
  78. data/lib/active_admin/version.rb +1 -1
  79. data/lib/active_admin/view_helpers/display_helper.rb +10 -3
  80. data/lib/active_admin/views/components/active_admin_form.rb +14 -6
  81. data/lib/active_admin/views/components/paginated_collection.rb +4 -1
  82. data/lib/active_admin/views/index_as_table.rb +7 -6
  83. data/lib/active_admin/views/pages/show.rb +1 -7
  84. data/lib/active_admin.rb +4 -2
  85. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +2 -2
  86. data/vendor/assets/javascripts/jquery-ui/data.js +12 -8
  87. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +10 -7
  88. data/vendor/assets/javascripts/jquery-ui/focusable.js +12 -9
  89. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +60 -57
  90. data/vendor/assets/javascripts/jquery-ui/form.js +15 -12
  91. data/vendor/assets/javascripts/jquery-ui/ie.js +5 -2
  92. data/vendor/assets/javascripts/jquery-ui/keycode.js +11 -7
  93. data/vendor/assets/javascripts/jquery-ui/labels.js +46 -40
  94. data/vendor/assets/javascripts/jquery-ui/plugin.js +5 -2
  95. data/vendor/assets/javascripts/jquery-ui/position.js +30 -17
  96. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +6 -2
  97. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +6 -2
  98. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +10 -7
  99. data/vendor/assets/javascripts/jquery-ui/tabbable.js +11 -8
  100. data/vendor/assets/javascripts/jquery-ui/unique-id.js +10 -7
  101. data/vendor/assets/javascripts/jquery-ui/version.js +6 -3
  102. data/vendor/assets/javascripts/jquery-ui/widget.js +53 -30
  103. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +87 -24
  104. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +276 -273
  105. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +15 -11
  106. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +182 -62
  107. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +53 -36
  108. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +28 -19
  109. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +22 -11
  110. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +47 -26
  111. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +186 -125
  112. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +20 -20
  113. metadata +30 -36
  114. data/lib/active_admin/deprecation.rb +0 -11
  115. data/lib/ransack_ext.rb +0 -21
  116. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
@@ -43,14 +43,6 @@ es:
43
43
  filter: "Filtrar"
44
44
  clear: "Quitar Filtros"
45
45
  predicates:
46
- contains: "Contiene"
47
- equals: "Igual a"
48
- starts_with: "Empieza con"
49
- ends_with: "Termina con"
50
- greater_than: "Mayor que"
51
- less_than: "Menor que"
52
- gteq_datetime: "Mayor o igual que"
53
- lteq_datetime: "Menor o igual que"
54
46
  from: "Desde"
55
47
  to: "Hasta"
56
48
  scopes:
@@ -24,13 +24,6 @@ fa:
24
24
  buttons:
25
25
  filter: "فیلتر"
26
26
  clear: "پاک کردن فیلتر"
27
- predicates:
28
- contains: "شامل"
29
- equals: "برابر با"
30
- starts_with: "شروع با"
31
- ends_with: "پایان با"
32
- greater_than: "بزرگتر از"
33
- less_than: "کوچکتر از"
34
27
  status_tag:
35
28
  "yes": "بله"
36
29
  "no": "بدون"
@@ -24,13 +24,6 @@ fi:
24
24
  buttons:
25
25
  filter: "Hae"
26
26
  clear: "Tyhjennä valinnat"
27
- predicates:
28
- contains: "Sisältää"
29
- equals: "On yhtä kuin"
30
- starts_with: "Alkaa"
31
- ends_with: "Päättyy"
32
- greater_than: "Suurempi kuin"
33
- less_than: "Pienempi kuin"
34
27
  status_tag:
35
28
  "yes": "Kyllä"
36
29
  "no": "Ei"
@@ -26,14 +26,6 @@ fr:
26
26
  filter: "Filtrer"
27
27
  clear: "Supprimer les filtres"
28
28
  predicates:
29
- contains: "Contient"
30
- equals: "Égal à"
31
- starts_with: "Commence par"
32
- ends_with: "Se termine par"
33
- greater_than: "Plus grand que"
34
- less_than: "Plus petit que"
35
- gteq_datetime: "Ultérieur ou égal à"
36
- lteq_datetime: "Antérieur ou égal à"
37
29
  from: "De"
38
30
  to: "À"
39
31
  search_status:
@@ -25,15 +25,6 @@ he:
25
25
  buttons:
26
26
  filter: "סינון"
27
27
  clear: "איפוס שדות"
28
- predicates:
29
- contains: "מכיל"
30
- equals: "שווה ל"
31
- starts_with: "מתחיל עם"
32
- ends_with: "מסתיים ב"
33
- greater_than: "גדול מ"
34
- less_than: "פחות מ"
35
- gteq_datetime: "אחרי או בתאריך"
36
- lteq_datetime: "לפני או בתאריך"
37
28
  search_status:
38
29
  headline: "תוצאות חיפוש:"
39
30
  current_scope: "תחום:"
@@ -24,13 +24,6 @@ hr:
24
24
  buttons:
25
25
  filter: "Filtriraj"
26
26
  clear: "Očisti filtere"
27
- predicates:
28
- contains: "Sadrži"
29
- equals: "Jednako"
30
- starts_with: "počinje s"
31
- ends_with: "Završava sa"
32
- greater_than: "Veće od"
33
- less_than: "Manje od"
34
27
  status_tag:
35
28
  "yes": "Da"
36
29
  "no": "Nema"
@@ -25,14 +25,6 @@ hu:
25
25
  filter: "Szűrés"
26
26
  clear: "Feltételek törlése"
27
27
  predicates:
28
- contains: "Tartalmazza"
29
- equals: "Pontosan"
30
- starts_with: "kezdődik"
31
- ends_with: "végződik"
32
- greater_than: "Nagyobb, mint"
33
- less_than: "Kisebb, mint"
34
- gteq_datetime: "Nagyobb vagy egyenlő, mint"
35
- lteq_datetime: "Kisebb vagy egyenlő, mint"
36
28
  from: "-tól"
37
29
  to: "-ig"
38
30
  status_tag:
@@ -24,13 +24,6 @@ id:
24
24
  buttons:
25
25
  filter: "Filter"
26
26
  clear: "Hapus Filters"
27
- predicates:
28
- contains: "Mengandung"
29
- equals: "Sama dengan"
30
- starts_with: "Diawali dengan"
31
- ends_with: "Diakhiri dengan"
32
- greater_than: "Lebih besar dari"
33
- less_than: "Lebih kecil dari"
34
27
  search_status:
35
28
  headline: "Status Pencarian:"
36
29
  current_scope: "Scope:"
@@ -43,14 +43,6 @@ it:
43
43
  filter: "Filtra"
44
44
  clear: "Rimuovi filtri"
45
45
  predicates:
46
- contains: "Contiene"
47
- equals: "Uguale a"
48
- starts_with: "Inizia con"
49
- ends_with: "Finisce con"
50
- greater_than: "Maggiore di"
51
- less_than: "Minore di"
52
- gteq_datetime: "Maggiore o uguale a"
53
- lteq_datetime: "Minore o uguale a"
54
46
  from: "Da"
55
47
  to: "A"
56
48
  scopes:
@@ -26,14 +26,6 @@ ja:
26
26
  filter: "絞り込む"
27
27
  clear: "条件を削除する"
28
28
  predicates:
29
- contains: "を含む"
30
- equals: "等しい"
31
- starts_with: "で始まる"
32
- ends_with: "で終わる"
33
- greater_than: "より大きい"
34
- less_than: "より小さい"
35
- gteq_datetime: "以上"
36
- lteq_datetime: "以下"
37
29
  from: "開始"
38
30
  to: "終了"
39
31
  search_status:
@@ -24,13 +24,6 @@ ko:
24
24
  buttons:
25
25
  filter: "필터"
26
26
  clear: "필터 초기화"
27
- predicates:
28
- contains: "포함하는 문구"
29
- equals: "일치하는 문구"
30
- starts_with: "시작하는 문구"
31
- ends_with: "종료하는 문구"
32
- greater_than: "초과"
33
- less_than: "미만"
34
27
  search_status:
35
28
  headline: "검색 상태:"
36
29
  current_scope: "검색 범위:"
@@ -25,14 +25,6 @@ lt:
25
25
  filter: 'Filtras'
26
26
  clear: 'Išvalyti filtrus'
27
27
  predicates:
28
- contains: "Sudėtyje yra"
29
- equals: 'lygus'
30
- starts_with: "Prasideda nuo"
31
- ends_with: "Baigiasi"
32
- greater_than: 'didesnis nei'
33
- less_than: 'mažiau nei'
34
- gteq_datetime: "daugiau arba lygu nei"
35
- lteq_datetime: "mažiau arba lygu nei"
36
28
  from: "Nuo"
37
29
  to: "Iki"
38
30
  search_status:
@@ -24,13 +24,6 @@ lv:
24
24
  buttons:
25
25
  filter: "Filtrēt"
26
26
  clear: "Novākt filtrus"
27
- predicates:
28
- contains: "Satur"
29
- equals: "Vienāds ar"
30
- starts_with: "Sākas ar"
31
- ends_with: "Beidzas ar"
32
- greater_than: "Lielāks par"
33
- less_than: "Mazāks par"
34
27
  status_tag:
35
28
  "yes": "Jā"
36
29
  "no": "Nē"
@@ -35,14 +35,6 @@ mk:
35
35
  filter: "Пребарај"
36
36
  clear: "Исчисти филтри"
37
37
  predicates:
38
- contains: "Содржи"
39
- equals: "Е еднакво со"
40
- starts_with: "Започнува со"
41
- ends_with: "Завршува сo"
42
- greater_than: "Е поголемо од"
43
- less_than: "Е помало од"
44
- gteq_datetime: "Е поголемо или еднакво со"
45
- lteq_datetime: "Е помало или еднакво со"
46
38
  from: "Од"
47
39
  to: "До"
48
40
  search_status:
@@ -25,14 +25,6 @@ nb:
25
25
  filter: "Filter"
26
26
  clear: "Fjern filter"
27
27
  predicates:
28
- contains: "Inneholder"
29
- equals: "Er lik"
30
- starts_with: "Starter med"
31
- ends_with: "Slutter med"
32
- greater_than: "Større enn"
33
- less_than: "Mindre enn"
34
- gteq_datetime: "Større enn eller lik"
35
- lteq_datetime: "Mindre enn eller lik"
36
28
  from: "Fra"
37
29
  to: "Til"
38
30
  search_status:
@@ -27,15 +27,7 @@ nl:
27
27
  filter: "Filter"
28
28
  clear: "Maak Filters Ongedaan"
29
29
  predicates:
30
- contains: "Bevat"
31
- equals: "Gelijk aan"
32
- starts_with: "Begint met"
33
- ends_with: "Eindigt op"
34
- greater_than: "Groter dan"
35
- less_than: "Kleiner dan"
36
30
  from: Van
37
- gteq_datetime: Groter of gelijk aan
38
- lteq_datetime: Kleiner of gelijk aan
39
31
  to: Tot
40
32
  search_status:
41
33
  current_scope: "Scope:"
@@ -47,14 +47,6 @@ pl:
47
47
  filter: "Filtruj"
48
48
  clear: "Wyczyść Filtry"
49
49
  predicates:
50
- contains: "Zawiera"
51
- equals: "Równe"
52
- starts_with: "Zaczyna się"
53
- ends_with: "Kończy się"
54
- greater_than: "Większe niż"
55
- less_than: "Mniejsze niż"
56
- gteq_datetime: "Większe lub równe"
57
- lteq_datetime: "Mniejsze lub równe"
58
50
  from: "Od"
59
51
  to: "Do"
60
52
  scopes:
@@ -26,14 +26,6 @@ pt-BR:
26
26
  filter: "Filtrar"
27
27
  clear: "Limpar Filtros"
28
28
  predicates:
29
- contains: "Contém"
30
- equals: "Igual A"
31
- starts_with: "Começa com"
32
- ends_with: "Termina com"
33
- greater_than: "Maior Que"
34
- less_than: "Menor Que"
35
- gteq_datetime: "Maior ou igual a"
36
- lteq_datetime: "Menor ou igual a"
37
29
  from: "A partir de"
38
30
  to: "Até"
39
31
  search_status:
@@ -24,13 +24,6 @@
24
24
  buttons:
25
25
  filter: "Filtrar"
26
26
  clear: "Limpar Filtros"
27
- predicates:
28
- contains: "Contém"
29
- equals: "Igual A"
30
- starts_with: "Começa com"
31
- ends_with: "Termina com"
32
- greater_than: "Maior Que"
33
- less_than: "Menor Que"
34
27
  status_tag:
35
28
  "yes": "Sim"
36
29
  "no": "Não"
@@ -24,13 +24,6 @@ ro:
24
24
  buttons:
25
25
  filter: "Cautati"
26
26
  clear: "Stergeti filtrele"
27
- predicates:
28
- contains: "Conține"
29
- equals: "Egal Cu"
30
- starts_with: "începe cu"
31
- ends_with: "se termină cu"
32
- greater_than: "Mai Mare Decat"
33
- less_than: "Mai Mic Decat"
34
27
  status_tag:
35
28
  "yes": "Da"
36
29
  "no": "Nu"
@@ -25,12 +25,6 @@ ru:
25
25
  filter: "Фильтровать"
26
26
  clear: "Очистить"
27
27
  predicates:
28
- contains: "Содержит"
29
- equals: "Равно"
30
- starts_with: "Начинается с"
31
- ends_with: "Заканчивается"
32
- greater_than: "больше"
33
- less_than: "меньше"
34
28
  from: "От"
35
29
  to: "До"
36
30
  search_status:
@@ -47,14 +47,6 @@ sk:
47
47
  filter: "Filtrovať"
48
48
  clear: "Vyčistiť filtre"
49
49
  predicates:
50
- contains: "Obsahuje"
51
- equals: "Je presne"
52
- starts_with: "Začína na"
53
- ends_with: "Končí na"
54
- greater_than: "Väčší ako"
55
- less_than: "Menší ako"
56
- gteq_datetime: "Od"
57
- lteq_datetime: "Do"
58
50
  from: "Od"
59
51
  to: "Do"
60
52
  scopes:
@@ -1,17 +1,34 @@
1
1
  "sv-SE":
2
+ activerecord:
3
+ models:
4
+ comment:
5
+ one: "Kommentar"
6
+ other: "Kommentarer"
7
+ active_admin/comment:
8
+ one: "Kommentar"
9
+ other: "Kommentarer"
10
+ attributes:
11
+ active_admin/comment:
12
+ author_type: "Författartyp"
13
+ body: "Innehåll"
14
+ created_at: "Skapad"
15
+ namespace: "Namnrymd"
16
+ resource_type: "Resurstyp"
17
+ updated_at: "Aktualiserad"
2
18
  active_admin:
3
19
  dashboard: Skrivbord
4
20
  dashboard_welcome:
5
21
  welcome: "Välkommen till Active Admin. Detta är ditt standardskrivbord."
6
- call_to_action: "För att lägga till sektioner, gör en checkout på 'app/admin/dashboard.rb'"
22
+ call_to_action: "För att lägga till sektioner, till 'app/admin/dashboard.rb'"
7
23
  view: "Visa"
8
24
  edit: "Redigera"
9
25
  delete: "Ta bort"
10
- delete_confirmation: "Är du säker att du vill ta bort denna?"
26
+ delete_confirmation: "Är du säker att du vill ta bort detta?"
27
+ create_another: "Skapa en till %{model}"
11
28
  new_model: "Ny %{model}"
12
29
  edit_model: "Redigera %{model}"
13
30
  delete_model: "Ta bort %{model}"
14
- details: "Detaljvy för %{model}"
31
+ details: "%{model}-detaljer"
15
32
  cancel: "Avbryt"
16
33
  empty: "Tom"
17
34
  previous: "Föregående"
@@ -20,82 +37,84 @@
20
37
  has_many_new: "Skapa en ny %{model}"
21
38
  has_many_delete: "Ta bort"
22
39
  has_many_remove: "Ta bort"
40
+ move: "Flytta"
23
41
  filters:
24
42
  buttons:
25
- filter: "Filter"
43
+ filter: "Filtrera"
26
44
  clear: "Rensa filter"
27
45
  predicates:
28
- contains: "Innehåller"
29
- equals: "Lika med"
30
- starts_with: "Börjar med"
31
- ends_with: "Slutar med"
32
- greater_than: "Större än"
33
- less_than: "Mindre än"
34
46
  from: "Från"
35
47
  to: "Till"
48
+ scopes:
49
+ all: "Alla"
36
50
  search_status:
37
- headline: "Sök status:"
38
- current_scope: "Scope:"
39
- current_filters: "Nuvarande filter:"
51
+ headline: "Sökstatus:"
52
+ current_scope: "Omfattning:"
53
+ current_filters: "Aktiva filter:"
40
54
  no_current_filters: "Inga"
41
55
  status_tag:
42
56
  "yes": "Ja"
43
57
  "no": "Nej"
44
58
  "unset": "Nej"
45
- main_content: "Implementera %{model}#main_content för att kunna visa något."
59
+ main_content: "Implementera %{model}#main_content för att visa innehåll."
46
60
  logout: "Logga ut"
47
61
  powered_by: "Powered by %{active_admin} %{version}"
48
62
  sidebars:
49
63
  filters: "Filter"
50
- search_status: "Sök status"
64
+ search_status: "Sökstatus"
51
65
  pagination:
52
- empty: "Ingen %{model} funnen"
53
- one: "Visar <b>1</b> utav %{model}"
54
- one_page: "Visar <b>alla %{n}</b> utav %{model}"
66
+ empty: "Ingen %{model} hittades"
67
+ one: "Visar <b>1</b> %{model}"
68
+ one_page: "Visar <b>alla %{n}</b> %{model}"
55
69
  multiple: "Visar %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b> av <b>%{total}</b> totalt"
56
70
  multiple_without_total: "Visar %{model} <b>%{from}&nbsp;-&nbsp;%{to}</b>"
71
+ per_page: "Per sida: "
57
72
  entry:
58
73
  one: "inlägg"
59
74
  other: "inlägg"
60
- any: "Någon"
75
+ any: "Alla"
61
76
  blank_slate:
62
- content: "Finns inga %{resource_name} än."
77
+ content: "Det finns inga %{resource_name} än."
63
78
  link: "Skapa en"
64
79
  dropdown_actions:
65
- button_label: "Behandling"
80
+ button_label: "Åtgärder"
66
81
  batch_actions:
67
- button_label: "Batch behandling"
82
+ button_label: "Batch-åtgärder"
68
83
  default_confirmation: "Är du säker på att du vill göra detta?"
69
84
  delete_confirmation: "Är du säker på att du vill radera dessa %{plural_model}?"
70
85
  succesfully_destroyed:
71
86
  one: "Lyckades radera 1 %{model}"
72
87
  other: "Lyckades radera %{count} %{plural_model}"
73
- selection_toggle_explanation: "(Toggle Selection)"
74
- action_label: "%{title} Markerad"
88
+ selection_toggle_explanation: "(Byt markering)"
89
+ action_label: "%{title} markerad"
75
90
  labels:
76
91
  destroy: "Radera"
77
92
  comments:
78
93
  created_at: "Skapad"
79
- resource_type: "Resurs typ"
80
- author_type: "Författar typ"
94
+ resource_type: "Resurstyp"
95
+ author_type: "Författartyp"
81
96
  body: "Innehåll"
82
97
  author: "Författare"
83
98
  add: "Lägg till kommentar"
99
+ delete: "Radera kommentar"
100
+ delete_confirmation: "Är du säker på att du vill radera dessa kommentarer?"
84
101
  resource: "Resurs"
85
102
  no_comments_yet: "Inga kommentarer än."
86
103
  author_missing: "Anonym"
87
104
  title_content: "Kommentarer (%{count})"
88
105
  errors:
89
- empty_text: "Kommentaren sparades inte, måste innehålla text."
106
+ empty_text: "Kommentaren sparades inte. Textfältet får inte vara tomt."
90
107
  devise:
91
108
  username:
92
109
  title: "Användarnamn"
93
110
  email:
94
- title: "Epost"
111
+ title: "E-post"
95
112
  subdomain:
96
113
  title: "Subdomän"
97
114
  password:
98
115
  title: "Lösenord"
116
+ password_confirmation:
117
+ title: "Bekräfta lösenord"
99
118
  sign_up:
100
119
  title: "Registera"
101
120
  submit: "Registera"
@@ -105,29 +124,29 @@
105
124
  submit: "Inloggning"
106
125
  reset_password:
107
126
  title: "Glömt ditt lösenord?"
108
- submit: "Återställa mitt lösenord"
127
+ submit: "Återställ mitt lösenord"
109
128
  change_password:
110
129
  title: "Ändra ditt lösenord"
111
130
  submit: "Ändra mitt lösenord"
112
131
  unlock:
113
- title: "Skicka upplåsnings instruktioner"
114
- submit: "Skicka upplåsnings instruktioner"
132
+ title: "Skicka upplåsningsinstruktioner"
133
+ submit: "Skicka upplåsningsinstruktioner"
115
134
  resend_confirmation_instructions:
116
- title: "Skicka bekräftnings instruktioner"
117
- submit: "Skicka bekräftnings instruktioner"
135
+ title: "Skicka bekräftelseinstruktioner"
136
+ submit: "Skicka bekräftelseinstruktioner"
118
137
  links:
119
138
  sign_up: "Registera"
120
139
  sign_in: "Logga in"
121
140
  forgot_your_password: "Glömt ditt lösenord?"
122
141
  sign_in_with_omniauth_provider: "Logga in med %{provider}"
123
- resend_unlock_instructions: "Skicka upplåsnings instruktioner"
124
- resend_confirmation_instructions: "Skicka bekräftnings instruktioner"
142
+ resend_unlock_instructions: "Skicka upplåsningsinstruktioner igen"
143
+ resend_confirmation_instructions: "Skicka bekräftningsinstruktioner igen"
125
144
  unsupported_browser:
126
- headline: "Notera att ActiveAdmin inte längre stödjer Internet Explorer version 8 eller mindre."
127
- recommendation: "Vi rekommenderar dig att uppgradera till den senaste versionen av <a href=\"http://windows.microsoft.com/ie\">Internet Explorer</a>, <a href=\"https://chrome.google.com/\">Google Chrome</a>, eller <a href=\"https://mozilla.org/firefox/\">Firefox</a>."
128
- turn_off_compatibility_view: "Om du använder IE 9 eller senare, se till att <a href=\"https://support.microsoft.com/sv-se/help/17471\">stäng av \"Compatibility View\"</a>."
145
+ headline: "Observera att ActiveAdmin inte längre stödjer Internet Explorer version 8 eller lägre."
146
+ recommendation: "Vi rekommenderar att du uppgraderar till den senaste versionen av <a href=\"http://windows.microsoft.com/ie\">Internet Explorer</a>, <a href=\"https://chrome.google.com/\">Google Chrome</a>, eller <a href=\"https://mozilla.org/firefox/\">Firefox</a>."
147
+ turn_off_compatibility_view: "Om du använder IE 9 eller senare, se till att <a href=\"https://support.microsoft.com/sv-se/help/17471\">stänga av \"Compatibility View\"</a>."
129
148
  access_denied:
130
- message: "Du har inte rättighet att utföra denna åtgärd."
149
+ message: "Du har inte behörighet att utföra denna åtgärd."
131
150
  index_list:
132
151
  table: "Tabell"
133
152
  block: "Lista"
@@ -26,17 +26,6 @@ tr:
26
26
  buttons:
27
27
  filter: "Filtrele"
28
28
  clear: "Filtreleri Temizle"
29
- predicates:
30
- contains: "İçerir"
31
- equals: "Eşittir"
32
- starts_with: "İle başlar"
33
- ends_with: "İle biter"
34
- greater_than: "Büyüktür"
35
- less_than: "Küçüktür"
36
- gteq_datetime: "Büyük yada eşit"
37
- lteq_datetime: "Küçük yada eşit"
38
- from: "Başlangıç"
39
- to: "Bitiş"
40
29
  search_status:
41
30
  headline: "Arama"
42
31
  current_scope: "Kapsam:"
@@ -25,12 +25,6 @@ uk:
25
25
  filter: "Фільтрувати"
26
26
  clear: "Очистити"
27
27
  predicates:
28
- contains: "Містить"
29
- equals: "="
30
- starts_with: "Починається з"
31
- ends_with: "Закінчується"
32
- greater_than: "більше"
33
- less_than: "менше"
34
28
  from: "від"
35
29
  to: "до"
36
30
  search_status:
@@ -43,14 +43,6 @@ vi:
43
43
  filter: "Lọc"
44
44
  clear: "Xóa dữ liệu lọc"
45
45
  predicates:
46
- contains: "Có chứa"
47
- equals: "Bằng"
48
- starts_with: "Bắt đầu với"
49
- ends_with: "Kết thúc bởi"
50
- greater_than: "Lớn hơn"
51
- less_than: "Nhỏ hơn"
52
- gteq_datetime: "Lớn hơn hoặc bằng"
53
- lteq_datetime: "Nhỏ hơn hoặc bằng"
54
46
  from: "Từ"
55
47
  to: "Đến"
56
48
  scopes:
@@ -43,14 +43,6 @@
43
43
  filter: "过滤"
44
44
  clear: "清除条件"
45
45
  predicates:
46
- contains: "包含"
47
- equals: "等于"
48
- starts_with: "始于"
49
- ends_with: "止于"
50
- greater_than: "大于"
51
- less_than: "小于"
52
- gteq_datetime: "大于等于"
53
- lteq_datetime: "小于等于"
54
46
  from: "起"
55
47
  to: "止"
56
48
  scopes:
@@ -24,13 +24,6 @@
24
24
  buttons:
25
25
  filter: "篩選"
26
26
  clear: "清除篩選條件"
27
- predicates:
28
- contains: "包含"
29
- equals: "等於"
30
- starts_with: "開頭為"
31
- ends_with: "結尾為"
32
- greater_than: "大於"
33
- less_than: "小於"
34
27
  search_status:
35
28
  headline: "搜尋條件:"
36
29
  current_scope: "子集:"
@@ -51,7 +51,7 @@ module ActiveAdmin
51
51
  csv << bom if bom
52
52
 
53
53
  if column_names
54
- csv << CSV.generate_line(columns.map { |c| encode c.name, options }, **csv_options)
54
+ csv << CSV.generate_line(columns.map { |c| sanitize(encode(c.name, options)) }, **csv_options)
55
55
  end
56
56
 
57
57
  controller.send(:in_paginated_batches) do |resource|
@@ -70,7 +70,7 @@ module ActiveAdmin
70
70
 
71
71
  def build_row(resource, columns, options)
72
72
  columns.map do |column|
73
- encode call_method_or_proc_on(resource, column.data), options
73
+ sanitize(encode(call_method_or_proc_on(resource, column.data), options))
74
74
  end
75
75
  end
76
76
 
@@ -86,6 +86,10 @@ module ActiveAdmin
86
86
  end
87
87
  end
88
88
 
89
+ def sanitize(content)
90
+ Sanitizer.sanitize(content)
91
+ end
92
+
89
93
  def method_missing(method, *args, &block)
90
94
  if @view_context.respond_to? method
91
95
  @view_context.public_send method, *args, &block
@@ -120,4 +124,21 @@ module ActiveAdmin
120
124
  @column_transitive_options ||= @options.slice(*COLUMN_TRANSITIVE_OPTIONS)
121
125
  end
122
126
  end
127
+
128
+ # Prevents CSV Injection according to https://owasp.org/www-community/attacks/CSV_Injection
129
+ module Sanitizer
130
+ extend self
131
+
132
+ ATTACK_CHARACTERS = ["=", "+", "-", "@", "\t", "\r"].freeze
133
+
134
+ def sanitize(value)
135
+ return "'#{value}" if require_sanitization?(value)
136
+
137
+ value
138
+ end
139
+
140
+ def require_sanitization?(value)
141
+ value.is_a?(String) && value.starts_with?(*ATTACK_CHARACTERS)
142
+ end
143
+ end
123
144
  end