Merge pull request #8220 from FreeCodeCamp/staging

Release staging
This commit is contained in:
Berkeley Martinez
2016-04-20 19:29:31 -07:00
20 changed files with 596 additions and 228 deletions

View File

@ -1,21 +1,18 @@
<!-- <!-- FreeCodeCamp Issue Template -->
FreeCodeCamp Issue Template
NOTE: ISSUES ARE NOT FOR CODE HELP - Ask for Help at <!-- NOTE: ISSUES ARE NOT FOR CODE HELP - Ask for Help at https://gitter.im/FreeCodeCamp/Help -->
https://gitter.im/FreeCodeCamp/Help <!-- Please provide as much detail as possible for us to fix your issue -->
--> <!-- Remove any heading sections you did not fill out -->
#### Challenge Name #### Challenge Name
<!-- Insert link to challenge below --> <!-- Insert link to challenge below -->
#### Issue Description #### Issue Description
<!-- Describe below when the issue happens and how to reproduce it --> <!-- Describe below when the issue happens and how to reproduce it -->
#### Browser Information #### Browser Information
<!-- Describe your workspace in which you are having issues--> <!-- Describe your workspace in which you are having issues-->
* Browser Name, Version: * Browser Name, Version:
@ -30,5 +27,6 @@ https://gitter.im/FreeCodeCamp/Help
``` ```
#### Screenshot #### Screenshot
<!-- Add a screenshot of your issue -->

View File

