mumuki-laboratory 9.16.0 → 9.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0973e0c9ab8333b9b2f4207d9cc40e3c88199c67fcee8f35415b802d0494a85a'
4
- data.tar.gz: 7a7c28856ecb1751c25a053fe0db0eaf0607a8c1dbaa22c70071eeb26617d2ba
3
+ metadata.gz: d420aa36a1219b0a8984fa03062704f55b6227b0f8009ec7fa08b8c67d0780d6
4
+ data.tar.gz: 0e0d9d6aab2633b8081464b447a90db3be572ab5ec3f9dad92d77e3824c71ade
5
5
  SHA512:
6
- metadata.gz: 9db401ba5aa815447c273ab82597ee16c98cd0d13ca5f68720f3190114fa69f40f9195ac479d5f4fc234ef3cdfcc7fe7c2e11c8b6d2cd59a9be9194b596d2096
7
- data.tar.gz: b06e42055b04fa8116ce5053e842d63a6c56e8a38c1c38d8b3ed2c23688ae0f0925f8208ece9c765d8987d0f3e6963cb8dcc8faa5ab11dc4e544c95af444d4a3
6
+ metadata.gz: '084ffe85c17ed01338fa6ad45bfb6a24b92ec85c838432626436b216c9486b49babac048883ce1a40dd20336ebdb745bf3182d82c681c2d29b7306f6b9a9e783'
7
+ data.tar.gz: bfb035582b7227797d88fc2f66dd9912d6366f32d5b4428cee0e90a9d2c698f3b2989d2c60cf75d51570e3709f10bafb47fcc32db4cc819fd891c29a0a37167c
@@ -1,12 +1,12 @@
1
1
  mumuki.CsrfToken = (() => {
2
2
  class CsrfToken {
3
- constructor() {
4
- this.value = $('meta[name="csrf-token"]').attr('content');
3
+ get token() {
4
+ return $('meta[name="csrf-token"]').attr('content');
5
5
  }
6
+
6
7
  newRequest(data) {
7
- var self = this;
8
- data.beforeSend = function (xhr) {
9
- xhr.setRequestHeader('X-CSRF-Token', self.value);
8
+ data.beforeSend = (xhr) => {
9
+ xhr.setRequestHeader('X-CSRF-Token', this.token);
10
10
  };
11
11
  return data;
12
12
  }
@@ -1,12 +1,20 @@
1
1
  (() => {
2
+ function shouldSkipChangesCheck() {
3
+ return mumuki.isKidsExercise() || mumuki.exercise.isReadOnly;
4
+ }
5
+
2
6
  function solutionChangedSinceLastSubmission() {
3
7
  return mumuki.exercise.id &&
4
8
  mumuki.SubmissionsStore.getLastSubmissionAndResult(mumuki.exercise.id) &&
5
9
  !mumuki.SubmissionsStore.getSubmissionResultFor(mumuki.exercise.id, mumuki.editors.getSubmission());
6
10
  }
7
11
 
12
+ function shouldWarnOfChanges() {
13
+ return !shouldSkipChangesCheck() && solutionChangedSinceLastSubmission();
14
+ }
15
+
8
16
  window.addEventListener("beforeunload", (event) => {
9
- if (solutionChangedSinceLastSubmission()) {
17
+ if (shouldWarnOfChanges()) {
10
18
  event.returnValue = 'unsaved_progress';
11
19
  } else {
12
20
  delete event['returnValue'];
@@ -14,7 +22,7 @@
14
22
  });
15
23
 
16
24
  window.addEventListener("turbolinks:before-visit", (event) => {
17
- if (solutionChangedSinceLastSubmission() && !confirm(mumuki.I18n.t('unsaved_progress'))) event.preventDefault();
25
+ if (shouldWarnOfChanges() && !confirm(mumuki.I18n.t('unsaved_progress'))) event.preventDefault();
18
26
  });
19
27
  })();
20
28
 
@@ -66,6 +74,13 @@ mumuki.exercise = {
66
74
  return this._current;
67
75
  },
68
76
 
77
+ /**
78
+ * @type {Boolean?}
79
+ */
80
+ get isReadOnly() {
81
+ return $('#mu-exercise-read-only').val() === 'true';
82
+ },
83
+
69
84
  /**
70
85
  * Set global current exercise information
71
86
  */
@@ -0,0 +1,23 @@
1
+ module ExamsHelper
2
+ def exam_information_for(user, exam)
3
+ %Q{
4
+ #{course_information_for(user, exam)}
5
+ #{fa_icon('calendar-alt', class: 'fa-fw',
6
+ text: "<strong>#{t :date_and_time}:</strong> #{local_time_without_time_zone(exam.start_time)} - #{local_time(exam.end_time)}".html_safe)}
7
+ <br>
8
+ #{fa_icon(:stopwatch, class: 'fa-fw',
9
+ text: "<strong>#{t :available_time}:</strong> #{t :time_in_minutes, time: exam.duration}".html_safe)}
10
+ <br>
11
+ }.html_safe
12
+ end
13
+
14
+ private
15
+
16
+ def course_information_for(user, exam)
17
+ if user.teacher_here?
18
+ "#{fa_icon('graduation-cap', class: 'fa-fw',
19
+ text: "<strong>#{t :course}:</strong> #{exam.course.canonical_code}".html_safe)}
20
+ <br>"
21
+ end
22
+ end
23
+ end
@@ -35,10 +35,6 @@ module ExerciseInputHelper
35
35
  should_render_exercise_tabs?(exercise) { exercise.has_messages_for? user }
36
36
  end
37
37
 
38
- def should_render_read_only_exercise_tabs?(discussion)
39
- should_render_exercise_tabs?(discussion.exercise) { discussion.has_submission? }
40
- end
41
-
42
38
  def should_render_message_input?(exercise, organization = Organization.current)
43
39
  exercise.is_a?(Problem) && !exercise.hidden? && organization.raise_hand_enabled?
44
40
  end
@@ -38,12 +38,13 @@ module MenuBarHelper
38
38
  li_tag menu_item('sign-out-alt', :sign_out, logout_path(origin: url_for, organization: Organization.current))
39
39
  end
40
40
 
41
- def menu_item(icon, name, url, css_class = nil, **translation_params)
42
- menu_text_item(icon, t(name, translation_params), url, css_class)
41
+ def menu_item(icon, name, url, css_class = nil, translation_params = {}, options = {})
42
+ menu_text_item(icon, t(name, translation_params), url, css_class, **options)
43
43
  end
44
44
 
45
- def menu_text_item(icon, text, url, css_class = nil)
46
- link_to fixed_fa_icon(icon, text: text), url, role: 'menuitem', tabindex: '-1', class: "dropdown-item #{css_class}"
45
+ def menu_text_item(icon, text, url, css_class = nil, **options)
46
+ link_options = { role: 'menuitem', tabindex: '-1', class: "dropdown-item #{css_class}" }.merge(options)
47
+ link_to fixed_fa_icon(icon, text: text), url, link_options
47
48
  end
48
49
 
49
50
  def any_menu_bar_links?
@@ -4,7 +4,7 @@ module NotificationsHelper
4
4
  end
5
5
 
6
6
  def notification_preview_item(icon, name, url, **translation_params)
7
- menu_item icon, name, url, 'mu-notification-preview', **translation_params
7
+ menu_item icon, name, url, 'mu-notification-preview', translation_params
8
8
  end
9
9
 
10
10
  def notification_text_preview_item(icon, text, url)
@@ -1,5 +1,9 @@
1
1
  module TimeZoneHelper
2
2
  def local_time(time, time_zone = Time.zone.name)
3
- "#{l(time.in_time_zone(time_zone), format: :long)} (#{time_zone})"
3
+ "#{local_time_without_time_zone(time, time_zone)} (#{time_zone})"
4
+ end
5
+
6
+ def local_time_without_time_zone(time, time_zone = Time.zone.name)
7
+ l(time.in_time_zone(time_zone), format: :long)
4
8
  end
5
9
  end
@@ -45,8 +45,10 @@
45
45
  <h2><%= t(:exams) %></h2>
46
46
  <% @exams.each_with_index do |it, index| %>
47
47
  <div class="chapter">
48
- <h3> <%= index + 1 %>. <%= link_to_path_element it, mode: :plain %></h3>
49
-
48
+ <h3><%= link_to_path_element it, mode: :plain %></h3>
49
+ <div class="fs-7">
50
+ <%= exam_information_for(current_user, it) %>
51
+ </div>
50
52
  <div class="text-box">
51
53
  <%= it.guide.description_teaser_html %>
52
54
  </div>
@@ -0,0 +1 @@
1
+ <%= render partial: 'discussions/basic_actions' %>
@@ -0,0 +1,20 @@
1
+ <% if @discussion.can_toggle_responsible?(current_user) %>
2
+ <div class="discussion-responsible me-1">
3
+ <%= btn_toggle responsible_icon, not_responsible_icon, @discussion.any_responsible?, class: 'btn-sm',
4
+ onclick: "mumuki.Forum.discussionResponsible('#{responsible_discussion_url(@discussion)}')" %>
5
+ </div>
6
+ <% end %>
7
+
8
+ <% if @discussion.subscribable? %>
9
+ <div class="discussion-subscription me-1">
10
+ <%= btn_toggle subscription_icon, unsubscription_icon, current_user.subscribed_to?(@discussion), class: 'btn-sm',
11
+ onclick: "mumuki.Forum.discussionSubscription('#{subscription_discussion_url(@discussion)}')" %>
12
+ </div>
13
+ <% end %>
14
+
15
+ <% if @discussion.solved? %>
16
+ <div class="discussion-upvote">
17
+ <%= btn_toggle upvote_icon, undo_upvote_icon, current_user.upvoted?(@discussion), class: 'btn-sm',
18
+ onclick: "mumuki.Forum.discussionUpvote('#{upvote_discussion_url(@discussion)}')" %>
19
+ </div>
20
+ <% end %>
@@ -22,12 +22,18 @@
22
22
  <div class="container-fluid">
23
23
  <div class="row">
24
24
  <div class="discussion-new-message-content">
25
- <%= f.editor :description, '', {id: 'discussion-new-message', class: 'form-control', placeholder: t(:discussion_description_placeholder)} %>
25
+ <%= spell_checked_editor 'discussion[description]',
26
+ { id: 'discussion-new-message', placeholder: t(:discussion_description_placeholder) } %>
26
27
  </div>
27
28
  </div>
28
29
  </div>
29
30
  </div>
30
31
  </div>
32
+ <% if faqs_enabled_here? %>
33
+ <div class="fs-7">
34
+ <%= fa_icon('exclamation-triangle', text: t(:only_forum_questions_on_forum, link: link_to_faqs).html_safe) %>
35
+ </div>
36
+ <% end %>
31
37
  <%= f.submit t(:publish_discussion), class: 'btn btn-complementary w-100 discussion-new-message-button' %>
32
38
  <% end %>
33
39
  <% end %>
@@ -15,24 +15,7 @@
15
15
  <h3 class="flex-grow-1 me-3"><%= t :messages %></h3>
16
16
  <% if current_user && @discussion.persisted? && current_access_mode.show_discussion_element? %>
17
17
  <span class="d-flex">
18
- <% if @discussion.can_toggle_responsible?(current_user) %>
19
- <div class="discussion-responsible me-1">
20
- <%= btn_toggle responsible_icon, not_responsible_icon, @discussion.any_responsible?, class: 'btn-sm',
21
- onclick: "mumuki.Forum.discussionResponsible('#{responsible_discussion_url(@discussion)}')" %>
22
- </div>
23
- <% end %>
24
- <% if @discussion.subscribable? %>
25
- <div class="discussion-subscription me-1">
26
- <%= btn_toggle subscription_icon, unsubscription_icon, current_user.subscribed_to?(@discussion), class: 'btn-sm',
27
- onclick: "mumuki.Forum.discussionSubscription('#{subscription_discussion_url(@discussion)}')" %>
28
- </div>
29
- <% end %>
30
- <% if @discussion.solved? %>
31
- <div class="discussion-upvote">
32
- <%= btn_toggle upvote_icon, undo_upvote_icon, current_user.upvoted?(@discussion), class: 'btn-sm',
33
- onclick: "mumuki.Forum.discussionUpvote('#{upvote_discussion_url(@discussion)}')" %>
34
- </div>
35
- <% end %>
18
+ <%= render partial: 'discussions/actions' %>
36
19
  </span>
37
20
  <% end %>
38
21
  </div>
@@ -45,82 +45,76 @@
45
45
  <div class="accordion-body accordion-collapse collapse show" id="mu-discussion-accordion-body"
46
46
  aria-labelledby="#mu-discussion-accordion-header" data-bs-parent="#mu-discussion-accordion">
47
47
 
48
- <% if should_render_read_only_exercise_tabs?(@discussion) %>
49
- <ul class="nav nav-tabs discussion-tabs" role="tablist">
50
- <li role="presentation">
51
- <a class="editor-tab nav-link active" data-bs-target="#solution" aria-controls="solution" role="tab" data-bs-toggle="tab">
52
- <%= t :solution %>
53
- </a>
54
- </li>
55
- <li role="presentation">
56
- <a class="editor-tab nav-link" data-bs-target="#results" aria-controls="results" role="tab" data-bs-toggle="tab">
57
- <%= t :results %>
58
- </a>
59
- </li>
60
- <li role="presentation">
61
- <a class="editor-tab nav-link" data-bs-target="#content" aria-controls="content" role="tab" data-bs-toggle="tab">
62
- <%= t :description %>
63
- </a>
64
- </li>
48
+ <ul class="nav nav-tabs discussion-tabs" role="tablist">
49
+ <li role="presentation">
50
+ <a class="editor-tab nav-link active" data-bs-target="#solution" aria-controls="solution" role="tab" data-bs-toggle="tab">
51
+ <%= t :solution %>
52
+ </a>
53
+ </li>
54
+ <li role="presentation">
55
+ <a class="editor-tab nav-link" data-bs-target="#results" aria-controls="results" role="tab" data-bs-toggle="tab">
56
+ <%= t :results %>
57
+ </a>
58
+ </li>
59
+ <li role="presentation">
60
+ <a class="editor-tab nav-link" data-bs-target="#content" aria-controls="content" role="tab" data-bs-toggle="tab">
61
+ <%= t :description %>
62
+ </a>
63
+ </li>
65
64
 
66
- <% if exercise.extra_visible? %>
67
- <%= extra_code_tab %>
68
- <% end %>
65
+ <% if exercise.extra_visible? %>
66
+ <%= extra_code_tab %>
67
+ <% end %>
69
68
 
70
- <% if exercise.queriable? %>
71
- <%= console_tab %>
72
- <% end %>
73
- </ul>
69
+ <% if exercise.queriable? %>
70
+ <%= console_tab %>
71
+ <% end %>
72
+ </ul>
74
73
 
75
- <div class="tab-content">
76
- <div role="tabpanel" class="tab-pane mu-input-panel fade show active" id="solution">
77
- <div class="mu-tab-body">
78
- <div class="mu-read-only-editor">
79
- <%= render_exercise_read_only_editor exercise, @discussion.solution %>
80
- </div>
74
+ <div class="tab-content">
75
+ <div role="tabpanel" class="tab-pane mu-input-panel fade show active" id="solution">
76
+ <div class="mu-tab-body">
77
+ <div class="mu-read-only-editor">
78
+ <%= render_exercise_read_only_editor exercise, @discussion.solution %>
81
79
  </div>
82
80
  </div>
81
+ </div>
83
82
 
84
- <div role="tabpanel" class="tab-pane fade" id="results">
85
- <div class="mu-tab-body">
86
- <%= render layout: 'exercise_solutions/contextualization_results_container', locals: { contextualization: @discussion } do %>
87
- <div class="row">
88
- <div class="col-md-12 submission-results">
89
- <%= render partial: 'exercise_solutions/contextualization_results_body',
90
- locals: { contextualization: @discussion, guide_finished_by_solution: false } %>
91
- </div>
83
+ <div role="tabpanel" class="tab-pane fade" id="results">
84
+ <div class="mu-tab-body">
85
+ <%= render layout: 'exercise_solutions/contextualization_results_container', locals: { contextualization: @discussion } do %>
86
+ <div class="row">
87
+ <div class="col-md-12 submission-results">
88
+ <%= render partial: 'exercise_solutions/contextualization_results_body',
89
+ locals: { contextualization: @discussion, guide_finished_by_solution: false } %>
92
90
  </div>
93
- <% end %>
94
- </div>
95
- </div>
96
-
97
- <div role="tabpanel" class="tab-pane fade" id="content">
98
- <div class="mu-tab-body">
99
- <div class="exercise-assignment">
100
- <%= render partial: 'exercises/exercise_assignment', locals: { exercise: exercise } %>
101
91
  </div>
102
- </div>
92
+ <% end %>
103
93
  </div>
94
+ </div>
104
95
 
105
- <div role="tabpanel" class="tab-pane mu-input-panel fade" id="console">
106
- <div class="mu-overlapped-container">
107
- <div class="console">
108
- </div>
109
- <div class="mu-overlapped">
110
- <%= restart_icon %>
111
- </div>
96
+ <div role="tabpanel" class="tab-pane fade" id="content">
97
+ <div class="mu-tab-body">
98
+ <div class="exercise-assignment">
99
+ <%= render partial: 'exercises/exercise_assignment', locals: { exercise: exercise } %>
112
100
  </div>
113
101
  </div>
102
+ </div>
114
103
 
115
- <div role="tabpanel" class="tab-pane mu-input-panel fade mu-elipsis" id="visible-extra">
116
- <%= @discussion.extra_preview_html %>
104
+ <div role="tabpanel" class="tab-pane mu-input-panel fade" id="console">
105
+ <div class="mu-overlapped-container">
106
+ <div class="console">
107
+ </div>
108
+ <div class="mu-overlapped">
109
+ <%= restart_icon %>
110
+ </div>
117
111
  </div>
118
112
  </div>
119
- <% else %>
120
- <div class="exercise-assignment">
121
- <%= render partial: 'exercises/exercise_assignment', locals: { exercise: exercise } %>
113
+
114
+ <div role="tabpanel" class="tab-pane mu-input-panel fade mu-elipsis" id="visible-extra">
115
+ <%= @discussion.extra_preview_html %>
122
116
  </div>
123
- <% end %>
117
+ </div>
124
118
  </div>
125
119
  </div>
126
120
  </div>
@@ -45,6 +45,7 @@
45
45
  <%= hidden_field_tag "mu-exercise-id", @exercise.id %>
46
46
  <%= hidden_field_tag "mu-exercise-layout", @exercise.layout %>
47
47
  <%= hidden_field_tag "mu-exercise-settings", @exercise.settings.to_json %>
48
+ <%= hidden_field_tag "mu-exercise-read-only", current_access_mode.read_only? %>
48
49
 
49
50
  <div class="d-none" id="processing-template">
50
51
  <div class="bs-callout bs-callout-info">
@@ -30,6 +30,7 @@ en:
30
30
  authoring: Authoring
31
31
  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>
32
32
  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>
33
+ available_time: Available time
33
34
  back_to_mumuki: Back to Mumuki!
34
35
  bibliotheca_ui: Bibliotheca
35
36
  birthdate: Birthdate
@@ -67,9 +68,11 @@ en:
67
68
  continue_practicing: Continue practicing!
68
69
  corollary: To think about
69
70
  correct_answer: The answer is correct!
71
+ course: Course
70
72
  create_submission: Submit
71
73
  created_at: Created at
72
74
  date: Date
75
+ date_and_time: Date and time
73
76
  deleted_by: Deleted by %{deleter}
74
77
  deleted_message_warning: If you repeateadly violate these or other rules, you may be prohibited from accessing the forum or you may suffer more severe consequences, such as being expulsed from the course.
75
78
  deletion_motive:
@@ -272,6 +275,7 @@ en:
272
275
  notifications_will_be_here: Notifications will be here
273
276
  notify_problem_with_exercise: Report a bug
274
277
  office: Office
278
+ only_forum_questions_on_forum: Remember that only exercise-related questions are answered on the forum. For any other kind of inquiries, please check the %{link}.
275
279
  only_landscape_support: Please, rotate your tablet or cellphone to continue practicing
276
280
  opened: Open
277
281
  opened_count: '%{count} opened'
@@ -360,6 +364,7 @@ en:
360
364
  terms_and_conditions_continue_disclaimer: By continuing you agree to %{terms_link}
361
365
  terms_and_conditions_must_be_accepted: You must accept the terms and conditions
362
366
  test_results: Test results
367
+ time_in_minutes: "%{time} minutes"
363
368
  time_since: "%{time} ago"
364
369
  time_left: You have
365
370
  title: Title
@@ -29,6 +29,7 @@ es-CL:
29
29
  authoring: Autores
30
30
  authoring_note_html: Esta guía fue desarrollada por %{authors} bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
31
31
  authoring_note_with_collaborators_html: Esta guía fue desarrollada por %{authors} y <a href="%{collaborators}" target="_blank">muchas personas más</a>, bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
32
+ available_time: Tiempo disponible
32
33
  back_to_mumuki: ¡Vuelve a Mumuki!
33
34
  bibliotheca_ui: Biblioteca
34
35
  birthdate: Fecha de nacimiento
@@ -65,11 +66,13 @@ es-CL:
65
66
  continue_lesson: ¡Continúa esta lección!
66
67
  continue_practicing: ¡Sigue aprendiendo!
67
68
  correct_answer: ¡La respuesta es correcta!
69
+ course: Curso
68
70
  create_submission: Enviar
69
71
  created_at: Creado
70
72
  created_exercises: Ejercicios Creados
71
73
  created_guides: Lecciones Creadas
72
74
  date: Fecha
75
+ date_and_time: Fecha y hora
73
76
  deleted_by: Eliminado por %{deleter}
74
77
  deleted_message_warning: Si infringes reiteradamente estas u otras reglas del Espacio de Consultas, se te puede prohibir el acceso al mismo o podrás sufrir consecuencias más severas, como la expulsión del curso.
75
78
  deletion_motive:
@@ -280,6 +283,7 @@ es-CL:
280
283
  notifications_will_be_here: Tus notificaciones aparecerán aquí
281
284
  notify_problem_with_exercise: Reporta un bug
282
285
  office: Secretaría
286
+ only_forum_questions_on_forum: Recuerda que en el espacio de consultas se responden únicamente dudas relacionadas a los ejercicios. Para cualquier otro tipo de consulta, revisa la %{link}.
283
287
  only_landscape_support: Por favor, rota tu tablet o celular para realizar ejercicios
284
288
  opened: Abierta
285
289
  opened_count:
@@ -374,6 +378,7 @@ es-CL:
374
378
  terms_and_conditions_continue_disclaimer: Al continuar aceptas los %{terms_link}
375
379
  terms_and_conditions_must_be_accepted: Tienes que aceptar los términos y condiciones
376
380
  test_results: Resultados de las pruebas
381
+ time_in_minutes: "%{time} minutos"
377
382
  time_since: "hace %{time}"
378
383
  time_left: Te quedan
379
384
  title: Título
@@ -32,6 +32,7 @@ es:
32
32
  authoring: Autores
33
33
  authoring_note_html: Esta guía fue desarrollada por %{authors} bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
34
34
  authoring_note_with_collaborators_html: Esta guía fue desarrollada por %{authors} y <a href="%{collaborators}" target="_blank">muchas personas más</a>, bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
35
+ available_time: Tiempo disponible
35
36
  back_to_mumuki: ¡Volvé a Mumuki!
36
37
  bibliotheca_ui: Biblioteca
37
38
  birthdate: Fecha de nacimiento
@@ -68,6 +69,7 @@ es:
68
69
  continue_lesson: ¡Continuá esta lección!
69
70
  continue_practicing: ¡Seguí aprendiendo!
70
71
  correct_answer: ¡La respuesta es correcta!
72
+ course: Curso
71
73
  create_submission: Enviar
72
74
  created_at: Creado
73
75
  created_at_asc: Antiguas
@@ -75,6 +77,7 @@ es:
75
77
  created_exercises: Ejercicios Creados
76
78
  created_guides: Lecciones Creadas
77
79
  date: Fecha
80
+ date_and_time: Fecha y hora
78
81
  deleted_by: Eliminado por %{deleter}
79
82
  deleted_message_warning: Si infringís reiteradamente estas u otras reglas del Espacio de Consultas, se te puede prohibir el acceso al mismo o podrás sufrir consecuencias más severas, como la expulsión del curso.
80
83
  deletion_motive:
@@ -289,6 +292,7 @@ es:
289
292
  notifications_will_be_here: Tus notificaciones aparecerán aquí
290
293
  notify_problem_with_exercise: Reportá un bug
291
294
  office: Secretaría
295
+ only_forum_questions_on_forum: Recordá que en el espacio de consultas se responden únicamente dudas relacionadas a los ejercicios. Para cualquier otro tipo de consulta, revisá la %{link}.
292
296
  only_landscape_support: Por favor, rotá tu tablet o celular para realizar ejercicios
293
297
  opened: Abierta
294
298
  opened_count:
@@ -388,6 +392,7 @@ es:
388
392
  terms_and_conditions_continue_disclaimer: Al continuar estás aceptando los %{terms_link}
389
393
  terms_and_conditions_must_be_accepted: Tenés que aceptar los términos y condiciones
390
394
  test_results: Resultados de las pruebas
395
+ time_in_minutes: "%{time} minutos"
391
396
  time_since: "hace %{time}"
392
397
  time_left: Te quedan
393
398
  title: Título
@@ -31,6 +31,7 @@ pt:
31
31
  authoring: Autores
32
32
  authoring_note_html: 'Este guia foi desenvolvido por %{authors} nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
33
33
  authoring_note_with_collaborators_html: 'Este guia foi desenvolvido por %{authors} e <a href="%{collaborators}" target="_blank">muitas outras pessoas </a>, nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
34
+ available_time: Tempo disponível
34
35
  back_to_mumuki: Voltei para Mumuki!
35
36
  bibliotheca_ui: Biblioteca
36
37
  birthdate: Fecha de nacimiento
@@ -64,6 +65,7 @@ pt:
64
65
  continue_lesson: Continue esta lição!
65
66
  continue_practicing: Continue aprendendo!
66
67
  correct_answer: A resposta está correta!
68
+ course: Curso
67
69
  create_submission: Enviar
68
70
  created_at: Criado
69
71
  created_at_asc: Antigo
@@ -71,6 +73,7 @@ pt:
71
73
  created_exercises: Exercícios criados
72
74
  created_guides: Lições criadas
73
75
  date: Data
76
+ date_and_time: Data e hora
74
77
  deleted_by: Removido pelo
75
78
  deleted_message_warning: Se você violar repetidamente essas ou outras regras da Área de Consulta, seu acesso a ela pode ser proibido ou você pode sofrer consequências mais graves, como a expulsão do curso.
76
79
  deletion_motive:
@@ -280,6 +283,7 @@ pt:
280
283
  notifications_will_be_here: Suas notificações aparecerão aqui
281
284
  notify_problem_with_exercise: Relatar um erro
282
285
  office: Secretariado
286
+ only_forum_questions_on_forum: Lembre-se que apenas as dúvidas relacionadas aos exercícios são respondidas no espaço de consulta. Para qualquer outro tipo de consulta, reveja a %{link}.
283
287
  only_landscape_support: Por favor, gire seu tablet ou celular para realizar exercícios
284
288
  opened: Aberto
285
289
  opened_count: '%{count} aberto'
@@ -373,6 +377,7 @@ pt:
373
377
  terms_and_conditions_continue_disclaimer: Ao continuar, você concorda %{terms_link}
374
378
  terms_and_conditions_must_be_accepted: Você deve aceitar os Termos e Condições
375
379
  test_results: Resultados do teste
380
+ time_in_minutes: "%{time} minutos"
376
381
  time_since: "há %{time}"
377
382
  time_left: Te deixam
378
383
  title: Título
@@ -1,5 +1,5 @@
1
1
  module Mumuki
2
2
  module Laboratory
3
- VERSION = '9.16.0'
3
+ VERSION = '9.17.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumuki-laboratory
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.16.0
4
+ version: 9.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Bulgarelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-16 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 9.16.0
33
+ version: 9.17.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 9.16.0
40
+ version: 9.17.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mumukit-bridge
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -548,6 +548,7 @@ files:
548
548
  - app/helpers/editor_tabs_helper.rb
549
549
  - app/helpers/email_helper.rb
550
550
  - app/helpers/exam_registration_helper.rb
551
+ - app/helpers/exams_helper.rb
551
552
  - app/helpers/exercise_input_helper.rb
552
553
  - app/helpers/gamification_helper.rb
553
554
  - app/helpers/globals_helper.rb
@@ -584,6 +585,8 @@ files:
584
585
  - app/views/certificates/verify.html.erb
585
586
  - app/views/chapters/show.html.erb
586
587
  - app/views/complements/show.html.erb
588
+ - app/views/discussions/_actions.html.erb
589
+ - app/views/discussions/_basic_actions.html.erb
587
590
  - app/views/discussions/_description_message.html.erb
588
591
  - app/views/discussions/_message.html.erb
589
592
  - app/views/discussions/_message_container.html.erb