mumuki-laboratory 6.6.1 → 6.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -3
  3. data/app/assets/config/mumuki_laboratory_engine.js +2 -0
  4. data/app/assets/javascripts/{application → mumuki_laboratory/application}/alias-modes.js +0 -0
  5. data/app/assets/javascripts/{application → mumuki_laboratory/application}/bridge.js +0 -0
  6. data/app/assets/javascripts/{application → mumuki_laboratory/application}/characters.js +1 -1
  7. data/app/assets/javascripts/{application → mumuki_laboratory/application}/codemirror-builder.js +0 -0
  8. data/app/assets/javascripts/{application → mumuki_laboratory/application}/codemirror.js +0 -0
  9. data/app/assets/javascripts/{application → mumuki_laboratory/application}/confirmation.js +0 -0
  10. data/app/assets/javascripts/{application → mumuki_laboratory/application}/console.js +0 -0
  11. data/app/assets/javascripts/{application → mumuki_laboratory/application}/csrf-token.js +0 -0
  12. data/app/assets/javascripts/{application → mumuki_laboratory/application}/custom-editor.js +0 -0
  13. data/app/assets/javascripts/{application → mumuki_laboratory/application}/discussions.js +0 -0
  14. data/app/assets/javascripts/{application → mumuki_laboratory/application}/free-form.js +0 -0
  15. data/app/assets/javascripts/{application → mumuki_laboratory/application}/inputs.js +0 -0
  16. data/app/assets/javascripts/{application → mumuki_laboratory/application}/kids.js +31 -6
  17. data/app/assets/javascripts/{application → mumuki_laboratory/application}/load-analytics.js +0 -0
  18. data/app/assets/javascripts/{application → mumuki_laboratory/application}/load-error-svg.js +0 -0
  19. data/app/assets/javascripts/{application → mumuki_laboratory/application}/messages.js +0 -0
  20. data/app/assets/javascripts/{application → mumuki_laboratory/application}/multiple-choice.js +0 -0
  21. data/app/assets/javascripts/{application → mumuki_laboratory/application}/multiple-files.js +29 -15
  22. data/app/assets/javascripts/{application → mumuki_laboratory/application}/multiple-scenarios.js +0 -0
  23. data/app/assets/javascripts/{application → mumuki_laboratory/application}/pin.js +0 -0
  24. data/app/assets/javascripts/{application → mumuki_laboratory/application}/popover.js +0 -0
  25. data/app/assets/javascripts/{application → mumuki_laboratory/application}/progress.js +0 -0
  26. data/app/assets/javascripts/{application → mumuki_laboratory/application}/submission.js +0 -0
  27. data/app/assets/javascripts/{application → mumuki_laboratory/application}/timer.js +0 -0
  28. data/app/assets/javascripts/{application → mumuki_laboratory/application}/tooltip.js +0 -0
  29. data/app/assets/javascripts/{application → mumuki_laboratory/application}/upload.js +0 -0
  30. data/app/assets/javascripts/{application → mumuki_laboratory/application}/user.js +0 -0
  31. data/app/assets/javascripts/{application.js → mumuki_laboratory/application.js} +1 -1
  32. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_alerts.scss +0 -0
  33. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_errors.scss +0 -0
  34. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_fonts.scss +0 -0
  35. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_invitations.scss +0 -0
  36. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_layout.scss +0 -0
  37. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_mixins.scss +0 -0
  38. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_modules.scss +0 -0
  39. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_tooltip.scss +0 -0
  40. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_vendor.scss +0 -0
  41. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/hovers.scss +0 -0
  42. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_book_header.scss +0 -0
  43. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_breadcrumb.scss +0 -0
  44. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_chapter_show.scss +0 -0
  45. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_checkboxes.scss +0 -0
  46. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_console.scss +0 -0
  47. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_discussion.scss +0 -0
  48. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_dropdown.scss +0 -0
  49. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_editor.scss +0 -0
  50. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_exercise_assignment.scss +0 -0
  51. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_exercise_results.scss +0 -0
  52. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_flash.scss +0 -0
  53. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_follow_us.scss +0 -0
  54. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_gs-board.scss +0 -0
  55. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_highlight.scss +0 -0
  56. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_kids.scss +111 -38
  57. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_kids_results.scss +0 -0
  58. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_modal.scss +0 -0
  59. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_organization_chooser.scss +0 -0
  60. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_overlap.scss +0 -0
  61. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_progress_bar.scss +0 -0
  62. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_progress_listing.scss +0 -0
  63. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_timer.scss +0 -0
  64. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_upload.scss +0 -0
  65. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/guide-corollary.scss +0 -0
  66. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/popover.scss +0 -0
  67. data/app/assets/stylesheets/{application.scss → mumuki_laboratory/application.scss} +3 -3
  68. data/app/controllers/invitations_controller.rb +1 -1
  69. data/app/helpers/assets_helper.rb +2 -2
  70. data/app/helpers/authors_helper.rb +10 -0
  71. data/app/helpers/discussions_helper.rb +6 -2
  72. data/app/views/book/show.html.erb +1 -1
  73. data/app/views/discussions/show.html.erb +1 -1
  74. data/app/views/invitations/show.html.erb +1 -1
  75. data/app/views/layouts/_authoring.html.erb +1 -1
  76. data/app/views/layouts/_kids.html.erb +5 -2
  77. data/app/views/layouts/_submission_result_error_body.html.erb +1 -1
  78. data/app/views/layouts/exercise_inputs/read_only_editors/_custom.html.erb +3 -3
  79. data/lib/mumuki/laboratory/locales/en.yml +5 -4
  80. data/lib/mumuki/laboratory/locales/es.yml +5 -4
  81. data/lib/mumuki/laboratory/locales/pt.yml +5 -4
  82. data/lib/mumuki/laboratory/version.rb +1 -1
  83. data/spec/dummy/public/character/animations.json +1 -0
  84. data/spec/features/invitations_flow_spec.rb +46 -0
  85. data/spec/helpers/authors_helper_spec.rb +18 -0
  86. data/vendor/assets/javascripts/codemirror-modes/index.js +1 -0
  87. metadata +73 -66
