mumuki-laboratory 8.1.1 → 8.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -8
  3. data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +2 -1
  4. data/app/assets/javascripts/mumuki_laboratory/application/button.js +4 -6
  5. data/app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js +3 -3
  6. data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +6 -6
  7. data/app/assets/javascripts/mumuki_laboratory/application/console.js +2 -2
  8. data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +7 -7
  9. data/app/assets/javascripts/mumuki_laboratory/application/editors.js +1 -1
  10. data/app/assets/javascripts/mumuki_laboratory/application/elipsis.js +1 -1
  11. data/app/assets/javascripts/mumuki_laboratory/application/events.js +2 -2
  12. data/app/assets/javascripts/mumuki_laboratory/application/exercise.js +2 -2
  13. data/app/assets/javascripts/mumuki_laboratory/application/gamification.js +13 -3
  14. data/app/assets/javascripts/mumuki_laboratory/application/i18n.js +73 -0
  15. data/app/assets/javascripts/mumuki_laboratory/application/inputs.js +1 -1
  16. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +26 -5
  17. data/app/assets/javascripts/mumuki_laboratory/application/kindergarten.js +13 -8
  18. data/app/assets/javascripts/mumuki_laboratory/application/messages.js +6 -6
  19. data/app/assets/javascripts/mumuki_laboratory/application/mu-modal-carrousel.js +1 -1
  20. data/app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js +1 -1
  21. data/app/assets/javascripts/mumuki_laboratory/application/multiple-files.js +3 -3
  22. data/app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js +1 -1
  23. data/app/assets/javascripts/mumuki_laboratory/application/pin.js +1 -1
  24. data/app/assets/javascripts/mumuki_laboratory/application/primary.js +6 -4
  25. data/app/assets/javascripts/mumuki_laboratory/application/progress.js +1 -1
  26. data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +29 -2
  27. data/app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js +4 -4
  28. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +72 -48
  29. data/app/assets/javascripts/mumuki_laboratory/application/submissions-store.js +3 -3
  30. data/app/assets/javascripts/mumuki_laboratory/application/sync-mode.js +2 -2
  31. data/app/assets/javascripts/mumuki_laboratory/application/timer.js +1 -1
  32. data/app/assets/stylesheets/mumuki_laboratory/application/_layout.scss +7 -7
  33. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +4 -0
  34. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +1 -0
  35. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss +0 -4
  36. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss +4 -0
  37. data/app/controllers/chapters_controller.rb +9 -5
  38. data/app/controllers/concerns/with_user_discussion_validation.rb +6 -0
  39. data/app/controllers/discussions_controller.rb +0 -6
  40. data/app/controllers/guide_container_controller.rb +2 -7
  41. data/app/helpers/assignment_result_helper.rb +1 -1
  42. data/app/helpers/contextualization_result_helper.rb +0 -8
  43. data/app/helpers/discussions_helper.rb +12 -4
  44. data/app/helpers/editor_tabs_helper.rb +1 -1
  45. data/app/helpers/icons_helper.rb +1 -1
  46. data/app/helpers/links_helper.rb +3 -3
  47. data/app/helpers/menu_bar_helper.rb +9 -1
  48. data/app/helpers/overlapped_buttons_helper.rb +6 -2
  49. data/app/views/book/show.html.erb +2 -2
  50. data/app/views/book_discussions/index.html.erb +3 -1
  51. data/app/views/chapters/show.html.erb +21 -9
  52. data/app/views/complements/show.html.erb +1 -1
  53. data/app/views/discussions/_message.html.erb +2 -2
  54. data/app/views/discussions/index.html.erb +11 -4
  55. data/app/views/exams/show.html.erb +1 -1
  56. data/app/views/exercise_solutions/_kids_level_up.html.erb +1 -1
  57. data/app/views/exercises/_exercise_assignment.html.erb +1 -1
  58. data/app/views/exercises/_read_only.html.erb +1 -1
  59. data/app/views/exercises/show.html.erb +2 -2
  60. data/app/views/layouts/_copyright.html.erb +1 -1
  61. data/app/views/layouts/_discussions.html.erb +0 -4
  62. data/app/views/layouts/_guide.html.erb +9 -36
  63. data/app/views/layouts/_guide_container.html.erb +28 -0
  64. data/app/views/layouts/_guide_title_icons.html.erb +9 -0
  65. data/app/views/layouts/_kids.html.erb +4 -4
  66. data/app/views/layouts/_kindergarten.html.erb +5 -5
  67. data/app/views/layouts/_social_media.html.erb +4 -4
  68. data/app/views/layouts/_timer.html.erb +1 -1
  69. data/app/views/layouts/application.html.erb +31 -27
  70. data/app/views/layouts/embedded.html.erb +14 -11
  71. data/app/views/layouts/exercise_inputs/editors/_code.html.erb +1 -6
  72. data/app/views/layouts/exercise_inputs/editors/_multiple_files.html.erb +4 -9
  73. data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +1 -1
  74. data/app/views/layouts/exercise_inputs/layouts/_input_kindergarten.html.erb +1 -1
  75. data/app/views/layouts/modals/_guide_corollary.html.erb +13 -3
  76. data/app/views/layouts/modals/_kids_results.html.erb +2 -2
  77. data/app/views/layouts/modals/_kindergarten_context.html.erb +3 -3
  78. data/app/views/layouts/modals/_kindergarten_results.html.erb +3 -3
  79. data/app/views/layouts/modals/_kindergarten_results_aborted.html.erb +2 -2
  80. data/app/views/layouts/modals/_level_up.html.erb +1 -1
  81. data/app/views/lessons/show.html.erb +1 -1
  82. data/app/views/users/_edit_user_form.html.erb +1 -1
  83. data/app/views/users/_term.html.erb +1 -1
  84. data/app/views/users/_user_form.html.erb +1 -1
  85. data/lib/mumuki/laboratory/controllers/results_rendering.rb +2 -1
  86. data/lib/mumuki/laboratory/engine.rb +1 -1
  87. data/lib/mumuki/laboratory/locales/en.yml +5 -8
  88. data/lib/mumuki/laboratory/locales/es-CL.yml +5 -3
  89. data/lib/mumuki/laboratory/locales/es.yml +8 -10
  90. data/lib/mumuki/laboratory/locales/pt.yml +5 -8
  91. data/lib/mumuki/laboratory/version.rb +1 -1
  92. data/spec/controllers/discussions_controller_spec.rb +19 -0
  93. data/spec/controllers/exercise_solutions_controller_spec.rb +3 -2
  94. data/spec/dummy/db/schema.rb +50 -1
  95. data/spec/dummy/public/character/animations.json +1 -0
  96. data/{public → spec/dummy/public}/character/kibi/context.svg +0 -0
  97. data/{public → spec/dummy/public}/character/kibi/failure.svg +0 -0
  98. data/{public → spec/dummy/public}/character/kibi/jump.svg +0 -0
  99. data/spec/dummy/public/character/kibi/passed_with_warnings.svg +4 -0
  100. data/{public → spec/dummy/public}/character/kibi/success2_l.svg +0 -0
  101. data/{public → spec/dummy/public}/character/kibi/success_l.svg +0 -0
  102. data/{public → spec/dummy/public}/character/magnifying_glass/apparition.svg +0 -0
  103. data/{public → spec/dummy/public}/character/magnifying_glass/loop.svg +0 -0
  104. data/spec/features/chapters_flow_spec.rb +112 -0
  105. data/spec/features/login_flow_spec.rb +1 -1
  106. data/spec/features/terms_flow_spec.rb +2 -0
  107. data/spec/features/topic_flow_spec.rb +0 -1
  108. data/spec/helpers/icons_helper_spec.rb +3 -3
  109. data/spec/helpers/test_results_rendering_spec.rb +8 -8
  110. data/spec/helpers/with_navigation_spec.rb +14 -14
  111. data/spec/javascripts/gamification-spec.js +2 -2
  112. data/spec/javascripts/i18n-spec.js +79 -0
  113. data/spec/javascripts/kids-button-spec.js +36 -0
  114. metadata +136 -115
  115. data/spec/dummy/config/database.travis.yml +0 -4
  116. data/spec/features/chapter_spec.rb +0 -70
