Add new help rooms and logic
This commit is contained in:
@ -22,14 +22,17 @@ main = (function(main) {
|
|||||||
main.chat.GitterChat = e.detail.Chat;
|
main.chat.GitterChat = e.detail.Chat;
|
||||||
|
|
||||||
main.chat.createHelpChat = function(room, helpChatBtnClass, roomTitle) {
|
main.chat.createHelpChat = function(room, helpChatBtnClass, roomTitle) {
|
||||||
roomTitle = roomTitle || 'Waypoint Help';
|
// room is always in PascalCase
|
||||||
|
roomTitle = room
|
||||||
|
.replace(/([A-Z])/g, ' $1')
|
||||||
|
.replace('Java Script', 'JavaScript');
|
||||||
|
|
||||||
$('body').append(
|
$('body').append(
|
||||||
'<aside id="chat-embed-help" class="gitter-chat-embed is-collapsed" />'
|
'<aside id="chat-embed-help" class="gitter-chat-embed is-collapsed" />'
|
||||||
);
|
);
|
||||||
|
|
||||||
main.chat.helpChat = new main.chat.GitterChat({
|
main.chat.helpChat = new main.chat.GitterChat({
|
||||||
room: room,
|
room: `freecodecamp/${room}`,
|
||||||
activationElement: false,
|
activationElement: false,
|
||||||
targetElement: $('#chat-embed-help')
|
targetElement: $('#chat-embed-help')
|
||||||
});
|
});
|
||||||
|
@ -70,6 +70,11 @@
|
|||||||
"default": [],
|
"default": [],
|
||||||
"description": "prepended to user code"
|
"description": "prepended to user code"
|
||||||
},
|
},
|
||||||
|
"helpRoom": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "Help",
|
||||||
|
"description": "Gitter help chatroom this challenge belongs too. Must be PascalCase"
|
||||||
|
},
|
||||||
"fileName": {
|
"fileName": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "filename challenge comes from. Used in dev mode"
|
"description": "filename challenge comes from. Used in dev mode"
|
||||||
|
@ -22,6 +22,8 @@ destroy()
|
|||||||
var isBeta = !!challengeSpec.isBeta;
|
var isBeta = !!challengeSpec.isBeta;
|
||||||
var isComingSoon = !!challengeSpec.isComingSoon;
|
var isComingSoon = !!challengeSpec.isComingSoon;
|
||||||
var fileName = challengeSpec.fileName;
|
var fileName = challengeSpec.fileName;
|
||||||
|
var helpRoom = challengeSpec.helpRoom || 'Help';
|
||||||
|
|
||||||
console.log('parsed %s successfully', block);
|
console.log('parsed %s successfully', block);
|
||||||
|
|
||||||
// challenge file has no challenges...
|
// challenge file has no challenges...
|
||||||
@ -39,6 +41,7 @@ destroy()
|
|||||||
.replace(/\s/g, '-');
|
.replace(/\s/g, '-');
|
||||||
|
|
||||||
challenge.fileName = fileName;
|
challenge.fileName = fileName;
|
||||||
|
challenge.helpRoom = helpRoom;
|
||||||
challenge.order = order;
|
challenge.order = order;
|
||||||
challenge.suborder = index + 1;
|
challenge.suborder = index + 1;
|
||||||
challenge.block = block;
|
challenge.block = block;
|
||||||
|
@ -164,6 +164,7 @@ function getRenderData$(user, challenge$, origChallengeName, solution) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(challenge.helpRoom);
|
||||||
// save user does nothing if user does not exist
|
// save user does nothing if user does not exist
|
||||||
return Observable.just({
|
return Observable.just({
|
||||||
data: {
|
data: {
|
||||||
@ -485,6 +486,7 @@ module.exports = function(app) {
|
|||||||
}
|
}
|
||||||
var view = challengeView[data.challengeType];
|
var view = challengeView[data.challengeType];
|
||||||
res.cookie('currentChallengeId', data.id);
|
res.cookie('currentChallengeId', data.id);
|
||||||
|
console.log(data.helpRoom);
|
||||||
res.render(view, data);
|
res.render(view, data);
|
||||||
},
|
},
|
||||||
next,
|
next,
|
||||||
|
@ -15,7 +15,11 @@ export default function getFromDisk$(challenge) {
|
|||||||
)];
|
)];
|
||||||
|
|
||||||
return Observable.just(require(path.join(basePath, challenge.fileName)))
|
return Observable.just(require(path.join(basePath, challenge.fileName)))
|
||||||
.map(challengeSpec => challengeSpec.challenges[challenge.suborder - 1])
|
.map(challengeSpec => {
|
||||||
|
const _challenge = challengeSpec.challenges[challenge.suborder - 1];
|
||||||
|
_challenge.helpRoom = challengeSpec.helpRoom || 'Help';
|
||||||
|
return _challenge;
|
||||||
|
})
|
||||||
.map(challenge => {
|
.map(challenge => {
|
||||||
challenge.head = challenge.head || [];
|
challenge.head = challenge.head || [];
|
||||||
challenge.tail = challenge.tail || [];
|
challenge.tail = challenge.tail || [];
|
||||||
|
@ -99,8 +99,6 @@ block content
|
|||||||
|
|
||||||
include ../partials/challenge-footer
|
include ../partials/challenge-footer
|
||||||
script.
|
script.
|
||||||
document.addEventListener('gitter-sidecar-ready', function(e) {
|
if (!!{JSON.stringify(MDNlinks.length)}) {
|
||||||
if (window.main) {
|
$('#MDN-links').addClass('collapse');
|
||||||
window.main.chat.createHelpChat('freecodecamp/helpbonfires', '#challenge-help-btn', 'Bonfires Help');
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
@ -88,9 +88,3 @@ block content
|
|||||||
});
|
});
|
||||||
|
|
||||||
include ../partials/challenge-footer
|
include ../partials/challenge-footer
|
||||||
script.
|
|
||||||
document.addEventListener('gitter-sidecar-ready', function(e) {
|
|
||||||
if (window.main) {
|
|
||||||
window.main.chat.createHelpChat('freecodecamp/help', '#challenge-help-btn');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -91,11 +91,9 @@ block content
|
|||||||
|
|
||||||
include ../partials/challenge-footer
|
include ../partials/challenge-footer
|
||||||
script.
|
script.
|
||||||
document.addEventListener('gitter-sidecar-ready', function(e) {
|
if (!!{JSON.stringify(MDNlinks.length)}) {
|
||||||
if (window.main) {
|
$('#MDN-links').addClass('collapse');
|
||||||
window.main.chat.createHelpChat('freecodecamp/help', '#challenge-help-btn');
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
common.init.push(function() {
|
common.init.push(function() {
|
||||||
common.editor.setOption('mode', 'javascript');
|
common.editor.setOption('mode', 'javascript');
|
||||||
|
@ -87,9 +87,4 @@ block content
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('gitter-sidecar-ready', function(e) {
|
|
||||||
if (window.main) {
|
|
||||||
window.main.chat.createHelpChat('freecodecamp/help', '#challenge-help-btn');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
include ../partials/challenge-footer
|
include ../partials/challenge-footer
|
||||||
|
@ -106,25 +106,4 @@ block content
|
|||||||
$('#complete-zipline-or-basejump-dialog').modal('show');
|
$('#complete-zipline-or-basejump-dialog').modal('show');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
document.addEventListener('gitter-sidecar-ready', function(e) {
|
|
||||||
var room = 'freecodecamp/help';
|
|
||||||
var title;
|
|
||||||
|
|
||||||
if (common.challengeType === '4') {
|
|
||||||
room = 'freecodecamp/helpBasejumps';
|
|
||||||
title = 'Basejump Help';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (common.challengeType === '3') {
|
|
||||||
room = 'freecodecamp/helpZiplines';
|
|
||||||
title = 'Zipline Help';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (window.main) {
|
|
||||||
window.main.chat.createHelpChat(room, '#challenge-help-btn', title);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
include ../partials/challenge-footer
|
include ../partials/challenge-footer
|
||||||
|
@ -5,3 +5,10 @@ script.
|
|||||||
if (typeof localStorage !== 'undefined') {
|
if (typeof localStorage !== 'undefined') {
|
||||||
localStorage.setItem('currentDashedName', typeof common !== 'undefined' && common.dashedName || '');
|
localStorage.setItem('currentDashedName', typeof common !== 'undefined' && common.dashedName || '');
|
||||||
}
|
}
|
||||||
|
var common = window.common || { init: [] };
|
||||||
|
common.helpRoom = !{JSON.stringify(helpRoom)};
|
||||||
|
document.addEventListener('gitter-sidecar-ready', function(e) {
|
||||||
|
if (window.main) {
|
||||||
|
window.main.chat.createHelpChat(common.helpRoom, '#challenge-help-btn');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Reference in New Issue
Block a user