@@ -3,6 +3,10 @@ module DiscussionsHelper
3
3
  discussions_link others_discussions_icon(t(:solve_your_doubts)), item_discussions_path(item, default_discussions_params)
4
4
  end
5
5
 
6
+ def kids_read_discussions_link(item)
7
+ discussions_link fixed_fa_icon('question-circle'), item_discussions_path(item, default_discussions_params), title: t(:solve_your_doubts), class: 'mu-kids-discussion-link'
8
+ end
9
+
6
10
  def solve_discussions_link
7
11
  discussions_link others_discussions_icon(t(:solve_doubts)), discussions_path(solve_discussion_params_for(current_user))
8
12
  end
@@ -19,8 +23,8 @@ module DiscussionsHelper
19
23
  fixed_fa_icon 'comment', text: text
20
24
  end
21
25
 
22
- def discussions_link(item, path, organization=Organization.current)
23
- link_to item, path if organization.forum_enabled?
26
+ def discussions_link(item, path, html_options=nil, organization=Organization.current)
27
+ link_to item, path, html_options if organization.forum_enabled?
24
28
  end
25
29
 
26
30
  def item_discussion_path(discussion, params={})
@@ -9,7 +9,7 @@
9
9
  <h3>
10
10
  <small><%= Organization.current.description %></small>
11
11
  <br>
12
- <small><%= raw t :powered_by_mumuki %></small>
12
+ <small><%= t :powered_by_mumuki_html %></small>
13
13
  </h3>
14
14
  <% end %>
15
15
  </div>
@@ -5,7 +5,7 @@
5
5
 
6
6
  <div>
7
7
  <div class="row">
8
- <% if current_user && !current_user.moderator_here? %>
8
+ <% if current_user %>
9
9
  <div class="mu-inline-block-right hidden-xs discussion-user-menu">
10
10
  <h3>
11
11
  <% if @discussion.subscribable? %>
@@ -2,7 +2,7 @@
2
2
  <%= breadcrumbs @invitation %>
