diff --git a/packages/strapi-admin/files/admin/src/app.js b/packages/strapi-admin/files/admin/src/app.js
index 9027ef4050..061fd53910 100644
--- a/packages/strapi-admin/files/admin/src/app.js
+++ b/packages/strapi-admin/files/admin/src/app.js
@@ -10,58 +10,32 @@ import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
-import { applyRouterMiddleware, Router, browserHistory } from 'react-router';
-import { syncHistoryWithStore } from 'react-router-redux';
-import useScroll from 'react-router-scroll';
+import { ConnectedRouter } from 'react-router-redux';
+import createHistory from 'history/createBrowserHistory';
import _ from 'lodash';
import 'sanitize.css/sanitize.css';
import LanguageProvider from 'containers/LanguageProvider';
-import NotificationProvider from 'containers/NotificationProvider';
-import { selectLocationState } from 'containers/App/selectors';
+
import App from 'containers/App';
import { showNotification } from 'containers/NotificationProvider/actions';
import { pluginLoaded, updatePlugin } from 'containers/App/actions';
-import createRoutes from './routes';
import configureStore from './store';
import { translationMessages, languages } from './i18n';
// Create redux store with history
-// this uses the singleton browserHistory provided by react-router
-// Optionally, this could be changed to leverage a created history
-// e.g. `const browserHistory = useRouterHistory(createBrowserHistory)();`
const initialState = {};
-const store = configureStore(initialState, browserHistory);
-
-// Sync history and store, as the react-router-redux reducer
-// is under the non-default key ("routing"), selectLocationState
-// must be provided for resolving how to retrieve the "route" in the state
-const history = syncHistoryWithStore(browserHistory, store, {
- selectLocationState: selectLocationState(),
-});
-
-// Set up the router, wrapping all Routes in the App component
-const rootRoute = {
- component: App,
- childRoutes: createRoutes(store),
-};
+const history = createHistory();
+const store = configureStore(initialState, history);
const render = (translatedMessages) => {
ReactDOM.render(
-
-
-
+
+
+ ,
document.getElementById('app')
@@ -160,7 +134,7 @@ window.Strapi = {
store.dispatch(updatePlugin(pluginId, 'leftMenuSections', leftMenuSectionsUpdated));
},
}),
- router: browserHistory,
+ // router: browserHistory,
languages,
};
diff --git a/packages/strapi-admin/files/admin/src/components/LeftMenuHeader/index.js b/packages/strapi-admin/files/admin/src/components/LeftMenuHeader/index.js
index 9acbe43b18..b17b7f6d6f 100644
--- a/packages/strapi-admin/files/admin/src/components/LeftMenuHeader/index.js
+++ b/packages/strapi-admin/files/admin/src/components/LeftMenuHeader/index.js
@@ -5,7 +5,7 @@
*/
import React from 'react';
-import { Link } from 'react-router';
+import { Link } from 'react-router-dom';
import styles from './styles.scss';
@@ -13,7 +13,7 @@ class LeftMenuHeader extends React.Component { // eslint-disable-line react/pref
render() {
return (
-
+
diff --git a/packages/strapi-admin/files/admin/src/components/LeftMenuLink/index.js b/packages/strapi-admin/files/admin/src/components/LeftMenuLink/index.js
index 8a6fa18c98..33f952067f 100644
--- a/packages/strapi-admin/files/admin/src/components/LeftMenuLink/index.js
+++ b/packages/strapi-admin/files/admin/src/components/LeftMenuLink/index.js
@@ -7,7 +7,7 @@
import _ from 'lodash';
import React from 'react';
import { FormattedMessage } from 'react-intl';
-import { Link } from 'react-router';
+import { Link } from 'react-router-dom';
import styles from './styles.scss';
diff --git a/packages/strapi-admin/files/admin/src/components/LeftMenuLinkContainer/index.js b/packages/strapi-admin/files/admin/src/components/LeftMenuLinkContainer/index.js
index 68bcb759dd..cf7e79290f 100644
--- a/packages/strapi-admin/files/admin/src/components/LeftMenuLinkContainer/index.js
+++ b/packages/strapi-admin/files/admin/src/components/LeftMenuLinkContainer/index.js
@@ -68,17 +68,17 @@ class LeftMenuLinkContainer extends React.Component { // eslint-disable-line rea
diff --git a/packages/strapi-admin/files/admin/src/containers/AdminPage/index.js b/packages/strapi-admin/files/admin/src/containers/AdminPage/index.js
new file mode 100644
index 0000000000..9d2096c52e
--- /dev/null
+++ b/packages/strapi-admin/files/admin/src/containers/AdminPage/index.js
@@ -0,0 +1,73 @@
+/*
+ * AdminPage
+ *
+ * This is the first thing users see of our AdminPage, at the '/' route
+ *
+ * NOTE: while this component should technically be a stateless functional
+ * component (SFC), hot reloading does not currently support SFCs. If hot
+ * reloading is not a neccessity for you then you can refactor it and remove
+ * the linting exception.
+ */
+
+import React from 'react';
+import { connect } from 'react-redux';
+import { createStructuredSelector } from 'reselect';
+import { Switch, Route } from 'react-router-dom';
+
+import HomePage from 'containers/HomePage';
+import PluginPage from 'containers/PluginPage';
+import ComingSoonPage from 'containers/ComingSoonPage';
+import LeftMenu from 'containers/LeftMenu';
+import Content from 'containers/Content';
+import NotFoundPage from 'containers/NotFoundPage';
+
+import { selectPlugins } from 'containers/App/selectors';
+import { hideNotification } from 'containers/NotificationProvider/actions';
+
+import Header from 'components/Header/index';
+
+import styles from './syles.scss';
+
+export class AdminPage extends React.Component { // eslint-disable-line react/prefer-stateless-function
+ render() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+AdminPage.contextTypes = {
+ router: React.PropTypes.object.isRequired,
+};
+
+AdminPage.propTypes = {
+ plugins: React.PropTypes.object.isRequired,
+};
+
+const mapStateToProps = createStructuredSelector({
+ plugins: selectPlugins(),
+});
+
+function mapDispatchToProps(dispatch) {
+ return {
+ onHideNotification: (id) => { dispatch(hideNotification(id)); },
+ dispatch,
+ };
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(AdminPage);
diff --git a/packages/strapi-admin/files/admin/src/containers/HomePage/syles.scss b/packages/strapi-admin/files/admin/src/containers/AdminPage/syles.scss
similarity index 65%
rename from packages/strapi-admin/files/admin/src/containers/HomePage/syles.scss
rename to packages/strapi-admin/files/admin/src/containers/AdminPage/syles.scss
index f83d2c60e4..8a0e52d152 100644
--- a/packages/strapi-admin/files/admin/src/containers/HomePage/syles.scss
+++ b/packages/strapi-admin/files/admin/src/containers/AdminPage/syles.scss
@@ -1,10 +1,10 @@
/* Import */
@import '../../styles/variables/variables';
-.homePage { /* stylelint-disable */
+.adminPage { /* stylelint-disable */
display: flex;
}
-.homePageRightWrapper {
+.adminPageRightWrapper {
width: calc(100% - #{$left-menu-width});
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-admin/files/admin/src/containers/App/index.js b/packages/strapi-admin/files/admin/src/containers/App/index.js
index 547af7f104..ec002821ca 100644
--- a/packages/strapi-admin/files/admin/src/containers/App/index.js
+++ b/packages/strapi-admin/files/admin/src/containers/App/index.js
@@ -1,6 +1,6 @@
/**
*
- * App.react.js
+ * App.js
*
* This component is the skeleton around the actual pages, and should only
* contain code that should be seen on all pages. (e.g. navigation bar)
@@ -12,14 +12,13 @@
*/
import React from 'react';
-import { connect } from 'react-redux';
-import { createStructuredSelector } from 'reselect';
+import { Switch, Route } from 'react-router-dom';
-import { hideNotification } from 'containers/NotificationProvider/actions';
-import { selectNotifications } from 'containers/NotificationProvider/selectors';
-import NotificationsContainer from 'components/NotificationsContainer';
+import AdminPage from 'containers/AdminPage';
+import NotFoundPage from 'containers/NotFoundPage';
+
+import NotificationProvider from 'containers/NotificationProvider';
-import { selectPlugins } from './selectors';
import '../../styles/main.scss';
import styles from './styles.scss';
@@ -27,9 +26,12 @@ export class App extends React.Component { // eslint-disable-line react/prefer-s
render() {
return (