diff --git a/api-server/server/boot/settings.js b/api-server/server/boot/settings.js index 47f4660efcd..521b7e41893 100644 --- a/api-server/server/boot/settings.js +++ b/api-server/server/boot/settings.js @@ -246,9 +246,7 @@ const updatePrivacyTerms = (req, res, next) => { } return res.status(200).json({ type: 'success', - message: - 'We have updated your preferences. ' + - 'You can now continue using freeCodeCamp!' + message: `We have updated your preferences.` }); }); }; diff --git a/client/src/components/Intro/components/IntroDescription.js b/client/src/components/Intro/components/IntroDescription.js new file mode 100644 index 00000000000..eef75bcd7c7 --- /dev/null +++ b/client/src/components/Intro/components/IntroDescription.js @@ -0,0 +1,70 @@ +import React from 'react'; +import { Link, Spacer } from '../../helpers'; +import { Col } from '@freecodecamp/react-bootstrap'; +import { forumLocation } from '../../../../config/env.json'; + +import '../intro.css'; + +function IntroDescription() { + return ( + + Please slow down and read this. + +

freeCodeCamp is a proven path to your first software developer job.

+

+ More than 40,000 people have gotten developer jobs after completing this + – including at big companies like Google and Microsoft. +

+

+ If you are new to programming, we recommend you start at the beginning + and earn these certifications in order. +

+

+ To earn each certification, build its 5 required projects and get all + their tests to pass. +

+

+ You can add these certifications to your résumé or LinkedIn. But more + important than the certifications is the practice you get along the way. +

+

If you feel overwhelmed, that is normal. Programming is hard.

+

Practice is the key. Practice, practice, practice.

+

+ And this curriculum will give you thousands of hours of hands-on + programming practice. +

+

+ And if you want to learn more math and computer science theory, we also + have thousands of hours of video courses on{' '} + + freeCodeCamp's YouTube channel + + . +

+

+ If you want to get a developer job or freelance clients, programming + skills will be just part of the puzzle. You also need to build your + personal network and your reputation as a developer. +

+

+ You can do this on Twitter and GitHub, and also on{' '} + + the freeCodeCamp forum + + . +

+

Happy coding.

+ + ); +} + +IntroDescription.displayName = 'IntroDescription'; + +export default IntroDescription; diff --git a/client/src/components/Intro/index.js b/client/src/components/Intro/index.js index 9b5cf80c3fa..3fe26d65ef4 100644 --- a/client/src/components/Intro/index.js +++ b/client/src/components/Intro/index.js @@ -2,9 +2,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Link, Spacer, Loader, FullWidthRow } from '../helpers'; import { Row, Col } from '@freecodecamp/react-bootstrap'; -import { forumLocation } from '../../../config/env.json'; import { randomQuote } from '../../utils/get-words'; import CurrentChallengeLink from '../helpers/CurrentChallengeLink'; +import IntroDescription from './components/IntroDescription'; import './intro.css'; import Login from '../Header/components/Login'; @@ -98,69 +98,16 @@ function Intro({ } else { return ( <> - +

Welcome to freeCodeCamp's curriculum.

- - - Please slow down and read this. - -

- freeCodeCamp is a proven path to your first software developer - job. -

-

- More than 40,000 people have gotten developer jobs after - completing this – including at big companies like Google and - Microsoft. -

-

- If you are new to programming, we recommend you start at the - beginning and earn these certifications in order. -

-

- To earn each certification, build its 5 required projects and get - all their tests to pass. -

-

- You can add these certifications to your résumé or LinkedIn. But - more important than the certifications is the practice you get - along the way. -

-

If you feel overwhelmed, that is normal. Programming is hard.

-

Practice is the key. Practice, practice, practice.

-

- And this curriculum will give you thousands of hours of hands-on - programming practice. -

-

- And if you want to learn more math and computer science theory, we - also have thousands of hours of video courses on{' '} - - freeCodeCamp's YouTube channel - - . -

-

- If you want to get a developer job or freelance clients, - programming skills will be just part of the puzzle. You also need - to build your personal network and your reputation as a developer. -

-

- You can do this on Twitter and GitHub, and also on{' '} - - the freeCodeCamp forum - - . -

-

Happy coding.

- - - + + + Sign in to save your progress (it's free) diff --git a/client/src/pages/email-sign-up.css b/client/src/pages/email-sign-up.css new file mode 100644 index 00000000000..7cc53052051 --- /dev/null +++ b/client/src/pages/email-sign-up.css @@ -0,0 +1,12 @@ +.email-sign-up strong, +.email-sign-up p { + font-family: 'Lato', sans-serif; + font-size: 1rem; +} + +@media (min-width: 500px) { + .email-sign-up strong, + .email-sign-up p { + font-size: 1.22rem; + } +} diff --git a/client/src/pages/email-sign-up.js b/client/src/pages/email-sign-up.js index 8a6ed9b09ad..f43961a291d 100644 --- a/client/src/pages/email-sign-up.js +++ b/client/src/pages/email-sign-up.js @@ -3,23 +3,18 @@ import PropTypes from 'prop-types'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import SectionHeader from '../components/settings/SectionHeader'; +import IntroDescription from '../components/Intro/components/IntroDescription'; -import { - Row, - Col, - Button, - FormGroup, - ControlLabel, - Grid, - Checkbox -} from '@freecodecamp/react-bootstrap'; +import { Row, Col, Button, Grid } from '@freecodecamp/react-bootstrap'; import Helmet from 'react-helmet'; import { createSelector } from 'reselect'; -import { ButtonSpacer } from '../components/helpers'; +import { ButtonSpacer, Spacer } from '../components/helpers'; import { acceptTerms, userSelector } from '../redux'; import createRedirect from '../components/createRedirect'; +import './email-sign-up.css'; + const propTypes = { acceptTerms: PropTypes.func.isRequired, acceptedPrivacyTerms: PropTypes.bool, @@ -37,30 +32,6 @@ const mapDispatchToProps = dispatch => const RedirectToLearn = createRedirect('/learn'); class AcceptPrivacyTerms extends Component { - constructor(props) { - super(props); - - this.state = { - quincyEmail: false - }; - this.createHandleChange = this.createHandleChange.bind(this); - this.handleSubmit = this.handleSubmit.bind(this); - } - - createHandleChange(prop) { - return () => - this.setState(prevState => ({ - [prop]: !prevState[prop] - })); - } - - handleSubmit(e) { - e.preventDefault(); - const { quincyEmail } = this.state; - - return this.props.acceptTerms(quincyEmail); - } - componentWillUnmount() { // if a user navigates away from here we should set acceptedPrivacyTerms // to true (so they do not get pulled back) without changing their email @@ -72,48 +43,67 @@ class AcceptPrivacyTerms extends Component { } } + onClick(isWeeklyEmailAccepted) { + this.props.acceptTerms(isWeeklyEmailAccepted); + } + render() { const { acceptedPrivacyTerms } = this.props; if (acceptedPrivacyTerms) { return ; } - const { quincyEmail } = this.state; + return ( Email Sign Up | freeCodeCamp.org - + Email Sign Up - -
- - - Quincy's Emails - - - - I want weekly emails from Quincy, freeCodeCamp.org's - founder. - - - - - + + +
+ + + + - Quincy Larson, the teacher who founded freeCodeCamp.org + + +

+ By the way, each Friday I send an email with 5 links about + programming and computer science. I send these to about 4 + million people. Would you like me to send this to you, too? +

+ + + + + + + + + + + + +