3
3
  <% end %>
4
4
  <div>
5
- <h3><%= raw t(:joining, course: @invitation.course.name) %> </h3>
5
+ <h3><%= t(:joining_html, course: @invitation.course.name) %> </h3>
6
6
  </div>
7
7
  <div>
8
8
  <span><%= t :please_validate %></span>
@@ -6,7 +6,7 @@
6
6
  <%= render partial: 'layouts/copyright' %> -
7
7
  </span>
8
8
  <% end %>
9
- <%= raw t :authoring_note, authors: guide.authors, collaborators: "https://raw.githubusercontent.com/#{guide.slug}/master/COLLABORATORS.txt" %>
9
+ <%= attribution_caption(guide) %>
10
10
  </p>
11
11
  <% end %>
12
12
  <% end %>
@@ -2,11 +2,11 @@
2
2
  <div class="mu-kids-character-speech-bubble <%= 'no-tabs' unless exercise.hint? %>">
3
3
  <% if exercise.hint? %>
4
4
  <ul class="mu-kids-character-speech-bubble-tabs">
5
- <li class="active" data-target="description" title="<%= t :task %>">
5
+ <li class="mu-kids-description active" data-target="description" title="<%= t :task %>">
6
6
  <i class="fa fa-fw fa-file-text-o"></i>
7
7
  </li>
8
8
  <li class="separator"></li>
9
- <li data-target="hint" title="<%= t :need_a_hint %>">
9
+ <li class="mu-kids-hint blink" data-target="hint" title="<%= t :need_a_hint %>">
10
10
  <i class="fa fa-fw fa-lightbulb-o"></i>
11
11
  </li>
12
12
  </ul>
@@ -19,3 +19,6 @@
19
19
  </div>
20
20
  <div class="mu-kids-character-speech-bubble-failed <%= @assignment&.status %>" style="display: none"></div>
21
21
  </div>
22
+ <div id="mu-kids-discussion-link-html" class="hidden">
23
+ <%= kids_read_discussions_link(exercise) %>
24
+ </div>
@@ -1,6 +1,6 @@
1
1
  <div class="submission-result-error-body">
2
2
  <img class="submission-result-error-animation"/>
3
3
  <ul class="submission-result-error-body-description">
4
- <%= raw t :abort_explanation %>
4
+ <%= t :abort_explanation_html %>
5
5
  </ul>
6
6
  </div>
@@ -1,6 +1,6 @@
1
1
  <%= render_runner_assets exercise.language, :editor %>
2
2
 
3
3
  <%= render_custom_editor(exercise, true) %>
4
- <%= hidden_field :content, id: "mu-custom-editor-value", value: content %>
5
- <%= hidden_field :default_content, id: "mu-custom-editor-default-value", value: exercise.default_content %>
6
- <%= hidden_field :content_extra, id: "mu-custom-editor-extra", value: exercise.extra %>
4
+ <%= hidden_field :content, :custom_editor, id: "mu-custom-editor-value", value: content %>
5
+ <%= hidden_field :default_content, :custom_editor, id: "mu-custom-editor-default-value", value: exercise.default_content %>
6
+ <%= hidden_field :content_extra, :custom_editor, id: "mu-custom-editor-extra", value: exercise.extra %>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  en:
3
3
  aborted: Oops, we couldn't evaluate your solution
4
- abort_explanation: <li>Check that your program does not have recursion or an infinite loop</li> <li>Check that you have an internet connection</li> <li>Wait a while and try again</li>
4
+ abort_explanation_html: <li>Check that your program does not have recursion or an infinite loop</li> <li>Check that you have an internet connection</li> <li>Wait a while and try again</li>
5
5
  about: About
6
6
  accept_terms: I accept the terms and conditions
7
7
  actions: Actions
@@ -20,7 +20,8 @@ en:
20
20
  other: '%{count} attempts remaining'
21
21
  author: Author
22
22
  authoring: "Authoring"
