Merge pull request #7761 from scratchfoundation/release/2023-07-25

[Master] release/2023-07-25
This commit is contained in:
Ron de las Alas 2023-07-26 10:24:50 -04:00 committed by GitHub
commit 3dd06703c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 179 additions and 131 deletions

99
package-lock.json generated
View file

@ -101,8 +101,8 @@
"regenerator-runtime": "0.13.9", "regenerator-runtime": "0.13.9",
"sass": "1.49.7", "sass": "1.49.7",
"sass-loader": "10.2.1", "sass-loader": "10.2.1",
"scratch-gui": "2.0.23-hotfix.2", "scratch-gui": "2.0.77",
"scratch-l10n": "3.15.20230627032203", "scratch-l10n": "3.15.20230718032211",
"selenium-webdriver": "4.1.0", "selenium-webdriver": "4.1.0",
"slick-carousel": "1.6.0", "slick-carousel": "1.6.0",
"style-loader": "0.12.3", "style-loader": "0.12.3",
@ -23509,39 +23509,21 @@
} }
}, },
"node_modules/scratch-blocks": { "node_modules/scratch-blocks": {
"version": "0.2.0-prerelease.20230630075614", "version": "0.2.0-prerelease.20230718081157",
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230630075614.tgz", "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230718081157.tgz",
"integrity": "sha512-1+d9wzGyGmlaftI3B23iRYMY+9Pj2IBCcDK7ZR1Ez7n13DQyK1PtWIWT75K+2qtj3RZTSt7oBH1iQvAWuAHnzw==", "integrity": "sha512-3ZO5cHKTTUFUoQ0kIFVNaywCoA/T2QLw21JldnVtdeUbBfmGDPKHNoFfv1QLVZHw3deOB/0feSC6szNfu/Q6fA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"exports-loader": "0.7.0", "exports-loader": "0.7.0",
"google-closure-library": "20190301.0.0", "google-closure-library": "20190301.0.0",
"imports-loader": "0.8.0", "imports-loader": "0.8.0",
"scratch-l10n": "3.15.20230630032209" "scratch-l10n": "3.15.20230718032211"
}
},
"node_modules/scratch-blocks/node_modules/scratch-l10n": {
"version": "3.15.20230630032209",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz",
"integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==",
"dev": true,
"dependencies": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"@transifex/api": "4.2.5",
"babel-plugin-react-intl": "^3.0.1",
"download": "^8.0.0",
"transifex": "1.6.6"
},
"bin": {
"build-i18n-src": "scripts/build-i18n-src.js",
"tx-push-src": "scripts/tx-push-src.js"
} }
}, },
"node_modules/scratch-gui": { "node_modules/scratch-gui": {
"version": "2.0.23-hotfix.2", "version": "2.0.77",
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.23-hotfix.2.tgz", "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.77.tgz",
"integrity": "sha512-LaKE3mRu7lqmCvo1mxrIHZltrKEcxh1Z3W7rDgwa5x1G6R0ClR4xo5nCULBeula97meXgI5UNGObedw0KwlfcQ==", "integrity": "sha512-saaYzmcM0aeD3busS8xt91s4vdtLhom30FYxIVu8+YIbvoPeFChwE3c5b/PqeUgiprpubHs8K4UhDnzTfTYe0A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@microbit/microbit-universal-hex": "0.2.2", "@microbit/microbit-universal-hex": "0.2.2",
@ -23596,14 +23578,14 @@
"redux": "3.7.2", "redux": "3.7.2",
"redux-throttle": "0.1.1", "redux-throttle": "0.1.1",
"scratch-audio": "0.1.0-prerelease.20221123180128", "scratch-audio": "0.1.0-prerelease.20221123180128",
"scratch-blocks": "0.2.0-prerelease.20230630075614", "scratch-blocks": "0.2.0-prerelease.20230718081157",
"scratch-l10n": "3.15.20230630032209", "scratch-l10n": "3.15.20230718032211",
"scratch-paint": "2.0.7", "scratch-paint": "2.0.21",
"scratch-render": "0.1.0-prerelease.20230318150639", "scratch-render": "0.1.0-prerelease.20230710194419",
"scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-render-fonts": "1.0.0-prerelease.20221102164332",
"scratch-storage": "2.2.1", "scratch-storage": "2.2.1",
"scratch-svg-renderer": "0.2.0-prerelease.20230224194137", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521",
"scratch-vm": "1.5.76", "scratch-vm": "1.5.90",
"startaudiocontext": "1.2.1", "startaudiocontext": "1.2.1",
"style-loader": "^0.23.0", "style-loader": "^0.23.0",
"text-encoding": "0.7.0", "text-encoding": "0.7.0",
@ -23952,28 +23934,10 @@
"symbol-observable": "^1.0.3" "symbol-observable": "^1.0.3"
} }
}, },
"node_modules/scratch-gui/node_modules/scratch-l10n": {
"version": "3.15.20230630032209",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz",
"integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==",
"dev": true,
"dependencies": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"@transifex/api": "4.2.5",
"babel-plugin-react-intl": "^3.0.1",
"download": "^8.0.0",
"transifex": "1.6.6"
},
"bin": {
"build-i18n-src": "scripts/build-i18n-src.js",
"tx-push-src": "scripts/tx-push-src.js"
}
},
"node_modules/scratch-gui/node_modules/scratch-paint": { "node_modules/scratch-gui/node_modules/scratch-paint": {
"version": "2.0.7", "version": "2.0.21",
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.7.tgz", "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.21.tgz",
"integrity": "sha512-5TUkOiaZHyVgUaiWF0WIEr8n5fbyBVZYUXpeK6GxeCsH/Wbb7tk4WtcBrgtf7wcDLroDn+qiGptlj0cZLxWQ1g==", "integrity": "sha512-LoEUU53rO5zJSp4dGOvAg0jFXkd/jiloETr2yz2AcNizCbPhWnQ0fz7bRR+pOEHzkMOsJk4rapfeSSyI1ed1VA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@scratch/paper": "0.11.20200728195508", "@scratch/paper": "0.11.20200728195508",
@ -24059,9 +24023,9 @@
} }
}, },
"node_modules/scratch-l10n": { "node_modules/scratch-l10n": {
"version": "3.15.20230627032203", "version": "3.15.20230718032211",
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230718032211.tgz",
"integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", "integrity": "sha512-USFDniZJP3QpTnBKKXBNw7w0jjvx6qCP5bWkNEF/xRIypSywJ1O2Os9CSSzm3tq7lHqXJRD5XVfxgvC+H0Xp2A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/cli": "^7.1.2", "@babel/cli": "^7.1.2",
@ -24100,9 +24064,9 @@
} }
}, },
"node_modules/scratch-render": { "node_modules/scratch-render": {
"version": "0.1.0-prerelease.20230318150639", "version": "0.1.0-prerelease.20230710194419",
"resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20230318150639.tgz", "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20230710194419.tgz",
"integrity": "sha512-NmetrU5Ubyik9T3g4L4pbyYYjTERQ2QxxtevgBmCGxIJgMQskmtImAsISC6Qko21YQWPQNG9X/BEJluhJG6CZA==", "integrity": "sha512-dIJ2U8hWTdWs8QPUZnzZugChwJIS3KJnGBb+SA49/XswFb5RbGayegr8L67HDjOdkcFH1npI1tXiNcLFyHZY8A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"grapheme-breaker": "0.3.2", "grapheme-breaker": "0.3.2",
@ -24112,7 +24076,7 @@
"minilog": "3.1.0", "minilog": "3.1.0",
"raw-loader": "^0.5.1", "raw-loader": "^0.5.1",
"scratch-storage": "^1.0.0", "scratch-storage": "^1.0.0",
"scratch-svg-renderer": "0.2.0-prerelease.20230224194137", "scratch-svg-renderer": "0.2.0-prerelease.20230710144521",
"twgl.js": "4.4.0" "twgl.js": "4.4.0"
}, },
"peerDependencies": { "peerDependencies": {
@ -24223,13 +24187,14 @@
} }
}, },
"node_modules/scratch-svg-renderer": { "node_modules/scratch-svg-renderer": {
"version": "0.2.0-prerelease.20230224194137", "version": "0.2.0-prerelease.20230710144521",
"resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230224194137.tgz", "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230710144521.tgz",
"integrity": "sha512-NhsWkc0ci5R7ZH9Z7j6crI69Oe9XtNlp4u+Q6bOoLicGHJBnNeDeD2/w2ySxiYnnhJI9KioByvAoOwxZnEA+0Q==", "integrity": "sha512-T+jmJGZWeBEAtIsV+6WpAzglANRaUJVxQLIKoD68VhD142l6XBf5WwHJiJkK9vysp6H24zchwTZwq3R34NF14Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"base64-js": "1.2.1", "base64-js": "1.2.1",
"base64-loader": "1.0.0", "base64-loader": "1.0.0",
"css-tree": "1.1.3",
"dompurify": "2.2.7", "dompurify": "2.2.7",
"fastestsmallesttextencoderdecoder": "^1.0.22", "fastestsmallesttextencoderdecoder": "^1.0.22",
"minilog": "3.1.0", "minilog": "3.1.0",
@ -24261,9 +24226,9 @@
"dev": true "dev": true
}, },
"node_modules/scratch-vm": { "node_modules/scratch-vm": {
"version": "1.5.76", "version": "1.5.90",
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.76.tgz", "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.90.tgz",
"integrity": "sha512-GawQ+5eddw9YtOgxlIjlIPmD/NVmiCRmHJy9EJIXwZdK5oedbFaZQKxKUigmmreG4XPd5twXVFtPykYZGhemWw==", "integrity": "sha512-YfxsYhF8pS9VJMJVGQdE17QU0B76Zm+HDeI+7bxqqrSSNbxylRPr4wJS8juTY2RJgiYQZ0ajAHBGB8cNk7+vIA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@vernier/godirect": "1.5.0", "@vernier/godirect": "1.5.0",

View file

@ -136,8 +136,8 @@
"regenerator-runtime": "0.13.9", "regenerator-runtime": "0.13.9",
"sass": "1.49.7", "sass": "1.49.7",
"sass-loader": "10.2.1", "sass-loader": "10.2.1",
"scratch-gui": "2.0.23-hotfix.2", "scratch-gui": "2.0.77",
"scratch-l10n": "3.15.20230627032203", "scratch-l10n": "3.15.20230718032211",
"selenium-webdriver": "4.1.0", "selenium-webdriver": "4.1.0",
"slick-carousel": "1.6.0", "slick-carousel": "1.6.0",
"style-loader": "0.12.3", "style-loader": "0.12.3",

View file

@ -7,6 +7,11 @@
padding: 0; padding: 0;
} }
html {
// Adjust target position to compensate for the floating top content
scroll-padding-top: calc(50px + 5rem); // nav bar + OS chooser
}
.extension-landing { .extension-landing {
&>div { &>div {
padding: 4rem 0; padding: 4rem 0;

View file

@ -13,7 +13,7 @@ const ExtensionTroubleshooting = props => {
}; };
return ( return (
<ExtensionSection className="faq"> <ExtensionSection className="faq">
<h2><FormattedMessage <h2 id="troubleshooting"><FormattedMessage
id="extensions.troubleshootingTitle" id="extensions.troubleshootingTitle"
values={sharedValues} values={sharedValues}
/></h2> /></h2>
@ -22,7 +22,7 @@ const ExtensionTroubleshooting = props => {
values={sharedValues} values={sharedValues}
/></h3> /></h3>
<p><FormattedMessage <p><FormattedMessage
id="extensions.browserCompatibilityText" id="extensions.browserCompatibilityText2"
values={sharedValues} values={sharedValues}
/></p> /></p>
{props.children} {props.children}

View file

@ -11,13 +11,13 @@ require('./extension-landing.scss');
// Assumes this will only be called with an OS that needs Scratch Link // Assumes this will only be called with an OS that needs Scratch Link
const InstallScratchLink = ({ const InstallScratchLink = ({
currentOS currentOS,
hideScratchLink
}) => ( }) => (
<div className="blue install-scratch-link"> <div className="blue install-scratch-link">
<FlexRow className="inner column"> <FlexRow className="inner column">
<h2><FormattedMessage id="installScratchLink.installHeaderTitle" /></h2> <h2><FormattedMessage id="installScratchLink.installHeaderTitle" /></h2>
<Steps> <Steps>
<div className="step">
<Step <Step
compact compact
number={1} number={1}
@ -55,16 +55,18 @@ const InstallScratchLink = ({
</a> </a>
</div> </div>
</Step> </Step>
</div>
<Step <Step
compact compact
number={2} number={2}
> >
<span className="step-description"> <span className="step-description">
<FormattedMessage id="installScratchLink.startScratchLink" /> <FormattedMessage
id={`installScratchLink.startScratchLink.${
currentOS === OS_ENUM.WINDOWS ? 'Windows' : 'macOS'
}`}
/>
</span> </span>
<div className="step-image"> <span className="step-image">
<img <img
alt="" alt=""
className="screenshot" className="screenshot"
@ -72,7 +74,45 @@ const InstallScratchLink = ({
currentOS === OS_ENUM.WINDOWS ? 'windows' : 'mac' currentOS === OS_ENUM.WINDOWS ? 'windows' : 'mac'
}-toolbar.png`} }-toolbar.png`}
/> />
</div> </span>
<p className="step-description"><FormattedMessage
id={`installScratchLink.startScratchLink2.${
currentOS === OS_ENUM.WINDOWS ? 'Windows' : 'macOS'
}`}
/></p>
</Step>
<Step
compact
number={3}
>
{!hideScratchLink && <span className="step-description">
<FormattedMessage
id="installScratchLink.learnMore.bodyText"
values={{
linkText: (
<a
href="/download/scratch-link"
rel="noopener noreferrer"
target="_blank"
>
<FormattedMessage id="installScratchLink.learnMore.linkText" />
</a>
)
}}
/>
</span>}
<span className="step-description">
<FormattedMessage
id="installScratchLink.ifYouHaveTrouble.bodyText"
values={{
linkText: (
<a
href="#troubleshooting"
><FormattedMessage id="installScratchLink.ifYouHaveTrouble.linkText" /></a>
)
}}
/>
</span>
</Step> </Step>
</Steps> </Steps>
</FlexRow> </FlexRow>
@ -80,7 +120,8 @@ const InstallScratchLink = ({
); );
InstallScratchLink.propTypes = { InstallScratchLink.propTypes = {
currentOS: PropTypes.string currentOS: PropTypes.string.isRequired,
hideScratchLink: PropTypes.bool
}; };
module.exports = InstallScratchLink; module.exports = InstallScratchLink;

View file

@ -48,11 +48,12 @@
box-sizing: border-box; box-sizing: border-box;
.step-image { .step-image {
height: 10rem; max-height: 10rem;
img { img {
width: auto; max-height: 10rem;
height: 100%; width: 100%;
height: auto;
} }
} }
} }

View file

@ -167,7 +167,14 @@
"installScratchLink.installHeaderTitle": "Install Scratch Link", "installScratchLink.installHeaderTitle": "Install Scratch Link",
"installScratchLink.downloadAndInstall": "Download and install Scratch Link.", "installScratchLink.downloadAndInstall": "Download and install Scratch Link.",
"installScratchLink.startScratchLink": "Start Scratch Link and make sure it is running. It should appear in your toolbar.", "installScratchLink.startScratchLink.macOS": "Start Scratch Link and make sure it is running. It should appear in your menu bar.",
"installScratchLink.startScratchLink.Windows": "Start Scratch Link and make sure it is running. It should appear in your notification area (system tray).",
"installScratchLink.startScratchLink2.macOS": "If it does not appear, run Scratch Link from your Applications folder.",
"installScratchLink.startScratchLink2.Windows": "If it does not appear, run Scratch Link from your Start menu.",
"installScratchLink.learnMore.bodyText": "To learn more about Scratch Link, click {linkText}.",
"installScratchLink.learnMore.linkText": "here",
"installScratchLink.ifYouHaveTrouble.bodyText": "If you have trouble, see the {linkText} for tips.",
"installScratchLink.ifYouHaveTrouble.linkText": "Troubleshooting section",
"parents.FaqAgeRangeA": "While Scratch is primarily designed for 8 to 16 year olds, it is also used by people of all ages, including younger children with their parents.", "parents.FaqAgeRangeA": "While Scratch is primarily designed for 8 to 16 year olds, it is also used by people of all ages, including younger children with their parents.",
"parents.FaqAgeRangeQ": "What is the age range for Scratch?", "parents.FaqAgeRangeQ": "What is the age range for Scratch?",
@ -440,7 +447,7 @@
"extensions.troubleshootingTitle": "Troubleshooting", "extensions.troubleshootingTitle": "Troubleshooting",
"extensions.browserCompatibilityTitle": "Make sure your browser is compatible with Scratch Link", "extensions.browserCompatibilityTitle": "Make sure your browser is compatible with Scratch Link",
"extensions.browserCompatibilityText": "Scratch Link 1.4 is not compatible with Safari. If you use macOS, please use another supported browser, such as Chrome or Firefox.", "extensions.browserCompatibilityText2": "Scratch Link 1.4 is not compatible with Safari. If you use Safari, please upgrade to Scratch Link 2.0.",
"extensions.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "extensions.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link",
"extensions.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", "extensions.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.",
"extensions.checkOsVersionText2": "If you are using macOS 12, please update to macOS 12.3 or newer. Earlier versions of macOS 12 do not work correctly with Scratch Link.", "extensions.checkOsVersionText2": "If you are using macOS 12, please update to macOS 12.3 or newer. Earlier versions of macOS 12 do not work correctly with Scratch Link.",
@ -453,5 +460,20 @@
"bluetooth.enableLocationServicesTitle": "Make sure you have location services enabled on Chromebooks or Android tablets", "bluetooth.enableLocationServicesTitle": "Make sure you have location services enabled on Chromebooks or Android tablets",
"bluetooth.enableLocationServicesText": "Bluetooth can be used to provide location data to the app. In addition to granting the Scratch App permission to access location, location must be enabled in your general device settings. Search for 'Location' in your settings, and make sure it is on. On Chromebooks search for 'Location' in the Google Play Store Android preferences.", "bluetooth.enableLocationServicesText": "Bluetooth can be used to provide location data to the app. In addition to granting the Scratch App permission to access location, location must be enabled in your general device settings. Search for 'Location' in your settings, and make sure it is on. On Chromebooks search for 'Location' in the Google Play Store Android preferences.",
"privacyBanner.update": "The Scratch privacy policy has been updated, effective May 25, 2023. You can see the new policy <a>here</a>." "privacyBanner.update": "The Scratch privacy policy has been updated, effective May 25, 2023. You can see the new policy <a>here</a>.",
"renameAccount.accountBlocked": "Account Blocked",
"renameAccount.toRecover": "To recover access to your account, change your username.",
"renameAccount.yourScratchAccount": "Your scratch account has been temporarily blocked because your username appears to contain personal information.",
"renameAccount.privacyIssue": "This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share",
"renameAccount.thingsToAvoid": "When creating a username, please remember to avoid using last names, school names, or other private information in your username.",
"renameAccount.yourScratchAccountInappropriate": "Your scratch account has been temporarily blocked because your username is not appropriate for Scratch.",
"renameAccount.scratchIsForKids": "Scratch is for kids ages 8 and up, and it's important to us that the Scratch website is a safe and friendly educational resource for everyone, but that's hard to achieve if users are choosing disrespectful or inappropriate usernames.",
"renameAccount.rememberToFollow": "When creating a username, please remember to follow the {communityGuidelinesLink}",
"renameAccount.CommunityGuidelines": "Community Guidelines",
"renameAccount.changeYourUsername": "Change your Username",
"renameAccount.makeSure": "Make sure the username you chose is aligned with {communityGuidelinesLink}",
"renameAccount.scratchsCommunityGuidelines": "Scratch's Community Guidelines",
"renameAccount.change": "Change",
"renameAccount.pastNotifications": "Here are your past admin notifications"
} }

View file

@ -1,3 +1,6 @@
/**
* @enum {string}
*/
const OS_ENUM = { const OS_ENUM = {
WINDOWS: 'Windows', WINDOWS: 'Windows',
MACOS: 'macOS', MACOS: 'macOS',

View file

@ -153,6 +153,7 @@ module.exports.selectIsLoggedIn = state => !!get(state, ['session', 'session', '
module.exports.selectUsername = state => get(state, ['session', 'session', 'user', 'username'], null); module.exports.selectUsername = state => get(state, ['session', 'session', 'user', 'username'], null);
module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null); module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null);
module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false); module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false);
module.exports.selectUser = state => get(state, ['session', 'session', 'user'], false);
module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false); module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false);
module.exports.selectIsEducator = state => get(state, ['session', 'session', 'permissions', 'educator'], false); module.exports.selectIsEducator = state => get(state, ['session', 'session', 'permissions', 'educator'], false);
module.exports.selectProjectCommentsGloballyEnabled = state => module.exports.selectProjectCommentsGloballyEnabled = state =>

View file

@ -89,7 +89,7 @@ const About = injectIntl(({intl}) => (
languageCount: 70, languageCount: 70,
translationLink: ( translationLink: (
<a <a
href="https://github.com/LLK/scratch-l10n/wiki/Guide-for-Scratch-Translators" href="https://github.com/scratchfoundation/scratch-l10n/wiki/Guide-for-Scratch-Translators"
rel="noreferrer noopener" rel="noreferrer noopener"
target="_blank" target="_blank"
> >

View file

@ -13,7 +13,7 @@ const manageLink = chunks => <a href="http://www.allaboutcookies.org/manage-cook
const googlePoliciesLink = chunks => <a href="https://www.google.com/policies/privacy/partners">{chunks}</a>; const googlePoliciesLink = chunks => <a href="https://www.google.com/policies/privacy/partners">{chunks}</a>;
const optOutLink = chunks => <a href="https://tools.google.com/dlpage/gaoptout">{chunks}</a>; const optOutLink = chunks => <a href="https://tools.google.com/dlpage/gaoptout">{chunks}</a>;
// When this page was last updated. See 'click Cookies link' in footer-links.test.js if you update this value. // When this page was last updated. See 'click Cookies link' in footer-links.test.js if you update this value.
const updated = new Date('2023-06-28T12:00:00.000-04:00'); const updated = new Date('2023-07-06T12:00:00.000-04:00');
require('./cookies.scss'); require('./cookies.scss');
@ -75,10 +75,10 @@ const Cookies = injectIntl(() => (
<td><FormattedMessage id="cookies.table.years.1" /></td> <td><FormattedMessage id="cookies.table.years.1" /></td>
</tr> </tr>
<tr> <tr>
<td>scratchsessionid</td> <td>scratchsessionsid</td>
<td><a href="/privacy_policy">Scratch</a></td> <td><a href="/privacy_policy">Scratch</a></td>
<td><FormattedMessage id="cookies.essential.sessionID" /></td> <td><FormattedMessage id="cookies.essential.sessionID" /></td>
<td><FormattedMessage id="cookies.table.session" /></td> <td><FormattedMessage id="cookies.table.weeks.2" /></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View file

@ -88,7 +88,7 @@ const Developers = () => (
</a> </a>
), ),
githubLink: ( githubLink: (
<a href="https://github.com/LLK/scratch-blocks"> <a href="https://github.com/scratchfoundation/scratch-blocks">
<FormattedMessage <FormattedMessage
id="developers.hereLinkText" id="developers.hereLinkText"
/> />
@ -115,7 +115,7 @@ const Developers = () => (
id="developers.wwwIntro" id="developers.wwwIntro"
values={{ values={{
wwwIntroLink: ( wwwIntroLink: (
<a href="https://github.com/LLK/scratch-www"> <a href="https://github.com/scratchfoundation/scratch-www">
GitHub GitHub
</a> </a>
) )
@ -143,7 +143,7 @@ const Developers = () => (
</a> </a>
), ),
githubLink: ( githubLink: (
<a href="https://github.com/LLK/scratchjr"> <a href="https://github.com/scratchfoundation/scratchjr">
GitHub GitHub
</a> </a>
) )
@ -361,7 +361,7 @@ const Developers = () => (
id="developers.faqCollabBody" id="developers.faqCollabBody"
values={{ values={{
githubLink: ( githubLink: (
<a href="https://github.com/LLK/">GitHub</a> <a href="https://github.com/scratchfoundation/">GitHub</a>
), ),
contactUsLink: ( contactUsLink: (
<a href="/contact-us"> <a href="/contact-us">

View file

@ -57,6 +57,7 @@ const ScratchLink = ({intl}) => {
/> />
{(isDownloaded(os)) && ( {(isDownloaded(os)) && (
<InstallScratchLink <InstallScratchLink
hideScratchLink
currentOS={os} currentOS={os}
/> />
)} )}

View file

@ -216,7 +216,7 @@ class Download extends React.Component {
/></p> /></p>
<p><FormattedMessage <p><FormattedMessage
id="download.otherVersionsAdminHTML" id="download.otherVersionsAdminHTML"
values={{a: chunks => <a href="http://llk.github.io/scratch-msi/">{chunks}</a>}} values={{a: chunks => <a href="http://scratchfoundation.github.io/scratch-msi/">{chunks}</a>}}
/></p> /></p>
</section> </section>

View file

@ -22,7 +22,7 @@
"download.otherVersionsTitle": "Other Versions of Scratch", "download.otherVersionsTitle": "Other Versions of Scratch",
"download.otherVersionsOlder": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing <a href=\"http://scratch.mit.edu/scratch_1.4/\">Scratch 1.4</a>.", "download.otherVersionsOlder": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing <a href=\"http://scratch.mit.edu/scratch_1.4/\">Scratch 1.4</a>.",
"download.otherVersionsOlderHTML": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing <a>Scratch 1.4</a>.", "download.otherVersionsOlderHTML": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing <a>Scratch 1.4</a>.",
"download.otherVersionsAdmin": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download <a href=\"http://llk.github.io/scratch-msi/\">here</a>.", "download.otherVersionsAdmin": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download <a href=\"http://scratchfoundation.github.io/scratch-msi/\">here</a>.",
"download.otherVersionsAdminHTML": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download <a>here</a>.", "download.otherVersionsAdminHTML": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download <a>here</a>.",
"download.knownIssuesTitle": "Known issues", "download.knownIssuesTitle": "Known issues",
"download.knownIssuesOne": "If your offline editor is crashing directly after Scratch is opened, install the Scratch 2 offline editor again (see step 2 above). This issue is due to a bug introduced in Adobe AIR version 14 (released April 2014).", "download.knownIssuesOne": "If your offline editor is crashing directly after Scratch is opened, install the Scratch 2 offline editor again (see step 2 above). This issue is due to a bug introduced in Adobe AIR version 14 (released April 2014).",

View file

@ -73,6 +73,7 @@ class EV3 extends ExtensionLanding {
/> />
{(isDownloaded(this.state.OS)) && ( {(isDownloaded(this.state.OS)) && (
<InstallScratchLink <InstallScratchLink
showEv3
currentOS={this.state.OS} currentOS={this.state.OS}
/> />
)} )}
@ -314,6 +315,12 @@ class EV3 extends ExtensionLanding {
/> />
</p> </p>
<p><FormattedMessage id="extensions.checkOsVersionText2" /></p> <p><FormattedMessage id="extensions.checkOsVersionText2" /></p>
<h3 className="faq-title"><FormattedMessage id="ev3.tryScratchLink1.4" /></h3>
<p><a
href={`https://downloads.scratch.mit.edu/link/scratch-link-${
this.state.OS === OS_ENUM.WINDOWS ? 'windows' : 'mac'
}-1.4.3.zip`}
><FormattedMessage id="ev3.downloadScratchLink1.4" /></a></p>
</React.Fragment> </React.Fragment>
)} )}
<h3 className="faq-title"><FormattedMessage id="ev3.makeSurePairedTitle" /></h3> <h3 className="faq-title"><FormattedMessage id="ev3.makeSurePairedTitle" /></h3>

View file

@ -28,6 +28,8 @@
"ev3.troubleshootingTitle": "Troubleshooting", "ev3.troubleshootingTitle": "Troubleshooting",
"ev3.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "ev3.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link",
"ev3.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", "ev3.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.",
"ev3.tryScratchLink1.4": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4",
"ev3.downloadScratchLink1.4": "Download Scratch Link 1.4",
"ev3.winOSVersionLinkText": "Windows", "ev3.winOSVersionLinkText": "Windows",
"ev3.macOSVersionLinkText": "macOS", "ev3.macOSVersionLinkText": "macOS",
"ev3.makeSurePairedTitle": "Make sure your computer is paired with your EV3", "ev3.makeSurePairedTitle": "Make sure your computer is paired with your EV3",