@ -462,7 +462,8 @@ $(document).ready(function() {
// Map live filter // Map live filter
mapFilter.on('keyup', () => { mapFilter.on('keyup', () => {
if (mapFilter.val().length > 0) { if (mapFilter.val().length > 0) {
var regex = new RegExp(mapFilter.val().replace(/ /g, '.'), 'i'); var regexString = mapFilter.val().replace(/ /g, '.');
var regex = new RegExp(regexString.split('').join('.*'), 'i');
// Hide/unhide challenges that match the regex // Hide/unhide challenges that match the regex
$('.challenge-title').each((index, title) => { $('.challenge-title').each((index, title) => {
@ -624,4 +625,31 @@ $(document).ready(function() {
// Repo // Repo
window.location = 'https://github.com/freecodecamp/freecodecamp/'; window.location = 'https://github.com/freecodecamp/freecodecamp/';
}); });
(function getFlyer() {
const flyerKey = '__flyerId__';
$.ajax({
url: '/api/flyers/findOne',
method: 'GET',
dataType: 'JSON',
data: { filter: { order: 'id DESC' } }
})
// log error
.fail(err => console.error(err))
.done(flyer => {
const lastFlyerId = localStorage.getItem(flyerKey);
if (
!flyer ||
!flyer.isActive ||
lastFlyerId === flyer.id
) {
return;
}
$('#dismiss-bill').on('click', () => {
localStorage.setItem(flyerKey, flyer.id);
});
$('#bill-content').html(flyer.message);
$('#bill-board').fadeIn();
});
}());
}); });

34
common/models/flyer.json Normal file
View File

@ -0,0 +1,34 @@
{
"name": "flyer",
"base": "PersistedModel",
"idInjection": true,
"trackChanges": false,
"properties": {
"message": {
"type": "string"
},
"isActive": {
"type": "boolean",
"default": true
}
},
"validations": [],
"relations": {
},
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW"
}
],
"methods": []
}

View File

@ -3921,7 +3921,7 @@
"<blockquote>var myObj = {<br> \"Space Name\": \"Kirk\",<br> \"More Space\": \"Spock\"<br>};<br>myObj[\"Space Name\"]; // Kirk<br>myObj['More Space']; // Spock</blockquote>", "<blockquote>var myObj = {<br> \"Space Name\": \"Kirk\",<br> \"More Space\": \"Spock\"<br>};<br>myObj[\"Space Name\"]; // Kirk<br>myObj['More Space']; // Spock</blockquote>",
"Note that property names with spaces in them must be in quotes (single or double).", "Note that property names with spaces in them must be in quotes (single or double).",
"<h4>Instructions</h4>", "<h4>Instructions</h4>",
"Read the values of the properties <code>\"an entree\"</code> and <code>\"the drink\"</code> of <code>testObj</code> using bracket notation." "Read the values of the properties <code>\"an entree\"</code> and <code>\"the drink\"</code> of <code>testObj</code> using bracket notation and assign them to <code>entreeValue</code> and <code>drinkValue</code> respectively."
], ],
"releasedOn": "January 1, 2016", "releasedOn": "January 1, 2016",
"challengeSeed": [ "challengeSeed": [
@ -5101,8 +5101,8 @@
"function randomRange(myMin, myMax) {\n return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;\n}" "function randomRange(myMin, myMax) {\n return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;\n}"
], ],
"tests": [ "tests": [
"assert(calcMin === 5, 'message: The random number generated by <code>randomRange</code> should be greater than or equal to your minimum number, <code>myMin</code>.');", "assert(calcMin === 5, 'message: The lowest random number that can be generated by <code>randomRange</code> should be equal to your minimum number, <code>myMin</code>.');",
"assert(calcMax === 15, 'message: The random number generated by <code>randomRange</code> should be less than or equal to your maximum number, <code>myMax</code>.');", "assert(calcMax === 15, 'message: The highest random number that can be generated by <code>randomRange</code> should be equal to your maximum number, <code>myMax</code>.');",
"assert(randomRange(0,1) % 1 === 0 , 'message: The random number generated by <code>randomRange</code> should be an integer, not a decimal.');", "assert(randomRange(0,1) % 1 === 0 , 'message: The random number generated by <code>randomRange</code> should be an integer, not a decimal.');",
"assert((function(){if(code.match(/myMax/g).length > 1 && code.match(/myMin/g).length > 2 && code.match(/Math.floor/g) && code.match(/Math.random/g)){return true;}else{return false;}})(), 'message: <code>randomRange</code> should use both <code>myMax</code> and <code>myMin</code>, and return a random number in your range.');" "assert((function(){if(code.match(/myMax/g).length > 1 && code.match(/myMin/g).length > 2 && code.match(/Math.floor/g) && code.match(/Math.random/g)){return true;}else{return false;}})(), 'message: <code>randomRange</code> should use both <code>myMax</code> and <code>myMin</code>, and return a random number in your range.');"
], ],

View File

@ -177,7 +177,7 @@
"id": "bd7158d8c242eddfaeb5bd13", "id": "bd7158d8c242eddfaeb5bd13",
"title": "Build a Personal Portfolio Webpage", "title": "Build a Personal Portfolio Webpage",
"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/hallaathrad/full/vNEPpL' target='_blank'>https://codepen.io/hallaathrad/full/vNEPpL</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/YqLyXB/' target='_blank'>https://codepen.io/FreeCodeCamp/full/YqLyXB/</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 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 you need. Give it your own personal style.",
"<strong>Rule #3:</strong> You may use your own CSS and frameworks other than Bootstrap.", "<strong>Rule #3:</strong> You may use your own CSS and frameworks other than Bootstrap.",

View File

@ -26,6 +26,15 @@
"LinkedIn reconoce a Free Code Camp como una universidad. Puedes obtener acceso a nuestra larga red de alumnos agregando Free Code Camp a la sección de educación de tu LinkedIn. Define tu fecha de graduación para el siguiente año. En el campo \"Grado\", escribe \"Certificación de Desarrollo Web Full Stack\". En \"Campo de estudio\", escribe \"Ingeniería de Software\". Después pulsa \"Guardar Cambios\".", "LinkedIn reconoce a Free Code Camp como una universidad. Puedes obtener acceso a nuestra larga red de alumnos agregando Free Code Camp a la sección de educación de tu LinkedIn. Define tu fecha de graduación para el siguiente año. En el campo \"Grado\", escribe \"Certificación de Desarrollo Web Full Stack\". En \"Campo de estudio\", escribe \"Ingeniería de Software\". Después pulsa \"Guardar Cambios\".",
"https://www.linkedin.com/profile/edit-education?school=Free+Code+Camp" "https://www.linkedin.com/profile/edit-education?school=Free+Code+Camp"
] ]
],
"titleFr": "Rejoignez notre réseau de lauréats sur Linkedin",
"descriptionFr": [
[
"//i.imgur.com/vJyiXzU.gif",
"Une gif qui montre comment tu peux cliquer sur le lien ci-dessous et remplir les champs nécessaires pour ajouter le certificat de Free Code Camp à votre profil LinkedIn.",
"LinkedIn reconnait Free Code Camp comme une université. Tu peux avoir accès à notre large réseau de lauréats en ajoutant Free Code Camp à la section éducation de ton profil LinkedIn. Lannée dobtention du diplôme est la prochaine année. Pour le \"Degré\", cest \"Full Stack Web Development Certification\". Pour le \"Domaine détudes\", cest \"Computer Software Engineering\". Puis sauvegardez les changements.",
"https://www.linkedin.com/profile/edit-education?school=Free+Code+Camp"
]
] ]
}, },
{ {
@ -52,6 +61,15 @@
"Nuestra comunidad tiene su propio subreddit en Reddit. Esta es una manera conveniente de hacer preguntas y compartir enlaces con toda nuestra comunidad. Si aún no dispones de una cuenta de Reddit, puedes crear una en unos segundos - ni siquiera necesitas una dirección de correo electrónico. A continuación, puedes pulsar el botón \"subscribe\" para unirte a nuestro subreddit. También puedes suscribirte a otros subreddits que estan listados en la barra lateral.", "Nuestra comunidad tiene su propio subreddit en Reddit. Esta es una manera conveniente de hacer preguntas y compartir enlaces con toda nuestra comunidad. Si aún no dispones de una cuenta de Reddit, puedes crear una en unos segundos - ni siquiera necesitas una dirección de correo electrónico. A continuación, puedes pulsar el botón \"subscribe\" para unirte a nuestro subreddit. También puedes suscribirte a otros subreddits que estan listados en la barra lateral.",
"https://reddit.com/r/freecodecamp" "https://reddit.com/r/freecodecamp"
] ]
],
"titleFr": "Rejoignez notre Subreddit",
"descriptionFr": [
[
"//i.imgur.com/DYjJuCG.gif",
"Une gif montrant la procédure de création dun compte sur Reddit et comment rejoindre le subreddit de Free Code Camp",
"Notre communauté à son propre subreddit sur Reddit. Cest un espace où tu peux poser des questions ou partager des liens avec la communauté. Si tu nas pas encore un compte sur Reddit, tu peux créer un dans quelque secondes tu nas pas besoin dune adresse mail. Tu peux cliquer après sur le bouton \"subscribe\" pour rejoindre notre subreddit. Tu peux rejoindre dautre subreddits listés dans la sidebar.",
"https://reddit.com/r/freecodecamp"
]
] ]
}, },
{ {
@ -90,6 +108,21 @@
"Una vez que inicias sesión, puedes ir al canal de publicaciones de Free Code Camp Medium y pulsar \"follow\". Nuestros campistas publican varios artículos cada semana.", "Una vez que inicias sesión, puedes ir al canal de publicaciones de Free Code Camp Medium y pulsar \"follow\". Nuestros campistas publican varios artículos cada semana.",
"https://medium.freecodecamp.com" "https://medium.freecodecamp.com"
] ]
],
"titleFr": "Lisez les nouvelles de la programmation sur notre Publication Medium",
"descriptionFr": [
[
"//i.imgur.com/FxSOL4a.gif",
"Une gif montrant comment tu peux créer un compte sur Medium.",
"Notre communauté a une publication sur Medium où on écrit plusieurs articles sur la programmation. Si tu nas pas encore un compte Medium, utilise le lien ci-dessous pour sinscrire en utilisant un compte sur les médias sociaux ou en utilisant ton email (un email de confirmation sera envoyé à votre email pour terminer linscription). Une fois un sujet qui tintéresse est choisi, tu peux continuer les étapes.",
"https://www.medium.com"
],
[
"//i.imgur.com/zhhywSX.gif",
"Une gif montrant comment tu peux cliquer sur le boutton \"follow\" pour suivre la publication de Free Code Camp.",
"Une fois identifié, tu peux visiter la publication de Free Code Camp sur Medium et cliquer sur \"follow\". Nos campers publient plusieurs articles chaque semaine.",
"https://medium.freecodecamp.com"
]
] ]
}, },
{ {
@ -116,6 +149,15 @@
"Our community's YouTube channel features video tutorials and demos of projects that campers have built for nonprofits. We add new videos every week. The button below will take you to our YouTube channel, where you can subscribe for free.", "Our community's YouTube channel features video tutorials and demos of projects that campers have built for nonprofits. We add new videos every week. The button below will take you to our YouTube channel, where you can subscribe for free.",
"https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ?sub_confirmation=1" "https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ?sub_confirmation=1"
] ]
],
"titleFr": "Regarde nous coder en direct sur Twitch.tv",
"descriptionFr": [
[
"//i.imgur.com/8rtyRY1.gif",
"Une gif montrant comment tu peux créer un compte sur Twitch.tv et suivre notre chaîne.",
"Nos campers codent fréquemment en direct sur Twitch.tv, un site de streaming populaire. Tu peux créer un compte en moins dune minute, et suivre la chaîne de Free Code Camp. Une fois suivi, tu auras loption de recevoir un email à chaque fois quun de nos campers est en direct. Et donc tu peux rejoindre plusieurs campers pour regarder et interagir sur le salon de chat. Cest une façon dapprendre en regardant les autres coder.",
"https://twitch.tv/freecodecamp"
]
] ]
}, },
{ {
@ -141,6 +183,15 @@
"Puedes poner una meta y prometer donar mensualmente a una organización sin fines de lucro hasta que alcances tu meta. Esto te dará motivación externa en tu aventura de aprender a programar, así como una oportunidad para ayudar inmediatamente a organizaciones sin fines de lucro. Elige tu meta, después elige tu donativo mensual. Cuando pulses \"commit\", la página de donación de la organización sin fines de lucro se abrirá en una nueva pestaña. Esto es completamente opcional, y puedes cambiar tu compromiso o detenerlo en cualquier momento.", "Puedes poner una meta y prometer donar mensualmente a una organización sin fines de lucro hasta que alcances tu meta. Esto te dará motivación externa en tu aventura de aprender a programar, así como una oportunidad para ayudar inmediatamente a organizaciones sin fines de lucro. Elige tu meta, después elige tu donativo mensual. Cuando pulses \"commit\", la página de donación de la organización sin fines de lucro se abrirá en una nueva pestaña. Esto es completamente opcional, y puedes cambiar tu compromiso o detenerlo en cualquier momento.",
"/comprometerse" "/comprometerse"
] ]
],
"titleFr": "Engage-toi à un but et aide une association à but non lucratif",
"descriptionFr": [
[
"//i.imgur.com/Og1ifsn.gif",
"Une gif montrant comment tu peux tengager pour atteindre ton but sur Free Code Camp et verser une somme dargent chaque mois pour une organisation à but non lucratif qui sera une motivation externe pour atteindre ton objectif.",
"Tu peux définir un but et tengager à verser une somme dargent pour aider une organisation à but non lucratif chaque mois jusquà atteindre ton objectif. Cela va te donner une motivation externe dans ta journée dapprentissage, mais aussi une opportunité pour aider ces organisations. Choisi un but, et un montant à verser. Quand tu vas cliquer sur \"commit\", la page des dons de lorganisation va souvrir. Cette étape est optionnel, et tu peux annuler ou arrêter ton engagement à nimporte quel instant.",
"/commit"
]
] ]
} }
] ]