23
- authoring_note: This guide's content was developed by %{authors} and <a href="%{collaborators}" target="_blank">many others</a>, under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
23
+ authoring_note_html: This guide's content was developed by %{authors} under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
24
+ authoring_note_with_collaborators_html: This guide's content was developed by %{authors} and <a href="%{collaborators}" target="_blank">many others</a>, under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
24
25
  back_to_mumuki: Back to Mumuki!
25
26
  bibliotheca_ui: Bibliotheca
26
27
  blocked_forum_explanation: You are not allowed to see this content. <br> Are you in the middle of an exam right now?
@@ -97,7 +98,7 @@ en:
97
98
  invitation_for: 'Join %{course}'
98
99
  item_not_accessible: "You are not permitted to access this content"
99
100
  its_been_a_while: It's been a while since you last used Mumuki.
100
- joining: You're about to join
101
+ joining_html: '¡Welcome to course <strong>%{course}</strong>!'
101
102
  keep_learning: Keep learning!
102
103
  kids_default_success: You did it great!
103
104
  language: Language
@@ -159,7 +160,7 @@ en:
159
160
  permissions: Permissions
160
161
  please_fill_profile_data: Please complete your profile data to continue!
161
162
  please_validate: 'Please validate your data before continue:'
162
- powered_by_mumuki: "powered by <span class=\"da da-mumuki-circle\"></span> mumuki"
163
+ powered_by_mumuki_html: "powered by <span class=\"da da-mumuki-circle\"></span> mumuki"
163
164
  previous_exercise: Previous
164
165
  problem_with_exercise: '[Mumuki] Problem with exercise: %{title}'
165
166
  processing_your_solution: We are processing you solution
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  es:
3
3
  aborted: Ups, no pudimos evaluar tu solución
4
- abort_explanation: <li>Revisá que tu programa no tenga recursión o algún bucle infinito</li><li>Revisá que tengas conexión a internet</li><li>Esperá un rato e intentalo nuevamente</li>
4
+ abort_explanation_html: <li>Revisá que tu programa no tenga recursión o algún bucle infinito</li><li>Revisá que tengas conexión a internet</li><li>Esperá un rato e intentalo nuevamente</li>
5
5
  about: Detalles
6
6
  accept_terms: Acepto los términos y condiciones
7
7
  actions: Acciones
@@ -22,7 +22,8 @@ es:
22
22
  other: '%{count} intentos restantes'
23
23
  author: Autor
24
24
  authoring: "Autores"
25
- 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>.
25
+ authoring_note_html: Esta guía fue desarrollada por %{authors} bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
26
+ authoring_note_with_collaborators_html: Esta guía fue desarrollada por %{authors} y <a href="%{collaborators}" target="_blank">muchas personas más</a>, bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
26
27
  back_to_mumuki: ¡Volvé a Mumuki!
27
28
  bibliotheca_ui: Biblioteca
28
29
  blocked_forum_explanation: Es decir que no tenés autorización para ver este contenido. <br> ¿Puede que estés en medio de un examen?
@@ -108,7 +109,7 @@ es:
108
109
  invitation_for: 'Unirse a %{course}'
109
110
  item_not_accessible: "No tenés permisos para acceder a este contenido"
110
111
  its_been_a_while: Hace un tiempo que no usás Mumuki.
111
- joining: '¡Te damos la bienvenida al curso <strong>%{course}</strong>!'
112
+ joining_html: '¡Te damos la bienvenida al curso <strong>%{course}</strong>!'
112
113
  keep_learning: ¡Seguí aprendiendo!
113
114
  kids_default_success: ¡Lo hiciste muy bien!
114
115
  language: Lenguaje
@@ -178,7 +179,7 @@ es:
178
179
  permissions: Permisos
179
180
  please_fill_profile_data: ¡Completá tus datos personales para continuar!
180
181
  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.'
181
- powered_by_mumuki: "por <span class=\"da da-mumuki-circle\"></span> mumuki"
182
+ powered_by_mumuki_html: "por <span class=\"da da-mumuki-circle\"></span> mumuki"
182
183
  previous_exercise: Anterior
183
184
  problem_with_exercise: '[Mumuki] Error con el ejercicio: %{title}'
