mumuki-laboratory 8.2.1 → 8.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -8
  3. data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +2 -1
  4. data/app/assets/javascripts/mumuki_laboratory/application/button.js +0 -2
  5. data/app/assets/javascripts/mumuki_laboratory/application/i18n.js +73 -0
  6. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +22 -1
  7. data/app/assets/javascripts/mumuki_laboratory/application/kindergarten.js +6 -1
  8. data/app/assets/javascripts/mumuki_laboratory/application/primary.js +5 -3
  9. data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +28 -1
  10. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +72 -48
  11. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +4 -0
  12. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +1 -0
  13. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss +4 -0
  14. data/app/controllers/chapters_controller.rb +9 -5
  15. data/app/controllers/guide_container_controller.rb +2 -7
  16. data/app/helpers/contextualization_result_helper.rb +0 -8
  17. data/app/helpers/discussions_helper.rb +8 -0
  18. data/app/helpers/menu_bar_helper.rb +4 -0
  19. data/app/views/book_discussions/index.html.erb +3 -1
  20. data/app/views/chapters/show.html.erb +21 -9
  21. data/app/views/complements/show.html.erb +1 -1
  22. data/app/views/discussions/index.html.erb +11 -4
  23. data/app/views/exams/show.html.erb +1 -1
  24. data/app/views/exercises/show.html.erb +1 -1
  25. data/app/views/layouts/_discussions.html.erb +0 -4
  26. data/app/views/layouts/_guide.html.erb +1 -30
  27. data/app/views/layouts/_guide_container.html.erb +28 -0
  28. data/app/views/layouts/_guide_title_icons.html.erb +9 -0
  29. data/app/views/layouts/_social_media.html.erb +2 -2
  30. data/app/views/layouts/application.html.erb +3 -1
  31. data/app/views/layouts/exercise_inputs/layouts/_input_kindergarten.html.erb +1 -1
  32. data/app/views/layouts/modals/_kindergarten_results_aborted.html.erb +1 -1
  33. data/app/views/lessons/show.html.erb +1 -1
  34. data/app/views/users/_term.html.erb +1 -1
  35. data/lib/mumuki/laboratory/controllers/results_rendering.rb +2 -1
  36. data/lib/mumuki/laboratory/locales/en.yml +2 -7
  37. data/lib/mumuki/laboratory/locales/es-CL.yml +2 -2
  38. data/lib/mumuki/laboratory/locales/es.yml +4 -9
  39. data/lib/mumuki/laboratory/locales/pt.yml +2 -7
  40. data/lib/mumuki/laboratory/version.rb +1 -1
  41. data/spec/controllers/exercise_solutions_controller_spec.rb +3 -2
  42. data/spec/dummy/db/schema.rb +49 -1
  43. data/spec/dummy/public/character/animations.json +1 -0
  44. data/{public → spec/dummy/public}/character/kibi/context.svg +0 -0
  45. data/{public → spec/dummy/public}/character/kibi/failure.svg +0 -0
  46. data/{public → spec/dummy/public}/character/kibi/jump.svg +0 -0
  47. data/spec/dummy/public/character/kibi/passed_with_warnings.svg +4 -0
  48. data/{public → spec/dummy/public}/character/kibi/success2_l.svg +0 -0
  49. data/{public → spec/dummy/public}/character/kibi/success_l.svg +0 -0
  50. data/{public → spec/dummy/public}/character/magnifying_glass/apparition.svg +0 -0
  51. data/{public → spec/dummy/public}/character/magnifying_glass/loop.svg +0 -0
  52. data/spec/features/chapters_flow_spec.rb +112 -0
  53. data/spec/features/login_flow_spec.rb +1 -1
  54. data/spec/features/topic_flow_spec.rb +0 -1
  55. data/spec/javascripts/i18n-spec.js +79 -0
  56. data/spec/javascripts/kids-button-spec.js +36 -0
  57. metadata +29 -13
  58. data/spec/features/chapter_spec.rb +0 -70
@@ -10,6 +10,10 @@ $kids-speech-border: 1px solid $kids-speech-border-color;
10
10
 
11
11
  $kids-speech-tabs-width: 40px;
12
12
 
