mumuki-laboratory 8.2.0 → 8.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) 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/codemirror.js +1 -1
  6. data/app/assets/javascripts/mumuki_laboratory/application/i18n.js +73 -0
  7. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +22 -1
  8. data/app/assets/javascripts/mumuki_laboratory/application/kindergarten.js +6 -1
  9. data/app/assets/javascripts/mumuki_laboratory/application/primary.js +5 -3
  10. data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +28 -1
  11. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +72 -48
  12. data/app/assets/stylesheets/mumuki_laboratory/application.scss +1 -0
  13. data/app/assets/stylesheets/mumuki_laboratory/application/_codemirror-themes.scss +1 -0
  14. data/app/assets/stylesheets/mumuki_laboratory/application/codemirror-themes/_mu-light.scss +3 -0
  15. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +31 -8
  16. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +2 -3
  17. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +1 -0
  18. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss +4 -0
  19. data/app/controllers/application_controller.rb +1 -1
  20. data/app/controllers/chapters_controller.rb +9 -5
  21. data/app/controllers/exam_authorization_requests_controller.rb +26 -0
  22. data/app/controllers/exam_registrations_controller.rb +6 -0
  23. data/app/controllers/guide_container_controller.rb +2 -7
  24. data/app/helpers/application_helper.rb +4 -0
  25. data/app/helpers/contextualization_result_helper.rb +0 -8
  26. data/app/helpers/discussions_helper.rb +8 -0
  27. data/app/helpers/icons_helper.rb +3 -11
  28. data/app/helpers/menu_bar_helper.rb +6 -2
  29. data/app/helpers/overlapped_buttons_helper.rb +10 -6
  30. data/app/helpers/progress_bar_helper.rb +2 -2
  31. data/app/views/book_discussions/index.html.erb +3 -1
  32. data/app/views/chapters/show.html.erb +21 -9
  33. data/app/views/complements/show.html.erb +1 -1
  34. data/app/views/discussions/_message.html.erb +7 -7
  35. data/app/views/discussions/index.html.erb +11 -4
  36. data/app/views/exam_authorization_requests/show.html.erb +17 -0
  37. data/app/views/exam_registrations/show.html.erb +37 -0
  38. data/app/views/exams/show.html.erb +1 -1
  39. data/app/views/exercises/show.html.erb +2 -2
  40. data/app/views/layouts/_discussions.html.erb +0 -4
  41. data/app/views/layouts/_guide.html.erb +4 -33
  42. data/app/views/layouts/_guide_container.html.erb +28 -0
  43. data/app/views/layouts/_guide_title_icons.html.erb +9 -0
  44. data/app/views/layouts/_progress_bar.html.erb +9 -7
  45. data/app/views/layouts/_progress_listing.html.erb +5 -5
  46. data/app/views/layouts/_social_media.html.erb +2 -2
  47. data/app/views/layouts/application.html.erb +4 -7
  48. data/app/views/layouts/exercise_inputs/layouts/_input_kindergarten.html.erb +1 -1
  49. data/app/views/layouts/modals/_kindergarten_results_aborted.html.erb +1 -1
  50. data/app/views/lessons/show.html.erb +1 -1
  51. data/app/views/notifications/_discussion.html.erb +1 -0
  52. data/app/views/notifications/_dropdown.html.erb +13 -0
  53. data/app/views/notifications/_exam_authorization_request.html.erb +1 -0
  54. data/app/views/notifications/_exam_registration.html.erb +1 -0
  55. data/app/views/notifications/_message.html.erb +1 -0
  56. data/app/views/users/_term.html.erb +1 -1
  57. data/config/routes.rb +3 -0
  58. data/lib/mumuki/laboratory/controllers/notifications.rb +3 -22
  59. data/lib/mumuki/laboratory/controllers/results_rendering.rb +2 -1
  60. data/lib/mumuki/laboratory/locales/en.yml +31 -22
  61. data/lib/mumuki/laboratory/locales/es-CL.yml +23 -9
  62. data/lib/mumuki/laboratory/locales/es.yml +30 -22
  63. data/lib/mumuki/laboratory/locales/pt.yml +25 -16
  64. data/lib/mumuki/laboratory/version.rb +1 -1
  65. data/spec/controllers/exam_authorization_requests_controller_spec.rb +40 -0
  66. data/spec/controllers/exam_registrations_controller_spec.rb +19 -0
  67. data/spec/controllers/exercise_solutions_controller_spec.rb +3 -2
  68. data/spec/dummy/db/schema.rb +50 -1
  69. data/spec/dummy/public/character/animations.json +1 -0
  70. data/{public → spec/dummy/public}/character/kibi/context.svg +0 -0
  71. data/{public → spec/dummy/public}/character/kibi/failure.svg +0 -0
  72. data/{public → spec/dummy/public}/character/kibi/jump.svg +0 -0
  73. data/spec/dummy/public/character/kibi/passed_with_warnings.svg +4 -0
  74. data/{public → spec/dummy/public}/character/kibi/success2_l.svg +0 -0
  75. data/{public → spec/dummy/public}/character/kibi/success_l.svg +0 -0
  76. data/{public → spec/dummy/public}/character/magnifying_glass/apparition.svg +0 -0
  77. data/{public → spec/dummy/public}/character/magnifying_glass/loop.svg +0 -0
  78. data/spec/features/chapters_flow_spec.rb +112 -0
  79. data/spec/features/login_flow_spec.rb +1 -1
  80. data/spec/features/notifications_flow_spec.rb +46 -0
  81. data/spec/features/topic_flow_spec.rb +0 -1
  82. data/spec/javascripts/bridge-spec.js +2 -2
  83. data/spec/javascripts/csrf-token-spec.js +2 -2
  84. data/spec/javascripts/editors-spec.js +7 -9
  85. data/spec/javascripts/elipsis-spec.js +4 -4
  86. data/spec/javascripts/events-spec.js +7 -7
  87. data/spec/javascripts/exercise-spec.js +7 -8
  88. data/spec/javascripts/global-spec.js +3 -3
  89. data/spec/javascripts/i18n-spec.js +82 -0
  90. data/spec/javascripts/kids-button-spec.js +34 -0
  91. data/spec/javascripts/results-renderers-spec.js +5 -5
  92. data/spec/javascripts/speech-bubble-renderer-spec.js +2 -3
  93. data/spec/javascripts/submissions-store-spec.js +14 -14
  94. data/spec/javascripts/sync-mode-spec.js +3 -3
  95. data/spec/javascripts/timeout-spec.js +2 -2
  96. data/spec/javascripts/timer-spec.js +2 -2
  97. metadata +125 -92
  98. data/spec/features/chapter_spec.rb +0 -70
