@ -174,7 +174,7 @@
|
|||||||
"one-var": 0,
|
"one-var": 0,
|
||||||
"operator-assignment": 0,
|
"operator-assignment": 0,
|
||||||
"padded-blocks": 0,
|
"padded-blocks": 0,
|
||||||
"quote-props": 0,
|
"quote-props": [2, "as-needed"],
|
||||||
"quotes": [
|
"quotes": [
|
||||||
2,
|
2,
|
||||||
"single",
|
"single",
|
||||||
|
@ -34,8 +34,13 @@ If you've found a bug that is not on the board, [follow these steps](#found-a-bu
|
|||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- [MongoDB](http://www.mongodb.org/downloads)
|
| Prerequisite | Version |
|
||||||
- [Node.js](http://nodejs.org)
|
|--------------|---------|
|
||||||
|
| [MongoDB](http://www.mongodb.org/downloads) | `~ ^3` |
|
||||||
|
| [Node.js](http://nodejs.org) | `~ ^4` |
|
||||||
|
| npm | `~ ^2` |
|
||||||
|
|
||||||
|
> _Updating to the latest releases is recomended_.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
|
@ -97,7 +97,11 @@ main = (function(main, global) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$('#nav-chat-btn').on('click', toggleMainChat);
|
$('#nav-chat-btn').on('click', function(event) {
|
||||||
|
if (!(event.ctrlKey || event.metaKey)) {
|
||||||
|
toggleMainChat();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function showMainChat() {
|
function showMainChat() {
|
||||||
if (!main.chat.isOpen) {
|
if (!main.chat.isOpen) {
|
||||||
@ -350,7 +354,11 @@ $(document).ready(function() {
|
|||||||
var mapFilter = $('#map-filter');
|
var mapFilter = $('#map-filter');
|
||||||
var mapShowAll = $('#showAll');
|
var mapShowAll = $('#showAll');
|
||||||
|
|
||||||
$('#nav-map-btn').on('click', toggleMap);
|
$('#nav-map-btn').on('click', function(event) {
|
||||||
|
if (!(event.ctrlKey || event.metaKey)) {
|
||||||
|
toggleMap();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('.map-aside-action-collapse').on('click', collapseMap);
|
$('.map-aside-action-collapse').on('click', collapseMap);
|
||||||
|
|
||||||
@ -381,7 +389,11 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#nav-wiki-btn').on('click', toggleWiki);
|
$('#nav-wiki-btn').on('click', function(event) {
|
||||||
|
if (!(event.ctrlKey || event.metaKey)) {
|
||||||
|
toggleWiki();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('.wiki-aside-action-collapse').on('click', collapseWiki);
|
$('.wiki-aside-action-collapse').on('click', collapseWiki);
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ export default React.createClass({
|
|||||||
const linkClassName = classNames(className, {
|
const linkClassName = classNames(className, {
|
||||||
// 'active': active, we don't actually use the active class
|
// 'active': active, we don't actually use the active class
|
||||||
// but it is used for a11y below
|
// but it is used for a11y below
|
||||||
'disabled': disabled
|
disabled: disabled
|
||||||
});
|
});
|
||||||
|
|
||||||
let linkProps = {
|
let linkProps = {
|
||||||
|
@ -11,7 +11,7 @@ export default ({ services }) => ({ dispatch }) => next => {
|
|||||||
.map(({
|
.map(({
|
||||||
username,
|
username,
|
||||||
picture,
|
picture,
|
||||||
progressTimestamps = [],
|
points,
|
||||||
isFrontEndCert,
|
isFrontEndCert,
|
||||||
isBackEndCert,
|
isBackEndCert,
|
||||||
isFullStackCert
|
isFullStackCert
|
||||||
@ -21,7 +21,7 @@ export default ({ services }) => ({ dispatch }) => next => {
|
|||||||
payload: {
|
payload: {
|
||||||
username,
|
username,
|
||||||
picture,
|
picture,
|
||||||
points: progressTimestamps.length,
|
points,
|
||||||
isFrontEndCert,
|
isFrontEndCert,
|
||||||
isBackEndCert,
|
isBackEndCert,
|
||||||
isFullStackCert,
|
isFullStackCert,
|
||||||
|
@ -48,7 +48,7 @@ const certTypes = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function isValidURL(data) {
|
function isValidURL(data) {
|
||||||
return isURL(data, { 'require_protocol': true });
|
return isURL(data, { require_protocol: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
const fields = [
|
const fields = [
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const defaults = {
|
const defaults = {
|
||||||
'string': {
|
string: {
|
||||||
value: '',
|
value: '',
|
||||||
valid: false,
|
valid: false,
|
||||||
pristine: true,
|
pristine: true,
|
||||||
|
@ -44,7 +44,7 @@ module.exports = function(User) {
|
|||||||
|
|
||||||
// username should not be in blacklist
|
// username should not be in blacklist
|
||||||
User.validatesExclusionOf('username', {
|
User.validatesExclusionOf('username', {
|
||||||
'in': blacklistedUsernames,
|
in: blacklistedUsernames,
|
||||||
message: 'is taken'
|
message: 'is taken'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ export function postJSON$(url, body) {
|
|||||||
responseType: 'json',
|
responseType: 'json',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Accept': 'application/json'
|
Accept: 'application/json'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.map(({ response }) => response);
|
.map(({ response }) => response);
|
||||||
@ -303,7 +303,7 @@ export function getJSON$(url) {
|
|||||||
responseType: 'json',
|
responseType: 'json',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Accept': 'application/json'
|
Accept: 'application/json'
|
||||||
}
|
}
|
||||||
}).map(({ response }) => response);
|
}).map(({ response }) => response);
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,7 @@
|
|||||||
"morgan": "^1.6.1",
|
"morgan": "^1.6.1",
|
||||||
"node-uuid": "^1.4.3",
|
"node-uuid": "^1.4.3",
|
||||||
"nodemailer": "^2.1.0",
|
"nodemailer": "^2.1.0",
|
||||||
|
"nodemailer-ses-transport": "^1.3.0",
|
||||||
"normalize-url": "^1.3.1",
|
"normalize-url": "^1.3.1",
|
||||||
"normalizr": "^2.0.0",
|
"normalizr": "^2.0.0",
|
||||||
"object.assign": "^4.0.3",
|
"object.assign": "^4.0.3",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"id": "bd7168d8c242eddfaeb5bd13",
|
"id": "bd7168d8c242eddfaeb5bd13",
|
||||||
"title": "Visualize Data with a Bar Chart",
|
"title": "Visualize Data with a Bar Chart",
|
||||||
"description": [
|
"description": [
|
||||||
"<strong>Objective:</strong> Build a <a href='https://codepen.io' target='_blank'>CodePen.io</a> app that is functionally similar to this: <a href='https://codepen.io/FreeCodeCamp/full/adBBWd' target='_blank'>https://codepen.io/FreeCodeCamp/full/adBBWd</a>.",
|
"<strong>Objective:</strong> Build a <a href='https://codepen.io' target='_blank'>CodePen.io</a> app that is functionally similar to this: <a href='https://codepen.io/FreeCodeCamp/full/vGjLVZ' target='_blank'>https://codepen.io/FreeCodeCamp/full/vGjLVZ</a>.",
|
||||||
"<strong>Rule #1:</strong> Don't look at the example project's code. Figure it out for yourself.",
|
"<strong>Rule #1:</strong> Don't look at the example project's code. Figure it out for yourself.",
|
||||||
"<strong>Rule #2:</strong> Fulfill the below <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>user stories</a>. Use whichever libraries or APIs you need. Give it your own personal style.",
|
"<strong>Rule #2:</strong> Fulfill the below <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>user stories</a>. Use whichever libraries or APIs you need. Give it your own personal style.",
|
||||||
"<strong>Rule #3:</strong> You must use D3.js to build this project.",
|
"<strong>Rule #3:</strong> You must use D3.js to build this project.",
|
||||||
@ -29,7 +29,7 @@
|
|||||||
"challengeType": 3,
|
"challengeType": 3,
|
||||||
"titleEs": "Visualiza datos utilizando un gráfico de barras",
|
"titleEs": "Visualiza datos utilizando un gráfico de barras",
|
||||||
"descriptionEs": [
|
"descriptionEs": [
|
||||||
"<strong>Objetivo:</strong> Construye una aplicación en <a href='https://codepen.io' target='_blank'>CodePen.io</a> que funcione de forma similar al siguiente ejemplo: <a href='https://codepen.io/FreeCodeCamp/full/adBBWd' target='_blank'>https://codepen.io/FreeCodeCamp/full/adBBWd</a>.",
|
"<strong>Objetivo:</strong> Construye una aplicación en <a href='https://codepen.io' target='_blank'>CodePen.io</a> que funcione de forma similar al siguiente ejemplo: <a href='https://codepen.io/FreeCodeCamp/full/vGjLVZ' target='_blank'>https://codepen.io/FreeCodeCamp/full/vGjLVZ</a>.",
|
||||||
"<strong>Regla #1:</strong> No veas el código del proyecto de ejemplo. Encuentra la forma de hacerlo por tu cuenta.",
|
"<strong>Regla #1:</strong> No veas el código del proyecto de ejemplo. Encuentra la forma de hacerlo por tu cuenta.",
|
||||||
"<strong>Regla #2:</strong> Satisface las siguientes <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>historias de usuario</a>. Usa cualquier librería o API que sea necesaria. ¡Ponle un toque personal!.",
|
"<strong>Regla #2:</strong> Satisface las siguientes <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>historias de usuario</a>. Usa cualquier librería o API que sea necesaria. ¡Ponle un toque personal!.",
|
||||||
"<strong>Regla #3:</strong> Debes utilizar D3.js para construir este proyecto.",
|
"<strong>Regla #3:</strong> Debes utilizar D3.js para construir este proyecto.",
|
||||||
|
18
seed/challenges/04-video-challenges/accessibility.json
Normal file
18
seed/challenges/04-video-challenges/accessibility.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Accessibility",
|
||||||
|
"order": 5.5,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bddd",
|
||||||
|
"title": "Learn Accessibility Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Accessibility"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/agile.json
Normal file
18
seed/challenges/04-video-challenges/agile.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Agile",
|
||||||
|
"order": 6,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbec5bdde",
|
||||||
|
"title": "Learn Agile Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Agile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/computer-science.json
Normal file
18
seed/challenges/04-video-challenges/computer-science.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Computer Science",
|
||||||
|
"order": 7,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bddc",
|
||||||
|
"title": "Learn Computer Science Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Computer Science"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/data-visualization.json
Normal file
18
seed/challenges/04-video-challenges/data-visualization.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Data Visualization",
|
||||||
|
"order": 8,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdde",
|
||||||
|
"title": "Learn Data Visualization Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Data Visualization"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/devops.json
Normal file
18
seed/challenges/04-video-challenges/devops.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "DevOps",
|
||||||
|
"order": 16,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd5",
|
||||||
|
"title": "Learn DevOps Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "DevOps"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Embedded and Internet of Things",
|
||||||
|
"order": 9,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdda",
|
||||||
|
"title": "Learn Embedded and Internet of Things Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Embedded and Internet of Things"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/game-development.json
Normal file
18
seed/challenges/04-video-challenges/game-development.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Game Development",
|
||||||
|
"order": 10,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd0",
|
||||||
|
"title": "Learn Game Development Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Game Development"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/gamification.json
Normal file
18
seed/challenges/04-video-challenges/gamification.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Gamification",
|
||||||
|
"order": 12,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd9",
|
||||||
|
"title": "Learn Gamification Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Gamification"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/machine-learning.json
Normal file
18
seed/challenges/04-video-challenges/machine-learning.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Machine Learning",
|
||||||
|
"order": 13,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd8",
|
||||||
|
"title": "Learn Machine Learning Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Machine Learning"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Math for Programmers",
|
||||||
|
"order": 14,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd7",
|
||||||
|
"title": "Learn Math for Programmers Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Math for Programmers"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Mobile JavaScript Development",
|
||||||
|
"order": 15,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd6",
|
||||||
|
"title": "Learn Mobile JavaScript Development Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Mobile JavaScript Development"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Software Engineering Principles",
|
||||||
|
"order": 17,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441ecdfbeb5bdd5",
|
||||||
|
"title": "Learn Software Engineering Principles Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Software Engineering Principles"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/statistics.json
Normal file
18
seed/challenges/04-video-challenges/statistics.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Statistics",
|
||||||
|
"order": 18,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd4",
|
||||||
|
"title": "Learn Statistics Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Statistics"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/tools.json
Normal file
18
seed/challenges/04-video-challenges/tools.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Tools",
|
||||||
|
"order": 19,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd3",
|
||||||
|
"title": "Learn Tools Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Tools"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "User Experience Design",
|
||||||
|
"order": 20,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd2",
|
||||||
|
"title": "Learn User Experience Design Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "User Experience Design"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
18
seed/challenges/04-video-challenges/visual-design.json
Normal file
18
seed/challenges/04-video-challenges/visual-design.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "Visual Design",
|
||||||
|
"order": 21,
|
||||||
|
"time": "0 hours",
|
||||||
|
"isComingSoon": true,
|
||||||
|
"challenges": [
|
||||||
|
{
|
||||||
|
"id": "bd7128d8c441eddfbeb5bdd1",
|
||||||
|
"title": "Learn Visual Design Challenges",
|
||||||
|
"description": [],
|
||||||
|
"challengeSeed": [],
|
||||||
|
"tests": [],
|
||||||
|
"type": "hike",
|
||||||
|
"challengeType": 6,
|
||||||
|
"nameEs": "Visual Design"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -8,13 +8,10 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
mail: {
|
mail: {
|
||||||
connector: 'mail',
|
connector: 'mail',
|
||||||
transports: [{
|
transport: {
|
||||||
type: 'smtp',
|
type: 'ses',
|
||||||
service: 'Mandrill',
|
accessKeyId: process.env.SES_ID,
|
||||||
auth: {
|
secretAccessKey: process.env.SES_SECRET
|
||||||
user: secrets.mandrill.user,
|
|
||||||
pass: secrets.mandrill.password
|
|
||||||
}
|
}
|
||||||
}]
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -85,7 +85,7 @@ function buildChallengeMap(userId, completedChallenges = [], User) {
|
|||||||
}, {})
|
}, {})
|
||||||
.flatMap(challengeMap => {
|
.flatMap(challengeMap => {
|
||||||
const updateData = {
|
const updateData = {
|
||||||
'$set': {
|
$set: {
|
||||||
challengeMap,
|
challengeMap,
|
||||||
isChallengeMapMigrated: true
|
isChallengeMapMigrated: true
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,10 @@ export default function hikesService(app) {
|
|||||||
name: 'hikes',
|
name: 'hikes',
|
||||||
read: (req, resource, { dashedName } = {}, config, cb) => {
|
read: (req, resource, { dashedName } = {}, config, cb) => {
|
||||||
const query = {
|
const query = {
|
||||||
where: { challengeType: '6' },
|
where: {
|
||||||
|
challengeType: '6',
|
||||||
|
isComingSoon: false
|
||||||
|
},
|
||||||
order: ['order ASC', 'suborder ASC' ]
|
order: ['order ASC', 'suborder ASC' ]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,9 +24,9 @@ export function setProfileFromGithub(
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: githubId,
|
id: githubId,
|
||||||
'avatar_url': picture,
|
avatar_url: picture,
|
||||||
email: githubEmail,
|
email: githubEmail,
|
||||||
'created_at': joinedGithubOn,
|
created_at: joinedGithubOn,
|
||||||
blog: website,
|
blog: website,
|
||||||
location,
|
location,
|
||||||
name
|
name
|
||||||
|
@ -8,15 +8,15 @@ nav.navbar.navbar-default.navbar-fixed-top.nav-height
|
|||||||
.collapse.navbar-collapse
|
.collapse.navbar-collapse
|
||||||
ul.nav.navbar-nav.navbar-right.hamburger-dropdown
|
ul.nav.navbar-nav.navbar-right.hamburger-dropdown
|
||||||
li.hidden-xs
|
li.hidden-xs
|
||||||
a#nav-map-btn(href='#' onclick='return false') Map
|
a#nav-map-btn(href='/map' onclick='if (!(event.ctrlKey || event.metaKey)) {return false;}') Map
|
||||||
li.visible-xs
|
li.visible-xs
|
||||||
a(href='/map') Map
|
a(href='/map') Map
|
||||||
li.hidden-xs
|
li.hidden-xs
|
||||||
a#nav-chat-btn(href='#' onclick="return false") Chat
|
a#nav-chat-btn(href='//gitter.im/freecodecamp/freecodecamp' onclick="if (!(event.ctrlKey || event.metaKey)) {return false;}") Chat
|
||||||
li.visible-xs
|
li.visible-xs
|
||||||
a(href="//gitter.im/freecodecamp/freecodecamp" target="_blank") Chat
|
a(href="//gitter.im/freecodecamp/freecodecamp" target="_blank") Chat
|
||||||
li.hidden-xs
|
li.hidden-xs
|
||||||
a#nav-wiki-btn(href='#' onclick='return false') Wiki
|
a#nav-wiki-btn(href='/wiki' onclick='if (!(event.ctrlKey || event.metaKey)) {return false;}') Wiki
|
||||||
li.visible-xs
|
li.visible-xs
|
||||||
a(href='/wiki', target='_blank') Wiki
|
a(href='/wiki', target='_blank') Wiki
|
||||||
li
|
li
|
||||||
|
Reference in New Issue
Block a user