View File

@ -54,7 +54,7 @@
"id": "bd7158d8c442eddfaeb5bd10", "id": "bd7158d8c442eddfaeb5bd10",
"title": "Show the Local Weather", "title": "Show the Local Weather",
"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/bELRjV' target='_blank'>https://codepen.io/FreeCodeCamp/full/bELRjV</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='http://codepen.io/FreeCodeCamp/full/bELRjV' target='_blank'>http://codepen.io/FreeCodeCamp/full/bELRjV</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>User Story:</strong> I can see the weather in my current location.", "<strong>User Story:</strong> I can see the weather in my current location.",
@ -72,7 +72,7 @@
"type": "zipline", "type": "zipline",
"challengeType": 3, "challengeType": 3,
"descriptionRu": [ "descriptionRu": [
"<span class='text-info'>Задание:</span> Создайте <a href='https://codepen.io' target='_blank'>CodePen.io</a> который успешно копирует вот этот: <a href='https://codepen.io/FreeCodeCamp/full/bELRjV' target='_blank'>https://codepen.io/FreeCodeCamp/full/bELRjV</a>.", "<span class='text-info'>Задание:</span> Создайте <a href='https://codepen.io' target='_blank'>CodePen.io</a> который успешно копирует вот этот: <a href='http://codepen.io/FreeCodeCamp/full/bELRjV' target='_blank'>http://codepen.io/FreeCodeCamp/full/bELRjV</a>.",
"<span class='text-info'>Правило #1:</span> Не подсматривайте код приведенного на CodePen примера. Напишите его самостоятельно.", "<span class='text-info'>Правило #1:</span> Не подсматривайте код приведенного на CodePen примера. Напишите его самостоятельно.",
"<span class='text-info'>Правило #2:</span> Можете использовать любые библиотеки или API, которые потребуются.", "<span class='text-info'>Правило #2:</span> Можете использовать любые библиотеки или API, которые потребуются.",
"<span class='text-info'>Правило #3:</span> Воссоздайте функционал приведенного примера и не стесняйтесь добавить что-нибудь от себя.", "<span class='text-info'>Правило #3:</span> Воссоздайте функционал приведенного примера и не стесняйтесь добавить что-нибудь от себя.",
@ -86,13 +86,13 @@
"Если вы хотите получить немедленную оценку вашего проекта, нажмите эту кнопку и добавьте ссылку на ваш CodePen. В противном случае мы проверим его перед тем как вы приступите к проектам для некоммерческих организаций.<br><br><a class='btn btn-primary btn-block' href='https://twitter.com/intent/tweet?text=Check%20out%20the%20project%20I%20just%20built%20with%20%40FreeCodeCamp:%20%0A%20%23LearnToCode%20%23JavaScript' target='_blank'>Click here then add your link to your tweet's text</a>" "Если вы хотите получить немедленную оценку вашего проекта, нажмите эту кнопку и добавьте ссылку на ваш CodePen. В противном случае мы проверим его перед тем как вы приступите к проектам для некоммерческих организаций.<br><br><a class='btn btn-primary btn-block' href='https://twitter.com/intent/tweet?text=Check%20out%20the%20project%20I%20just%20built%20with%20%40FreeCodeCamp:%20%0A%20%23LearnToCode%20%23JavaScript' target='_blank'>Click here then add your link to your tweet's text</a>"
], ],
"descriptionEs": [ "descriptionEs": [
"<span class='text-info'>Objetivo:</span> Crea una aplicación con <a href='https://codepen.io' target='_blank'>CodePen.io</a> cuya funcionalidad sea similar a la de esta: <a href='https://codepen.io/FreeCodeCamp/full/bELRjV' target='_blank'>https://codepen.io/FreeCodeCamp/full/bELRjV</a>.", "<span class='text-info'>Objetivo:</span> Crea una aplicación con <a href='https://codepen.io' target='_blank'>CodePen.io</a> cuya funcionalidad sea similar a la de esta: <a href='http://codepen.io/FreeCodeCamp/full/bELRjV' target='_blank'>http://codepen.io/FreeCodeCamp/full/bELRjV</a>.",
"<span class='text-info'>Regla #1:</span> No veas el código del proyecto de ejemplo en CodePen. Encuentra la forma de hacerlo por tu cuenta.", "<span class='text-info'>Regla #1:</span> No veas el código del proyecto de ejemplo en CodePen. Encuentra la forma de hacerlo por tu cuenta.",
"<span class='text-info'>Regla #2:</span> Satisface las siguientes <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>historias de usuario</a>. Usa cualquier librería o APIs que necesites.", "<span class='text-info'>Regla #2:</span> Satisface las siguientes <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>historias de usuario</a>. Usa cualquier librería o APIs que necesites.",
"<span class='text-info'>Historia de usuario:</span> Pedo obtener información acerca del clima en mi localización actual.", "<span class='text-info'>Historia de usuario:</span> Pedo obtener información acerca del clima en mi localización actual.",
"<span class='text-info'>Historia de usuario:</span> Puedo ver un icono diferente o una imagen de fondo diferente (e.g. montaña con nieve, desierto caliente) dependiendo del clima.", "<span class='text-info'>Historia de usuario:</span> Puedo ver un icono diferente o una imagen de fondo diferente (e.g. montaña con nieve, desierto caliente) dependiendo del clima.",
"<span class='text-info'>Historia de usuario:</span> Puedo pulsar un botón para cambiar la unidad de temperatura de grados Fahrenheit a Celsius y viceversa.", "<span class='text-info'>Historia de usuario:</span> Puedo pulsar un botón para cambiar la unidad de temperatura de grados Fahrenheit a Celsius y viceversa.",
"Recomendamos utilizar <a href='http://openweathermap.org/current#geo' target='_blank'>Open Weather API</a>. Al utilizarlo tendrás que crear una llave API gratuita. Normalmente debes evitar exponer llaves de API en CodePen, pero por el momento no hemos encontrado un API de clima que no requiera llave.", "Recomendamos utilizar <a href='https://openweathermap.org/current#geo' target='_blank'>Open Weather API</a>. Al utilizarlo tendrás que crear una llave API gratuita. Normalmente debes evitar exponer llaves de API en CodePen, pero por el momento no hemos encontrado un API de clima que no requiera llave.",
"Recuerda utilizar <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/How-to-get-help-when-you-get-stuck' target='_blank'>Leer-Buscar-Preguntar</a> si te sientes atascado.", "Recuerda utilizar <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/How-to-get-help-when-you-get-stuck' target='_blank'>Leer-Buscar-Preguntar</a> si te sientes atascado.",
"Cuando hayas terminado, pulsa el botón de \"I've completed this challenge\" e incluye un enlace a tu CodePen.", "Cuando hayas terminado, pulsa el botón de \"I've completed this challenge\" e incluye un enlace a tu CodePen.",
"Puedes obtener retroalimentación sobre tu proyecto por parte de otros campistas, compartiendolo en nuestra <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Sala de chat para revisión de código</a>. También puedes compartirlo en Twitter y en el campamento de tu ciudad (en Facebook)." "Puedes obtener retroalimentación sobre tu proyecto por parte de otros campistas, compartiendolo en nuestra <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Sala de chat para revisión de código</a>. También puedes compartirlo en Twitter y en el campamento de tu ciudad (en Facebook)."

View File

@ -130,7 +130,7 @@
"<strong>User Story:</strong> I can see the relationship between the campers and the domains they're posting.", "<strong>User Story:</strong> I can see the relationship between the campers and the domains they're posting.",
"<strong>User Story:</strong> I can tell approximately many times campers have linked to a specific domain from it's node size.", "<strong>User Story:</strong> I can tell approximately many times campers have linked to a specific domain from it's node size.",
"<strong>User Story:</strong> I can tell approximately how many times a specific camper has posted a link from their node's size.", "<strong>User Story:</strong> I can tell approximately how many times a specific camper has posted a link from their node's size.",
"<strong>Hint:</strong> Here's the Camper News Hot Stories API endpoint: <code>http://www.freecodecamp.com/news/hot</code>.", "<strong>Hint:</strong> Here's the Camper News Hot Stories API endpoint: <code>https://www.freecodecamp.com/news/hot</code>.",
"Remember to use <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/How-to-get-help-when-you-get-stuck' target='_blank'>Read-Search-Ask</a> if you get stuck.", "Remember to use <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/How-to-get-help-when-you-get-stuck' target='_blank'>Read-Search-Ask</a> if you get stuck.",
"When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ", "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ",
"You can get feedback on your project from fellow campers by sharing it in our <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Code Review Chatroom</a>. You can also share it on Twitter and your city's Campsite (on Facebook)." "You can get feedback on your project from fellow campers by sharing it in our <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Code Review Chatroom</a>. You can also share it on Twitter and your city's Campsite (on Facebook)."

View File

@ -66,5 +66,9 @@
"userIdentity": { "userIdentity": {
"dataSource": "db", "dataSource": "db",
"public": true "public": true
},
"flyer": {
"dataSource": "db",
"public": true
} }
} }

