fix(i18n): translate block names in completion modal (#41516)
* fix(i18n): translate block names in completion modal * fix: update snapshot * fix: update test and snapshot betterish * fix: remove dasherize usage * Update client/src/templates/Challenges/video/Show.js Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * Update client/src/templates/Challenges/projects/frontend/Show.js Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> * fix: add block props to backend Show.js Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
This commit is contained in:
@ -277,8 +277,10 @@ class ShowClassic extends Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
|
block,
|
||||||
fields: { blockName },
|
fields: { blockName },
|
||||||
forumTopicId,
|
forumTopicId,
|
||||||
|
superBlock,
|
||||||
title
|
title
|
||||||
} = this.getChallenge();
|
} = this.getChallenge();
|
||||||
const {
|
const {
|
||||||
@ -331,7 +333,11 @@ class ShowClassic extends Component {
|
|||||||
testOutput={this.renderTestOutput()}
|
testOutput={this.renderTestOutput()}
|
||||||
/>
|
/>
|
||||||
</Media>
|
</Media>
|
||||||
<CompletionModal blockName={blockName} />
|
<CompletionModal
|
||||||
|
block={block}
|
||||||
|
blockName={blockName}
|
||||||
|
superBlock={superBlock}
|
||||||
|
/>
|
||||||
<HelpModal />
|
<HelpModal />
|
||||||
<VideoModal videoUrl={this.getVideoUrl()} />
|
<VideoModal videoUrl={this.getVideoUrl()} />
|
||||||
<ResetModal />
|
<ResetModal />
|
||||||
|
@ -70,6 +70,7 @@ const mapDispatchToProps = function (dispatch) {
|
|||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
allowBlockDonationRequests: PropTypes.func,
|
allowBlockDonationRequests: PropTypes.func,
|
||||||
|
block: PropTypes.string,
|
||||||
blockName: PropTypes.string,
|
blockName: PropTypes.string,
|
||||||
close: PropTypes.func.isRequired,
|
close: PropTypes.func.isRequired,
|
||||||
completedChallengesIds: PropTypes.array,
|
completedChallengesIds: PropTypes.array,
|
||||||
@ -81,6 +82,7 @@ const propTypes = {
|
|||||||
isSignedIn: PropTypes.bool.isRequired,
|
isSignedIn: PropTypes.bool.isRequired,
|
||||||
message: PropTypes.string,
|
message: PropTypes.string,
|
||||||
submitChallenge: PropTypes.func.isRequired,
|
submitChallenge: PropTypes.func.isRequired,
|
||||||
|
superBlock: PropTypes.string,
|
||||||
t: PropTypes.func.isRequired,
|
t: PropTypes.func.isRequired,
|
||||||
title: PropTypes.string
|
title: PropTypes.string
|
||||||
};
|
};
|
||||||
@ -184,13 +186,14 @@ export class CompletionModalInner extends Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
blockName = '',
|
block,
|
||||||
close,
|
close,
|
||||||
isOpen,
|
isOpen,
|
||||||
message,
|
message,
|
||||||
t,
|
t,
|
||||||
title,
|
title,
|
||||||
isSignedIn
|
isSignedIn,
|
||||||
|
superBlock = ''
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const { completedPercent } = this.state;
|
const { completedPercent } = this.state;
|
||||||
@ -220,8 +223,9 @@ export class CompletionModalInner extends Component {
|
|||||||
</Modal.Header>
|
</Modal.Header>
|
||||||
<Modal.Body className='completion-modal-body'>
|
<Modal.Body className='completion-modal-body'>
|
||||||
<CompletionModalBody
|
<CompletionModalBody
|
||||||
blockName={blockName}
|
block={block}
|
||||||
completedPercent={completedPercent}
|
completedPercent={completedPercent}
|
||||||
|
superBlock={superBlock}
|
||||||
/>
|
/>
|
||||||
</Modal.Body>
|
</Modal.Body>
|
||||||
<Modal.Footer>
|
<Modal.Footer>
|
||||||
|
@ -5,8 +5,9 @@ import GreenPass from '../../../assets/icons/GreenPass';
|
|||||||
import { withTranslation } from 'react-i18next';
|
import { withTranslation } from 'react-i18next';
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
blockName: PropTypes.string,
|
block: PropTypes.string,
|
||||||
completedPercent: PropTypes.number,
|
completedPercent: PropTypes.number,
|
||||||
|
superBlock: PropTypes.string,
|
||||||
t: PropTypes.func.isRequired
|
t: PropTypes.func.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -58,7 +59,8 @@ export class CompletionModalBody extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { blockName, completedPercent, t } = this.props;
|
const { block, completedPercent, superBlock, t } = this.props;
|
||||||
|
const blockTitle = t(`intro:${superBlock}.blocks.${block}.title`);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -73,7 +75,7 @@ export class CompletionModalBody extends PureComponent {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className='completion-block-details'>
|
<div className='completion-block-details'>
|
||||||
<div className='completion-block-name'>{blockName}</div>
|
<div className='completion-block-name'>{blockTitle}</div>
|
||||||
<div className='progress-bar-wrap'>
|
<div className='progress-bar-wrap'>
|
||||||
<div className='progress-bar-background'>
|
<div className='progress-bar-background'>
|
||||||
{t('learn.percent-complete', {
|
{t('learn.percent-complete', {
|
||||||
|
@ -6,8 +6,9 @@ import { render, fireEvent } from '@testing-library/react';
|
|||||||
import CompletionModalBody from './CompletionModalBody';
|
import CompletionModalBody from './CompletionModalBody';
|
||||||
|
|
||||||
const props = {
|
const props = {
|
||||||
blockName: 'Basic HTML and HTML5',
|
block: 'basic-html-and-html5',
|
||||||
completedPercent: Math.floor(Math.random() * 101)
|
completedPercent: Math.floor(Math.random() * 101),
|
||||||
|
superBlock: 'responsive-web-design'
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('<CompletionModalBody />', () => {
|
describe('<CompletionModalBody />', () => {
|
||||||
|
@ -64,7 +64,7 @@ exports[`<CompletionModalBody /> matches snapshot 1`] = `
|
|||||||
<div
|
<div
|
||||||
class="completion-block-name"
|
class="completion-block-name"
|
||||||
>
|
>
|
||||||
Basic HTML and HTML5
|
intro:responsive-web-design.blocks.basic-html-and-html5.title
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="progress-bar-wrap"
|
class="progress-bar-wrap"
|
||||||
|
@ -233,7 +233,11 @@ export class BackEnd extends Component {
|
|||||||
<TestSuite tests={tests} />
|
<TestSuite tests={tests} />
|
||||||
<Spacer />
|
<Spacer />
|
||||||
</Col>
|
</Col>
|
||||||
<CompletionModal blockName={blockName} />
|
<CompletionModal
|
||||||
|
block={block}
|
||||||
|
blockName={blockName}
|
||||||
|
superBlock={superBlock}
|
||||||
|
/>
|
||||||
<HelpModal />
|
<HelpModal />
|
||||||
</Row>
|
</Row>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -176,7 +176,11 @@ export class Project extends Component {
|
|||||||
<br />
|
<br />
|
||||||
<Spacer />
|
<Spacer />
|
||||||
</Col>
|
</Col>
|
||||||
<CompletionModal blockName={blockName} />
|
<CompletionModal
|
||||||
|
block={block}
|
||||||
|
blockName={blockName}
|
||||||
|
superBlock={superBlock}
|
||||||
|
/>
|
||||||
<HelpModal />
|
<HelpModal />
|
||||||
</Row>
|
</Row>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -298,7 +298,11 @@ export class Project extends Component {
|
|||||||
</Button>
|
</Button>
|
||||||
<Spacer size={2} />
|
<Spacer size={2} />
|
||||||
</Col>
|
</Col>
|
||||||
<CompletionModal blockName={blockName} />
|
<CompletionModal
|
||||||
|
block={block}
|
||||||
|
blockName={blockName}
|
||||||
|
superBlock={superBlock}
|
||||||
|
/>
|
||||||
</Row>
|
</Row>
|
||||||
</Grid>
|
</Grid>
|
||||||
</LearnLayout>
|
</LearnLayout>
|
||||||
|
Reference in New Issue
Block a user