Skip to content

Commit 56817b6

Browse files
chore(curriculum): add blockLayout when missing from meta (freeCodeCamp#57138)
Co-authored-by: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com>
1 parent 67a9657 commit 56817b6

235 files changed

Lines changed: 533 additions & 316 deletions

File tree

  • client/src/templates/Introduction/components
  • curriculum
    • challenges/_meta
      • a2-english-for-developers-certification-exam
      • add-logic-to-c-sharp-console-applications
      • advanced-node-and-express
      • algorithms
      • applied-accessibility
      • applied-visual-design
      • back-end-development-and-apis-projects
      • basic-algorithm-scripting
      • basic-css
      • basic-data-structures
      • basic-html-and-html5
      • basic-javascript
      • basic-node-and-express
      • bootstrap
      • build-a-budget-app-project
      • build-a-cash-register-project
      • build-a-celestial-bodies-database-project
      • build-a-data-graph-explorer-project
      • build-a-financial-calculator-project
      • build-a-graphing-calculator-project
      • build-a-multi-function-calculator-project
      • build-a-number-guessing-game-project
      • build-a-palindrome-checker-project
      • build-a-periodic-table-database-project
      • build-a-personal-portfolio-webpage-project
      • build-a-pokemon-search-app-project
      • build-a-polygon-area-calculator-project
      • build-a-probability-calculator-project
      • build-a-product-landing-page-project
      • build-a-roman-numeral-converter-project
      • build-a-salon-appointment-scheduler-project
      • build-a-survey-form-project
      • build-a-technical-documentation-page-project
      • build-a-telephone-number-validator-project
      • build-a-time-calculator-project
      • build-a-tribute-page-project
      • build-a-world-cup-database-project
      • build-an-arithmetic-formatter-project
      • build-three-math-games-project
      • college-algebra-with-python-conclusion
      • create-and-run-simple-c-sharp-console-applications
      • create-methods-in-c-sharp-console-applications
      • css-flexbox
      • css-grid
      • d3-dashboard
      • data-analysis-with-python-course
      • data-analysis-with-python-projects
      • data-structures
      • data-visualization-projects
      • data-visualization-with-d3
      • debug-c-sharp-console-applications
      • debugging
      • es6
      • foundational-c-sharp-with-microsoft-certification-exam
      • front-end-development-libraries-projects
      • functional-programming
      • how-neural-networks-work
      • information-security-projects
      • information-security-with-helmetjs
      • intermediate-algorithm-scripting
      • javascript-algorithms-and-data-structures-projects
      • jquery
      • json-apis-and-ajax
      • learn-about-adverbial-phrases
      • learn-about-speculation-and-requests
      • learn-accessibility-by-building-a-quiz
      • learn-advanced-array-methods-by-building-a-statistics-calculator
      • learn-advanced-bash-by-building-a-kitty-ipsum-translator
      • learn-algorithm-design-by-building-a-shortest-path-algorithm
      • learn-applications-of-linear-systems
      • learn-asynchronous-programming-by-building-an-fcc-forum-leaderboard
      • learn-bash-and-sql-by-building-a-bike-rental-shop
      • learn-bash-by-building-a-boilerplate
      • learn-bash-scripting-by-building-five-programs
      • learn-basic-algorithmic-thinking-by-building-a-number-sorter
      • learn-basic-css-by-building-a-cafe-menu
      • learn-basic-debugging-by-building-a-random-background-color-changer
      • learn-basic-javascript-by-building-a-role-playing-game
      • learn-basic-oop-by-building-a-shopping-cart
      • learn-basic-string-and-array-methods-by-building-a-music-player
      • learn-business-applications-of-college-algebra
      • learn-classes-and-objects-by-building-a-sudoku-solver
      • learn-common-factors-and-square-roots
      • learn-common-phrasal-verbs-and-idioms
      • learn-conversation-starters-in-the-break-room
      • learn-css-animation-by-building-a-ferris-wheel
      • learn-css-colors-by-building-a-set-of-colored-markers
      • learn-css-grid-by-building-a-magazine
      • learn-css-transforms-by-building-a-penguin
      • learn-css-variables-by-building-a-city-skyline
      • learn-data-structures-by-building-the-merge-sort-algorithm
      • learn-determiners-and-advanced-use-of-articles
      • learn-encapsulation-by-building-a-projectile-trajectory-calculator
      • learn-exponents-and-logarithms
      • learn-fetch-and-promises-by-building-an-fcc-authors-page
      • learn-form-validation-by-building-a-calorie-counter
      • learn-fractions-and-decimals
      • learn-functional-programming-by-building-a-spreadsheet
      • learn-functions-and-graphing
      • learn-future-continuous-while-describing-actions
      • learn-git-by-building-an-sql-reference-object
      • learn-greetings-in-your-first-day-at-the-office
      • learn-how-to-analyze-code-documentation
      • learn-how-to-ask-and-share-about-educational-and-professional-background
      • learn-how-to-ask-for-clarification-on-code-understanding
      • learn-how-to-clarify-information-in-different-interactions
      • learn-how-to-clarify-misunderstandings
      • learn-how-to-describe-places-and-events
      • learn-how-to-describe-your-current-project
      • learn-how-to-discuss-roles-and-responsibilies
      • learn-how-to-discuss-your-morning-or-evening-routine
      • learn-how-to-document-code-for-a-project
      • learn-how-to-express-agreement-or-disagreement
      • learn-how-to-express-agreement
      • learn-how-to-express-concerns
      • learn-how-to-express-decisions-based-on-comparisons
      • learn-how-to-express-disagreement
      • learn-how-to-graph-systems-of-equations
      • learn-how-to-have-a-conversation-about-preferences-and-motivations
      • learn-how-to-help-a-coworker-troubleshoot-on-github
      • learn-how-to-manage-a-conversation
      • learn-how-to-offer-technical-support-and-guidance
      • learn-how-to-plan-future-events
      • learn-how-to-provide-explanations-when-helping-others
      • learn-how-to-read-and-understand-code-documentation
      • learn-how-to-request-and-receive-guidance
      • learn-how-to-share-feedback
      • learn-how-to-share-progress-and-accomplishments
      • learn-how-to-share-your-opinion
      • learn-how-to-share-your-progress-in-weekly-stand-up-meetings
      • learn-how-to-solve-for-x
      • learn-how-to-solve-systems-of-equations
      • learn-how-to-talk-about-a-typical-workday-and-tasks
      • learn-how-to-talk-about-hobbies-and-interests
      • learn-how-to-talk-about-numbers-with-a-coworker
      • learn-how-to-talk-about-past-activities
      • learn-how-to-talk-about-past-experiences
      • learn-how-to-talk-about-updates-and-plans-for-tasks-and-projects
      • learn-how-to-use-adjectives-in-conversations
      • learn-how-to-use-basic-programming-vocabulary-in-conversations
      • learn-how-to-use-conditionals
      • learn-how-to-use-modal-verbs
      • learn-how-to-use-prepositions-according-to-context
      • learn-how-to-use-reported-speech
      • learn-how-to-work-with-numbers-and-strings-by-implementing-the-luhn-algorithm
      • learn-html-by-building-a-cat-photo-app
      • learn-html-forms-by-building-a-registration-form
      • learn-interfaces-by-building-an-equation-solver
      • learn-intermediate-css-by-building-a-cat-painting
      • learn-intermediate-oop-by-building-a-platformer-game
      • learn-introductions-in-an-online-team-meeting
      • learn-introductory-javascript-by-building-a-pyramid-generator
      • learn-lambda-functions-by-building-an-expense-tracker
      • learn-linear-functions
      • learn-list-comprehension-by-building-a-case-converter-program
      • learn-localstorage-by-building-a-todo-app
      • learn-modern-javascript-methods-by-building-football-team-cards
      • learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet
      • learn-nano-by-building-a-castle
      • learn-parent-graphs-and-polynomials
      • learn-present-perfect-while-talking-about-accessibility
      • learn-python-by-building-a-blackjack-game
      • learn-quadratic-equations
      • learn-ratios-and-proportions
      • learn-recursion-by-building-a-decimal-to-binary-converter
      • learn-recursion-by-solving-the-tower-of-hanoi-puzzle
      • learn-regular-expressions-by-building-a-password-generator
      • learn-regular-expressions-by-building-a-spam-filter
      • learn-relational-databases-by-building-a-mario-database
      • learn-responsive-web-design-by-building-a-piano
      • learn-simple-and-compound-interest
      • learn-special-methods-by-building-a-vector-space
      • learn-sql-by-building-a-student-database-part-1
      • learn-sql-by-building-a-student-database-part-2
      • learn-string-manipulation-by-building-a-cipher
      • learn-the-bisection-method-by-finding-the-square-root-of-a-number
      • learn-the-css-box-model-by-building-a-rothko-painting
      • learn-the-date-object-by-building-a-date-formatter
      • learn-tree-traversal-by-building-a-binary-search-tree
      • learn-typography-by-building-a-nutrition-label
      • machine-learning-with-python-projects
      • managing-packages-with-npm
      • mongodb-and-mongoose
      • numpy
      • object-oriented-programming
      • project-euler-problems-1-to-100
      • project-euler-problems-101-to-200
      • project-euler-problems-201-to-300
      • project-euler-problems-301-to-400
      • project-euler-problems-401-to-480
      • python-for-everybody
      • python-for-penetration-testing
      • quality-assurance-and-testing-with-chai
      • quality-assurance-projects
      • react-and-redux
      • react
      • redux
      • regular-expressions
      • responsive-web-design-principles
      • review-algorithmic-thinking-by-building-a-dice-game
      • review-dom-manipulation-by-building-a-rock-paper-scissors-game
      • review-js-fundamentals-by-building-a-gradebook-app
      • rosetta-code-challenges
      • sass
      • take-home-projects
      • tensorflow
      • top-basic-function-projects
      • top-build-a-recipe-project
      • top-build-a-rock-paper-scissors-game
      • top-introduction-to-flexbox
      • top-learn-arrays-and-loops
      • top-learn-block-and-inline
      • top-learn-css-foundations-projects
      • top-learn-css-foundations
      • top-learn-css-specificity
      • top-learn-data-types-and-conditionals
      • top-learn-function-basics
      • top-learn-html-foundations
      • top-learn-to-solve-problems-and-understand-errors
      • top-learn-variables-and-operators
      • top-the-box-model
      • top-working-with-text
      • upcoming-python-project
      • work-with-variable-data-in-c-sharp-console-applications
      • write-your-first-code-using-c-sharp
    • schema
  • tools/scripts/build

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

client/src/templates/Introduction/components/block.test.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
BilibiliIds
1414
} from '../../../redux/prop-types';
1515
import { isAuditedSuperBlock } from '../../../../../shared/utils/is-audited';
16-
import { BlockTypes } from '../../../../../shared/config/blocks';
16+
import { BlockLayouts, BlockTypes } from '../../../../../shared/config/blocks';
1717
import Block from './block';
1818