184
185
  processing_your_solution: Estamos procesando tu solución
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  pt:
3
3
  aborted: Opa, não pudemos avaliar sua solução
4
- abort_explanation: <li>Verifique se o seu programa não possui recursão ou um loop infinito</li> <li>Verifique se você tem uma conexão com a internet</li> <li>Espere um pouco e tente novamente</li>
4
+ abort_explanation_html: <li>Verifique se o seu programa não possui recursão ou um loop infinito</li> <li>Verifique se você tem uma conexão com a internet</li> <li>Espere um pouco e tente novamente</li>
5
5
  about: Detalhes
6
6
  accept_terms: Aceito os termos e condições
7
7
  actions: Ações
@@ -21,7 +21,8 @@ pt:
21
21
  other: '%{count} tentativa restante'
22
22
  author: Autor
23
23
  authoring: Autores
24
- 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>.'
24
+ authoring_note_html: 'Este guia foi desenvolvido por %{authors} nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
25
+ authoring_note_with_collaborators_html: 'Este guia foi desenvolvido por %{authors} e <a href="%{collaborators}" target="_blank">muitas outras pessoas </a>, nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
25
26
  back_to_mumuki: Voltei para Mumuki!
26
27
  bibliotheca_ui: Biblioteca
27
28
  blocked_forum_explanation: Você não tem permissão para ver este conteúdo. <br> Você está no meio de um exame agora?
@@ -104,7 +105,7 @@ pt:
104
105
  invitation: Convite para o curso
105
106
  invitation_for: Participe %{curso}
106
107
  item_not_accessible: Você não tem permissões para acessar este conteúdo
107
- joining: Bem-vindo ao curso <strong> %{curso} </strong>!
108
+ joining_html: Bem-vindo ao curso <strong> %{curso} </strong>!
108
109
  kids_default_success: Você fez muito bem!
109
110
  language: Linguagem
110
111
  languages: Linguagens
@@ -170,7 +171,7 @@ pt:
170
171
  permissions: Permissões
171
172
  please_fill_profile_data: Preencha suas informações pessoais para continuar!
172
173
  please_validate: Você está prestes a entrar no curso. Para oferecer uma experiência melhor, valide que seus dados abaixo sejam reais e corretos.
173
- powered_by_mumuki: por <span class = "da da-mumuki-circle"> </ span> mumuki
174
+ powered_by_mumuki_html: por <span class = "da da-mumuki-circle"> </ span> mumuki
174
175
  previous_exercise: Anterior
175
176
  problem_with_exercise: '[Mumuki] Erro com exercício %{title}'
176
177
  processing_your_solution: Estamos processando sua solução
@@ -1,5 +1,5 @@
1
1
  module Mumuki
2
2
  module Laboratory
3
- VERSION = '6.6.1'
3
+ VERSION = '6.7.0'
4
4
  end
5
5
  end
@@ -9,6 +9,7 @@
9
9
  "success_l"
10
10
  ],
11
11
  "actions": {
12
+ "blink": "jump",
12
13
  "talk": "jump"
13
14
  }
