mumuki-laboratory 9.8.1 → 9.11.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/mumuki_laboratory/application/messages.js +1 -30
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +32 -34
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss +11 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_editor.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_faqs.scss +1 -1
- data/app/controllers/application_controller.rb +1 -1
- data/app/controllers/messages_controller.rb +2 -5
- data/app/controllers/users_controller.rb +38 -1
- data/app/helpers/application_helper.rb +6 -2
- data/app/helpers/discussions_helper.rb +11 -4
- data/app/helpers/exam_registration_helper.rb +0 -4
- data/app/helpers/icons_helper.rb +1 -1
- data/app/helpers/menu_bar_helper.rb +7 -3
- data/app/helpers/messages_helper.rb +4 -8
- data/app/helpers/notifications_helper.rb +13 -0
- data/app/helpers/profile_helper.rb +4 -0
- data/app/helpers/user_discussions_helper.rb +38 -0
- data/app/helpers/user_menu_helper.rb +4 -0
- data/app/mailers/user_mailer.rb +9 -1
- data/app/views/discussions/new.html.erb +1 -1
- data/app/views/layouts/_copyright.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/layouts/_messages.html.erb +1 -7
- data/app/views/layouts/_user_menu.html.erb +1 -0
- data/app/views/layouts/application.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/forms/_interactive_form.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/read_only_editors/_code.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_files.html.erb +4 -4
- data/app/views/layouts/mailer.html.erb +7 -1
- data/app/views/notifications/_custom.html.erb +1 -0
- data/app/views/notifications/_dropdown.html.erb +2 -2
- data/app/views/notifications/_exam_authorization_request_updated.html.erb +2 -0
- data/app/views/notifications/_exam_registration.html.erb +2 -1
- data/app/views/notifications/previews/_custom.html.erb +1 -0
- data/app/views/notifications/previews/_discussion.html.erb +2 -0
- data/app/views/notifications/previews/_exam_authorization_request_updated.html.erb +2 -0
- data/app/views/notifications/previews/_exam_registration.html.erb +2 -0
- data/app/views/notifications/previews/_message.html.erb +2 -0
- data/app/views/user_mailer/1st_reminder.html.erb +7 -349
- data/app/views/user_mailer/1st_reminder.text.erb +1 -5
- data/app/views/user_mailer/2nd_reminder.html.erb +7 -349
- data/app/views/user_mailer/2nd_reminder.text.erb +1 -5
- data/app/views/user_mailer/3rd_reminder.html.erb +7 -349
- data/app/views/user_mailer/3rd_reminder.text.erb +1 -5
- data/app/views/user_mailer/_mail_template.erb +336 -0
- data/app/views/user_mailer/certificate.html.erb +7 -335
- data/app/views/user_mailer/certificate.text.erb +1 -4
- data/app/views/user_mailer/no_submissions_reminder.html.erb +7 -349
- data/app/views/user_mailer/no_submissions_reminder.text.erb +1 -5
- data/app/views/user_mailer/notification.html.erb +1 -0
- data/app/views/user_mailer/notification.text.erb +6 -0
- data/app/views/user_mailer/notifications/_custom.html.erb +11 -0
- data/app/views/user_mailer/notifications/_exam_authorization_request_updated.html.erb +1 -0
- data/app/views/user_mailer/notifications/_exam_registration.html.erb +7 -0
- data/app/views/user_mailer/notifications/exam_authorization_request_updated/_approved.html.erb +7 -0
- data/app/views/user_mailer/notifications/exam_authorization_request_updated/_rejected.html.erb +7 -0
- data/app/views/users/_basic_profile_fields.html.erb +30 -0
- data/app/views/users/_profile_fields.html.erb +1 -20
- data/app/views/users/discussions.html.erb +19 -11
- data/app/views/users/manage_notifications.html.erb +26 -0
- data/app/views/users/messages.html.erb +1 -1
- data/app/views/users/notifications.html.erb +54 -0
- data/config/routes.rb +4 -1
- data/lib/mumuki/laboratory/controllers/notifications.rb +2 -2
- data/lib/mumuki/laboratory/locales/en.yml +46 -7
- data/lib/mumuki/laboratory/locales/es-CL.yml +47 -7
- data/lib/mumuki/laboratory/locales/es.yml +48 -9
- data/lib/mumuki/laboratory/locales/pt.yml +45 -6
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/spec/controllers/organizations_api_controller_spec.rb +6 -1
- data/spec/controllers/students_api_controller_spec.rb +1 -1
- data/spec/controllers/users_controller_spec.rb +48 -0
- data/spec/dummy/db/schema.rb +9 -1
- data/spec/features/not_found_public_flow_spec.rb +1 -1
- data/spec/features/notifications_flow_spec.rb +2 -1
- data/spec/features/profile_flow_spec.rb +1 -1
- data/spec/mailers/previews/user_mailer_preview.rb +45 -1
- metadata +136 -119
- data/app/views/messages/errors.html.erb +0 -1
- data/app/views/notifications/_discussion.html.erb +0 -1
- data/app/views/notifications/_exam_authorization_request.html.erb +0 -1
- data/app/views/notifications/_message.html.erb +0 -1
@@ -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'
|
@@ -38,9 +39,11 @@ es:
|
|
38
39
|
cancel: Cancelar
|
39
40
|
cancel_subscription: Cancelá tu subscripción.
|
40
41
|
certificate: Certificado
|
42
|
+
certificate_available: Ya está disponible tu certificado
|
43
|
+
certificate_download: Descargalo desde el adjunto de este mail o visualizalo en tu perfil de Mumuki
|
44
|
+
certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> está verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
|
41
45
|
certificates: Certificados
|
42
46
|
certificates_will_be_here: Tus certificados en esta organización aparecerán acá
|
43
|
-
certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> está verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
|
44
47
|
chapter: Capítulo
|
45
48
|
chapters: Capítulos
|
46
49
|
chapter_finished_html: ¡Terminaste %{chapter}! ¡Felicitaciones!
|
@@ -57,6 +60,7 @@ es:
|
|
57
60
|
confirm: Confirmar
|
58
61
|
confirm_reset: Estás por reiniciar tu ejercicio. ¿Querés continuar?
|
59
62
|
confirm_restart: Estás por borrar tu progreso en esta guía. ¿Querés continuar?
|
63
|
+
congratulations: ¡Felicitaciones!
|
60
64
|
console: Consola
|
61
65
|
contact_administrator: 'Si pensás que es un error, comunicate con %{link}'
|
62
66
|
content: Contenido
|
@@ -91,10 +95,13 @@ es:
|
|
91
95
|
details: Detalles
|
92
96
|
disabled_explanation: Estás intentando acceder a un recurso que fue deshabilitado o eliminado de forma permamente
|
93
97
|
disabled_organization_explanation: Este recorrido ha finalizado
|
98
|
+
discussion_created_by: Creada por
|
94
99
|
discussion_description_placeholder: Podés agregar información para detallar más tu consulta
|
95
100
|
discussion_updated: Consulta actualizada
|
96
|
-
new_discussion_message:
|
101
|
+
new_discussion_message: Respuesta nueva en %{title}
|
97
102
|
discussions: Consultas
|
103
|
+
discussions_read: Leídas
|
104
|
+
discussions_unread: No leídas
|
98
105
|
discussions_will_be_here: Las preguntas que realices en el espacio de consultas aparecerán aquí.
|
99
106
|
dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tenés que seguir practicando.
|
100
107
|
download: "Descargá lo que hiciste"
|
@@ -140,7 +147,8 @@ es:
|
|
140
147
|
expected_state: Tablero esperado
|
141
148
|
explain_redirect: Notamos que te registraste en otra organización.
|
142
149
|
failed: Tu solución no pasó las pruebas
|
143
|
-
faqs:
|
150
|
+
faqs: Información importante
|
151
|
+
faqs_abbreviated: Información
|
144
152
|
feedback: Problemas que encontramos
|
145
153
|
female: Mujer
|
146
154
|
file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor seleccioná otro archivo."
|
@@ -167,6 +175,7 @@ es:
|
|
167
175
|
home: Inicio
|
168
176
|
hour: hora
|
169
177
|
hours: horas
|
178
|
+
i_want_emails_of: Quiero recibir emails de
|
170
179
|
important_info: Información importante
|
171
180
|
initial_state: Tablero inicial
|
172
181
|
insert_file_name: Ingresa un nombre de archivo
|
@@ -179,6 +188,7 @@ es:
|
|
179
188
|
kids_default_success: ¡Lo hiciste muy bien!
|
180
189
|
language: Lenguaje
|
181
190
|
languages: Lenguajes
|
191
|
+
last_message: Último mensaje
|
182
192
|
last_name: Apellido
|
183
193
|
last_submission_date: Última solución
|
184
194
|
latest_exercises: Últimos ejercicios
|
@@ -194,13 +204,33 @@ es:
|
|
194
204
|
loading: Cargando
|
195
205
|
load_solution_into_console: Cargar la solución en la consola
|
196
206
|
locked_content: 'Este contenido se desbloqueará cuando termines los capítulos anteriores'
|
207
|
+
mailer:
|
208
|
+
title:
|
209
|
+
exam_authorization_request_updated: Tenés cambios en tu inscripción al examen
|
210
|
+
exam_authorization_request_rejected: Inscripción rechazada
|
211
|
+
exam_registration: Apertura de inscripciones
|
212
|
+
custom: ¡Tenés una nueva notificación!
|
213
|
+
subtitle:
|
214
|
+
exam_authorization_request_approved: Tu solicitud de inscripción al examen fue aprobada.
|
215
|
+
exam_authorization_request_rejected: Tu solicitud de inscripción al examen fue rechazada ya que no se cumplieron los requisitos.
|
216
|
+
exam_registration: ¡Ya podés inscribirte al examen!
|
217
|
+
text:
|
218
|
+
exam_authorization_request_approved: Podrás rendir el examen el día %{exam_start_date} ingresando a la plataforma. ¡Éxitos!
|
219
|
+
exam_authorization_request_rejected: ¡No te desanimes! Hiciste un gran esfuerzo y esperamos que continúes aprendiendo programación.
|
220
|
+
exam_registration: Tenés tiempo de inscribirte hasta el %{exam_registration_deadline}. Para que tu inscripción sea aceptada debés cumplir con los requisitos.
|
221
|
+
button:
|
222
|
+
exam_registration: Inscribirme al Examen
|
223
|
+
exam_authorization_request_approved: Ir a la plataforma
|
224
|
+
exam_authorization_request_rejected: Mis exámenes
|
225
|
+
custom: Mis notificaciones
|
197
226
|
male: Hombre
|
227
|
+
manage_notification_subscriptions: Administrá tus notificaciones
|
228
|
+
manage_notifications: Administrar notificaciones
|
198
229
|
manual_evaluation_pending: ¡Gracias por enviar tu solución! Tus docentes la corregirán pronto
|
199
230
|
medal: Medalla
|
200
231
|
message: Mensaje
|
201
232
|
message_deleted: Este mensaje fue eliminado porque %{motive}, lo cual infringe las %{forum_terms}.
|
202
233
|
messages: Mensajes
|
203
|
-
messages_error: Los mensajes anteriores no están disponibles en este momento. ¡Volvé a intentar mas tarde!
|
204
234
|
messages_pluralized:
|
205
235
|
one: Mensaje
|
206
236
|
other: Mensajes
|
@@ -217,9 +247,9 @@ es:
|
|
217
247
|
you_are: Te estás ocupando
|
218
248
|
you_will_confirmation: Te vas a ocupar de esta consulta. Si cambiás de parecer, tocá nuevamente el botón.
|
219
249
|
you_wont_confirmation: No te vas a ocupar de esta consulta.
|
220
|
-
more_messages: Ver mensajes anteriores
|
221
250
|
my_account: Mi cuenta
|
222
251
|
my_doubts: Mis consultas
|
252
|
+
my_notifications: Mis notificaciones
|
223
253
|
my_profile: Mi perfil
|
224
254
|
name: Nombre
|
225
255
|
navigation_continue: 'Siguiente %{kind}: %{sibling}'
|
@@ -249,7 +279,12 @@ es:
|
|
249
279
|
not_found: ¡La página que buscaste no existe!
|
250
280
|
not_found_explanation: Fijate si escribiste bien la dirección.
|
251
281
|
not_in_any_organizations: ¡Parece que no estás en ninguna organización todavía!
|
282
|
+
notification_subject:
|
283
|
+
custom: Anuncios generales
|
284
|
+
exam_authorization_request_updated: Cambios sobre inscripciones a exámenes
|
285
|
+
exam_registration: Inscripciones a exámenes habilitadas
|
252
286
|
notifications: Notificaciones
|
287
|
+
notifications_will_be_here: Tus notificaciones aparecerán aquí
|
253
288
|
notify_problem_with_exercise: Reportá un bug
|
254
289
|
office: Secretaría
|
255
290
|
only_landscape_support: Por favor, rotá tu tablet o celular para realizar ejercicios
|
@@ -272,6 +307,7 @@ es:
|
|
272
307
|
permissions: Permisos
|
273
308
|
please_fill_profile_data: ¡Completá tus datos personales para continuar!
|
274
309
|
please_validate: 'Estás a punto de ingresar al curso. Para poder ofrecerte una mejor experiencia, por favor validá que tus datos a continuación sean reales y correctos.'
|
310
|
+
preferences_updated_successfully: Tus preferencias se actualizaron correctamente
|
275
311
|
preview: Vista previa
|
276
312
|
preview_error: No se puede mostrar la vista previa. Revisá tu conexión a internet o probá con un mensaje más corto.
|
277
313
|
previous_exercise: Anterior
|
@@ -280,7 +316,7 @@ es:
|
|
280
316
|
profile_of: Perfil de %{username}
|
281
317
|
programming_since: Programando desde
|
282
318
|
progress: Progreso
|
283
|
-
|
319
|
+
publish_discussion: Publicar consulta
|
284
320
|
read_messages: Ver mensajes
|
285
321
|
refresh_or_wait: Si no se muestra automáticamente en unos segundos, presioná F5
|
286
322
|
reply_count:
|
@@ -373,6 +409,8 @@ es:
|
|
373
409
|
user_data_updated: Tus datos se actualizaron correctamente
|
374
410
|
user: Usuario
|
375
411
|
username: Nombre de usuario
|
412
|
+
verified_full_name: Nombre verificado
|
413
|
+
verified_full_name_notice: Tu nombre verificado fue provisto por %{organization}. Si hay algún error, por favor escribí a %{contact}.
|
376
414
|
view_details: Ver detalles
|
377
415
|
want_permissions: El siguiente usuario requiere permisos para la organización
|
378
416
|
we_miss_you: ¡Te extrañamos!
|
@@ -386,6 +424,7 @@ es:
|
|
386
424
|
wrong_answer: La respuesta no es correcta
|
387
425
|
years: años
|
388
426
|
you_earned: Ganaste
|
427
|
+
you_have_a_new_notification: ¡Tenés una nueva notificación!
|
389
428
|
you_must_sign_in_before_submitting: Tenés que iniciar sesión antes de empezar a enviar tus soluciones
|
390
429
|
you_never_submitted_solutions: Parece que nunca enviaste soluciones desde que creaste tu cuenta.
|
391
430
|
your_new_organization: tu nueva organización
|
@@ -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'
|
@@ -36,6 +37,8 @@ pt:
|
|
36
37
|
blocked_forum_explanation: Você está no meio de um exame agora?
|
37
38
|
cancel: Cancelar
|
38
39
|
certificate: Certificado
|
40
|
+
certificate_available: Seu certificado já está disponível
|
41
|
+
certificate_download: Baixe-o do anexo deste e-mail ou visualize-o em seu perfil Mumuki.
|
39
42
|
certificates: Certificados
|
40
43
|
certificates_will_be_here: Seus certificados nesta organização aparecerão aqui
|
41
44
|
certificate_verified_legend: "A conta de <strong>% {full_name} </strong> foi verificada. Mumuki certifica a conclusão com sucesso de <strong>% {description} </strong>."
|
@@ -53,6 +56,7 @@ pt:
|
|
53
56
|
confirm: Confirme
|
54
57
|
confirm_reset: Você está prestes a reiniciar seu exercício. Você quer continuar?
|
55
58
|
confirm_restart: Você está prestes a apagar o seu progresso neste guia. Você quer continuar?
|
59
|
+
congratulations: Parabéns!
|
56
60
|
console: Consola
|
57
61
|
contact_administrator: Se você acha que é um erro, entre em contato com %{link}
|
58
62
|
content: Conteúdo
|
@@ -88,9 +92,12 @@ pt:
|
|
88
92
|
disabled_explanation: Você está tentando acessar um recurso que foi desativado ou removido permanentemente
|
89
93
|
disabled_organization_explanation: Este curso terminou
|
90
94
|
discussion_description_placeholder: Você pode adicionar mais informações sobre sua dúvida
|
91
|
-
new_discussion_message: Nova
|
95
|
+
new_discussion_message: Nova resposta em %{title}
|
96
|
+
discussion_created_by: Criada por
|
92
97
|
discussion_updated: Consulta actualizada
|
93
98
|
discussions: Consultas
|
99
|
+
discussions_read: Não lidas
|
100
|
+
discussions_unread: Não lidos
|
94
101
|
discussions_will_be_here: As perguntas que você fizer no espaço de consulta aparecerão aqui.
|
95
102
|
download: Faça o download do que você fez
|
96
103
|
edit: Editar
|
@@ -135,7 +142,8 @@ pt:
|
|
135
142
|
expected_state: Tabuleiro esperado
|
136
143
|
explain_redirect: Percebemos que você se registrou em outra organização.
|
137
144
|
failed: Sua solução não passou as provas
|
138
|
-
faqs:
|
145
|
+
faqs: Informação importante
|
146
|
+
faqs_abbreviated: Informação
|
139
147
|
feedback: Problemas que encontramos
|
140
148
|
female: Feminino
|
141
149
|
file_exceeds_max_size: "O tamanho do arquivo não deve exceder %{size_kb}kb. Selecione outro arquivo."
|
@@ -162,6 +170,7 @@ pt:
|
|
162
170
|
home: Home
|
163
171
|
hour: hora
|
164
172
|
hours: horas
|
173
|
+
i_want_emails_of: Quero receber e-mails de
|
165
174
|
important_info: Informação importante
|
166
175
|
initial_state: Tabuleiro inicial
|
167
176
|
insert_file_name: Insira um nome de arquivo
|
@@ -172,6 +181,7 @@ pt:
|
|
172
181
|
kids_default_success: Você fez muito bem!
|
173
182
|
language: Linguagem
|
174
183
|
languages: Linguagens
|
184
|
+
last_message: Última mensagem
|
175
185
|
last_name: Sobrenome
|
176
186
|
last_submission_date: Última solução
|
177
187
|
latest_exercises: Últimos exercícios
|
@@ -187,13 +197,33 @@ pt:
|
|
187
197
|
loading: Carregando
|
188
198
|
load_solution_into_console: Carregue a solução no console
|
189
199
|
locked_content: 'Este conteúdo será desbloqueado quando você terminar os capítulos anteriores'
|
200
|
+
mailer:
|
201
|
+
title:
|
202
|
+
exam_authorization_request_updated: Você tem alterações no registro do seu exame
|
203
|
+
exam_authorization_request_rejected: Inscrição rejeitada
|
204
|
+
exam_registration: Abertura de inscrições
|
205
|
+
custom: Você tem uma nova notificação!
|
206
|
+
subtitle:
|
207
|
+
exam_authorization_request_approved: Seu pedido de inscrição para o exame foi aprovado.
|
208
|
+
exam_authorization_request_rejected: Sua inscrição para o exame foi rejeitada porque os requisitos não foram atendidos.
|
209
|
+
exam_registration: Agora você pode se inscrever para o exame!
|
210
|
+
text:
|
211
|
+
exam_authorization_request_approved: Você poderá fazer o exame em %{exam_start_date} ao entrar na plataforma. Êxitos!
|
212
|
+
exam_authorization_request_rejected: Não te desanimes! Você fez um grande esforço e esperamos que continue aprendendo programação.
|
213
|
+
exam_registration: Você tem tempo para se registrar até o exam_registration_deadline. Para que seu registro seja aceito, você deve atender aos requisitos.
|
214
|
+
button:
|
215
|
+
exam_registration: Assinar o exame
|
216
|
+
exam_authorization_request_approved: Vá para a plataforma
|
217
|
+
exam_authorization_request_rejected: Meus exames
|
218
|
+
custom: Minhas notificações
|
190
219
|
male: Masculino
|
220
|
+
manage_notification_subscriptions: Gerenciar suas notificações
|
221
|
+
manage_notifications: Gerenciar notificações
|
191
222
|
manual_evaluation_pending: Obrigado por enviar sua solução! Seus professores irão corrigi-lo em breve
|
192
223
|
medal: Medalha
|
193
224
|
message: Mensagem
|
194
225
|
message_deleted: Esta mensagem foi excluída porque %{motive}, o que viola as %{forum_terms}.
|
195
226
|
messages: Mensagens
|
196
|
-
messages_error: As mensagens acima não estão disponíveis no momento. Eu tentei novamente mais tarde!
|
197
227
|
mais tarde!
|
198
228
|
messages_pluralized:
|
199
229
|
one: Mensagem
|
@@ -211,9 +241,9 @@ pt:
|
|
211
241
|
you_are: Você está cuidando
|
212
242
|
you_will_confirmation: Você vai cuidar dessa consulta. Se mudar de ideia, clique no botão novamente.
|
213
243
|
you_wont_confirmation: Você não vai cuidar dessa consulta.
|
214
|
-
more_messages: Ver as mensagens anteriores
|
215
244
|
my_account: Minha conta
|
216
245
|
my_doubts: Minhas duvidas
|
246
|
+
my_notifications: Minhas notificações
|
217
247
|
my_profile: Meu perfil
|
218
248
|
name: Nome
|
219
249
|
navigation_continue: "Próximo %{kind}: %{sibling}"
|
@@ -242,7 +272,12 @@ pt:
|
|
242
272
|
not_found: A página que você pesquisou não existe!
|
243
273
|
not_found_explanation: Olhe se você escreveu o endereço corretamente.
|
244
274
|
not_in_any_organizations: Parece que você ainda não está em nenhuma organização!
|
275
|
+
notification_subject:
|
276
|
+
custom: Anúncios gerais
|
277
|
+
exam_authorization_request_updated: Mudanças no registro do exame
|
278
|
+
exam_registration: Inscrição para exames qualificados
|
245
279
|
notifications: Notificações
|
280
|
+
notifications_will_be_here: Suas notificações aparecerão aqui
|
246
281
|
notify_problem_with_exercise: Relatar um erro
|
247
282
|
office: Secretariado
|
248
283
|
only_landscape_support: Por favor, gire seu tablet ou celular para realizar exercícios
|
@@ -263,6 +298,7 @@ pt:
|
|
263
298
|
permissions: Permissões
|
264
299
|
please_fill_profile_data: Preencha suas informações pessoais para continuar!
|
265
300
|
please_validate: Você está prestes a entrar no curso. Para oferecer uma experiência melhor, valide que seus dados abaixo sejam reais e corretos.
|
301
|
+
preferences_updated_successfully: Suas preferências foram atualizadas com sucesso
|
266
302
|
preview: Vista prévia
|
267
303
|
preview_error: A visualizaçao não pode ser mostrada. Verifique sua conexão com a internet ou tente com uma mensagem mais curta.
|
268
304
|
previous_exercise: Anterior
|
@@ -271,7 +307,7 @@ pt:
|
|
271
307
|
profile_of: Perfil de %{username}
|
272
308
|
programming_since: Sou programador
|
273
309
|
progress: Progresso
|
274
|
-
|
310
|
+
publish_discussion: Postar consulta
|
275
311
|
read_messages: Ver mensagens
|
276
312
|
refresh_or_wait: Se não mostrar automaticamente em alguns segundos, pressione F5
|
277
313
|
reply_count:
|
@@ -355,6 +391,8 @@ pt:
|
|
355
391
|
user: Usuário
|
356
392
|
user_data_updated: Os seus dados foram atualizados corretamente
|
357
393
|
username: Nome de usuário
|
394
|
+
verified_full_name: Nome verificado
|
395
|
+
verified_full_name_notice: Seu nome verificado foi fornecido por %{organization}. Se houver algum erro, escreva um e-mail para %{contact}.
|
358
396
|
view_details: Ver detalhes
|
359
397
|
want_permissions: O próximo usuário requer permissões para a organização
|
360
398
|
week_of: Semana de %{date}
|
@@ -363,5 +401,6 @@ pt:
|
|
363
401
|
wrong_answer: A resposta não é correta
|
364
402
|
years: anos
|
365
403
|
you_earned: Você ganhou
|
404
|
+
you_have_a_new_notification: Você tem uma nova notificação!
|
366
405
|
you_must_sign_in_before_submitting: Você deve fazer o login antes de começar a enviar suas soluções
|
367
406
|
your_new_organization: sua nova organização
|
@@ -107,7 +107,9 @@ describe Api::OrganizationsController, type: :controller, organization_workspace
|
|
107
107
|
name: 'a-name',
|
108
108
|
public: false,
|
109
109
|
book: book.slug,
|
110
|
-
locale: 'es'
|
110
|
+
locale: 'es',
|
111
|
+
time_zone: 'Buenos Aires'
|
112
|
+
}
|
111
113
|
end
|
112
114
|
|
113
115
|
context 'with the admin permissions' do
|
@@ -138,6 +140,7 @@ describe Api::OrganizationsController, type: :controller, organization_workspace
|
|
138
140
|
description: 'A description',
|
139
141
|
book: book.slug,
|
140
142
|
locale: 'es',
|
143
|
+
time_zone: 'Montevideo',
|
141
144
|
public: false,
|
142
145
|
login_methods: %w(facebook github),
|
143
146
|
logo_url: 'http://a-logo-url.com',
|
@@ -155,6 +158,7 @@ describe Api::OrganizationsController, type: :controller, organization_workspace
|
|
155
158
|
it { expect(organization.extension_javascript).to eq "window.a = function() { }" }
|
156
159
|
it { expect(organization.terms_of_service).to eq 'A TOS' }
|
157
160
|
it { expect(organization.faqs).to eq 'some faqs' }
|
161
|
+
it { expect(organization.time_zone).to eq 'Montevideo' }
|
158
162
|
end
|
159
163
|
|
160
164
|
context 'with missing values' do
|
@@ -166,6 +170,7 @@ describe Api::OrganizationsController, type: :controller, organization_workspace
|
|
166
170
|
{
|
167
171
|
errors: {
|
168
172
|
name: ["can't be blank"],
|
173
|
+
time_zone: ["can't be blank"],
|
169
174
|
locale: ['is not included in the list']
|
170
175
|
}
|
171
176
|
}
|
@@ -31,7 +31,7 @@ require 'spec_helper'
|
|
31
31
|
it { expect(User.last.uid).to eq 'agus@mumuki.org' }
|
32
32
|
it { expect(User.last.email).to eq 'agus@mumuki.org' }
|
33
33
|
it { expect(User.last.gender).to eq 'male' }
|
34
|
-
it { expect(User.last.birthdate).to eq '2010-08-25'.
|
34
|
+
it { expect(User.last.birthdate).to eq '2010-08-25'.in_time_zone }
|
35
35
|
it { expect(User.last.permissions.has_permission? role, 'anorganization/acode').to be true }
|
36
36
|
|
37
37
|
end
|
@@ -19,4 +19,52 @@ describe UsersController, type: :controller, organization_workspace: :test do
|
|
19
19
|
it { expect(User.last.verified_first_name).to be_nil }
|
20
20
|
end
|
21
21
|
|
22
|
+
context 'notifications' do
|
23
|
+
context 'get' do
|
24
|
+
context 'when logged in' do
|
25
|
+
before { set_current_user! user }
|
26
|
+
before { get :notifications }
|
27
|
+
|
28
|
+
it { expect(response.status).to eq 200 }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when not logged in' do
|
32
|
+
before { get :notifications }
|
33
|
+
|
34
|
+
it { expect(response.status).to eq 302 }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'toggle_read' do
|
39
|
+
before { set_current_user! user }
|
40
|
+
before { post :toggle_read, params: { id: notification.id } }
|
41
|
+
|
42
|
+
context 'on toggling own notification read' do
|
43
|
+
let(:notification) { create :notification, user: user }
|
44
|
+
|
45
|
+
it { expect(response.status).to eq 302 }
|
46
|
+
it { expect(notification.reload.read?).to be true }
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'on toggling someone else\'s notification read' do
|
50
|
+
let(:notification) { create :notification, user: create(:user) }
|
51
|
+
|
52
|
+
it { expect(response.status).to eq 404 }
|
53
|
+
it { expect(notification.reload.read?).to be false }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'notifications/manage' do
|
58
|
+
context 'post' do
|
59
|
+
let(:user) { create :user, ignored_notifications: [] }
|
60
|
+
|
61
|
+
before { set_current_user! user }
|
62
|
+
before { post :manage_notifications, params: { notifications: {'custom' => 1, 'exam_registrations' => 0 } } }
|
63
|
+
|
64
|
+
it { expect(response.status).to eq 302 }
|
65
|
+
it { expect(flash.notice).to eq 'Preferences updated successfully' }
|
66
|
+
it { expect(user.reload.ignored_notifications).to eq ['exam_registrations'] }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
22
70
|
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 20210803175124) do
|
14
14
|
|
15
15
|
# These are extensions that must be enabled in order to support this database
|
16
16
|
enable_extension "plpgsql"
|
@@ -193,6 +193,7 @@ ActiveRecord::Schema.define(version: 20210518100153) do
|
|
193
193
|
t.bigint "organization_id"
|
194
194
|
t.datetime "created_at", null: false
|
195
195
|
t.datetime "updated_at", null: false
|
196
|
+
t.boolean "processed", default: false
|
196
197
|
t.index ["organization_id"], name: "index_exam_registrations_on_organization_id"
|
197
198
|
end
|
198
199
|
|
@@ -384,7 +385,9 @@ ActiveRecord::Schema.define(version: 20210518100153) do
|
|
384
385
|
t.integer "deletion_motive"
|
385
386
|
t.datetime "deleted_at"
|
386
387
|
t.bigint "deleted_by_id"
|
388
|
+
t.bigint "assignment_id"
|
387
389
|
t.index ["approved_by_id"], name: "index_messages_on_approved_by_id"
|
390
|
+
t.index ["assignment_id"], name: "index_messages_on_assignment_id"
|
388
391
|
t.index ["deleted_by_id"], name: "index_messages_on_deleted_by_id"
|
389
392
|
end
|
390
393
|
|
@@ -397,6 +400,10 @@ ActiveRecord::Schema.define(version: 20210518100153) do
|
|
397
400
|
t.bigint "organization_id"
|
398
401
|
t.datetime "created_at", null: false
|
399
402
|
t.datetime "updated_at", null: false
|
403
|
+
t.integer "subject"
|
404
|
+
t.text "custom_title"
|
405
|
+
t.text "custom_content_plain_text"
|
406
|
+
t.text "custom_content_html"
|
400
407
|
t.index ["organization_id"], name: "index_notifications_on_organization_id"
|
401
408
|
t.index ["target_type", "target_id"], name: "index_notifications_on_target_type_and_target_id"
|
402
409
|
t.index ["user_id"], name: "index_notifications_on_user_id"
|
@@ -527,6 +534,7 @@ ActiveRecord::Schema.define(version: 20210518100153) do
|
|
527
534
|
t.boolean "uppercase_mode"
|
528
535
|
t.string "delete_account_token"
|
529
536
|
t.datetime "delete_account_token_expiration_date"
|
537
|
+
t.text "ignored_notifications"
|
530
538
|
t.index ["avatar_type", "avatar_id"], name: "index_users_on_avatar_type_and_avatar_id"
|
531
539
|
t.index ["disabled_at"], name: "index_users_on_disabled_at"
|
532
540
|
t.index ["last_organization_id"], name: "index_users_on_last_organization_id"
|