diff --git a/.gitignore b/.gitignore index 52af148430..0d97c963ca 100755 --- a/.gitignore +++ b/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-admin/.gitignore b/packages/strapi-admin/.gitignore index dc91ebd729..f25de1b578 100755 --- a/packages/strapi-admin/.gitignore +++ b/packages/strapi-admin/.gitignore @@ -91,6 +91,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-admin/files/config/admin.json b/packages/strapi-admin/files/config/admin.json new file mode 100644 index 0000000000..e55c6baf82 --- /dev/null +++ b/packages/strapi-admin/files/config/admin.json @@ -0,0 +1,3 @@ +{ + "languages": ["en", "fr"] +} diff --git a/packages/strapi-admin/files/public/app/.htaccess b/packages/strapi-admin/files/public/app/.htaccess deleted file mode 100644 index 5204b4b3a3..0000000000 --- a/packages/strapi-admin/files/public/app/.htaccess +++ /dev/null @@ -1,44 +0,0 @@ - - - - ####################################################################### - # GENERAL # - ####################################################################### - - # Make apache follow sym links to files - Options +FollowSymLinks - # If somebody opens a folder, hide all files from the resulting folder list - IndexIgnore */* - - - ####################################################################### - # REWRITING # - ####################################################################### - - # Enable rewriting - RewriteEngine On - - # If its not HTTPS - RewriteCond %{HTTPS} off - - # Comment out the RewriteCond above, and uncomment the RewriteCond below if you're using a load balancer (e.g. CloudFlare) for SSL - # RewriteCond %{HTTP:X-Forwarded-Proto} !https - - # Redirect to the same URL with https://, ignoring all further rules if this one is in effect - RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [R,L] - - # If we get to here, it means we are on https:// - - # If the file with the specified name in the browser doesn't exist - RewriteCond %{REQUEST_FILENAME} !-f - - # and the directory with the specified name in the browser doesn't exist - RewriteCond %{REQUEST_FILENAME} !-d - - # and we are not opening the root already (otherwise we get a redirect loop) - RewriteCond %{REQUEST_FILENAME} !\/$ - - # Rewrite all requests to the root - RewriteRule ^(.*) / - - diff --git a/packages/strapi-admin/files/public/app/.nginx.conf b/packages/strapi-admin/files/public/app/.nginx.conf deleted file mode 100644 index cf6b6ca6c6..0000000000 --- a/packages/strapi-admin/files/public/app/.nginx.conf +++ /dev/null @@ -1,66 +0,0 @@ -## -# Put this file in /etc/nginx/conf.d folder and make sure -# you have line 'include /etc/nginx/conf.d/*.conf;' -# in your main nginx configuration file -## - -## -# Redirect to the same URL with https:// -## - -server { - - listen 80; - -# Type your domain name below - server_name example.com; - - return 301 https://$server_name$request_uri; - -} - -## -# HTTPS configurations -## - -server { - - listen 443; - -# Type your domain name below - server_name example.com; - - ssl on; - ssl_certificate /path/to/certificate.crt; - ssl_certificate_key /path/to/server.key; - -# Use only TSL protocols for more secure - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - -# Always serve index.html for any request - location / { - # Set path - root /var/www/; - try_files $uri /index.html; - } - -## -# If you want to use Node/Rails/etc. API server -# on the same port (443) config Nginx as a reverse proxy. -# For security reasons use a firewall like ufw in Ubuntu -# and deny port 3000/tcp. -## - -# location /api/ { -# -# proxy_pass http://localhost:3000; -# proxy_http_version 1.1; -# proxy_set_header X-Forwarded-Proto https; -# proxy_set_header Upgrade $http_upgrade; -# proxy_set_header Connection 'upgrade'; -# proxy_set_header Host $host; -# proxy_cache_bypass $http_upgrade; -# -# } - -} diff --git a/packages/strapi-admin/files/public/app/app.js b/packages/strapi-admin/files/public/app/app.js index d1ca42dee9..fe3647245d 100644 --- a/packages/strapi-admin/files/public/app/app.js +++ b/packages/strapi-admin/files/public/app/app.js @@ -6,12 +6,6 @@ */ import 'babel-polyfill'; -/* eslint-disable import/no-unresolved */ -// Load the manifest.json file and the .htaccess file -import '!file?name=[name].[ext]!./manifest.json'; -import 'file?name=[name].[ext]!./.htaccess'; -/* eslint-enable import/no-unresolved */ - // Import all the third party stuff import React from 'react'; import ReactDOM from 'react-dom'; @@ -25,7 +19,7 @@ import NotificationProvider from 'containers/NotificationProvider'; import configureStore from './store'; // Import i18n messages -import { translationMessages } from './i18n'; +import { translationMessages, languages } from './i18n'; // Import the CSS reset, which HtmlWebpackPlugin transfers to the build folder import 'sanitize.css/sanitize.css'; @@ -115,34 +109,30 @@ import { pluginLoaded, updatePlugin } from './containers/App/actions'; * @param params */ const registerPlugin = (plugin) => { + const formattedPlugin = plugin; + // Add routes // Initial list of routes const homeRoute = rootRoute.childRoutes[0]; const pluginsRoute = _.find(homeRoute.childRoutes, { name: 'plugins' }); // Create a new prefixed route for each plugin routes - if (plugin && plugin.routes) { - plugin.routes.forEach(route => { + if (formattedPlugin && formattedPlugin.routes) { + formattedPlugin.routes.forEach(route => { pluginsRoute.childRoutes.push({ - path: `/plugins/${plugin.id}${route.path}`, - name: `plugins_${plugin.id}_${route.name}`, + path: `/plugins/${formattedPlugin.id}${route.path}`, + name: `plugins_${formattedPlugin.id}_${route.name}`, getComponent: route.getComponent, }); }); } - // TMP - // setTimeout(() => { - // store.dispatch(showNotification('Plugin loaded!', 'success')); - // store.dispatch(showNotification('Oooooops!', 'warning')); - // store.dispatch(showNotification('An error occurred!', 'error')); - // store.dispatch(showNotification('Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis earum fugiat inventore iste. Accusantium cumque dolor ducimus esse ex fugiat natus nulla qui ratione ullam vero, voluptas voluptate? Officia, tempora!', 'info')); - // }, 500); - // Merge admin translation messages - _.merge(translationMessages, plugin.translationMessages); + _.merge(translationMessages, formattedPlugin.translationMessages); - store.dispatch(pluginLoaded(plugin)); + formattedPlugin.leftMenuSections = formattedPlugin.leftMenuSections || []; + + store.dispatch(pluginLoaded(formattedPlugin)); }; import { showNotification } from './containers/NotificationProvider/actions'; @@ -176,11 +166,12 @@ window.Strapi = { translationMessages: (translationMessagesUpdated) => { render(_.merge({}, translationMessages, translationMessagesUpdated)); }, - leftMenuLinks: (leftMenuLinksUpdated) => { - store.dispatch(updatePlugin(pluginId, 'leftMenuLinks', leftMenuLinksUpdated)); + leftMenuSections: (leftMenuSectionsUpdated) => { + store.dispatch(updatePlugin(pluginId, 'leftMenuSections', leftMenuSectionsUpdated)); }, }), router: browserHistory, + languages, }; const dispatch = store.dispatch; diff --git a/packages/strapi-admin/files/public/app/assets/images/baseline-18.png b/packages/strapi-admin/files/public/app/assets/images/baseline-18.png deleted file mode 100644 index 69ef4359cc..0000000000 Binary files a/packages/strapi-admin/files/public/app/assets/images/baseline-18.png and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/assets/images/baseline-20.png b/packages/strapi-admin/files/public/app/assets/images/baseline-20.png deleted file mode 100644 index 0453b6dc57..0000000000 Binary files a/packages/strapi-admin/files/public/app/assets/images/baseline-20.png and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/components/Header/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Header/tests/index.test.js deleted file mode 100644 index 0143715cab..0000000000 --- a/packages/strapi-admin/files/public/app/components/Header/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import Header from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('
', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuFooter/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuFooter/index.js index b562dbebfb..a61ce4a685 100644 --- a/packages/strapi-admin/files/public/app/components/LeftMenuFooter/index.js +++ b/packages/strapi-admin/files/public/app/components/LeftMenuFooter/index.js @@ -5,12 +5,11 @@ */ import React from 'react'; -import { FormattedMessage } from 'react-intl'; +import { defineMessages, FormattedMessage } from 'react-intl'; import styles from './styles.scss'; import LocaleToggle from 'containers/LocaleToggle'; import messages from './messages.json'; -import { define } from '../../i18n'; -define(messages); +defineMessages(messages); class LeftMenuFooter extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuFooter/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuFooter/tests/index.test.js deleted file mode 100644 index 204781bbd5..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuFooter/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenuFooter from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuHeader/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuHeader/tests/index.test.js deleted file mode 100644 index 7192ae1225..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuHeader/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenuHeader from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLink/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuLink/index.js index 3f82618c6f..c2d13eb4f3 100644 --- a/packages/strapi-admin/files/public/app/components/LeftMenuLink/index.js +++ b/packages/strapi-admin/files/public/app/components/LeftMenuLink/index.js @@ -7,21 +7,10 @@ import React from 'react'; import styles from './styles.scss'; import { Link } from 'react-router'; -import LeftMenuSubLinkContainer from 'components/LeftMenuSubLinkContainer'; import _ from 'lodash'; class LeftMenuLink extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { - let subLinksContainer; - if (this.props.leftMenuLinks && this.props.leftMenuLinks.size) { - subLinksContainer = ( - - ); - } - // We need to create our own active url checker, // because of the two levels router. const isLinkActive = _.startsWith(window.location.pathname.replace('/admin', ''), this.props.destination); @@ -32,7 +21,6 @@ class LeftMenuLink extends React.Component { // eslint-disable-line react/prefer {this.props.label} - {subLinksContainer} ); } @@ -43,7 +31,7 @@ LeftMenuLink.propTypes = { label: React.PropTypes.string, destination: React.PropTypes.string, isActive: React.PropTypes.bool, - leftMenuLinks: React.PropTypes.object, + leftMenuSections: React.PropTypes.object, }; export default LeftMenuLink; diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLink/styles.scss b/packages/strapi-admin/files/public/app/components/LeftMenuLink/styles.scss index 84b3e95072..6daa80ac59 100644 --- a/packages/strapi-admin/files/public/app/components/LeftMenuLink/styles.scss +++ b/packages/strapi-admin/files/public/app/components/LeftMenuLink/styles.scss @@ -2,29 +2,27 @@ @import "../../styles/variables/variables"; .link { - padding-top: 1rem; - padding-bottom: 0.2rem; + padding-top: .8rem; + padding-bottom: 0.4rem; padding-left: 1.6rem; - min-height: 4rem; - border-left: 0.4rem solid transparent; + min-height: 3.6rem; + border-left: 0.3rem solid transparent; cursor: pointer; color: $left-menu-link-color; text-decoration: none; display: block; &:hover { + color: $white; background: $left-menu-link-hover; - border-left: 0.4rem solid $strapi-blue; - } - - &:hover { - color: $left-menu-link-color; + border-left: 0.3rem solid $strapi-blue; text-decoration: none; } } .linkActive { - border-left: 0.4rem solid $strapi-blue; + color: $white; + border-left: 0.3rem solid $strapi-blue; } .linkIcon { @@ -32,8 +30,9 @@ margin-right: 1.2rem; vertical-align: middle; font-size: 1.2rem; - width: 1.2rem; - padding-bottom: 0.4rem; + width: 1.4rem; + height: 1.2rem; + padding-bottom: 0.2rem; text-align: center; } diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLink/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuLink/tests/index.test.js deleted file mode 100644 index ebadef1337..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuLink/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenuLink from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/index.js index 635b9cbc23..d9a06963fd 100644 --- a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/index.js +++ b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/index.js @@ -10,46 +10,74 @@ import styles from './styles.scss'; class LeftMenuLinkContainer extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { + // Generate the list of sections + const linkSections = this.props.plugins.valueSeq().map(plugin => ( + plugin.get('leftMenuSections').map((leftMenuSection, j) => { + const sectionlinks = leftMenuSection.get('links').map((sectionLink, k) => ( + + )); + + return ( +
+

