mumuki-laboratory 5.5.0 → 5.6.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/javascripts/application/discussions.js +43 -0
- data/app/assets/stylesheets/application/_modules.scss +2 -0
- data/app/assets/stylesheets/application/modules/_checkboxes.scss +21 -8
- data/app/assets/stylesheets/application/modules/_discussion.scss +339 -0
- data/app/assets/stylesheets/application/modules/_pagination.scss +10 -0
- data/app/controllers/application_controller.rb +4 -9
- data/app/controllers/book_discussions_controller.rb +7 -0
- data/app/controllers/chapters_controller.rb +2 -0
- data/app/controllers/discussions_controller.rb +65 -0
- data/app/controllers/discussions_messages_controller.rb +25 -0
- data/app/controllers/exercises_controller.rb +1 -0
- data/app/controllers/guide_container_controller.rb +1 -0
- data/app/controllers/messages_controller.rb +1 -1
- data/app/controllers/users_controller.rb +1 -0
- data/app/helpers/application_helper.rb +7 -0
- data/app/helpers/assignment_result_helper.rb +10 -30
- data/app/helpers/breadcrumbs_helper.rb +7 -3
- data/app/helpers/contextualization_result_helper.rb +31 -0
- data/app/helpers/discussions_helper.rb +163 -0
- data/app/helpers/exercise_input_helper.rb +33 -5
- data/app/helpers/icons_helper.rb +20 -3
- data/app/helpers/messages_helper.rb +4 -0
- data/app/helpers/status_helper.rb +2 -2
- data/app/models/assignment.rb +31 -47
- data/app/models/book.rb +3 -0
- data/app/models/chapter.rb +2 -0
- data/app/models/concerns/contextualization.rb +85 -0
- data/app/models/concerns/submittable/solvable.rb +1 -0
- data/app/models/concerns/with_assignments.rb +1 -1
- data/app/models/concerns/with_discussion_creation.rb +9 -0
- data/app/models/concerns/with_discussion_creation/subscription.rb +33 -0
- data/app/models/concerns/with_discussion_creation/upvote.rb +28 -0
- data/app/models/concerns/with_discussion_status.rb +11 -0
- data/app/models/concerns/with_discussions.rb +23 -0
- data/app/models/concerns/with_randomizations.rb +34 -0
- data/app/models/concerns/with_scoped_queries.rb +47 -0
- data/app/models/concerns/with_scoped_queries/filter.rb +15 -0
- data/app/models/concerns/with_scoped_queries/page.rb +10 -0
- data/app/models/concerns/with_scoped_queries/sort.rb +47 -0
- data/app/models/discussion.rb +128 -0
- data/app/models/exercise.rb +10 -1
- data/app/models/guide.rb +1 -1
- data/app/models/message.rb +24 -3
- data/app/models/organization.rb +4 -0
- data/app/models/submission/confirmation.rb +1 -1
- data/app/models/submission/console_submission.rb +1 -1
- data/app/models/submission/submission.rb +13 -0
- data/app/models/subscription.rb +12 -0
- data/app/models/topic.rb +1 -1
- data/app/models/upvote.rb +4 -0
- data/app/models/user.rb +3 -2
- data/app/views/book_discussions/index.html.erb +23 -0
- data/app/views/chapters/show.html.erb +0 -1
- data/app/views/discussions/_message.html.erb +22 -0
- data/app/views/discussions/_message_container.html.erb +8 -0
- data/app/views/discussions/_new_message.html.erb +19 -0
- data/app/views/discussions/index.html.erb +30 -0
- data/app/views/discussions/show.html.erb +76 -0
- data/app/views/exercise_solutions/_contextualization_results.html.erb +21 -0
- data/app/views/exercise_solutions/_contextualization_results_container.html.erb +4 -0
- data/app/views/exercise_solutions/_expectations.html.erb +9 -3
- data/app/views/exercise_solutions/_kids_results.html.erb +1 -1
- data/app/views/exercise_solutions/_results.html.erb +21 -55
- data/app/views/exercise_solutions/_results_title.html.erb +2 -2
- data/app/views/exercises/_exercise_assignment.html.erb +20 -0
- data/app/views/exercises/_read_only.html.erb +104 -0
- data/app/views/exercises/show.html.erb +4 -20
- data/app/views/layouts/_discussions.html.erb +68 -0
- data/app/views/layouts/_kids.html.erb +9 -6
- data/app/views/layouts/_messages.html.erb +1 -1
- data/app/views/layouts/_result.html.erb +2 -2
- data/app/views/layouts/_test_results.html.erb +6 -6
- data/app/views/layouts/application.html.erb +10 -9
- data/app/views/layouts/exercise_inputs/forms/_form.html.erb +5 -6
- data/app/views/layouts/exercise_inputs/forms/_interactive_form.html.erb +5 -5
- data/app/views/layouts/exercise_inputs/forms/_kids_form.html.erb +9 -17
- data/app/views/layouts/exercise_inputs/forms/_playground_form.html.erb +5 -5
- data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +11 -11
- data/app/views/layouts/exercise_inputs/forms/_reading_form.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/layouts/_input_bottom.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/layouts/_input_kids.html.erb +7 -7
- data/app/views/layouts/exercise_inputs/layouts/_input_right.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/read_only_editors/_code.html.erb +3 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_custom.html.erb +6 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_choice.html.erb +8 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_single_choice.html.erb +8 -0
- data/app/views/layouts/modals/_kids_context.html.erb +2 -2
- data/app/views/layouts/modals/_new_discussion.html.erb +27 -0
- data/app/views/users/show.html.erb +23 -3
- data/config/routes.rb +21 -1
- data/db/migrate/20180504173548_create_discussions.rb +12 -0
- data/db/migrate/20180504185845_add_discussion_id_to_message.rb +5 -0
- data/db/migrate/20180605143727_add_submission_to_discussion.rb +16 -0
- data/db/migrate/20180619182555_create_subscriptions.rb +9 -0
- data/db/migrate/20180702153442_create_upvotes.rb +8 -0
- data/db/migrate/20180702175220_add_upvotes_count_to_discussions.rb +5 -0
- data/db/migrate/20180704150839_rename_assignment_status_to_submission_status.rb +5 -0
- data/lib/mumuki/laboratory.rb +2 -0
- data/lib/mumuki/laboratory/controllers.rb +2 -1
- data/lib/mumuki/laboratory/controllers/content.rb +12 -0
- data/lib/mumuki/laboratory/controllers/notifications.rb +31 -0
- data/lib/mumuki/laboratory/controllers/results_rendering.rb +1 -1
- data/lib/mumuki/laboratory/engine.rb +0 -2
- data/lib/mumuki/laboratory/evaluation/manual.rb +1 -1
- data/lib/mumuki/laboratory/locales/en.yml +37 -1
- data/lib/mumuki/laboratory/locales/es.yml +42 -1
- data/lib/mumuki/laboratory/locales/pt.yml +33 -1
- data/lib/mumuki/laboratory/status.rb +51 -44
- data/lib/mumuki/laboratory/status/discussion/closed.rb +15 -0
- data/lib/mumuki/laboratory/status/discussion/discussion.rb +56 -0
- data/lib/mumuki/laboratory/status/discussion/opened.rb +27 -0
- data/lib/mumuki/laboratory/status/discussion/pending_review.rb +15 -0
- data/lib/mumuki/laboratory/status/discussion/solved.rb +19 -0
- data/lib/mumuki/laboratory/status/submission/aborted.rb +11 -0
- data/lib/mumuki/laboratory/status/submission/errored.rb +15 -0
- data/lib/mumuki/laboratory/status/{failed.rb → submission/failed.rb} +2 -2
- data/lib/mumuki/laboratory/status/submission/manual_evaluation_pending.rb +15 -0
- data/lib/mumuki/laboratory/status/{passed.rb → submission/passed.rb} +2 -2
- data/lib/mumuki/laboratory/status/{passed_with_warnings.rb → submission/passed_with_warnings.rb} +2 -2
- data/lib/mumuki/laboratory/status/submission/pending.rb +11 -0
- data/lib/mumuki/laboratory/status/submission/running.rb +11 -0
- data/lib/mumuki/laboratory/status/submission/submission.rb +49 -0
- data/lib/mumuki/laboratory/status/{unknown.rb → submission/unknown.rb} +2 -2
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/spec/controllers/chapters_controller_spec.rb +17 -0
- data/spec/controllers/discussions_controller_spec.rb +19 -0
- data/spec/dummy/config/environments/development.rb +0 -2
- data/spec/dummy/config/environments/test.rb +0 -2
- data/spec/dummy/db/schema.rb +42 -2
- data/spec/evaluation_helper.rb +1 -1
- data/spec/factories/discussion_factory.rb +8 -0
- data/spec/features/dynamic_exam_spec.rb +1 -1
- data/spec/helpers/exercise_input_helper_spec.rb +25 -0
- data/spec/helpers/test_results_rendering_spec.rb +7 -7
- data/spec/models/assignment_spec.rb +17 -2
- data/spec/models/discussion_spec.rb +153 -0
- metadata +108 -27
- data/app/models/concerns/with_status.rb +0 -43
- data/app/models/status_rendering_verbosity.rb +0 -40
- data/lib/mumuki/laboratory/controllers/messages.rb +0 -9
- data/lib/mumuki/laboratory/status/aborted.rb +0 -7
- data/lib/mumuki/laboratory/status/base.rb +0 -47
- data/lib/mumuki/laboratory/status/errored.rb +0 -15
- data/lib/mumuki/laboratory/status/manual_evaluation_pending.rb +0 -15
- data/lib/mumuki/laboratory/status/pending.rb +0 -11
- data/lib/mumuki/laboratory/status/running.rb +0 -11
- data/spec/models/randomizer_spec.rb +0 -18
- data/spec/models/verbosity_spec.rb +0 -24
@@ -11,8 +11,11 @@ es:
|
|
11
11
|
and: y
|
12
12
|
appendix: "Apéndice"
|
13
13
|
appendix_teaser: ¿Querés saber más? <a href="%{link}">Consultá el apéndice de este capítulo</a>
|
14
|
+
are_you_sure: '¿Estás seguro que querés %{action}?'
|
15
|
+
ask_a_question: ¡Hacé una pregunta!
|
14
16
|
ask_community: Preguntá a la comunidad
|
15
17
|
ask_redirect: ¿Querés que te llevemos ahí?
|
18
|
+
ask_the_first_question: ¡Hacé la primera pregunta!
|
16
19
|
author: Autor
|
17
20
|
authoring: "Autores"
|
18
21
|
authoring_note: 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>.
|
@@ -24,6 +27,10 @@ es:
|
|
24
27
|
chapter_number: 'Capítulo %{number}'
|
25
28
|
classroom: Aula
|
26
29
|
clear_console: Reiniciar consola
|
30
|
+
closed: Cerrada
|
31
|
+
created_at_asc: Antiguas
|
32
|
+
created_at_desc: Nuevas
|
33
|
+
comment: Comentar
|
27
34
|
confirm: Confirmar
|
28
35
|
confirm_restart: Estás por borrar tu progreso en esta guía. ¿Querés continuar?
|
29
36
|
console: Consola
|
@@ -41,8 +48,12 @@ es:
|
|
41
48
|
date: Fecha
|
42
49
|
day: Día
|
43
50
|
days: Días
|
51
|
+
description: Descripción
|
44
52
|
destroy: Eliminar
|
53
|
+
destroy_message: eliminar el mensaje
|
45
54
|
details: Detalles
|
55
|
+
discussion_updated: Consulta actualizada
|
56
|
+
discussions: Consultas
|
46
57
|
dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tenés que seguir practicando.
|
47
58
|
download: "Descargá lo que hiciste"
|
48
59
|
edit: Editar
|
@@ -102,6 +113,9 @@ es:
|
|
102
113
|
let_us_know: ¡Por favor avisanos!
|
103
114
|
load_solution_into_console: Cargar la solución en la consola
|
104
115
|
manual_evaluation_pending: ¡Gracias por enviar tu solución! Tus docentes la corregirán pronto
|
116
|
+
message_count:
|
117
|
+
one: 1 mensaje
|
118
|
+
other: '%{count} mensajes'
|
105
119
|
message: Mensaje
|
106
120
|
messages: Mensajes
|
107
121
|
messages_error: Los mensajes anteriores no están disponibles en este momento. ¡Volvé a intentar mas tarde!
|
@@ -119,24 +133,30 @@ es:
|
|
119
133
|
never: nunca
|
120
134
|
new: Nuevo
|
121
135
|
new_message: ¿Tenés dudas? ¡Levantá la mano!
|
136
|
+
new_discussion: Nueva consulta
|
122
137
|
new_message_placeholder: Escribí el mensaje para tu docente acá...
|
123
138
|
next_exercise: Siguiente
|
124
139
|
next_guide: 'Siguiente Lección: %{name}'
|
140
|
+
no_discussions: No encontramos consultas que coincidan con tu búsqueda.
|
125
141
|
no_exercises: No encontramos ejercicios que coincidan con tu búsqueda.
|
126
142
|
no_guides: No encontramos lecciones que coincidan con tu búsqueda.
|
127
143
|
no_messages: ¡Parece que no tenés ningun mensaje todavía!
|
144
|
+
no_questions: Parece que aún no hay ninguna consulta.
|
128
145
|
no_submissions: ¡Parece que aún no intentaste resolver este ejercicio aún!
|
146
|
+
no_useful_result: ¿No encontraste lo que estabas buscando?
|
129
147
|
not_found: ¡La página que buscaste no existe!
|
130
148
|
not_found_explanation: Fijate si escribiste bien la dirección. Peeeeero...
|
131
149
|
not_in_any_organizations: ¡Parece que no estás en ninguna organización todavía!
|
132
|
-
notify_problem_with_exercise: Reportá un
|
150
|
+
notify_problem_with_exercise: Reportá un bug
|
133
151
|
office: Secretaría
|
152
|
+
opened: Abierta
|
134
153
|
organizations: Organizaciones
|
135
154
|
output: Salida
|
136
155
|
overview: Vista general
|
137
156
|
passed: ¡Muy bien! Tu solución pasó todas las pruebas
|
138
157
|
passed_with_warnings: Tu solución funcionó, pero hay cosas que mejorar
|
139
158
|
pending: pendiente
|
159
|
+
pending_review: En revisión
|
140
160
|
pending_messages: Tenés mensajes sin leer
|
141
161
|
pending_messages_explanation: "¡Tu docente te dejó un mensaje! Revisalo antes de seguir enviando soluciones."
|
142
162
|
permissions: Permisos
|
@@ -152,6 +172,7 @@ es:
|
|
152
172
|
read: Leido
|
153
173
|
read_messages: Ver mensajes
|
154
174
|
refresh_or_wait: Si no se muestra automáticamente en unos segundos, presioná F5
|
175
|
+
reset_query: Borrar los filtros de búsqueda actuales
|
155
176
|
restart: Reiniciar
|
156
177
|
results: Resultados
|
157
178
|
retry_exercise: Reintentar
|
@@ -165,9 +186,14 @@ es:
|
|
165
186
|
sign_out: Cerrar Sesión
|
166
187
|
sign_up_date: Usuario desde
|
167
188
|
solution: Solución
|
189
|
+
solved: Resuelta
|
168
190
|
solved_exercises: Ejercicios Resueltos
|
191
|
+
solve_doubts: Resolvé consultas
|
192
|
+
solve_your_doubts: Consultá tus dudas
|
193
|
+
solve_your_doubts_teaser: ¿Tenés alguna consulta?
|
169
194
|
something_went_wrong: ¡Ups!, algo no anduvo bien...
|
170
195
|
something_went_wrong_explanation: Algo no anduvo como se esperaba.
|
196
|
+
sort: Ordenar
|
171
197
|
start_lesson: ¡Comenzá esta lección!
|
172
198
|
start_practicing: ¡Empezá ahora!
|
173
199
|
start_using_mumuki: ¡Empezá a usar Mumuki!
|
@@ -175,6 +201,7 @@ es:
|
|
175
201
|
status: Estado
|
176
202
|
stay_here: No, quiero quedarme acá
|
177
203
|
stop_emails?: ¿Querés dejar de recibir estos mails?
|
204
|
+
subscribe: Recibir notificaciones
|
178
205
|
submission: solución
|
179
206
|
submission_date: Fecha de envío
|
180
207
|
submission_for_exercise: Solucion para ejercicio
|
@@ -186,21 +213,35 @@ es:
|
|
186
213
|
tell_us_if_our_error: Si pensás que es un error nuestro, %{issues}
|
187
214
|
terms_and_conditions: Términos y condiciones
|
188
215
|
test_results: Resultados de las pruebas
|
216
|
+
time_since: "hace %{time}"
|
189
217
|
time_left: Te quedan
|
190
218
|
title: Título
|
219
|
+
to_closed: Cerrar
|
220
|
+
to_opened: Reabrir
|
221
|
+
to_pending_review: Resolver
|
222
|
+
to_solved: Resolver
|
191
223
|
try_again: ¡Ups! Algo salió mal en mumuki. Reiniciá el ejercicio, esperá unos segundos y volvé a intentar.
|
192
224
|
unauthorized_explanation: ¡Ups! Esto es lo que se conoce como %{error}, es decir que no iniciaste sesión.
|
193
225
|
uncategorized: No categorizado
|
226
|
+
undo_upvote: No es útil
|
194
227
|
unknown: no resuelto
|
195
228
|
unmeet_expectations: Objetivos que no se cumplieron
|
229
|
+
unsubscribe: Dejar de recibir notificaciones
|
196
230
|
unsubscribed_successfully: Te desuscribiste exitosamente de los recordatorios.
|
197
231
|
upload_solution: "Subir solución"
|
198
232
|
uploading_solution: "Subiendo solución"
|
233
|
+
upvote: Es útil
|
234
|
+
upvotes_count_asc: Más útiles
|
235
|
+
upvotes_count_desc: Menos útiles
|
199
236
|
user_data_updated: Tus datos se actualizaron correctamente
|
200
237
|
user: Usuario
|
201
238
|
username: Nombre de usuario
|
202
239
|
want_permissions: El siguiente usuario requiere permisos
|
203
240
|
we_miss_you: ¡Te extrañamos!
|
241
|
+
will_paginate:
|
242
|
+
previous_label: "← Anterior"
|
243
|
+
next_label: "Siguiente →"
|
244
|
+
page_gap: "…"
|
204
245
|
working: "Procesando"
|
205
246
|
wrong_answer: La respuesta no es correcta
|
206
247
|
you_must_sign_in_before_submitting: Tenés que iniciar sesión antes de empezar a enviar tus soluciones
|
@@ -11,8 +11,11 @@ pt:
|
|
11
11
|
and: e
|
12
12
|
appendix: Apêndice
|
13
13
|
appendix_teaser: Você quer saber mais? <a href="%{link}"> Consulte o apêndice deste capítulo </a>
|
14
|
+
are_you_sure: 'Tem certeza de que deseja %{action}?'
|
15
|
+
ask_a_question: Faça uma pergunta!
|
14
16
|
ask_community: Pergunte à comunidade
|
15
17
|
ask_redirect: Você quer que nós o levemos para lá?
|
18
|
+
ask_the_first_question: Faça a primeira pergunta!
|
16
19
|
author: Autor
|
17
20
|
authoring: Autores
|
18
21
|
authoring_note: '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>.'
|
@@ -23,6 +26,8 @@ pt:
|
|
23
26
|
chapter_number: Capítulo %{number}
|
24
27
|
classroom: Sala de aula
|
25
28
|
clear_console: Reiniciar o console
|
29
|
+
closed: Fechado
|
30
|
+
comment: Comentar
|
26
31
|
confirm: Confirme
|
27
32
|
confirm_restart: Você está prestes a apagar o seu progresso neste guia. Você quer continuar?
|
28
33
|
console: Consola
|
@@ -35,13 +40,19 @@ pt:
|
|
35
40
|
correct_answer: A resposta está correta!
|
36
41
|
create_submission: Enviar
|
37
42
|
created_at: Criado
|
43
|
+
created_at_asc: Antigo
|
44
|
+
created_at_desc: Novo
|
38
45
|
created_exercises: Exercícios criados
|
39
46
|
created_guides: Lições criadas
|
40
47
|
date: Data
|
41
48
|
day: Dia
|
42
49
|
days: Dias
|
50
|
+
description: Descrição
|
43
51
|
destroy: Excluir
|
52
|
+
destroy_message: excluir a mensagem
|
44
53
|
details: Detalhes
|
54
|
+
discussion_updated: Consulta actualizada
|
55
|
+
discussions: Consultas
|
45
56
|
download: Faça o download do que você fez
|
46
57
|
edit: Editar
|
47
58
|
editor_placeholder: ... Escreva sua solução aqui ...
|
@@ -54,7 +65,7 @@ pt:
|
|
54
65
|
error_500: erro 500
|
55
66
|
errored: Opa! Sua solução não pode ser executada
|
56
67
|
exam_number: 'Revise %{number}:'
|
57
|
-
exams:
|
68
|
+
exams: Examesca
|
58
69
|
exercise: Exercício
|
59
70
|
exercise_count: exercícios
|
60
71
|
exercise_number: Exercício %{number}
|
@@ -100,6 +111,9 @@ pt:
|
|
100
111
|
let_us_know: Por favor, avise-nos!
|
101
112
|
load_solution_into_console: Carregue a solução no console
|
102
113
|
manual_evaluation_pending: Obrigado por enviar sua solução! Seus professores irão corrigi-lo em breve
|
114
|
+
message_count:
|
115
|
+
one: 1 mensagem
|
116
|
+
other: '%{count} mensagens'
|
103
117
|
message: Mensagem
|
104
118
|
messages: Mensagens
|
105
119
|
messages_error: As mensagens acima não estão disponíveis no momento. Eu tentei novamente mais tarde!
|
@@ -120,15 +134,19 @@ pt:
|
|
120
134
|
new_message_placeholder: Escreva sua mensagem para o seu professor aqui ...
|
121
135
|
next_exercise: Em seguida
|
122
136
|
next_guide: Próxima Lição %{nome}
|
137
|
+
no_discussions: Não encontramos consultas que correspondam à sua pesquisa.
|
123
138
|
no_exercises: Não encontramos exercícios que correspondam à sua pesquisa.
|
124
139
|
no_guides: Não encontramos lições que correspondam à sua pesquisa.
|
125
140
|
no_messages: Parece que você ainda não tem uma mensagem!
|
141
|
+
no_questions: Parece que ainda não há dúvida.
|
126
142
|
no_submissions: Parece que você ainda não tentou resolver este exercício!
|
143
|
+
no_useful_result: Didn't find what you were looking for
|
127
144
|
not_found: A página que você pesquisou não existe!
|
128
145
|
not_found_explanation: Olhe se você escreveu o endereço corretamente. Mas...
|
129
146
|
not_in_any_organizations: Parece que você ainda não está em nenhuma organização!
|
130
147
|
notify_problem_with_exercise: Relatar um erro
|
131
148
|
office: Secretariado
|
149
|
+
opened: Aberto
|
132
150
|
organizations: Organizações
|
133
151
|
output: Sair
|
134
152
|
overview: Visão global
|
@@ -137,6 +155,7 @@ pt:
|
|
137
155
|
pending: pendente
|
138
156
|
pending_messages: Você tem mensagens não lidas
|
139
157
|
pending_messages_explanation: Seu professor deixou uma mensagem para você! Verifique antes de continuar a enviar soluções.
|
158
|
+
pending_review: Sendo revisto
|
140
159
|
permissions: Permissões
|
141
160
|
please_fill_profile_data: Preencha suas informações pessoais para continuar!
|
142
161
|
please_validate: Você está prestes a entrar no curso. Para oferecer uma experiência melhor, valide que seus dados abaixo sejam reais e corretos.
|
@@ -150,6 +169,7 @@ pt:
|
|
150
169
|
read: Ler
|
151
170
|
read_messages: Ver mensagens
|
152
171
|
refresh_or_wait: Se não mostrar automaticamente em alguns segundos, pressione F5
|
172
|
+
reset_query: Limpar filtros de pesquisa atuais
|
153
173
|
restart: Reiniciar
|
154
174
|
results: Resultados
|
155
175
|
retry_exercise: Tentar novamente
|
@@ -163,9 +183,14 @@ pt:
|
|
163
183
|
sign_out: Fechar Sessão
|
164
184
|
sign_up_date: Usuário de
|
165
185
|
solution: Solução
|
186
|
+
solved: Resolvido
|
166
187
|
solved_exercises: Exercícios resolvidos
|
188
|
+
solve_doubts: Resolvi dúvidas
|
189
|
+
solve_your_doubts: Consulte suas dúvidas
|
190
|
+
solve_your_doubts_teaser: Você tem alguma dúvida?
|
167
191
|
something_went_wrong: Oops!, Algo não estava certo ...
|
168
192
|
something_went_wrong_explanation: Algo não foi como esperado.
|
193
|
+
sort: Ordenar
|
169
194
|
start_lesson: Comece esta lição!
|
170
195
|
start_practicing: Comece agora!
|
171
196
|
stats: Seu progresso
|
@@ -177,18 +202,25 @@ pt:
|
|
177
202
|
submissions: Soluções
|
178
203
|
submissions_count: Soluções
|
179
204
|
submissions_for: Soluções para %{exercise}
|
205
|
+
subscribe: se inscrever
|
180
206
|
tag: Etiquetas
|
181
207
|
tell_us_how: Conte-nos como isso aconteceu com você!
|
182
208
|
tell_us_if_our_error: Se você acha que é nosso erro, %{issues}
|
183
209
|
terms_and_conditions: Termos e Condições
|
184
210
|
test_results: Resultados do teste
|
211
|
+
time_since: "há %{time}"
|
185
212
|
time_left: Te deixam
|
186
213
|
title: Título
|
214
|
+
to_closed: Fechar
|
215
|
+
to_opened: Reabrir
|
216
|
+
to_pending_review: Marcar como resolvida
|
217
|
+
to_solved: Marcar como resolvida
|
187
218
|
try_again: Opa, algo deu errado em Mumuki. Reinicie o exercício, aguarde alguns segundos e tente novamente.
|
188
219
|
unauthorized_explanation: Opa! Isso é o que é conhecido como %{error}, ou seja, você não fez logon.
|
189
220
|
uncategorized: Não classificado
|
190
221
|
unknown: não resolvido
|
191
222
|
unmeet_expectations: Objetivos que não foram atendidos
|
223
|
+
unsubscribe: Cancelar subscrição
|
192
224
|
upload_solution: Carregar solução
|
193
225
|
uploading_solution: Uploading solution
|
194
226
|
user: Usuário
|
@@ -1,61 +1,68 @@
|
|
1
1
|
module Mumuki::Laboratory::Status
|
2
|
-
|
3
|
-
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
to_status_method_name = to_status_method
|
6
|
+
base = self
|
7
|
+
String.send :define_method, to_status_method_name, proc { to_sym.send(to_status_method_name) }
|
8
|
+
Symbol.send :define_method, to_status_method_name, proc { base.from_sym(self) }
|
9
|
+
define_method to_status_method_name, proc { self }
|
4
10
|
end
|
5
11
|
|
6
|
-
def
|
7
|
-
|
8
|
-
status
|
9
|
-
else
|
10
|
-
status.to_mumuki_status.to_i
|
11
|
-
end
|
12
|
+
def to_s
|
13
|
+
name.demodulize.underscore
|
12
14
|
end
|
13
15
|
|
14
|
-
def
|
15
|
-
|
16
|
+
def to_i
|
17
|
+
parent::STATUSES.index(self)
|
16
18
|
end
|
17
19
|
|
18
|
-
def
|
19
|
-
|
20
|
+
def to_sym
|
21
|
+
to_s.to_sym
|
20
22
|
end
|
21
|
-
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
require_relative './status/running'
|
27
|
-
require_relative './status/passed'
|
28
|
-
require_relative './status/failed'
|
29
|
-
require_relative './status/errored'
|
30
|
-
require_relative './status/aborted'
|
31
|
-
require_relative './status/passed_with_warnings'
|
32
|
-
require_relative './status/manual_evaluation_pending'
|
24
|
+
def ==(other)
|
25
|
+
self.equal? parent.to_mumuki_status(other) rescue false
|
26
|
+
end
|
33
27
|
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
class_methods do
|
29
|
+
def load(i)
|
30
|
+
cast(i)
|
31
|
+
end
|
37
32
|
|
33
|
+
def dump(status)
|
34
|
+
if status.is_a? Numeric
|
35
|
+
status
|
36
|
+
else
|
37
|
+
to_mumuki_status(status).to_i
|
38
|
+
end
|
39
|
+
end
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
41
|
+
def to_mumuki_status(status)
|
42
|
+
status.send(to_status_method)
|
43
|
+
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
45
|
+
def to_status_method
|
46
|
+
"to_#{self}_status"
|
47
|
+
end
|
50
48
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
49
|
+
def from_sym(status)
|
50
|
+
"Mumuki::Laboratory::Status::#{module_namespace(self)}::#{module_namespace(status)}".constantize
|
51
|
+
end
|
56
52
|
|
57
|
-
|
58
|
-
|
59
|
-
|
53
|
+
def module_namespace(mod)
|
54
|
+
mod.to_s.camelize
|
55
|
+
end
|
56
|
+
|
57
|
+
def cast(i)
|
58
|
+
self::STATUSES[i.to_i] if i.present?
|
59
|
+
end
|
60
|
+
|
61
|
+
def to_s
|
62
|
+
name.demodulize.underscore
|
63
|
+
end
|
60
64
|
end
|
61
65
|
end
|
66
|
+
|
67
|
+
require_relative './status/submission/submission'
|
68
|
+
require_relative './status/discussion/discussion'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Mumuki::Laboratory::Status::Discussion::Closed
|
2
|
+
extend Mumuki::Laboratory::Status::Discussion
|
3
|
+
|
4
|
+
def self.closed?
|
5
|
+
true
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.reachable_statuses_for_moderator(*)
|
9
|
+
[Mumuki::Laboratory::Status::Discussion::Opened, Mumuki::Laboratory::Status::Discussion::Solved]
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.iconize
|
13
|
+
{class: :danger, type: 'times-circle'}
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Mumuki::Laboratory::Status::Discussion
|
2
|
+
include Mumuki::Laboratory::Status
|
3
|
+
end
|
4
|
+
|
5
|
+
require_relative './opened'
|
6
|
+
require_relative './closed'
|
7
|
+
require_relative './solved'
|
8
|
+
require_relative './pending_review'
|
9
|
+
|
10
|
+
module Mumuki::Laboratory::Status::Discussion
|
11
|
+
STATUSES = [Opened, Closed, Solved, PendingReview]
|
12
|
+
|
13
|
+
def closed?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
def opened?
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
def solved?
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
25
|
+
def pending_review?
|
26
|
+
false
|
27
|
+
end
|
28
|
+
|
29
|
+
def allowed_for?(*)
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
def reachable_statuses_for_moderator(*)
|
34
|
+
[]
|
35
|
+
end
|
36
|
+
|
37
|
+
def reachable_statuses_for_initiator(*)
|
38
|
+
[]
|
39
|
+
end
|
40
|
+
|
41
|
+
def should_be_shown?(count, user)
|
42
|
+
count > 0 || user&.moderator?
|
43
|
+
end
|
44
|
+
|
45
|
+
def reachable_statuses_for(user, discussion)
|
46
|
+
if user.moderator?
|
47
|
+
reachable_statuses_for_moderator(discussion)
|
48
|
+
else
|
49
|
+
reachable_statuses_for_initiator(discussion)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def allowed_statuses_for(user, discussion)
|
54
|
+
STATUSES.select { |it| it.allowed_for?(user, discussion) }
|
55
|
+
end
|
56
|
+
end
|