mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-23 15:47:53 -05:00
Merge pull request #6659 from LLK/develop
Update release branch to include develop
This commit is contained in:
commit
bb61a7413f
17 changed files with 445 additions and 82 deletions
154
package-lock.json
generated
154
package-lock.json
generated
|
@ -222,24 +222,24 @@
|
|||
}
|
||||
},
|
||||
"@babel/compat-data": {
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz",
|
||||
"integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==",
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
|
||||
"integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/core": {
|
||||
"version": "7.17.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz",
|
||||
"integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==",
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.7.tgz",
|
||||
"integrity": "sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@ampproject/remapping": "^2.1.0",
|
||||
"@babel/code-frame": "^7.16.7",
|
||||
"@babel/generator": "^7.17.3",
|
||||
"@babel/helper-compilation-targets": "^7.16.7",
|
||||
"@babel/helper-module-transforms": "^7.16.7",
|
||||
"@babel/helpers": "^7.17.2",
|
||||
"@babel/parser": "^7.17.3",
|
||||
"@babel/generator": "^7.17.7",
|
||||
"@babel/helper-compilation-targets": "^7.17.7",
|
||||
"@babel/helper-module-transforms": "^7.17.7",
|
||||
"@babel/helpers": "^7.17.7",
|
||||
"@babel/parser": "^7.17.7",
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.3",
|
||||
"@babel/types": "^7.17.0",
|
||||
|
@ -250,6 +250,23 @@
|
|||
"semver": "^6.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/generator": {
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
|
||||
"integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.17.0",
|
||||
"jsesc": "^2.5.1",
|
||||
"source-map": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz",
|
||||
"integrity": "sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA==",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
|
||||
|
@ -259,6 +276,12 @@
|
|||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"jsesc": {
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
||||
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
|
||||
"dev": true
|
||||
},
|
||||
"json5": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
|
||||
|
@ -279,6 +302,12 @@
|
|||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -308,12 +337,12 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-compilation-targets": {
|
||||
"version": "7.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz",
|
||||
"integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==",
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
|
||||
"integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/compat-data": "^7.16.4",
|
||||
"@babel/compat-data": "^7.17.7",
|
||||
"@babel/helper-validator-option": "^7.16.7",
|
||||
"browserslist": "^4.17.5",
|
||||
"semver": "^6.3.0"
|
||||
|
@ -375,14 +404,14 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.17.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz",
|
||||
"integrity": "sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==",
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
|
||||
"integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-environment-visitor": "^7.16.7",
|
||||
"@babel/helper-module-imports": "^7.16.7",
|
||||
"@babel/helper-simple-access": "^7.16.7",
|
||||
"@babel/helper-simple-access": "^7.17.7",
|
||||
"@babel/helper-split-export-declaration": "^7.16.7",
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
"@babel/template": "^7.16.7",
|
||||
|
@ -397,12 +426,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"@babel/helper-simple-access": {
|
||||
"version": "7.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz",
|
||||
"integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==",
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
|
||||
"integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.16.7"
|
||||
"@babel/types": "^7.17.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-split-export-declaration": {
|
||||
|
@ -427,13 +456,13 @@
|
|||
"dev": true
|
||||
},
|
||||
"@babel/helpers": {
|
||||
"version": "7.17.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz",
|
||||
"integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==",
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.7.tgz",
|
||||
"integrity": "sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.0",
|
||||
"@babel/traverse": "^7.17.3",
|
||||
"@babel/types": "^7.17.0"
|
||||
}
|
||||
},
|
||||
|
@ -19363,21 +19392,21 @@
|
|||
}
|
||||
},
|
||||
"scratch-blocks": {
|
||||
"version": "0.1.0-prerelease.20220308054435",
|
||||
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20220308054435.tgz",
|
||||
"integrity": "sha512-g6x/j+GV9B3zhQIvsbg2P6sPVLYfaSv6ZjQBcB8FcZ2+Wz1iHXcw9ZB4IdwbKfUa6Dqr/YG2HMW5GVB41tlpkg==",
|
||||
"version": "0.1.0-prerelease.20220315091134",
|
||||
"resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20220315091134.tgz",
|
||||
"integrity": "sha512-DoKku/tbqumnlJwFmx79xyq1fuIMeGafw3bFHZU3hEknqRNy7gRZpP94V8WHymOwHgY/Ma1FXI7ESxw609sp9w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"exports-loader": "0.6.3",
|
||||
"google-closure-library": "20190301.0.0",
|
||||
"imports-loader": "0.6.5",
|
||||
"scratch-l10n": "3.14.20220308031538"
|
||||
"scratch-l10n": "3.14.20220315031541"
|
||||
},
|
||||
"dependencies": {
|
||||
"scratch-l10n": {
|
||||
"version": "3.14.20220308031538",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220308031538.tgz",
|
||||
"integrity": "sha512-ld5JXIqowC4tzsMiDq24YjP+FqsrAdDGzJzQOPGpjL2l6z6Bruzu6QA/nLmsh2ByABrKVI5uYGOhRnqq8EwNzQ==",
|
||||
"version": "3.14.20220315031541",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220315031541.tgz",
|
||||
"integrity": "sha512-1FB9vUkAlSOrkUEZEJMekTz7AvMsqwr0RkRT8gLKXkLTw7T3Q16X4cTHxSC5EOUeR+NaCjkGZJzSgUVIy6Tm9w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/cli": "^7.1.2",
|
||||
|
@ -19389,9 +19418,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-gui": {
|
||||
"version": "0.1.0-prerelease.20220309063427",
|
||||
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20220309063427.tgz",
|
||||
"integrity": "sha512-tyeUH/48CZs0kClxtW3OTXdd4gyoyvp83MDlqd0p7/AKCWxMyMnhEOi7CcA25KzknJtOYAhvRTK6a/vZkZL0FA==",
|
||||
"version": "0.1.0-prerelease.20220315192901",
|
||||
"resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20220315192901.tgz",
|
||||
"integrity": "sha512-lN7nQfxfMS845fXCtfB4zm3j3ZSPpxPMi3LBxeSwYPTduAuF7+UImUkLRf8aVMepKCSFuU/qqVDLI5KPlsgfWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"arraybuffer-loader": "^1.0.6",
|
||||
|
@ -19442,14 +19471,14 @@
|
|||
"redux": "3.7.2",
|
||||
"redux-throttle": "0.1.1",
|
||||
"scratch-audio": "0.1.0-prerelease.20200528195344",
|
||||
"scratch-blocks": "0.1.0-prerelease.20220308054435",
|
||||
"scratch-l10n": "3.14.20220309031549",
|
||||
"scratch-paint": "0.2.0-prerelease.20211027080909",
|
||||
"scratch-blocks": "0.1.0-prerelease.20220315091134",
|
||||
"scratch-l10n": "3.14.20220315031541",
|
||||
"scratch-paint": "0.2.0-prerelease.20220315113214",
|
||||
"scratch-render": "0.1.0-prerelease.20211028200436",
|
||||
"scratch-render-fonts": "1.0.0-prerelease.20210401210003",
|
||||
"scratch-storage": "1.3.5",
|
||||
"scratch-svg-renderer": "0.2.0-prerelease.20210727023023",
|
||||
"scratch-vm": "0.2.0-prerelease.20220308092939",
|
||||
"scratch-vm": "0.2.0-prerelease.20220315115545",
|
||||
"startaudiocontext": "1.2.1",
|
||||
"style-loader": "^0.23.0",
|
||||
"text-encoding": "0.7.0",
|
||||
|
@ -19686,6 +19715,18 @@
|
|||
"symbol-observable": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"scratch-l10n": {
|
||||
"version": "3.14.20220315031541",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220315031541.tgz",
|
||||
"integrity": "sha512-1FB9vUkAlSOrkUEZEJMekTz7AvMsqwr0RkRT8gLKXkLTw7T3Q16X4cTHxSC5EOUeR+NaCjkGZJzSgUVIy6Tm9w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/cli": "^7.1.2",
|
||||
"@babel/core": "^7.1.2",
|
||||
"babel-plugin-react-intl": "^3.0.1",
|
||||
"transifex": "1.6.6"
|
||||
}
|
||||
},
|
||||
"scratch-storage": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/scratch-storage/-/scratch-storage-1.3.5.tgz",
|
||||
|
@ -19746,9 +19787,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-l10n": {
|
||||
"version": "3.14.20220309031549",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220309031549.tgz",
|
||||
"integrity": "sha512-HIPpXcZiJe3Ap9IDAReBMBlpTR2aMHKrPujN7CzJJ7u8Ka3iwh6C7SX2j9TmuwvfmatD6vUaDgQ2bc2FC7P0oQ==",
|
||||
"version": "3.14.20220316031548",
|
||||
"resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220316031548.tgz",
|
||||
"integrity": "sha512-9v8Qfhym+bKh/9CL4S+XuRZ2Bl7ehUjztoAjKONDxBM/y8A1K11efKfhPLsSOd0Ww6PYOIvqsR36D47z7TRFIg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/cli": "^7.1.2",
|
||||
|
@ -19758,9 +19799,9 @@
|
|||
}
|
||||
},
|
||||
"scratch-paint": {
|
||||
"version": "0.2.0-prerelease.20211027080909",
|
||||
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20211027080909.tgz",
|
||||
"integrity": "sha512-Kgzr9hEE0AYCnMPvs5rhKx3S+h78+HMe0IDoTuEQWG/EyilEeQkITwymkK59ndnsxf0gfQd4pkUi2UjdHQqpBQ==",
|
||||
"version": "0.2.0-prerelease.20220315113214",
|
||||
"resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20220315113214.tgz",
|
||||
"integrity": "sha512-Z9kI6SzcYwTMWj5icHQ4XdDOhd3PUUv+s7Gw1WVwdigrivW7oNz574W0cC3KsWH41HKD21pBsixIRuqaJOKCzg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@scratch/paper": "0.11.20200728195508",
|
||||
|
@ -19770,7 +19811,7 @@
|
|||
"lodash.omit": "4.5.0",
|
||||
"minilog": "3.1.0",
|
||||
"parse-color": "1.0.0",
|
||||
"prop-types": "^15.5.10"
|
||||
"prop-types": "^15.8.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"lodash.omit": {
|
||||
|
@ -19793,6 +19834,17 @@
|
|||
"requires": {
|
||||
"microee": "0.0.6"
|
||||
}
|
||||
},
|
||||
"prop-types": {
|
||||
"version": "15.8.1",
|
||||
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
||||
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"loose-envify": "^1.4.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"react-is": "^16.13.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -19977,9 +20029,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"scratch-vm": {
|
||||
"version": "0.2.0-prerelease.20220308092939",
|
||||
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20220308092939.tgz",
|
||||
"integrity": "sha512-QhnOZwg1fX57fPykm9XDwIoNUTbAlMHEkilyXgWRfU0PpRyb7qWh/TIwJOxMyp4kCyiYImcKoPtep9z7B8O/qw==",
|
||||
"version": "0.2.0-prerelease.20220315115545",
|
||||
"resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20220315115545.tgz",
|
||||
"integrity": "sha512-PJWSFbCo4PFh6PTFVpj0Fqjsv2ciRSqirAOvvezGLZZjn8pVK6IRcAgt8T/6wRWkRqHLNpu3RW7YGWP/0PWtug==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vernier/godirect": "1.5.0",
|
||||
|
|
|
@ -134,8 +134,8 @@
|
|||
"regenerator-runtime": "0.13.9",
|
||||
"sass": "1.49.7",
|
||||
"sass-loader": "10.2.1",
|
||||
"scratch-gui": "0.1.0-prerelease.20220309063427",
|
||||
"scratch-l10n": "3.14.20220309031549",
|
||||
"scratch-gui": "0.1.0-prerelease.20220315192901",
|
||||
"scratch-l10n": "3.14.20220316031548",
|
||||
"selenium-webdriver": "4.1.0",
|
||||
"slick-carousel": "1.6.0",
|
||||
"style-loader": "0.12.3",
|
||||
|
|
|
@ -2,6 +2,8 @@ const FormattedMessage = require('react-intl').FormattedMessage;
|
|||
const injectIntl = require('react-intl').injectIntl;
|
||||
const intlShape = require('react-intl').intlShape;
|
||||
const React = require('react');
|
||||
const PropTypes = require('prop-types');
|
||||
|
||||
|
||||
const FlexRow = require('../../../flex-row/flex-row.jsx');
|
||||
const FooterBox = require('../../container/footer.jsx');
|
||||
|
@ -145,14 +147,15 @@ const ConferenceFooter = props => (
|
|||
</div>
|
||||
</FlexRow>
|
||||
<LanguageChooser locale={props.intl.locale} />
|
||||
<div className="conf2021-organized">
|
||||
<FormattedMessage id="conference-2021.organizedBy" />
|
||||
<div className="organized-by-message">
|
||||
<FormattedMessage id={props.organizedByMsgId} />
|
||||
</div>
|
||||
</FooterBox>
|
||||
);
|
||||
|
||||
ConferenceFooter.propTypes = {
|
||||
intl: intlShape
|
||||
intl: intlShape,
|
||||
organizedByMsgId: PropTypes.string
|
||||
};
|
||||
|
||||
module.exports = injectIntl(ConferenceFooter);
|
||||
|
|
|
@ -168,4 +168,12 @@
|
|||
.language-chooser {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.organized-by-message {
|
||||
font-size: .875rem;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
padding: 1rem 0 2.5rem;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,13 +15,16 @@ const Page = props => (
|
|||
{props.children}
|
||||
</div>
|
||||
<div id="footer">
|
||||
<Footer />
|
||||
<Footer
|
||||
organizedByMsgId={props.footerOrganizedByMsgId}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Page.propTypes = {
|
||||
children: PropTypes.node
|
||||
children: PropTypes.node,
|
||||
footerOrganizedByMsgId: PropTypes.string
|
||||
};
|
||||
|
||||
module.exports = Page;
|
||||
|
|
|
@ -144,6 +144,8 @@ module.exports.selectProjectCommentsGloballyEnabled = state =>
|
|||
get(state, ['session', 'session', 'flags', 'project_comments_enabled'], false);
|
||||
module.exports.selectStudioCommentsGloballyEnabled = state =>
|
||||
get(state, ['session', 'session', 'flags', 'gallery_comments_enabled'], false);
|
||||
module.exports.selectIsTotallyNormal = state =>
|
||||
get(state, ['session', 'session', 'flags', 'everything_is_totally_normal'], false);
|
||||
module.exports.selectMuteStatus = state => get(state, ['session', 'session', 'permissions', 'mute_status'],
|
||||
{muteExpiresAt: 0, offenses: [], showWarning: false});
|
||||
module.exports.selectIsMuted = state => (module.exports.selectMuteStatus(state).muteExpiresAt || 0) * 1000 > Date.now();
|
||||
|
|
|
@ -40,13 +40,13 @@
|
|||
{
|
||||
"name": "conference-index",
|
||||
"pattern": "^/conference/?(\\?.*)?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"redirect": "/conference/2021"
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"redirect": "/conference/2022"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2017",
|
||||
"pattern": "^/conference/2017/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2017/index/index",
|
||||
"title": "Scratch Conference",
|
||||
"viewportWidth": "device-width"
|
||||
|
@ -54,21 +54,21 @@
|
|||
{
|
||||
"name": "conference-details-2018",
|
||||
"pattern": "^/conference/2018/:id/details/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2018/details/details",
|
||||
"title": "Event Details"
|
||||
},
|
||||
{
|
||||
"name": "conference-expectations-2018",
|
||||
"pattern": "^/conference/2018/expect/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2018/expect/expect",
|
||||
"title": "What to Expect"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2018",
|
||||
"pattern": "^/conference/2018/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2018/index/index",
|
||||
"title": "Scratch Conference",
|
||||
"viewportWidth": "device-width"
|
||||
|
@ -76,21 +76,21 @@
|
|||
{
|
||||
"name": "conference-plan-2018",
|
||||
"pattern": "^/conference/2018/plan/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2018/plan/plan",
|
||||
"title": "Plan Your Visit"
|
||||
},
|
||||
{
|
||||
"name": "conference-schedule-2018",
|
||||
"pattern": "^/conference/2018/schedule/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2018/schedule/schedule",
|
||||
"title": "Conference Schedule"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2019",
|
||||
"pattern": "^/conference/2019/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2019/index/index",
|
||||
"title": "Scratch Conferences",
|
||||
"viewportWidth": "device-width"
|
||||
|
@ -98,17 +98,25 @@
|
|||
{
|
||||
"name": "conference-index-2020",
|
||||
"pattern": "^/conference/2020/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"redirect": "/conference/2021"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2021",
|
||||
"pattern": "^/conference/2021/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2021/index/index",
|
||||
"title": "Scratch Conferences",
|
||||
"viewportWidth": "device-width"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2022",
|
||||
"pattern": "^/conference/2022/?$",
|
||||
"routeAlias": "/conference(?!/20[1-2][0-9])",
|
||||
"view": "conference/2022/index/index",
|
||||
"title": "Scratch Conferences",
|
||||
"viewportWidth": "device-width"
|
||||
},
|
||||
{
|
||||
"name": "connect",
|
||||
"pattern": "^/connect/?$",
|
||||
|
|
|
@ -93,4 +93,7 @@ const ConferenceSplash = () => (
|
|||
</div>
|
||||
);
|
||||
|
||||
render(<Page><ConferenceSplash /></Page>, document.getElementById('app'));
|
||||
render(
|
||||
<Page
|
||||
footerOrganizedByMsgId="conference-2021.organizedBy"
|
||||
><ConferenceSplash /></Page>, document.getElementById('app'));
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
.title-banner-image.mod-2021 {
|
||||
opacity: .75;
|
||||
margin-bottom: 1.75rem;
|
||||
background-image: url("/images/conference/index/2021/title-banner.jpg");
|
||||
background-image: url("/images/conference/index/shared/title-banner.jpg");
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
width: 100%;
|
||||
|
@ -76,13 +76,6 @@ td {
|
|||
text-align: center;
|
||||
color: $type-white;
|
||||
}
|
||||
.conf2021-organized {
|
||||
font-size: .875rem;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
padding: 1rem 0 2.5rem;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $mobile - 1) {
|
||||
.index.mod-2021 {
|
||||
|
|
95
src/views/conference/2022/index/index.jsx
Normal file
95
src/views/conference/2022/index/index.jsx
Normal file
|
@ -0,0 +1,95 @@
|
|||
const FormattedDate = require('react-intl').FormattedDate;
|
||||
const FormattedMessage = require('react-intl').FormattedMessage;
|
||||
const React = require('react');
|
||||
const render = require('../../../../lib/render.jsx');
|
||||
|
||||
// Using the 2021 page on purpose here since the layout of the page is the same
|
||||
const Page = require('../../../../components/page/conference/2021/page.jsx');
|
||||
const TitleBanner = require('../../../../components/title-banner/title-banner.jsx');
|
||||
|
||||
require('../../../../components/forms/button.scss');
|
||||
require('./index.scss');
|
||||
|
||||
const ConferenceSplash = () => (
|
||||
<div className="index mod-2022">
|
||||
<TitleBanner className="mod-conference mod-2022">
|
||||
<div className="title-banner-image mod-2022" />
|
||||
<h1 className="title-banner-h1 mod-2022">
|
||||
<center>
|
||||
<FormattedMessage id="conference-2022.title" />
|
||||
</center>
|
||||
</h1>
|
||||
<h3 className="title-banner-h3 mod-2022">
|
||||
<FormattedMessage id="conference-2022.dateDesc" />
|
||||
</h3>
|
||||
</TitleBanner>
|
||||
<div className="inner">
|
||||
<section className="conf2022-panel mod-desc">
|
||||
<p className="conf2022-panel-desc">
|
||||
<FormattedMessage id="conference-2022.desc1" />{' '}
|
||||
<strong><FormattedMessage id="conference-2022.desc1a" /></strong>
|
||||
<br />
|
||||
<br />
|
||||
<FormattedMessage id="conference-2022.desc3" />
|
||||
</p>
|
||||
<table className="conf2022-panel-details">
|
||||
<tbody>
|
||||
<tr className="conf2022-panel-row">
|
||||
<td className="conf2022-panel-row-icon">
|
||||
<img
|
||||
alt="Calendar Icon"
|
||||
className="conf2022-panel-row-icon-image"
|
||||
src="/svgs/conference/index/calendar-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2022.date" /></td>
|
||||
<td>
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2022, 6, 22)}
|
||||
year="numeric"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr className="conf2022-panel-row">
|
||||
<td className="conf2022-panel-row-icon">
|
||||
<img
|
||||
alt="Map Icon"
|
||||
className="conf2022-panel-row-icon-image"
|
||||
src="/svgs/conference/index/map-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2022.location" /></td>
|
||||
<td><FormattedMessage id="conference-2022.locationDetails" /></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<center>
|
||||
<FormattedMessage id="conference-2022.register" />
|
||||
</center>
|
||||
|
||||
</section>
|
||||
<section className="conf2022-panel mod-stay">
|
||||
<p className="conf2022-panel-desc">
|
||||
<FormattedMessage
|
||||
id="conference-2022.stayDesc2"
|
||||
values={{
|
||||
emailLink: <a href="mailto:conference@scratch.mit.edu">
|
||||
conference@scratch.mit.edu
|
||||
</a>
|
||||
}}
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<FormattedMessage id="conference-2022.organizedBy" />
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
render(
|
||||
<Page
|
||||
footerOrganizedByMsgId="conference-2022.organizedBy"
|
||||
><ConferenceSplash /></Page>, document.getElementById('app'));
|
170
src/views/conference/2022/index/index.scss
Normal file
170
src/views/conference/2022/index/index.scss
Normal file
|
@ -0,0 +1,170 @@
|
|||
@import "../../../../colors";
|
||||
@import "../../../../frameless";
|
||||
|
||||
.title-banner.mod-conference.mod-2022 {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2022 {
|
||||
opacity: .75;
|
||||
margin-bottom: 1.75rem;
|
||||
background-image: url("/images/conference/index/shared/title-banner.jpg");
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
width: 100%;
|
||||
height: 20rem;
|
||||
}
|
||||
|
||||
.title-banner-h1.mod-2022 {
|
||||
line-height: 1.25em;
|
||||
}
|
||||
|
||||
.conf2022-panel,
|
||||
.title-banner-h3.mod-2022 {
|
||||
width: 48.75rem;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2022 {
|
||||
margin: 2rem auto 0;
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2022 {
|
||||
text-align: center;
|
||||
color: $type-white;
|
||||
}
|
||||
|
||||
.conf2022-panel {
|
||||
border-bottom: 1px solid $ui-border;
|
||||
}
|
||||
|
||||
.conf2022-panel.mod-last {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.flex-row.conf2022-panel-title {
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.conf2022-panel-desc {
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
section {
|
||||
padding-top: 3rem;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: .75rem 1.25rem;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.conf2022-panel-row-icon-image {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
.mod-registration .conf2022-panel-desc {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.button.mod-2022-panel {
|
||||
display: block;
|
||||
margin: 2rem auto 0;
|
||||
background-color: $ui-orange;
|
||||
padding: 1rem 0;
|
||||
width: 13.75rem;
|
||||
text-align: center;
|
||||
color: $type-white;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: $mobile - 1) {
|
||||
.index.mod-2022 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2022 {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
.conf2022-panel,
|
||||
.title-banner-h3.mod-2022 {
|
||||
width: initial;
|
||||
}
|
||||
|
||||
.conf2022-panel {
|
||||
margin: auto .5rem;
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2022 {
|
||||
margin: 1rem .5rem .5rem;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.flex-row.conf2022-panel-title {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.conf2022-panel-title-text {
|
||||
max-width: 14rem;
|
||||
}
|
||||
|
||||
.conf2022-panel-row > td {
|
||||
padding: .75rem .375rem .75rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: $mobile) and (max-width: $tabletPortrait - 1) {
|
||||
.index.mod-2022 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2022 {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
.conf2022-panel,
|
||||
.title-banner-h3.mod-2022 {
|
||||
margin: auto .5rem ;
|
||||
width: initial;
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2022 {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.flex-row.conf2022-panel-title {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.conf2022-panel-title-text {
|
||||
max-width: 18.75rem;
|
||||
}
|
||||
|
||||
.button.mod-2022-panel {
|
||||
width: 5.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: $tabletPortrait) and (max-width: $desktop - 1) {
|
||||
.index.mod-2022 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2022 {
|
||||
height: 15rem;
|
||||
}
|
||||
|
||||
.conf2022-panel,
|
||||
.title-banner-h3.mod-2022 {
|
||||
margin: auto;
|
||||
width: 38.75rem;
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2022 {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.button.mod-2022-panel {
|
||||
width: 8.75rem;
|
||||
}
|
||||
}
|
18
src/views/conference/2022/index/l10n.json
Normal file
18
src/views/conference/2022/index/l10n.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"conference-2022.title": "Scratch Conference 2022",
|
||||
"conference-2022.subtitle": "An Online Conference",
|
||||
"conference-2022.dateDesc": "July 21, 2022",
|
||||
"conference-2022.locationDetails": "Online",
|
||||
|
||||
"conference-2022.date": "When:",
|
||||
"conference-2022.location": "Where:",
|
||||
|
||||
"conference-2022.desc1": "Join us for Scratch Conference 2022, an online gathering for educators interested in creative learning with Scratch! This year's theme will be \"What will you create?\"",
|
||||
"conference-2022.desc1a": "Although we are not able to meet in person this year, we are excited to find ways to connect and share with others in the global Scratch educator community.",
|
||||
"conference-2022.desc3": "The conference will be free of charge.",
|
||||
|
||||
"conference-2022.register": "Stay tuned for registration information!",
|
||||
|
||||
"conference-2022.stayDesc2": "For additional questions, contact the Scratch Conference Team at {emailLink}",
|
||||
"conference-2022.organizedBy": "The Scratch Conference is organized by the Scratch Foundation."
|
||||
}
|
|
@ -722,6 +722,7 @@ PreviewPresentation.propTypes = {
|
|||
favoriteCount: PropTypes.number,
|
||||
intl: intlShape,
|
||||
isAdmin: PropTypes.bool,
|
||||
isTotallyNormal: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types
|
||||
isFullScreen: PropTypes.bool,
|
||||
isLoggedIn: PropTypes.bool,
|
||||
isNewScratcher: PropTypes.bool,
|
||||
|
|
|
@ -27,7 +27,7 @@ const NotAvailable = require('../../components/not-available/not-available.jsx')
|
|||
const Meta = require('./meta.jsx');
|
||||
|
||||
const sessionActions = require('../../redux/session.js');
|
||||
import {selectProjectCommentsGloballyEnabled} from '../../redux/session';
|
||||
import {selectProjectCommentsGloballyEnabled, selectIsTotallyNormal} from '../../redux/session';
|
||||
const navigationActions = require('../../redux/navigation.js');
|
||||
const previewActions = require('../../redux/preview.js');
|
||||
const projectCommentActions = require('../../redux/project-comment-actions.js');
|
||||
|
@ -930,6 +930,7 @@ Preview.propTypes = {
|
|||
handleUpdateProjectThumbnail: PropTypes.func,
|
||||
isAdmin: PropTypes.bool,
|
||||
isEditable: PropTypes.bool,
|
||||
isTotallyNormal: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types
|
||||
isLoggedIn: PropTypes.bool,
|
||||
isProjectCommentsGloballyEnabled: PropTypes.bool,
|
||||
isNewScratcher: PropTypes.bool,
|
||||
|
@ -1019,7 +1020,8 @@ const mapStateToProps = state => {
|
|||
const showEmailConfirmationBanner = state.session.session.flags &&
|
||||
state.session.session.flags.has_outstanding_email_confirmation &&
|
||||
state.session.session.flags.confirm_email_banner;
|
||||
|
||||
const isTotallyNormal = state.session.session.flags && selectIsTotallyNormal(state);
|
||||
|
||||
// if we don't have projectInfo, assume it's shared until we know otherwise
|
||||
const isShared = !projectInfoPresent || state.preview.projectInfo.is_published;
|
||||
|
||||
|
@ -1046,6 +1048,7 @@ const mapStateToProps = state => {
|
|||
// project is editable iff logged in user is the author of the project, or
|
||||
// logged in user is an admin.
|
||||
isEditable: isEditable,
|
||||
isTotallyNormal: isTotallyNormal,
|
||||
isLoggedIn: isLoggedIn,
|
||||
isAdmin: isAdmin,
|
||||
isNewScratcher: isLoggedIn && state.permissions.new_scratcher,
|
||||
|
|
|
@ -15,6 +15,8 @@ const Select = require('../../components/forms/select.jsx');
|
|||
const TitleBanner = require('../../components/title-banner/title-banner.jsx');
|
||||
const Tabs = require('../../components/tabs/tabs.jsx');
|
||||
|
||||
import {selectIsTotallyNormal} from '../../redux/session';
|
||||
|
||||
const Page = require('../../components/page/www/page.jsx');
|
||||
const render = require('../../lib/render.jsx');
|
||||
|
||||
|
@ -258,11 +260,13 @@ class Search extends React.Component {
|
|||
Search.propTypes = {
|
||||
dispatch: PropTypes.func,
|
||||
intl: intlShape,
|
||||
isTotallyNormal: PropTypes.bool, // eslint-disable-line react/no-unused-prop-types
|
||||
searchTerm: PropTypes.string
|
||||
};
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
searchTerm: state.navigation.searchTerm
|
||||
searchTerm: state.navigation.searchTerm,
|
||||
isTotallyNormal: selectIsTotallyNormal(state)
|
||||
});
|
||||
|
||||
const WrappedSearch = injectIntl(Search);
|
||||
|
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
@ -136,7 +136,7 @@ describe('www-integration footer links', () => {
|
|||
await clickText('Scratch Conference');
|
||||
let url = await driver.getCurrentUrl();
|
||||
let pathname = (new URL(url)).pathname;
|
||||
expect(pathname).toMatch(/^\/conference\/2021\/?$/);
|
||||
expect(pathname).toMatch(/^\/conference\/2022\/?$/);
|
||||
});
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue