mumuki-laboratory 7.7.6 → 7.10.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 +83 -3
- data/Rakefile +7 -1
- data/app/assets/javascripts/mumuki_laboratory/application/alias-modes.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +66 -57
- data/app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js +28 -25
- data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +8 -10
- data/app/assets/javascripts/mumuki_laboratory/application/confirmation.js +2 -2
- data/app/assets/javascripts/mumuki_laboratory/application/console.js +41 -43
- data/app/assets/javascripts/mumuki_laboratory/application/csrf-token.js +9 -12
- data/app/assets/javascripts/mumuki_laboratory/application/custom-editor.js +11 -15
- data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +1 -3
- data/app/assets/javascripts/mumuki_laboratory/application/editors.js +104 -0
- data/app/assets/javascripts/mumuki_laboratory/application/elipsis.js +5 -4
- data/app/assets/javascripts/mumuki_laboratory/application/events.js +51 -0
- data/app/assets/javascripts/mumuki_laboratory/application/exercise.js +68 -0
- data/app/assets/javascripts/mumuki_laboratory/application/inputs.js +4 -2
- data/app/assets/javascripts/mumuki_laboratory/application/interval.js +2 -4
- data/app/assets/javascripts/mumuki_laboratory/application/kids.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/load-analytics.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/messages.js +2 -2
- data/app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js +3 -6
- data/app/assets/javascripts/mumuki_laboratory/application/pin.js +3 -5
- data/app/assets/javascripts/mumuki_laboratory/application/profile.js +71 -0
- data/app/assets/javascripts/mumuki_laboratory/application/progress.js +24 -6
- data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +20 -11
- data/app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js +12 -5
- data/app/assets/javascripts/mumuki_laboratory/application/submission.js +19 -101
- data/app/assets/javascripts/mumuki_laboratory/application/submissions-store.js +93 -0
- data/app/assets/javascripts/mumuki_laboratory/application/sync-mode.js +75 -0
- data/app/assets/javascripts/mumuki_laboratory/application/timer.js +5 -6
- data/app/assets/javascripts/mumuki_laboratory/application/tooltip.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/upload.js +1 -1
- data/app/assets/javascripts/mumuki_laboratory/application/user.js +1 -1
- data/app/assets/stylesheets/mumuki_laboratory/application.scss +1 -1
- data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +19 -17
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss +41 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/{guide-corollary.scss → _guide_corollary.scss} +0 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +1 -2
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kindergarten.scss +2 -1
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/{popover.scss → _popover.scss} +0 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss +36 -0
- data/app/controllers/application_controller.rb +2 -1
- data/app/controllers/users_controller.rb +5 -1
- data/app/helpers/application_helper.rb +6 -4
- data/app/helpers/avatar_helper.rb +9 -0
- data/app/helpers/discussions_helper.rb +2 -2
- data/app/helpers/{locale_helper.rb → globals_helper.rb} +6 -2
- data/app/helpers/profile_helper.rb +5 -0
- data/app/mailers/user_mailer.rb +24 -11
- data/app/views/book/show.html.erb +1 -1
- data/app/views/exercises/show.html.erb +3 -0
- data/app/views/layouts/_main.html.erb +1 -2
- data/app/views/layouts/_progress.html.erb +1 -1
- data/app/views/layouts/_progress_bar.html.erb +7 -1
- data/app/views/layouts/_runner_assets.html.erb +1 -2
- data/app/views/layouts/application.html.erb +2 -2
- data/app/views/layouts/modals/_avatar_picker.html.erb +16 -0
- data/app/views/users/_avatar_list.html.erb +11 -0
- data/app/views/users/_edit_user_form.html.erb +22 -0
- data/app/views/users/_user_form.html.erb +21 -8
- data/app/views/users/edit.html.erb +5 -0
- data/app/views/users/show.html.erb +0 -4
- data/config/routes.rb +1 -1
- data/lib/mumuki/laboratory/controllers.rb +1 -0
- data/lib/mumuki/laboratory/controllers/incognito_mode.rb +28 -0
- data/lib/mumuki/laboratory/locales/datetime.es.yml +14 -14
- data/lib/mumuki/laboratory/locales/en.yml +12 -4
- data/lib/mumuki/laboratory/locales/es.yml +12 -4
- data/lib/mumuki/laboratory/locales/pt.yml +10 -2
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/spec/dummy/db/schema.rb +13 -1
- data/spec/features/chapter_spec.rb +17 -0
- data/spec/features/exercise_flow_spec.rb +54 -6
- data/spec/features/home_public_flow_spec.rb +16 -0
- data/spec/helpers/avatar_helper_spec.rb +26 -0
- data/spec/javascripts/editors-spec.js +54 -0
- data/spec/javascripts/events-spec.js +33 -0
- data/spec/javascripts/exercise-spec.js +41 -0
- data/spec/javascripts/global-spec.js +6 -0
- data/spec/javascripts/spec-helper.js +4 -0
- data/spec/javascripts/submissions-store-spec.js +44 -0
- data/spec/javascripts/sync-mode-spec.js +15 -0
- data/spec/mailers/user_mailer_spec.rb +23 -3
- data/spec/teaspoon_env.rb +8 -2
- data/vendor/assets/javascripts/codemirror-modes/gobstones.js +3 -3
- metadata +38 -11
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_follow_us.scss +0 -16
- data/app/helpers/version_helper.rb +0 -5
@@ -0,0 +1,44 @@
|
|
1
|
+
describe("SubmissionsStore", () => {
|
2
|
+
const emptyProgramSubmission = {"solution[content]": "program {}"};
|
3
|
+
/** @type {SubmissionResult} */
|
4
|
+
const passedSubmissionResult = {status: 'passed'};
|
5
|
+
/** @type {SubmissionAndResult} */
|
6
|
+
const passedEmptyProgramSubmissionAndResult = { submission: emptyProgramSubmission, result: passedSubmissionResult };
|
7
|
+
|
8
|
+
beforeEach(() => {
|
9
|
+
window.localStorage.clear()
|
10
|
+
});
|
11
|
+
|
12
|
+
describe('getLastSubmission', () => {
|
13
|
+
it("answers null if submission not present", () => {
|
14
|
+
expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toBe(null)
|
15
|
+
})
|
16
|
+
|
17
|
+
it("answers the last submission result if already sent", () => {
|
18
|
+
mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
|
19
|
+
expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toEqual(passedEmptyProgramSubmissionAndResult)
|
20
|
+
})
|
21
|
+
})
|
22
|
+
|
23
|
+
describe('getLastSubmissionStatus', () => {
|
24
|
+
it("answers pending if submission not present", () => {
|
25
|
+
expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('pending')
|
26
|
+
})
|
27
|
+
|
28
|
+
it("answers the last submission status if previously sent", () => {
|
29
|
+
mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
|
30
|
+
expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('passed')
|
31
|
+
})
|
32
|
+
});
|
33
|
+
|
34
|
+
describe('getCachedResultFor', () => {
|
35
|
+
it("answers null if submission not present", () => {
|
36
|
+
expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toBe(null)
|
37
|
+
})
|
38
|
+
|
39
|
+
it("answers the last submission if previously sent", () => {
|
40
|
+
mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
|
41
|
+
expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toEqual(passedSubmissionResult)
|
42
|
+
})
|
43
|
+
});
|
44
|
+
})
|
@@ -0,0 +1,15 @@
|
|
1
|
+
describe('sync mode', () => {
|
2
|
+
it('can choose server mode', () => {
|
3
|
+
mumuki.incognitoUser = false;
|
4
|
+
mumuki.syncMode._selectSyncMode();
|
5
|
+
|
6
|
+
expect(mumuki.syncMode._current instanceof mumuki.syncMode.ServerSyncMode).toBe(true);
|
7
|
+
})
|
8
|
+
|
9
|
+
it('can choose local mode', () => {
|
10
|
+
mumuki.incognitoUser = true;
|
11
|
+
mumuki.syncMode._selectSyncMode();
|
12
|
+
|
13
|
+
expect(mumuki.syncMode._current instanceof mumuki.syncMode.ClientSyncMode).toBe(true);
|
14
|
+
})
|
15
|
+
})
|
@@ -148,21 +148,21 @@ RSpec.describe UserMailer, type: :mailer do
|
|
148
148
|
|
149
149
|
context "registered 1 week ago" do
|
150
150
|
it { expect(user.should_remind?).to be true }
|
151
|
-
it { expect(reminder.body.encoded).to include(
|
151
|
+
it { expect(reminder.body.encoded).to include('you've never submitted solutions') }
|
152
152
|
end
|
153
153
|
|
154
154
|
context "last submission 2 weeks ago" do
|
155
155
|
let(:days_since_user_creation) { 16 }
|
156
156
|
|
157
157
|
it { expect(user.should_remind?).to be true }
|
158
|
-
it { expect(reminder.body.encoded).to include(
|
158
|
+
it { expect(reminder.body.encoded).to include('you've never submitted solutions') }
|
159
159
|
end
|
160
160
|
|
161
161
|
context "last submission 3 weeks ago" do
|
162
162
|
let(:days_since_user_creation) { 26 }
|
163
163
|
|
164
164
|
it { expect(user.should_remind?).to be true }
|
165
|
-
it { expect(reminder.body.encoded).to include(
|
165
|
+
it { expect(reminder.body.encoded).to include('you've never submitted solutions') }
|
166
166
|
end
|
167
167
|
|
168
168
|
context "last submission 4 weeks ago" do
|
@@ -178,4 +178,24 @@ RSpec.describe UserMailer, type: :mailer do
|
|
178
178
|
it { expect(user.should_remind?).to be false }
|
179
179
|
end
|
180
180
|
end
|
181
|
+
|
182
|
+
describe 'welcome email' do
|
183
|
+
let(:email) { UserMailer.welcome_email(user, organization) }
|
184
|
+
|
185
|
+
let(:organization) { create :organization, welcome_email_template: 'hello <%= @user.first_name %>!' }
|
186
|
+
|
187
|
+
let(:user) { create :user, first_name: 'some name' }
|
188
|
+
|
189
|
+
it { expect(email.body.encoded).to eq 'hello some name!' }
|
190
|
+
|
191
|
+
context 'when organization does not have a custom sender address' do
|
192
|
+
it { expect(email.from).to eq ['support@mumuki.org'] }
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'when organization does not have a custom sender address' do
|
196
|
+
before { organization.welcome_email_sender = 'info@mumuki.org' }
|
197
|
+
|
198
|
+
it { expect(email.from).to eq ['info@mumuki.org'] }
|
199
|
+
end
|
200
|
+
end
|
181
201
|
end
|
data/spec/teaspoon_env.rb
CHANGED
@@ -3,6 +3,8 @@ unless defined?(Rails)
|
|
3
3
|
require File.expand_path("../dummy/config/environment", __FILE__)
|
4
4
|
end
|
5
5
|
|
6
|
+
# Enable this line for more verbose debugging
|
7
|
+
# Selenium::WebDriver.logger.level = :debug
|
6
8
|
|
7
9
|
Teaspoon.configure do |config|
|
8
10
|
# Determines where the Teaspoon routes will be mounted. Changing this to "/jasmine" would allow you to browse to
|
@@ -106,8 +108,12 @@ Teaspoon.configure do |config|
|
|
106
108
|
# Capybara Webkit: https://github.com/modeset/teaspoon/wiki/Using-Capybara-Webkit
|
107
109
|
# config.driver = :capybara_webkit
|
108
110
|
config.driver = :selenium
|
109
|
-
config.driver_options = {
|
110
|
-
|
111
|
+
config.driver_options = {
|
112
|
+
client_driver: :firefox,
|
113
|
+
selenium_options: {
|
114
|
+
options: Selenium::WebDriver::Firefox::Options.new(log_level: :warn)
|
115
|
+
}
|
116
|
+
}
|
111
117
|
|
112
118
|
# Specify the timeout for the driver. Specs are expected to complete within this time frame or the run will be
|
113
119
|
# considered a failure. This is to avoid issues that can arise where tests stall.
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
(function() {
|
4
4
|
var locale = document.querySelector("html").lang || 'es';
|
5
|
-
var
|
5
|
+
var language = new Intl.Locale(locale).language;
|
6
6
|
|
7
7
|
var keywords = [
|
8
8
|
"program", "procedure", "function", "interactive", "if",
|
@@ -23,8 +23,8 @@
|
|
23
23
|
en: ["Put", "Grab", "Move", "GoToEdge", "EmptyBoardContents", "numStones", "anyStones", "canMove", "next", "prev", "opposite", "minBool", "maxBool", "minDir", "maxDir", "minColor", "maxColor"]
|
24
24
|
};
|
25
25
|
|
26
|
-
const localizedKeywordsAndBuiltins = keywords.concat(builtins[
|
27
|
-
const localizedAtoms = atoms[
|
26
|
+
const localizedKeywordsAndBuiltins = keywords.concat(builtins[language]);
|
27
|
+
const localizedAtoms = atoms[language];
|
28
28
|
|
29
29
|
var buildList = function(values) {
|
30
30
|
return values.join('|');
|
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: 7.
|
4
|
+
version: 7.10.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: 2020-
|
11
|
+
date: 2020-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 7.
|
33
|
+
version: 7.10.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 7.
|
40
|
+
version: 7.10.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mumukit-bridge
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '7.
|
89
|
+
version: '7.8'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '7.
|
96
|
+
version: '7.8'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: mumukit-content-type
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -344,7 +344,10 @@ files:
|
|
344
344
|
- app/assets/javascripts/mumuki_laboratory/application/csrf-token.js
|
345
345
|
- app/assets/javascripts/mumuki_laboratory/application/custom-editor.js
|
346
346
|
- app/assets/javascripts/mumuki_laboratory/application/discussions.js
|
347
|
+
- app/assets/javascripts/mumuki_laboratory/application/editors.js
|
347
348
|
- app/assets/javascripts/mumuki_laboratory/application/elipsis.js
|
349
|
+
- app/assets/javascripts/mumuki_laboratory/application/events.js
|
350
|
+
- app/assets/javascripts/mumuki_laboratory/application/exercise.js
|
348
351
|
- app/assets/javascripts/mumuki_laboratory/application/free-form.js
|
349
352
|
- app/assets/javascripts/mumuki_laboratory/application/inputs.js
|
350
353
|
- app/assets/javascripts/mumuki_laboratory/application/interval.js
|
@@ -357,10 +360,13 @@ files:
|
|
357
360
|
- app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js
|
358
361
|
- app/assets/javascripts/mumuki_laboratory/application/pin.js
|
359
362
|
- app/assets/javascripts/mumuki_laboratory/application/popover.js
|
363
|
+
- app/assets/javascripts/mumuki_laboratory/application/profile.js
|
360
364
|
- app/assets/javascripts/mumuki_laboratory/application/progress.js
|
361
365
|
- app/assets/javascripts/mumuki_laboratory/application/results-renderer.js
|
362
366
|
- app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js
|
363
367
|
- app/assets/javascripts/mumuki_laboratory/application/submission.js
|
368
|
+
- app/assets/javascripts/mumuki_laboratory/application/submissions-store.js
|
369
|
+
- app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
|
364
370
|
- app/assets/javascripts/mumuki_laboratory/application/timer.js
|
365
371
|
- app/assets/javascripts/mumuki_laboratory/application/tooltip.js
|
366
372
|
- app/assets/javascripts/mumuki_laboratory/application/upload.js
|
@@ -377,6 +383,7 @@ files:
|
|
377
383
|
- app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss
|
378
384
|
- app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss
|
379
385
|
- app/assets/stylesheets/mumuki_laboratory/application/hovers.scss
|
386
|
+
- app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss
|
380
387
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
|
381
388
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss
|
382
389
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_chapter_show.scss
|
@@ -389,8 +396,8 @@ files:
|
|
389
396
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_assignment.scss
|
390
397
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_results.scss
|
391
398
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss
|
392
|
-
- app/assets/stylesheets/mumuki_laboratory/application/modules/_follow_us.scss
|
393
399
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss
|
400
|
+
- app/assets/stylesheets/mumuki_laboratory/application/modules/_guide_corollary.scss
|
394
401
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_highlight.scss
|
395
402
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss
|
396
403
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss
|
@@ -398,12 +405,12 @@ files:
|
|
398
405
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_modal.scss
|
399
406
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_organization_chooser.scss
|
400
407
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss
|
408
|
+
- app/assets/stylesheets/mumuki_laboratory/application/modules/_popover.scss
|
401
409
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss
|
402
410
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_listing.scss
|
403
411
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss
|
404
412
|
- app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss
|
405
|
-
- app/assets/stylesheets/mumuki_laboratory/application/modules/
|
406
|
-
- app/assets/stylesheets/mumuki_laboratory/application/modules/popover.scss
|
413
|
+
- app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss
|
407
414
|
- app/controllers/ajax_controller.rb
|
408
415
|
- app/controllers/api/base_controller.rb
|
409
416
|
- app/controllers/api/courses_controller.rb
|
@@ -448,6 +455,7 @@ files:
|
|
448
455
|
- app/helpers/assignment_result_helper.rb
|
449
456
|
- app/helpers/assistance_box_helper.rb
|
450
457
|
- app/helpers/authors_helper.rb
|
458
|
+
- app/helpers/avatar_helper.rb
|
451
459
|
- app/helpers/breadcrumbs_helper.rb
|
452
460
|
- app/helpers/choices_helper.rb
|
453
461
|
- app/helpers/concerns/with_student_path_navigation.rb
|
@@ -461,9 +469,9 @@ files:
|
|
461
469
|
- app/helpers/editor_tabs_helper.rb
|
462
470
|
- app/helpers/email_helper.rb
|
463
471
|
- app/helpers/exercise_input_helper.rb
|
472
|
+
- app/helpers/globals_helper.rb
|
464
473
|
- app/helpers/icons_helper.rb
|
465
474
|
- app/helpers/links_helper.rb
|
466
|
-
- app/helpers/locale_helper.rb
|
467
475
|
- app/helpers/menu_bar_helper.rb
|
468
476
|
- app/helpers/messages_helper.rb
|
469
477
|
- app/helpers/multiple_file_editor_helper.rb
|
@@ -472,10 +480,10 @@ files:
|
|
472
480
|
- app/helpers/organization_list_helper.rb
|
473
481
|
- app/helpers/overlapped_buttons_helper.rb
|
474
482
|
- app/helpers/page_title_helper.rb
|
483
|
+
- app/helpers/profile_helper.rb
|
475
484
|
- app/helpers/progress_bar_helper.rb
|
476
485
|
- app/helpers/progress_helper.rb
|
477
486
|
- app/helpers/runner_assets_helper.rb
|
478
|
-
- app/helpers/version_helper.rb
|
479
487
|
- app/mailers/application_mailer.rb
|
480
488
|
- app/mailers/user_mailer.rb
|
481
489
|
- app/views/appendixes/show.html.erb
|
@@ -563,6 +571,7 @@ files:
|
|
563
571
|
- app/views/layouts/exercise_inputs/read_only_editors/_text.erb
|
564
572
|
- app/views/layouts/mailer.html.erb
|
565
573
|
- app/views/layouts/mailer.text.erb
|
574
|
+
- app/views/layouts/modals/_avatar_picker.html.erb
|
566
575
|
- app/views/layouts/modals/_guide_corollary.html.erb
|
567
576
|
- app/views/layouts/modals/_kids_context.html.erb
|
568
577
|
- app/views/layouts/modals/_kids_results.html.erb
|
@@ -578,8 +587,11 @@ files:
|
|
578
587
|
- app/views/user_mailer/3rd_reminder.text.erb
|
579
588
|
- app/views/user_mailer/no_submissions_reminder.html.erb
|
580
589
|
- app/views/user_mailer/no_submissions_reminder.text.erb
|
590
|
+
- app/views/users/_avatar_list.html.erb
|
591
|
+
- app/views/users/_edit_user_form.html.erb
|
581
592
|
- app/views/users/_profile_fields.html.erb
|
582
593
|
- app/views/users/_user_form.html.erb
|
594
|
+
- app/views/users/edit.html.erb
|
583
595
|
- app/views/users/show.html.erb
|
584
596
|
- config/i18n-tasks.yml
|
585
597
|
- config/initializers/form_builder.rb
|
@@ -595,6 +607,7 @@ files:
|
|
595
607
|
- lib/mumuki/laboratory/controllers/dynamic_errors.rb
|
596
608
|
- lib/mumuki/laboratory/controllers/embedded_mode.rb
|
597
609
|
- lib/mumuki/laboratory/controllers/exercise_seed.rb
|
610
|
+
- lib/mumuki/laboratory/controllers/incognito_mode.rb
|
598
611
|
- lib/mumuki/laboratory/controllers/nested_in_exercise.rb
|
599
612
|
- lib/mumuki/laboratory/controllers/notifications.rb
|
600
613
|
- lib/mumuki/laboratory/controllers/results_rendering.rb
|
@@ -709,6 +722,7 @@ files:
|
|
709
722
|
- spec/features/topic_flow_spec.rb
|
710
723
|
- spec/helpers/application_helper_spec.rb
|
711
724
|
- spec/helpers/authors_helper_spec.rb
|
725
|
+
- spec/helpers/avatar_helper_spec.rb
|
712
726
|
- spec/helpers/breadcrumbs_helper_spec.rb
|
713
727
|
- spec/helpers/email_helper_spec.rb
|
714
728
|
- spec/helpers/exercise_input_helper_spec.rb
|
@@ -719,10 +733,16 @@ files:
|
|
719
733
|
- spec/helpers/with_navigation_spec.rb
|
720
734
|
- spec/javascripts/bridge-spec.js
|
721
735
|
- spec/javascripts/csrf-token-spec.js
|
736
|
+
- spec/javascripts/editors-spec.js
|
722
737
|
- spec/javascripts/elipsis-spec.js
|
738
|
+
- spec/javascripts/events-spec.js
|
739
|
+
- spec/javascripts/exercise-spec.js
|
740
|
+
- spec/javascripts/global-spec.js
|
723
741
|
- spec/javascripts/results-renderers-spec.js
|
724
742
|
- spec/javascripts/spec-helper.js
|
725
743
|
- spec/javascripts/speech-bubble-renderer-spec.js
|
744
|
+
- spec/javascripts/submissions-store-spec.js
|
745
|
+
- spec/javascripts/sync-mode-spec.js
|
726
746
|
- spec/javascripts/timeout-spec.js
|
727
747
|
- spec/javascripts/timer-spec.js
|
728
748
|
- spec/login_helper.rb
|
@@ -868,6 +888,7 @@ test_files:
|
|
868
888
|
- spec/helpers/breadcrumbs_helper_spec.rb
|
869
889
|
- spec/helpers/with_navigation_spec.rb
|
870
890
|
- spec/helpers/exercise_input_helper_spec.rb
|
891
|
+
- spec/helpers/avatar_helper_spec.rb
|
871
892
|
- spec/helpers/test_results_rendering_spec.rb
|
872
893
|
- spec/helpers/application_helper_spec.rb
|
873
894
|
- spec/helpers/icons_helper_spec.rb
|
@@ -876,13 +897,19 @@ test_files:
|
|
876
897
|
- spec/capybara_helper.rb
|
877
898
|
- spec/evaluation_helper.rb
|
878
899
|
- spec/javascripts/bridge-spec.js
|
900
|
+
- spec/javascripts/events-spec.js
|
901
|
+
- spec/javascripts/exercise-spec.js
|
902
|
+
- spec/javascripts/global-spec.js
|
879
903
|
- spec/javascripts/speech-bubble-renderer-spec.js
|
880
904
|
- spec/javascripts/timeout-spec.js
|
881
905
|
- spec/javascripts/results-renderers-spec.js
|
882
906
|
- spec/javascripts/csrf-token-spec.js
|
883
907
|
- spec/javascripts/elipsis-spec.js
|
884
908
|
- spec/javascripts/timer-spec.js
|
909
|
+
- spec/javascripts/editors-spec.js
|
885
910
|
- spec/javascripts/spec-helper.js
|
911
|
+
- spec/javascripts/submissions-store-spec.js
|
912
|
+
- spec/javascripts/sync-mode-spec.js
|
886
913
|
- spec/controllers/discussions_controller_spec.rb
|
887
914
|
- spec/controllers/chapters_controller_spec.rb
|
888
915
|
- spec/controllers/students_api_controller_spec.rb
|
@@ -1,16 +0,0 @@
|
|
1
|
-
.social-icon {
|
2
|
-
padding-top: 6px;
|
3
|
-
font-size: 16px;
|
4
|
-
text-align: center;
|
5
|
-
width: 32px;
|
6
|
-
height: 32px;
|
7
|
-
border: 2px solid $brand-info;
|
8
|
-
border-radius: 50%;
|
9
|
-
margin: 5px;
|
10
|
-
}
|
11
|
-
|
12
|
-
a.social-icon:hover, a.social-icon:active, a.social-icon:focus {
|
13
|
-
text-decoration: none;
|
14
|
-
border-color: $brand-info-light;
|
15
|
-
color: $brand-info-light;
|
16
|
-
}
|