View File

@ -1,5 +1,6 @@
extends ../layout extends ../layout
block content block content
include ../partials/flyer
script(src="/bower_components/cal-heatmap/cal-heatmap.min.js") script(src="/bower_components/cal-heatmap/cal-heatmap.min.js")
script. script.
var challengeName = 'Profile View'; var challengeName = 'Profile View';

View File

@ -4,6 +4,7 @@ block content
link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css') link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css')
link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css') link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css')
link(rel='stylesheet', href='/css/ubuntu.css') link(rel='stylesheet', href='/css/ubuntu.css')
include ../partials/flyer
.row .row
.col-md-4.col-lg-3 .col-md-4.col-lg-3
.scroll-locker(id = "scroll-locker") .scroll-locker(id = "scroll-locker")

View File

@ -4,6 +4,7 @@ block content
link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css') link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css')
link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css') link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css')
link(rel='stylesheet', href='/css/ubuntu.css') link(rel='stylesheet', href='/css/ubuntu.css')
include ../partials/flyer
.row .row
.col-md-3.col-lg-3 .col-md-3.col-lg-3
.scroll-locker(id = "scroll-locker") .scroll-locker(id = "scroll-locker")

View File

@ -4,6 +4,7 @@ block content
link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css') link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css')
link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css') link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css')
link(rel='stylesheet', href='/css/ubuntu.css') link(rel='stylesheet', href='/css/ubuntu.css')
include ../partials/flyer
.row .row
.col-md-4.col-lg-3 .col-md-4.col-lg-3
.scroll-locker(id = "scroll-locker") .scroll-locker(id = "scroll-locker")

