From 84dd45fb4fd4a0bc3e5ba28b362d1220332ab738 Mon Sep 17 00:00:00 2001 From: chrisgarrity <chrisg@media.mit.edu> Date: Tue, 4 Dec 2018 07:47:12 -0500 Subject: [PATCH] wip --- src/components/stage-header/stage-header.css | 6 +++ src/components/stage-header/stage-header.jsx | 45 ++++++++++++++------ src/containers/stage-header.jsx | 2 + src/reducers/gui.js | 14 ++++++ src/reducers/mode.js | 1 + 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/src/components/stage-header/stage-header.css b/src/components/stage-header/stage-header.css index e0695fb61..f5be66ac2 100644 --- a/src/components/stage-header/stage-header.css +++ b/src/components/stage-header/stage-header.css @@ -26,6 +26,12 @@ padding-bottom: $space; } +.embed-scratch-logo img { + height: 1.6rem; + vertical-align: middle; + opacity: .6; +} + .stage-size-row { display: flex; } diff --git a/src/components/stage-header/stage-header.jsx b/src/components/stage-header/stage-header.jsx index 43414179b..c72995a7e 100644 --- a/src/components/stage-header/stage-header.jsx +++ b/src/components/stage-header/stage-header.jsx @@ -16,6 +16,7 @@ import largeStageIcon from './icon--large-stage.svg'; import smallStageIcon from './icon--small-stage.svg'; import unFullScreenIcon from './icon--unfullscreen.svg'; +import scratchLogo from '../menu-bar/scratch-logo.svg'; import styles from './stage-header.css'; const messages = defineMessages({ @@ -48,6 +49,7 @@ const messages = defineMessages({ const StageHeaderComponent = function (props) { const { + isEmbedded, isFullScreen, isPlayerOnly, onKeyPress, @@ -63,6 +65,34 @@ const StageHeaderComponent = function (props) { if (isFullScreen) { const stageDimensions = getStageDimensions(null, true); + const stageButton = isEmbedded ? ( + <div className={styles.embedScratchLogo}> + <a + href="https://scratch.mit.edu" + rel="noopener noreferrer" + target="_blank" + > + <img + alt="Scratch" + src={scratchLogo} + /> + </a> + </div> + ) : ( + <Button + className={styles.stageButton} + onClick={onSetStageUnFull} + onKeyPress={onKeyPress} + > + <img + alt={props.intl.formatMessage(messages.unFullStageSizeMessage)} + className={styles.stageButtonIcon} + draggable={false} + src={unFullScreenIcon} + title={props.intl.formatMessage(messages.fullscreenControl)} + /> + </Button> + ); header = ( <Box className={styles.stageHeaderWrapperOverlay}> <Box @@ -70,19 +100,7 @@ const StageHeaderComponent = function (props) { style={{width: stageDimensions.width}} > <Controls vm={vm} /> - <Button - className={styles.stageButton} - onClick={onSetStageUnFull} - onKeyPress={onKeyPress} - > - <img - alt={props.intl.formatMessage(messages.unFullStageSizeMessage)} - className={styles.stageButtonIcon} - draggable={false} - src={unFullScreenIcon} - title={props.intl.formatMessage(messages.fullscreenControl)} - /> - </Button> + {stageButton} </Box> </Box> ); @@ -164,6 +182,7 @@ const mapStateToProps = state => ({ StageHeaderComponent.propTypes = { intl: intlShape, + isEmbedded: PropTypes.bool.isRequired, isFullScreen: PropTypes.bool.isRequired, isPlayerOnly: PropTypes.bool.isRequired, onKeyPress: PropTypes.func.isRequired, diff --git a/src/containers/stage-header.jsx b/src/containers/stage-header.jsx index 11ffab433..baf27689b 100644 --- a/src/containers/stage-header.jsx +++ b/src/containers/stage-header.jsx @@ -43,6 +43,7 @@ class StageHeader extends React.Component { } StageHeader.propTypes = { + isEmbedded: PropTypes.bool, isFullScreen: PropTypes.bool, isPlayerOnly: PropTypes.bool, onSetStageUnFull: PropTypes.func.isRequired, @@ -52,6 +53,7 @@ StageHeader.propTypes = { const mapStateToProps = state => ({ stageSizeMode: state.scratchGui.stageSize.stageSize, + isEmbedded: state.scratchGui.mode.isEmbedded, isFullScreen: state.scratchGui.mode.isFullScreen, isPlayerOnly: state.scratchGui.mode.isPlayerOnly }); diff --git a/src/reducers/gui.js b/src/reducers/gui.js index 41b5fbce0..18bfe4ab0 100644 --- a/src/reducers/gui.js +++ b/src/reducers/gui.js @@ -83,6 +83,19 @@ const initFullScreen = function (currentState) { ); }; +const initEmbedded = function (currentState) { + return Object.assign( + {}, + currentState, + {mode: { + isEmbedded: true, + isFullScreen: true, + isPlayerOnly: true, + hasEverEnteredEditor: false + }} + ); +}; + const initTutorialCard = function (currentState, deckId) { return Object.assign( {}, @@ -145,6 +158,7 @@ export { guiReducer as default, guiInitialState, guiMiddleware, + initEmbedded, initFullScreen, initPlayer, initPreviewInfo, diff --git a/src/reducers/mode.js b/src/reducers/mode.js index 739ae163d..bf3c72d38 100644 --- a/src/reducers/mode.js +++ b/src/reducers/mode.js @@ -2,6 +2,7 @@ const SET_FULL_SCREEN = 'scratch-gui/mode/SET_FULL_SCREEN'; const SET_PLAYER = 'scratch-gui/mode/SET_PLAYER'; const initialState = { + isEmbedded: false, isFullScreen: false, isPlayerOnly: false, hasEverEnteredEditor: true -- GitLab