1919
jest.mock('../../../../../shared/utils/is-audited', () => ({
@@ -22,10 +22,12 @@ jest.mock('../../../../../shared/utils/is-audited', () => ({
2222

2323
const defaultProps = {
2424
block: 'test-block',
25+
blockType: null,
2526
challenges: [
2627
{
2728
block: 'testblock',
2829
blockType: BlockTypes.lab,
30+
blockLayout: BlockLayouts.ChallengeGrid,
2931
certification: 'mockCertification',
3032
challengeOrder: 1,
3133
challengeType: 0,

client/src/templates/Introduction/components/block.tsx

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -444,34 +444,20 @@ class Block extends Component<BlockProps> {
444444
</ScrollableAnchor>
445445
);
446446

447-
const blockRenderer = () => {
448-
const blockLayout = challenges[0].blockLayout;
449-
450-
// `blockLayout` property isn't available in all challenges
451-
if (!blockLayout) {
452-
if (isProjectBlock)
453-
return isGridBlock ? LegacyLinkBlock : ProjectListBlock;
454-
return isGridBlock
455-
? LegacyChallengeGridBlock
456-
: LegacyChallengeListBlock;
457-
}
458-
459-
// blockLayout is only being used in new certs at the moment, so I made some new components for them for now to not interfere with the existing ones
460-
if (blockLayout === BlockLayouts.ChallengeGrid) return ChallengeGridBlock;
461-
if (blockLayout === BlockLayouts.ChallengeList) return ChallengeListBlock;
462-
if (blockLayout === BlockLayouts.Link) return LinkBlock;
463-
if (blockLayout === BlockLayouts.ProjectList) return ProjectListBlock;
464-
if (blockLayout === BlockLayouts.LegacyLink) return LegacyLinkBlock;
465-
if (blockLayout === BlockLayouts.LegacyChallengeList)
466-
return LegacyChallengeListBlock;
467-
if (blockLayout === BlockLayouts.LegacyChallengeGrid)
468-
return LegacyChallengeGridBlock;
447+
const layoutToComponent = {
448+
[BlockLayouts.ChallengeGrid]: ChallengeGridBlock,
449+
[BlockLayouts.ChallengeList]: ChallengeListBlock,
450+
[BlockLayouts.Link]: LinkBlock,
451+
[BlockLayouts.ProjectList]: ProjectListBlock,
452+
[BlockLayouts.LegacyLink]: LegacyLinkBlock,
453+
[BlockLayouts.LegacyChallengeList]: LegacyChallengeListBlock,
454+
[BlockLayouts.LegacyChallengeGrid]: LegacyChallengeGridBlock
469455
};
470456

471457
return (
472458
<>
473-
{blockRenderer()}
474-
{isGridBlock && !isProjectBlock ? null : <Spacer size='m' />}
459+
{layoutToComponent[challenges[0].blockLayout]}
460+
{(!isGridBlock || isProjectBlock) && <Spacer size='m' />}
475461
</>
476462
);
477463
}

curriculum/challenges/_meta/a2-english-for-developers-certification-exam/meta.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
"id": "6721db5d9f0c116e6a0fe25a",
1111
"title": "A2 English for Developers Certification Exam"
1212
}
13-
]
14-
}
13+
],
14+
"blockLayout": "project-list"
15+
}

curriculum/challenges/_meta/add-logic-to-c-sharp-console-applications/meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@
3838
"id": "647f882207d29547b3bee1c0",
3939
"title": "Trophy - Add Logic to C# Console Applications"
4040
}
41-
]
41+
],
42+
"blockLayout": "legacy-challenge-list"
4243
}

