Merge pull request #2811 from LLK/release/02-28-2019
[Master] Release 02/28/2019
|
@ -98,7 +98,7 @@
|
|||
"react-responsive": "3.0.0",
|
||||
"react-slick": "0.16.0",
|
||||
"react-string-replace": "0.4.1",
|
||||
"scratch-gui": "0.1.0-prerelease.20190215143519",
|
||||
"scratch-gui": "0.1.0-prerelease.20190228140239",
|
||||
"react-telephone-input": "4.3.4",
|
||||
"redux": "3.5.2",
|
||||
"redux-thunk": "2.0.1",
|
||||
|
|
121
src/components/footer/conference/2019/footer.jsx
Normal file
|
@ -0,0 +1,121 @@
|
|||
const injectIntl = require('react-intl').injectIntl;
|
||||
const intlShape = require('react-intl').intlShape;
|
||||
const FormattedMessage = require('react-intl').FormattedMessage;
|
||||
const React = require('react');
|
||||
|
||||
const FlexRow = require('../../../flex-row/flex-row.jsx');
|
||||
const FooterBox = require('../../container/footer.jsx');
|
||||
const LanguageChooser = require('../../../languagechooser/languagechooser.jsx');
|
||||
|
||||
require('../footer.scss');
|
||||
|
||||
const ConferenceFooter = props => (
|
||||
<FooterBox>
|
||||
<FlexRow className="scratch-links">
|
||||
<div className="family">
|
||||
<h4><FormattedMessage id="footer.scratchFamily" /></h4>
|
||||
<FlexRow>
|
||||
<FlexRow
|
||||
as="ul"
|
||||
className="column"
|
||||
>
|
||||
<li>
|
||||
<a href="https://scratch.mit.edu">Scratch</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.scratchjr.org/">ScratchJr</a>
|
||||
</li>
|
||||
</FlexRow>
|
||||
<FlexRow
|
||||
as="ul"
|
||||
className="column"
|
||||
>
|
||||
<li>
|
||||
<a href="http://www.scratchfoundation.org/">Scratch Foundation</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://scratched.gse.harvard.edu/">ScratchEd</a>
|
||||
</li>
|
||||
</FlexRow>
|
||||
<FlexRow
|
||||
as="ul"
|
||||
className="column"
|
||||
>
|
||||
<li>
|
||||
<a href="http://day.scratch.mit.edu">Scratch Day</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://sip.scratch.mit.edu">Scratch In Practice</a>
|
||||
</li>
|
||||
</FlexRow>
|
||||
</FlexRow>
|
||||
<p className="legal">
|
||||
<FormattedMessage id="general.copyrightDraft" />
|
||||
</p>
|
||||
</div>
|
||||
<div className="media">
|
||||
<div className="contact-us">
|
||||
<h4>
|
||||
<FormattedMessage id="general.contact" />
|
||||
</h4>
|
||||
<p>
|
||||
<a href="mailto:help@scratch.mit.edu">
|
||||
<FormattedMessage id="general.emailUs" />
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div className="social">
|
||||
<FlexRow as="ul">
|
||||
<li>
|
||||
<a href="//www.twitter.com/scratch">
|
||||
<img
|
||||
alt="scratch twitter"
|
||||
src="/images/conference/footer/twitter.png"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="//www.facebook.com/scratchteam">
|
||||
<img
|
||||
alt="scratch facebook"
|
||||
src="/images/conference/footer/facebook.png"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://medium.com/scratchteam-blog">
|
||||
<img
|
||||
alt="scratch foundation blog"
|
||||
src="/images/conference/footer/medium.png"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://www.instagram.com/mitscratchteam/">
|
||||
<img
|
||||
alt="scratch instagram"
|
||||
src="/images/conference/footer/instagram.png"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://scratch-foundation.myshopify.com/ ">
|
||||
<img
|
||||
alt="scratch shopify"
|
||||
src="/images/conference/footer/shopify-white.svg"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
</FlexRow>
|
||||
</div>
|
||||
</div>
|
||||
</FlexRow>
|
||||
<LanguageChooser locale={props.intl.locale} />
|
||||
</FooterBox>
|
||||
);
|
||||
|
||||
ConferenceFooter.propTypes = {
|
||||
intl: intlShape
|
||||
};
|
||||
|
||||
module.exports = injectIntl(ConferenceFooter);
|
|
@ -57,7 +57,7 @@
|
|||
}
|
||||
|
||||
.family {
|
||||
width: $cols8;
|
||||
width: $cols6;
|
||||
|
||||
.flex-row {
|
||||
justify-content: space-between;
|
||||
|
@ -74,7 +74,7 @@
|
|||
}
|
||||
|
||||
.media {
|
||||
width: $cols3;
|
||||
width: $cols4;
|
||||
text-align: center;
|
||||
|
||||
.contact-us {
|
||||
|
|
38
src/components/navigation/conference/2019/navigation.jsx
Normal file
|
@ -0,0 +1,38 @@
|
|||
const injectIntl = require('react-intl').injectIntl;
|
||||
const React = require('react');
|
||||
const FormattedMessage = require('react-intl').FormattedMessage;
|
||||
|
||||
const NavigationBox = require('../../base/navigation.jsx');
|
||||
|
||||
require('./navigation.scss');
|
||||
|
||||
const Navigation = () => (
|
||||
<NavigationBox>
|
||||
<ul className="ul mod-2019">
|
||||
<li className="li-left mod-logo mod-2019">
|
||||
<a
|
||||
className="logo-a"
|
||||
href="https://scratch.mit.edu"
|
||||
>
|
||||
<img
|
||||
alt="Scratch Logo"
|
||||
className="logo-a-image"
|
||||
src="/images/logo_sm.png"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
<li className="li-left mod-logo mod-2019">
|
||||
<a
|
||||
className="logo-a"
|
||||
href="/conference/2019"
|
||||
>
|
||||
<p className="logo-a-title">
|
||||
<FormattedMessage id="general.conferences" />
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</NavigationBox>
|
||||
);
|
||||
|
||||
module.exports = injectIntl(Navigation);
|
39
src/components/navigation/conference/2019/navigation.scss
Normal file
|
@ -0,0 +1,39 @@
|
|||
@import "../../../../colors";
|
||||
@import "../../../../frameless";
|
||||
|
||||
#navigation {
|
||||
.ul.2019 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.li-left.2019 {
|
||||
margin-top: 0;
|
||||
margin-right: 10px;
|
||||
color: $type-white;
|
||||
}
|
||||
|
||||
.logo-a {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logo-a-image {
|
||||
margin-right: 10px;
|
||||
border-right: 2px solid $active-gray;
|
||||
padding-right: 10px;
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.logo-a-title {
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
color: $type-white;
|
||||
font-size: .85rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
27
src/components/page/conference/2019/page.jsx
Normal file
|
@ -0,0 +1,27 @@
|
|||
const PropTypes = require('prop-types');
|
||||
const React = require('react');
|
||||
|
||||
const Navigation = require('../../../navigation/conference/2019/navigation.jsx');
|
||||
const Footer = require('../../../footer/conference/2019/footer.jsx');
|
||||
|
||||
require('../page.scss');
|
||||
|
||||
const Page = props => (
|
||||
<div className="page mod-conference">
|
||||
<div id="navigation">
|
||||
<Navigation />
|
||||
</div>
|
||||
<div id="view">
|
||||
{props.children}
|
||||
</div>
|
||||
<div id="footer">
|
||||
<Footer />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Page.propTypes = {
|
||||
children: PropTypes.node
|
||||
};
|
||||
|
||||
module.exports = Page;
|
|
@ -11,12 +11,17 @@
|
|||
"general.community": "Community",
|
||||
"general.confirmEmail": "Confirm Email",
|
||||
"general.contactUs": "Contact Us",
|
||||
"general.contact": "Contact",
|
||||
"general.emailUs": "Email Us",
|
||||
"general.conferences": "Conferences",
|
||||
"general.copyright": "Scratch is a project of the Lifelong Kindergarten Group at the MIT Media Lab",
|
||||
"general.copyrightDraft": "Scratch is a project of the Scratch Foundation in collaboration with the Lifelong Kindergarten Group at the MIT Media Lab.",
|
||||
"general.country": "Country",
|
||||
"general.create": "Create",
|
||||
"general.credits": "Credits",
|
||||
"general.dmca": "DMCA",
|
||||
"general.emailAddress": "Email Address",
|
||||
"general.english": "English",
|
||||
"general.error": "Oops! Something went wrong",
|
||||
"general.errorIdentifier": "Your error was logged with id {errorId}",
|
||||
"general.explore": "Explore",
|
||||
|
|
|
@ -954,9 +954,8 @@ module.exports.shareProject = (projectId, token) => (dispatch => {
|
|||
|
||||
module.exports.reportProject = (id, jsonData, token) => (dispatch => {
|
||||
dispatch(module.exports.setFetchStatus('report', module.exports.Status.FETCHING));
|
||||
// scratchr2 will fail if no thumbnail base64 string provided. We don't yet have
|
||||
// a way to get the actual project thumbnail in www/gui, so for now just submit
|
||||
// a minimal base64 png string.
|
||||
// scratchr2 will fail if no thumbnail base64 string provided. If there is not one
|
||||
// included for any reason, include this minimal blank image.
|
||||
defaults(jsonData, {
|
||||
thumbnail: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC' +
|
||||
'0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII='
|
||||
|
|
|
@ -23,15 +23,13 @@
|
|||
{
|
||||
"name": "conference-index",
|
||||
"pattern": "^/conference/?(\\?.*)?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"view": "conference/2018/index/index",
|
||||
"title": "Scratch Conference",
|
||||
"viewportWidth": "device-width"
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"redirect": "/conference/2019"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2017",
|
||||
"pattern": "^/conference/2017/?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2017/index/index",
|
||||
"title": "Scratch Conference",
|
||||
"viewportWidth": "device-width"
|
||||
|
@ -39,21 +37,21 @@
|
|||
{
|
||||
"name": "conference-details-2018",
|
||||
"pattern": "^/conference/2018/:id/details/?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2018/details/details",
|
||||
"title": "Event Details"
|
||||
},
|
||||
{
|
||||
"name": "conference-expectations-2018",
|
||||
"pattern": "^/conference/2018/expect/?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2018/expect/expect",
|
||||
"title": "What to Expect"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2018",
|
||||
"pattern": "^/conference/2018/?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2018/index/index",
|
||||
"title": "Scratch Conference",
|
||||
"viewportWidth": "device-width"
|
||||
|
@ -61,17 +59,25 @@
|
|||
{
|
||||
"name": "conference-plan-2018",
|
||||
"pattern": "^/conference/2018/plan/?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2018/plan/plan",
|
||||
"title": "Plan Your Visit"
|
||||
},
|
||||
{
|
||||
"name": "conference-schedule-2018",
|
||||
"pattern": "^/conference/2018/schedule/?$",
|
||||
"routeAlias": "/conference(?!/201[4-5])",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2018/schedule/schedule",
|
||||
"title": "Conference Schedule"
|
||||
},
|
||||
{
|
||||
"name": "conference-index-2019",
|
||||
"pattern": "^/conference/2019/?$",
|
||||
"routeAlias": "/conference(?!/201[4-9])",
|
||||
"view": "conference/2019/index/index",
|
||||
"title": "Scratch Conferences",
|
||||
"viewportWidth": "device-width"
|
||||
},
|
||||
{
|
||||
"name": "connect",
|
||||
"pattern": "^/connect/?$",
|
||||
|
|
359
src/views/conference/2019/index/index.jsx
Normal file
|
@ -0,0 +1,359 @@
|
|||
const FormattedDate = require('react-intl').FormattedDate;
|
||||
const FormattedMessage = require('react-intl').FormattedMessage;
|
||||
const React = require('react');
|
||||
const render = require('../../../../lib/render.jsx');
|
||||
|
||||
const FlexRow = require('../../../../components/flex-row/flex-row.jsx');
|
||||
const Page = require('../../../../components/page/conference/2019/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-2019">
|
||||
<TitleBanner className="mod-conference mod-2019">
|
||||
<div>
|
||||
<h1 className="title-banner-h1 mod-2019">
|
||||
<FormattedMessage id="conference-2019.title" />
|
||||
</h1>
|
||||
<div className="title-banner-image mod-2019" />
|
||||
</div>
|
||||
</TitleBanner>
|
||||
<div className="conf2019-description conf2019-band">
|
||||
<h3 className="conf2019-description title-banner-h3 mod-2019">
|
||||
<FormattedMessage id="conference-2019.descA" />
|
||||
</h3>
|
||||
<h3 className="conf2019-description title-banner-h3 mod-2019">
|
||||
<FormattedMessage id="conference-2019.descB" />
|
||||
</h3>
|
||||
<h3 className="conf2019-description title-banner-h3 mod-2019">
|
||||
<FormattedMessage id="conference-2019.descC" />
|
||||
</h3>
|
||||
<h3 className="conf2019-description title-banner-h3 mod-2019">
|
||||
<FormattedMessage id="conference-2019.descD" />
|
||||
</h3>
|
||||
</div>
|
||||
<div className="conf2019-title-band conf2019-schedule-band">
|
||||
<img
|
||||
alt="Envelope Icon"
|
||||
className="conf2019-large-icon-image"
|
||||
src="/svgs/conference/index/calendar-icon-color.svg"
|
||||
/>
|
||||
<h3 className="conf2019-title-band">
|
||||
<FormattedMessage id="conference-2019.seeBelow" />
|
||||
</h3>
|
||||
</div>
|
||||
<div className="inner">
|
||||
<section className="conf2019-panel mod-chile">
|
||||
<FlexRow className="conf2019-panel-title">
|
||||
<img
|
||||
alt="Chile Flag"
|
||||
className="conf2019-panel-flag"
|
||||
src="/svgs/conference/flags/cl.svg"
|
||||
/>
|
||||
<div className="conf2019-panel-title-text">
|
||||
<h3>Conferencia Scratch al Sur</h3>
|
||||
</div>
|
||||
</FlexRow>
|
||||
<p className="conf2019-panel-desc">
|
||||
<FormattedMessage id="conference-2019.chileDesc" />
|
||||
</p>
|
||||
<table className="conf2019-panel-details">
|
||||
<tbody>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Calendar Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/calendar-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.date" /></td>
|
||||
<td>
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2019, 4, 30)}
|
||||
year="numeric"
|
||||
/>
|
||||
{' - '}
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2019, 4, 31)}
|
||||
year="numeric"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Map Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/map-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.location" /></td>
|
||||
<td>{'Santiago, Chile'}</td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Audience Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/audience-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.audience" /></td>
|
||||
<td><FormattedMessage id="conference-2019.chileAudience" /></td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Language Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/language-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.language" /></td>
|
||||
<td><FormattedMessage id="conference-2019.spanishWithSimultaneous" /></td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Language Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/hashtag-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.hashtag" /></td>
|
||||
<td>{'#ScratchalSur'}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a
|
||||
className="button mod-2019-conf mod-2019-conf-website-button"
|
||||
href="http://www.scratchalsur.org"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<FormattedMessage id="conference-2019.website" />
|
||||
</a>
|
||||
</section>
|
||||
<section className="conf2019-panel mod-kenya">
|
||||
<FlexRow className="conf2019-panel-title">
|
||||
<img
|
||||
alt="Kenya Flag"
|
||||
className="conf2019-panel-flag"
|
||||
src="/svgs/conference/flags/ke.svg"
|
||||
/>
|
||||
<div className="conf2019-panel-title-text">
|
||||
<h3><FormattedMessage id="conference-2019.kenyaTitle" /></h3>
|
||||
<h4><FormattedMessage id="conference-2019.kenyaSubTitle" /></h4>
|
||||
</div>
|
||||
</FlexRow>
|
||||
<p className="conf2019-panel-desc">
|
||||
<FormattedMessage id="conference-2019.kenyaDesc" />
|
||||
</p>
|
||||
<table className="conf2019-panel-details">
|
||||
<tbody>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Calendar Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/calendar-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.date" /></td>
|
||||
<td>
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2019, 6, 8)}
|
||||
year="numeric"
|
||||
/>
|
||||
{' - '}
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2019, 6, 13)}
|
||||
year="numeric"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Map Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/map-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.location" /></td>
|
||||
<td>{'Nairobi, Kenya'}</td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Audience Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/audience-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.audience" /></td>
|
||||
<td><FormattedMessage id="conference-2019.kenyaAudience" /></td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Language Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/language-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.language" /></td>
|
||||
<td><FormattedMessage id="general.english" /></td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Language Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/hashtag-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.hashtag" /></td>
|
||||
<td>{'#Scratch2019AFR'}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a
|
||||
className="button mod-2019-conf mod-2019-conf-website-button"
|
||||
href="https://www.scratchafrica.com"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<FormattedMessage id="conference-2019.website" />
|
||||
</a>
|
||||
</section>
|
||||
<section className="conf2019-panel mod-uk mod-last">
|
||||
<FlexRow className="conf2019-panel-title">
|
||||
<img
|
||||
alt="EU Flag"
|
||||
className="conf2019-panel-flag"
|
||||
src="/svgs/conference/flags/eu.svg"
|
||||
/>
|
||||
<div className="conf2019-panel-title-text">
|
||||
<h3><FormattedMessage id="conference-2019.ukTitle" /></h3>
|
||||
</div>
|
||||
</FlexRow>
|
||||
<p className="conf2019-panel-desc">
|
||||
<FormattedMessage id="conference-2019.ukDesc" />
|
||||
</p>
|
||||
<table className="conf2019-panel-details">
|
||||
<tbody>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Calendar Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/calendar-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.date" /></td>
|
||||
<td>
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2019, 7, 23)}
|
||||
year="numeric"
|
||||
/>
|
||||
{' - '}
|
||||
<FormattedDate
|
||||
day="2-digit"
|
||||
month="long"
|
||||
value={new Date(2019, 7, 25)}
|
||||
year="numeric"
|
||||
/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Map Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/map-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.location" /></td>
|
||||
<td>{'Cambridge, United Kingdom'}</td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Audience Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/audience-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.audience" /></td>
|
||||
<td><FormattedMessage id="conference-2019.ukAudience" /></td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Language Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/language-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.language" /></td>
|
||||
<td><FormattedMessage id="general.english" /></td>
|
||||
</tr>
|
||||
<tr className="conf2019-panel-row">
|
||||
<td className="conf2019-panel-row-icon">
|
||||
<img
|
||||
alt="Language Icon"
|
||||
className="conf2019-panel-row-icon-image"
|
||||
src="/svgs/conference/index/hashtag-icon-solid.svg"
|
||||
/>
|
||||
</td>
|
||||
<td><FormattedMessage id="conference-2019.hashtag" /></td>
|
||||
<td>{'#ScratchEurope'}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<a
|
||||
className="button mod-2019-conf mod-2019-conf-website-button"
|
||||
href="https://www.raspberrypi.org/blog/announcing-scratch-conference-europe-2019/"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<FormattedMessage id="conference-2019.website" />
|
||||
</a>
|
||||
</section>
|
||||
</div>
|
||||
<div className="conf2019-title-band conf2019-mailing-list">
|
||||
<img
|
||||
alt="Envelope Icon"
|
||||
className="conf2019-large-icon-image"
|
||||
src="/svgs/conference/index/envelope-icon.svg"
|
||||
/>
|
||||
<h3 className="conf2019-mailing-list">
|
||||
<FormattedMessage id="conference-2019.joinMailingList" />
|
||||
</h3>
|
||||
<a
|
||||
className="button mod-2019-conf mod-2019-conf-maillist-button"
|
||||
href="https://us9.list-manage.com/subscribe?u=96e741c12c99f46f1f3e95e09&id=149bd1a4c2"
|
||||
rel="noopener noreferrer"
|
||||
target="_blank"
|
||||
>
|
||||
<FormattedMessage id="conference-2019.joinMailingListButtonText" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
render(<Page><ConferenceSplash /></Page>, document.getElementById('app'));
|
350
src/views/conference/2019/index/index.scss
Normal file
|
@ -0,0 +1,350 @@
|
|||
@import "../../../../colors";
|
||||
@import "../../../../frameless";
|
||||
|
||||
h1.title-banner-h1.mod-2019 {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
text-align: center;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding-top: 5rem;
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
.title-banner.mod-conference.mod-2019 {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 2.5rem;
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2019 {
|
||||
position: relative;
|
||||
z-index: 0;
|
||||
margin-bottom: 1.75rem;
|
||||
width: 100%;
|
||||
height: 17rem;
|
||||
background-image: url("/images/conference/index/2019/title-banner-3.jpg");
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
opacity: .4;
|
||||
}
|
||||
|
||||
.conf2019-panel {
|
||||
margin: auto 5rem;
|
||||
}
|
||||
|
||||
.conf2019-panel,
|
||||
.title-banner-h3.mod-2019 {
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2019 {
|
||||
text-align: left;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band {
|
||||
background-color: $ui-blue;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.conf2019-title-band.conf2019-schedule-band {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 2rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band.conf2019-mailing-list {
|
||||
padding-top: 2.25rem;
|
||||
padding-bottom: 3rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3 {
|
||||
width: 48.75rem;
|
||||
color: $type-white;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-schedule {
|
||||
font-weight: bold;
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-mailing-list {
|
||||
font-weight: normal;
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.conf2019-panel-title-text>h3 {
|
||||
line-height: 1.7rem;
|
||||
}
|
||||
|
||||
.conf2019-description.conf2019-band {
|
||||
margin-bottom: 2.5rem;
|
||||
width: 48.75rem;
|
||||
}
|
||||
|
||||
.conf2019-description {
|
||||
line-height: 1.9rem;
|
||||
// width: 60%;
|
||||
font-weight: normal;
|
||||
font-size: 1rem;
|
||||
color: $type-gray;
|
||||
margin: 0 auto 1.6rem;
|
||||
}
|
||||
|
||||
.conf2019-panel {
|
||||
border-bottom: 1px solid $ui-border;
|
||||
}
|
||||
|
||||
.conf2019-panel.mod-last {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.flex-row.conf2019-panel-title {
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.conf2019-panel-flag {
|
||||
margin-right: 6.25rem;
|
||||
border: 1px solid $ui-border;
|
||||
border-radius: 1px;
|
||||
background-color: $ui-border;
|
||||
width: 3.75rem;
|
||||
}
|
||||
|
||||
.conf2019-panel-desc {
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
.conf2019-mailing-list {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
td {
|
||||
padding: .75rem 1.25rem;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.conf2019-panel-row-icon-image {
|
||||
margin-top: .125rem;
|
||||
height: 1rem;
|
||||
}
|
||||
|
||||
.conf2019-large-icon-image {
|
||||
height: 2.5rem;
|
||||
margin: 1rem;
|
||||
}
|
||||
|
||||
.button.mod-2019-conf {
|
||||
display: block;
|
||||
margin: 2rem auto 0;
|
||||
padding: 1rem 0;
|
||||
width: 13.75rem;
|
||||
text-align: center;
|
||||
font-size: .9rem;
|
||||
}
|
||||
|
||||
.button.mod-2019-conf-website-button {
|
||||
background-color: $ui-orange;
|
||||
color: $type-white;
|
||||
}
|
||||
|
||||
.button.mod-2019-conf-maillist-button {
|
||||
background-color: $ui-white;
|
||||
color: $ui-blue-dark;
|
||||
}
|
||||
|
||||
@media #{$small} {
|
||||
.index.mod-2019 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1.title-banner-h1.mod-2019 {
|
||||
padding-top: 3.25rem;
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
|
||||
.title-banner.mod-conference.mod-2019 {
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2019 {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3 {
|
||||
width: initial;
|
||||
margin: 0 1rem;
|
||||
}
|
||||
|
||||
.conf2019-panel {
|
||||
margin: auto 1rem;
|
||||
}
|
||||
|
||||
.title-banner-h3.mod-2019 {
|
||||
margin: 1rem .5rem .5rem;
|
||||
font-size: 1rem;
|
||||
line-height: 1.6rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-schedule {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-mailing-list {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.conf2019-description.conf2019-band {
|
||||
width: initial;
|
||||
margin: 0 .5rem;
|
||||
}
|
||||
|
||||
.conf2019-description {
|
||||
line-height: 1.9rem;
|
||||
font-size: 1rem;
|
||||
margin: 0 .5rem 1.6rem;
|
||||
}
|
||||
|
||||
.flex-row.conf2019-panel-title {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.conf2019-panel-flag {
|
||||
margin-right: 1.25rem;
|
||||
}
|
||||
|
||||
.conf2019-panel-title-text {
|
||||
max-width: 14rem;
|
||||
}
|
||||
|
||||
.conf2019-panel-row > td {
|
||||
padding: .75rem .375rem .75rem 0;
|
||||
}
|
||||
|
||||
.conf2019-large-icon-image {
|
||||
height: 2.5rem;
|
||||
margin: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media #{$medium} {
|
||||
.index.mod-2019 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1.title-banner-h1.mod-2019 {
|
||||
padding-top: 2.75rem;
|
||||
font-size: 2.25rem;
|
||||
}
|
||||
|
||||
.title-banner.mod-conference.mod-2019 {
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2019 {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3 {
|
||||
margin: auto .5rem ;
|
||||
width: initial;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-schedule {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-mailing-list {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.conf2019-description.conf2019-band {
|
||||
width: 464px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.conf2019-description {
|
||||
line-height: 1.9rem;
|
||||
font-size: 1rem;
|
||||
margin: 0 auto 1.6rem;
|
||||
}
|
||||
|
||||
.flex-row.conf2019-panel-title {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.conf2019-panel {
|
||||
margin: auto .5rem;
|
||||
}
|
||||
|
||||
.conf2019-panel-flag {
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
.conf2019-panel-title-text {
|
||||
max-width: 18.75rem;
|
||||
}
|
||||
|
||||
.button.mod-2019-panel {
|
||||
width: 5.75rem;
|
||||
}
|
||||
|
||||
.conf2019-large-icon-image {
|
||||
height: 2.5rem;
|
||||
margin: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media #{$intermediate} {
|
||||
.index.mod-2019 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1.title-banner-h1.mod-2019 {
|
||||
padding-top: 4.75rem;
|
||||
font-size: 2.75rem;
|
||||
}
|
||||
|
||||
.title-banner.mod-conference.mod-2019 {
|
||||
}
|
||||
|
||||
.title-banner-image.mod-2019 {
|
||||
height: 15rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3 {
|
||||
width: 38.75rem;
|
||||
}
|
||||
|
||||
.conf2019-panel {
|
||||
margin: auto 4.5rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-schedule {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
.conf2019-title-band>h3.conf2019-mailing-list {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.conf2019-description.conf2019-band {
|
||||
width: 38.75rem;
|
||||
}
|
||||
|
||||
.conf2019-description {
|
||||
line-height: 1.9rem;
|
||||
font-size: 1rem;
|
||||
margin: 0 auto 1.6rem;
|
||||
}
|
||||
|
||||
.button.mod-2019-panel {
|
||||
width: 8.75rem;
|
||||
}
|
||||
|
||||
.conf2019-large-icon-image {
|
||||
height: 2.5rem;
|
||||
margin: 1rem;
|
||||
}
|
||||
}
|
31
src/views/conference/2019/index/l10n.json
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"conference-2019.title": "Scratch Conferences 2019",
|
||||
"conference-2019.descA": "Scratch conferences are playful gatherings of educators, researchers, developers, and other members of the worldwide Scratch community.",
|
||||
"conference-2019.descB": "These events, held in various locations around the world, provide opportunities for people of diverse backgrounds and practices to discuss how they support children using Scratch, to collaborate and share ideas with one another, and to bring new creative-learning strategies and activities back to their own communities.",
|
||||
"conference-2019.descC": "The first Scratch conference was held at MIT in 2008, and the Scratch Team has continued to organize a Scratch conference every other year. The next Scratch@MIT conference will be held in the summer of 2020 (in Cambridge, Massachusetts, USA).",
|
||||
"conference-2019.descD": "In 2019, there will be several Scratch conferences held in other locations around the world (see below).",
|
||||
|
||||
"conference-2019.seeBelow": "Schedule & Locations",
|
||||
"conference-2019.joinMailingListButtonText": "Join Mailing List",
|
||||
"conference-2019.joinMailingList": "To learn more about 2020’s Scratch@MIT conference in Cambridge, Massachusetts, and to receive updates about regional conferences around the world, join our mailing list.",
|
||||
|
||||
"conference-2019.date": "Date",
|
||||
"conference-2019.location": "Location",
|
||||
"conference-2019.audience": "Audience",
|
||||
"conference-2019.language": "Language",
|
||||
"conference-2019.hashtag": "Hashtag",
|
||||
"conference-2019.website": "Visit Website",
|
||||
|
||||
"conference-2019.ukTitle": "Scratch Conference Europe",
|
||||
"conference-2019.ukDesc": "Hosted by Raspberry Pi, the 2019 Scratch Conference Europe will take place in Cambridge, UK, from Friday 23 August to Sunday 25 August. The schedule is full of exciting participatory activities led by members of the Scratch community. Participants can look forward to workshops, talks, and keynotes across a range of topics, including the new Scratch 3.0, as well as plenty of informal opportunities to chat and connect!",
|
||||
"conference-2019.ukAudience": "Education professionals and volunteers",
|
||||
|
||||
"conference-2019.kenyaTitle": "Scratch2019NBO",
|
||||
"conference-2019.kenyaSubTitle": "Waves of Innovation",
|
||||
"conference-2019.kenyaDesc": "In recognition of Africa's technological contributions to the world and the potential of the youth of Africa, Scratch2019NBO will be held in Nairobi, Kenya. Join educators from around the world to share lessons, empower young people, and celebrate accomplishments in creative coding.",
|
||||
"conference-2019.kenyaAudience": "Educators, students, and enthusiasts",
|
||||
|
||||
"conference-2019.chileDesc": "Scratch al Sur is a gathering for teachers and policy makers to learn about the importance of introducing programming languages in schools. All lectures and workshops will provide an opportunity to share different experiences, from higher levels to those who are beginning to participate in Scratch's global community.",
|
||||
"conference-2019.chileAudience": "Teachers and policy makers",
|
||||
"conference-2019.spanishWithSimultaneous": "Spanish - simultaneous translation into English during plenary sessions"
|
||||
}
|
|
@ -147,7 +147,14 @@ const Faq = injectIntl(props => (
|
|||
/>
|
||||
</dd>
|
||||
<dt><FormattedMessage id="faq.removedBlocksScratch3Title" /></dt>
|
||||
<dd><FormattedMessage id="faq.removedBlocksScratch3Body" /></dd>
|
||||
<dd>
|
||||
<FormattedMessage
|
||||
id="faq.removedBlocksScratch3Body"
|
||||
values={{extensionsFAQLink: (
|
||||
<a href="#scratch-extensions"><FormattedMessage id="faq.scratchExtensionsTitle" /></a>
|
||||
)}}
|
||||
/>
|
||||
</dd>
|
||||
<dt><FormattedMessage id="faq.newBlocksScratch3Title" /></dt>
|
||||
<dd><FormattedMessage id="faq.newBlocksScratch3Body" /></dd>
|
||||
<ul>
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
"faq.languagesScratch3Body2":"All of our translations are done by volunteers. The Scratch 3.0 editor has already been translated into 40+ languages. You can view all the languages currently being translated and reviewed on our {transifexLink}. If you want to help with translation or review, please contact {emailLink}.",
|
||||
"faq.transifexLinkText":"translation server",
|
||||
"faq.removedBlocksScratch3Title":"Does Scratch 3.0 remove any coding blocks from earlier versions of Scratch?",
|
||||
"faq.removedBlocksScratch3Body":"No coding blocks have been removed in Scratch 3.0, but some have changed a bit and others have moved into \"Extensions\" (as described below, under \"Where did the Pen blocks go?..\").",
|
||||
"faq.removedBlocksScratch3Body":"No coding blocks have been removed in Scratch 3.0, but some have changed a bit and others have moved into \"Extensions\" (as described below, in the {extensionsFAQLink} section).",
|
||||
"faq.newBlocksScratch3Title":"Does Scratch 3.0 introduce new blocks?",
|
||||
"faq.newBlocksScratch3Body":"Yes! In Scratch 3.0 you’ll find:",
|
||||
"faq.newBlocksSoundEffect":"New \"sound effect\" blocks",
|
||||
|
|
|
@ -106,6 +106,7 @@ const PreviewPresentation = ({
|
|||
onRestoreComment,
|
||||
onSeeAllComments,
|
||||
onSeeInside,
|
||||
onSetProjectThumbnailer,
|
||||
onShare,
|
||||
onToggleComments,
|
||||
onToggleStudio,
|
||||
|
@ -341,6 +342,7 @@ const PreviewPresentation = ({
|
|||
onGreenFlag={onGreenFlag}
|
||||
onProjectLoaded={onProjectLoaded}
|
||||
onRemixing={onRemixing}
|
||||
onSetProjectThumbnailer={onSetProjectThumbnailer}
|
||||
onUpdateProjectId={onUpdateProjectId}
|
||||
onUpdateProjectThumbnail={onUpdateProjectThumbnail}
|
||||
/>
|
||||
|
@ -709,6 +711,7 @@ PreviewPresentation.propTypes = {
|
|||
onRestoreComment: PropTypes.func,
|
||||
onSeeAllComments: PropTypes.func,
|
||||
onSeeInside: PropTypes.func,
|
||||
onSetProjectThumbnailer: PropTypes.func,
|
||||
onShare: PropTypes.func,
|
||||
onToggleComments: PropTypes.func,
|
||||
onToggleStudio: PropTypes.func,
|
||||
|
|
|
@ -79,6 +79,7 @@ class Preview extends React.Component {
|
|||
'handleRemix',
|
||||
'handleSeeAllComments',
|
||||
'handleSeeInside',
|
||||
'handleSetProjectThumbnailer',
|
||||
'handleShare',
|
||||
'handleUpdateProjectId',
|
||||
'handleUpdateProjectTitle',
|
||||
|
@ -381,7 +382,18 @@ class Preview extends React.Component {
|
|||
this.setState({addToStudioOpen: false});
|
||||
}
|
||||
handleReportSubmit (formData) {
|
||||
this.props.reportProject(this.state.projectId, formData, this.props.user.token);
|
||||
const submit = data => this.props.reportProject(this.state.projectId, data, this.props.user.token);
|
||||
if (this.getProjectThumbnail) {
|
||||
this.getProjectThumbnail(thumbnail => {
|
||||
const data = Object.assign({}, formData, {thumbnail});
|
||||
submit(data);
|
||||
});
|
||||
} else {
|
||||
submit(formData);
|
||||
}
|
||||
}
|
||||
handleSetProjectThumbnailer (fn) {
|
||||
this.getProjectThumbnail = fn;
|
||||
}
|
||||
handleGreenFlag () {
|
||||
if (!this.state.greenFlagRecorded) {
|
||||
|
@ -690,6 +702,7 @@ class Preview extends React.Component {
|
|||
onRestoreComment={this.handleRestoreComment}
|
||||
onSeeAllComments={this.handleSeeAllComments}
|
||||
onSeeInside={this.handleSeeInside}
|
||||
onSetProjectThumbnailer={this.handleSetProjectThumbnailer}
|
||||
onShare={this.handleShare}
|
||||
onToggleComments={this.handleToggleComments}
|
||||
onToggleStudio={this.handleToggleStudio}
|
||||
|
|
|
@ -11,7 +11,7 @@ const Privacypolicy = () => (
|
|||
<section>
|
||||
<p className="lastupdate">
|
||||
<i>
|
||||
The Scratch Privacy Policy was last updated: May 23, 2018
|
||||
The Scratch Privacy Policy was last updated: February 14, 2019
|
||||
</i>
|
||||
</p>
|
||||
<p className="intro">
|
||||
|
@ -384,12 +384,13 @@ const Privacypolicy = () => (
|
|||
unauthorized alteration, unauthorized disclosure or access,
|
||||
misuse, and any other unlawful form of processing of the
|
||||
Personal Information in our possession. For example, we
|
||||
strictly limit access to the Scratch servers and the data we
|
||||
store on them. However, as effective as these measures are,
|
||||
no security system is impenetrable. We cannot completely
|
||||
guarantee the security of our databases, nor can we
|
||||
guarantee that the information you supply will not be
|
||||
intercepted while being transmitted to us over the Internet.
|
||||
use SSL/TLS for all data transfer and strictly limit access
|
||||
to the Scratch servers and the data we store on them. However,
|
||||
as effective as these measures are, no security system is
|
||||
impenetrable. We cannot completely guarantee the security of
|
||||
our databases, nor can we guarantee that the information you
|
||||
supply will not be intercepted while being transmitted to us
|
||||
over the Internet.
|
||||
</p>
|
||||
</section>
|
||||
<section id="changes">
|
||||
|
|
BIN
static/images/conference/footer/instagram.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
static/images/conference/index/2019/title-banner-2.jpg
Normal file
After Width: | Height: | Size: 2.6 MiB |
BIN
static/images/conference/index/2019/title-banner-3.jpg
Normal file
After Width: | Height: | Size: 2 MiB |
BIN
static/images/conference/index/2019/title-banner.jpg
Normal file
After Width: | Height: | Size: 789 KiB |
|
@ -1,13 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" height="480" width="640" viewBox="0 0 640 480">
|
||||
<defs>
|
||||
<clipPath id="a">
|
||||
<path fill-opacity=".67" d="M0 0h682.67v512H0z"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g fill-rule="evenodd" clip-path="url(#a)" transform="scale(.9375)" fill-opacity=".996">
|
||||
<path fill="#fff" d="M255.99 0H768v256H255.99z"/>
|
||||
<path fill="#0039a6" d="M0 0h256v256H0z"/>
|
||||
<path d="M167.82 191.71l-39.653-29.737-39.458 30.03 14.674-48.8-39.386-30.133 48.728-.42L127.84 64l15.437 48.537 48.728.064-39.184 30.418 15 48.69z" fill="#fff"/>
|
||||
<path fill="#d52b1e" d="M0 256h768v256H0z"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="480" width="640"><defs><clipPath id="a"><path fill-opacity=".67" d="M0 0h682.67v512H0z"/></clipPath></defs><g fill-rule="evenodd" clip-path="url(#a)" transform="scale(.9375)" fill-opacity=".996"><path fill="#fff" d="M255.99 0H768v256H255.99z"/><path fill="#0039a6" d="M0 0h256v256H0z"/><path d="M167.82 191.71l-39.653-29.737-39.458 30.03 14.674-48.8-39.386-30.133 48.728-.42L127.84 64l15.437 48.537 48.728.064-39.184 30.418 15 48.69z" fill="#fff"/><path fill="#d52b1e" d="M0 256h768v256H0z"/></g></svg>
|
Before Width: | Height: | Size: 623 B After Width: | Height: | Size: 550 B |
1
static/svgs/conference/flags/eu.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="810" height="540"><defs><g id="d"><g id="b"><path id="a" d="M0 0v1h.5z" transform="rotate(18 3.157 -.5)"/><use xlink:href="#a" transform="scale(-1 1)"/></g><g id="c"><use xlink:href="#b" transform="rotate(72)"/><use xlink:href="#b" transform="rotate(144)"/></g><use xlink:href="#c" transform="scale(-1 1)"/></g></defs><path fill="#039" d="M0 0h810v540H0z"/><g fill="#fc0" transform="matrix(30 0 0 30 405 270)"><use xlink:href="#d" y="-6"/><use xlink:href="#d" y="6"/><g id="e"><use xlink:href="#d" x="-6"/><use xlink:href="#d" transform="rotate(-144 -2.344 -2.11)"/><use xlink:href="#d" transform="rotate(144 -2.11 -2.344)"/><use xlink:href="#d" transform="rotate(72 -4.663 -2.076)"/><use xlink:href="#d" transform="rotate(72 -5.076 .534)"/></g><use xlink:href="#e" transform="scale(-1 1)"/></g></svg>
|
After Width: | Height: | Size: 891 B |
1
static/svgs/conference/flags/ke.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="600"><defs><path id="a" d="M-1 55.426h2V-38c2-2 2-5 2-8 0-2 0-10-3-18.663C-3-56-3-48-3-46c0 3 0 6 2 8z" stroke-miterlimit="10" transform="rotate(30)"/></defs><path fill="#fff" d="M0 0h900v600H0z"/><path d="M0 0h900v180H0z"/><path fill="#b00" d="M0 210h900v180H0z"/><path fill="#060" d="M0 420h900v180H0z"/><g transform="matrix(3.75 0 0 3.75 450 300)"><g id="b"><use xlink:href="#a"/><use xlink:href="#a" fill="#fff"/></g><use xlink:href="#b" transform="scale(-1 1)"/><path d="M-19 24c3 8 13 24 19 24s16-16 19-24v-48C16-32 6-48 0-48s-16 16-19 24z" fill="#b00"/><path id="c" d="M19 24c3-8 5-16 5-24s-2-16-5-24c-3 8-5 16-5 24s2 16 5 24z"/><use xlink:href="#c" transform="scale(-1 1)"/><g fill="#fff"><ellipse rx="4" ry="6"/><path id="d" d="M1 5.85s4 8 4 21-4 21-4 21z"/><use xlink:href="#d" transform="scale(-1)"/><use xlink:href="#d" transform="scale(-1 1)"/><use xlink:href="#d" transform="scale(1 -1)"/></g></g></svg>
|
After Width: | Height: | Size: 1,020 B |
1
static/svgs/conference/index/audience-icon-solid.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M6.403 11.673C7.312 10.715 8.588 10 10 10s2.688.715 3.597 1.673c.63-.91 1.695-1.673 2.903-1.673 1.933 0 3.5 1.953 3.5 3.333C20 14.714 18.433 15 16.5 15c-.542 0-1.055-.022-1.513-.085C14.801 16.635 12.639 17 10 17c-2.639 0-4.8-.366-4.987-2.085-.458.063-.971.085-1.513.085-1.933 0-3.5-.286-3.5-1.667C0 11.953 1.567 10 3.5 10c1.208 0 2.274.763 2.903 1.673zM3.66 9a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm13 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM10 9a3 3 0 1 1 0-6 3 3 0 0 1 0 6z" id="a"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#575E75" xlink:href="#a"/><g mask="url(#b)" fill="#4D97FF"><path d="M0 0h20v20H0z"/></g></g></svg>
|
After Width: | Height: | Size: 792 B |
22
static/svgs/conference/index/calendar-icon-color.svg
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="62px" height="56px" viewBox="0 0 62 56" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Calendar</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<rect id="path-1" x="0" y="0" width="54" height="48" rx="8"></rect>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="Artboard-Copy-7" transform="translate(-688.000000, -721.000000)">
|
||||
<g id="Calendar" transform="translate(692.000000, 725.000000)">
|
||||
<path d="M8,0 C3.581722,8.8817842e-16 -4.4408921e-16,3.581722 0,8 L0,40 C8.8817842e-16,44.418278 3.581722,48 8,48 L46,48 C50.418278,48 54,44.418278 54,40 L54,8 C54,3.581722 50.418278,-8.8817842e-16 46,0 L8,0 Z M8,-4 L46,-4 C52.627417,-4 58,1.372583 58,8 L58,40 C58,46.627417 52.627417,52 46,52 L8,52 C1.372583,52 -4,46.627417 -4,40 L-4,8 C-4,1.372583 1.372583,-4 8,-4 Z" id="Background" fill-opacity="0.5" fill="#4280D7" fill-rule="nonzero"></path>
|
||||
<mask id="mask-2" fill="white">
|
||||
<use xlink:href="#path-1"></use>
|
||||
</mask>
|
||||
<use id="Mask" fill="#FFFFFF" xlink:href="#path-1"></use>
|
||||
<path d="M18.3392857,32.62 L35.1785714,32.62 L35.1785714,17.74 L36.1785714,17.74 L36.1785714,32.62 L54.5,32.62 L54.5,33.62 L36.1785714,33.62 L36.1785714,48.5 L35.1785714,48.5 L35.1785714,33.62 L18.3392857,33.62 L18.3392857,48.5 L17.3392857,48.5 L17.3392857,33.62 L-0.5,33.62 L-0.5,32.62 L17.3392857,32.62 L17.3392857,17.74 L18.3392857,17.74 L18.3392857,32.62 Z" id="Combined-Shape" fill="#D9D9D9" fill-rule="nonzero" mask="url(#mask-2)"></path>
|
||||
<path d="M8,0 L46,0 C50.418278,-8.11624501e-16 54,3.581722 54,8 L54,18.24 L0,18.24 L0,8 C-5.41083001e-16,3.581722 3.581722,8.11624501e-16 8,0 Z" id="Top-part" fill="#FF8000"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2 KiB |
1
static/svgs/conference/index/calendar-icon-solid.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M16 2a3 3 0 0 1 3 3v11a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3v1a2 2 0 1 0 4 0V2h4v1a2 2 0 1 0 4 0V2zM3 8v7.6a1.5 1.5 0 0 0 1.5 1.5h11a1.5 1.5 0 0 0 1.5-1.5V8H3zm3-7a1 1 0 0 1 1 1v1a1 1 0 1 1-2 0V2a1 1 0 0 1 1-1zm8 0a1 1 0 0 1 1 1v1a1 1 0 0 1-2 0V2a1 1 0 0 1 1-1z" id="a"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#575E75" fill-rule="nonzero" xlink:href="#a"/><g mask="url(#b)" fill="#4D97FF"><path d="M0 0h20v20H0z"/></g></g></svg>
|
After Width: | Height: | Size: 625 B |
1
static/svgs/conference/index/envelope-icon.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="107" height="50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><rect id="a" x="24" width="56" height="40" rx="8"/><filter x="-13.4%" y="-18.8%" width="126.8%" height="137.5%" filterUnits="objectBoundingBox" id="b"><feMorphology radius="2.5" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"/><feOffset in="shadowSpreadOuter1" result="shadowOffsetOuter1"/><feColorMatrix values="0 0 0 0 0.258823529 0 0 0 0 0.501960784 0 0 0 0 0.843137255 0 0 0 0.5 0" in="shadowOffsetOuter1"/></filter></defs><g transform="translate(2 5)" fill="none" fill-rule="evenodd"><mask id="c" fill="#fff"><use xlink:href="#a"/></mask><use fill="#000" filter="url(#b)" xlink:href="#a"/><use fill="#FFF" xlink:href="#a"/><path d="M22.207 7.212l24.762 19.102a8 8 0 0 0 9.778-.004L81.462 7.212V6.123a8 8 0 0 0-8-8H30.207a8 8 0 0 0-8 8v1.09z" fill-opacity=".55" fill="#4D97FF" mask="url(#c)"/><g stroke="#FFBF00" stroke-linecap="round" stroke-width="4"><path d="M11.664 14L.334 10M11.667 23.5H.333M12 33L0 37"/></g><g stroke="#FFBF00" stroke-linecap="round" stroke-width="4"><path d="M91.336 14l11.33-4M91.333 23.5h11.334M91 33l11.667 4"/></g></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
static/svgs/conference/index/hashtag-icon-solid.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M8.3 11.5h2.97l.43-3H8.73l-.43 3zm-.428 3l-.387 2.712a1.5 1.5 0 0 1-2.97-.424l.327-2.288H3a1.5 1.5 0 0 1 0-3h2.27l.43-3H3a1.5 1.5 0 0 1 0-3h3.128l.387-2.712a1.5 1.5 0 1 1 2.97.424L9.158 5.5h2.97l.387-2.712a1.5 1.5 0 1 1 2.97.424L15.158 5.5H17a1.5 1.5 0 0 1 0 3h-2.27l-.43 3H17a1.5 1.5 0 0 1 0 3h-3.128l-.387 2.712a1.5 1.5 0 1 1-2.97-.424l.327-2.288h-2.97z" id="a"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#575E75" fill-rule="nonzero" xlink:href="#a"/><g mask="url(#b)" fill="#4D97FF"><path d="M0 0h20v20H0z"/></g></g></svg>
|
After Width: | Height: | Size: 711 B |
1
static/svgs/conference/index/language-icon-solid.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M9 16c-1 1-3.5 2.5-4 2s0-1 0-2H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H9zm-3-6a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2H6zm0-4a1 1 0 1 0 0 2h8a1 1 0 0 0 0-2H6z" id="a"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#575E75" xlink:href="#a"/><g mask="url(#b)" fill="#4D97FF"><path d="M0 0h20v20H0z"/></g></g></svg>
|
After Width: | Height: | Size: 510 B |
1
static/svgs/conference/index/map-icon-solid.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M15.303 3.184a7.425 7.425 0 0 1 0 10.544l-3.893 3.87a2 2 0 0 1-2.82 0l-3.893-3.87a7.425 7.425 0 0 1 0-10.544c2.929-2.912 7.677-2.912 10.606 0zM10 12.5a4 4 0 1 0 0-8 4 4 0 0 0 0 8z" id="a"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><use fill="#575E75" xlink:href="#a"/><g mask="url(#b)" fill="#4D97FF"><path d="M0 0h20v20H0z"/></g></g></svg>
|
After Width: | Height: | Size: 515 B |