13
+ .mu-kids-exercise-workspace.mu-submitless-exercise .mu-kids-submit-button {
14
+ display: none;
15
+ }
16
+
13
17
  .mu-kids-exercise {
14
18
  height: $kids-height;
15
19
  min-height: $kids-height;
@@ -131,6 +131,7 @@ $capital-animation-width: 135px;
131
131
  'success': $mu-color-success,
132
132
  'warning': $mu-color-warning,
133
133
  'passed': $mu-color-success,
134
+ 'passed_with_warnings': $mu-color-warning,
134
135
  'passed-with-warnings': $mu-color-warning,
135
136
  'failed': $mu-color-danger,
136
137
  'errored': $mu-color-broken,
@@ -15,11 +15,15 @@
15
15
  }
16
16
  .terms-card-header {
17
17
  cursor: pointer;
18
+ outline: 0;
18
19
  font-weight: bold;
19
20
  padding: .75rem 1.25rem;
20
21
  margin-bottom: 0;
21
22
  background-color: rgba(0,0,0,.03);
22
23
  border-bottom: 1px solid rgba(0,0,0,.125);
24
+ &::-webkit-details-marker {
25
+ display:none;
26
+ }
23
27
  }
24
28
  &:first-child .terms-card-header{
25
29
  border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0;
@@ -1,13 +1,17 @@
1
1
  require 'addressable/uri'
2
2
 
3
- class ChaptersController < ApplicationController
4
- include Mumuki::Laboratory::Controllers::Content
3
+ # It acts as a guide container in monolesson contexts
4
+ class ChaptersController < GuideContainerController
5
5
  include Mumuki::Laboratory::Controllers::ImmersiveNavigation
6
6
 
7
- def show
8
- end
9
-
10
7
  def subject
11
8
  @chapter ||= Chapter.find_by(id: params[:id])
12
9
  end
10
+
11
+ private
12
+
13
+ def set_guide
14
+ @monolesson = subject.monolesson
15
+ @guide = @monolesson&.guide
16
+ end
13
17
  end
@@ -4,18 +4,13 @@ class GuideContainerController < ApplicationController
4
4
  before_action :set_guide
5
5
 
6
6
  def show
7
- if current_user?
8
- @stats = subject.stats_for(current_user)
9
- @next_exercise = subject.next_exercise(current_user)
10
- else
11
- @next_exercise = subject.first_exercise
12
- end
7
+ @stats = subject.stats_for(current_user)
8
+ @next_exercise = subject.next_exercise(current_user)
13
9
  end
14
10
 
15
11
  private
16
12
 
17
13
  def set_guide
18
- raise Mumuki::Domain::NotFoundError if subject.nil?
19
14
  @guide = subject.guide
20
15
  end
21
16
  end
@@ -16,14 +16,6 @@ module ContextualizationResultHelper
16
16
  :hidden_done
17
17
  elsif contextualization.exercise.choice?
18
18
  contextualization.solved? ? :correct_answer : :wrong_answer
19
- else
20
- contextualization_status_translation_key contextualization
21
- end
22
- end
23
-
24
- def contextualization_status_translation_key(contextualization)
25
- if contextualization.exercise.input_kindergarten?
26
- "kindergarten_#{contextualization.submission_status}"
27
19
  else
28
20
  contextualization.submission_status
29
21
  end
@@ -52,6 +52,14 @@ module DiscussionsHelper
52
52
  profile_picture_for(user, class: image_class)
53
53
  end
54
54
 
55
+ def forum_terms_link
56
+ %Q{
57
+ <span>
58
+ #{ t(:forum_terms_link, terms_link: link_to_forum_terms).html_safe }
59
+ </span>
60
+ }.html_safe
61
+ end
62
+
55
63
  def discussions_link_with_teaser(item)
56
64
  %Q{
57
65
  <div>
@@ -42,4 +42,8 @@ module MenuBarHelper
42
42
  def menu_item(icon, name, url)
43
43
  link_to fixed_fa_icon(icon, text: t(name)), url, role: 'menuitem', tabindex: '-1'
44
44
  end
45
+
46
+ def any_menu_bar_links?
47
+ menu_bar_links.any?
48
+ end
45
49
  end
@@ -10,7 +10,7 @@
10
10
 
11
11
  <div class="row">
12
12
  <div class="mu-inline-block-left">
13
- <h1><%= @debatable.name %></h1>
13
+ <h1><%= t :forum %></h1>
14
14
  </div>
15
15
  </div>
16
16
 
@@ -21,3 +21,5 @@
21
21
  <%= render partial: 'layouts/discussions' %>
22
22
  <% end %>
23
23
  </div>
24
+
25
+ <%= forum_terms_link %>
@@ -3,9 +3,14 @@
3
3
  <% end %>
4
4
 
5
5
  <div class="chapter-description">
6
- <h1>
7
- <span class="hidden-xs"><%= t(:chapter_number, number: @chapter.number) %>:&nbsp;</span>
8
- <span><%= @chapter.name %></span>
6
+ <h1 class="pull-left">
7
+ <span class="hidden-xs pull-left"><%= t(:chapter_number, number: @chapter.number) %>:&nbsp;</span>
8
+ <span class="pull-left"><%= @chapter.name %></span>
9
+ <% if @chapter.monolesson? %>
10
+ <div class="mu-monolesson pull-left">
11
+ <%= render partial: 'layouts/guide_title_icons' %>
12
+ </div>
13
+ <% end %>
9
14
  </h1>
10
15
 
11
16
  <%= @chapter.description_html %>
@@ -13,14 +18,21 @@
13
18
  </div>
14
19
 
15
20
  <% if @chapter.lessons.present? %>
16
- <div>
17
- <h3><%= t(:lessons) %></h3>
21
+ <% if @chapter.monolesson? %>
22
+ <div class="mu-monolesson">
23
+ <%= render partial: 'layouts/guide', locals: { subject: @monolesson } %>
24
+ </div>
25
+ <% else %>
26
+ <div>
27
+ <h3><%= t(:lessons) %></h3>
18
28
 
19
- <% @chapter.lessons.each do |lesson| %>
20
- <h4><%= lesson.number %>. <%= link_to_path_element lesson, mode: :plain %></h4>
21
- <%= render partial: 'layouts/progress_listing', locals: {exercises: lesson.exercises} %>
29
+ <% @chapter.lessons.each do |lesson| %>
30
+ <h4><%= lesson.number %>. <%= link_to_path_element lesson, mode: :plain %></h4>
31
+ <%= render partial: 'layouts/progress_listing', locals: { exercises: lesson.exercises } %>
32
+ <% end %>
33
+ </div>
22
34
  <% end %>
23
- </div>
35
+
24
36
  <% end %>
25
37
 
26
38
  <% if @chapter.appendix.present? %>
@@ -1 +1 @@
1
- <%= render partial: "layouts/guide", locals: { subject: @complement }%>
1
+ <%= render partial: "layouts/guide_container", locals: { subject: @complement }%>
@@ -2,17 +2,22 @@
2
2
  <%= breadcrumbs(@debatable, t(:discussions)) %>
3
3
  <% end %>
4
4
 
5
+ <div class="row">
6
+ <div class="mu-inline-block-left">
7
+ <h1><%= t :forum %></h1>
8
+ </div>
9
+ </div>
5
10
  <div class="row">
6
11
  <% if @debatable.respond_to? :language %>
7
12
  <div class="mu-inline-block-right hidden-xs">
8
- <h1><%= language_icon @debatable.language %></h1>
13
+ <h3><%= language_icon @debatable.language %></h3>
9
14
  </div>
10
15
  <% end %>
11
16
  <div class="mu-inline-block-left">
12
- <h1>
17
+ <h3>
13
18
  <span class="hidden-xs"><%= t("#{@debatable_class.downcase}_number", number: @debatable.number) %>:&nbsp;</span>
14
19
  <span><%= @debatable.name %></span>
15
- </h1>
20
+ </h3>
16
21
  </div>
17
22
  </div>
18
23
 
@@ -23,7 +28,9 @@
23
28
  <%= new_discussion_link(:no_useful_result, :ask_a_question) %>
24
29
  <% end %>
25
30
 
26
- <%= content_for :no_container do %>
31
+ <%= content_for :no_container do %>
27
32
  <% end if current_user? %>
28
33
 
34
+ <%= forum_terms_link %>
35
+
29
36
 
@@ -1 +1 @@
1
- <%= render partial: "layouts/guide", locals: { subject: @exam }%>
1
+ <%= render partial: "layouts/guide_container", locals: { subject: @exam }%>
@@ -6,7 +6,7 @@
6
6
 
7
7
  <%= render partial: 'layouts/authoring', locals: {guide: @guide} %>
8
8
 
9
- <% @stats = @exercise.guide.stats_for(current_user) if current_user && @exercise.guide %>
9
+ <% @stats = @exercise.stats_for(current_user) %>
10
10
 
11
11
  <% if @exercise.navigable_parent.timed? && !current_user.teacher? %>
12
12
  <%= render partial: 'layouts/timer', locals: {end_time: @exercise.navigable_parent.real_end_time(current_user)} %>
@@ -84,7 +84,3 @@
84
84
 
85
85
  <% end %>
86
86
  </div>
87
-
88
- <span>
89
- <%= t(:forum_terms_link, terms_link: link_to_forum_terms).html_safe %>
90
- </span>
@@ -1,41 +1,12 @@
1
1
  <%= render_runner_assets @guide.language, :layout %>
2
2
 
3
- <%= content_for :breadcrumbs do %>
4
- <%= breadcrumbs subject %>
5
- <% end %>
6
-
7
3
  <%= render partial: 'layouts/authoring', locals: {guide: @guide} %>
8
4
 
9
5
  <% if subject.timed? && subject.started?(current_user) && !current_user.teacher? %>
10
6
  <%= render partial: 'layouts/timer', locals: {end_time: subject.real_end_time(current_user)} %>
11
7
  <% end %>
12
8
 
13
- <div class="row">
14
- <div class="mu-inline-block-right">
15
- <h1><%= language_icon @guide.language %></h1>
16
- </div>
17
- <div class="mu-inline-block-left guide-header">
18
- <h1 class="pull-left">
19
- <span class="pull-left">
20
- <%= subject.name %>
21
- </span>
22
- <% if current_user? && should_display_medal?(@guide, Organization.current) %>
23
- <div class="pull-left">
24
- <%= content_medal_for(@guide, current_user) %>
25
- </div>
26
- <% end %>
27
- <%= teacher_info_button @guide%>
28
- <%= link_to_bibliotheca_guide @guide %>
29
- </h1>
30
- </div>
31
- </div>
32
- <div class="row">
33
- <div class="col-md-12">
34
- <div class="text-box">
35
- <%= @guide.description_html %>
36
- </div>
37
- </div>
38
- </div>
9
+ <%= yield if block_given? %>
39
10
 
40
11
  <h3>
41
12
  <%= t :exercises %>
@@ -0,0 +1,28 @@
1
+ <%= content_for :breadcrumbs do %>
2
+ <%= breadcrumbs subject %>
3
+ <% end %>
4
+
5
+ <%= render layout: 'layouts/guide', locals: { subject: subject } do %>
6
+
7
+ <div class="row">
8
+ <div class="mu-inline-block-right">
9
+ <h1><%= language_icon @guide.language %></h1>
10
+ </div>
11
+ <div class="mu-inline-block-left guide-header">
12
+ <h1 class="pull-left">
13
+ <span class="pull-left">
14
+ <%= subject.name %>
15
+ </span>
16
+ <%= render partial: 'layouts/guide_title_icons' %>
17
+ </h1>
18
+ </div>
19
+ </div>
20
+ <div class="row">
21
+ <div class="col-md-12">
22
+ <div class="text-box">
23
+ <%= @guide.description_html %>
24
+ </div>
25
+ </div>
26
+ </div>
27
+
28
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <div class="guide-title-icons pull-left">
2
+ <% if current_user? && should_display_medal?(@guide, Organization.current) %>
3
+ <div class="pull-left">
4
+ <%= content_medal_for(@guide, current_user) %>
5
+ </div>
6
+ <% end %>
7
+ <%= teacher_info_button @guide %>
8
+ <%= link_to_bibliotheca_guide @guide %>
9
+ </div>
@@ -1,4 +1,4 @@
1
- <a class="fab fa-facebook-f social-icon" aria-label="Facebook" href="https://www.facebook.com/MumukiOrg" target="_blank"></a>
1
+ <a class="fab fa-instagram social-icon" aria-label="Instagram" href="https://www.instagram.com/mumukiorg" target="_blank"></a>
2
2
  <a class="fab fa-twitter social-icon" aria-label="Twitter" href="https://twitter.com/MumukiOrg" target="_blank"></a>
3
+ <a class="fab fa-youtube social-icon" aria-label="Youtube" href="https://www.youtube.com/c/MumukiOrg" target="_blank"></a>
3
4
  <a class="fab fa-github social-icon" aria-label="Github" href="https://github.com/mumuki" target="_blank"></a>
4
- <a class="fab fa-linkedin-in social-icon" aria-label="LinkedIn" href="https://www.linkedin.com/company/mumukiorg" target="_blank"></a>
@@ -38,7 +38,9 @@
38
38
  </div>
39
39
  <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="profileDropdown">
40
40
  <%= menu_bar_list_items %>
41
- <li class="divider"></li>
41
+ <% if any_menu_bar_links? %>
42
+ <li class="divider"></li>
43
+ <% end %>
42
44
  <%= logout_link %>
43
45
  </ul>
44
46
  </div>
@@ -1,6 +1,6 @@
1
1
  <% content_for :no_container do %>
2
2
 
3
- <div <%= turbolinks_enable_for exercise %>>
3
+ <div <%= turbolinks_enable_for exercise %> data-i18n-prefix="kindergarten">
4
4
 
5
5
  <div class="mu-kids-landscape-support container-fluid">
6
6
  <img class="mu-kids-character-animation"/>
@@ -8,7 +8,7 @@
8
8
  </button>
9
9
  <div class="modal-header">
10
10
  <h4 class="modal-title text-broken">
11
- <strong><%= t :kindergarten_aborted %></strong>
11
+ <strong><%= t :aborted %></strong>
12
12
  </h4>
13
13
  </div>
14
14
  <div class="modal-body">
@@ -1 +1 @@
1
- <%= render partial: "layouts/guide", locals: { subject: @lesson }%>
1
+ <%= render partial: "layouts/guide_container", locals: { subject: @lesson }%>
@@ -1,7 +1,7 @@
1
1
  <div class="terms-card">
2
2
  <details <%= 'open' unless collapsed %>>
3
3
  <summary class="terms-card-header">
4
- <h4><%= term.header %></h4>
4
+ <h4 class="terms-card-title"><%= term.header %></h4>
5
5
  </summary>
6
6
  <div class="terms-card-body">
7
7
  <%= term.content_html %>
@@ -20,7 +20,8 @@ module Mumuki::Laboratory::Controllers::ResultsRendering
20
20
  .merge(
21
21
  html: render_results(layout, assignment),
22
22
  remaining_attempts_html: remaining_attempts_text(assignment),
23
- current_exp: UserStats.exp_for(assignment.submitter))
23
+ current_exp: UserStats.exp_for(assignment.submitter),
24
+ in_gamified_context: Organization.current.gamification_enabled?)
24
25
  end
25
26
 
26
27
  def merge_kids_specific_renders(assignment, results)
@@ -105,6 +105,7 @@ en:
105
105
  first_name: First Name
106
106
  forbidden_explanation: Please verify you have logged in with the right account
107
107
  format: Format
108
+ forum: Forum
108
109
  forum_terms: Forum rules
109
110
  forum_terms_link: If you have any questions, please check %{terms_link}
110
111
  fullscreen: "Fullscreen"
@@ -129,12 +130,6 @@ en:
129
130
  joining_html: '¡Welcome to course <strong>%{course}</strong>!'
130
131
  keep_learning: Keep learning!
131
132
  kids_default_success: You did it great!
132
- kindergarten_passed: "Your program worked great!"
133
- kindergarten_passed_with_warnings: "Your program worked great!"
134
- kindergarten_pending: "There's an error in your program. Try again!"
135
- kindergarten_failed: "There's an error in your program. Try again!"
136
- kindergarten_errored: "There's an error in your program. Try again!"
137
- kindergarten_aborted: "Ups! Something went wrong"
138
133
  language: Language
139
134
  last_name: Last Name
140
135
  last_seen: "Seen by %{name}"
@@ -261,7 +256,7 @@ en:
261
256
  tell_us_how: Please tell us how this happened!
262
257
  tell_us_if_our_error: If you think this is our fault, %{issues}
263
258
  terms_accepted: The terms and conditions were accepted
264
- terms_and_conditions: Terms and conditions
259
+ terms_and_conditions: Terms and Conditions
265
260
  terms_and_conditions_continue_disclaimer: By continuing you agree to %{terms_link}
266
261
  terms_and_conditions_must_be_accepted: You must accept the terms and conditions
267
262
  test_results: Test results
@@ -103,7 +103,7 @@ es-CL:
103
103
  first_name: Nombre
104
104
  forbidden_explanation: ¿Puede que hayas ingresado con una cuenta incorrecta?
105
105
  format: Dar formato
106
- forum_terms_link: Si tienes alguna duda, accede a las %{terms_link}
106
+ forum_terms_link: No olvides que al participar debes cumplir las %{terms_link}
107
107
  fullscreen: "Pantalla completa"
108
108
  gender: Género
109
109
  get_messages: "Ver mensajes"
@@ -263,7 +263,7 @@ es-CL:
263
263
  teacher_info: Información para docentes
264
264
  tell_us_how: ¡Cuéntanos cómo te pasó esto!
265
265
  tell_us_if_our_error: Si piensas que es un error nuestro, %{issues}
266
- terms_and_conditions: Términos y condiciones
266
+ terms_and_conditions: Términos y Condiciones
267
267
  terms_and_conditions_continue_disclaimer: Al continuar aceptas los %{terms_link}
268
268
  terms_and_conditions_must_be_accepted: Tienes que aceptar los términos y condiciones
269
269
  test_results: Resultados de las pruebas
@@ -111,8 +111,9 @@ es:
111
111
  first_name: Nombre
112
112
  forbidden_explanation: ¿Puede que hayas ingresado con una cuenta incorrecta?
113
113
  format: Dar formato
114
- forum_terms: Reglas del espacio de consultas
115
- forum_terms_link: Si tenés alguna duda, accedé a las %{terms_link}
114
+ forum: Espacio de Consultas
115
+ forum_terms: Reglas del Espacio de Consultas
116
+ forum_terms_link: No olvides que al participar debés cumplir las %{terms_link}
116
117
  fullscreen: "Pantalla completa"
117
118
  gender: Género
118
119
  get_messages: "Ver mensajes"
@@ -138,12 +139,6 @@ es:
138
139
  joining_html: '¡Te damos la bienvenida al curso <strong>%{course}</strong>!'
139
140
  keep_learning: ¡Seguí aprendiendo!
140
141
  kids_default_success: "¡Lo hiciste muy bien!"
141
- kindergarten_passed: "¡Tu programa está muy bien!"
142
- kindergarten_passed_with_warnings: "¡Tu programa está muy bien!"
143
- kindergarten_pending: "Hay un error en tu programa. ¡Intentá de nuevo!"
144
- kindergarten_failed: "Hay un error en tu programa. ¡Intentá de nuevo!"
145
- kindergarten_errored: "Hay un error en tu programa. ¡Intentá de nuevo!"
146
- kindergarten_aborted: "¡Ups! Hubo un problema técnico"
147
142
  language: Lenguaje
148
143
  languages: Lenguajes
149
144
  last_name: Apellido
@@ -284,7 +279,7 @@ es:
284
279
  tell_us_how: ¡Contanos cómo te pasó esto!
285
280
  tell_us_if_our_error: Si pensás que es un error nuestro, %{issues}
286
281
  terms_accepted: Los términos y condiciones fueron aceptados
287
- terms_and_conditions: Términos y condiciones
282
+ terms_and_conditions: Términos y Condiciones
288
283
  terms_and_conditions_continue_disclaimer: Al continuar estás aceptando los %{terms_link}
289
284
  terms_and_conditions_must_be_accepted: Tenés que aceptar los términos y condiciones
290
285
  test_results: Resultados de las pruebas