View File

@ -1,5 +1,6 @@
extends ../layout-wide extends ../layout-wide
block content block content
include ../partials/flyer
.row .row
.col-md-8.col-md-offset-2 .col-md-8.col-md-offset-2
for step, index in description for step, index in description

View File

@ -1,5 +1,6 @@
extends ../layout-wide extends ../layout-wide
block content block content
include ../partials/flyer
.row .row
.col-xs-12.col-sm-12.col-md-4 .col-xs-12.col-sm-12.col-md-4
h4.text-center.challenge-instructions-title= name h4.text-center.challenge-instructions-title= name

View File

@ -1,5 +1,6 @@
extends ../layout-wide extends ../layout-wide
block content block content
include ../partials/flyer
.row .row
.col-md-4 .col-md-4
h4.text-center.challenge-instructions-title= name h4.text-center.challenge-instructions-title= name

View File

@ -6,7 +6,7 @@ html(lang='en')
body.top-and-bottom-margins body.top-and-bottom-margins
include partials/scripts include partials/scripts
include partials/navbar include partials/navbar
include partials/flash
.container .container
include partials/flash
block content block content
include partials/footer include partials/footer

View File

@ -1,20 +1,21 @@
.row.flashMessage .container
.col-xs-12 .row.flashMessage.negative-30
if (messages.errors || messages.error) .col-xs-12
.alert.alert-danger.fade.in if (messages.errors || messages.error)
button.close(type='button', data-dismiss='alert') .alert.alert-danger.fade.in
span.ion-close-circled button.close(type='button', data-dismiss='alert')
for error in (messages.errors || messages.error) span.ion-close-circled
div!= error.msg || error for error in (messages.errors || messages.error)
if messages.info div!= error.msg || error
.alert.alert-info.fade.in if messages.info
button.close(type='button', data-dismiss='alert') .alert.alert-info.fade.in
span.ion-close-circled button.close(type='button', data-dismiss='alert')
for info in messages.info span.ion-close-circled
div!= info.msg for info in messages.info
if messages.success div!= info.msg
.alert.alert-success.fade.in if messages.success
button.close(type='button', data-dismiss='alert') .alert.alert-success.fade.in
span.ion-close-circled button.close(type='button', data-dismiss='alert')
for success in messages.success span.ion-close-circled
div!= success.msg for success in messages.success
div!= success.msg

View File

@ -0,0 +1,8 @@
if (user && user.points > 5)
.container
.row.flashMessage.negative-30
.col-xs-12
#bill-board.alert.alert-info.fade.in(style='display: none;')
button.close(type='button', data-dismiss='alert')
span.ion-close-circled#dismiss-bill
#bill-content