Merge pull request #2595 from LLK/develop

Release to master 1/3/2018
This commit is contained in:
Ray Schamp 2019-01-03 17:08:00 -05:00 committed by GitHub
commit 62585d9a06
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 90 additions and 82 deletions

View file

@ -100,7 +100,7 @@
"redux": "3.5.2", "redux": "3.5.2",
"redux-thunk": "2.0.1", "redux-thunk": "2.0.1",
"sass-loader": "6.0.6", "sass-loader": "6.0.6",
"scratch-gui": "0.1.0-prerelease.20190102131553", "scratch-gui": "0.1.0-prerelease.20190103214909",
"scratch-l10n": "latest", "scratch-l10n": "latest",
"scratchr2_translations": "git://github.com/LLK/scratchr2_translations.git#master", "scratchr2_translations": "git://github.com/LLK/scratchr2_translations.git#master",
"slick-carousel": "1.6.0", "slick-carousel": "1.6.0",

View file

@ -110,7 +110,7 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
font-family: "Helvetica Neue"; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: .875rem; font-size: .875rem;
font-weight: regular; font-weight: regular;
flex-shrink: 1; flex-shrink: 1;

View file

@ -123,6 +123,10 @@ const PreviewPresentation = ({
}) => { }) => {
const shareDate = ((projectInfo.history && projectInfo.history.shared)) ? projectInfo.history.shared : ''; const shareDate = ((projectInfo.history && projectInfo.history.shared)) ? projectInfo.history.shared : '';
const revisedDate = ((projectInfo.history && projectInfo.history.modified)) ? projectInfo.history.modified : ''; const revisedDate = ((projectInfo.history && projectInfo.history.modified)) ? projectInfo.history.modified : '';
const showInstructions = editable || projectInfo.instructions ||
(!projectInfo.instructions && !projectInfo.description); // show if both are empty
const showNotesAndCredits = editable || projectInfo.description ||
(!projectInfo.instructions && !projectInfo.description); // show if both are empty
// Allow embedding html in banner messages coming from the server // Allow embedding html in banner messages coming from the server
const embedCensorMessage = message => ( const embedCensorMessage = message => (
@ -348,89 +352,93 @@ const PreviewPresentation = ({
</FlexRow> </FlexRow>
</FlexRow> </FlexRow>
</MediaQuery> </MediaQuery>
<div className="description-block"> {showInstructions && (
<div className="project-textlabel"> <div className="description-block">
<FormattedMessage id="project.instructionsLabel" /> <div className="project-textlabel">
</div> <FormattedMessage id="project.instructionsLabel" />
{editable ?
<Formsy
className="project-description-form"
onKeyPress={onKeyPress}
>
<InplaceInput
className={classNames(
'project-description-edit',
{remixes: parentInfo && parentInfo.author}
)}
handleUpdate={onUpdate}
name="instructions"
placeholder={intl.formatMessage({
id: 'project.descriptionPlaceholder'
})}
type="textarea"
validationErrors={{
maxLength: intl.formatMessage({
id: 'project.descriptionMaxLength'
})
}}
validations={{
// TODO: actual 5000
maxLength: 1000
}}
value={projectInfo.instructions}
/>
</Formsy> :
<div className="project-description">
{decorateText(projectInfo.instructions, {
usernames: true,
hashtags: true,
scratchLinks: false
})}
</div> </div>
} {editable ?
</div> <Formsy
<div className="description-block"> className="project-description-form"
<div className="project-textlabel"> onKeyPress={onKeyPress}
<FormattedMessage id="project.notesAndCreditsLabel" /> >
</div> <InplaceInput
{editable ? className={classNames(
<Formsy 'project-description-edit',
className="project-description-form" {remixes: parentInfo && parentInfo.author}
onKeyPress={onKeyPress} )}
> handleUpdate={onUpdate}
<InplaceInput name="instructions"
className={classNames( placeholder={intl.formatMessage({
'project-description-edit', id: 'project.descriptionPlaceholder'
'last', })}
{remixes: parentInfo && parentInfo.author} type="textarea"
)} validationErrors={{
handleUpdate={onUpdate} maxLength: intl.formatMessage({
name="description" id: 'project.descriptionMaxLength'
placeholder={intl.formatMessage({ })
id: 'project.notesPlaceholder' }}
validations={{
// TODO: actual 5000
maxLength: 1000
}}
value={projectInfo.instructions}
/>
</Formsy> :
<div className="project-description">
{decorateText(projectInfo.instructions, {
usernames: true,
hashtags: true,
scratchLinks: false
})} })}
type="textarea" </div>
validationErrors={{ }
maxLength: intl.formatMessage({ </div>
id: 'project.descriptionMaxLength' )}
}) {showNotesAndCredits && (
}} <div className="description-block">
validations={{ <div className="project-textlabel">
// TODO: actual 5000 <FormattedMessage id="project.notesAndCreditsLabel" />
maxLength: 1000
}}
value={projectInfo.description}
/>
</Formsy> :
<div className="project-description last">
{decorateText(projectInfo.description, {
usernames: true,
hashtags: true,
scratchLinks: false
})}
</div> </div>
} {editable ?
</div> <Formsy
className="project-description-form"
onKeyPress={onKeyPress}
>
<InplaceInput
className={classNames(
'project-description-edit',
'last',
{remixes: parentInfo && parentInfo.author}
)}
handleUpdate={onUpdate}
name="description"
placeholder={intl.formatMessage({
id: 'project.notesPlaceholder'
})}
type="textarea"
validationErrors={{
maxLength: intl.formatMessage({
id: 'project.descriptionMaxLength'
})
}}
validations={{
// TODO: actual 5000
maxLength: 1000
}}
value={projectInfo.description}
/>
</Formsy> :
<div className="project-description last">
{decorateText(projectInfo.description, {
usernames: true,
hashtags: true,
scratchLinks: false
})}
</div>
}
</div>
)}
{/* eslint-enable max-len */} {/* eslint-enable max-len */}
</FlexRow> </FlexRow>
</FlexRow> </FlexRow>