@@ -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
 
@@ -0,0 +1,17 @@
1
+ <%= content_for :breadcrumbs do %>
2
+ <%= breadcrumbs @authorization_request %>
3
+ <% end %>
4
+
5
+ <div class="row">
6
+ <div class="mu-inline-block-left">
7
+ <h1>
8
+ <%= t :exam_registration_to, description: @authorization_request.exam_registration.description %>
9
+ </h1>
10
+ </div>
11
+ </div>
12
+
13
+ <% if @authorization_request.approved? %>
14
+ <%= t :exam_authorization_request_approved_html, date: l(@authorization_request.exam.start_time, format: :long) %>
15
+ <% else %>
16
+ <%= t :exam_authorization_request_rejected %>
17
+ <% end %>
@@ -0,0 +1,37 @@
1
+ <%= content_for :breadcrumbs do %>
2
+ <%= breadcrumbs @registration %>
3
+ <% end %>
4
+
5
+ <div class="row">
6
+ <div class="mu-inline-block-left">
7
+ <h1>
8
+ <%= t :exam_registration_to, description: @registration.description %>
9
+ </h1>
10
+ </div>
11
+ </div>
12
+
13
+ <div class="row">
14
+ <div class="mu-inline-block-left">
15
+ <div class="bs-callout bs-callout-info">
16
+ <h4 class="text-info">
17
+ <strong><%= fa_icon :info_circle %> <%= t :important_info %></strong>
18
+ </h4>
19
+ <p>
20
+ <%= t :exam_registration_explanation_html, date: l(@registration.end_time, format: :long) %>
21
+ </p>
22
+ </div>
23
+ <%= form_for @authorization_request do |f| %>
24
+ <%= f.hidden_field :exam_registration_id, value: @registration.id %>
25
+ <div class="form-group">
26
+ <%= f.label :exam_id, t(:exam_registration_choose_exam) %>
27
+ <% @registration.exams.each do |exam| %>
28
+ <div class="field radio complementary complementary-radio">
29
+ <%= f.radio_button(:exam_id, exam.id, id: exam.id, required: true, checked: @authorization_request.exam_id == exam.id) %>
30
+ <%= label_tag exam.id, l(exam.start_time, format: :long) %>
31
+ </div>
32
+ <% end %>
33
+ </div>
34
+ <button class="btn btn-success"> <%= t :save %> </button>
35
+ <% end %>
36
+ </div>
37
+ </div>
@@ -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)} %>
@@ -65,6 +65,6 @@
65
65
  <%= render partial: 'layouts/modals/level_up' %>
