feat: split rdbms into individual blocks and two challengeTypes (#44978)

* feat: split english rdbms into individual blocks

fix: stuff

fix: remove from partiallyComplete array on submit

fix: add suggestion

Update client/i18n/locales/english/translations.json

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/i18n/locales/english/intro.json

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/i18n/locales/english/intro.json

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/i18n/locales/english/intro.json

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Update client/src/templates/Challenges/codeally/show.tsx

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

* fix: prettier

* fix: style suggestion

* Apply suggestions from code review

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>

Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
This commit is contained in:
Tom
2022-02-11 09:39:27 -06:00
committed by GitHub
parent 226a8248b7
commit 57cf47dad4
267 changed files with 3832 additions and 2229 deletions

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "關係型數據庫",
"intro": [
"對於這些課程,你將使用真正的開發者工具和軟件,包括 VS CodePostgreSQL Linux / Unix 命令行,來完成交互式教程和構建項目。"
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "學習關係型數據庫",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"這些課程從基本的 Bash 命令開始。使用終端你將學習從導航和操作一個文件系統、Bash 腳本到高級應用的所有內容。",
"接下來,你將學習如何使用數據庫管理系統 PostgreSQL 和數據庫語言 SQL 來創建和使用關係數據庫。",
"最後,你將學習版本控制系統 Git 和代碼庫託管服務 GitHub——每個開發者的兩個基本工具。"
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "关系型数据库",
"intro": [
"对于这些课程,你将使用真正的开发者工具和软件,包括 VS CodePostgreSQL Linux / Unix 命令行,来完成交互式教程和构建项目。"
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "学习关系型数据库",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"这些课程从基本的 Bash 命令开始。使用终端你将学习从导航和操作一个文件系统、Bash 脚本到高级应用的所有内容。",
"接下来,你将学习如何使用数据库管理系统 PostgreSQL 和数据库语言 SQL 来创建和使用关系数据库。",
"最后,你将学习版本控制系统 Git 和代码库托管服务 GitHub——每个开发者的两个基本工具。"
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -413,15 +413,107 @@
"relational-databases": {
"title": "Relational Databases",
"intro": [
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects."
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "Learn Relational Databases",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, and GitHub, a code repository hosting service - two essential tools of every developer."
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keeps track of all the changes you make to your codebase.",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allows you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with relational databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL join commands are used to combine information from multiple tables in a relational database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -64,7 +64,9 @@
"go-to-next": "Go to next challenge",
"ask-later": "Ask me later",
"start-coding": "Start coding!",
"go-to-settings": "Go to settings to claim your certification"
"go-to-settings": "Go to settings to claim your certification",
"click-start-course": "Click here to start the course",
"click-start-project": "Click here to start the project"
},
"landing": {
"big-heading-1": "Learn to code — for free.",
@@ -294,7 +296,13 @@
},
"help-translate": "We are still translating the following certifications.",
"help-translate-link": "Help us translate.",
"project-preview-title": "Here's a preview of what you will build"
"project-preview-title": "Here's a preview of what you will build",
"github-required": "A <0>GitHub</0> account is required to run the project. You will need to create one if you haven't already.",
"step-1": "Step 1: Complete the project",
"step-2": "Step 2: Submit your code",
"submit-public-url": "When you have completed the project, save all the required files into a public repository and submit the URL to it below.",
"complete-both-steps": "Complete both steps below to finish the challenge.",
"runs-in-vm": "The project runs in a virtual machine, complete the user stories described in there and get all the tests to pass to finish step 1."
},
"donate": {
"title": "Support our nonprofit",
@@ -512,7 +520,8 @@
"create-token-err": "An error occurred trying to create a token",
"delete-token-err": "An error occurred trying to delete your token",
"token-created": "You have successfully created a new token.",
"token-deleted": "Your token has been deleted."
"token-deleted": "Your token has been deleted.",
"complete-project-first": "You must complete the project first."
},
"validation": {
"max-characters": "There is a maximum limit of 288 characters, you have {{charsLeft}} left",

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "Bases de Datos Relacionales",
"intro": [
"Para estos cursos, utilizarás herramientas y software de desarrollador reales, incluyendo VS Code, PostgreSQL y la línea de comandos de Linux / Unix para completar tutoriales interactivos y crear proyectos."
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "Aprender Bases de Datos Relacionales",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"Estos cursos comienzan con comandos básicos de Bash. Usando el terminal, aprenderás todo, desde navegar y manipular un sistema de archivos, crear scripts en Bash, hasta el uso avanzado.",
"A continuación, aprenderás como crear y trabajar con bases de datos relacionales utilizando PostgreSQL, un sistema de administración de bases de datos, y SQL, el lenguaje de estas bases de datos.",
"Finalmente, aprenderás Git, el sistema de control de versiones, y GitHub, un servicio de alojamiento de repositorios de código, dos herramientas esenciales de todo desarrollador."
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "Database relazionali",
"intro": [
"Per questi corsi, utilizzerai strumenti e software per veri sviluppatori tra cui VS Code, PostgreSQL, e la riga di comando Linux / Unix per completare i tutorial interattivi e costruire progetti."
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "Conosci i Database Relazionali",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"Questi corsi iniziano con i comandi Bash di base. Utilizzando il terminale, imparerai tutto dal navigare e manipolare un sistema di archiviazione, scripting in Bash, fino ad un utilizzo avanzato.",
"Successivamente, imparerai come creare e lavorare con i database relazionali utilizzando PostgreSQL, un sistema di gestione dei database e SQL, la lingua di questi database.",
"Infine, imparerai Git, il sistema di controllo delle versioni, e GitHub, un servizio di hosting di repository di codice - due strumenti essenziali di ogni sviluppatore."
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "リレーショナルデータベース",
"intro": [
"このコースでは、VS CodePostgreSQL、そして Linux / Unix コマンドラインを含む本格的な開発者ツールとソフトウェアを使用して、インタラクティブなチュートリアルを完了し、プロジェクトを構築します。"
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "リレーショナルデータベースを学習する",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"これらのコースは基本的な Bash コマンドから始まります。ターミナルを使用して、ファイルシステムの移動や操作から、Bash 内でのスクリプト、幅広い高度な使用法まで、すべてを学習します。",
"次に、データベース管理システムである PostgreSQL と、これらデータベースの言語である SQL を使用して関係データベースを作成し取り扱う方法を学習します。",
"最後に、すべての開発者に不可欠な 2 つのツール、バージョン管理システムである Git と、コードリポジトリホスティングサービスである GitHub を学習します。"
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "Bancos de dados relacionais",
"intro": [
"Para estes cursos, você usará ferramentas e software reais de desenvolvedor, incluindo o VS Code, PostgreSQL e a linha de comando do Linux/Unix para completar tutoriais interativos e criar projetos."
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "Aprenda bancos de dados relacionais",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"Estes cursos começam com comandos básicos do Bash. Usando o terminal, você aprenderá tudo, de navegar e manipular um sistema de arquivos e fazer scripts no Bash, até usos mais avançados.",
"Depois, você aprenderá a criar e trabalhar com bancos de dados relacionados usando o PostgreSQL, um sistema de gerenciamento de banco de dados, e o SQL, a linguagem destes bancos de dados.",
"Por fim, você aprenderá o Git, um sistema de controle de versão, e o GitHub, um serviço de hospedagem e repositório de código - duas ferramentas essenciais para todo o desenvolvedor."
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -428,15 +428,107 @@
"relational-databases": {
"title": "Реляційна база даних",
"intro": [
"Для цих курсів ви будете використовувати реальні інструменти розробника та програмне забезпечення, включаючи VS-код, PostgreSQL, і командний рядок Linux / Unix для завершення інтерактивних уроків і створення проєктів."
"For these courses, you will use real developer tools and software including VS Code, PostgreSQL, and the Linux / Unix command line to complete interactive tutorials and build projects.",
"These courses start off with basic Bash commands. Using the terminal, you will learn everything from navigating and manipulating a file system, scripting in Bash, all the way to advanced usage.",
"Next, you will learn how to create and work with relational databases using PostgreSQL, a database management system, and SQL, the language of these databases.",
"Finally, you will learn Git, the version control system, an essential tool of every developer."
],
"blocks": {
"learn-relational-databases": {
"title": "Вивчення реляційної бази даних",
"build-a-celestial-bodies-database-project": {
"title": "Celestial Bodies Database",
"intro": [
"Ці курси починаються з основних Bash команд. За допомогою терміналу ви навчитеся усього необхідного (від навігації та маніпуляції файловою системою, написання скрипту в Bash до просунутого використання).",
"Далі ви навчитеся створювати та працювати з реляційними базами даних використовуючи PostgreSQL (систему керування базами даних) та SQL (мову цих баз даних).",
"Нарешті, ви вивчите Git (систему контролю версій) та GitHub (службу зберігання коду) — два найважливіші інструменти для кожного розробника."
"This is one of the required projects to earn your certification.",
"For this project, you will build a database of celestial bodies using PostgreSQL."
]
},
"build-a-number-guessing-game-project": {
"title": "Number Guessing Game",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
]
},
"build-a-periodic-table-database-project": {
"title": "Periodic Table Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create Bash a script to get information about chemical elements from a periodic table database."
]
},
"build-a-salon-appointment-scheduler-project": {
"title": "Salon Appointment Scheduler",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
]
},
"build-a-world-cup-database-project": {
"title": "World Cup Database",
"intro": [
"This is one of the required projects to earn your certification.",
"For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
]
},
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
"title": "Learn Advanced Bash by Building a Kitty Ipsum Translator",
"intro": [
"There's more to Bash commands than you might think.",
"In this 140 lesson course, you will learn some more complex commands, and the details of how commands work."
]
},
"learn-bash-and-sql-by-building-a-bike-rental-shop": {
"title": "Learn Bash and SQL by Building a Bike Rental Shop",
"intro": [
"In this 210 lesson course, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
]
},
"learn-bash-by-building-a-boilerplate": {
"title": "Learn Bash by Building a Boilerplate",
"intro": [
"The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
"In this 170 lesson course, you will learn basic commands by creating a website boilerplate using only the command line."
]
},
"learn-bash-scripting-by-building-five-programs": {
"title": "Learn Bash Scripting by Building Five Programs",
"intro": [
"Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
"In this 220 lesson course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
]
},
"learn-git-by-building-an-sql-reference-object": {
"title": "Learn Git by Building and SQL Reference Object",
"intro": [
"Git is a version control system that keep track of all the changes you make to your codebase",
"In this 240 lesson course, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
]
},
"learn-nano-by-building-a-castle": {
"title": "Learn Nano by Building a Castle",
"intro": [
"Nano is a program that allow you to edit files right in the terminal.",
"In this 40 lesson course, you will learn how to edit files in the terminal with Nano while building a castle."
]
},
"learn-relational-databases-by-building-a-mario-database": {
"title": "Learn Relational Databases by Building a Mario Database",
"intro": [
"Relational Databases organize data into tables that are linked together through relationships.",
"In this 165 lesson course, you will learn the basics of relational databases by creating a PostgreSQL database filled with video game characters."
]
},
"learn-sql-by-building-a-student-database-part-1": {
"title": "Learn SQL by Building a Student Database: Part 1",
"intro": [
"SQL, or Structured Query Language, is the language for communicating with Relational Databases.",
"In this 140 lesson course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
]
},
"learn-sql-by-building-a-student-database-part-2": {
"title": "Learn SQL by Building a Student Database: Part 2",
"intro": [
"SQL Join commands are used to combine information from multiple tables in a Relational Database",
"In this 140 lesson course, you will complete your student database while diving deeper into SQL commands."
]
}
}

View File

@@ -5,6 +5,7 @@ export enum FlashMessages {
CertClaimSuccess = 'flash.cert-claim-success',
CertificateMissing = 'flash.certificate-missing',
CertsPrivate = 'flash.certs-private',
CompleteProjectFirst = 'flash.complete-project-first',
CreateTokenErr = 'flash.create-token-err',
DeleteTokenErr = 'flash.delete-token-err',
EmailValid = 'flash.email-valid',

View File

@@ -17,7 +17,7 @@ import './webhook-token.css';
type WebhookTokenProps = {
deleteWebhookToken: () => void;
isSuperBlockPage?: boolean;
isChallengePage?: boolean;
postWebhookToken: () => void;
t: TFunction;
webhookToken: string | null;
@@ -69,9 +69,9 @@ class WebhookToken extends Component<WebhookTokenProps, WebhookTokenState> {
};
render() {
const { isSuperBlockPage = false, t, webhookToken = null } = this.props;
const { isChallengePage = false, t, webhookToken = null } = this.props;
return isSuperBlockPage ? (
return isChallengePage ? (
<>
{!webhookToken && (
<div className='alert alert-info'>

View File

@@ -186,6 +186,8 @@ export const updateCurrentChallengeId = createAction(
export const completedChallengesSelector = state =>
userSelector(state).completedChallenges || [];
export const partiallyCompletedChallengesSelector = state =>
userSelector(state).partiallyCompletedChallenges || [];
export const completionCountSelector = state => state[MainApp].completionCount;
export const currentChallengeIdSelector = state =>
state[MainApp].currentChallengeId;

View File

@@ -0,0 +1,15 @@
.ca-description {
font-family: 'Lato', sans-serif;
}
.ca-btn-padding {
padding: 0 15px;
}
.ca-btn-padding button {
font-size: 1.1rem;
}
.ca-btn-margin {
margin-bottom: 5px;
}

View File

@@ -1,24 +1,68 @@
/* eslint-disable max-len */
// Package Utilities
import { Grid, Col, Row, Button } from '@freecodecamp/react-bootstrap';
import { graphql } from 'gatsby';
import React, { Component } from 'react';
import Helmet from 'react-helmet';
import { TFunction, Trans, withTranslation } from 'react-i18next';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import type { Dispatch } from 'redux';
import { createSelector } from 'reselect';
// Local Utilities
import Spacer from '../../../components/helpers/spacer';
import LearnLayout from '../../../components/layouts/learn';
import { webhookTokenSelector } from '../../../redux';
import { ChallengeNode, ChallengeMeta } from '../../../redux/prop-types';
import { updateChallengeMeta, challengeMounted } from '../redux';
// Redux
import ChallengeTitle from '../components/challenge-title';
import PrismFormatted from '../components/prism-formatted';
import { challengeTypes } from '../../../../utils/challenge-types';
import CompletionModal from '../components/completion-modal';
import GreenPass from '../../../assets/icons/green-pass';
import HelpModal from '../components/help-modal';
import Hotkeys from '../components/Hotkeys';
import {
completedChallengesSelector,
isSignedInSelector,
partiallyCompletedChallengesSelector,
webhookTokenSelector
} from '../../../redux';
import {
challengeMounted,
isChallengeCompletedSelector,
updateChallengeMeta,
openModal,
updateSolutionFormValues
} from '../redux';
import { createFlashMessage } from '../../../components/Flash/redux';
import {
ChallengeNode,
ChallengeMeta,
CompletedChallenge
} from '../../../redux/prop-types';
import ProjectToolPanel from '../projects/tool-panel';
import SolutionForm from '../projects/solution-form';
import WebhookToken from '../../../components/settings/webhook-token';
import { FlashMessages } from '../../../components/Flash/redux/flash-messages';
import './codeally.css';
// Redux
const mapStateToProps = createSelector(
completedChallengesSelector,
isChallengeCompletedSelector,
isSignedInSelector,
partiallyCompletedChallengesSelector,
webhookTokenSelector,
(webhookToken: string | null) => ({
(
completedChallenges: CompletedChallenge[],
isChallengeCompleted: boolean,
isSignedIn: boolean,
partiallyCompletedChallenges: CompletedChallenge[],
webhookToken: string | null
) => ({
completedChallenges,
isChallengeCompleted,
isSignedIn,
partiallyCompletedChallenges,
webhookToken
})
);
@@ -26,28 +70,53 @@ const mapStateToProps = createSelector(
const mapDispatchToProps = (dispatch: Dispatch) =>
bindActionCreators(
{
challengeMounted,
createFlashMessage,
openCompletionModal: () => openModal('completion'),
updateChallengeMeta,
challengeMounted
updateSolutionFormValues
},
dispatch
);
// Types
interface ShowCodeAllyProps {
challengeMounted: (arg0: string) => void;
completedChallenges: CompletedChallenge[];
createFlashMessage: typeof createFlashMessage;
data: { challengeNode: ChallengeNode };
isChallengeCompleted: boolean;
isSignedIn: boolean;
openCompletionModal: () => void;
pageContext: {
challengeMeta: ChallengeMeta;
};
partiallyCompletedChallenges: CompletedChallenge[];
t: TFunction;
updateChallengeMeta: (arg0: ChallengeMeta) => void;
updateSolutionFormValues: () => void;
webhookToken: string | null;
}
interface ShowCodeAllyState {
showIframe: boolean;
}
// Component
class ShowCodeAlly extends Component<ShowCodeAllyProps> {
class ShowCodeAlly extends Component<ShowCodeAllyProps, ShowCodeAllyState> {
static displayName: string;
private _container: HTMLElement | null = null;
constructor(props: ShowCodeAllyProps) {
super(props);
this.state = {
showIframe: false
};
}
componentDidMount(): void {
const {
updateChallengeMeta,
challengeMounted,
data: {
challengeNode: {
challenge: { challengeType, title }
@@ -56,27 +125,96 @@ class ShowCodeAlly extends Component<ShowCodeAllyProps> {
pageContext: { challengeMeta }
} = this.props;
updateChallengeMeta({ ...challengeMeta, title, challengeType });
challengeMounted(challengeMeta.id);
this._container?.focus();
}
showIframe = () => {
this.setState({
showIframe: true
});
};
handleSubmit = ({
showCompletionModal
}: {
showCompletionModal: boolean;
}) => {
const {
completedChallenges,
createFlashMessage,
data: {
challengeNode: {
challenge: { id: challengeId }
}
},
partiallyCompletedChallenges
} = this.props;
const isPartiallyCompleted = partiallyCompletedChallenges.some(
challenge => challenge.id === challengeId
);
const isCompleted = completedChallenges.some(
challenge => challenge.id === challengeId
);
if (!isPartiallyCompleted && !isCompleted) {
createFlashMessage({
type: 'danger',
message: FlashMessages.CompleteProjectFirst
});
} else if (showCompletionModal) {
this.props.openCompletionModal();
}
};
render() {
const {
completedChallenges,
data: {
challengeNode: {
challenge: {
title,
block,
certification,
challengeType,
description,
fields: { blockName },
id: challengeId,
instructions,
notes,
superBlock,
title,
translationPending,
url
}
}
},
isChallengeCompleted,
isSignedIn,
pageContext: {
challengeMeta: { nextChallengePath, prevChallengePath }
},
partiallyCompletedChallenges,
t,
updateSolutionFormValues,
webhookToken = null
} = this.props;
const { showIframe } = this.state;
const envVariables = webhookToken
? `&envVariables=CODEROAD_WEBHOOK_TOKEN=${webhookToken}`
: '';
return (
const isPartiallyCompleted = partiallyCompletedChallenges.some(
challenge => challenge.id === challengeId
);
const isCompleted = completedChallenges.some(
challenge => challenge.id === challengeId
);
return showIframe ? (
<LearnLayout>
<Helmet title={`${blockName}: ${title} | freeCodeCamp.org`} />
<iframe
@@ -87,25 +225,162 @@ class ShowCodeAlly extends Component<ShowCodeAllyProps> {
title='Editor'
/>
</LearnLayout>
) : (
<Hotkeys
innerRef={(c: HTMLElement | null) => (this._container = c)}
nextChallengePath={nextChallengePath}
prevChallengePath={prevChallengePath}
>
<LearnLayout>
<Helmet title={`${blockName}: ${title} | freeCodeCamp.org`} />
<Grid>
<Row>
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
<Spacer />
<ChallengeTitle
block={block}
isCompleted={isChallengeCompleted}
superBlock={superBlock}
translationPending={translationPending}
>
{title}
</ChallengeTitle>
<Spacer />
{isSignedIn && <WebhookToken isChallengePage={true} />}
<PrismFormatted text={description} />
<Spacer />
<div className='ca-description'>
<Trans i18nKey='learn.github-required'>
<a
href='https://github.com'
rel='noopener noreferrer'
target='_blank'
title={t('learn.github-link')}
>
placeholder
</a>
</Trans>
</div>
<Spacer />
{isSignedIn && challengeType === challengeTypes.codeAllyCert && (
<>
<div className='ca-description'>
{t('learn.complete-both-steps')}
</div>
<hr />
<Spacer />
<b>{t('learn.step-1')}</b>
{(isPartiallyCompleted || isCompleted) && (
<GreenPass
style={{
height: '15px',
width: '15px',
marginLeft: '7px'
}}
/>
)}
<Spacer />
<div className='ca-description'>
{t('learn.runs-in-vm')}
</div>
<Spacer />
<PrismFormatted text={instructions} />
<Spacer />
</>
)}
<div
className={`ca-btn-padding ${
!isSignedIn ||
challengeType === challengeTypes.codeAllyPractice
? 'ca-btn-margin'
: ''
}`}
>
<Button
block={true}
bsStyle='primary'
onClick={this.showIframe}
>
{challengeType === challengeTypes.codeAllyCert
? t('buttons.click-start-project')
: t('buttons.click-start-course')}
</Button>
</div>
{isSignedIn && challengeType === challengeTypes.codeAllyCert && (
<>
<hr />
<Spacer />
<b>{t('learn.step-2')}</b>
{isCompleted && (
<GreenPass
style={{
height: '15px',
width: '15px',
marginLeft: '7px'
}}
/>
)}
<Spacer />
<div className='ca-description'>
{t('learn.submit-public-url')}
</div>
<Spacer />
<PrismFormatted text={notes} />
<Spacer />
<SolutionForm
challengeType={challengeType}
description={description}
onSubmit={this.handleSubmit}
updateSolutionForm={updateSolutionFormValues}
/>
</>
)}
<ProjectToolPanel />
<br />
<Spacer />
</Col>
<CompletionModal
block={block}
blockName={blockName}
certification={certification}
superBlock={superBlock}
/>
<HelpModal />
</Row>
</Grid>
</LearnLayout>
</Hotkeys>
);
}
}
ShowCodeAlly.displayName = 'ShowCodeAlly';
export default connect(mapStateToProps, mapDispatchToProps)(ShowCodeAlly);
export default connect(
mapStateToProps,
mapDispatchToProps
)(withTranslation()(ShowCodeAlly));
// GraphQL
export const query = graphql`
query CodeAllyChallenge($slug: String!) {
challengeNode(challenge: { fields: { slug: { eq: $slug } } }) {
challenge {
title
block
certification
challengeType
url
description
fields {
blockName
}
helpCategory
id
instructions
notes
superBlock
title
translationPending
url
}
}
}

View File

@@ -10,9 +10,12 @@
#description p,
#instructions p,
#notes p,
#description ul,
#instructions ul,
#notes ul,
#description ol,
#instructions ol {
#instructions ol,
#notes ol {
font-family: 'Lato', sans-serif;
}

View File

@@ -125,7 +125,9 @@ export class Block extends Component<BlockProps> {
const isOtherProject =
challenge.challengeType === 3 ||
challenge.challengeType === 4 ||
challenge.challengeType === 10;
challenge.challengeType === 10 ||
challenge.challengeType === 12 ||
challenge.challengeType === 13;
const isTakeHomeProject = blockDashedName === 'take-home-projects';

View File

@@ -15,7 +15,6 @@ import DonateModal from '../../components/Donation/donation-modal';
import Login from '../../components/Header/components/Login';
import Map from '../../components/Map';
import { Spacer } from '../../components/helpers';
import WebhookToken from '../../components/settings/webhook-token';
import {
currentChallengeIdSelector,
userFetchStateSelector,
@@ -199,9 +198,6 @@ const SuperBlockIntroductionPage = (props: SuperBlockProp) => {
<Spacer size={2} />
<LegacyLinks superBlock={superBlock} />
<SuperBlockIntro superBlock={superBlock} />
{superBlock === SuperBlocks.RelationalDb && isSignedIn && (
<WebhookToken isSuperBlockPage={true} />
)}
<Spacer size={2} />
<h2 className='text-center big-subheading'>
{t(`intro:misc-text.courses`)}

View File

@@ -20,6 +20,7 @@ const toneUrls = {
'https://campfire-mode.freecodecamp.org/cert.mp3',
[FlashMessages.CertificateMissing]: TRY_AGAIN,
[FlashMessages.CertsPrivate]: TRY_AGAIN,
[FlashMessages.CompleteProjectFirst]: TRY_AGAIN,
[FlashMessages.CreateTokenErr]: TRY_AGAIN,
[FlashMessages.DeleteTokenErr]: TRY_AGAIN,
[FlashMessages.EmailValid]: CHAL_COMP,

View File

@@ -11,7 +11,8 @@ const quiz = 8;
const invalid = 9;
const pythonProject = 10;
const video = 11;
const codeally = 12;
const codeAllyPractice = 12;
const codeAllyCert = 13;
const multiFileCertProject = 14;
// individual exports
@@ -34,7 +35,8 @@ exports.challengeTypes = {
quiz,
invalid,
video,
codeally,
codeAllyPractice,
codeAllyCert,
multiFileCertProject
};
@@ -69,7 +71,8 @@ exports.viewTypes = {
[quiz]: 'quiz',
[backend]: 'backend',
[video]: 'video',
[codeally]: 'codeally',
[codeAllyPractice]: 'codeAlly',
[codeAllyCert]: 'codeAlly',
[multiFileCertProject]: 'classic'
};
@@ -91,6 +94,7 @@ exports.submitTypes = {
[backend]: 'backend',
[modern]: 'tests',
[video]: 'tests',
[codeAllyCert]: 'project.frontEnd',
[multiFileCertProject]: 'tests'
};

View File

@@ -15,7 +15,7 @@ const frontend = path.resolve(
__dirname,
'../../src/templates/Challenges/projects/frontend/Show.tsx'
);
const codeally = path.resolve(
const codeAlly = path.resolve(
__dirname,
'../../src/templates/Challenges/codeally/show.tsx'
);
@@ -38,7 +38,7 @@ const views = {
modern: classic,
frontend,
video,
codeally
codeAlly
// quiz: Quiz
};

View File

@@ -63,21 +63,20 @@
"functional-programming-spreadsheet": "JavaScript",
"intermediate-javascript-calorie-counter": "JavaScript",
"d3-dashboard": "JavaScript",
"learn-bash-by-building-a-boilerplate": "Relational Databases",
"learn-relational-databases-by-building-a-mario-database": "Relational Databases",
"celestial-bodies-database": "Relational Databases",
"learn-bash-scripting-by-building-five-programs": "Relational Databases",
"learn-bash-and-sql-by-building-a-bike-rental-shop": "Relational Databases",
"salon-appointment-scheduler": "Relational Databases",
"learn-sql-by-building-a-student-database-part-1": "Relational Databases",
"learn-sql-by-building-a-student-database-part-2": "Relational Databases",
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": "Relational Databases",
"world-cup-database": "Relational Databases",
"learn-nano-by-building-a-castle": "Relational Databases",
"learn-git-by-building-an-sql-reference-object": "Relational Databases",
"periodic-table-database": "Relational Databases",
"learn-github-by-building-a-list-of-inspirational-quotes": "Relational Databases",
"number-guessing-game": "Relational Databases",
"learn-bash-by-building-a-boilerplate": "Backend Development",
"learn-relational-databases-by-building-a-mario-database": "Backend Development",
"celestial-bodies-database": "Backend Development",
"learn-bash-scripting-by-building-five-programs": "Backend Development",
"learn-bash-and-sql-by-building-a-bike-rental-shop": "Backend Development",
"salon-appointment-scheduler": "Backend Development",
"learn-sql-by-building-a-student-database-part-1": "Backend Development",
"learn-sql-by-building-a-student-database-part-2": "Backend Development",
"learn-advanced-bash-by-building-a-kitty-ipsum-translator": "Backend Development",
"world-cup-database": "Backend Development",
"learn-nano-by-building-a-castle": "Backend Development",
"learn-git-by-building-an-sql-reference-object": "Backend Development",
"periodic-table-database": "Backend Development",
"number-guessing-game": "Backend Development",
"learn-accessibility-by-building-a-quiz": "HTML-CSS",
"learn-css-colors-by-building-a-set-of-colored-markers": "HTML-CSS",
"learn-html-forms-by-building-a-registration-form": "HTML-CSS",