14
15
  }
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Invitations Flow', organization_workspace: :test do
4
+ let(:organization) { Organization.current }
5
+
6
+ let(:guide) { create(:guide) }
7
+ let(:chapter) {
8
+ create(:chapter, lessons: [
9
+ create(:lesson, guide: guide)
10
+ ]) }
11
+ let(:book) { organization.book }
12
+
13
+ before do
14
+ book.update! chapters: [chapter]
15
+ end
16
+
17
+ let(:permissions) { { } }
18
+ let(:user) { create(:user, permissions: permissions) }
19
+ before { set_current_user!(user) }
20
+
21
+ let(:nodejs_course) { create(:course, slug: 'test/nodejs', name: 'Curso de NodeJS', organization: organization) }
22
+ let(:python_course) { create(:course, slug: 'test/python', name: 'Curso de Python', organization: organization) }
23
+ let!(:nodejs_invitation) { create(:invitation, code: 'invitacionAlNodejs', course: nodejs_course) }
24
+ let!(:python_invitation) { create(:invitation, code: 'invitacionAlPython', course: python_course) }
25
+
26
+ context 'with no memberships' do
27
+ scenario 'visit invitation' do
28
+ visit '/join/invitacionAlNodejs'
29
+ expect(page).to have_text('Join Curso de NodeJS')
30
+ end
31
+ end
32
+
33
+ context 'with existing memberships' do
34
+ let(:permissions) { { student: 'test/nodejs' } }
35
+
36
+ scenario 'visit invitation, already joined' do
37
+ visit '/join/invitacionAlNodejs'
38
+ expect(page).to have_text('Start Practicing!')
39
+ end
40
+
41
+ scenario 'visit invitation, not joined' do
42
+ visit '/join/invitacionAlPython'
43
+ expect(page).to have_text('Join Curso de Python')
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe AuthorsHelper, organization_workspace: :test do
4
+ helper AuthorsHelper
5
+
6
+ describe 'authoring_notes' do
7
+ context 'with collaborators' do
8
+ let(:guide) { create(:guide, authors: 'Writer', collaborators: 'Collaborators') }
9
+ it { expect(attribution_caption(guide)).to include "many others" }
10
+ end
11
+
12
+ context 'with no collaborators' do
13
+ let(:guide) { create(:guide, authors: 'Writer') }
14
+ it { expect(attribution_caption(guide)).not_to include "many others" }
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ //= require_tree .
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: 6.6.1
4
+ version: 6.7.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: 2019-05-06 00:00:00.000000000 Z
11
+ date: 2019-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -174,72 +174,73 @@ files:
174
174
  - LICENSE
175
175
  - README.md
176
176
  - Rakefile
177
+ - app/assets/config/mumuki_laboratory_engine.js
177
178
  - app/assets/images/logo.png
178
179
  - app/assets/images/user_shape.png