66
66
  <% end %>
67
67
 
68
- <%= render partial: 'layouts/modals/guide_corollary', locals: {guide: @guide} %>
68
+ <%= render partial: 'layouts/modals/guide_corollary', locals: {guide: @guide} if @stats.almost_done? %>
69
69
  <%= render partial: 'layouts/modals/new_message', locals: {exercise: @exercise} if should_render_message_input?(@exercise) %>
70
70
  <% end if 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,48 +1,19 @@
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
- <% if subject.timed? && subject.started?(current_user) && !current_user.teacher? %>
5
+ <% if subject.timed? && @stats.started? && !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 %>
42
- <%= restart_guide_link(@guide) if current_user && @guide.started?(current_user) && @guide.resettable? %>
13
+ <%= restart_guide_link(@guide) if current_user && @stats.started? && @guide.resettable? %>
43
14
  </h3>
44
15
 
45
- <%= render partial: 'layouts/progress_listing', locals: {exercises: @guide.exercises} %>
16
+ <%= render partial: 'layouts/progress_listing', locals: { guide: @guide } %>
46
17
 
47
18
  <% if @stats&.done? %>
48
19
  <div class="text-box">
@@ -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,12 +1,14 @@
1
1
  <div class="progress-list-flex">
2
- <% guide.exercises.each do |e| %>
2
+ <% assignments = guide.assignments_for(current_user) %>
3
+ <% assignments.each do |assignment| %>
4
+ <% exercise = assignment.exercise %>
3
5
  <a
4
- <%= turbolinks_enable_for e %>
5
- href="<%= exercise_path(e)%>"
6
- aria-label="<%= e.navigable_name %>"
7
- title="<%= e.navigable_name %>"
8
- data-mu-exercise-id="<%= e.id %>"
9
- class="<%= class_for_progress_list_item(e, e == actual)%>">
6
+ <%= turbolinks_enable_for exercise %>
7
+ href="<%= exercise_path(exercise)%>"
8
+ aria-label="<%= exercise.navigable_name %>"
9
+ title="<%= exercise.navigable_name %>"
10
+ data-mu-exercise-id="<%= exercise.id %>"
11
+ class="<%= class_for_progress_list_item(assignment, exercise == actual)%>">
10
12
  </a>
11
13
  <% end %>
12
14
  </div>
@@ -1,9 +1,9 @@
1
1
  <ul class="progress-listing">