@@ -96,7 +96,7 @@ mumuki.SubmissionsStore = (() => {
96
96
  _keyFor(exerciseId) {
97
97
  return `/exercise/${exerciseId}/submission`;
98
98
  }
99
- };
99
+ }();
100
100
 
101
101
  return SubmissionsStore;
102
102
  })();
@@ -106,5 +106,5 @@ mumuki.load(() => {
106
106
  if (e.detail[0]) {
107
107
  mumuki.SubmissionsStore.clear();
108
108
  }
109
- })
110
- })
109
+ });
110
+ });
@@ -65,11 +65,11 @@ mumuki.syncMode = (() => {
65
65
 
66
66
  /** @type {ClientSyncMode|ServerSyncMode}*/
67
67
  _current: null
68
- }
68
+ };
69
69
  })();
70
70
 
71
71
  mumuki.load(() => {
72
72
  mumuki.syncMode._selectSyncMode();
73
73
  mumuki.syncMode._current.syncProgress();
74
74
  mumuki.syncMode._current.syncEditorContent();
75
- })
75
+ });
@@ -16,5 +16,5 @@ mumuki.startTimer = (() => {
16
16
  }
17
17
  }, intervalDuration);
18
18
  }
19
- return startTimer
19
+ return startTimer;
20
20
  })();