179
- - app/assets/javascripts/application.js
180
- - app/assets/javascripts/application/alias-modes.js
181
- - app/assets/javascripts/application/bridge.js
182
- - app/assets/javascripts/application/characters.js
183
- - app/assets/javascripts/application/codemirror-builder.js
184
- - app/assets/javascripts/application/codemirror.js
185
- - app/assets/javascripts/application/confirmation.js
186
- - app/assets/javascripts/application/console.js
187
- - app/assets/javascripts/application/csrf-token.js
188
- - app/assets/javascripts/application/custom-editor.js
189
- - app/assets/javascripts/application/discussions.js
190
- - app/assets/javascripts/application/free-form.js
191
- - app/assets/javascripts/application/inputs.js
192
- - app/assets/javascripts/application/kids.js
193
- - app/assets/javascripts/application/load-analytics.js
194
- - app/assets/javascripts/application/load-error-svg.js
195
- - app/assets/javascripts/application/messages.js
196
- - app/assets/javascripts/application/multiple-choice.js
197
- - app/assets/javascripts/application/multiple-files.js
198
- - app/assets/javascripts/application/multiple-scenarios.js
199
- - app/assets/javascripts/application/pin.js
200
- - app/assets/javascripts/application/popover.js
201
- - app/assets/javascripts/application/progress.js
202
- - app/assets/javascripts/application/submission.js
203
- - app/assets/javascripts/application/timer.js
204
- - app/assets/javascripts/application/tooltip.js
205
- - app/assets/javascripts/application/upload.js
206
- - app/assets/javascripts/application/user.js
207
- - app/assets/stylesheets/application.scss
208
- - app/assets/stylesheets/application/_alerts.scss
209
- - app/assets/stylesheets/application/_errors.scss
210
- - app/assets/stylesheets/application/_fonts.scss
211
- - app/assets/stylesheets/application/_invitations.scss
212
- - app/assets/stylesheets/application/_layout.scss
213
- - app/assets/stylesheets/application/_mixins.scss
214
- - app/assets/stylesheets/application/_modules.scss
215
- - app/assets/stylesheets/application/_tooltip.scss
216
- - app/assets/stylesheets/application/_vendor.scss
217
- - app/assets/stylesheets/application/hovers.scss
218
- - app/assets/stylesheets/application/modules/_book_header.scss
219
- - app/assets/stylesheets/application/modules/_breadcrumb.scss
220
- - app/assets/stylesheets/application/modules/_chapter_show.scss
221
- - app/assets/stylesheets/application/modules/_checkboxes.scss
222
- - app/assets/stylesheets/application/modules/_console.scss
223
- - app/assets/stylesheets/application/modules/_discussion.scss
224
- - app/assets/stylesheets/application/modules/_dropdown.scss
225
- - app/assets/stylesheets/application/modules/_editor.scss
226
- - app/assets/stylesheets/application/modules/_exercise_assignment.scss
227
- - app/assets/stylesheets/application/modules/_exercise_results.scss
228
- - app/assets/stylesheets/application/modules/_flash.scss
229
- - app/assets/stylesheets/application/modules/_follow_us.scss
230
- - app/assets/stylesheets/application/modules/_gs-board.scss
231
- - app/assets/stylesheets/application/modules/_highlight.scss
232
- - app/assets/stylesheets/application/modules/_kids.scss
233
- - app/assets/stylesheets/application/modules/_kids_results.scss
234
- - app/assets/stylesheets/application/modules/_modal.scss
235
- - app/assets/stylesheets/application/modules/_organization_chooser.scss
236
- - app/assets/stylesheets/application/modules/_overlap.scss
237
- - app/assets/stylesheets/application/modules/_progress_bar.scss
238
- - app/assets/stylesheets/application/modules/_progress_listing.scss
239
- - app/assets/stylesheets/application/modules/_timer.scss
240
- - app/assets/stylesheets/application/modules/_upload.scss
241
- - app/assets/stylesheets/application/modules/guide-corollary.scss
242
- - app/assets/stylesheets/application/modules/popover.scss
180
+ - app/assets/javascripts/mumuki_laboratory/application.js
181
+ - app/assets/javascripts/mumuki_laboratory/application/alias-modes.js
182
+ - app/assets/javascripts/mumuki_laboratory/application/bridge.js
183
+ - app/assets/javascripts/mumuki_laboratory/application/characters.js
184
+ - app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js
185
+ - app/assets/javascripts/mumuki_laboratory/application/codemirror.js
186
+ - app/assets/javascripts/mumuki_laboratory/application/confirmation.js
187
+ - app/assets/javascripts/mumuki_laboratory/application/console.js
188
+ - app/assets/javascripts/mumuki_laboratory/application/csrf-token.js
189
+ - app/assets/javascripts/mumuki_laboratory/application/custom-editor.js
190
+ - app/assets/javascripts/mumuki_laboratory/application/discussions.js
191
+ - app/assets/javascripts/mumuki_laboratory/application/free-form.js
192
+ - app/assets/javascripts/mumuki_laboratory/application/inputs.js
193
+ - app/assets/javascripts/mumuki_laboratory/application/kids.js
194
+ - app/assets/javascripts/mumuki_laboratory/application/load-analytics.js
195
+ - app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js
196
+ - app/assets/javascripts/mumuki_laboratory/application/messages.js
197
+ - app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js
198
+ - app/assets/javascripts/mumuki_laboratory/application/multiple-files.js
199
+ - app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js
200
+ - app/assets/javascripts/mumuki_laboratory/application/pin.js
201
+ - app/assets/javascripts/mumuki_laboratory/application/popover.js
202
+ - app/assets/javascripts/mumuki_laboratory/application/progress.js
203
+ - app/assets/javascripts/mumuki_laboratory/application/submission.js
204
+ - app/assets/javascripts/mumuki_laboratory/application/timer.js
205
+ - app/assets/javascripts/mumuki_laboratory/application/tooltip.js
206
+ - app/assets/javascripts/mumuki_laboratory/application/upload.js
207
+ - app/assets/javascripts/mumuki_laboratory/application/user.js
208
+ - app/assets/stylesheets/mumuki_laboratory/application.scss
209
+ - app/assets/stylesheets/mumuki_laboratory/application/_alerts.scss
210
+ - app/assets/stylesheets/mumuki_laboratory/application/_errors.scss
211
+ - app/assets/stylesheets/mumuki_laboratory/application/_fonts.scss
212
+ - app/assets/stylesheets/mumuki_laboratory/application/_invitations.scss
213
+ - app/assets/stylesheets/mumuki_laboratory/application/_layout.scss
214
+ - app/assets/stylesheets/mumuki_laboratory/application/_mixins.scss
215
+ - app/assets/stylesheets/mumuki_laboratory/application/_modules.scss
216
+ - app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss
217
+ - app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss
218
+ - app/assets/stylesheets/mumuki_laboratory/application/hovers.scss
219
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
220
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss
221
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_chapter_show.scss
222
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss
223
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_console.scss
224
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss
225
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss
226
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_editor.scss
227
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_assignment.scss
228
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_results.scss
229
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss
230
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_follow_us.scss
231
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss
232
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_highlight.scss
233
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss
234
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss
235
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_modal.scss
236
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_organization_chooser.scss
237
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss
238
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss
239
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_listing.scss
240
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss
241
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss
242
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/guide-corollary.scss
243
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/popover.scss
243
244
  - app/controllers/ajax_controller.rb