2
- <% exercises.each do |exercise| %>
3
- <% cache [exercise, exercise.status_for(current_user), Organization.current] do %>
4
- <li <%= turbolinks_enable_for(exercise) %>>
5
- <%= exercise_status_icon exercise %>
6
- <%= link_to_path_element(exercise) %>
2
+ <% guide.assignments_for(current_user).each do |assignment| %>
3
+ <% cache [assignment.exercise, assignment.status, Organization.current] do %>
4
+ <li <%= turbolinks_enable_for(assignment.exercise) %>>
5
+ <%= assignment_status_icon assignment %>
6
+ <%= link_to_path_element(assignment.exercise) %>
7
7
  </li>
8
8
  <% end %>
9
9
  <% end %>
@@ -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>
@@ -25,12 +25,7 @@
25
25
  <span class="mu-level-number"></span>
26
26
  </div>
27
27
  <% end %>
28
- <div class="dropdown mu-navbar-element notifications-box <%= 'notifications-box-empty' unless has_notifications? %>">
29
- <a href=<%= "#{user_notifications_path}" %>>
30
- <i class="fas fa-bell fa-fw fa-2x mu-navbar-icon"></i>
31
- <span class="badge badge-notifications"><%= notifications_count %></span>
32
- </a>
33
- </div>
28
+ <%= render partial: 'notifications/dropdown' %>
34
29
  <div class="dropdown mu-navbar-element">
35
30
  <div id="profileDropdown" class="profile-dropdown" data-toggle="dropdown" aria-label="<%= t(:user) %>" role="menu" tabindex="0">
36
31
  <%= profile_picture_for current_user %>
@@ -38,7 +33,9 @@
38
33
  </div>
39
34
  <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="profileDropdown">
40
35
  <%= menu_bar_list_items %>
41
- <li class="divider"></li>
36
+ <% if any_menu_bar_links? %>
37
+ <li class="divider"></li>
38
+ <% end %>
42
39
  <%= logout_link %>
43
40
  </ul>
44
41
  </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 }%>
@@ -0,0 +1 @@
1
+ <%= menu_item :comments, :new_discussion_message, url_for([target.item, target]), { title: target.item.name.truncate_words(3) } %>
@@ -0,0 +1,13 @@
1
+ <div class="dropdown mu-navbar-element notifications-box <%= 'notifications-box-empty' unless has_notifications? %>">
2
+ <div id="notificationsDropdown" class="profile-dropdown" data-toggle="dropdown" aria-label="<%= t(:notifications) %>" role="menu" tabindex="0">
3
+ <i class="fas fa-bell fa-fw fa-2x mu-navbar-icon"></i>
4
+ <span class="badge badge-notifications"><%= notifications_count %></span>
5
+ </div>
6
+ <ul id="notificationsPanel" class="dropdown-menu dropdown-menu-right" aria-labelledby="notificationsDropdown">
7
+ <% notifications.each do |it| %>
8
+ <li>
9
+ <%= notification_preview_for it.target %>
10
+ </li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
@@ -0,0 +1 @@
1
+ <%= menu_item :book_open, :exam_authorization_request_updated, url_for(target), { description: target.exam_registration.description } %>
@@ -0,0 +1 @@
1
+ <%= menu_item :book_open, :exam_registration_open, url_for(target), { description: target.description } %>
@@ -0,0 +1 @@
1
+ <%= menu_item :envelope, :new_message_received, url_for(target.exercise), { sender: target.sender } %>
@@ -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 %>
data/config/routes.rb CHANGED
@@ -22,6 +22,9 @@ Rails.application.routes.draw do
22
22
  end
23
23
  end
24
24
 
25
+ resources :exam_registrations, only: [:show]
26
+ resources :exam_authorization_requests, only: [:show, :create, :update]
27
+
25
28
  resources :book, only: [:show]
26
29
  resources :chapters, only: [:show] do
27
30
  concerns :debatable, debatable_class: 'Chapter'
@@ -1,32 +1,13 @@
1
1
  module Mumuki::Laboratory::Controllers::Notifications
2
-
3
- def user_notifications_path
4
- user_path(anchor: current_notifications_tab)
5
- end
6
-
7
2
  def has_notifications?