{leftMenuSection.get('name')}

+
    + {sectionlinks} +
+
+ ); + }) + )); + + // List of links - let links = this.props.plugins.valueSeq().map((plugin) => ( + let pluginsLinks = this.props.plugins.valueSeq().map((plugin) => ( )); // Check if the plugins list is empty or not - if (!links.size) { - links = No plugins installed yet.; + if (!pluginsLinks.size) { + pluginsLinks = No plugins installed yet.; } return (
-

Plugins

-
    - {links} -
-

General

-
    - - - -
+ {linkSections} +
+

Plugins

+
    + {pluginsLinks} +
+
+
+

General

+
    + + + +
+
); } diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/styles.scss b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/styles.scss index 3b409749ac..6ae3b3ad6f 100644 --- a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/styles.scss +++ b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/styles.scss @@ -2,24 +2,25 @@ @import "../../styles/variables/variables"; .leftMenuLinkContainer { /* stylelint-ignore */ - padding-top: 1.4rem; + padding-top: .6rem; } .title { padding-left: 2rem; padding-right: 1.6rem; padding-top: 1.2rem; - margin-bottom: 1rem; + margin-bottom: .6rem; color: $left-menu-title-color; text-transform: uppercase; font-size: 1.1rem; - letter-spacing: .1rem; + letter-spacing: .2rem; + font-weight: 600; } .list { list-style: none; padding: 0; - margin-bottom: 2.2rem; + margin-bottom: 2rem; } .noPluginsInstalled { diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/tests/index.test.js deleted file mode 100644 index 2f053a8462..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenuLinkContainer from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/index.js deleted file mode 100644 index 363b907d1a..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/** -* -* LeftMenuLink -* -*/ - -import React from 'react'; -import styles from './styles.scss'; -import { Link } from 'react-router'; - -class LeftMenuSubLink extends React.Component { // eslint-disable-line react/prefer-stateless-function - render() { - return ( -
  • - - {this.props.label} - -
  • - ); - } -} - -LeftMenuSubLink.propTypes = { - label: React.PropTypes.string, - destination: React.PropTypes.string, -}; - -export default LeftMenuSubLink; diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/styles.scss b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/styles.scss deleted file mode 100644 index 132bd7cc51..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/styles.scss +++ /dev/null @@ -1,31 +0,0 @@ -// Import -@import "../../styles/variables/variables"; - -.leftMenuLink { /* stylelint-ignore */ - padding-top: 0.5rem; - padding-bottom: 0.2rem; - min-height: 3rem; - cursor: pointer; - font-size: 1.2rem; -} - -.link { - color: $left-menu-link-color; - padding-left: 5.8rem; - text-decoration: none; - display: block; - - &:hover { - color: $white; - text-decoration: none; - } -} - -.linkActive { - color: $white; -} - -.linkLabel { - display: inline-block; - padding-right: 1rem; -} diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/tests/index.test.js deleted file mode 100644 index c8182310e8..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenuLink from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/index.js deleted file mode 100644 index a5aba88f8f..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/index.js +++ /dev/null @@ -1,35 +0,0 @@ -/** -* -* LeftMenuLinkContainer -* -*/ - -import React from 'react'; -import LeftMenuSubLink from 'components/LeftMenuSubLink'; -import styles from './styles.scss'; - -class LeftMenuSubLinkContainer extends React.Component { // eslint-disable-line react/prefer-stateless-function - render() { - // List of links - let links = this.props.subLinks.map((subLink, i) => ( - - )); - - return ( -
      - {links} -
    - ); - } -} - -LeftMenuSubLinkContainer.propTypes = { - subLinks: React.PropTypes.object, - destinationPrefix: React.PropTypes.string, -}; - -export default LeftMenuSubLinkContainer; diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/styles.scss b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/styles.scss deleted file mode 100644 index 2a57c03899..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/styles.scss +++ /dev/null @@ -1,28 +0,0 @@ -// Import -@import "../../styles/variables/variables"; - -.leftMenuLinkContainer { /* stylelint-ignore */ - padding-top: 2.2rem; -} - -.title { - //min-height: 3rem; - padding-left: 1.6rem; - padding-right: 1.6rem; - margin-bottom: 1rem; - color: $left-menu-title-color; - text-transform: uppercase; -} - -.list { - list-style: none; - padding: 0; - margin-bottom: 0.9rem; -} - -.noPluginsInstalled { - color: $white; - padding-left: 1.6rem; - padding-right: 1.6rem; - font-weight: 300; -} \ No newline at end of file diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/tests/index.test.js deleted file mode 100644 index 2f053a8462..0000000000 --- a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenuLinkContainer from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/Notification/index.js b/packages/strapi-admin/files/public/app/components/Notification/index.js index 77451aaa86..5632836082 100644 --- a/packages/strapi-admin/files/public/app/components/Notification/index.js +++ b/packages/strapi-admin/files/public/app/components/Notification/index.js @@ -1,10 +1,11 @@ /** -* -* Notification -* -*/ + * + * Notification + * + */ import React from 'react'; +import { FormattedMessage } from 'react-intl'; import styles from './styles.scss'; @@ -44,7 +45,7 @@ class Notification extends React.Component { // eslint-disable-line react/prefer

    {options.title}: - {this.props.notification.message} +

    diff --git a/packages/strapi-admin/files/public/app/components/Notification/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Notification/tests/index.test.js deleted file mode 100644 index 508d2015ef..0000000000 --- a/packages/strapi-admin/files/public/app/components/Notification/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import Notification from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/NotificationsContainer/tests/index.test.js b/packages/strapi-admin/files/public/app/components/NotificationsContainer/tests/index.test.js deleted file mode 100644 index 8cdfeaf430..0000000000 --- a/packages/strapi-admin/files/public/app/components/NotificationsContainer/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import NotificationsContainer from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/Plugin/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Plugin/tests/index.test.js deleted file mode 100644 index 0e8eccde98..0000000000 --- a/packages/strapi-admin/files/public/app/components/Plugin/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import Plugin from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeader/tests/index.test.js b/packages/strapi-admin/files/public/app/components/PluginHeader/tests/index.test.js deleted file mode 100644 index 95485cdec1..0000000000 --- a/packages/strapi-admin/files/public/app/components/PluginHeader/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import PluginHeader from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeaderActions/index.js b/packages/strapi-admin/files/public/app/components/PluginHeaderActions/index.js index 699ba35395..5b85f6739c 100644 --- a/packages/strapi-admin/files/public/app/components/PluginHeaderActions/index.js +++ b/packages/strapi-admin/files/public/app/components/PluginHeaderActions/index.js @@ -18,7 +18,7 @@ class PluginHeaderActions extends React.Component { // eslint-disable-line react onClick={action.onClick} disabled={action.disabled} > - + )); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeaderActions/tests/index.test.js b/packages/strapi-admin/files/public/app/components/PluginHeaderActions/tests/index.test.js deleted file mode 100644 index 1a79209b66..0000000000 --- a/packages/strapi-admin/files/public/app/components/PluginHeaderActions/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import PluginHeaderActions from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(false); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/index.js b/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/index.js index 7e835218a8..5a414be32c 100644 --- a/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/index.js +++ b/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/index.js @@ -14,7 +14,7 @@ class PluginHeaderTitle extends React.Component { // eslint-disable-line react/p return (

    - +

    diff --git a/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/tests/index.test.js b/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/tests/index.test.js deleted file mode 100644 index 7da191658d..0000000000 --- a/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import PluginHeaderTitle from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/Toggle/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Toggle/tests/index.test.js deleted file mode 100644 index 708704bbe1..0000000000 --- a/packages/strapi-admin/files/public/app/components/Toggle/tests/index.test.js +++ /dev/null @@ -1,29 +0,0 @@ -import Toggle from '../index'; - -import expect from 'expect'; -import { shallow } from 'enzyme'; -import { IntlProvider, defineMessages } from 'react-intl'; -import React from 'react'; - -describe('', () => { - it('should contain default text', () => { - const defaultEnMessage = 'someContent'; - const defaultDeMessage = 'someOtherContent'; - const messages = defineMessages({ - en: { - id: 'app.components.LocaleToggle.en', - defaultMessage: defaultEnMessage, - }, - de: { - id: 'app.components.LocaleToggle.en', - defaultMessage: defaultDeMessage, - }, - }); - const renderedComponent = shallow( - - - - ); - expect(renderedComponent.contains()).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/components/ToggleOption/tests/index.test.js b/packages/strapi-admin/files/public/app/components/ToggleOption/tests/index.test.js deleted file mode 100644 index 0c208dd74d..0000000000 --- a/packages/strapi-admin/files/public/app/components/ToggleOption/tests/index.test.js +++ /dev/null @@ -1,24 +0,0 @@ -import ToggleOption from '../index'; - -import expect from 'expect'; -import { shallow } from 'enzyme'; -import { IntlProvider, defineMessages } from 'react-intl'; -import React from 'react'; - -describe('', () => { - it('should render default language messages', () => { - const defaultEnMessage = 'someContent'; - const message = defineMessages({ - enMessage: { - id: 'app.components.LocaleToggle.en', - defaultMessage: defaultEnMessage, - }, - }); - const renderedComponent = shallow( - - - - ); - expect(renderedComponent.contains()).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/App/index.js b/packages/strapi-admin/files/public/app/containers/App/index.js index e6d552741d..43f62a6ca9 100644 --- a/packages/strapi-admin/files/public/app/containers/App/index.js +++ b/packages/strapi-admin/files/public/app/containers/App/index.js @@ -27,7 +27,6 @@ export class App extends React.Component { // eslint-disable-line react/prefer-s

    -
    {React.Children.toArray(this.props.children)}
    diff --git a/packages/strapi-admin/files/public/app/containers/App/styles.scss b/packages/strapi-admin/files/public/app/containers/App/styles.scss index 5639ac98fd..58e3844478 100644 --- a/packages/strapi-admin/files/public/app/containers/App/styles.scss +++ b/packages/strapi-admin/files/public/app/containers/App/styles.scss @@ -9,17 +9,3 @@ .container { display: block; } - -.baseline { - display: none; - z-index: 100001; - opacity: .2; - position: absolute; - top:0; left:0; - width: 100%; - height: 500%; - min-height: 100%; - //background: url('../../assets/images/baseline-18.png'); - background: url('../../assets/images/baseline-20.png'); - pointer-events: none; -} diff --git a/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js b/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js deleted file mode 100644 index cb0e798e47..0000000000 --- a/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js +++ /dev/null @@ -1,16 +0,0 @@ -import { fromJS } from 'immutable'; -import expect from 'expect'; - -import { selectLocationState } from 'containers/App/selectors'; - -describe('selectLocationState', () => { - it('should select the route as a plain JS object', () => { - const route = fromJS({ - locationBeforeTransitions: null, - }); - const mockedState = fromJS({ - route, - }); - expect(selectLocationState()(mockedState)).toEqual(route.toJS()); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js deleted file mode 100644 index a621dc18b4..0000000000 --- a/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import ComingSoonPage from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(false); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js deleted file mode 100644 index 730d472306..0000000000 --- a/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import Content from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js deleted file mode 100644 index 6d710cb20e..0000000000 --- a/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import HomePage from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js deleted file mode 100644 index e4978dbbc1..0000000000 --- a/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import LeftMenu from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js b/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js index 5883b99625..f5807a71fa 100644 --- a/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js +++ b/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js @@ -8,7 +8,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { selectLocale } from '../LanguageProvider/selectors'; import { changeLocale } from '../LanguageProvider/actions'; -import { appLocales } from '../../i18n'; +import { languages } from '../../i18n'; import { createSelector } from 'reselect'; import styles from './styles.scss'; import Toggle from 'components/Toggle'; @@ -16,11 +16,11 @@ import Toggle from 'components/Toggle'; export class LocaleToggle extends React.Component { // eslint-disable-line render() { const messages = {}; - appLocales.forEach(locale => { messages[locale] = locale.toUpperCase(); }); + languages.forEach(locale => { messages[locale] = locale.toUpperCase(); }); return (
    - +
    ); } diff --git a/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js deleted file mode 100644 index 2bbbd2ce2a..0000000000 --- a/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js +++ /dev/null @@ -1,60 +0,0 @@ -import LocaleToggle, { mapDispatchToProps } from '../index'; -import { changeLocale } from '../../LanguageProvider/actions'; -import LanguageProvider from '../../LanguageProvider'; - -import expect from 'expect'; -import { shallow, mount } from 'enzyme'; -import configureStore from '../../../store'; -import React from 'react'; -import { Provider } from 'react-redux'; -import { browserHistory } from 'react-router'; -import { translationMessages } from '../../../i18n'; - -describe('', () => { - let store; - - before(() => { - store = configureStore({}, browserHistory); - }); - - it('should render the default language messages', () => { - const renderedComponent = shallow( - - - - - - ); - expect(renderedComponent.contains()).toEqual(true); - }); - - it('should present the default `en` english language option', () => { - const renderedComponent = mount( - - - - - - ); - expect(renderedComponent.contains()).toEqual(true); - }); - - describe('mapDispatchToProps', () => { - describe('onLocaleToggle', () => { - it('should be injected', () => { - const dispatch = expect.createSpy(); - const result = mapDispatchToProps(dispatch); - expect(result.onLocaleToggle).toExist(); - }); - - it('should dispatch changeLocale when called', () => { - const dispatch = expect.createSpy(); - const result = mapDispatchToProps(dispatch); - const locale = 'de'; - const evt = { target: { value: locale } }; - result.onLocaleToggle(evt); - expect(dispatch).toHaveBeenCalledWith(changeLocale(locale)); - }); - }); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js b/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js index 34c70b707e..55cc89b24a 100644 --- a/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js +++ b/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js @@ -10,15 +10,13 @@ */ import React from 'react'; -import { FormattedMessage } from 'react-intl'; +import { defineMessages, FormattedMessage } from 'react-intl'; import styles from './styles.scss'; import { Link } from 'react-router'; import messages from './messages.json'; -import { define } from '../../i18n'; -define(messages); +defineMessages(messages); export default class NotFound extends React.Component { // eslint-disable-line react/prefer-stateless-function - render() { return (
    diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js deleted file mode 100644 index f8017baeb0..0000000000 --- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js +++ /dev/null @@ -1,24 +0,0 @@ -import expect from 'expect'; -import { - showNotification, -} from '../actions'; -import { - SHOW_NOTIFICATION, -} from '../constants'; - -describe('NotificationProvider actions', () => { - describe('Default Action', () => { - it('has a type of SHOW_NOTIFICATION', () => { - const message = 'Well done!'; - const status = 'success'; - - const expected = { - type: SHOW_NOTIFICATION, - message, - status, - id: 1, - }; - expect(showNotification(expected.message, expected.status)).toEqual(expected); - }); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js deleted file mode 100644 index 02b3094178..0000000000 --- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import NotificationProvider from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js deleted file mode 100644 index 2bae1949c7..0000000000 --- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js +++ /dev/null @@ -1,11 +0,0 @@ -import expect from 'expect'; -import notificationProviderReducer from '../reducer'; -import { fromJS } from 'immutable'; - -describe('notificationProviderReducer', () => { - it('returns the initial state', () => { - expect(notificationProviderReducer(undefined, {})).toEqual(fromJS({ - notifications: [], - })); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js deleted file mode 100644 index 0327607ee7..0000000000 --- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import { selectNotificationProviderDomain } from '../selectors'; -// import { fromJS } from 'immutable'; -import expect from 'expect'; - -// const selector = selectNotificationProviderDomain(); - -describe('selectNotificationProviderDomain', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js deleted file mode 100644 index 76ca281b4d..0000000000 --- a/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js +++ /dev/null @@ -1,11 +0,0 @@ -// import PluginPage from '../index'; - -import expect from 'expect'; -// import { shallow } from 'enzyme'; -// import React from 'react'; - -describe('', () => { - it('Expect to have unit tests specified', () => { - expect(true).toEqual(true); - }); -}); diff --git a/packages/strapi-admin/files/public/app/i18n.js b/packages/strapi-admin/files/public/app/i18n.js index 563664f434..a97c69fc24 100644 --- a/packages/strapi-admin/files/public/app/i18n.js +++ b/packages/strapi-admin/files/public/app/i18n.js @@ -5,34 +5,54 @@ * */ -import { addLocaleData, defineMessages } from 'react-intl'; +import { addLocaleData } from 'react-intl'; +import { reduce } from 'lodash'; -import enTranslationMessages from './translations/en.json'; -import frTranslationMessages from './translations/fr.json'; +// Import config +import { languages } from '../../config/admin.json'; -import enLocaleData from 'react-intl/locale-data/en'; -import frLocaleData from 'react-intl/locale-data/fr'; - - -addLocaleData(enLocaleData); -addLocaleData(frLocaleData); - -const appLocales = [ - 'en', - 'fr', -]; - -const translationMessages = { - en: enTranslationMessages, - fr: frTranslationMessages, +/** + * Try to require translation file. + * + * @param language {String} + */ +const requireTranslations = language => { + try { + return require(`./translations/${language}.json`); // eslint-disable-line global-require + } catch (error) { + console.error(`Unable to load "${language}" translation. Please make sure "${language}.json" file exists in "admin/public/app/translations" folder.`); + return false; + } }; -const define = messages => { - defineMessages(messages); +/** + * Try to require the language in `react-intl` locale data + * and add locale data if it has been found. + * + * @param language {String} + */ +const addLanguageLocaleData = language => { + try { + const localeData = require(`react-intl/locale-data/${language}`); // eslint-disable-line global-require + addLocaleData(localeData); + return true; + } catch (error) { + console.error(`It looks like the language "${language}" is not supported by "react-intl" module.`); + return false; + } }; +/** + * Dynamically generate `translationsMessages object`. + */ +const translationMessages = reduce(languages, (result, language) => { + const obj = result; + obj[language] = requireTranslations(language); + addLanguageLocaleData(language); + return obj; +}, {}); + export { - appLocales, - define, + languages, translationMessages, }; diff --git a/packages/strapi-admin/files/public/app/manifest.json b/packages/strapi-admin/files/public/app/manifest.json deleted file mode 100644 index e07264bdd3..0000000000 --- a/packages/strapi-admin/files/public/app/manifest.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "React Boilerplate", - "icons": [ - { - "src": "favicon.png", - "sizes": "48x48", - "type": "image/png", - "density": 1.0 - }, - { - "src": "favicon.png", - "sizes": "96x96", - "type": "image/png", - "density": 2.0 - }, - { - "src": "favicon.png", - "sizes": "144x144", - "type": "image/png", - "density": 3.0 - }, - { - "src": "favicon.png", - "sizes": "192x192", - "type": "image/png", - "density": 4.0 - } - ], - "start_url": "index.html", - "display": "standalone", - "orientation": "portrait", - "background_color": "#FFFFFF" -} \ No newline at end of file diff --git a/packages/strapi-admin/files/public/app/styles/base/fonts.scss b/packages/strapi-admin/files/public/app/styles/base/fonts.scss index 9a28a8f4e1..da9a7dba27 100644 --- a/packages/strapi-admin/files/public/app/styles/base/fonts.scss +++ b/packages/strapi-admin/files/public/app/styles/base/fonts.scss @@ -1,217 +1,146 @@ -/* Webfont: Lato-Black */@font-face { - font-family: 'LatoWebBlack'; - src: url('styles/fonts/lato/Lato-Black.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Black.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Black.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Black.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Black.ttf') format('truetype'); +/* Lato (hairline, regular) */ +@font-face { + font-family: Lato; + font-weight: 100; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-hairline/lato-hairline.woff2") format("woff2"), url("styles/fonts/lato/lato-hairline/lato-hairline.woff") format("woff"); } - -/* Webfont: Lato-BlackItalic */@font-face { - font-family: 'LatoWebBlack'; - src: url('styles/fonts/lato/Lato-BlackItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-BlackItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-BlackItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-BlackItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-BlackItalic.ttf') format('truetype'); +/* Lato (hairline, italic) */ +@font-face { + font-family: Lato; + font-weight: 100; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff") format("woff"); } - -/* Webfont: Lato-Bold */@font-face { - font-family: 'LatoWebBold'; - src: url('styles/fonts/lato/Lato-Bold.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Bold.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Bold.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Bold.ttf') format('truetype'); +/* Lato (thin, regular) */ +@font-face { + font-family: Lato; + font-weight: 200; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-thin/lato-thin.woff2") format("woff2"), url("styles/fonts/lato/lato-thin/lato-thin.woff") format("woff"); } - -/* Webfont: Lato-BoldItalic */@font-face { - font-family: 'LatoWebBold'; - src: url('styles/fonts/lato/Lato-BoldItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-BoldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-BoldItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-BoldItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-BoldItalic.ttf') format('truetype'); +/* Lato (thin, italic) */ +@font-face { + font-family: Lato; + font-weight: 200; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff") format("woff"); } - -/* Webfont: Lato-Hairline */@font-face { - font-family: 'LatoWebHairline'; - src: url('styles/fonts/lato/Lato-Hairline.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Hairline.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Hairline.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Hairline.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Hairline.ttf') format('truetype'); +/* Lato (light, regular) */ +@font-face { + font-family: Lato; + font-weight: 300; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-light/lato-light.woff2") format("woff2"), url("styles/fonts/lato/lato-light/lato-light.woff") format("woff"); } - -/* Webfont: Lato-HairlineItalic */@font-face { - font-family: 'LatoWebHairline'; - src: url('styles/fonts/lato/Lato-HairlineItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-HairlineItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-HairlineItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-HairlineItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-HairlineItalic.ttf') format('truetype'); +/* Lato (light, italic) */ +@font-face { + font-family: Lato; + font-weight: 300; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-light-italic/lato-light-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-light-italic/lato-light-italic.woff") format("woff"); } - -/* Webfont: Lato-Heavy */@font-face { - font-family: 'LatoWebHeavy'; - src: url('styles/fonts/lato/Lato-Heavy.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Heavy.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Heavy.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Heavy.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Heavy.ttf') format('truetype'); +/* Lato (normal, regular) */ +@font-face { + font-family: Lato; + font-weight: 400; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-normal/lato-normal.woff2") format("woff2"), url("styles/fonts/lato/lato-normal/lato-normal.woff") format("woff"); } - -/* Webfont: Lato-HeavyItalic */@font-face { - font-family: 'LatoWebHeavy'; - src: url('styles/fonts/lato/Lato-HeavyItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-HeavyItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-HeavyItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-HeavyItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-HeavyItalic.ttf') format('truetype'); +/* Lato (normal, italic) */ +@font-face { + font-family: Lato; + font-weight: 400; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff") format("woff"); } - -/* Webfont: Lato-Italic */@font-face { - font-family: 'LatoWeb'; - src: url('styles/fonts/lato/Lato-Italic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Italic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Italic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Italic.ttf') format('truetype'); - font-style: italic; - font-weight: normal; - text-rendering: optimizeLegibility; -} - -/* Webfont: Lato-Light */@font-face { - font-family: 'LatoWebLight'; - src: url('styles/fonts/lato/Lato-Light.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Light.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Light.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Light.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Light.ttf') format('truetype'); +/* Lato (medium, regular) */ +@font-face { + font-family: "Lato Medium"; + font-weight: 400; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-medium/lato-medium.woff2") format("woff2"), url("styles/fonts/lato/lato-medium/lato-medium.woff") format("woff"); } - -/* Webfont: Lato-LightItalic */@font-face { - font-family: 'LatoWebLight'; - src: url('styles/fonts/lato/Lato-LightItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-LightItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-LightItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-LightItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-LightItalic.ttf') format('truetype'); +/* Lato (medium, italic) */ +@font-face { + font-family: "Lato Medium"; + font-weight: 400; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff") format("woff"); } - -/* Webfont: Lato-Medium */@font-face { - font-family: 'LatoWebMedium'; - src: url('styles/fonts/lato/Lato-Medium.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Medium.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Medium.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Medium.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Medium.ttf') format('truetype'); +/* Lato (semibold, regular) */ +@font-face { + font-family: Lato; + font-weight: 500; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-semibold/lato-semibold.woff2") format("woff2"), url("styles/fonts/lato/lato-semibold/lato-semibold.woff") format("woff"); } - -/* Webfont: Lato-MediumItalic */@font-face { - font-family: 'LatoWebMedium'; - src: url('styles/fonts/lato/Lato-MediumItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-MediumItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-MediumItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-MediumItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-MediumItalic.ttf') format('truetype'); +/* Lato (semibold, italic) */ +@font-face { + font-family: Lato; + font-weight: 500; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff") format("woff"); } - -/* Webfont: Lato-Regular */@font-face { - font-family: 'LatoWeb'; - src: url('styles/fonts/lato/Lato-Regular.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Regular.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Regular.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Regular.ttf') format('truetype'); +/* Lato (bold, regular) */ +@font-face { + font-family: Lato; + font-weight: 600; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-bold/lato-bold.woff2") format("woff2"), url("styles/fonts/lato/lato-bold/lato-bold.woff") format("woff"); } - -/* Webfont: Lato-Semibold */@font-face { - font-family: 'LatoWebSemibold'; - src: url('styles/fonts/lato/Lato-Semibold.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Semibold.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Semibold.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Semibold.ttf') format('truetype'); - font-style: normal; - font-weight: normal; - text-rendering: optimizeLegibility; -} - -/* Webfont: Lato-SemiboldItalic */@font-face { - font-family: 'LatoWebSemibold'; - src: url('styles/fonts/lato/Lato-SemiboldItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-SemiboldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-SemiboldItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-SemiboldItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-SemiboldItalic.ttf') format('truetype'); +/* Lato (bold, italic) */ +@font-face { + font-family: Lato; + font-weight: 600; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff") format("woff"); } - -/* Webfont: Lato-Thin */@font-face { - font-family: 'LatoWebThin'; - src: url('styles/fonts/lato/Lato-Thin.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-Thin.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-Thin.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Thin.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-Thin.ttf') format('truetype'); +/* Lato (heavy, regular) */ +@font-face { + font-family: Lato; + font-weight: 800; font-style: normal; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-heavy/lato-heavy.woff2") format("woff2"), url("styles/fonts/lato/lato-heavy/lato-heavy.woff") format("woff"); } - -/* Webfont: Lato-ThinItalic */@font-face { - font-family: 'LatoWebThin'; - src: url('styles/fonts/lato/Lato-ThinItalic.eot'); /* IE9 Compat Modes */ - src: url('styles/fonts/lato/Lato-ThinItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('styles/fonts/lato/Lato-ThinItalic.woff2') format('woff2'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-ThinItalic.woff') format('woff'), /* Modern Browsers */ - url('styles/fonts/lato/Lato-ThinItalic.ttf') format('truetype'); +/* Lato (heavy, italic) */ +@font-face { + font-family: Lato; + font-weight: 800; font-style: italic; - font-weight: normal; text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff") format("woff"); +} +/* Lato (black, regular) */ +@font-face { + font-family: Lato; + font-weight: 900; + font-style: normal; + text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-black/lato-black.woff2") format("woff2"), url("styles/fonts/lato/lato-black/lato-black.woff") format("woff"); +} +/* Lato (black, italic) */ +@font-face { + font-family: Lato; + font-weight: 900; + font-style: italic; + text-rendering: optimizeLegibility; + src: url("styles/fonts/lato/lato-black-italic/lato-black-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-black-italic/lato-black-italic.woff") format("woff"); } @font-face { diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot deleted file mode 100644 index 444bc3aa2e..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf deleted file mode 100644 index 3f7819f609..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot deleted file mode 100644 index 7749a28aa8..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf deleted file mode 100644 index 2dc1173c54..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot deleted file mode 100644 index 3361183a41..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf deleted file mode 100644 index 29f691d5ed..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot deleted file mode 100644 index 3d4154936b..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf deleted file mode 100644 index f402040b3e..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot deleted file mode 100644 index ca02c79540..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf deleted file mode 100644 index a7365b8a0d..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot deleted file mode 100644 index 9b5fd86aeb..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf deleted file mode 100644 index 919d2d697f..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot deleted file mode 100644 index 8d3784f4c7..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf deleted file mode 100644 index ce528ef394..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot deleted file mode 100644 index f77a576623..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf deleted file mode 100644 index ae73655f2b..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot deleted file mode 100644 index 3f826421a1..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf deleted file mode 100644 index b4bfc9b24a..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot deleted file mode 100644 index f449ed562d..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf deleted file mode 100644 index 834d1c0566..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot deleted file mode 100644 index a4e2e31d09..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf deleted file mode 100644 index c6ef9e05fe..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot deleted file mode 100644 index c4114dd395..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf deleted file mode 100644 index 4684a7e143..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot deleted file mode 100644 index bc05daf923..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf deleted file mode 100644 index 673b6e4728..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot deleted file mode 100644 index 11e3f2a5f0..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf deleted file mode 100644 index 74decd9ebb..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot deleted file mode 100644 index d46c5f99fe..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf deleted file mode 100644 index faf591e283..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot deleted file mode 100644 index 373a1ca548..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf deleted file mode 100644 index 4ea1e8f1aa..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot deleted file mode 100644 index 28022c95e9..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf deleted file mode 100644 index 4fca8bd4fa..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot deleted file mode 100644 index 673f52298d..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf deleted file mode 100644 index 223c133e94..0000000000 Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf and /dev/null differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff2 old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff2 rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff2 diff --git a/packages/strapi-admin/files/public/app/styles/variables/variables.scss b/packages/strapi-admin/files/public/app/styles/variables/variables.scss index 111ada7ba2..2d2a63ff02 100644 --- a/packages/strapi-admin/files/public/app/styles/variables/variables.scss +++ b/packages/strapi-admin/files/public/app/styles/variables/variables.scss @@ -7,18 +7,17 @@ $white: #ffffff; $strapi-gray-light: #EFF3F6; $strapi-gray: #535F76; -$strapi-blue-darker: #19202E; +$strapi-blue-darker: #18202E; $strapi-blue-dark: #151C2E; $strapi-blue: #1C5DE7; -$strapi-blue-light: #7E8AAA; // - layout // -- left menu $left-menu-width: 24rem; $left-menu-bg: $strapi-blue-darker; -$left-menu-link-hover: $strapi-blue-dark; -$left-menu-link-color: $strapi-blue-light; -$left-menu-title-color: $strapi-gray; +$left-menu-link-hover: #1C2431; +$left-menu-link-color: #919BAE; +$left-menu-title-color: #5B626F; // -- header $header-height: 6rem; diff --git a/packages/strapi-admin/files/public/app/tests/store.test.js b/packages/strapi-admin/files/public/app/tests/store.test.js deleted file mode 100644 index b21e6d57e1..0000000000 --- a/packages/strapi-admin/files/public/app/tests/store.test.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Test store addons - */ - -import expect from 'expect'; -import configureStore from '../store'; // eslint-disable-line -import { browserHistory } from 'react-router'; - -describe('configureStore', () => { - let store; - - before(() => { - store = configureStore({}, browserHistory); - }); - - describe('asyncReducers', () => { - it('should contain an object for async reducers', () => { - expect(typeof store.asyncReducers).toEqual('object'); - }); - }); - - describe('runSaga', () => { - it('should contain a hook for `sagaMiddleware.run`', () => { - expect(typeof store.runSaga).toEqual('function'); - }); - }); -}); diff --git a/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js b/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js deleted file mode 100644 index bbb83c43dc..0000000000 --- a/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js +++ /dev/null @@ -1,164 +0,0 @@ -/** - * Test async injectors - */ - -import expect from 'expect'; -import configureStore from 'store.js'; -import { memoryHistory } from 'react-router'; -import { put } from 'redux-saga/effects'; -import { fromJS } from 'immutable'; - -import { - injectAsyncReducer, - injectAsyncSagas, - getAsyncInjectors, -} from 'utils/asyncInjectors'; - -// Fixtures - -const initialState = fromJS({ reduced: 'soon' }); - -const reducer = (state = initialState, action) => { - switch (action.type) { - case 'TEST': - return state.set('reduced', action.payload); - default: - return state; - } -}; - -function* testSaga() { - yield put({ type: 'TEST', payload: 'yup' }); -} - -const sagas = [ - testSaga, -]; - -describe('asyncInjectors', () => { - let store; - - describe('getAsyncInjectors', () => { - before(() => { - store = configureStore({}, memoryHistory); - }); - - it('given a store, should return all async injectors', () => { - const { injectReducer, injectSagas } = getAsyncInjectors(store); - - injectReducer('test', reducer); - injectSagas(sagas); - - const actual = store.getState().get('test'); - const expected = initialState.merge({ reduced: 'yup' }); - - expect(actual.toJS()).toEqual(expected.toJS()); - }); - - it('should throw if passed invalid store shape', () => { - let result = false; - - Reflect.deleteProperty(store, 'dispatch'); - - try { - getAsyncInjectors(store); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - expect(result).toEqual(true); - }); - }); - - describe('helpers', () => { - before(() => { - store = configureStore({}, memoryHistory); - }); - - describe('injectAsyncReducer', () => { - it('given a store, it should provide a function to inject a reducer', () => { - const injectReducer = injectAsyncReducer(store); - - injectReducer('test', reducer); - - const actual = store.getState().get('test'); - const expected = initialState; - - expect(actual.toJS()).toEqual(expected.toJS()); - }); - - it('should throw if passed invalid name', () => { - let result = false; - - const injectReducer = injectAsyncReducer(store); - - try { - injectReducer('', reducer); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - try { - injectReducer(999, reducer); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - expect(result).toEqual(true); - }); - - it('should throw if passed invalid reducer', () => { - let result = false; - - const injectReducer = injectAsyncReducer(store); - - try { - injectReducer('bad', 'nope'); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - try { - injectReducer('coolio', 12345); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - expect(result).toEqual(true); - }); - }); - - describe('injectAsyncSagas', () => { - it('given a store, it should provide a function to inject a saga', () => { - const injectSagas = injectAsyncSagas(store); - - injectSagas(sagas); - - const actual = store.getState().get('test'); - const expected = initialState.merge({ reduced: 'yup' }); - - expect(actual.toJS()).toEqual(expected.toJS()); - }); - - it('should throw if passed invalid saga', () => { - let result = false; - - const injectSagas = injectAsyncSagas(store); - - try { - injectSagas({ testSaga }); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - try { - injectSagas(testSaga); - } catch (err) { - result = err.name === 'Invariant Violation'; - } - - expect(result).toEqual(true); - }); - }); - }); -}); diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json index 5e1308ab4c..3e6e28fdc0 100644 --- a/packages/strapi-admin/package.json +++ b/packages/strapi-admin/package.json @@ -14,7 +14,7 @@ "dependencies": { "fs-extra": "^0.30.0", "lodash": "^4.17.4", - "strapi-utils": "^3.0.0-alpha.4.8" + "strapi-utils": "file:../strapi-utils" }, "scripts": { "test": "cd files/public && npm run test", @@ -44,4 +44,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-bookshelf/.gitignore b/packages/strapi-bookshelf/.gitignore index 664d4fb312..218a5700e9 100755 --- a/packages/strapi-bookshelf/.gitignore +++ b/packages/strapi-bookshelf/.gitignore @@ -92,3 +92,4 @@ results build node_modules .node_history +package-lock.json diff --git a/packages/strapi-ejs/.gitignore b/packages/strapi-ejs/.gitignore index 664d4fb312..218a5700e9 100644 --- a/packages/strapi-ejs/.gitignore +++ b/packages/strapi-ejs/.gitignore @@ -92,3 +92,4 @@ results build node_modules .node_history +package-lock.json diff --git a/packages/strapi-generate-admin/.gitignore b/packages/strapi-generate-admin/.gitignore index dc91ebd729..f25de1b578 100755 --- a/packages/strapi-generate-admin/.gitignore +++ b/packages/strapi-generate-admin/.gitignore @@ -91,6 +91,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-admin/package.json b/packages/strapi-generate-admin/package.json index ebff1a0435..2e485f602d 100644 --- a/packages/strapi-generate-admin/package.json +++ b/packages/strapi-generate-admin/package.json @@ -15,7 +15,7 @@ "dependencies": { "fs-extra": "^0.30.0", "lodash": "^4.17.4", - "strapi-admin": "^3.0.0-alpha.4.8" + "strapi-admin": "file:../strapi-admin" }, "author": { "email": "hi@strapi.io", @@ -41,4 +41,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-generate-api/.gitignore b/packages/strapi-generate-api/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-api/.gitignore +++ b/packages/strapi-generate-api/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-controller/.gitignore b/packages/strapi-generate-controller/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-controller/.gitignore +++ b/packages/strapi-generate-controller/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-migrations/.gitignore b/packages/strapi-generate-migrations/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-migrations/.gitignore +++ b/packages/strapi-generate-migrations/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-model/.gitignore b/packages/strapi-generate-model/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-model/.gitignore +++ b/packages/strapi-generate-model/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-new/.gitignore b/packages/strapi-generate-new/.gitignore index dc91ebd729..f25de1b578 100755 --- a/packages/strapi-generate-new/.gitignore +++ b/packages/strapi-generate-new/.gitignore @@ -91,6 +91,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json index c893433e83..754f9eaa2f 100644 --- a/packages/strapi-generate-new/package.json +++ b/packages/strapi-generate-new/package.json @@ -16,7 +16,7 @@ "enpeem": "^2.2.0", "fs-extra": "^4.0.0", "lodash": "^4.17.4", - "strapi-utils": "^3.0.0-alpha.4.8" + "strapi-utils": "file:../strapi-utils" }, "scripts": { "prepublish": "npm prune" @@ -45,4 +45,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-generate-plugin/.gitignore b/packages/strapi-generate-plugin/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-plugin/.gitignore +++ b/packages/strapi-generate-plugin/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js deleted file mode 100644 index 81a6f57e9a..0000000000 --- a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * NotFoundPage - * - * This is the page we show when the user visits a url that doesn't have a 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 { FormattedMessage } from 'react-intl'; - -import messages from './messages'; - -export default class NotFound extends React.Component { - render() { - return ( -
    -
    -

    - -

    -
    -
    - ); - } -} diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js deleted file mode 100644 index 95ee68f9d2..0000000000 --- a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - * NotFoundPage Messages - * - * This contains all the text for the NotFoundPage component. - */ -import { defineMessages } from 'react-intl'; - -export default defineMessages({ - pageNotFound: { - id: 'app.components.NotFoundPage.pageNotFound', - defaultMessage: 'Page not found.', - }, -}); diff --git a/packages/strapi-generate-policy/.gitignore b/packages/strapi-generate-policy/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-policy/.gitignore +++ b/packages/strapi-generate-policy/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate-service/.gitignore b/packages/strapi-generate-service/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate-service/.gitignore +++ b/packages/strapi-generate-service/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate/.gitignore b/packages/strapi-generate/.gitignore index 1f78ea7b73..2511d26edc 100755 --- a/packages/strapi-generate/.gitignore +++ b/packages/strapi-generate/.gitignore @@ -92,6 +92,7 @@ results build node_modules .node_history +package-lock.json ############################ diff --git a/packages/strapi-generate/package.json b/packages/strapi-generate/package.json index 40408ff34d..4fcd923b57 100644 --- a/packages/strapi-generate/package.json +++ b/packages/strapi-generate/package.json @@ -17,7 +17,7 @@ "fs-extra": "^4.0.0", "lodash": "^4.17.4", "reportback": "^2.0.1", - "strapi-utils": "^3.0.0-alpha.4.8" + "strapi-utils": "file:../strapi-utils" }, "author": { "name": "Strapi team", @@ -43,4 +43,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-helper-plugin/.gitignore b/packages/strapi-helper-plugin/.gitignore index 5d06c054ed..76c6eb04d9 100644 --- a/packages/strapi-helper-plugin/.gitignore +++ b/packages/strapi-helper-plugin/.gitignore @@ -3,6 +3,7 @@ coverage build node_modules stats.json +package-lock.json # Cruft .DS_Store diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/index.js b/packages/strapi-helper-plugin/lib/internals/generators/component/index.js index 132ca1d841..f1060e4bc3 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/component/index.js +++ b/packages/strapi-helper-plugin/lib/internals/generators/component/index.js @@ -29,11 +29,6 @@ module.exports = { name: 'wantCSS', default: true, message: 'Does it have styling?', - }, { - type: 'confirm', - name: 'wantMessages', - default: true, - message: 'Do you want i18n messages (i.e. will this component use text)?', }], actions: (data) => { // Generate index.js and index.test.js diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs index 1dc727bb55..e8121ed4f3 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs +++ b/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs @@ -1,3 +1,3 @@ -.{{ camelCase name }} { /* stylelint-disable */ +.{{ camelCase name }} { } diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs index 63b835462b..3c02562c6d 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs @@ -4,4 +4,4 @@ * */ -export const DEFAULT_ACTION = 'src/{{ properCase name }}/DEFAULT_ACTION'; +export const DEFAULT_ACTION = '{{ properCase pluginId }}/{{ properCase name }}/DEFAULT_ACTION'; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/index.js b/packages/strapi-helper-plugin/lib/internals/generators/container/index.js index 34e5e8122f..376210040c 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/container/index.js +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/index.js @@ -2,6 +2,15 @@ * Container Generator */ +const path = require('path'); + +// Plugin identifier based on the package.json `name` value +const pluginPkg = require(path.resolve(process.cwd(), 'package.json')); +const pluginId = pluginPkg.name.replace( + /^strapi-plugin-/i, + '' +); + const componentExists = require('../utils/componentExists'); module.exports = { @@ -38,13 +47,13 @@ module.exports = { name: 'wantSagas', default: true, message: 'Do you want sagas for asynchronous flows? (e.g. fetching data)', - }, { - type: 'confirm', - name: 'wantMessages', - default: true, - message: 'Do you want i18n messages (i.e. will this component use text)?', }], actions: (data) => { + const dataFormatted = data; + + // Expose `pluginId` value + dataFormatted.pluginId = pluginId; + // Generate index.js and index.test.js const actions = [{ type: 'add', @@ -59,7 +68,7 @@ module.exports = { }]; // If they want a SCSS file, add styles.scss - if (data.wantCSS) { + if (dataFormatted.wantCSS) { actions.push({ type: 'add', path: '../../../../../admin/src/containers/{{properCase name}}/styles.scss', @@ -69,7 +78,7 @@ module.exports = { } // If component wants messages - if (data.wantMessages) { + if (dataFormatted.wantMessages) { actions.push({ type: 'add', path: '../../../../../admin/src/containers/{{properCase name}}/messages.js', @@ -80,7 +89,7 @@ module.exports = { // If they want actions and a reducer, generate actions.js, constants.js, // reducer.js and the corresponding tests for actions and the reducer - if (data.wantActionsAndReducer) { + if (dataFormatted.wantActionsAndReducer) { // Actions actions.push({ type: 'add', @@ -133,7 +142,7 @@ module.exports = { } // Sagas - if (data.wantSagas) { + if (dataFormatted.wantSagas) { actions.push({ type: 'add', path: '../../../../../admin/src/containers/{{properCase name}}/sagas.js', diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs index 1dc727bb55..e8121ed4f3 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs @@ -1,3 +1,3 @@ -.{{ camelCase name }} { /* stylelint-disable */ +.{{ camelCase name }} { } diff --git a/packages/strapi-helper-plugin/lib/internals/generators/index.js b/packages/strapi-helper-plugin/lib/internals/generators/index.js index a029c4adfd..9603667be7 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/index.js +++ b/packages/strapi-helper-plugin/lib/internals/generators/index.js @@ -10,13 +10,11 @@ const path = require('path'); const componentGenerator = require('./component/index.js'); const containerGenerator = require('./container/index.js'); const routeGenerator = require('./route/index.js'); -const languageGenerator = require('./language/index.js'); module.exports = (plop) => { plop.setGenerator('component', componentGenerator); plop.setGenerator('container', containerGenerator); plop.setGenerator('route', routeGenerator); - plop.setGenerator('language', languageGenerator); plop.addHelper('directory', (comp) => { try { fs.accessSync(`${path.resolve(process.cwd(), 'admin', 'src', 'containers', comp)}`, fs.F_OK); diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs deleted file mode 100644 index 80727c73cd..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs +++ /dev/null @@ -1 +0,0 @@ -$1addLocaleData({{language}}LocaleData); diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs deleted file mode 100644 index 9e99e845f8..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs +++ /dev/null @@ -1,2 +0,0 @@ -$1 - '{{language}}', diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs deleted file mode 100644 index 74c78b4632..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs +++ /dev/null @@ -1 +0,0 @@ -$1 {{language}}: formatTranslationMessages({{language}}TranslationMessages), diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/index.js b/packages/strapi-helper-plugin/lib/internals/generators/language/index.js deleted file mode 100644 index dd9561dad8..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/index.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Language Generator - */ -const exec = require('child_process').exec; - -module.exports = { - description: 'Add a langauge', - prompts: [{ - type: 'input', - name: 'language', - message: 'What is the language you want to add i18n support for (e.g. "fr", "de")?', - default: 'fr', - validate: (value) => { - if ((/.+/).test(value) && value.length === 2) { - return true; - } - - return '2 character language specifier is required'; - }, - }], - - actions: () => { - const actions = []; - actions.push({ - type: 'modify', - path: '../../../../../admin/src/i18n.js', - pattern: /('react-intl\/locale-data\/[a-z]+';\n)(?!.*'react-intl\/locale-data\/[a-z]+';)/g, - templateFile: './language/intl-locale-data.hbs', - }); - actions.push({ - type: 'modify', - path: '../../../../../admin/src/i18n.js', - pattern: /([\n\s'[a-z]+',)(?!.*[\n\s'[a-z]+',)/g, - templateFile: './language/src-locale.hbs', - }); - actions.push({ - type: 'modify', - path: '../../../../../admin/src/i18n.js', - pattern: /(from\s'.\/translations\/[a-z]+.json';\n)(?!.*from\s'.\/translations\/[a-z]+.json';)/g, - templateFile: './language/translation-messages.hbs', - }); - actions.push({ - type: 'modify', - path: '../../../../../admin/src/i18n.js', - pattern: /(addLocaleData\([a-z]+LocaleData\);\n)(?!.*addLocaleData\([a-z]+LocaleData\);)/g, - templateFile: './language/add-locale-data.hbs', - }); - actions.push({ - type: 'modify', - path: '../../../../../admin/src/i18n.js', - pattern: /([a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),\n)(?!.*[a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),)/g, - templateFile: './language/format-translation-messages.hbs', - }); - actions.push({ - type: 'add', - path: '../../../../../admin/src/translations/{{language}}.json', - templateFile: './language/translations-json.hbs', - abortOnFail: true, - }); - actions.push({ - type: 'modify', - path: '../../../../../admin/src/app.js', - pattern: /(System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),\n)(?!.*System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),)/g, - templateFile: './language/polyfill-intl-locale.hbs', - }); - actions.push( - () => { - const cmd = 'npm run extract-intl'; - exec(cmd, (err, result, stderr) => { - if (err || stderr) { - throw err || stderr; - } - process.stdout.write(result); - }); - } - ); - - return actions; - }, -}; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs deleted file mode 100644 index b790a1333f..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs +++ /dev/null @@ -1 +0,0 @@ -$1import {{language}}LocaleData from 'react-intl/locale-data/{{language}}'; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs deleted file mode 100644 index ea1586e7ed..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs +++ /dev/null @@ -1 +0,0 @@ -$1 System.import('intl/locale-data/jsonp/{{language}}.js'), diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs deleted file mode 100644 index 0682d22ed0..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs +++ /dev/null @@ -1 +0,0 @@ -$1import {{language}}TranslationMessages from './translations/{{language}}.json'; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs deleted file mode 100644 index fe51488c70..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/index.js b/packages/strapi-helper-plugin/lib/internals/generators/route/index.js index 41335a2a2c..adc26328bc 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/route/index.js +++ b/packages/strapi-helper-plugin/lib/internals/generators/route/index.js @@ -2,38 +2,31 @@ * Route Generator */ const fs = require('fs'); +const path = require('path'); + +const routesFilePath = path.resolve(process.cwd(), 'admin', 'src', 'routes.json'); const componentExists = require('../utils/componentExists'); -function reducerExists(comp) { - try { - fs.accessSync(`src/containers/${comp}/reducer.js`, fs.F_OK); - return true; - } catch (e) { - return false; - } -} +// Generate the update file content +const generateUpdatedFileContent = (data, existingContent) => { + const fileContent = existingContent || {}; -function sagasExists(comp) { - try { - fs.accessSync(`src/containers/${comp}/sagas.js`, fs.F_OK); - return true; - } catch (e) { - return false; - } -} + // Add new route + const updatedFileContent = fileContent; + updatedFileContent[data.path] = { + container: data.container, + }; -function trimTemplateFile(template) { - // Loads the template file and trims the whitespace and then returns the content as a string. - return fs.readFileSync(`internals/generators/route/${template}`, 'utf8').replace(/\s*$/, ''); -} + return updatedFileContent; +}; module.exports = { description: 'Add a route', prompts: [{ type: 'input', - name: 'component', - message: 'Which component should the route show?', + name: 'container', + message: 'Which container should the route show?', validate: (value) => { if ((/.+/).test(value)) { return componentExists(value) ? true : `"${value}" doesn't exist.`; @@ -55,27 +48,58 @@ module.exports = { }, }], - // Add the route to the routes.js file above the error route - // TODO smarter route adding actions: (data) => { - const actions = []; - if (reducerExists(data.component)) { - data.useSagas = sagasExists(data.component); // eslint-disable-line no-param-reassign - actions.push({ - type: 'modify', - path: '../../../../../admin/src/routes.js', - pattern: /(\s{\n\s{0,}path: '\*',)/g, - template: trimTemplateFile('routeWithReducer.hbs'), - }); - } else { - actions.push({ - type: 'modify', - path: '../../../../../admin/src/routes.js', - pattern: /(\s{\n\s{0,}path: '\*',)/g, - template: trimTemplateFile('route.hbs'), - }); - } + const replaceFile = () => { + // Check if the file is existing or not + let routesFilesStats; + try { + routesFilesStats = fs.statSync(routesFilePath); + } catch (error) { + routesFilesStats = false; + } + const routesFilesExists = routesFilesStats && routesFilesStats.isFile(); - return actions; + // Read the file content + let existingContent = {}; + if (routesFilesExists) { + try { + existingContent = fs.readFileSync(routesFilePath, 'utf8'); + } catch (error) { + existingContent = false; + console.log('Unable to read existing `admin/src/routes.json` file content.'); + } + + try { + existingContent = JSON.parse(existingContent); + } catch (error) { + existingContent = false; + console.log('Unable to parse existing `admin/src/routes.json` file content.'); + } + } + + // Generate updated content + const updatedContent = generateUpdatedFileContent(data, existingContent || {}); + + // Delete the file if existing + if (routesFilesExists) { + try { + fs.unlinkSync(routesFilePath); + } catch (error) { + console.log('Unable to remove `admin/src/routes.json` file.'); + throw error; + } + } + + // Write the new file + try { + fs.writeFileSync(routesFilePath, JSON.stringify(updatedContent, null, 2), 'utf8'); + console.log('File `admin/src/routes.json` successfully written.'); + } catch (error) { + console.log('Unable to write `admin/src/routes.json` file.'); + throw error; + } + }; + + return [replaceFile]; }, }; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs b/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs deleted file mode 100644 index 162d992f40..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs +++ /dev/null @@ -1,9 +0,0 @@ - { - path: '{{ path }}', - name: '{{ camelCase component }}', - getComponent(location, cb) { - System.import('{{{directory (properCase component)}}}') - .then(loadModule(cb)) - .catch(errorLoading); - }, - },$1 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs b/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs deleted file mode 100644 index fedf109ac8..0000000000 --- a/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs +++ /dev/null @@ -1,25 +0,0 @@ - { - path: '{{ path }}', - name: '{{ camelCase component }}', - getComponent(nextState, cb) { - const importModules = Promise.all([ - System.import('containers/{{ properCase component }}/reducer'), - {{#if useSagas}} - System.import('containers/{{ properCase component }}/sagas'), - {{/if}} - System.import('containers/{{ properCase component }}'), - ]); - - const renderRoute = loadModule(cb); - - importModules.then(([reducer,{{#if useSagas}} sagas,{{/if}} component]) => { - injectReducer('{{ camelCase component }}', reducer.default); - {{#if useSagas}} - injectSagas(sagas.default); - {{/if}} - renderRoute(component); - }); - - importModules.catch(errorLoading); - }, - },$1 diff --git a/packages/strapi-helper-plugin/lib/src/i18n.js b/packages/strapi-helper-plugin/lib/src/i18n.js index dc9ce73fc4..076aacefaa 100644 --- a/packages/strapi-helper-plugin/lib/src/i18n.js +++ b/packages/strapi-helper-plugin/lib/src/i18n.js @@ -5,18 +5,50 @@ * */ -import { defineMessages } from 'react-intl'; +import { reduce } from 'lodash'; -import enTranslationMessages from 'translations/en.json'; // eslint-disable-line -import frTranslationMessages from 'translations/fr.json'; // eslint-disable-line +// Plugin identifier based on the package.json `name` value +const pluginPkg = require('../../../../package.json'); +const pluginId = pluginPkg.name.replace( + /^strapi-plugin-/i, + '' +); -const translationMessages = { - en: enTranslationMessages, - fr: frTranslationMessages, +/** + * Add plugin identifier as translation message prefix, + * in order to avoid confusion and errors when many + * plugins are installed. + * + * @param messages + */ +const formatMessages = messages => reduce(messages, (result, value, key) => { + const obj = result; + obj[`${pluginId}.${key}`] = value; + return obj; +}, {}); + +/** + * Try to require translation file. + * + * @param language {String} + */ +const requireTranslations = language => { + try { + return require(`translations/${language}.json`); // eslint-disable-line global-require + } catch (error) { + console.error(`Unable to load "${language}" translation for the plugin ${pluginId}. Please make sure "${language}.json" file exists in "pluginPath/admin/src/translations" folder.`); + return false; + } }; -const define = messages => { - defineMessages(messages); -}; +/** + * Dynamically generate `translationsMessages object`. + */ +const translationMessages = reduce(window.Strapi.languages, (result, language) => { + const obj = result; + const messages = requireTranslations(language); + obj[language] = formatMessages(messages); + return obj; +}, {}); -export { translationMessages, define }; +export { translationMessages }; diff --git a/packages/strapi-helper-plugin/lib/src/routes.js b/packages/strapi-helper-plugin/lib/src/routes.js index 2c51c97341..78a55a5afb 100644 --- a/packages/strapi-helper-plugin/lib/src/routes.js +++ b/packages/strapi-helper-plugin/lib/src/routes.js @@ -2,7 +2,7 @@ // They are all wrapped in the App component, which should contain the navbar etc // See http://blog.mxstbr.com/2016/01/react-apps-with-pages for more information // about the code splitting business -import { map } from 'lodash'; +import { camelCase, map } from 'lodash'; import { getAsyncInjectors } from 'utils/asyncInjectors'; import routes from 'routes.json'; // eslint-disable-line @@ -32,7 +32,7 @@ export default function createRoutes(store) { const component = tryRequire(`${route.container}/index`); // eslint-disable-line global-require process.nextTick(() => { - if (reducer) injectReducer(route.name, reducer.default); + if (reducer) injectReducer(camelCase(route.container), reducer.default); if (sagas) injectSagas(sagas.default); cb(null, component.default); }); diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index eec76cef08..f3cf140d7d 100644 --- a/packages/strapi-helper-plugin/package.json +++ b/packages/strapi-helper-plugin/package.json @@ -120,4 +120,4 @@ "webpack-hot-middleware": "2.13.1", "whatwg-fetch": "1.0.0" } -} \ No newline at end of file +} diff --git a/packages/strapi-knex/.gitignore b/packages/strapi-knex/.gitignore index 664d4fb312..218a5700e9 100755 --- a/packages/strapi-knex/.gitignore +++ b/packages/strapi-knex/.gitignore @@ -92,3 +92,4 @@ results build node_modules .node_history +package-lock.json diff --git a/packages/strapi-mongoose/.gitignore b/packages/strapi-mongoose/.gitignore index 664d4fb312..218a5700e9 100644 --- a/packages/strapi-mongoose/.gitignore +++ b/packages/strapi-mongoose/.gitignore @@ -92,3 +92,4 @@ results build node_modules .node_history +package-lock.json diff --git a/packages/strapi-mongoose/package.json b/packages/strapi-mongoose/package.json index 1c76b05c08..31d1c1263d 100644 --- a/packages/strapi-mongoose/package.json +++ b/packages/strapi-mongoose/package.json @@ -20,7 +20,7 @@ "mongoose-double": "0.0.1", "mongoose-float": "^1.0.2", "pluralize": "^6.0.0", - "strapi-utils": "^3.0.0-alpha.4.8" + "strapi-utils": "file:../strapi-utils" }, "strapi": { "isHook": true @@ -49,4 +49,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-plugin-content-manager/.gitignore b/packages/strapi-plugin-content-manager/.gitignore index 5d06c054ed..76c6eb04d9 100644 --- a/packages/strapi-plugin-content-manager/.gitignore +++ b/packages/strapi-plugin-content-manager/.gitignore @@ -3,6 +3,7 @@ coverage build node_modules stats.json +package-lock.json # Cruft .DS_Store diff --git a/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js b/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js index 9a6b634aba..b47fcdbc53 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js @@ -8,12 +8,8 @@ import React from 'react'; import _ from 'lodash'; import { FormattedMessage } from 'react-intl'; -import { define } from 'i18n'; - -import messages from './messages.json'; import styles from './styles.scss'; -define(messages); class LimitSelect extends React.Component { componentWillMount() { @@ -47,7 +43,8 @@ class LimitSelect extends React.Component {
    + : +