mumuki-laboratory 9.9.0 → 9.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +32 -34
- data/app/controllers/users_controller.rb +5 -1
- data/app/helpers/discussions_helper.rb +11 -4
- data/app/helpers/icons_helper.rb +1 -1
- data/app/helpers/menu_bar_helper.rb +1 -1
- data/app/helpers/user_discussions_helper.rb +38 -0
- data/app/views/discussions/new.html.erb +1 -1
- data/app/views/layouts/_discussions.html.erb +1 -37
- data/app/views/layouts/_discussions_list.html.erb +38 -0
- data/app/views/users/discussions.html.erb +19 -11
- data/lib/mumuki/laboratory/locales/en.yml +10 -4
- data/lib/mumuki/laboratory/locales/es-CL.yml +11 -4
- data/lib/mumuki/laboratory/locales/es.yml +11 -5
- data/lib/mumuki/laboratory/locales/pt.yml +9 -3
- data/lib/mumuki/laboratory/version.rb +1 -1
- metadata +113 -111
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb8cf028976b13658a28a48a6bf235276d1732ce1256a463cd348b8d915fcba7
|
4
|
+
data.tar.gz: 990a6400b5f4fa76f7f17cd5dc97575c9cb475bc7588a15d4ae8102d434583b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 371681f22a60126bad63d241eee30f52f5a8c674077648a2bad413f15375fb704276af6149fc04046f0fc6d72d1562f76ccfcb1ec4d013a7bdcd4480dd817766
|
7
|
+
data.tar.gz: 40875a8558cb07951d09ca67bfe2c10405b9fb75d225ff1afd9f4ede4803ba87b9a1460a8aae18268027c3e4380b9a00d20eb9d03d8c2d5561d4ee023453d4a6
|
@@ -50,36 +50,28 @@ $moderator-badge-color: #dd9900;
|
|
50
50
|
}
|
51
51
|
}
|
52
52
|
|
53
|
-
.discussion-pagination {
|
54
|
-
display: flex;
|
55
|
-
flex-direction: row;
|
56
|
-
align-items: center;
|
57
|
-
justify-content: center;
|
58
|
-
}
|
59
|
-
|
60
53
|
.discussion-language-icon {
|
61
|
-
|
62
|
-
|
63
|
-
margin-top: 6px;
|
64
|
-
-ms-transform: scale(1.4, 1.4);
|
65
|
-
-webkit-transform: scale(1.4, 1.4);
|
66
|
-
transform: scale(1.4, 1.4);
|
54
|
+
display: inline;
|
55
|
+
padding-right: 5px;
|
67
56
|
}
|
68
57
|
|
69
|
-
.discussion-
|
70
|
-
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
.fa-stack-1x {
|
76
|
-
-ms-transform: scale(0.9, 0.9);
|
77
|
-
-webkit-transform: scale(0.9, 0.9);
|
78
|
-
transform: scale(0.9, 0.9);
|
58
|
+
.discussion-validated-messages-count {
|
59
|
+
.fa-check {
|
60
|
+
font-size: calc(#{$font-size-base} * 0.5);
|
61
|
+
position: absolute;
|
62
|
+
margin-left: -13px;
|
63
|
+
margin-top: 10px;
|
79
64
|
}
|
80
65
|
}
|
81
66
|
}
|
82
67
|
|
68
|
+
.discussion-pagination {
|
69
|
+
display: flex;
|
70
|
+
flex-direction: row;
|
71
|
+
align-items: center;
|
72
|
+
justify-content: center;
|
73
|
+
}
|
74
|
+
|
83
75
|
.discussions-no-filtered-results {
|
84
76
|
padding: 20px;
|
85
77
|
border: 1px solid $discussion-toolbar-border-color;
|
@@ -96,7 +88,7 @@ $moderator-badge-color: #dd9900;
|
|
96
88
|
}
|
97
89
|
|
98
90
|
.discussion-status-icon {
|
99
|
-
padding-
|
91
|
+
padding-left: 2px;
|
100
92
|
}
|
101
93
|
|
102
94
|
.discussion-row {
|
@@ -106,11 +98,26 @@ $moderator-badge-color: #dd9900;
|
|
106
98
|
font-size: 18px;
|
107
99
|
font-weight: bold;
|
108
100
|
}
|
101
|
+
.discussion-title-icons {
|
102
|
+
display: flex;
|
103
|
+
flex-shrink: 0;
|
104
|
+
align-items: center;
|
105
|
+
font-size: calc(#{$font-size-base} * 0.95);
|
106
|
+
|
107
|
+
> * {
|
108
|
+
padding-left: 20px;
|
109
|
+
}
|
110
|
+
}
|
109
111
|
.discussion-description {
|
110
112
|
overflow: hidden;
|
111
113
|
display: block;
|
112
114
|
text-overflow: ellipsis;
|
113
115
|
white-space: nowrap;
|
116
|
+
margin-bottom: 20px;
|
117
|
+
font-size: calc(#{$font-size-base} * 0.95);
|
118
|
+
}
|
119
|
+
.discussion-initiator {
|
120
|
+
font-size: calc(#{$font-size-base} * 0.85);
|
114
121
|
}
|
115
122
|
}
|
116
123
|
|
@@ -308,6 +315,7 @@ $moderator-badge-color: #dd9900;
|
|
308
315
|
border: 1px solid $discussion-message-border-color;
|
309
316
|
border-radius: 3px;
|
310
317
|
position: relative;
|
318
|
+
margin-bottom: 20px;
|
311
319
|
.discussion-message-bubble-header {
|
312
320
|
background-color: $mu-color-highlight-background;
|
313
321
|
height: 40px;
|
@@ -400,13 +408,3 @@ $moderator-badge-color: #dd9900;
|
|
400
408
|
font-weight: normal;
|
401
409
|
}
|
402
410
|
}
|
403
|
-
|
404
|
-
.discussion-moderator-access {
|
405
|
-
margin-right: 20px;
|
406
|
-
display: flex;
|
407
|
-
flex-direction: column;
|
408
|
-
align-items: center;
|
409
|
-
.moderator-initials {
|
410
|
-
font-size: 14px;
|
411
|
-
}
|
412
|
-
}
|
@@ -27,7 +27,7 @@ class UsersController < ApplicationController
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def discussions
|
30
|
-
@watched_discussions = current_user.watched_discussions_in_organization
|
30
|
+
@watched_discussions = current_user.watched_discussions_in_organization.scoped_query_by(discussion_filter_params).unread_first
|
31
31
|
end
|
32
32
|
|
33
33
|
def activity
|
@@ -71,4 +71,8 @@ class UsersController < ApplicationController
|
|
71
71
|
nil
|
72
72
|
end
|
73
73
|
end
|
74
|
+
|
75
|
+
def discussion_filter_params
|
76
|
+
@filter_params ||= params.permit([:page])
|
77
|
+
end
|
74
78
|
end
|
@@ -60,11 +60,18 @@ module DiscussionsHelper
|
|
60
60
|
}.html_safe
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
63
|
+
def discussion_messages_count(discussion)
|
64
64
|
%Q{
|
65
|
-
<span class="discussion-
|
66
|
-
|
67
|
-
|
65
|
+
<span class="discussion-messages-count">
|
66
|
+
#{fa_icon :comments, type: :regular, text: discussion.messages_count}
|
67
|
+
</span>
|
68
|
+
}.html_safe
|
69
|
+
end
|
70
|
+
|
71
|
+
def discussion_validated_messages_count(discussion)
|
72
|
+
%Q{
|
73
|
+
<span class="discussion-validated-messages-count">
|
74
|
+
#{fa_icon :comment, type: :regular}#{fa_icon :check, text: discussion.validated_messages_count}
|
68
75
|
</span>
|
69
76
|
}.html_safe
|
70
77
|
end
|
data/app/helpers/icons_helper.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
module UserDiscussionsHelper
|
2
|
+
def user_discussions_table_title(discussion, user, last_read)
|
3
|
+
%Q{
|
4
|
+
<tr></tr>
|
5
|
+
<thead>
|
6
|
+
<tr>
|
7
|
+
<td class="#{last_read.nil? ? '' : 'pt-5'}" colspan="4">
|
8
|
+
<strong>#{discussion.read_by?(user) ? t(:discussions_read) : t(:discussions_unread)}</strong>
|
9
|
+
</td>
|
10
|
+
</tr>
|
11
|
+
</thead>
|
12
|
+
}.html_safe
|
13
|
+
end
|
14
|
+
|
15
|
+
def user_discussions_table_header
|
16
|
+
%Q{
|
17
|
+
<tr class="fw-bold">
|
18
|
+
<td></td>
|
19
|
+
<td>#{t(:exercise)}</td>
|
20
|
+
<td>#{t(:discussion_created_by)}</td>
|
21
|
+
<td>#{t(:last_message)}</td>
|
22
|
+
</tr>
|
23
|
+
}.html_safe
|
24
|
+
end
|
25
|
+
|
26
|
+
def user_discussions_table_item(discussion, user)
|
27
|
+
%Q{
|
28
|
+
<tr>
|
29
|
+
<td class="text-center">
|
30
|
+
#{icon_for_read(discussion.read_by?(user))}
|
31
|
+
</td>
|
32
|
+
<td>#{link_to discussion.item.name, item_discussion_path(discussion)}</td>
|
33
|
+
<td>#{discussion_user_name discussion.initiator}</td>
|
34
|
+
<td>#{t(:time_since, time: time_ago_in_words(discussion.last_message_date))}</td>
|
35
|
+
</tr>
|
36
|
+
}.html_safe
|
37
|
+
end
|
38
|
+
end
|
@@ -40,43 +40,7 @@
|
|
40
40
|
</span>
|
41
41
|
</div>
|
42
42
|
<% else %>
|
43
|
-
|
44
|
-
<% @filtered_discussions.each do |discussion| %>
|
45
|
-
<%= link_to exercise_discussion_path(discussion.exercise.id, discussion) do %>
|
46
|
-
<div class="discussion">
|
47
|
-
<div class="discussion-row">
|
48
|
-
<%= discussion_messages_icon(discussion) %>
|
49
|
-
<% unless @debatable.respond_to? :language %>
|
50
|
-
<div class="discussion-language-icon">
|
51
|
-
<%= language_icon(discussion.exercise.language) %>
|
52
|
-
</div>
|
53
|
-
<% end %>
|
54
|
-
<div>
|
55
|
-
<div class="discussion-title">
|
56
|
-
<span class="discussion-status-icon">
|
57
|
-
<%= discussion_status_fa_icon(discussion) %>
|
58
|
-
</span>
|
59
|
-
<span class="d-none d-lg-inline"><%= discussion.exercise.guide.name %> -</span>
|
60
|
-
<span><%= discussion.exercise.name %></span>
|
61
|
-
<% if discussion.current_responsible_visible_for?(current_user) %>
|
62
|
-
<div class="float-end discussion-moderator-access" >
|
63
|
-
<%= profile_picture_for(discussion.responsible_moderator_by, height: 32) %>
|
64
|
-
<span class="moderator-initials">
|
65
|
-
<%= discussion.responsible_moderator_by.name_initials %>
|
66
|
-
</span>
|
67
|
-
</div>
|
68
|
-
<% end %>
|
69
|
-
|
70
|
-
</div>
|
71
|
-
<span class="discussion-description">
|
72
|
-
<%= discussion.description %>
|
73
|
-
</span>
|
74
|
-
</div>
|
75
|
-
</div>
|
76
|
-
</div>
|
77
|
-
<% end %>
|
78
|
-
<% end %>
|
79
|
-
</div>
|
43
|
+
<%= render partial: 'layouts/discussions_list' %>
|
80
44
|
|
81
45
|
<div class="discussion-pagination">
|
82
46
|
<%= paginate @filtered_discussions, nav_class: 'pagination' %>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<div class="discussions">
|
2
|
+
<% @filtered_discussions.each do |discussion| %>
|
3
|
+
<%= link_to exercise_discussion_path(discussion.exercise.id, discussion), class: 'discussion-link' do %>
|
4
|
+
<div class="discussion">
|
5
|
+
<div class="discussion-row">
|
6
|
+
<div class="d-flex justify-content-between">
|
7
|
+
<div class="discussion-title">
|
8
|
+
<div class="discussion-language-icon">
|
9
|
+
<%= language_icon(discussion.exercise.language) %>
|
10
|
+
</div>
|
11
|
+
<span class="d-none d-lg-inline"><%= discussion.exercise.guide.name %> -</span>
|
12
|
+
<span><%= discussion.exercise.name %></span>
|
13
|
+
<% if discussion.current_responsible_visible_for?(current_user) %>
|
14
|
+
<span class="badge ms-1 bg-dark">
|
15
|
+
<%= responsible_moderator_text_for(discussion, current_user)%>
|
16
|
+
</span>
|
17
|
+
<% end %>
|
18
|
+
</div>
|
19
|
+
<div class="discussion-title-icons">
|
20
|
+
<%= discussion_messages_count(discussion) %>
|
21
|
+
<%= discussion_validated_messages_count(discussion) %>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
<span class="discussion-description">
|
25
|
+
<%= discussion.description %>
|
26
|
+
</span>
|
27
|
+
<span class="discussion-initiator">
|
28
|
+
<strong><%= discussion_user_name discussion.initiator %></strong>
|
29
|
+
<%= t(:asked_time_since, time: time_ago_in_words(discussion.created_at)) %>
|
30
|
+
<span class="discussion-status-icon">
|
31
|
+
<%= discussion_status_fa_icon(discussion) %>
|
32
|
+
</span>
|
33
|
+
</span>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
</div>
|
@@ -14,17 +14,25 @@
|
|
14
14
|
<%= t :discussions_will_be_here %>
|
15
15
|
</div>
|
16
16
|
<% else %>
|
17
|
-
<
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
<%=
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
17
|
+
<div class="table-responsive mb-3">
|
18
|
+
<table class="table">
|
19
|
+
<% @watched_discussions.each do |discussion| %>
|
20
|
+
<% if discussion.read_by?(@user) != @last_read %>
|
21
|
+
<%= user_discussions_table_title(discussion, @user, @last_read) %>
|
22
|
+
<% @last_read = discussion.read_by?(@user) %>
|
23
|
+
|
24
|
+
<%= user_discussions_table_header %>
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
<%= user_discussions_table_item(discussion, @user) %>
|
28
|
+
<% end %>
|
29
|
+
</table>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<div class="discussion-pagination">
|
33
|
+
<%= paginate @watched_discussions, nav_class: 'pagination' %>
|
34
|
+
</div>
|
35
|
+
|
28
36
|
<% end %>
|
29
37
|
</div>
|
30
38
|
</div>
|
@@ -21,6 +21,7 @@ en:
|
|
21
21
|
ask_community: Ask community for help
|
22
22
|
ask_redirect: Do you want to go there?
|
23
23
|
ask_the_first_question: Be the first one to ask!
|
24
|
+
asked_time_since: asked %{time} ago
|
24
25
|
attempts_left:
|
25
26
|
zero: "You've run out of attempts"
|
26
27
|
one: "1 attempt remaining"
|
@@ -83,10 +84,13 @@ en:
|
|
83
84
|
destroy_message: delete the message
|
84
85
|
disabled_explanation: You are trying to visit a permamently disabled or deleted resource
|
85
86
|
disabled_organization_explanation: This path has already finished.
|
87
|
+
discussion_created_by: Created by
|
86
88
|
discussion_description_placeholder: You can add more information regarding your doubt.
|
87
89
|
new_discussion_message: New message on %{title}
|
88
90
|
discussion_updated: Discussion updated
|
89
91
|
discussions: Discussions
|
92
|
+
discussions_read: Read
|
93
|
+
discussions_unread: Unread
|
90
94
|
discussions_will_be_here: Your posts in the forum will appear here.
|
91
95
|
dont_leave_us: Don't leave us! Learning is fun. You just have to keep at it.
|
92
96
|
download: Download your solution
|
@@ -133,7 +137,8 @@ en:
|
|
133
137
|
expected_state: Expected board
|
134
138
|
explain_redirect: You have registered in another organization
|
135
139
|
failed: Oops, something went wrong
|
136
|
-
faqs:
|
140
|
+
faqs: Frequently Asked Questions
|
141
|
+
faqs_abbreviated: FAQs
|
137
142
|
feedback: Feedback
|
138
143
|
female: Female
|
139
144
|
file_exceeds_max_size: "File size should not exceed %{size_kb}kb. Please select another file."
|
@@ -168,6 +173,7 @@ en:
|
|
168
173
|
keep_learning: Keep learning!
|
169
174
|
kids_default_success: You did it great!
|
170
175
|
language: Language
|
176
|
+
last_message: Last message
|
171
177
|
last_name: Last Name
|
172
178
|
last_submission_date: Last submission
|
173
179
|
latest_exercises: Latest exercises
|
@@ -259,8 +265,8 @@ en:
|
|
259
265
|
processing_your_solution: We are processing you solution
|
260
266
|
profile_of: Profile of %{username}
|
261
267
|
programming_since: Started programming
|
262
|
-
progress:
|
263
|
-
|
268
|
+
progress: Progress
|
269
|
+
publish_discussion: Publish discussion
|
264
270
|
refresh_or_wait: Please press F5 if results are not displayed after a few seconds
|
265
271
|
reply_count:
|
266
272
|
one: 1 reply
|
@@ -321,7 +327,7 @@ en:
|
|
321
327
|
terms_and_conditions_continue_disclaimer: By continuing you agree to %{terms_link}
|
322
328
|
terms_and_conditions_must_be_accepted: You must accept the terms and conditions
|
323
329
|
test_results: Test results
|
324
|
-
|
330
|
+
time_since: "%{time} ago"
|
325
331
|
time_left: You have
|
326
332
|
title: Title
|
327
333
|
to_closed: Close
|
@@ -11,14 +11,16 @@ es-CL:
|
|
11
11
|
and: y
|
12
12
|
appendix: Apéndice
|
13
13
|
appendix_teaser: ¿Quieres saber más? <a href="%{link}">Consulta el apéndice de este capítulo</a>
|
14
|
-
|
15
|
-
ask_a_question: ¡Haz una pregunta!
|
14
|
+
approved_message: Validado por mentorías
|
16
15
|
approved_messages:
|
17
16
|
one: validado
|
18
17
|
other: validados
|
18
|
+
are_you_sure: '¿Confirmas que quieres %{action}?'
|
19
|
+
ask_a_question: ¡Haz una pregunta!
|
19
20
|
ask_community: Pregunta a la comunidad
|
20
21
|
ask_redirect: ¿Quieres que te llevemos ahí?
|
21
22
|
ask_the_first_question: ¡Haz la primera pregunta!
|
23
|
+
asked_time_since: "consultó hace %{time}"
|
22
24
|
attempts_left:
|
23
25
|
zero: 'Te quedaste sin intentos'
|
24
26
|
one: '1 intento restante'
|
@@ -86,8 +88,11 @@ es-CL:
|
|
86
88
|
disabled_explanation: Estás intentando acceder a un recurso que fue deshabilitado o eliminado de forma permanente
|
87
89
|
disabled_organization_explanation: ¡Este recorrido ha finalizado!
|
88
90
|
new_discussion_message: Mensaje nuevo en %{title}
|
91
|
+
discussion_created_by: Creada por
|
89
92
|
discussion_updated: Consulta actualizada
|
90
93
|
discussions: Consultas
|
94
|
+
discussions_read: Leídas
|
95
|
+
discussions_unread: No leídas
|
91
96
|
discussions_will_be_here: Las preguntas que realices en el espacio de consultas aparecerán aquí.
|
92
97
|
dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tienes que seguir practicando.
|
93
98
|
download: "Descarga lo que hiciste"
|
@@ -132,7 +137,8 @@ es-CL:
|
|
132
137
|
expected_state: Tablero esperado
|
133
138
|
explain_redirect: Notamos que te registraste en otra organización.
|
134
139
|
failed: Tu solución no pasó las pruebas
|
135
|
-
faqs:
|
140
|
+
faqs: Información importante
|
141
|
+
faqs_abbreviated: Información
|
136
142
|
feedback: Problemas que encontramos
|
137
143
|
female: Mujer
|
138
144
|
file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor selecciona otro archivo."
|
@@ -169,6 +175,7 @@ es-CL:
|
|
169
175
|
kids_default_success: ¡Lo hiciste muy bien!
|
170
176
|
language: Lenguaje
|
171
177
|
languages: Lenguajes
|
178
|
+
last_message: Último mensaje
|
172
179
|
last_name: Apellido
|
173
180
|
last_submission_date: Última solución
|
174
181
|
latest_exercises: Últimos ejercicios
|
@@ -267,7 +274,7 @@ es-CL:
|
|
267
274
|
processing_your_solution: Estamos procesando tu solución
|
268
275
|
profile_of: Perfil de %{username}
|
269
276
|
progress: Progreso
|
270
|
-
|
277
|
+
publish_discussion: Publicar consulta
|
271
278
|
read_messages: Ver mensajes
|
272
279
|
refresh_or_wait: Si no se muestra automáticamente en unos segundos, presiona F5
|
273
280
|
reply_count:
|
@@ -14,15 +14,16 @@ es:
|
|
14
14
|
and: y
|
15
15
|
appendix: Apéndice
|
16
16
|
appendix_teaser: ¿Querés saber más? <a href="%{link}">Consultá el apéndice de este capítulo</a>
|
17
|
-
approved_message: Validado por
|
18
|
-
are_you_sure: '¿Estás seguro que querés %{action}?'
|
19
|
-
ask_a_question: ¡Hacé una pregunta!
|
17
|
+
approved_message: Validado por mentorías
|
20
18
|
approved_messages:
|
21
19
|
one: validado
|
22
20
|
other: validados
|
21
|
+
are_you_sure: '¿Confirmás que querés %{action}?'
|
22
|
+
ask_a_question: ¡Hacé una pregunta!
|
23
23
|
ask_community: Preguntá a la comunidad
|
24
24
|
ask_redirect: ¿Querés que te llevemos ahí?
|
25
25
|
ask_the_first_question: ¡Hacé la primera pregunta!
|
26
|
+
asked_time_since: "consultó hace %{time}"
|
26
27
|
attempts_left:
|
27
28
|
zero: 'Te quedaste sin intentos'
|
28
29
|
one: '1 intento restante'
|
@@ -91,10 +92,13 @@ es:
|
|
91
92
|
details: Detalles
|
92
93
|
disabled_explanation: Estás intentando acceder a un recurso que fue deshabilitado o eliminado de forma permamente
|
93
94
|
disabled_organization_explanation: Este recorrido ha finalizado
|
95
|
+
discussion_created_by: Creada por
|
94
96
|
discussion_description_placeholder: Podés agregar información para detallar más tu consulta
|
95
97
|
discussion_updated: Consulta actualizada
|
96
98
|
new_discussion_message: Mensaje nuevo en %{title}
|
97
99
|
discussions: Consultas
|
100
|
+
discussions_read: Leídas
|
101
|
+
discussions_unread: No leídas
|
98
102
|
discussions_will_be_here: Las preguntas que realices en el espacio de consultas aparecerán aquí.
|
99
103
|
dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tenés que seguir practicando.
|
100
104
|
download: "Descargá lo que hiciste"
|
@@ -140,7 +144,8 @@ es:
|
|
140
144
|
expected_state: Tablero esperado
|
141
145
|
explain_redirect: Notamos que te registraste en otra organización.
|
142
146
|
failed: Tu solución no pasó las pruebas
|
143
|
-
faqs:
|
147
|
+
faqs: Información importante
|
148
|
+
faqs_abbreviated: Información
|
144
149
|
feedback: Problemas que encontramos
|
145
150
|
female: Mujer
|
146
151
|
file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor seleccioná otro archivo."
|
@@ -179,6 +184,7 @@ es:
|
|
179
184
|
kids_default_success: ¡Lo hiciste muy bien!
|
180
185
|
language: Lenguaje
|
181
186
|
languages: Lenguajes
|
187
|
+
last_message: Último mensaje
|
182
188
|
last_name: Apellido
|
183
189
|
last_submission_date: Última solución
|
184
190
|
latest_exercises: Últimos ejercicios
|
@@ -278,7 +284,7 @@ es:
|
|
278
284
|
profile_of: Perfil de %{username}
|
279
285
|
programming_since: Programando desde
|
280
286
|
progress: Progreso
|
281
|
-
|
287
|
+
publish_discussion: Publicar consulta
|
282
288
|
read_messages: Ver mensajes
|
283
289
|
refresh_or_wait: Si no se muestra automáticamente en unos segundos, presioná F5
|
284
290
|
reply_count:
|
@@ -14,14 +14,15 @@ pt:
|
|
14
14
|
appendix: Apêndice
|
15
15
|
appendix_teaser: Você quer saber mais? <a href="%{link}"> Consulte o apêndice deste capítulo </a>
|
16
16
|
approved_message: Validado pelo mentor
|
17
|
-
are_you_sure: 'Tem certeza de que deseja %{action}?'
|
18
17
|
approved_messages:
|
19
18
|
one: validado
|
20
19
|
other: validados
|
20
|
+
are_you_sure: 'Tem certeza de que deseja %{action}?'
|
21
21
|
ask_a_question: Faça uma pergunta!
|
22
22
|
ask_community: Pergunte à comunidade
|
23
23
|
ask_redirect: Você quer que nós o levemos para lá?
|
24
24
|
ask_the_first_question: Faça a primeira pergunta!
|
25
|
+
asked_time_since: "consultou há %{time}"
|
25
26
|
attempts_left:
|
26
27
|
zero: 'Você ficou sem tentativas'
|
27
28
|
one: '1 tentativa restante'
|
@@ -89,8 +90,11 @@ pt:
|
|
89
90
|
disabled_organization_explanation: Este curso terminou
|
90
91
|
discussion_description_placeholder: Você pode adicionar mais informações sobre sua dúvida
|
91
92
|
new_discussion_message: Nova mensagem em %{title}
|
93
|
+
discussion_created_by: Criada por
|
92
94
|
discussion_updated: Consulta actualizada
|
93
95
|
discussions: Consultas
|
96
|
+
discussions_read: Não lidas
|
97
|
+
discussions_unread: Não lidos
|
94
98
|
discussions_will_be_here: As perguntas que você fizer no espaço de consulta aparecerão aqui.
|
95
99
|
download: Faça o download do que você fez
|
96
100
|
edit: Editar
|
@@ -135,7 +139,8 @@ pt:
|
|
135
139
|
expected_state: Tabuleiro esperado
|
136
140
|
explain_redirect: Percebemos que você se registrou em outra organização.
|
137
141
|
failed: Sua solução não passou as provas
|
138
|
-
faqs:
|
142
|
+
faqs: Informação importante
|
143
|
+
faqs_abbreviated: Informação
|
139
144
|
feedback: Problemas que encontramos
|
140
145
|
female: Feminino
|
141
146
|
file_exceeds_max_size: "O tamanho do arquivo não deve exceder %{size_kb}kb. Selecione outro arquivo."
|
@@ -172,6 +177,7 @@ pt:
|
|
172
177
|
kids_default_success: Você fez muito bem!
|
173
178
|
language: Linguagem
|
174
179
|
languages: Linguagens
|
180
|
+
last_message: Última mensagem
|
175
181
|
last_name: Sobrenome
|
176
182
|
last_submission_date: Última solução
|
177
183
|
latest_exercises: Últimos exercícios
|
@@ -269,7 +275,7 @@ pt:
|
|
269
275
|
profile_of: Perfil de %{username}
|
270
276
|
programming_since: Sou programador
|
271
277
|
progress: Progresso
|
272
|
-
|
278
|
+
publish_discussion: Postar consulta
|
273
279
|
read_messages: Ver mensagens
|
274
280
|
refresh_or_wait: Se não mostrar automaticamente em alguns segundos, pressione F5
|
275
281
|
reply_count:
|
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.
|
4
|
+
version: 9.10.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-07-
|
11
|
+
date: 2021-07-29 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.
|
33
|
+
version: 9.10.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.
|
40
|
+
version: 9.10.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mumukit-bridge
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -574,6 +574,7 @@ files:
|
|
574
574
|
- app/helpers/runner_assets_helper.rb
|
575
575
|
- app/helpers/toast_helper.rb
|
576
576
|
- app/helpers/user_activity_helper.rb
|
577
|
+
- app/helpers/user_discussions_helper.rb
|
577
578
|
- app/helpers/user_menu_helper.rb
|
578
579
|
- app/mailers/application_mailer.rb
|
579
580
|
- app/mailers/user_mailer.rb
|
@@ -630,6 +631,7 @@ files:
|
|
630
631
|
- app/views/layouts/_authoring.html.erb
|
631
632
|
- app/views/layouts/_copyright.html.erb
|
632
633
|
- app/views/layouts/_discussions.html.erb
|
634
|
+
- app/views/layouts/_discussions_list.html.erb
|
633
635
|
- app/views/layouts/_error.html.erb
|
634
636
|
- app/views/layouts/_kids.html.erb
|
635
637
|
- app/views/layouts/_kindergarten.html.erb
|
@@ -963,134 +965,134 @@ signing_key:
|
|
963
965
|
specification_version: 4
|
964
966
|
summary: Code assement web application for the Mumuki Platform.
|
965
967
|
test_files:
|
966
|
-
- spec/
|
967
|
-
- spec/
|
968
|
-
- spec/
|
969
|
-
- spec/
|
970
|
-
- spec/
|
971
|
-
- spec/
|
972
|
-
- spec/javascripts/results-renderers-spec.js
|
973
|
-
- spec/javascripts/csrf-token-spec.js
|
974
|
-
- spec/javascripts/gamification-spec.js
|
975
|
-
- spec/javascripts/submissions-store-spec.js
|
976
|
-
- spec/javascripts/bridge-spec.js
|
977
|
-
- spec/javascripts/upload-spec.js
|
978
|
-
- spec/javascripts/exercise-spec.js
|
979
|
-
- spec/javascripts/global-spec.js
|
980
|
-
- spec/javascripts/events-spec.js
|
981
|
-
- spec/javascripts/speech-bubble-renderer-spec.js
|
982
|
-
- spec/javascripts/spec-helper.js
|
983
|
-
- spec/javascripts/timeout-spec.js
|
984
|
-
- spec/teaspoon_env.rb
|
985
|
-
- spec/helpers/certificate_helper_spec.rb
|
986
|
-
- spec/helpers/application_helper_spec.rb
|
987
|
-
- spec/helpers/breadcrumbs_helper_spec.rb
|
988
|
-
- spec/helpers/authors_helper_spec.rb
|
989
|
-
- spec/helpers/icons_helper_spec.rb
|
990
|
-
- spec/helpers/email_helper_spec.rb
|
991
|
-
- spec/helpers/exercise_input_helper_spec.rb
|
992
|
-
- spec/helpers/with_navigation_spec.rb
|
993
|
-
- spec/helpers/user_activity_helper_spec.rb
|
994
|
-
- spec/helpers/page_title_helper_spec.rb
|
995
|
-
- spec/helpers/test_results_rendering_spec.rb
|
996
|
-
- spec/helpers/with_choices_spec.rb
|
997
|
-
- spec/helpers/avatar_helper_spec.rb
|
998
|
-
- spec/login_helper.rb
|
999
|
-
- spec/features/not_found_public_flow_spec.rb
|
968
|
+
- spec/capybara_helper.rb
|
969
|
+
- spec/api_helper.rb
|
970
|
+
- spec/features/lessons_flow_spec.rb
|
971
|
+
- spec/features/login_flow_spec.rb
|
972
|
+
- spec/features/exercise_flow_spec.rb
|
973
|
+
- spec/features/immersive_redirection_spec.rb
|
1000
974
|
- spec/features/disabled_organization_flow_spec.rb
|
1001
|
-
- spec/features/
|
1002
|
-
- spec/features/links_flow_spec.rb
|
1003
|
-
- spec/features/terms_flow_spec.rb
|
1004
|
-
- spec/features/home_private_flow_spec.rb
|
1005
|
-
- spec/features/notifications_flow_spec.rb
|
1006
|
-
- spec/features/runner_assets_spec.rb
|
1007
|
-
- spec/features/exams_flow_spec.rb
|
975
|
+
- spec/features/discussion_flow_spec.rb
|
1008
976
|
- spec/features/menu_bar_spec.rb
|
1009
|
-
- spec/features/not_found_private_flow_spec.rb
|
1010
|
-
- spec/features/progressive_tips_spec.rb
|
1011
|
-
- spec/features/guides_flow_spec.rb
|
1012
|
-
- spec/features/exercise_flow_spec.rb
|
1013
977
|
- spec/features/invitations_flow_spec.rb
|
1014
|
-
- spec/features/
|
1015
|
-
- spec/features/
|
1016
|
-
- spec/features/
|
1017
|
-
- spec/features/
|
978
|
+
- spec/features/standard_flow_spec.rb
|
979
|
+
- spec/features/not_found_public_flow_spec.rb
|
980
|
+
- spec/features/home_public_flow_spec.rb
|
981
|
+
- spec/features/chapters_flow_spec.rb
|
982
|
+
- spec/features/disable_user_flow_spec.rb
|
983
|
+
- spec/features/links_flow_spec.rb
|
1018
984
|
- spec/features/certificate_programs_flow_spec.rb
|
985
|
+
- spec/features/exams_flow_spec.rb
|
1019
986
|
- spec/features/user_activity_flow_spec.rb
|
1020
|
-
- spec/features/disable_user_flow_spec.rb
|
1021
987
|
- spec/features/guide_reset_spec.rb
|
988
|
+
- spec/features/dynamic_exam_spec.rb
|
989
|
+
- spec/features/not_found_private_flow_spec.rb
|
990
|
+
- spec/features/guides_flow_spec.rb
|
1022
991
|
- spec/features/profile_flow_spec.rb
|
1023
|
-
- spec/features/
|
1024
|
-
- spec/features/
|
1025
|
-
- spec/features/
|
1026
|
-
- spec/features/
|
1027
|
-
- spec/features/
|
1028
|
-
- spec/
|
1029
|
-
- spec/
|
1030
|
-
- spec/
|
992
|
+
- spec/features/notifications_flow_spec.rb
|
993
|
+
- spec/features/terms_flow_spec.rb
|
994
|
+
- spec/features/home_private_flow_spec.rb
|
995
|
+
- spec/features/runner_assets_spec.rb
|
996
|
+
- spec/features/topic_flow_spec.rb
|
997
|
+
- spec/features/complements_flow_spec.rb
|
998
|
+
- spec/features/progressive_tips_spec.rb
|
999
|
+
- spec/helpers/breadcrumbs_helper_spec.rb
|
1000
|
+
- spec/helpers/certificate_helper_spec.rb
|
1001
|
+
- spec/helpers/avatar_helper_spec.rb
|
1002
|
+
- spec/helpers/with_navigation_spec.rb
|
1003
|
+
- spec/helpers/authors_helper_spec.rb
|
1004
|
+
- spec/helpers/with_choices_spec.rb
|
1005
|
+
- spec/helpers/icons_helper_spec.rb
|
1006
|
+
- spec/helpers/email_helper_spec.rb
|
1007
|
+
- spec/helpers/exercise_input_helper_spec.rb
|
1008
|
+
- spec/helpers/user_activity_helper_spec.rb
|
1009
|
+
- spec/helpers/test_results_rendering_spec.rb
|
1010
|
+
- spec/helpers/application_helper_spec.rb
|
1011
|
+
- spec/helpers/page_title_helper_spec.rb
|
1031
1012
|
- spec/evaluation_helper.rb
|
1032
|
-
- spec/dummy/config.ru
|
1033
1013
|
- spec/dummy/Rakefile
|
1014
|
+
- spec/dummy/package.json
|
1015
|
+
- spec/dummy/bin/setup
|
1016
|
+
- spec/dummy/bin/bundle
|
1017
|
+
- spec/dummy/bin/yarn
|
1018
|
+
- spec/dummy/bin/rake
|
1019
|
+
- spec/dummy/bin/rails
|
1020
|
+
- spec/dummy/bin/update
|
1021
|
+
- spec/dummy/public/error/timeout_2.svg
|
1022
|
+
- spec/dummy/public/error/timeout_3.svg
|
1023
|
+
- spec/dummy/public/error/timeout_1.svg
|
1024
|
+
- spec/dummy/public/error/500.svg
|
1025
|
+
- spec/dummy/public/error/403.svg
|
1026
|
+
- spec/dummy/public/error/401.svg
|
1027
|
+
- spec/dummy/public/error/410.svg
|
1028
|
+
- spec/dummy/public/error/404.svg
|
1029
|
+
- spec/dummy/public/character/magnifying_glass/loop.svg
|
1030
|
+
- spec/dummy/public/character/magnifying_glass/apparition.svg
|
1031
|
+
- spec/dummy/public/character/kibi/success_l.svg
|
1032
|
+
- spec/dummy/public/character/kibi/failure.svg
|
1033
|
+
- spec/dummy/public/character/kibi/jump.svg
|
1034
|
+
- spec/dummy/public/character/kibi/passed_with_warnings.svg
|
1035
|
+
- spec/dummy/public/character/kibi/success2_l.svg
|
1036
|
+
- spec/dummy/public/character/kibi/context.svg
|
1037
|
+
- spec/dummy/public/character/animations.json
|
1038
|
+
- spec/dummy/public/medal/outline.svg
|
1034
1039
|
- spec/dummy/db/schema.rb
|
1035
1040
|
- spec/dummy/db/seeds.rb
|
1036
|
-
- spec/dummy/config
|
1041
|
+
- spec/dummy/config.ru
|
1037
1042
|
- spec/dummy/config/secrets.yml
|
1038
|
-
- spec/dummy/config/spring.rb
|
1039
|
-
- spec/dummy/config/rabbit.yml
|
1040
|
-
- spec/dummy/config/application.rb
|
1041
1043
|
- spec/dummy/config/puma.rb
|
1042
|
-
- spec/dummy/config/environments/test.rb
|
1043
|
-
- spec/dummy/config/environments/development.rb
|
1044
1044
|
- spec/dummy/config/boot.rb
|
1045
1045
|
- spec/dummy/config/locales/en.yml
|
1046
|
-
- spec/dummy/config/
|
1047
|
-
- spec/dummy/config/database.yml
|
1048
|
-
- spec/dummy/config/initializers/cookies_serializer.rb
|
1046
|
+
- spec/dummy/config/environment.rb
|
1049
1047
|
- spec/dummy/config/initializers/assets.rb
|
1050
1048
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
1049
|
+
- spec/dummy/config/initializers/cookies_serializer.rb
|
1051
1050
|
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
1051
|
+
- spec/dummy/config/database.yml
|
1052
1052
|
- spec/dummy/config/routes.rb
|
1053
|
-
- spec/dummy/
|
1054
|
-
- spec/dummy/
|
1055
|
-
- spec/dummy/
|
1056
|
-
- spec/dummy/
|
1057
|
-
- spec/dummy/
|
1058
|
-
- spec/dummy/
|
1059
|
-
- spec/
|
1060
|
-
- spec/dummy/public/character/kibi/failure.svg
|
1061
|
-
- spec/dummy/public/character/kibi/success2_l.svg
|
1062
|
-
- spec/dummy/public/character/kibi/success_l.svg
|
1063
|
-
- spec/dummy/public/error/404.svg
|
1064
|
-
- spec/dummy/public/error/410.svg
|
1065
|
-
- spec/dummy/public/error/timeout_1.svg
|
1066
|
-
- spec/dummy/public/error/401.svg
|
1067
|
-
- spec/dummy/public/error/timeout_2.svg
|
1068
|
-
- spec/dummy/public/error/timeout_3.svg
|
1069
|
-
- spec/dummy/public/error/500.svg
|
1070
|
-
- spec/dummy/public/error/403.svg
|
1071
|
-
- spec/dummy/package.json
|
1072
|
-
- spec/dummy/bin/yarn
|
1073
|
-
- spec/dummy/bin/setup
|
1074
|
-
- spec/dummy/bin/bundle
|
1075
|
-
- spec/dummy/bin/update
|
1076
|
-
- spec/dummy/bin/rake
|
1077
|
-
- spec/dummy/bin/rails
|
1078
|
-
- spec/mailers/previews/user_mailer_preview.rb
|
1079
|
-
- spec/mailers/user_mailer_spec.rb
|
1080
|
-
- spec/controllers/courses_api_controller_spec.rb
|
1081
|
-
- spec/controllers/invitations_controller_spec.rb
|
1082
|
-
- spec/controllers/discussions_messages_controller_spec.rb
|
1083
|
-
- spec/controllers/guide_progress_controller_spec.rb
|
1084
|
-
- spec/controllers/confirmations_controller_spec.rb
|
1085
|
-
- spec/controllers/certificates_controller_spec.rb
|
1086
|
-
- spec/controllers/organizations_api_controller_spec.rb
|
1053
|
+
- spec/dummy/config/spring.rb
|
1054
|
+
- spec/dummy/config/rabbit.yml
|
1055
|
+
- spec/dummy/config/environments/development.rb
|
1056
|
+
- spec/dummy/config/environments/test.rb
|
1057
|
+
- spec/dummy/config/application.rb
|
1058
|
+
- spec/dummy/config/cable.yml
|
1059
|
+
- spec/teaspoon_env.rb
|
1087
1060
|
- spec/controllers/exercise_solutions_controller_spec.rb
|
1061
|
+
- spec/controllers/exam_authorization_requests_controller_spec.rb
|
1062
|
+
- spec/controllers/discussions_controller_spec.rb
|
1063
|
+
- spec/controllers/guide_progress_controller_spec.rb
|
1088
1064
|
- spec/controllers/users_controller_spec.rb
|
1065
|
+
- spec/controllers/courses_api_controller_spec.rb
|
1089
1066
|
- spec/controllers/chapters_controller_spec.rb
|
1090
|
-
- spec/controllers/api_clients_controller.rb
|
1091
|
-
- spec/controllers/exam_authorization_requests_controller_spec.rb
|
1092
|
-
- spec/controllers/exam_registrations_controller_spec.rb
|
1093
1067
|
- spec/controllers/users_api_controller_spec.rb
|
1094
|
-
- spec/controllers/
|
1068
|
+
- spec/controllers/exam_registrations_controller_spec.rb
|
1095
1069
|
- spec/controllers/students_api_controller_spec.rb
|
1096
|
-
- spec/controllers/
|
1070
|
+
- spec/controllers/confirmations_controller_spec.rb
|
1071
|
+
- spec/controllers/api_clients_controller.rb
|
1072
|
+
- spec/controllers/certificates_controller_spec.rb
|
1073
|
+
- spec/controllers/invitations_controller_spec.rb
|
1074
|
+
- spec/controllers/discussions_messages_controller_spec.rb
|
1075
|
+
- spec/controllers/messages_controller_spec.rb
|
1076
|
+
- spec/controllers/organizations_api_controller_spec.rb
|
1077
|
+
- spec/javascripts/elipsis-spec.js
|
1078
|
+
- spec/javascripts/bridge-spec.js
|
1079
|
+
- spec/javascripts/timeout-spec.js
|
1080
|
+
- spec/javascripts/results-renderers-spec.js
|
1081
|
+
- spec/javascripts/submissions-store-spec.js
|
1082
|
+
- spec/javascripts/kids-button-spec.js
|
1083
|
+
- spec/javascripts/speech-bubble-renderer-spec.js
|
1084
|
+
- spec/javascripts/sync-mode-spec.js
|
1085
|
+
- spec/javascripts/events-spec.js
|
1086
|
+
- spec/javascripts/editors-spec.js
|
1087
|
+
- spec/javascripts/spec-helper.js
|
1088
|
+
- spec/javascripts/gamification-spec.js
|
1089
|
+
- spec/javascripts/i18n-spec.js
|
1090
|
+
- spec/javascripts/upload-spec.js
|
1091
|
+
- spec/javascripts/timer-spec.js
|
1092
|
+
- spec/javascripts/global-spec.js
|
1093
|
+
- spec/javascripts/exercise-spec.js
|
1094
|
+
- spec/javascripts/csrf-token-spec.js
|
1095
|
+
- spec/login_helper.rb
|
1096
|
+
- spec/spec_helper.rb
|
1097
|
+
- spec/mailers/previews/user_mailer_preview.rb
|
1098
|
+
- spec/mailers/user_mailer_spec.rb
|