8
3
  notifications_count > 0
9
4
  end
10
5
 
11
6
  def notifications_count
12
- messages_count + discussions_count
13
- end
14
-
15
- private
16
-
17
- def current_notifications_tab
18
- has_messages? ? 'messages' : 'discussions'
19
- end
20
-
21
- def has_messages?
22
- messages_count > 0
23
- end
24
-
25
- def messages_count
26
- current_user.try(:unread_messages).try(:count) || 0
7
+ notifications.size
27
8
  end
28
9
 
29
- def discussions_count
30
- current_user.try(:unread_discussions).try(:count) || 0
10
+ def notifications
11
+ current_user.try(:unread_notifications) || []
31
12
  end
32
13
  end
@@ -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)
@@ -11,20 +11,20 @@ en:
11
11
  actual_state: Obtained board
12
12
  age: Age
13
13
  all: All
14
- appendix: "Appendix"
14
+ appendix: Appendix
15
15
  appendix_teaser: Do you want to learn more? <a href="%{link}">Check this chapter's appendix</a>"
16
16
  approved_message: Validated by mentor
17
- are_you_sure: 'Are you sure you want to %{action}?'
17
+ are_you_sure: Are you sure you want to %{action}?
18
18
  ask_a_question: Ask a question!
19
19
  ask_community: Ask community for help
20
20
  ask_redirect: Do you want to go there?
21
21
  ask_the_first_question: Be the first one to ask!
22
22
  attempts_left:
23
- zero: "You've run out of attempts "
23
+ zero: "You've run out of attempts"
24
24
  one: "1 attempt remaining"
25
25
  other: '%{count} attempts remaining'
26
26
  author: Author
27
- authoring: "Authoring"
27
+ authoring: Authoring
28
28
  authoring_note_html: This guide's content was developed by %{authors} under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
29
29
  authoring_note_with_collaborators_html: This guide's content was developed by %{authors} and <a href="%{collaborators}" target="_blank">many others</a>, under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
30
30
  back_to_mumuki: Back to Mumuki!
@@ -51,7 +51,7 @@ en:
51
51
  console: Console
52
52
  contact_administrator: 'If you think this is not supposed to happen, please contact %{link}'
53
53
  content: Content
54
- continue_exercise: "Continue"
54
+ continue_exercise: Continue
55
55
  continue_lesson: Continue this lesson!
56
56
  continue_practicing: Continue practicing!
57
57
  corollary: To think about
@@ -60,11 +60,12 @@ en:
60
60
  created_at: Created at
61
61
  date: Date
62
62
  description: Description
63
- destroy_message: delete the message
64
63
  destroy: Destroy
64
+ destroy_message: delete the message
65
65
  disabled_explanation: You are trying to visit a permamently disabled or deleted resource
66
66
  disabled_organization_explanation: This path has already finished.
67
67
  discussion_description_placeholder: You can add more information regarding your doubt.
68
+ new_discussion_message: New message on %{title}
68
69
  discussion_updated: Discussion updated
69
70
  discussions: Discussions
70
71
  dont_leave_us: Don't leave us! Learning is fun. You just have to keep at it.
@@ -73,19 +74,28 @@ en:
73
74
  edit_profile: Edit profile
74
75
  editor_placeholder: "write your solution here..."
75
76
  email: Email
76
- error_description: This is known as a <span class="error-link">%{error}</span>.
77
- error_401: 401 error
78
- error_403: 403 error
79
- error_404: 404 error
80
- error_410: 410 error
81
- error_500: 500 error
82
- errored: Oops, your solution didn't work
83
77
  error:
84
78
  title:
85
79
  forbidden: You are not allowed to see this content
86
80
  gone: Oops! Content has expired
87
81
  internal_server_error: Oops! Something went wrong
88
82
  not_found: Oops! Page was not found