curriculum/challenges/_meta/advanced-node-and-express/meta.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,6 @@
9494
"id": "589fc832f9fc0f352b528e79",
9595
"title": "Send and Display Chat Messages"
9696
}
97-
]
98-
}
97+
],
98+
"blockLayout": "legacy-challenge-list"
99+
}

curriculum/challenges/_meta/algorithms/meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,6 @@
4646
"id": "61abc7ebf3029b56226de5b6",
4747
"title": "Implement Binary Search"
4848
}
49-
]
49+
],
50+
"blockLayout": "legacy-challenge-list"
5051
}

curriculum/challenges/_meta/applied-accessibility/meta.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,6 @@
9494
"id": "587d7790367417b2b2512ab1",
9595
"title": "Use tabindex to Specify the Order of Keyboard Focus for Several Elements"
9696
}
97-
]
98-
}
97+
],
98+
"blockLayout": "legacy-challenge-list"
99+
}

curriculum/challenges/_meta/applied-visual-design/meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,5 +214,6 @@
214214
"id": "587d78a9367417b2b2512aea",
215215
"title": "Make Motion More Natural Using a Bezier Curve"
216216
}
217-
]
217+
],
218+
"blockLayout": "legacy-challenge-list"
218219
}

curriculum/challenges/_meta/back-end-development-and-apis-projects/meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,6 @@
2626
"id": "bd7158d8c443edefaeb5bd0f",
2727
"title": "File Metadata Microservice"
2828
}
29-
]
29+
],
30+
"blockLayout": "project-list"
3031
}

curriculum/challenges/_meta/basic-algorithm-scripting/meta.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,6 @@
7070
"id": "a9bd25c716030ec90084d8a1",
7171
"title": "Chunky Monkey"
7272
}
73-
]
73+
],
74+
"blockLayout": "legacy-challenge-list"
7475
}

0 commit comments

Comments
 (0)