244
245
  - app/controllers/api/base_controller.rb
245
246
  - app/controllers/api/courses_controller.rb
@@ -281,6 +282,7 @@ files:
281
282
  - app/helpers/assets_helper.rb
282
283
  - app/helpers/assignment_result_helper.rb
283
284
  - app/helpers/assistance_box_helper.rb
285
+ - app/helpers/authors_helper.rb
284
286
  - app/helpers/breadcrumbs_helper.rb
285
287
  - app/helpers/choices_helper.rb
286
288
  - app/helpers/concerns/with_student_path_navigation.rb
@@ -512,6 +514,7 @@ files:
512
514
  - spec/features/guides_flow_spec.rb
513
515
  - spec/features/home_private_flow_spec.rb
514
516
  - spec/features/home_public_flow_spec.rb
517
+ - spec/features/invitations_flow_spec.rb
515
518
  - spec/features/lessons_flow_spec.rb
516
519
  - spec/features/links_flow_spec.rb
517
520
  - spec/features/login_flow_spec.rb
@@ -523,6 +526,7 @@ files:
523
526
  - spec/features/standard_flow_spec.rb
524
527
  - spec/features/topic_flow_spec.rb
525
528
  - spec/helpers/application_helper_spec.rb
529
+ - spec/helpers/authors_helper_spec.rb
526
530
  - spec/helpers/breadcrumbs_helper_spec.rb
527
531
  - spec/helpers/email_helper_spec.rb
528
532
  - spec/helpers/exercise_input_helper_spec.rb
@@ -549,6 +553,7 @@ files:
549
553
  - vendor/assets/javascripts/codemirror-modes/haskell.min.js
550
554
  - vendor/assets/javascripts/codemirror-modes/html-hint.min.js
551
555
  - vendor/assets/javascripts/codemirror-modes/htmlmixed.min.js
556
+ - vendor/assets/javascripts/codemirror-modes/index.js
552
557
  - vendor/assets/javascripts/codemirror-modes/javascript-hint.min.js
553
558
  - vendor/assets/javascripts/codemirror-modes/javascript.min.js
554
559
  - vendor/assets/javascripts/codemirror-modes/markdown.min.js
@@ -653,6 +658,7 @@ test_files:
653
658
  - spec/helpers/with_choices_spec.rb
654
659
  - spec/helpers/with_navigation_spec.rb
655
660
  - spec/helpers/icons_helper_spec.rb
661
+ - spec/helpers/authors_helper_spec.rb
656
662
  - spec/helpers/application_helper_spec.rb
657
663
  - spec/capybara_helper.rb
658
664
  - spec/features/standard_flow_spec.rb
@@ -675,3 +681,4 @@ test_files:
675
681
  - spec/features/not_found_public_flow_spec.rb
676
682
  - spec/features/exams_flow_spec.rb
677
683
  - spec/features/links_flow_spec.rb
684
+ - spec/features/invitations_flow_spec.rb