83
+ error_401: 401 error
84
+ error_403: 403 error
85
+ error_404: 404 error
86
+ error_410: 410 error
87
+ error_500: 500 error
88
+ error_description: This is known as a <span class="error-link">%{error}</span>.
89
+ errored: Oops, your solution didn't work
90
+ exam_authorization_request_approved_html: Your request was approved, don't forget to log in at <strong>%{date}</strong>. Good luck!
91
+ exam_authorization_request_created: Your registration to the exam has been saved!
92
+ exam_authorization_request_rejected: Your request was rejected.
93
+ exam_authorization_request_saved: Your registration to the exam has been updated!
94
+ exam_authorization_request_updated: Your registration to %{description} has been updated
95
+ exam_registration_choose_exam: Choose date and time to attend to the exam
96
+ exam_registration_explanation_html: You have until <strong>%{date}</strong> to register. After that date, your request will be processed and you will receive a confirmation. <br> Don't forget to check the notifications!
97
+ exam_registration_open: Registrations open for %{description}!
98
+ exam_registration_to: Registration to %{description}
89
99
  exams: Exams
90
100
  exercise: Exercise
91
101
  exercises: Exercises
@@ -105,9 +115,10 @@ en:
105
115
  first_name: First Name
106
116
  forbidden_explanation: Please verify you have logged in with the right account
107
117
  format: Format
118
+ forum: Forum
108
119
  forum_terms: Forum rules
109
120
  forum_terms_link: If you have any questions, please check %{terms_link}
110
- fullscreen: "Fullscreen"
121
+ fullscreen: "Fullscreen (F11)"
111
122
  gender: Gender
112
123
  get_messages: "View messages"
113
124
  go_to: 'Go to %{organization}'
@@ -120,6 +131,7 @@ en:
120
131
  hidden_done: 'Good!'
121
132
  history: History
122
133
  home: Home
134
+ important_info: Important information
123
135
  initial_state: Initial board
124
136
  insert_file_name: Insert a file name
125
137
  invitation: Invitation to course
@@ -129,12 +141,6 @@ en:
129
141
  joining_html: '¡Welcome to course <strong>%{course}</strong>!'
130
142
  keep_learning: Keep learning!
131
143
  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
144
  language: Language
139
145
  last_name: Last Name
140
146
  last_seen: "Seen by %{name}"
@@ -160,8 +166,9 @@ en:
160
166
  message: Message
161
167
  messages: Messages
162
168
  messages_error: Previous messages are unavailable. Please try again later.
163
- more_messages: More
169
+ moderation: Mentoring
164
170
  moderator: Mentor
171
+ more_messages: More
165
172
  my_doubts: My doubts
166
173
  my_submissions: My Submissions
167
174
  name: Name
@@ -173,6 +180,7 @@ en:
173
180
  never: never
174
181
  new: New
175
182
  new_message_placeholder: Write a message for your teacher...
183
+ new_message_received: You have a new message from %{sender}
176
184
  next_exercise: Next
177
185
  next_lesson: 'Next Guide: %{name}'
178
186
  no_discussions: No discussions matched your search.
@@ -185,6 +193,7 @@ en:
185
193
  no_useful_result: Didn't find what you were looking for?
186
194
  not_found_explanation: 'You may have mistyped the address or the page may have moved.'
187
195
  not_in_any_organizations: It seems you aren't in any organizations yet!
196
+ notifications: Notifications
188
197
  notify_problem_with_exercise: Report a bug
189
198
  office: Office
190
199
  only_landscape_support: Please, rotate your tablet or cellphone to continue practicing
@@ -261,7 +270,7 @@ en:
261
270
  tell_us_how: Please tell us how this happened!
262
271
  tell_us_if_our_error: If you think this is our fault, %{issues}
263
272
  terms_accepted: The terms and conditions were accepted
264
- terms_and_conditions: Terms and conditions
273
+ terms_and_conditions: Terms and Conditions
265
274
  terms_and_conditions_continue_disclaimer: By continuing you agree to %{terms_link}
266
275
  terms_and_conditions_must_be_accepted: You must accept the terms and conditions
267
276
  test_results: Test results