@@ -25,13 +25,13 @@ body {
25
25
  margin-bottom: 110px;
26
26
  }
27
27
 
28
- .footer {
29
- position: absolute;
30
- bottom: 0;
31
- width: 100%;
32
- height: 110px;
33
- .container {
34
- margin-top: 33px;
28
+ .mu-footer {
29
+ &.container {
30
+ margin-top: 45px;
31
+ }
32
+ .mu-footer-terms {
33
+ font-size: 15px;
34
+ text-align: center;
35
35
  }
36
36
  }
37
37
 
@@ -10,6 +10,10 @@ $kids-speech-border: 1px solid $kids-speech-border-color;
10
10
 
11
11
  $kids-speech-tabs-width: 40px;
12
12
 
13
+ .mu-kids-exercise-workspace.mu-submitless-exercise .mu-kids-submit-button {
14
+ display: none;
15
+ }
16
+
13
17
  .mu-kids-exercise {
14
18
  height: $kids-height;
15
19
  min-height: $kids-height;
@@ -131,6 +131,7 @@ $capital-animation-width: 135px;
131
131
  'success': $mu-color-success,
132
132
  'warning': $mu-color-warning,
133
133
  'passed': $mu-color-success,
134
+ 'passed_with_warnings': $mu-color-warning,
134
135
  'passed-with-warnings': $mu-color-warning,
135
136
  'failed': $mu-color-danger,
136
137
  'errored': $mu-color-broken,
@@ -18,10 +18,6 @@
18
18
  }
19
19
  }
20
20
 
21
- .editor-resize {
22
- font-size: 0.5em;
23
- }
24
-
25
21
  body.fullscreen {
26
22
  .mu-overlapped a {
27
23
  margin-right: 15px;
@@ -15,11 +15,15 @@
15
15
  }
16
16
  .terms-card-header {
17
17
  cursor: pointer;
18
+ outline: 0;
18
19
  font-weight: bold;
19
20
  padding: .75rem 1.25rem;
20
21
  margin-bottom: 0;
21
22
  background-color: rgba(0,0,0,.03);
22
23
  border-bottom: 1px solid rgba(0,0,0,.125);
24
+ &::-webkit-details-marker {
25
+ display:none;
26
+ }
23
27
  }
24
28
  &:first-child .terms-card-header{
25
29
  border-radius: calc(.25rem - 1px) calc(.25rem - 1px) 0 0;
@@ -1,13 +1,17 @@
1
1
  require 'addressable/uri'
2
2
 
3
- class ChaptersController < ApplicationController
4
- include Mumuki::Laboratory::Controllers::Content
3
+ # It acts as a guide container in monolesson contexts
4
+ class ChaptersController < GuideContainerController
5
5
  include Mumuki::Laboratory::Controllers::ImmersiveNavigation
6
6
 
7
- def show
8
- end
9
-
10
7
  def subject
11
8
  @chapter ||= Chapter.find_by(id: params[:id])
12
9
  end
10
+
11
+ private
12
+
13
+ def set_guide
14
+ @monolesson = subject.monolesson
15
+ @guide = @monolesson&.guide
16
+ end
13
17
  end
@@ -2,12 +2,18 @@ module WithUserDiscussionValidation
2
2
  extend ActiveSupport::Concern
3
3
 
4
4
  included do
5
+ # users are not allowed to access discussions during exams
6
+ before_action :validate_not_blocked_in_forum!
5
7
  # discussions are not enabled for all organizations nor all users
6
8
  before_action :validate_user_can_discuss!
7
9
  end
8
10
 
9
11
  private
10
12
 
13
+ def validate_not_blocked_in_forum!
14
+ raise Mumuki::Domain::BlockedForumError if current_user&.currently_in_exam?
15
+ end
16
+
11
17
  def validate_user_can_discuss!
12
18
  raise Mumuki::Domain::NotFoundError unless current_user&.can_discuss_here?
13
19
  end
@@ -1,8 +1,6 @@
1
1
  class DiscussionsController < ApplicationController
2
2
  include Mumuki::Laboratory::Controllers::Content
3
3
  include WithUserDiscussionValidation
4
- # users are not allowed to access discussions during exams
5
- before_action :validate_not_in_exam!
6
4
 
7
5
  before_action :set_debatable, except: [:subscription]
8
6
  before_action :authenticate!, only: [:update, :create]
@@ -74,8 +72,4 @@ class DiscussionsController < ApplicationController
74
72
  def discussion_filter_params
75
73
  @filter_params ||= params.permit(Discussion.permitted_query_params)
76
74
  end
77
-
78
- def validate_not_in_exam!
79
- raise Mumuki::Domain::BlockedForumError if current_user&.currently_in_exam?
80
- end
81
75
  end
@@ -4,18 +4,13 @@ class GuideContainerController < ApplicationController
4
4
  before_action :set_guide
5
5
 
6
6
  def show
7
- if current_user?
8
- @stats = subject.stats_for(current_user)
9
- @next_exercise = subject.next_exercise(current_user)
10
- else
11
- @next_exercise = subject.first_exercise
12
- end
7
+ @stats = subject.stats_for(current_user)
8
+ @next_exercise = subject.next_exercise(current_user)
13
9
  end
14
10
 
15
11
  private
16
12
 
17
13
  def set_guide
18
- raise Mumuki::Domain::NotFoundError if subject.nil?
19
14
  @guide = subject.guide
20
15
  end
21
16
  end
@@ -15,7 +15,7 @@ module AssignmentResultHelper
15
15
 
16
16
  def render_community_link
17
17
  if community_link?
18
- link_to fa_icon(:facebook, text: I18n.t(:ask_community), class: 'fa-fw'), community_link, target: '_blank'
18
+ link_to fa_icon('facebook-f', type: :brand, text: I18n.t(:ask_community), class: 'fa-fw'), community_link, target: '_blank'
19
19
  end
20
20
  end
21
21
 
@@ -16,14 +16,6 @@ module ContextualizationResultHelper
16
16
  :hidden_done
17
17
  elsif contextualization.exercise.choice?
18
18
  contextualization.solved? ? :correct_answer : :wrong_answer
19
- else
20
- contextualization_status_translation_key contextualization
21
- end
22
- end
23
-
24
- def contextualization_status_translation_key(contextualization)
25
- if contextualization.exercise.input_kindergarten?
26
- "kindergarten_#{contextualization.submission_status}"
27
19
  else
28
20
  contextualization.submission_status
29
21
  end
@@ -52,6 +52,14 @@ module DiscussionsHelper
52
52
  profile_picture_for(user, class: image_class)
53
53
  end
54
54
 
55
+ def forum_terms_link
56
+ %Q{
57
+ <span>
58
+ #{ t(:forum_terms_link, terms_link: link_to_forum_terms).html_safe }
59
+ </span>
60
+ }.html_safe
61
+ end
62
+
55
63
  def discussions_link_with_teaser(item)
56
64
  %Q{
57
65
  <div>
@@ -67,8 +75,8 @@ module DiscussionsHelper
67
75
  def discussion_messages_icon(discussion)
68
76
  %Q{
69
77
  <span class="discussion-icon fa-stack fa-xs">
70
- <i class="fa fa-comment-o fa-stack-2x"></i>
71
- <i class="fa fa-stack-1x">#{discussion.validated_messages_count}</i>
78
+ <i class="far fa-comment fa-stack-2x"></i>
79
+ <i class="fas fa-stack-1x">#{discussion.validated_messages_count}</i>
72
80
  </span>
73
81
  }.html_safe
74
82
  end
@@ -77,8 +85,8 @@ module DiscussionsHelper
77
85
  if discussion.upvotes_count > 0
78
86
  %Q{
79
87
  <span class="discussion-icon fa-stack fa-xs">
80
- <i class="fa fa-star-o fa-stack-2x"></i>
81
- <i class="fa fa-stack-1x">#{discussion.upvotes_count}</i>
88
+ <i class="far fa-star fa-stack-2x"></i>
89
+ <i class="fas fa-stack-1x">#{discussion.upvotes_count}</i>
82
90
  </span>
83
91
  }.html_safe
84
92
  end
@@ -14,7 +14,7 @@ module EditorTabsHelper
14
14
  def messages_tab(exercise, organization = Organization.current)
15
15
  "<li id='messages-tab' role='presentation'>
16
16
  <a data-target='#messages' tabindex='0' aria-controls='console' role='tab' data-toggle='tab' class='editor-tab'>
17
- #{fa_icon 'comments-o'} #{t :messages }
17
+ #{fa_icon 'comments', type: :regular} #{t :messages }
18
18
  </a>
19
19
  </li>".html_safe if organization.raise_hand_enabled? && exercise.has_messages_for?(current_user)
20
20
  end
@@ -58,6 +58,6 @@ module IconsHelper
58
58
  end
59
59
 
60
60
  def icon_for_read(read)
61
- tag('i', class: "fa fa-envelope#{read ? '-o' : ''}")
61
+ tag('i', class: "fa#{read ? 'r' : 's'} fa-envelope")
62
62
  end
63
63
  end
@@ -52,11 +52,11 @@ module LinksHelper
52
52
  end
53
53
 
54
54
  def link_to_profile_terms
55
- link_to t(:terms_and_conditions).downcase, terms_user_path, target: '_blank'
55
+ link_to t(:terms_and_conditions), terms_user_path, target: '_blank'
56
56
  end
57
57
 
58
58
  def link_to_forum_terms
59
- link_to t(:forum_terms).downcase, discussions_terms_path, target: '_blank'
59
+ link_to t(:forum_terms), discussions_terms_path, target: '_blank'
60
60
  end
61
61
 
62
62
  def turbolinks_enable_for(exercise)
@@ -80,7 +80,7 @@ module LinksHelper
80
80
  return unless current_user&.writer?
81
81
 
82
82
  url = yield
83
- link_to fixed_fa_icon(:pencil), url, class: "mu-content-toolbar-item", target: "_blank", title: t(:edit)
83
+ link_to fixed_fa_icon('pencil-alt'), url, class: "mu-content-toolbar-item", target: "_blank", title: t(:edit)
84
84
  end
85
85
 
86
86
  def url_for_bibliotheca_guide(guide)
@@ -18,7 +18,7 @@ module MenuBarHelper
18
18
  end
19
19
 
20
20
  def link_to_profile
21
- li_tag menu_item('user-o', :profile, user_path)
21
+ menu_item('user', :profile, user_path)
22
22
  end
23
23
 
24
24
  def link_to_classroom
@@ -35,7 +35,15 @@ module MenuBarHelper
35
35
  menu_item icon, app_name, url
36
36
  end
37
37
 
38
+ def logout_link
39
+ li_tag menu_item('sign-out-alt', :sign_out, logout_path(origin: url_for))
40
+ end
41
+
38
42
  def menu_item(icon, name, url)
39
43
  link_to fixed_fa_icon(icon, text: t(name)), url, role: 'menuitem', tabindex: '-1'
40
44
  end
45
+
46
+ def any_menu_bar_links?
47
+ menu_bar_links.any?
48
+ end
41
49
  end
@@ -1,4 +1,8 @@
1
1
  module OverlappedButtonsHelper
2
+ def expand_icon
3
+ overlapped_button_icon :fullscreen, :expand, " (F11)"
4
+ end
5
+
2
6
  def restart_icon
3
7
  overlapped_button_icon :restart, :undo
4
8
  end
@@ -11,7 +15,7 @@ module OverlappedButtonsHelper
11
15
  link_to restart_icon, guide_progress_path(guide), class: 'mu-content-toolbar-item mu-restart-guide', data: {confirm: t(:confirm_restart)}, method: :delete
12
16
  end
13
17
 
14
- def overlapped_button_icon(key, icon)
15
- fa_icon(icon, title: t(key), class: 'fa-fw', role: 'button', 'aria-label': t(key))
18
+ def overlapped_button_icon(key, icon, extra_title='')
19
+ fa_icon(icon, title: t(key) + extra_title, class: 'fa-fw', role: 'button', 'aria-label': t(key), 'data-placement': 'left')
16
20
  end
17
21
  end
@@ -26,7 +26,7 @@
26
26
 
27
27
  <% unless enabled %>
28
28
  <div class="text-center mu-lock">
29
- <i class="fa fa-lock fa-5x"></i>
29
+ <i class="fas fa-lock fa-5x"></i>
30
30
  <p><%= t :locked_content %></p>
31
31
  </div>
32
32
  <% end %>
@@ -36,7 +36,7 @@
36
36
  <h2><%= t(:exams) %></h2>
37
37
  <% @exams.each_with_index do |it, index| %>
38
38
  <div class="chapter">
39
- <h3> <%= t(:exam_number, number: index) %> <%= link_to_path_element it, mode: :plain %></h3>
39
+ <h3> <%= index + 1 %>. <%= link_to_path_element it, mode: :plain %></h3>
40
40
 
41
41
  <div class="text-box">
42
42
  <%= it.guide.description_teaser_html %>
@@ -10,7 +10,7 @@
10
10
 
11
11
  <div class="row">
12
12
  <div class="mu-inline-block-left">
13
- <h1><%= @debatable.name %></h1>
13
+ <h1><%= t :forum %></h1>
14
14
  </div>
15
15
  </div>
16
16
 
@@ -21,3 +21,5 @@
21
21
  <%= render partial: 'layouts/discussions' %>
22
22
  <% end %>
23
23
  </div>
24
+
25
+ <%= forum_terms_link %>
@@ -3,9 +3,14 @@
3
3
  <% end %>
4
4
 
5
5
  <div class="chapter-description">
6
- <h1>
7
- <span class="hidden-xs"><%= t(:chapter_number, number: @chapter.number) %>:&nbsp;</span>
8
- <span><%= @chapter.name %></span>
6
+ <h1 class="pull-left">
7
+ <span class="hidden-xs pull-left"><%= t(:chapter_number, number: @chapter.number) %>:&nbsp;</span>
8
+ <span class="pull-left"><%= @chapter.name %></span>
9
+ <% if @chapter.monolesson? %>
10
+ <div class="mu-monolesson pull-left">
11
+ <%= render partial: 'layouts/guide_title_icons' %>
12
+ </div>
13
+ <% end %>
9
14
  </h1>
10
15
 
11
16
  <%= @chapter.description_html %>
@@ -13,14 +18,21 @@
13
18
  </div>
14
19
 
15
20
  <% if @chapter.lessons.present? %>
16
- <div>
17
- <h3><%= t(:lessons) %></h3>
21
+ <% if @chapter.monolesson? %>
22
+ <div class="mu-monolesson">
23
+ <%= render partial: 'layouts/guide', locals: { subject: @monolesson } %>
24
+ </div>
25
+ <% else %>
26
+ <div>
27
+ <h3><%= t(:lessons) %></h3>
18
28
 
19
- <% @chapter.lessons.each do |lesson| %>
20
- <h4><%= lesson.number %>. <%= link_to_path_element lesson, mode: :plain %></h4>
21
- <%= render partial: 'layouts/progress_listing', locals: {exercises: lesson.exercises} %>
29
+ <% @chapter.lessons.each do |lesson| %>
30
+ <h4><%= lesson.number %>. <%= link_to_path_element lesson, mode: :plain %></h4>
31
+ <%= render partial: 'layouts/progress_listing', locals: { exercises: lesson.exercises } %>
32
+ <% end %>
33
+ </div>
22
34
  <% end %>
23
- </div>
35
+
24
36
  <% end %>
25
37
 
26
38
  <% if @chapter.appendix.present? %>
@@ -1 +1 @@
1
- <%= render partial: "layouts/guide", locals: { subject: @complement }%>
1
+ <%= render partial: "layouts/guide_container", locals: { subject: @complement }%>
@@ -17,11 +17,11 @@
17
17
  </a>
18
18
  <% if message.from_initiator? %>
19
19
  <a class="discussion-message-not-actually-a-question <%= 'selected' if message.not_actually_a_question? %>" onclick="mumuki.Forum.discussionMessageToggleNotActuallyAQuestion('<%= question_discussion_message_url(@discussion, message) %>', $(this))">
20
- <%= fa_icon('question-circle-o', class: 'fa-xs') %>
20
+ <%= fa_icon('question-circle', type: 'regular', class: 'fa-xs') %>
21
21
  </a>
22
22
  <% end %>
23
23
  <% end %>
24
- <%= link_to fa_icon('trash-o'), discussion_message_path(@discussion, message), method: :delete, data: { confirm: t(:are_you_sure, action: t(:destroy_message)) } %>
24
+ <%= link_to fa_icon('trash-alt', type: :regular), discussion_message_path(@discussion, message), method: :delete, data: { confirm: t(:are_you_sure, action: t(:destroy_message)) } %>
25
25
  <% end %>
26
26
  <% if should_show_approved_for?(current_user, message) %>
27
27
  <span class="discussion-message-approved selected">
@@ -2,17 +2,22 @@
2
2
  <%= breadcrumbs(@debatable, t(:discussions)) %>
3
3
  <% end %>
4
4
 
5
+ <div class="row">
6
+ <div class="mu-inline-block-left">
7
+ <h1><%= t :forum %></h1>
8
+ </div>
9
+ </div>
5
10
  <div class="row">
6
11
  <% if @debatable.respond_to? :language %>
7
12
  <div class="mu-inline-block-right hidden-xs">
8
- <h1><%= language_icon @debatable.language %></h1>
13
+ <h3><%= language_icon @debatable.language %></h3>
9
14
  </div>
10
15
  <% end %>
11
16
  <div class="mu-inline-block-left">
12
- <h1>
17
+ <h3>
13
18
  <span class="hidden-xs"><%= t("#{@debatable_class.downcase}_number", number: @debatable.number) %>:&nbsp;</span>
14
19
  <span><%= @debatable.name %></span>
15
- </h1>
20
+ </h3>
16
21
  </div>
17
22
  </div>
18
23
 
@@ -23,7 +28,9 @@
23
28
  <%= new_discussion_link(:no_useful_result, :ask_a_question) %>
24
29
  <% end %>
25
30
 
26
- <%= content_for :no_container do %>
31
+ <%= content_for :no_container do %>
27
32
  <% end if current_user? %>
28
33
 
34
+ <%= forum_terms_link %>
35
+
29
36