Unverified Commit 5aeee265 authored by Eric Rosenbaum's avatar Eric Rosenbaum Committed by GitHub

Merge pull request #5152 from LLK/develop

merge from develop to release branch
parents 14052544 ff18ff4a
This diff is collapsed.
......@@ -4,5 +4,12 @@
"pattern": "^/components/?$",
"view": "components/components",
"title": "Components"
},
{
"name": "studio",
"pattern": "^/studios-playground/\\d+(/projects|/curators|/activity|/comments)?/?(\\?.*)?$",
"routeAlias": "/studios-playground/?$",
"view": "studio/studio",
"title": "Studio Playground"
}
]
\ No newline at end of file
]
......@@ -3,7 +3,6 @@ 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/2020/page.jsx');
const TitleBanner = require('../../../../components/title-banner/title-banner.jsx');
......@@ -32,9 +31,6 @@ const ConferenceSplash = () => (
<strong><FormattedMessage id="conference-2020.desc1a" /></strong>
<br />
<br />
<FormattedMessage id="conference-2020.desc2" />
<br />
<br />
<FormattedMessage id="conference-2020.desc3" />
</p>
<table className="conf2020-panel-details">
......@@ -62,7 +58,6 @@ const ConferenceSplash = () => (
value={new Date(2021, 6, 24)}
year="numeric"
/>
<FormattedMessage id="conference-2020.dateDescMore" />
</td>
</tr>
<tr className="conf2020-panel-row">
......@@ -78,43 +73,16 @@ const ConferenceSplash = () => (
</tr>
</tbody>
</table>
</section>
<section className="conf2020-panel mod-registration">
<FlexRow className="conf2020-panel-title">
<div className="conf2020-panel-title-text">
<h3><FormattedMessage id="conference-2020.registrationTitle" /></h3>
</div>
</FlexRow>
<p className="conf2020-panel-desc">
<FormattedMessage id="conference-2020.registrationFee" />
<br />
<FormattedMessage id="conference-2020.registrationOpen" />
<br />
<br />
<FormattedMessage id="conference-2020.registrationDelayed" />
<br />
<br />
<FormattedMessage
id="conference-2020.connectNow"
values={{
scratchInPracticeLink: <a href="https://sip.scratch.mit.edu/">
<FormattedMessage id="conference-2020.scratchInPracticeText" />
</a>
}}
/>
</p>
<a
className="button mod-2020-panel"
href="http://scratch2020.eventbrite.com/"
>
<FormattedMessage id="conference-2020.register" />
</a>
</section>
<section className="conf2020-panel mod-stay">
<p className="conf2020-panel-desc">
<FormattedMessage id="conference-2020.stayDesc1" />
<br />
<br />
<FormattedMessage
id="conference-2020.stayDesc2"
values={{
......
{
"conference-2020.title": "Scratch Conference 2021:",
"conference-2020.subtitle": "Let's Create Together!",
"conference-2020.dateDesc": "July 22-24, 2021 | Cambridge, MA, USA",
"conference-2020.dateDescMore": " (with opening reception the evening of July 21)",
"conference-2020.locationDetails": "MIT Media Lab, Cambridge, MA",
"conference-2020.title": "Scratch Around the World:",
"conference-2020.subtitle": "An Online Conference",
"conference-2020.dateDesc": "July 22",
"conference-2020.locationDetails": "Online",
"conference-2020.date": "When:",
"conference-2020.location": "Where:",
"conference-2020.desc1": "Join us for the Scratch Conference, an international gathering where educators, researchers, and developers share ideas for supporting creative learning with Scratch.",
"conference-2020.desc1a": "Due to the global health crisis, we have delayed the conference for one year, to July 22-24, 2021.",
"conference-2020.desc2": "Scratch has become the world's largest coding community for children around the world. The conference offers hands-on workshops, panel discussions, and interactive demonstrations to explore ways for using Scratch to expand creative learning experiences for diverse learners across subject areas.",
"conference-2020.desc3": "Together we'll exchange ideas and strategies on how to use Scratch to engage students in learning to think creatively, reason systematically, and work collaboratively—essential skills for everyone in today’s society.",
"conference-2020.desc1": "Join us for Scratch Around the World, an online conference for educators interested in creative learning with Scratch.",
"conference-2020.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-2020.desc3": "The conference will be free of charge.",
"conference-2020.registrationTitle": "Registration:",
"conference-2020.registrationFee": "Conference Fee: $250",
"conference-2020.registrationOpen": "The conference fee includes 7 meals (3 breakfast, 3 lunches, 1 dinner) plus refreshments during the day.",
"conference-2020.registrationDelayed": "In response to the coronavirus crisis (COVID-19), we have decided to delay the Scratch conference for one year, to July 22-24, 2021. We are sending well wishes to our entire global community and hope you can join us then!",
"conference-2020.connectNow": "Want to connect now? We invite you to learn more about our online conversations, resources, and events at {scratchInPracticeLink}.",
"conference-2020.scratchInPracticeText": "Scratch in Practice",
"conference-2020.register": "Go to registration page",
"conference-2020.stayDesc1": "We will be posting revised lodging options at the beginning of 2021.",
"conference-2020.stayDesc2": "For additional questions, contact the Scratch Conference Team at {emailLink}",
"conference-2020.organizedBy": "The Scratch Conference is organized by the Lifelong Kindergarten group at the MIT Media Lab in collaboration with the Scratch Foundation."
}
import React from 'react';
import {useParams} from 'react-router-dom';
const StudioActivity = () => {
const {studioId} = useParams();
return (
<div>
<h2>Activity</h2>
<p>Studio {studioId}</p>
</div>
);
};
export default StudioActivity;
import React from 'react';
import {useParams} from 'react-router-dom';
const StudioComments = () => {
const {studioId} = useParams();
return (
<div>
<h2>Comments</h2>
<p>Studio {studioId}</p>
</div>
);
};
export default StudioComments;
import React from 'react';
import {useParams} from 'react-router-dom';
const StudioCurators = () => {
const {studioId} = useParams();
return (
<div>
<h2>Curators</h2>
<p>Studio {studioId}</p>
</div>
);
};
export default StudioCurators;
import React from 'react';
import {useParams} from 'react-router-dom';
const StudioInfo = () => {
const {studioId} = useParams();
return (
<div>
<h2>Studio Info</h2>
<p>Studio {studioId}</p>
</div>
);
};
export default StudioInfo;
import React from 'react';
import {useParams} from 'react-router-dom';
const StudioProjects = () => {
const {studioId} = useParams();
return (
<div>
<h2>Projects</h2>
<p>Studio {studioId}</p>
</div>
);
};
export default StudioProjects;
import React from 'react';
import {useRouteMatch, NavLink} from 'react-router-dom';
const StudioTabNav = () => {
const match = useRouteMatch();
return (
<div>
<NavLink
activeStyle={{textDecoration: 'underline'}}
to={`${match.url}`}
exact
>
Projects
</NavLink>
&nbsp;|&nbsp;
<NavLink
activeStyle={{textDecoration: 'underline'}}
to={`${match.url}/curators`}
>
Curators
</NavLink>
&nbsp;|&nbsp;
<NavLink
activeStyle={{textDecoration: 'underline'}}
to={`${match.url}/comments`}
>
Comments
</NavLink>
&nbsp;|&nbsp;
<NavLink
activeStyle={{textDecoration: 'underline'}}
to={`${match.url}/activity`}
>
Activity
</NavLink>
</div>
);
};
export default StudioTabNav;
import React from 'react';
import {
BrowserRouter as Router,
Switch,
Route,
Redirect,
useRouteMatch
} from 'react-router-dom';
import Page from '../../components/page/www/page.jsx';
import render from '../../lib/render.jsx';
import StudioTabNav from './studio-tab-nav.jsx';
import StudioProjects from './studio-projects.jsx';
import StudioInfo from './studio-info.jsx';
import StudioCurators from './studio-curators.jsx';
import StudioComments from './studio-comments.jsx';
import StudioActivity from './studio-activity.jsx';
const StudioShell = () => {
const match = useRouteMatch();
return (
<div style={{maxWidth: '960px', margin: 'auto'}}>
<StudioInfo />
<hr />
<StudioTabNav />
<div>
<Switch>
<Route path={`${match.path}/curators`}>
<StudioCurators />
</Route>
<Route path={`${match.path}/comments`}>
<StudioComments />
</Route>
<Route path={`${match.path}/activity`}>
<StudioActivity />
</Route>
<Route path={`${match.path}/projects`}>
{/* We can force /projects back to / this way */}
<Redirect to={match.url} />
</Route>
<Route path={match.path}>
<StudioProjects />
</Route>
</Switch>
</div>
</div>
);
};
render(
<Page>
<Router>
<Switch>
{/* Use variable studioPath to support /studio-playground/ or future route */}
<Route path="/:studioPath/:studioId">
<StudioShell />
</Route>
</Switch>
</Router>
</Page>,
document.getElementById('app')
);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment