mumuki-laboratory 9.10.0 → 9.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +15 -9
- data/app/assets/javascripts/mumuki_laboratory/application/confirmation.js +10 -8
- data/app/assets/javascripts/mumuki_laboratory/application/editors.js +5 -3
- data/app/assets/javascripts/mumuki_laboratory/application/progress.js +4 -4
- data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +12 -1
- data/app/assets/javascripts/mumuki_laboratory/application/submissions-store.js +8 -2
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss +11 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_faqs.scss +1 -1
- data/app/controllers/application_controller.rb +8 -4
- data/app/controllers/book_controller.rb +6 -0
- data/app/controllers/chapters_controller.rb +9 -0
- data/app/controllers/discussions_controller.rb +9 -0
- data/app/controllers/exercises_controller.rb +5 -0
- data/app/controllers/faqs_controller.rb +4 -0
- data/app/controllers/lessons_controller.rb +9 -0
- data/app/controllers/users_controller.rb +37 -0
- data/app/helpers/application_helper.rb +2 -2
- data/app/helpers/concerns/with_student_path_navigation.rb +1 -1
- data/app/helpers/content_view_helper.rb +8 -0
- data/app/helpers/discussions_helper.rb +1 -1
- data/app/helpers/icons_helper.rb +1 -1
- data/app/helpers/links_helper.rb +5 -1
- data/app/helpers/menu_bar_helper.rb +8 -5
- data/app/helpers/notifications_helper.rb +13 -0
- data/app/helpers/overlapped_buttons_helper.rb +2 -1
- data/app/helpers/time_zone_helper.rb +5 -0
- data/app/helpers/user_menu_helper.rb +4 -0
- data/app/mailers/user_mailer.rb +11 -1
- data/app/views/book/show.html.erb +16 -7
- data/app/views/chapters/show.html.erb +1 -0
- data/app/views/discussions/_new_message.html.erb +1 -1
- data/app/views/discussions/show.html.erb +5 -5
- data/app/views/exercise_solutions/_results.html.erb +1 -1
- data/app/views/guides/_guide.html.erb +2 -2
- data/app/views/layouts/_progress_bar.html.erb +1 -0
- data/app/views/layouts/_progress_listing.html.erb +1 -0
- data/app/views/layouts/_user_menu.html.erb +1 -0
- data/app/views/layouts/application.html.erb +4 -0
- data/app/views/layouts/exercise_inputs/forms/_kids_form.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +6 -2
- data/app/views/layouts/exercise_inputs/read_only_editors/_code.html.erb +1 -1
- data/app/views/layouts/exercise_inputs/read_only_editors/_hidden.html.erb +0 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_files.html.erb +4 -4
- data/app/views/layouts/exercise_inputs/read_only_editors/_upload.html.erb +0 -0
- 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 +0 -4
- data/app/views/user_mailer/2nd_reminder.html.erb +7 -349
- data/app/views/user_mailer/2nd_reminder.text.erb +0 -4
- data/app/views/user_mailer/3rd_reminder.html.erb +7 -349
- data/app/views/user_mailer/3rd_reminder.text.erb +0 -4
- 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 +0 -3
- data/app/views/user_mailer/no_submissions_reminder.html.erb +7 -349
- data/app/views/user_mailer/no_submissions_reminder.text.erb +0 -4
- 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/manage_notifications.html.erb +26 -0
- data/app/views/users/notifications.html.erb +54 -0
- data/config/routes.rb +4 -0
- data/lib/mumuki/laboratory.rb +1 -0
- data/lib/mumuki/laboratory/controllers.rb +1 -0
- data/lib/mumuki/laboratory/controllers/authorization.rb +5 -1
- data/lib/mumuki/laboratory/controllers/notifications.rb +2 -2
- data/lib/mumuki/laboratory/controllers/validate_access_mode.rb +15 -0
- data/lib/mumuki/laboratory/locales/en.yml +35 -1
- data/lib/mumuki/laboratory/locales/es-CL.yml +35 -1
- data/lib/mumuki/laboratory/locales/es.yml +36 -2
- data/lib/mumuki/laboratory/locales/pt.yml +35 -1
- data/lib/mumuki/laboratory/mailers/message_delivery.rb +15 -0
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/spec/controllers/users_controller_spec.rb +48 -0
- data/spec/dummy/db/schema.rb +7 -1
- data/spec/features/menu_bar_spec.rb +3 -2
- data/spec/features/not_found_private_flow_spec.rb +1 -1
- data/spec/features/notifications_flow_spec.rb +2 -1
- data/spec/features/read_only_flow_spec.rb +920 -0
- data/spec/javascripts/editors-spec.js +21 -3
- data/spec/javascripts/submissions-store-spec.js +11 -0
- data/spec/mailers/previews/user_mailer_preview.rb +87 -1
- metadata +35 -19
- 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
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: "user_mailer/notifications/#{@notification.subject}" %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% if @notification.custom_content_html.present? %>
|
2
|
+
<%= render inline: @notification.custom_content_html %>
|
3
|
+
<% else %>
|
4
|
+
<%= render partial: 'user_mailer/mail_template', locals: {
|
5
|
+
title: t("mailer.title.custom"),
|
6
|
+
subtitle: '',
|
7
|
+
text: @notification.custom_content_plain_text,
|
8
|
+
button: t("mailer.button.custom"),
|
9
|
+
url: @organization.url_for('/user/notifications')
|
10
|
+
} %>
|
11
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: "user_mailer/notifications/exam_authorization_request_updated/#{@notification.target.status}" %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= render partial: 'user_mailer/mail_template', locals: {
|
2
|
+
title: t("mailer.title.exam_registration"),
|
3
|
+
subtitle: t("mailer.subtitle.exam_registration"),
|
4
|
+
text: t("mailer.text.exam_registration", exam_registration_deadline: local_time(@notification.target.end_time, @organization.time_zone)),
|
5
|
+
button: t("mailer.button.exam_registration"),
|
6
|
+
url: exam_registration_url(@organization, @notification.target)
|
7
|
+
} %>
|
data/app/views/user_mailer/notifications/exam_authorization_request_updated/_approved.html.erb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= render partial: 'user_mailer/mail_template', locals: {
|
2
|
+
title: t(:congratulations),
|
3
|
+
subtitle: t('mailer.subtitle.exam_authorization_request_approved'),
|
4
|
+
text: t('mailer.text.exam_authorization_request_approved', exam_start_date: local_time(@notification.target.exam.start_time, @organization.time_zone)),
|
5
|
+
button: t('mailer.button.exam_authorization_request_approved'),
|
6
|
+
url: @organization.url
|
7
|
+
} %>
|
data/app/views/user_mailer/notifications/exam_authorization_request_updated/_rejected.html.erb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= render partial: 'user_mailer/mail_template', locals: {
|
2
|
+
title: t("mailer.title.exam_authorization_request_rejected"),
|
3
|
+
subtitle: t("mailer.subtitle.exam_authorization_request_rejected"),
|
4
|
+
text: t("mailer.text.exam_authorization_request_rejected"),
|
5
|
+
button: t("mailer.button.exam_authorization_request_rejected"),
|
6
|
+
url: @organization.url_for('/user/exam_authorizations')
|
7
|
+
} %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%= content_for :breadcrumbs do %>
|
2
|
+
<%= breadcrumbs_for_my_account %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<div class="row">
|
6
|
+
<%= form_for :notifications, html: {class: 'mu-form'} do |f| %>
|
7
|
+
<div class="mu-tab-body">
|
8
|
+
<div class="mu-user-header">
|
9
|
+
<h1><%= t(:manage_notifications) %></h1>
|
10
|
+
<div class="mu-profile-actions d-none d-md-block">
|
11
|
+
<a class="btn btn-secondary" href="<%= notifications_user_path %>">Cancelar</a>
|
12
|
+
<button type="submit" class="btn btn-complementary"><%= t :save %></button>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<p><%= t(:i_want_emails_of) %>:</p>
|
17
|
+
<% Notification.subjects.keys.each do |subject| %>
|
18
|
+
<div class="form-check">
|
19
|
+
<%= label_tag subject, t("notification_subject.#{subject}"), class: 'form-check-label' %>
|
20
|
+
<%= f.check_box subject, checked: !@user.ignored_notifications.include?(subject), class: 'form-check-input' %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
24
|
+
<% end %>
|
25
|
+
</div>
|
26
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<%= content_for :breadcrumbs do %>
|
2
|
+
<%= breadcrumbs_for_my_account %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<div class="row">
|
6
|
+
<%= render partial: 'layouts/user_menu' %>
|
7
|
+
|
8
|
+
<div class="col-md-9 mu-tab-body">
|
9
|
+
<div class="mu-user-header d-flex justify-content-between">
|
10
|
+
<span>
|
11
|
+
<h1><%= t(:notifications) %></h1>
|
12
|
+
</span>
|
13
|
+
<span>
|
14
|
+
<a href="notifications/manage" class="btn btn-complementary"><%= t(:manage_notifications) %></a>
|
15
|
+
</span>
|
16
|
+
</div>
|
17
|
+
<% if @notifications.empty? %>
|
18
|
+
<div class="mu-tab-body">
|
19
|
+
<%= t :notifications_will_be_here %>
|
20
|
+
</div>
|
21
|
+
<% else %>
|
22
|
+
|
23
|
+
|
24
|
+
<div class="table-responsive mb-3">
|
25
|
+
<table class="table">
|
26
|
+
<tr class="fw-bold">
|
27
|
+
<td></td>
|
28
|
+
<td><%= t(:content) %></td>
|
29
|
+
<td><%= t(:created_at) %></td>
|
30
|
+
</tr>
|
31
|
+
|
32
|
+
<% @notifications.each do |notification| %>
|
33
|
+
<tr class="<%= background_for_notification notification %>" >
|
34
|
+
<td class="col-md-1">
|
35
|
+
<%= link_to icon_for_read(notification.read?), "notifications/#{notification.id}/toggle_read", tooltip_options(:toggle_read).merge(method: :post, role: :button) %>
|
36
|
+
</td>
|
37
|
+
<td class="col-md-8 text-break">
|
38
|
+
<%= render partial: "notifications/#{notification.subject}", locals: { notification: notification } %>
|
39
|
+
</td>
|
40
|
+
<td class="col-md-3">
|
41
|
+
<%= t(:time_since, time: time_ago_in_words(notification.created_at)) %>
|
42
|
+
</td>
|
43
|
+
</tr>
|
44
|
+
<% end %>
|
45
|
+
</table>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
<div class="notification-pagination">
|
49
|
+
<%= paginate @notifications, nav_class: 'pagination' %>
|
50
|
+
</div>
|
51
|
+
<% end %>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
|
data/config/routes.rb
CHANGED
@@ -72,6 +72,10 @@ Rails.application.routes.draw do
|
|
72
72
|
get :certificates
|
73
73
|
get :exam_authorizations
|
74
74
|
|
75
|
+
get :notifications
|
76
|
+
post 'notifications/:id/toggle_read', action: :toggle_read
|
77
|
+
get 'notifications/manage', action: :show_manage_notifications
|
78
|
+
post 'notifications/manage', action: :manage_notifications
|
75
79
|
end
|
76
80
|
|
77
81
|
resources :faqs, only: [:index]
|
data/lib/mumuki/laboratory.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
module Mumuki::Laboratory::Controllers::Authorization
|
2
2
|
def authorize_if_private!
|
3
3
|
return if Organization.current.public? || from_sessions?
|
4
|
-
authorize!
|
4
|
+
authorize! authorization_minimum_role
|
5
5
|
end
|
6
6
|
|
7
7
|
def authorization_slug
|
8
8
|
Organization.current.slug
|
9
9
|
end
|
10
|
+
|
11
|
+
def authorization_minimum_role
|
12
|
+
:student
|
13
|
+
end
|
10
14
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Mumuki::Laboratory::Controllers::ValidateAccessMode
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
before_action :validate_accessible!, only: :show
|
6
|
+
end
|
7
|
+
|
8
|
+
def validate_accessible!
|
9
|
+
current_access_mode.validate_content_here! subject_container
|
10
|
+
end
|
11
|
+
|
12
|
+
def subject_container
|
13
|
+
subject
|
14
|
+
end
|
15
|
+
end
|
@@ -37,6 +37,8 @@ en:
|
|
37
37
|
cancel: Cancel
|
38
38
|
cancel_subscription: Cancel your subscription.
|
39
39
|
certificate: Certificate
|
40
|
+
certificate_available: Your certificate is available!
|
41
|
+
certificate_download: You can find it attached to this email or in your Mumuki profile
|
40
42
|
certificates: Certificates
|
41
43
|
certificates_will_be_here: Your certificates in the organization will appear here.
|
42
44
|
certificate_verified_legend: "<strong>%{full_name}</strong>'s account is verified. Mumuki certifies their successful completion of <strong>%{description}</strong>."
|
@@ -56,6 +58,7 @@ en:
|
|
56
58
|
confirm: Confirm
|
57
59
|
confirm_reset: You are about to restart your exercise. Do you want to proceed?
|
58
60
|
confirm_restart: You are about to delete your progress for this guide. Do you want to proceed?
|
61
|
+
congratulations: Congratulations!
|
59
62
|
console: Console
|
60
63
|
contact_administrator: 'If you think this is not supposed to happen, please contact %{link}'
|
61
64
|
content: Content
|
@@ -86,7 +89,7 @@ en:
|
|
86
89
|
disabled_organization_explanation: This path has already finished.
|
87
90
|
discussion_created_by: Created by
|
88
91
|
discussion_description_placeholder: You can add more information regarding your doubt.
|
89
|
-
new_discussion_message: New
|
92
|
+
new_discussion_message: New reply on %{title}
|
90
93
|
discussion_updated: Discussion updated
|
91
94
|
discussions: Discussions
|
92
95
|
discussions_read: Read
|
@@ -162,6 +165,7 @@ en:
|
|
162
165
|
hidden_done: 'Good!'
|
163
166
|
history: History
|
164
167
|
home: Home
|
168
|
+
i_want_emails_of: I want to receive emails of
|
165
169
|
important_info: Important information
|
166
170
|
initial_state: Initial board
|
167
171
|
insert_file_name: Insert a file name
|
@@ -189,7 +193,28 @@ en:
|
|
189
193
|
loading: Loading
|
190
194
|
load_solution_into_console: Load your solution into the console
|
191
195
|
locked_content: 'This content will be unlocked when you finish previous chapters'
|
196
|
+
mailer:
|
197
|
+
title:
|
198
|
+
exam_authorization_request_updated: There are updates in your exam registration
|
199
|
+
exam_authorization_request_rejected: Exam registration rejected
|
200
|
+
exam_registration: Exam registrations open
|
201
|
+
custom: You have a new notification!
|
202
|
+
subtitle:
|
203
|
+
exam_authorization_request_approved: Your registration request to the exam has been approved.
|
204
|
+
exam_authorization_request_rejected: Your registration request to the exam has been rejected because the requirements weren't met.
|
205
|
+
exam_registration: ¡You can register for the exam!
|
206
|
+
text:
|
207
|
+
exam_authorization_request_approved: You can sit for the exam on %{exam_start_date} by going into the platform. ¡Good luck!
|
208
|
+
exam_authorization_request_rejected: ¡Don't be upset! You did a great job and we hope you'll keep learning programming.
|
209
|
+
exam_registration: You have until %{exam_registration_deadline} to sign up. In order to be approved, you must meet the requirements.
|
210
|
+
button:
|
211
|
+
exam_registration: Sign up for the exam
|
212
|
+
exam_authorization_request_approved: Go to the platform
|
213
|
+
exam_authorization_request_rejected: My exams
|
214
|
+
custom: My notifications
|
192
215
|
male: Male
|
216
|
+
manage_notification_subscriptions: Manage your notification subscriptions
|
217
|
+
manage_notifications: Manage notifications
|
193
218
|
manual_evaluation_pending: Thanks for submitting your solution! It will be revised by the course teachers soon
|
194
219
|
medal: Medal
|
195
220
|
message: Message
|
@@ -211,6 +236,7 @@ en:
|
|
211
236
|
you_wont_confirmation: You won't take care of this discussion.
|
212
237
|
my_account: My account
|
213
238
|
my_doubts: My doubts
|
239
|
+
my_notifications: My notifications
|
214
240
|
my_profile: My profile
|
215
241
|
my_submissions: My Submissions
|
216
242
|
name: Name
|
@@ -238,7 +264,12 @@ en:
|
|
238
264
|
no_useful_result: Didn't find what you were looking for?
|
239
265
|
not_found_explanation: 'You may have mistyped the address or the page may have moved.'
|
240
266
|
not_in_any_organizations: It seems you aren't in any organizations yet!
|
267
|
+
notification_subject:
|
268
|
+
custom: General announcements
|
269
|
+
exam_authorization_request_updated: Exam registrations updated
|
270
|
+
exam_registration: Exam registrations enabled
|
241
271
|
notifications: Notifications
|
272
|
+
notifications_will_be_here: Notifications will be here
|
242
273
|
notify_problem_with_exercise: Report a bug
|
243
274
|
office: Office
|
244
275
|
only_landscape_support: Please, rotate your tablet or cellphone to continue practicing
|
@@ -258,6 +289,7 @@ en:
|
|
258
289
|
permissions: Permissions
|
259
290
|
please_fill_profile_data: Please complete your profile data to continue!
|
260
291
|
please_validate: 'Please validate your data before continue:'
|
292
|
+
preferences_updated_successfully: Preferences updated successfully
|
261
293
|
preview: Preview
|
262
294
|
preview_error: The preview cannot be shown. Check your internet connection or try with a shorter message.
|
263
295
|
previous_exercise: Previous
|
@@ -334,6 +366,7 @@ en:
|
|
334
366
|
to_opened: Reopen
|
335
367
|
to_pending_review: Mark as solved
|
336
368
|
to_solved: Mark as solved
|
369
|
+
toggle_read: "Toggle read/unread"
|
337
370
|
unauthorized_explanation: You have no permissions for this content. Maybe you logged in with another account.
|
338
371
|
total: Total
|
339
372
|
undo_upvote: Undo upvote
|
@@ -361,6 +394,7 @@ en:
|
|
361
394
|
wrong_answer: The answer is wrong
|
362
395
|
years: years old
|
363
396
|
you_earned: You earned
|
397
|
+
you_have_a_new_notification: You have a new notification!
|
364
398
|
you_must_sign_in_before_submitting: You must sign in before submitting your solutions
|
365
399
|
you_never_submitted_solutions: It seems that you've never submitted solutions since you created your account.
|
366
400
|
your_new_organization: your new organization
|
@@ -35,6 +35,8 @@ es-CL:
|
|
35
35
|
blocked_forum_explanation: ¿Puede que estés en medio de un examen?
|
36
36
|
cancel_subscription: Cancela tu subscripción.
|
37
37
|
certificate: Certificado
|
38
|
+
certificate_available: Ya está disponible tu certificado
|
39
|
+
certificate_download: Descargalo desde el adjunto de este mail o visualizalo en tu perfil de Mumuki
|
38
40
|
certificates: Certificados
|
39
41
|
certificates_will_be_here: Tus certificados en esta organización aparecerán aquí
|
40
42
|
certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> ha sido verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
|
@@ -55,6 +57,7 @@ es-CL:
|
|
55
57
|
confirm: Confirmar
|
56
58
|
confirm_reset: Estás por reiniciar tu ejercicio. ¿Quieres continuar?
|
57
59
|
confirm_restart: Estás por borrar tu progreso en esta guía. ¿Quieres continuar?
|
60
|
+
congratulations: ¡Felicitaciones!
|
58
61
|
console: Consola
|
59
62
|
contact_administrator: 'Si piensas que es un error, comunícate con %{link}'
|
60
63
|
content: Contenido
|
@@ -87,7 +90,7 @@ es-CL:
|
|
87
90
|
details: Detalles
|
88
91
|
disabled_explanation: Estás intentando acceder a un recurso que fue deshabilitado o eliminado de forma permanente
|
89
92
|
disabled_organization_explanation: ¡Este recorrido ha finalizado!
|
90
|
-
new_discussion_message:
|
93
|
+
new_discussion_message: Respuesta nueva en %{title}
|
91
94
|
discussion_created_by: Creada por
|
92
95
|
discussion_updated: Consulta actualizada
|
93
96
|
discussions: Consultas
|
@@ -163,6 +166,7 @@ es-CL:
|
|
163
166
|
home: Inicio
|
164
167
|
hour: hora
|
165
168
|
hours: horas
|
169
|
+
i_want_emails_of: Quiero recibir emails de
|
166
170
|
important_info: Información importante
|
167
171
|
initial_state: Tablero inicial
|
168
172
|
insert_file_name: Ingresa un nombre de archivo
|
@@ -191,7 +195,28 @@ es-CL:
|
|
191
195
|
loading: Cargando
|
192
196
|
load_solution_into_console: Cargar la solución en la consola
|
193
197
|
locked_content: 'Éste contenido se desbloqueará cuando termines los capítulos anteriores'
|
198
|
+
mailer:
|
199
|
+
title:
|
200
|
+
exam_authorization_request_updated: Tenés cambios en tu inscripción al examen
|
201
|
+
exam_authorization_request_rejected: Inscripción rechazada
|
202
|
+
exam_registration: Apertura de inscripciones
|
203
|
+
custom: ¡Tenés una nueva notificación!
|
204
|
+
subtitle:
|
205
|
+
exam_authorization_request_approved: Tu solicitud de inscripción al examen fue aprobada.
|
206
|
+
exam_authorization_request_rejected: Tu solicitud de inscripción al examen fue rechazada ya que no se cumplieron los requisitos.
|
207
|
+
exam_registration: ¡Ya podés inscribirte al examen!
|
208
|
+
text:
|
209
|
+
exam_authorization_request_approved: Podrás rendir el examen el día %{exam_start_date} ingresando a la plataforma. ¡Éxitos!
|
210
|
+
exam_authorization_request_rejected: ¡No te desanimes! Hiciste un gran esfuerzo y esperamos que continúes aprendiendo programación.
|
211
|
+
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.
|
212
|
+
button:
|
213
|
+
exam_registration: Inscribirme al Examen
|
214
|
+
exam_authorization_request_approved: Ir a la plataforma
|
215
|
+
exam_authorization_request_rejected: Mis exámenes
|
216
|
+
custom: Mis notificaciones
|
194
217
|
male: Hombre
|
218
|
+
manage_notification_subscriptions: Administrá tus notificaciones
|
219
|
+
manage_notifications: Administrar notificaciones
|
195
220
|
manual_evaluation_pending: ¡Gracias por enviar tu solución! Tus docentes la corregirán pronto
|
196
221
|
medal: Medalla
|
197
222
|
message: Mensaje
|
@@ -215,6 +240,7 @@ es-CL:
|
|
215
240
|
you_wont_confirmation: No te vas a ocupar de esta consulta.
|
216
241
|
my_account: Mi cuenta
|
217
242
|
my_doubts: Mis consultas
|
243
|
+
my_notifications: Mis notificaciones
|
218
244
|
my_profile: Mi perfil
|
219
245
|
name: Nombre
|
220
246
|
navigation_continue: 'Siguiente %{kind}: %{sibling}'
|
@@ -244,7 +270,12 @@ es-CL:
|
|
244
270
|
not_found: ¡La página que buscaste no existe!
|
245
271
|
not_found_explanation: Fíjate si escribiste bien la dirección.
|
246
272
|
not_in_any_organizations: ¡Parece que no estás en ninguna organización todavía!
|
273
|
+
notification_subject:
|
274
|
+
custom: Anuncios generales
|
275
|
+
exam_authorization_request_updated: Cambios sobre inscripciones a exámenes
|
276
|
+
exam_registration: Inscripciones a exámenes habilitadas
|
247
277
|
notifications: Notificaciones
|
278
|
+
notifications_will_be_here: Tus notificaciones aparecerán aquí
|
248
279
|
notify_problem_with_exercise: Reporta un bug
|
249
280
|
office: Secretaría
|
250
281
|
only_landscape_support: Por favor, rota tu tablet o celular para realizar ejercicios
|
@@ -267,6 +298,7 @@ es-CL:
|
|
267
298
|
permissions: Permisos
|
268
299
|
please_fill_profile_data: ¡Completa tus datos personales para continuar!
|
269
300
|
please_validate: 'Estás a punto de ingresar al curso. Para poder ofrecerte una mejor experiencia, por favor valida que tus datos a continuación sean reales y correctos.'
|
301
|
+
preferences_updated_successfully: Tus preferencias se actualizaron correctamente
|
270
302
|
preview: Vista previa
|
271
303
|
preview_error: No se puede mostrar la vista previa. Revisa tu conexión a internet o prueba con un mensaje más corto.
|
272
304
|
previous_exercise: Anterior
|
@@ -346,6 +378,7 @@ es-CL:
|
|
346
378
|
to_opened: Reabrir
|
347
379
|
to_pending_review: Resolver
|
348
380
|
to_solved: Resolver
|
381
|
+
toggle_read: "Marcar como leído/no leído"
|
349
382
|
unauthorized_explanation: ¡Ups! Esto es lo que se conoce como %{error}, es decir que no iniciaste sesión.
|
350
383
|
total: Total
|
351
384
|
uncategorized: No categorizado
|
@@ -376,5 +409,6 @@ es-CL:
|
|
376
409
|
working: "Procesando"
|
377
410
|
wrong_answer: La respuesta no es correcta
|
378
411
|
you_earned: Ganaste
|
412
|
+
you_have_a_new_notification: ¡Tenés una nueva notificación!
|
379
413
|
you_must_sign_in_before_submitting: Tienes que iniciar sesión antes de empezar a enviar tus soluciones
|
380
414
|
you_never_submitted_solutions: Parece que nunca enviaste soluciones desde que creaste tu cuenta.
|
@@ -39,9 +39,11 @@ es:
|
|
39
39
|
cancel: Cancelar
|
40
40
|
cancel_subscription: Cancelá tu subscripción.
|
41
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>"
|
42
45
|
certificates: Certificados
|
43
46
|
certificates_will_be_here: Tus certificados en esta organización aparecerán acá
|
44
|
-
certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> está verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
|
45
47
|
chapter: Capítulo
|
46
48
|
chapters: Capítulos
|
47
49
|
chapter_finished_html: ¡Terminaste %{chapter}! ¡Felicitaciones!
|
@@ -58,6 +60,7 @@ es:
|
|
58
60
|
confirm: Confirmar
|
59
61
|
confirm_reset: Estás por reiniciar tu ejercicio. ¿Querés continuar?
|
60
62
|
confirm_restart: Estás por borrar tu progreso en esta guía. ¿Querés continuar?
|
63
|
+
congratulations: ¡Felicitaciones!
|
61
64
|
console: Consola
|
62
65
|
contact_administrator: 'Si pensás que es un error, comunicate con %{link}'
|
63
66
|
content: Contenido
|
@@ -95,7 +98,7 @@ es:
|
|
95
98
|
discussion_created_by: Creada por
|
96
99
|
discussion_description_placeholder: Podés agregar información para detallar más tu consulta
|
97
100
|
discussion_updated: Consulta actualizada
|
98
|
-
new_discussion_message:
|
101
|
+
new_discussion_message: Respuesta nueva en %{title}
|
99
102
|
discussions: Consultas
|
100
103
|
discussions_read: Leídas
|
101
104
|
discussions_unread: No leídas
|
@@ -172,6 +175,7 @@ es:
|
|
172
175
|
home: Inicio
|
173
176
|
hour: hora
|
174
177
|
hours: horas
|
178
|
+
i_want_emails_of: Quiero recibir emails de
|
175
179
|
important_info: Información importante
|
176
180
|
initial_state: Tablero inicial
|
177
181
|
insert_file_name: Ingresa un nombre de archivo
|
@@ -200,7 +204,28 @@ es:
|
|
200
204
|
loading: Cargando
|
201
205
|
load_solution_into_console: Cargar la solución en la consola
|
202
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
|
203
226
|
male: Hombre
|
227
|
+
manage_notification_subscriptions: Administrá tus notificaciones
|
228
|
+
manage_notifications: Administrar notificaciones
|
204
229
|
manual_evaluation_pending: ¡Gracias por enviar tu solución! Tus docentes la corregirán pronto
|
205
230
|
medal: Medalla
|
206
231
|
message: Mensaje
|
@@ -224,6 +249,7 @@ es:
|
|
224
249
|
you_wont_confirmation: No te vas a ocupar de esta consulta.
|
225
250
|
my_account: Mi cuenta
|
226
251
|
my_doubts: Mis consultas
|
252
|
+
my_notifications: Mis notificaciones
|
227
253
|
my_profile: Mi perfil
|
228
254
|
name: Nombre
|
229
255
|
navigation_continue: 'Siguiente %{kind}: %{sibling}'
|
@@ -253,7 +279,12 @@ es:
|
|
253
279
|
not_found: ¡La página que buscaste no existe!
|
254
280
|
not_found_explanation: Fijate si escribiste bien la dirección.
|
255
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
|
256
286
|
notifications: Notificaciones
|
287
|
+
notifications_will_be_here: Tus notificaciones aparecerán aquí
|
257
288
|
notify_problem_with_exercise: Reportá un bug
|
258
289
|
office: Secretaría
|
259
290
|
only_landscape_support: Por favor, rotá tu tablet o celular para realizar ejercicios
|
@@ -276,6 +307,7 @@ es:
|
|
276
307
|
permissions: Permisos
|
277
308
|
please_fill_profile_data: ¡Completá tus datos personales para continuar!
|
278
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
|
279
311
|
preview: Vista previa
|
280
312
|
preview_error: No se puede mostrar la vista previa. Revisá tu conexión a internet o probá con un mensaje más corto.
|
281
313
|
previous_exercise: Anterior
|
@@ -360,6 +392,7 @@ es:
|
|
360
392
|
to_opened: Reabrir
|
361
393
|
to_pending_review: Resolver
|
362
394
|
to_solved: Resolver
|
395
|
+
toggle_read: "Marcar como leído/no leído"
|
363
396
|
unauthorized_explanation: ¡Ups! Esto es lo que se conoce como %{error}, es decir que no iniciaste sesión.
|
364
397
|
total: Total
|
365
398
|
uncategorized: No categorizado
|
@@ -392,6 +425,7 @@ es:
|
|
392
425
|
wrong_answer: La respuesta no es correcta
|
393
426
|
years: años
|
394
427
|
you_earned: Ganaste
|
428
|
+
you_have_a_new_notification: ¡Tenés una nueva notificación!
|
395
429
|
you_must_sign_in_before_submitting: Tenés que iniciar sesión antes de empezar a enviar tus soluciones
|
396
430
|
you_never_submitted_solutions: Parece que nunca enviaste soluciones desde que creaste tu cuenta.
|
397
431
|
your_new_organization: tu nueva organización
|