diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
index e3c12f501d..ff714bcb8b 100644
--- a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
+++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md
@@ -7,6 +7,16 @@ about: Suggest an idea for this project 💡!
-**What is the expected behavior?**
+
+
+- [ ] **I have created my request on the Product Board before I submitted this issue**
+- [ ] **I have looked at all the other requests on the Product Board before I submitted this issue**
+
+**Please describe your feature request:**
diff --git a/.travis.yml b/.travis.yml
index f2486aa99c..f1a1a823dd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,6 +13,7 @@ before_install:
- export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
+ - git fetch -a
# - sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
# - npm cache clean --force
# - rm -rf node_modules/
@@ -21,6 +22,7 @@ install:
- npm run setup --debug
script:
+ - npm run lint
- npm run doc
cache:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e271fe6335..d29e21e6e3 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -30,7 +30,7 @@ If you send a pull request, please do it against the `master` branch. We are dev
***
## Setup Development Environment
-To facilitate the contribution, we drastically reduce the amount of commands necessary to install the entire development environment. First of all, you need to check if you're using the recommended versions of Node.js (v8) and npm (v5).
+To facilitate the contribution, we drastically reduce the amount of commands necessary to install the entire development environment. First of all, you need to check if you're using the [required versions of Node.js and npm](https://strapi.io/documentation/3.x.x/getting-started/installation.html#requirements)
Then, please follow the instructions below:
diff --git a/README.md b/README.md
index 6e2d59dfe4..0c16132e52 100644
--- a/README.md
+++ b/README.md
@@ -137,6 +137,10 @@ For general help using Strapi, please refer to [the official Strapi documentatio
Follow our [migration guides](https://github.com/strapi/strapi/wiki) on the wiki to keep your projects up-to-date.
+## Roadmap
+
+Check out our [roadmap](https://portal.productboard.com/strapi) to get informed by the latest feature released and the upcoming ones. You can also give us insights and vote for a specific feature.
+
## License
[MIT License](LICENSE.md) Copyright (c) 2015-2018 [Strapi Solutions](https://strapi.io/).
diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js
index 67d1c0a94d..8547f73d70 100644
--- a/docs/.vuepress/config.js
+++ b/docs/.vuepress/config.js
@@ -1,12 +1,11 @@
const container = require('markdown-it-container')
-let ogprefix = 'og: http://ogp.me/ns#'
-let title = 'Strapi Documentation'
-let description = 'API creation made simple, secure and fast.'
-let color = '#2F80ED'
-let author = 'Strapi'
-let url = 'https://strapi.io/documentation/'
-
+const ogprefix = 'og: http://ogp.me/ns#'
+const title = 'Strapi Documentation'
+const description = 'API creation made simple, secure and fast.'
+const color = '#2F80ED'
+const author = 'Strapi'
+const url = 'https://strapi.io/documentation/'
module.exports = {
head: [
@@ -40,21 +39,27 @@ module.exports = {
title,
description,
base: '/documentation/',
+ ga: 'UA-54313258-1',
themeConfig: {
versions: [
['Version 3.x.x', '/3.x.x/'],
['Version 1.x.x', '/1.x.x/'],
],
repo: 'strapi/strapi',
+ website: 'https://strapi.io',
docsDir: 'docs',
editLinks: true,
editLinkText: 'Improve this page',
serviceWorker: true,
+ hiddenLinks: [
+ '/3.x.x/cli/CLI.html',
+ '/3.x.x/api-reference/reference.html',
+ ],
sidebar: {
'/3.x.x/': [
{
collapsable: false,
- title: 'Getting started',
+ title: '🚀 Getting started',
children: [
'/3.x.x/getting-started/installation',
'/3.x.x/getting-started/quick-start',
@@ -62,39 +67,31 @@ module.exports = {
],
},
{
- collapsable: false,
- title: 'Guides',
+ collapsable: true,
+ title: '💡 Guides',
children: [
- '/3.x.x/guides/authentication.md',
- '/3.x.x/configurations/configurations.md',
- '/3.x.x/guides/controllers.md',
- '/3.x.x/guides/deployment.md',
- '/3.x.x/guides/email.md',
- '/3.x.x/guides/upload.md',
- '/3.x.x/guides/filters.md',
- '/3.x.x/guides/graphql.md',
- '/3.x.x/guides/i18n.md',
- '/3.x.x/guides/models.md',
- '/3.x.x/guides/policies.md',
- '/3.x.x/guides/public-assets.md',
- '/3.x.x/guides/requests.md',
- '/3.x.x/guides/responses.md',
- '/3.x.x/guides/routing.md',
- '/3.x.x/guides/services.md',
- ],
- },
- {
- collapsable: false,
- title: 'Globals',
- children: [
- '/3.x.x/api-reference/reference',
- '/3.x.x/cli/CLI',
+ '/3.x.x/guides/authentication',
'/3.x.x/configurations/configurations',
+ '/3.x.x/guides/controllers',
+ '/3.x.x/guides/deployment',
+ '/3.x.x/guides/email',
+ '/3.x.x/guides/upload',
+ '/3.x.x/guides/filters',
+ '/3.x.x/guides/graphql',
+ '/3.x.x/guides/i18n',
+ '/3.x.x/guides/models',
+ '/3.x.x/guides/policies',
+ '/3.x.x/guides/public-assets',
+ '/3.x.x/guides/requests',
+ '/3.x.x/guides/responses',
+ '/3.x.x/guides/routing',
+ '/3.x.x/guides/services',
+ '/3.x.x/guides/webhooks',
],
},
{
- collapsable: false,
- title: 'Advanced',
+ collapsable: true,
+ title: '⚙️️ Advanced',
children: [
'/3.x.x/advanced/customize-admin',
'/3.x.x/advanced/hooks',
@@ -103,9 +100,36 @@ module.exports = {
'/3.x.x/advanced/usage-tracking',
],
},
+ {
+ collapsable: true,
+ title: '🔌 Plugin Development',
+ children: [
+ '/3.x.x/plugin-development/quick-start',
+ '/3.x.x/plugin-development/plugin-architecture',
+ '/3.x.x/plugin-development/backend-development',
+ '/3.x.x/plugin-development/frontend-development',
+ '/3.x.x/plugin-development/frontend-use-cases',
+ '/3.x.x/plugin-development/utils',
+ // '/3.x.x/plugin-development/ui-components', TODO: Add this file
+ ],
+ },
+ {
+ collapsable: true,
+ title: '💻 Command Line Interface',
+ children: [
+ '/3.x.x/cli/CLI',
+ ],
+ },
+ {
+ collapsable: true,
+ title: '🏗 API Reference',
+ children: [
+ '/3.x.x/api-reference/reference',
+ ],
+ },
{
collapsable: false,
- title: 'Resources',
+ title: '📚 Resources',
children: [
['https://github.com/strapi/strapi/blob/master/CONTRIBUTING.md', 'Contributing guide'],
['https://github.com/strapi/strapi/wiki', 'Migration guides'],
diff --git a/docs/.vuepress/theme/Layout.vue b/docs/.vuepress/theme/Layout.vue
index f15c97bb11..b3797fd98a 100644
--- a/docs/.vuepress/theme/Layout.vue
+++ b/docs/.vuepress/theme/Layout.vue
@@ -5,14 +5,7 @@
@touchend="onTouchEnd">
-
-
-
- {{version.name}}
-
-
-
-
+
diff --git a/docs/.vuepress/theme/NavLinks.vue b/docs/.vuepress/theme/NavLinks.vue
index f29ee0acd5..38dcfd773f 100644
--- a/docs/.vuepress/theme/NavLinks.vue
+++ b/docs/.vuepress/theme/NavLinks.vue
@@ -9,11 +9,19 @@
-
+ Website
+
+
+
{{ repoLabel }}
@@ -92,6 +100,22 @@ export default {
}
return 'Source'
+ },
+ websiteLink () {
+ const { website } = this.$site.themeConfig
+ if (website) {
+ return /^https?:/.test(website)
+ ? website
+ : `https://${website}`
+ }
+ },
+ slackLink () {
+ const { slack } = this.$site.themeConfig
+ if (slack) {
+ return /^https?:/.test(slack)
+ ? slack
+ : `https://${slack}`
+ }
}
}
}
diff --git a/docs/.vuepress/theme/Navbar.vue b/docs/.vuepress/theme/Navbar.vue
index f4a9002a37..1e8fa90e13 100644
--- a/docs/.vuepress/theme/Navbar.vue
+++ b/docs/.vuepress/theme/Navbar.vue
@@ -11,6 +11,9 @@
{{ $siteTitle }}
+
+ {{version.name}}
+
@@ -28,12 +31,24 @@ import NavLinks from './NavLinks.vue'
export default {
components: { SidebarButton, NavLinks, SearchBox, AlgoliaSearchBox },
computed: {
+ versions() {
+ const { themeConfig } = this.$site
+ return themeConfig.versions.map(version => ({
+ name: version[0],
+ path: version[1],
+ }))
+ },
algolia () {
return this.$themeLocaleConfig.algolia || this.$site.themeConfig.algolia || {}
},
isAlgoliaSearch () {
return this.algolia && this.algolia.apiKey && this.algolia.indexName
}
+ },
+ methods: {
+ changeVersion(to) {
+ this.$router.push(to)
+ }
}
}
diff --git a/docs/.vuepress/theme/SearchBox.vue b/docs/.vuepress/theme/SearchBox.vue
index bf73b44569..e33bcd5f7e 100644
--- a/docs/.vuepress/theme/SearchBox.vue
+++ b/docs/.vuepress/theme/SearchBox.vue
@@ -10,7 +10,9 @@
@blur="focused = false"
@keyup.enter="go(focusIndex)"
@keyup.up="onUp"
- @keyup.down="onDown">
+ @keyup.down="onDown"
+ placeholder="Search"
+ >
= max) break
const p = pages[i]
- // filter out results that do not match current ersion context
- if (~p.path.slice(1).indexOf(searchContext)) continue
+ // filter out results that do not match current version context
+ if ( ! p.path.startsWith(searchContext, 1)) {
+ continue;
+ }
// filter out results that do not match current locale
if (this.getPageLocalePath(p) !== localePath) continue
if (matches(p)) {
diff --git a/docs/.vuepress/theme/SidebarGroup.vue b/docs/.vuepress/theme/SidebarGroup.vue
index c2f0655ee9..4a0ba531c3 100644
--- a/docs/.vuepress/theme/SidebarGroup.vue
+++ b/docs/.vuepress/theme/SidebarGroup.vue
@@ -9,7 +9,7 @@
diff --git a/docs/.vuepress/theme/SidebarLink.vue b/docs/.vuepress/theme/SidebarLink.vue
index 6aaef95188..7a10d3f1c8 100644
--- a/docs/.vuepress/theme/SidebarLink.vue
+++ b/docs/.vuepress/theme/SidebarLink.vue
@@ -5,8 +5,8 @@ import AppLink from './AppLink'
export default {
functional: true,
components: {AppLink},
- props: ['item'],
- render (h, { parent: { $page, $site, $route }, props: { item }}) {
+ props: ['item', 'open', 'collapsable'],
+ render (h, { parent: { $page, $site, $route }, props: { item, open, collapsable }}) {
// use custom active class matching logic
// due to edge case of paths ending with / + hash
const selfActive = isActive($route, item.path)
@@ -15,7 +15,8 @@ export default {
const active = item.type === 'auto'
? selfActive || item.children.some(c => isActive($route, item.basePath + '#' + c.slug))
: selfActive
- const link = renderLink(h, item.path, item.title || item.path, active)
+ const hidden = $site.themeConfig.hiddenLinks.includes(item.path);
+ const link = renderLink(h, item.path, item.title || item.path, active, hidden)
const configDepth = $page.frontmatter.sidebarDepth != null
? $page.frontmatter.sidebarDepth
: $site.themeConfig.sidebarDepth
@@ -25,13 +26,16 @@ export default {
} else if (active && item.headers && !hashRE.test(item.path)) {
const children = groupHeaders(item.headers)
return [link, renderChildren(h, children, item.path, $route, maxDepth)]
+ } else if (collapsable && open && hidden && !active && item.headers && !hashRE.test(item.path)) {
+ const children = groupHeaders(item.headers)
+ return [link, renderChildren(h, children, item.path, $route, maxDepth)]
} else {
return link
}
}
}
-function renderLink (h, to, text, active) {
+function renderLink (h, to, text, active, hidden) {
if (~to.indexOf('http')) return h('a',
{
attrs: {
@@ -48,6 +52,7 @@ function renderLink (h, to, text, active) {
},
class: {
active,
+ hidden,
'sidebar-link': true
}
}, text)
@@ -58,7 +63,7 @@ function renderChildren (h, children, path, route, maxDepth, depth = 1) {
return h('ul', { class: 'sidebar-sub-headers' }, children.map(c => {
const active = isActive(route, path + '#' + c.slug)
return h('li', { class: 'sidebar-sub-header' }, [
- renderLink(h, '#' + c.slug, c.title, active),
+ renderLink(h, path + '#' + c.slug, c.title, active),
renderChildren(h, c.children, path, route, maxDepth, depth + 1)
])
}))
@@ -87,6 +92,8 @@ a.sidebar-link
font-weight 600
color $accentColor
border-left-color $accentColor
+ &.hidden
+ display: none
.sidebar-group &
padding-left 2rem
.sidebar-sub-headers &
diff --git a/docs/.vuepress/theme/styles/config.styl b/docs/.vuepress/theme/styles/config.styl
index d7db7a3ad1..984cb568c2 100644
--- a/docs/.vuepress/theme/styles/config.styl
+++ b/docs/.vuepress/theme/styles/config.styl
@@ -8,7 +8,7 @@ $arrowBgColor = #ccc
// layout
$navbarHeight = 3.6rem
$sidebarWidth = 20rem
-$contentWidth = 740px
+$contentWidth = 800px
// responsive breakpoints
$MQNarrow = 959px
diff --git a/docs/.vuepress/theme/styles/theme.styl b/docs/.vuepress/theme/styles/theme.styl
index c3165711a4..5a02a27b30 100644
--- a/docs/.vuepress/theme/styles/theme.styl
+++ b/docs/.vuepress/theme/styles/theme.styl
@@ -27,9 +27,8 @@ a img + svg
display none !important
.version-selector
- margin 1em 1em 0 1.5em
+ margin-left 1.5rem
color lighten($textColor, 25%)
- display block
border 1px solid darken($borderColor, 10%)
font-size .9rem
line-height 2rem
diff --git a/docs/3.x.x/advanced/hooks.md b/docs/3.x.x/advanced/hooks.md
index a624aaeca9..2cc68baaeb 100644
--- a/docs/3.x.x/advanced/hooks.md
+++ b/docs/3.x.x/advanced/hooks.md
@@ -2,7 +2,7 @@
The hooks are modules that add functionality to the core. They are loaded during the server boot. For example, if your project needs to work with a SQL database, your will have to add the hook `strapi-hook-bookshelf` to be able to connect your app with your database.
-**Path —** `./hooks/documentation/lib/index.js`.
+**File structure**
```js
const fs = require('fs');
const path = require('path');
@@ -15,9 +15,7 @@ module.exports = strapi => {
*/
defaults: {
- documentation: {
- path: '/public/documentation'
- }
+ // config object
},
/**
@@ -25,28 +23,11 @@ module.exports = strapi => {
*/
initialize: cb => {
- try {
- // Check if documentation folder exist.
- fs.accessSync(path.resolve(process.cwd(), this.defaults.documentation.path));
- } catch (e) {
- // Otherwise, create the folder.
- fs.mkdirSync(path.resolve(process.cwd(), this.defaults.documentation.path));
- }
+ // Write your code here.
- // This function doesn't really exist,
- // it's just an example to tell you that you
- // run your business logic and when it's done
- // you just need to call the callback `cb`
- generateDocumentation(path.resolve(process.cwd(), this.defaults.documentation.path), function(err) {
- if (err) {
- // Error: it will display the error to the user
- // and the hook won't be loaded.
- return cb(err);
- }
+ // this.defaults['your_config'] to access to your configs.
- // Success.
- cb();
- });
+ cb();
}
};
@@ -57,14 +38,18 @@ module.exports = strapi => {
- `defaults` (object): Contains the defaults configurations. This object is merged to `strapi.config.hook.settings.**`.
- `initialize` (function): Called during the server boot. The callback `cb` needs to be called. Otherwise, the hook won't be loaded.
-Every folder that follows this name pattern `strapi-*` in your `./node_modules` folder will be loaded as a hook. The hooks are accessible through the `strapi.hook` variable.
+The hooks are accessible through the `strapi.hook` variable.
## Structure
+### Node modules
+
+Every folder that follows this name pattern `strapi-hook-*` in your `./node_modules` folder will be loaded as a hook.
+
A hook needs to follow the structure below:
```
-/hook
+/strapi-hook-[...]
└─── lib
- index.js
- LICENSE.md
@@ -74,6 +59,40 @@ A hook needs to follow the structure below:
The `index.js` is the entry point to your hook. It should look like the example above.
+### Custom hooks
+
+The framework allows to load hooks from the project directly without having to install them from npm. It's great way to take advantage of the features of the hooks system for code that doesn't need to be shared between apps. To achieve this, you have to create a `./hooks` folder at the root of your project and put the hooks into it.
+
+```
+/project
+└─── admin
+└─── api
+└─── config
+└─── hooks
+│ └─── strapi-documentation
+│ - index.js
+│ └─── strapi-server-side-rendering
+│ - index.js
+└─── plugins
+└─── public
+- favicon.ico
+- package.json
+- server.js
+```
+
+## Configuration and activation
+
+To activate and configure your hook with custom options, you need to edit your `./config/hooks.json` file in your Strapi app.
+```javascript
+{
+ ...
+ "hook-name": {
+ "enabled": true,
+ ...
+ }
+}
+```
+
## Dependencies
It happens that a hook has a dependency to another one. For example, the `strapi-hook-bookshelf` has a dependency to `strapi-hook-knex`. Without it, the `strapi-hook-bookshelf` can't work correctly. It also means that the `strapi-hook-knex` hook has to be loaded before.
@@ -95,24 +114,3 @@ To handle this case, you need to update the `package.json` at the root of your h
}
}
```
-
-## Custom hooks
-
-The framework allows to load hooks from the project directly without having to install them from npm. It's great way to take advantage of the features of the hooks system for code that doesn't need to be shared between apps. To achieve this, you have to create a `./hooks` folder at the root of your project and put the hooks into it.
-
-```
-/project
-└─── admin
-└─── api
-└─── config
-└─── hooks
-│ └─── strapi-documentation
-│ - index.js
-│ └─── strapi-server-side-rendering
-│ - index.js
-└─── plugins
-└─── public
-- favicon.ico
-- package.json
-- server.js
-```
diff --git a/docs/3.x.x/assets/getting-started_add_entry-.png b/docs/3.x.x/assets/getting-started_add_entry-.png
new file mode 100644
index 0000000000..8ec9a50042
Binary files /dev/null and b/docs/3.x.x/assets/getting-started_add_entry-.png differ
diff --git a/docs/3.x.x/assets/getting-started_add_entry.png b/docs/3.x.x/assets/getting-started_add_entry.png
index 3641893a2d..ec80aa960c 100644
Binary files a/docs/3.x.x/assets/getting-started_add_entry.png and b/docs/3.x.x/assets/getting-started_add_entry.png differ
diff --git a/docs/3.x.x/assets/getting-started_allow_access.png b/docs/3.x.x/assets/getting-started_allow_access.png
index 3c87f056b0..97e5d41cfe 100644
Binary files a/docs/3.x.x/assets/getting-started_allow_access.png and b/docs/3.x.x/assets/getting-started_allow_access.png differ
diff --git a/docs/3.x.x/assets/getting-started_create_content_type.png b/docs/3.x.x/assets/getting-started_create_content_type.png
index 01bcb17035..d94c0a1406 100644
Binary files a/docs/3.x.x/assets/getting-started_create_content_type.png and b/docs/3.x.x/assets/getting-started_create_content_type.png differ
diff --git a/docs/3.x.x/assets/getting-started_list_fields.png b/docs/3.x.x/assets/getting-started_list_fields.png
index eda037d52e..c26747f756 100644
Binary files a/docs/3.x.x/assets/getting-started_list_fields.png and b/docs/3.x.x/assets/getting-started_list_fields.png differ
diff --git a/docs/3.x.x/assets/getting-started_manage_role_home.png b/docs/3.x.x/assets/getting-started_manage_role_home.png
index 30844f5da0..ddd46bce6a 100644
Binary files a/docs/3.x.x/assets/getting-started_manage_role_home.png and b/docs/3.x.x/assets/getting-started_manage_role_home.png differ
diff --git a/docs/3.x.x/assets/getting-started_no_content_type.png b/docs/3.x.x/assets/getting-started_no_content_type.png
index 4df862022e..0823076f16 100644
Binary files a/docs/3.x.x/assets/getting-started_no_content_type.png and b/docs/3.x.x/assets/getting-started_no_content_type.png differ
diff --git a/docs/3.x.x/assets/getting-started_no_entry.png b/docs/3.x.x/assets/getting-started_no_entry.png
index dfaae83f68..4c35bdfc56 100644
Binary files a/docs/3.x.x/assets/getting-started_no_entry.png and b/docs/3.x.x/assets/getting-started_no_entry.png differ
diff --git a/docs/3.x.x/assets/getting-started_no_entry_.png b/docs/3.x.x/assets/getting-started_no_entry_.png
new file mode 100644
index 0000000000..f632444be0
Binary files /dev/null and b/docs/3.x.x/assets/getting-started_no_entry_.png differ
diff --git a/docs/3.x.x/assets/getting-started_with_entry.png b/docs/3.x.x/assets/getting-started_with_entry.png
index 0f51766cfa..14685eae90 100644
Binary files a/docs/3.x.x/assets/getting-started_with_entry.png and b/docs/3.x.x/assets/getting-started_with_entry.png differ
diff --git a/docs/3.x.x/assets/getting-started_with_entry_.png b/docs/3.x.x/assets/getting-started_with_entry_.png
new file mode 100644
index 0000000000..0f51766cfa
Binary files /dev/null and b/docs/3.x.x/assets/getting-started_with_entry_.png differ
diff --git a/docs/3.x.x/assets/terminal_new.png b/docs/3.x.x/assets/terminal_new.png
index 0ea2c51cdd..7408c81fb4 100644
Binary files a/docs/3.x.x/assets/terminal_new.png and b/docs/3.x.x/assets/terminal_new.png differ
diff --git a/docs/3.x.x/assets/terminal_start.png b/docs/3.x.x/assets/terminal_start.png
index 8e0e575e01..9fee7bc023 100644
Binary files a/docs/3.x.x/assets/terminal_start.png and b/docs/3.x.x/assets/terminal_start.png differ
diff --git a/docs/3.x.x/cli/CLI.md b/docs/3.x.x/cli/CLI.md
index dd1109ea9c..87aeccf694 100644
--- a/docs/3.x.x/cli/CLI.md
+++ b/docs/3.x.x/cli/CLI.md
@@ -182,7 +182,7 @@ strapi generate:plugin
Example: `strapi generate:plugin user` will create the plugin at `./plugins/user`.
-Please refer to the [plugin develoment documentation](../plugin-development/quick-start.md) to know more.
+Please refer to the [plugin development documentation](../plugin-development/quick-start.md) to know more.
***
diff --git a/docs/3.x.x/configurations/configurations.md b/docs/3.x.x/configurations/configurations.md
index 051d898a23..7aaf82b360 100644
--- a/docs/3.x.x/configurations/configurations.md
+++ b/docs/3.x.x/configurations/configurations.md
@@ -363,7 +363,7 @@ The session doesn't work with `mongo` as a client. The package that we should us
- `port` (integer): Port on which the server should be running. Default value: `1337`.
- `autoReload`
- `enabled` (boolean): Enable or disabled server reload on files update. Default value: depends on the environment.
- - `emitErrors` (boolean): Enable errors to be emited to `koa` when they happen in order to attach custom logic or use error reporting services.
+ - `emitErrors` (boolean): Enable errors to be emitted to `koa` when they happen in order to attach custom logic or use error reporting services.
- `proxy`
- `enabled` (boolean): Enable proxy support such as Apache or Nginx. Default value: `false`.
- `ssl` (boolean): Enable proxy SSL support
diff --git a/docs/3.x.x/getting-started/installation.md b/docs/3.x.x/getting-started/installation.md
index 7df07739e3..178d63f486 100644
--- a/docs/3.x.x/getting-started/installation.md
+++ b/docs/3.x.x/getting-started/installation.md
@@ -1,6 +1,8 @@
# Installation
-Installation is very easy and only takes a few seconds.
+### 👋 Welcome onboard!
+
+You recently discovered Strapi and look forward to give it a try? Let's start with the installation!
## Requirements
@@ -8,10 +10,11 @@ Please make sure your computer/server meets the following requirements:
- [Node.js](https://nodejs.org) >= 10.x: Node.js is a server platform which runs JavaScript. Installation guide [here](https://nodejs.org/en/download/).
- [NPM](https://www.npmjs.com/) >= 6.x: NPM is the package manager for Javascript. Installation guide [here](https://nodejs.org/en/download/).
*(Make sure the database that you are using meets the requirement.)*
- - [MongoDB](https://www.mongodb.com/) >= 3.x: MongoDB is a powerful document store. Installation guide [here](https://www.mongodb.com/download-center?j#community).
- - [MySQL](https://www.mysql.com/) >= 5.6: MySQL is an open-source relational database management system. Installation guide [here](https://dev.mysql.com/downloads/).
- - [MariaDB](https://mariadb.org/) >= 10.1: MarialDB is a fork of MySQL and is guaranteed to stay open source. Installation guide [here](https://mariadb.org/download/).
- - [PostgreSQL](https://www.postgresql.org/) >= 10: PostgreSQL is an open-source object-relational database management system. Installation guide [here](https://www.postgresql.org/download/).
+ - The database of your choice:
+ - [MongoDB](https://www.mongodb.com/) >= 3.x: MongoDB is a powerful document store. Installation guide [here](https://www.mongodb.com/download-center?j#community).
+ - [MySQL](https://www.mysql.com/) >= 5.6: MySQL is an open-source relational database management system. Installation guide [here](https://dev.mysql.com/downloads/).
+ - [MariaDB](https://mariadb.org/) >= 10.1: MarialDB is a fork of MySQL and is guaranteed to stay open source. Installation guide [here](https://mariadb.org/download/).
+ - [PostgreSQL](https://www.postgresql.org/) >= 10: PostgreSQL is an open-source object-relational database management system. Installation guide [here](https://www.postgresql.org/download/).
## Setup
@@ -27,7 +30,7 @@ If you encounter npm permissions issues, [change the permissions to npm default
It takes about 20 seconds with a good Internet connection. You can take a coffee ☕️ if you have a slow one.
-Having troubles during the installation? Check if someone already had the same issue https://github.com/strapi/strapi/issues. If not, you can [post one](https://github.com/strapi/strapi/issues/new), or ask for help https://strapi.io/support.
+Having troubles during the installation? Check if someone already had the [same issue](https://github.com/strapi/strapi/issues). If not, please [post one](https://github.com/strapi/strapi/issues/new).
## Check installation
@@ -43,4 +46,4 @@ Strapi is installed globally on your computer. Type `strapi` in your terminal yo
***
-Congrats! Now that Strapi is installed you can [create your first API](quick-start.md).
+👏 Congrats, you are all set! Now that Strapi is installed you can [create your first project](quick-start.md).
diff --git a/docs/3.x.x/getting-started/quick-start.md b/docs/3.x.x/getting-started/quick-start.md
index 7065b1ce69..a37fb05454 100644
--- a/docs/3.x.x/getting-started/quick-start.md
+++ b/docs/3.x.x/getting-started/quick-start.md
@@ -3,22 +3,21 @@
This section explains how to handle Strapi for the first time, ([check out our tutorial video](https://www.youtube.com/watch?v=yMl5IcFHA74)).
**Table of contents:**
-- [Quick start](#quick-start)
- - [Create your first project](#create-your-first-project)
- - [Create your first user](#create-your-first-user)
- - [Create your first API](#create-your-first-api)
- - [Files structure](#files-structure)
- - [Manage your data](#manage-your-data)
- - [Consume your API](#consume-your-api)
- - [List entries (GET)](#list-entries-get)
- - [Get a specific entry (GET)](#get-a-specific-entry-get)
- - [Create data (POST)](#create-data-post)
- - [Update data (PUT)](#update-data-put)
- - [Delete data (DELETE)](#delete-data-delete)
+- [1. Create your first project](#_1-create-a-project)
+- [2. Create your first user](#_2-register-the-first-user)
+- [3. Create your first Content Type](#_3-create-a-content-type)
+ - [Files structure](#files-structure)
+- [4. Manage your data](#_4-add-content)
+- [5. Consume your API](#_5-consume-the-api)
+ - [List entries (GET)](#list-entries-get)
+ - [Get a specific entry (GET)](#get-a-specific-entry-get)
+ - [Create data (POST)](#create-data-post)
+ - [Update data (PUT)](#update-data-put)
+ - [Delete data (DELETE)](#delete-data-delete)
***
-## Create your first project
+## 1. Create a project
Creating your first project with Strapi is easy:
@@ -34,6 +33,10 @@ strapi new my-project

+::: note
+The CLI will ask you to choose your database: select MongoDB, Postgres or MySQL. Then, fill the database information in. The default values should work if you correctly installed the database system on your machine.
+:::
+
This action creates a new folder named `my-project` with the entire [files structure](../concepts/concepts.md#files-structure) of a Strapi application.
**#3 — Go to your project and launch the server:**
@@ -47,44 +50,42 @@ strapi start

-Now that your app is running let's see how to [create your first user](#create-your-first-user).
+Now that your app is running let's see how to [create your first user](#_2-register-the-first-user).
***
-## Create your first user
+## 2. Register the first user
-In order to use the admin panel and to consume your API you first need to register your first user. This process only happens once if you don't have any user table created and is made to create the `admin user` that has all the permissions granted for your API.
+In order to use the admin panel and to consume your API you first need to register your first user. This process only happens once and is made to create the `admin user` who has all the permissions granted.
-If your using MongoDB for your database you don't have to create your table manually (it's already handled by Strapi) otherwise you'll have to create your user table first.
-
-To create your first user, start your server (`strapi start`) and go to : http://localhost:1337/admin.
+To create your first user, start your server (`strapi start`) and go to [http://localhost:1337/admin](http://localhost:1337/admin).

-Now that your first user is registered let's see how to [create your first api](#create-your-first-api).
+Now that your first user is registered let's see how to [create your first Content Type](#_3-create-a-content-type).
+
***
-## Create your first API
-To create your first API, start your server (`strapi start`) and go to : http://localhost:1337/admin.
+## 3. Create a Content Type
-At this point, your application is empty. To create your first API is to use the **Content Type Builder** plugin: a powerful UI to help you create an API in a few clicks. Let's take the example of an e-commerce API, which manages products.
+At this point, your project is empty. To create your first Content Type, you are going to use the **Content Type Builder** plugin: a powerful UI to help defining your Content Type's structure within a few clicks. Let's take the example of blog, which manages posts.
**#1 —** Go to the **Content Type Builder** plugin.

-**#2 —** Create a Content Type named `Product` and submit the form.
+**#2 —** Create a Content Type named `Post` and submit the form.

**#3 —** Add three fields in this Content Type.
- - A `string` field named `name`.
- - A `text` field named `description`.
- - A `number` field named `price` (with `float` as number format).
+ - A `string` field named `title`.
+ - A `text` field named `content` (tick the `Display as WYSIWYG` in the `Advanced Settings` tab).
+ - A `media` field named `cover`.
-
+
**#4 —** Save. That's it!
@@ -95,22 +96,22 @@ See the [CLI documentation](../cli/CLI.md#strapi-generateapi) for more informati
### Files structure
-A new directory has been created in the `./api` folder of your application which contains all the needed stuff for your `Product` Content Type: routes, controllers, services and models. Take a look at the [API structure documentation](../concepts/concepts.md#files-structure) for more informations.
+A new directory has been created in the `./api` folder of your application which contains all the needed stuff for your `Post` Content Type: routes, controllers, services and models. Take a look at the [API structure documentation](../concepts/concepts.md#files-structure) for more informations.
-**Well done, you created your first API using Strapi!**
+**Well done, you created your first Content Type using Strapi!**
***
-## Manage your data
+## 4. Add content
-After creating [your first Content Type](#create-your-first-api), it would be great to be able to create, edit or delete entries.
+After creating [your first Content Type](#_3-create-a-content-type), you probably want to create, edit or delete entries. No worries, everything is ready for you:
-**#1 —** Go to the [**Product list**](http://localhost:1337/admin/plugins/content-manager/product/) by clicking on the link in the left menu (generated by the **Content Manager** plugin).
+**#1 —** Go to the [**Post list**](http://localhost:1337/admin/plugins/content-manager/post/) by clicking on the link in the left menu (generated by the **Content Manager** plugin).

-**#2 —** Click on the button `Add New Product` and fill the form.
+**#2 —** Click on the button `Add New Post` and fill the form.

@@ -120,125 +121,161 @@ After creating [your first Content Type](#create-your-first-api), it would be gr
***
-## Consume your API
+## 5. Consume the API
-Your API is now ready and [contains data](#manage-your-data). At this point, you'll probably want to use this data in mobile or desktop applications.
-In order to do so, you'll need to allow access to other users (identified as 'Guest').
+Your API is now ready and [contains data](#_4-add-content). At this point, you'll probably want to use this data in mobile or desktop applications.
+In order to do so, you'll need to allow access to other users (identified as 'Public').
-**1 -** Go to the [**Auth & Permissions View**](http://localhost:1337/admin/plugins/users-permissions/roles) by clicking on **Auth & Permissions** link in the left menu and click on the **Guest Role** item.
+**1 -** Go to the [**Roles & Permissions View**](http://localhost:1337/admin/plugins/users-permissions/roles) by clicking on **Roles & Permissions** link in the left menu.

-**2 -** Manage your APIs permissions in the **Permissions** section of the [**Edit Guest Role view**](http://localhost:1337/admin/plugins/users-permissions/roles/edit/1) by enabling or disabling specific actions.
+**2 -** Click on the `Public` role, enable the actions related to your new Content Type and save:
-
+
+::: note
+You should now be able to get the list of posts from the API: [http://localhost:1337/posts](http://localhost:1337/posts).
+:::
### List entries (GET)
-To retrieve the list of products, use the `GET /products` route.
+To retrieve the list of posts, use the `GET /posts` route.
-Generated APIs provide a handy way to filter and order queries. In that way, ordering products by price is as easy as `GET http://localhost:1337/products?_sort=price:asc`. For more informations, read the [filters documentation](../guides/filters.md)
+Generated APIs provide a handy way to filter and order queries. In that way, ordering posts by price is as easy as `GET http://localhost:1337/posts?_sort=price:asc`. For more informations, read the [filters documentation](../guides/filters.md).
-Here is an example using jQuery.
+Here is an example using Axios:
```js
-$.ajax({
- type: 'GET',
- url: 'http://localhost:1337/products?_sort=price:asc', // Order by price.
- done: function(products) {
- console.log('Well done, here is the list of products: ', products);
- },
- fail: function(error) {
+import axios from 'axios';
+
+// Request API.
+axios
+ .get('http://localhost:1337/posts', {
+ params: {
+ _sort: 'createdAt:desc' // Generates http://localhost:1337/posts?_sort=createdAt:desc
+ }
+ })
+ .then(response => {
+ // Handle success.
+ console.log('Well done, here is the list of posts: ', response.data);
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
### Get a specific entry (GET)
-If you want to get a specific entry, add the `id` of the wanted product at the end of the url.
+If you want to get a specific entry, add the `id` of the wanted post at the end of the url.
+
+Examble with Axios:
```js
-$.ajax({
- type: 'GET',
- url: 'http://localhost:1337/products/123', // Where `123` is the `id` of the product.
- done: function(product) {
- console.log('Well done, here is the product having the `id` 123: ', product);
- },
- fail: function(error) {
+import axios from 'axios';
+
+const postId = 'YOUR_POST_ID_HERE'; // Replace with one of your posts id.
+
+// Request API.
+axios
+ .get(`http://localhost:1337/posts/${postId}`)
+ .then(response => {
+ // Handle success.
+ console.log('Well done, here is the post: ', response.data);
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
### Create data (POST)
Use the `POST` route to create a new entry.
-jQuery example:
+Examble with Axios:
```js
-$.ajax({
- type: 'POST',
- url: 'http://localhost:1337/products',
- data: {
- name: 'Cheese cake',
- description: 'Chocolate cheese cake with ice cream',
- price: 5
- },
- done: function(product) {
- console.log('Congrats, your product has been successfully created: ', product); // Remember the product `id` for the next steps.
- },
- fail: function(error) {
+import axios from 'axios';
+
+// Request API.
+axios
+ .post(`http://localhost:1337/posts/`, {
+ title: 'My new post'
+ })
+ .then(response => {
+ // Handle success.
+ console.log(
+ 'Well done, your post has been successfully created: ',
+ response.data
+ );
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
### Update data (PUT)
Use the `PUT` route to update an existing entry.
-jQuery example:
+Examble with Axios:
```js
-$.ajax({
- type: 'PUT',
- url: 'http://localhost:1337/products/123', // Where `123` is the `id` of the product.
- data: {
- description: 'This is the new description'
- },
- done: function(product) {
- console.log('Congrats, your product has been successfully updated: ', product.description);
- },
- fail: function(error) {
+import axios from 'axios';
+
+const postId = 'YOUR_POST_ID_HERE'; // Replace with one of your posts id.
+
+// Request API.
+axios
+ .put(`http://localhost:1337/posts/${postId}`, {
+ title: 'Updated title'
+ })
+ .then(response => {
+ // Handle success.
+ console.log(
+ 'Well done, your post has been successfully updated: ',
+ response.data
+ );
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
### Delete data (DELETE)
Use the `DELETE` route to delete an existing entry.
-jQuery example:
+Examble with Axios:
```js
-$.ajax({
- type: 'DELETE',
- url: 'http://localhost:1337/products/123', // Where `123` is the `id` of the product.
- done: function(product) {
- console.log('Congrats, your product has been successfully deleted: ', product);
- },
- fail: function(error) {
- console.log('An error occurred:', error);
- }
-});
-```
+import axios from 'axios';
+const postId = 'YOUR_POST_ID_HERE'; // Replace with one of your posts id.
+
+// Request API.
+axios
+ .delete(`http://localhost:1337/posts/${postId}`)
+ .then(response => {
+ // Handle success.
+ console.log(
+ 'Well done, your post has been successfully updated: ',
+ response.data
+ );
+ })
+ .catch(error => {
+ // Handle error.
+ console.log('An error occurred:', error);
+ });
+```
***
-Congratulations! You successfully finished the Getting Started guide! Read the [concepts](../concepts/concepts.md) to understand more advanced concepts.
+#### 👏 Congratulations!
+
+You successfully finished the Getting Started guide! Read the [concepts section](../concepts/concepts.md) to understand more deeply how to use and customize Strapi.
Also, feel free to join the community thanks to the different channels listed in the [community page](http://strapi.io/community): team members, contributors and developers will be happy to help you.
diff --git a/docs/3.x.x/guides/authentication.md b/docs/3.x.x/guides/authentication.md
index 9d73e600f5..cc956add90 100644
--- a/docs/3.x.x/guides/authentication.md
+++ b/docs/3.x.x/guides/authentication.md
@@ -4,33 +4,35 @@
This feature requires the Users & Permissions plugin (installed by default).
:::
-## Register a new user
+## Registration
This route lets you create new users.
#### Usage
```js
-$.ajax({
- type: 'POST',
- url: 'http://localhost:1337/auth/local/register',
- data: {
+import axios from 'axios';
+
+// Request API.
+axios
+ .post('http://localhost:1337/auth/local/register', {
username: 'Strapi user',
email: 'user@strapi.io',
password: 'strapiPassword'
- },
- done: function(auth) {
+ })
+ .then(response => {
+ // Handle success.
console.log('Well done!');
- console.log('User profile', auth.user);
- console.log('User token', auth.jwt);
- },
- fail: function(error) {
+ console.log('User profile', response.data.user);
+ console.log('User token', response.data.jwt);
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
-## Login.
+## Login
This route lets you login your users by getting an authentication token.
@@ -39,22 +41,24 @@ This route lets you login your users by getting an authentication token.
- The `identifier` param can either be an email or a username.
```js
-$.ajax({
- type: 'POST',
- url: 'http://localhost:1337/auth/local',
- data: {
- identifier: 'user@strapi.io',
- password: 'strapiPassword'
- },
- done: function(auth) {
+import axios from 'axios';
+
+// Request API.
+axios
+ .post('http://localhost:1337/auth/local', {
+ identifier: 'user@strapi.io',
+ password: 'strapiPassword'
+ })
+ .then(response => {
+ // Handle success.
console.log('Well done!');
- console.log('User profile', auth.user);
- console.log('User token', auth.jwt);
- },
- fail: function(error) {
+ console.log('User profile', response.data.user);
+ console.log('User token', response.data.jwt);
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
## Providers
@@ -81,14 +85,14 @@ After his approval, he will be redirected to `/auth/:provider/callback`. The `jw
Response payload:
-```js
+```json
{
"user": {},
"jwt": ""
}
```
-## Use your token to be identified as a user.
+## Token usage
By default, each API request is identified as `guest` role (see permissions of `guest`'s role in your admin dashboard). To make a request as a user, you have to set the `Authorization` token in your request headers. You receive a 401 error if you are not authorized to make this request or if your authorization header is not correct.
@@ -97,22 +101,28 @@ By default, each API request is identified as `guest` role (see permissions of `
- The `token` variable is the `data.jwt` received when login in or registering.
```js
-$.ajax({
- type: 'GET',
- url: 'http://localhost:1337/articles',
- headers: {
- Authorization: `Bearer ${token}`
- },
- done: function(data) {
- console.log('Your data', data);
- },
- fail: function(error) {
+import axios from 'axios';
+
+const token = 'YOUR_TOKEN_HERE';
+
+// Request API.
+axios
+ .get('http://localhost:1337/posts', {
+ headers: {
+ Authorization: `Bearer ${token}`
+ }
+ })
+ .then(response => {
+ // Handle success.
+ console.log('Data: ', response.data);
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
-## Send forgot password request.
+## Forgotten password
This action sends an email to a user with the link of you reset password page. This link contains an URL param `code` which is required to reset user password.
@@ -123,23 +133,25 @@ This action sends an email to a user with the link of you reset password page. T
it is used to redirect the user to the new-password form.
```js
-$.ajax({
- type: 'POST',
- url: 'http://localhost:1337/auth/forgot-password',
- data: {
+import axios from 'axios';
+
+// Request API.
+axios
+ .post('http://localhost:1337/auth/forgot-password', {
email: 'user@strapi.io',
url: 'http:/localhost:1337/admin/plugins/users-permissions/auth/reset-password'
- },
- done: function() {
+ })
+ .then(response => {
+ // Handle success.
console.log('Your user received an email');
- },
- fail: function(error) {
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
-});
+ });
```
-## Reset user password.
+## Password reset
This action will reset the user password.
@@ -148,24 +160,28 @@ This action will reset the user password.
- `code` is the url params received from the email link (see forgot password)
```js
-$.ajax({
- type: 'POST',
- url: 'http://localhost:1337/auth/reset-password',
- data: {
+import axios from 'axios';
+
+// Request API.
+axios
+ .post('http://localhost:1337/auth/reset-password', {
code: 'privateCode',
password: 'myNewPassword',
passwordConfirmation: 'myNewPassword'
- },
- done: function() {
- console.log('Your user password is reset');
- },
- fail: function(error) {
+ })
+ .then(response => {
+ // Handle success.
+ console.log('Your user\'s password has been changed.');
+ })
+ .catch(error => {
+ // Handle error.
console.log('An error occurred:', error);
- }
+ });
});
```
-## User Object In Strapi Context
+## User object in Strapi context
+
The `user` object is available to successfully authenticated requests.
#### Usage
@@ -190,7 +206,7 @@ The `user` object is available to successfully authenticated requests.
```
-## Add a new provider
+## Adding a new provider
To add a new provider on Strapi, you will need to perform changes onto the following files:
@@ -257,9 +273,9 @@ You may also want to take a look onto the numerous already made configurations [
callback(err);
} else {
// Combine username and discriminator because discord username is not unique
- var username = `${body.username}#${body.discriminator}`;
+ const username = `${body.username}#${body.discriminator}`;
callback(null, {
- username: username,
+ username,
email: body.email
});
}
@@ -322,7 +338,7 @@ As for backend, we have a `switch...case` where we need to put our new provider
Add the corresponding translation into: `packages/strapi-plugin-users-permissions/admin/src/translations/en.json`
```js
- "PopUpForm.Providers.discord.providerConfig.redirectURL": "The redirect URL to add in your Discord application configurations",
+ 'PopUpForm.Providers.discord.providerConfig.redirectURL': 'The redirect URL to add in your Discord application configurations',
````
These two change will set up the popup message who appear on the UI when we will configure our new provider.
diff --git a/docs/3.x.x/guides/graphql.md b/docs/3.x.x/guides/graphql.md
index b20fd013aa..8468089f03 100644
--- a/docs/3.x.x/guides/graphql.md
+++ b/docs/3.x.x/guides/graphql.md
@@ -672,15 +672,10 @@ module.exports = {
In this example, the policy `isAuthenticated` located in `./plugins/users-permissions/config/policies/isAuthenticated.js` will be executed first. Then, the `isOwner` policy located in the `Post` API `./api/post/config/policies/isOwner.js`. Next, it will execute the `logging` policy located in `./config/policies/logging.js`. Finally, the resolver will be executed.
-<<<<<<< HEAD:docs/3.x.x/guides/graphql.md
+
::: note
There is no custom resolver in that case, so it will execute the default resolver (Post.find) provided by the Shadow CRUD feature.
:::
-=======
-The same process is applied to the `createPost` mutation.
-
-> Note: There is no custom resolver in that case, so it will execute the default resolver (Post.find) provided by the Shadow CRUD feature.
->>>>>>> 5705158a4368b144541493e08570ce0e93734ed8:docs/3.x.x/en/guides/graphql.md
### Link a query or mutation to a controller action
diff --git a/docs/3.x.x/guides/models.md b/docs/3.x.x/guides/models.md
index a4cd2841fa..52e04cde51 100644
--- a/docs/3.x.x/guides/models.md
+++ b/docs/3.x.x/guides/models.md
@@ -25,8 +25,8 @@ The info key on the model-json states information about the model. This informat
## Model options
The options key on the model-json states.
- - `idAttribute`: This tells the model which attribute to expect as the unique identifier for each database row (typically an auto-incrementing primary key named 'id').
- - `idAttributeType`: Data type of `idAttribute`, accepted list of value bellow:
+ - `idAttribute`: This tells the model which attribute to expect as the unique identifier for each database row (typically an auto-incrementing primary key named 'id'). _Only valid for strapi-hook-bookshelf_
+ - `idAttributeType`: Data type of `idAttribute`, accepted list of value bellow. _Only valid for strapi-hook-bookshelf_
## Define the attributes
diff --git a/docs/3.x.x/guides/webhooks.md b/docs/3.x.x/guides/webhooks.md
new file mode 100644
index 0000000000..2c7a47f93b
--- /dev/null
+++ b/docs/3.x.x/guides/webhooks.md
@@ -0,0 +1,121 @@
+# Webhooks
+
+If you are using a static website generator (or framework with build option) with Strapi (Gatsby, Nuxt, Next, etc.) it is necessary to rebuild it when the content is updated in Strapi. In a Headless CMS, this is typically called a [Webhook feature](https://strapi.io/marketplace/webhooks). Unfortunately it is not available yet in Strapi even if [it has been requested](https://portal.productboard.com/strapi/c/27-webhooks).
+
+But what we like at Strapi is to help developers. So even if the feature is not developed yet, here is an easy to implement work around!
+
+### Discovering the lifecycle callbacks 🔍
+
+As you may know, every Content Type (aka models) has lifecycle callbacks: functions which are triggered every time an entry is fetched, inserted, updated or deleted. Here is the list:
+
+ - Callbacks on `save` (both triggered on entry creation and update): `beforeSave`, `afterSave`.
+ - Callbacks on `fetch`: `beforeFetch`, `afterFetch`.
+ - Callbacks on `fetchAll`: `beforeFetchAll`, `afterFetchAll`.
+ - Callbacks on `create`: `beforeCreate`, `afterCreate`.
+ - Callbacks on `update`: `beforeUpdate`, `afterUpdate`.
+ - Callbacks on `destroy`: `beforeDestroy`, `afterDestroy`.
+
+All of these functions are available in a file located at `api/yourContentType/models/YourContentType.js`.
+
+If your goal is to rebuild a static website, the only useful callbacks are `afterCreate`, `afterUpdate` and `afterDestroy`. So, uncomment them, add logs and try to create, update and delete entries from the admin panel.
+
+*Path: `api/yourContentType/models/YourContentType.js`*
+
+```js
+'use strict';
+
+/**
+ * Lifecycle callbacks for the `Post` model.
+ */
+
+module.exports = {
+ afterCreate: async (entry) => {
+ console.log('afterCreate');
+ },
+
+ afterUpdate: async (entry) => {
+ console.log('afterUpdate');
+ },
+
+ afterDestroy: async (entry) => {
+ console.log('afterDestroy');
+ }
+};
+```
+
+### Making the HTTP call 🔊
+
+We are almost there: the only thing we still need to do is to actually make the HTTP call to the URL which will rebuild the static website.
+
+#### URL config
+
+So first of all, let's store this URL in a proper way. To do so, edit `config/environments/development/custom.json`:
+
+*Path: `config/environments/development/custom.json`*
+
+```json
+{
+ "staticWebsiteBuildURL": "https://yourservice.com/"
+}
+```
+
+Do the same thing for other environments.
+
+#### HTTP call
+
+Now it is time to make the HTTP call. In this example we will use `request` as it is already in the list of Strapi's dependencies. Let's install it:
+
+```
+npm i request --save
+```
+
+Edit `api/yourContentType/models/YourContentType.js`:
+
+*Path: `api/yourContentType/models/YourContentType.js`*
+
+```js
+'use strict';
+
+const request = require('request');
+
+/**
+ * Lifecycle callbacks for the `Post` model.
+ */
+
+module.exports = {
+ afterCreate: async (entry) => {
+ axios.post(strapi.config.currentEnvironment.staticWebsiteBuildURL, entry)
+ .catch(() => {
+ // Ignore
+ }
+ );
+ },
+
+ afterUpdate: async (entry) => {
+ axios.post(strapi.config.currentEnvironment.staticWebsiteBuildURL, entry)
+ .catch(() => {
+ // Ignore
+ }
+ );
+ },
+
+ afterDestroy: async (entry) => {
+ axios.post(strapi.config.currentEnvironment.staticWebsiteBuildURL, entry)
+ .catch(() => {
+ // Ignore
+ }
+ );
+ }
+};
+```
+
+#### Mongoose limitation
+
+Until September 2018, `remove` lifecycle callback [was not supported by Mongoose](https://github.com/Automattic/mongoose/issues/3054). This has been added but `strapi-hook-mongoose` is not adapted yet to this update.
+
+So, to trigger an url on delete, please add `request.post(strapi.config.currentEnvironment.staticWebsiteBuildURL, entry);` in:
+
+ - `remove` action of `api/yourContentType/services/YourContentType.js` (triggered by your public API).
+ - `delete` action of `plugins/content-manager/services/ContentManager.js` (triggered by the Content Manager).
+
+*Note: do not forget to require `request` at the top of these files.*
diff --git a/docs/3.x.x/tutorials/README.md b/docs/3.x.x/tutorials/README.md
index 9b1344563d..081fcdb82d 100644
--- a/docs/3.x.x/tutorials/README.md
+++ b/docs/3.x.x/tutorials/README.md
@@ -10,7 +10,9 @@ Go further with Strapi, official and community tutorials are here to help you:
### Development
- [Building a static blog using Gatsby and Strapi (official)](https://hackernoon.com/building-a-static-blog-using-gatsby-and-strapi-8b5acfc82ad8)
-
+ - [🍝 Cooking a Deliveroo clone with Nuxt (Vue.js), GraphQL, Strapi and Stripe (official)](https://blog.strapi.io/cooking-a-deliveroo-clone-with-nuxt-vue-js-graphql-strapi-and-stripe-setup-part-1-7)
+ - [🍝 Cooking a Deliveroo clone with Next.js (React), GraphQL, Strapi and Stripe](https://blog.strapi.io/strapi-next-setup)
+
### Deployment
- [Using mLab with Strapi (official)](https://medium.com/@strapi/using-mlab-with-strapi-e3f968a9c530)
diff --git a/docs/README.md b/docs/README.md
index 0a27d4a613..6ce3067f62 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,5 +1,5 @@
---
meta:
- http-equiv: refresh
- content: 0;url=/documentation/3.x.x/
+ content: 0;url=/documentation/3.x.x/getting-started/installation.html
---
diff --git a/docs/package.json b/docs/package.json
index 6d8cb38d1e..e2ff078925 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -12,7 +12,8 @@
"dependencies": {
"directory-tree": "^2.1.0",
"markdown-it-decorate": "^1.2.2",
- "vuepress": "^0.14.2"
+ "vuepress": "^0.14.2",
+ "cache-loader": "1.2.2"
},
"devDependencies": {
"markdown-it-container": "^2.0.0"
diff --git a/package.json b/package.json
index bdd465fdcf..10b573923e 100644
--- a/package.json
+++ b/package.json
@@ -1,16 +1,16 @@
{
"private": true,
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"dependencies": {},
"devDependencies": {
"assert": "~1.3.0",
"axios": "^0.18.0",
"babel-eslint": "^6.1.2",
"chalk": "^2.4.1",
- "eslint": "^3.12.2",
+ "eslint": "^4.19.1",
"eslint-plugin-babel": "^4.0.0",
- "eslint-plugin-react": "^6.8.0",
- "eslint-plugin-redux-saga": "^0.3.0",
+ "eslint-plugin-react": "^7.7.0",
+ "eslint-plugin-redux-saga": "^0.8.0",
"istanbul": "~0.4.2",
"jest": "^22.4.3",
"jest-cli": "^22.4.4",
diff --git a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js
index 67c5a589db..fda0e7abc4 100644
--- a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js
+++ b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js
@@ -15,10 +15,8 @@ defineMessages(messages);
function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function
return (
);
}
diff --git a/packages/strapi-admin/admin/src/config/languages.json b/packages/strapi-admin/admin/src/config/languages.json
index 1fd3d36fcd..054f9a872e 100644
--- a/packages/strapi-admin/admin/src/config/languages.json
+++ b/packages/strapi-admin/admin/src/config/languages.json
@@ -1,3 +1,3 @@
{
- "languages": ["ar", "en", "es", "fr", "de", "it", "ko", "nl", "pl", "pt", "pt-BR", "tr", "zh", "zh-Hans"]
+ "languages": ["en", "ar", "es", "fr", "de", "it", "ko", "nl", "pl", "pt", "pt-BR", "ru", "tr", "zh", "zh-Hans", "ja"]
}
diff --git a/packages/strapi-admin/admin/src/config/manifest.json b/packages/strapi-admin/admin/src/config/manifest.json
index 55c53616bf..66bf73c2e8 100644
--- a/packages/strapi-admin/admin/src/config/manifest.json
+++ b/packages/strapi-admin/admin/src/config/manifest.json
@@ -1 +1 @@
-{"name":"vendor_lib","content":{"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_export.js":{"id":0,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_an-object.js":{"id":1,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_global.js":{"id":2,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_fails.js":{"id":3,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-object.js":{"id":4,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_wks.js":{"id":5,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_descriptors.js":{"id":6,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-dp.js":{"id":7,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-length.js":{"id":8,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-object.js":{"id":9,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_a-function.js":{"id":10,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_hide.js":{"id":11,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_redefine.js":{"id":12,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-html.js":{"id":13,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_has.js":{"id":14,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-iobject.js":{"id":15,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gopd.js":{"id":16,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gpo.js":{"id":17,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_core.js":{"id":18,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_ctx.js":{"id":19,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_cof.js":{"id":20,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_strict-method.js":{"id":21,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react/index.js":{"id":22,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-primitive.js":{"id":23,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_defined.js":{"id":24,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-integer.js":{"id":25,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-sap.js":{"id":26,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-methods.js":{"id":27,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_typed-array.js":{"id":28,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_metadata.js":{"id":29,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/prop-types/index.js":{"id":30,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_meta.js":{"id":31,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_library.js":{"id":32,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_add-to-unscopables.js":{"id":33,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_property-desc.js":{"id":34,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_uid.js":{"id":35,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-keys.js":{"id":36,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-absolute-index.js":{"id":37,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-create.js":{"id":38,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gopn.js":{"id":39,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-species.js":{"id":40,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_an-instance.js":{"id":41,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_for-of.js":{"id":42,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_redefine-all.js":{"id":43,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-to-string-tag.js":{"id":44,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-trim.js":{"id":45,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iterators.js":{"id":46,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_validate-collection.js":{"id":47,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iobject.js":{"id":48,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-pie.js":{"id":49,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_classof.js":{"id":50,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-dom/index.js":{"id":51,"meta":{}},"./strapi-helper-plugin/node_modules/webpack/buildin/global.js":{"id":52,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_shared.js":{"id":53,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-includes.js":{"id":54,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gops.js":{"id":55,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-array.js":{"id":56,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-regexp.js":{"id":57,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-detect.js":{"id":58,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_flags.js":{"id":59,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_fix-re-wks.js":{"id":60,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_species-constructor.js":{"id":61,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_user-agent.js":{"id":62,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection.js":{"id":63,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_typed.js":{"id":64,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-forced-pam.js":{"id":65,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-collection-of.js":{"id":66,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-collection-from.js":{"id":67,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_dom-create.js":{"id":68,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_wks-define.js":{"id":69,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_shared-key.js":{"id":70,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_enum-bug-keys.js":{"id":71,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_html.js":{"id":72,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-proto.js":{"id":73,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-ws.js":{"id":74,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_inherit-if-required.js":{"id":75,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-repeat.js":{"id":76,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-sign.js":{"id":77,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-expm1.js":{"id":78,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-at.js":{"id":79,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-define.js":{"id":80,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-create.js":{"id":81,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-context.js":{"id":82,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_fails-is-regexp.js":{"id":83,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-array-iter.js":{"id":84,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_create-property.js":{"id":85,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/core.get-iterator-method.js":{"id":86,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-species-create.js":{"id":87,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-fill.js":{"id":88,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.iterator.js":{"id":89,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_task.js":{"id":90,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_microtask.js":{"id":91,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_new-promise-capability.js":{"id":92,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_typed-buffer.js":{"id":93,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/object-assign/index.js":{"id":94,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/main.js":{"id":95,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/utils.js":{"id":96,"meta":{"harmonyModule":true},"exports":["hop","extend"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/Transition.js":{"id":97,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js":{"id":98,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/utils/PropTypes.js":{"id":99,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/TransitionGroup.js":{"id":100,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_ie8-dom-define.js":{"id":101,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_wks-ext.js":{"id":102,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-keys-internal.js":{"id":103,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-dps.js":{"id":104,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gopn-ext.js":{"id":105,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-assign.js":{"id":106,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_bind.js":{"id":107,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_invoke.js":{"id":108,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_parse-int.js":{"id":109,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_parse-float.js":{"id":110,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_a-number-value.js":{"id":111,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-integer.js":{"id":112,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-log1p.js":{"id":113,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-fround.js":{"id":114,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-call.js":{"id":115,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-reduce.js":{"id":116,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-copy-within.js":{"id":117,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-step.js":{"id":118,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.flags.js":{"id":119,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_perform.js":{"id":120,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_promise-resolve.js":{"id":121,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.map.js":{"id":122,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection-strong.js":{"id":123,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.set.js":{"id":124,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.weak-map.js":{"id":125,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection-weak.js":{"id":126,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-index.js":{"id":127,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_own-keys.js":{"id":128,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_flatten-into-array.js":{"id":129,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-pad.js":{"id":130,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-to-array.js":{"id":131,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection-to-json.js":{"id":132,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-from-iterable.js":{"id":133,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-scale.js":{"id":134,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react/cjs/react.production.min.js":{"id":136,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-dom/cjs/react-dom.production.min.js":{"id":137,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/schedule/index.js":{"id":138,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/schedule/cjs/schedule.production.min.js":{"id":139,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-intl/lib/index.es.js":{"id":140,"meta":{"harmonyModule":true},"exports":["addLocaleData","intlShape","injectIntl","defineMessages","IntlProvider","FormattedDate","FormattedTime","FormattedRelative","FormattedNumber","FormattedPlural","FormattedMessage","FormattedHTMLMessage"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/core.js":{"id":142,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/es5.js":{"id":143,"meta":{"harmonyModule":true},"exports":["defineProperty","objCreate"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/compiler.js":{"id":144,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat-parser/src/parser.js":{"id":145,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/en.js":{"id":146,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/main.js":{"id":147,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/core.js":{"id":148,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/diff.js":{"id":149,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/es5.js":{"id":150,"meta":{"harmonyModule":true},"exports":["defineProperty","objCreate","arrIndexOf","isArray","dateNow"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/en.js":{"id":151,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/prop-types/factoryWithThrowingShims.js":{"id":152,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/prop-types/lib/ReactPropTypesSecret.js":{"id":153,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":{"id":154,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/invariant/browser.js":{"id":155,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-format-cache/src/memoizer.js":{"id":156,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-format-cache/src/es5.js":{"id":157,"meta":{"harmonyModule":true},"exports":["bind","defineProperty","objCreate"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/reactstrap/dist/reactstrap.es.js":{"id":158,"meta":{"harmonyModule":true},"exports":["Alert","Container","Row","Col","Navbar","NavbarBrand","NavbarToggler","Nav","NavItem","NavDropdown","NavLink","Breadcrumb","BreadcrumbItem","Button","ButtonDropdown","ButtonGroup","ButtonToolbar","Dropdown","DropdownItem","DropdownMenu","DropdownToggle","Fade","Badge","Card","CardLink","CardGroup","CardDeck","CardColumns","CardBody","CardBlock","CardFooter","CardHeader","CardImg","CardImgOverlay","Carousel","UncontrolledCarousel","CarouselControl","CarouselItem","CarouselIndicators","CarouselCaption","CardSubtitle","CardText","CardTitle","Popover","PopoverContent","PopoverBody","PopoverTitle","PopoverHeader","Progress","Modal","ModalHeader","ModalBody","ModalFooter","PopperContent","PopperTargetHelper","Tooltip","Table","ListGroup","Form","FormFeedback","FormGroup","FormText","Input","InputGroup","InputGroupAddon","InputGroupButton","InputGroupButtonDropdown","InputGroupText","Label","Media","Pagination","PaginationItem","PaginationLink","TabContent","TabPane","Jumbotron","Collapse","ListGroupItem","ListGroupItemText","ListGroupItemHeading","UncontrolledAlert","UncontrolledButtonDropdown","UncontrolledDropdown","UncontrolledNavDropdown","UncontrolledTooltip","Util"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/classnames/index.js":{"id":159,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash.isfunction/index.js":{"id":160,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash.isobject/index.js":{"id":161,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-popper/dist/react-popper.js":{"id":162,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash.tonumber/index.js":{"id":163,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/index.js":{"id":164,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/CSSTransition.js":{"id":165,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/dom-helpers/class/addClass.js":{"id":166,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/dom-helpers/class/hasClass.js":{"id":167,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/dom-helpers/class/removeClass.js":{"id":168,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/ReplaceTransition.js":{"id":169,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/utils/ChildMapping.js":{"id":170,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/immutable/dist/immutable.js":{"id":171,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash/lodash.js":{"id":172,"meta":{}},"./strapi-helper-plugin/node_modules/webpack/buildin/module.js":{"id":173,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/babel-polyfill/lib/index.js":{"id":174,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/shim.js":{"id":175,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.symbol.js":{"id":176,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_enum-keys.js":{"id":177,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.create.js":{"id":178,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.define-property.js":{"id":179,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.define-properties.js":{"id":180,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js":{"id":181,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.get-prototype-of.js":{"id":182,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.keys.js":{"id":183,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.get-own-property-names.js":{"id":184,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.freeze.js":{"id":185,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.seal.js":{"id":186,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.prevent-extensions.js":{"id":187,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is-frozen.js":{"id":188,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is-sealed.js":{"id":189,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is-extensible.js":{"id":190,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.assign.js":{"id":191,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is.js":{"id":192,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_same-value.js":{"id":193,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.set-prototype-of.js":{"id":194,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.to-string.js":{"id":195,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.function.bind.js":{"id":196,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.function.name.js":{"id":197,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.function.has-instance.js":{"id":198,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.parse-int.js":{"id":199,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.parse-float.js":{"id":200,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.constructor.js":{"id":201,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.to-fixed.js":{"id":202,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.to-precision.js":{"id":203,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.epsilon.js":{"id":204,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-finite.js":{"id":205,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-integer.js":{"id":206,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-nan.js":{"id":207,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-safe-integer.js":{"id":208,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.max-safe-integer.js":{"id":209,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.min-safe-integer.js":{"id":210,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.parse-float.js":{"id":211,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.parse-int.js":{"id":212,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.acosh.js":{"id":213,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.asinh.js":{"id":214,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.atanh.js":{"id":215,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.cbrt.js":{"id":216,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.clz32.js":{"id":217,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.cosh.js":{"id":218,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.expm1.js":{"id":219,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.fround.js":{"id":220,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.hypot.js":{"id":221,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.imul.js":{"id":222,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.log10.js":{"id":223,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.log1p.js":{"id":224,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.log2.js":{"id":225,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.sign.js":{"id":226,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.sinh.js":{"id":227,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.tanh.js":{"id":228,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.trunc.js":{"id":229,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.from-code-point.js":{"id":230,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.raw.js":{"id":231,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.trim.js":{"id":232,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.iterator.js":{"id":233,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.code-point-at.js":{"id":234,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.ends-with.js":{"id":235,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.includes.js":{"id":236,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.repeat.js":{"id":237,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.starts-with.js":{"id":238,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.anchor.js":{"id":239,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.big.js":{"id":240,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.blink.js":{"id":241,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.bold.js":{"id":242,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.fixed.js":{"id":243,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.fontcolor.js":{"id":244,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.fontsize.js":{"id":245,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.italics.js":{"id":246,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.link.js":{"id":247,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.small.js":{"id":248,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.strike.js":{"id":249,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.sub.js":{"id":250,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.sup.js":{"id":251,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.now.js":{"id":252,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-json.js":{"id":253,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-iso-string.js":{"id":254,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_date-to-iso-string.js":{"id":255,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-string.js":{"id":256,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-primitive.js":{"id":257,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_date-to-primitive.js":{"id":258,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.is-array.js":{"id":259,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.from.js":{"id":260,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.of.js":{"id":261,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.join.js":{"id":262,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.slice.js":{"id":263,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.sort.js":{"id":264,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.for-each.js":{"id":265,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-species-constructor.js":{"id":266,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.map.js":{"id":267,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.filter.js":{"id":268,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.some.js":{"id":269,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.every.js":{"id":270,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.reduce.js":{"id":271,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.reduce-right.js":{"id":272,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.index-of.js":{"id":273,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.last-index-of.js":{"id":274,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.copy-within.js":{"id":275,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.fill.js":{"id":276,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.find.js":{"id":277,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.find-index.js":{"id":278,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.species.js":{"id":279,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.constructor.js":{"id":280,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.to-string.js":{"id":281,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.match.js":{"id":282,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.replace.js":{"id":283,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.search.js":{"id":284,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.split.js":{"id":285,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.promise.js":{"id":286,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.weak-set.js":{"id":287,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.array-buffer.js":{"id":288,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.data-view.js":{"id":289,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.int8-array.js":{"id":290,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint8-array.js":{"id":291,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js":{"id":292,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.int16-array.js":{"id":293,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint16-array.js":{"id":294,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.int32-array.js":{"id":295,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint32-array.js":{"id":296,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.float32-array.js":{"id":297,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.float64-array.js":{"id":298,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.apply.js":{"id":299,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.construct.js":{"id":300,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.define-property.js":{"id":301,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.delete-property.js":{"id":302,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.enumerate.js":{"id":303,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.get.js":{"id":304,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js":{"id":305,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.get-prototype-of.js":{"id":306,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.has.js":{"id":307,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.is-extensible.js":{"id":308,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.own-keys.js":{"id":309,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.prevent-extensions.js":{"id":310,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.set.js":{"id":311,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.set-prototype-of.js":{"id":312,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.array.includes.js":{"id":313,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.array.flat-map.js":{"id":314,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.array.flatten.js":{"id":315,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.at.js":{"id":316,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.pad-start.js":{"id":317,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.pad-end.js":{"id":318,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.trim-left.js":{"id":319,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.trim-right.js":{"id":320,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.match-all.js":{"id":321,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.symbol.async-iterator.js":{"id":322,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.symbol.observable.js":{"id":323,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js":{"id":324,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.values.js":{"id":325,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.entries.js":{"id":326,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.define-getter.js":{"id":327,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.define-setter.js":{"id":328,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.lookup-getter.js":{"id":329,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.lookup-setter.js":{"id":330,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.map.to-json.js":{"id":331,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.set.to-json.js":{"id":332,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.map.of.js":{"id":333,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.set.of.js":{"id":334,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-map.of.js":{"id":335,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-set.of.js":{"id":336,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.map.from.js":{"id":337,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.set.from.js":{"id":338,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-map.from.js":{"id":339,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-set.from.js":{"id":340,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.global.js":{"id":341,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.system.global.js":{"id":342,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.error.is-error.js":{"id":343,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.clamp.js":{"id":344,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.deg-per-rad.js":{"id":345,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.degrees.js":{"id":346,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.fscale.js":{"id":347,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.iaddh.js":{"id":348,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.isubh.js":{"id":349,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.imulh.js":{"id":350,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.rad-per-deg.js":{"id":351,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.radians.js":{"id":352,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.scale.js":{"id":353,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.umulh.js":{"id":354,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.signbit.js":{"id":355,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.promise.finally.js":{"id":356,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.promise.try.js":{"id":357,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.define-metadata.js":{"id":358,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.delete-metadata.js":{"id":359,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-metadata.js":{"id":360,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-metadata-keys.js":{"id":361,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-own-metadata.js":{"id":362,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js":{"id":363,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.has-metadata.js":{"id":364,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.has-own-metadata.js":{"id":365,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.metadata.js":{"id":366,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.asap.js":{"id":367,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.observable.js":{"id":368,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/web.timers.js":{"id":369,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/web.immediate.js":{"id":370,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/web.dom.iterable.js":{"id":371,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js":{"id":372,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/fn/regexp/escape.js":{"id":373,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/core.regexp.escape.js":{"id":374,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_replacer.js":{"id":375,"meta":{}}}}
\ No newline at end of file
+{"name":"vendor_lib","content":{"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_export.js":{"id":0,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_an-object.js":{"id":1,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_global.js":{"id":2,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_fails.js":{"id":3,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-object.js":{"id":4,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_wks.js":{"id":5,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_descriptors.js":{"id":6,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-dp.js":{"id":7,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-length.js":{"id":8,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-object.js":{"id":9,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_a-function.js":{"id":10,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_hide.js":{"id":11,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_redefine.js":{"id":12,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-html.js":{"id":13,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_has.js":{"id":14,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-iobject.js":{"id":15,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gopd.js":{"id":16,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gpo.js":{"id":17,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_core.js":{"id":18,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_ctx.js":{"id":19,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_cof.js":{"id":20,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_strict-method.js":{"id":21,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react/index.js":{"id":22,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-primitive.js":{"id":23,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_defined.js":{"id":24,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-integer.js":{"id":25,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-sap.js":{"id":26,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-methods.js":{"id":27,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_typed-array.js":{"id":28,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_metadata.js":{"id":29,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/prop-types/index.js":{"id":30,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_meta.js":{"id":31,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_library.js":{"id":32,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_add-to-unscopables.js":{"id":33,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_property-desc.js":{"id":34,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_uid.js":{"id":35,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-keys.js":{"id":36,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-absolute-index.js":{"id":37,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-create.js":{"id":38,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gopn.js":{"id":39,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-species.js":{"id":40,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_an-instance.js":{"id":41,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_for-of.js":{"id":42,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_redefine-all.js":{"id":43,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-to-string-tag.js":{"id":44,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-trim.js":{"id":45,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iterators.js":{"id":46,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_validate-collection.js":{"id":47,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iobject.js":{"id":48,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-pie.js":{"id":49,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_classof.js":{"id":50,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-dom/index.js":{"id":51,"meta":{}},"./strapi-helper-plugin/node_modules/webpack/buildin/global.js":{"id":52,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_shared.js":{"id":53,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-includes.js":{"id":54,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gops.js":{"id":55,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-array.js":{"id":56,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-regexp.js":{"id":57,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-detect.js":{"id":58,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_flags.js":{"id":59,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_fix-re-wks.js":{"id":60,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_species-constructor.js":{"id":61,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_user-agent.js":{"id":62,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection.js":{"id":63,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_typed.js":{"id":64,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-forced-pam.js":{"id":65,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-collection-of.js":{"id":66,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-collection-from.js":{"id":67,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_dom-create.js":{"id":68,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_wks-define.js":{"id":69,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_shared-key.js":{"id":70,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_enum-bug-keys.js":{"id":71,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_html.js":{"id":72,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_set-proto.js":{"id":73,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-ws.js":{"id":74,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_inherit-if-required.js":{"id":75,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-repeat.js":{"id":76,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-sign.js":{"id":77,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-expm1.js":{"id":78,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-at.js":{"id":79,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-define.js":{"id":80,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-create.js":{"id":81,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-context.js":{"id":82,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_fails-is-regexp.js":{"id":83,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-array-iter.js":{"id":84,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_create-property.js":{"id":85,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/core.get-iterator-method.js":{"id":86,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-species-create.js":{"id":87,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-fill.js":{"id":88,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.iterator.js":{"id":89,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_task.js":{"id":90,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_microtask.js":{"id":91,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_new-promise-capability.js":{"id":92,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_typed-buffer.js":{"id":93,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/object-assign/index.js":{"id":94,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/main.js":{"id":95,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/utils.js":{"id":96,"meta":{"harmonyModule":true},"exports":["hop","extend"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/Transition.js":{"id":97,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js":{"id":98,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/utils/PropTypes.js":{"id":99,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/TransitionGroup.js":{"id":100,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_ie8-dom-define.js":{"id":101,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_wks-ext.js":{"id":102,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-keys-internal.js":{"id":103,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-dps.js":{"id":104,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-gopn-ext.js":{"id":105,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-assign.js":{"id":106,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_bind.js":{"id":107,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_invoke.js":{"id":108,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_parse-int.js":{"id":109,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_parse-float.js":{"id":110,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_a-number-value.js":{"id":111,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_is-integer.js":{"id":112,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-log1p.js":{"id":113,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-fround.js":{"id":114,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-call.js":{"id":115,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-reduce.js":{"id":116,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-copy-within.js":{"id":117,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_iter-step.js":{"id":118,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.flags.js":{"id":119,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_perform.js":{"id":120,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_promise-resolve.js":{"id":121,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.map.js":{"id":122,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection-strong.js":{"id":123,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.set.js":{"id":124,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.weak-map.js":{"id":125,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection-weak.js":{"id":126,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_to-index.js":{"id":127,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_own-keys.js":{"id":128,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_flatten-into-array.js":{"id":129,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_string-pad.js":{"id":130,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_object-to-array.js":{"id":131,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_collection-to-json.js":{"id":132,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-from-iterable.js":{"id":133,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_math-scale.js":{"id":134,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react/cjs/react.production.min.js":{"id":136,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-dom/cjs/react-dom.production.min.js":{"id":137,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/scheduler/index.js":{"id":138,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/scheduler/cjs/scheduler.production.min.js":{"id":139,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-intl/lib/index.es.js":{"id":140,"meta":{"harmonyModule":true},"exports":["addLocaleData","intlShape","injectIntl","defineMessages","IntlProvider","FormattedDate","FormattedTime","FormattedRelative","FormattedNumber","FormattedPlural","FormattedMessage","FormattedHTMLMessage"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/core.js":{"id":142,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/es5.js":{"id":143,"meta":{"harmonyModule":true},"exports":["defineProperty","objCreate"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/compiler.js":{"id":144,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat-parser/src/parser.js":{"id":145,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-messageformat/src/en.js":{"id":146,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/main.js":{"id":147,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/core.js":{"id":148,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/diff.js":{"id":149,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/es5.js":{"id":150,"meta":{"harmonyModule":true},"exports":["defineProperty","objCreate","arrIndexOf","isArray","dateNow"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-relativeformat/src/en.js":{"id":151,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/prop-types/factoryWithThrowingShims.js":{"id":152,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/prop-types/lib/ReactPropTypesSecret.js":{"id":153,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":{"id":154,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/invariant/browser.js":{"id":155,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-format-cache/src/memoizer.js":{"id":156,"meta":{"harmonyModule":true},"exports":["default"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/intl-format-cache/src/es5.js":{"id":157,"meta":{"harmonyModule":true},"exports":["bind","defineProperty","objCreate"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/reactstrap/dist/reactstrap.es.js":{"id":158,"meta":{"harmonyModule":true},"exports":["Alert","Container","Row","Col","Navbar","NavbarBrand","NavbarToggler","Nav","NavItem","NavDropdown","NavLink","Breadcrumb","BreadcrumbItem","Button","ButtonDropdown","ButtonGroup","ButtonToolbar","Dropdown","DropdownItem","DropdownMenu","DropdownToggle","Fade","Badge","Card","CardLink","CardGroup","CardDeck","CardColumns","CardBody","CardBlock","CardFooter","CardHeader","CardImg","CardImgOverlay","Carousel","UncontrolledCarousel","CarouselControl","CarouselItem","CarouselIndicators","CarouselCaption","CardSubtitle","CardText","CardTitle","Popover","PopoverContent","PopoverBody","PopoverTitle","PopoverHeader","Progress","Modal","ModalHeader","ModalBody","ModalFooter","PopperContent","PopperTargetHelper","Tooltip","Table","ListGroup","Form","FormFeedback","FormGroup","FormText","Input","InputGroup","InputGroupAddon","InputGroupButton","InputGroupButtonDropdown","InputGroupText","Label","Media","Pagination","PaginationItem","PaginationLink","TabContent","TabPane","Jumbotron","Collapse","ListGroupItem","ListGroupItemText","ListGroupItemHeading","UncontrolledAlert","UncontrolledButtonDropdown","UncontrolledDropdown","UncontrolledNavDropdown","UncontrolledTooltip","Util"]},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/classnames/index.js":{"id":159,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash.isfunction/index.js":{"id":160,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash.isobject/index.js":{"id":161,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-popper/dist/react-popper.js":{"id":162,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash.tonumber/index.js":{"id":163,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/index.js":{"id":164,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/CSSTransition.js":{"id":165,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/dom-helpers/class/addClass.js":{"id":166,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/@babel/runtime/helpers/interopRequireDefault.js":{"id":167,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/dom-helpers/class/hasClass.js":{"id":168,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/dom-helpers/class/removeClass.js":{"id":169,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/ReplaceTransition.js":{"id":170,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/react-transition-group/utils/ChildMapping.js":{"id":171,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/immutable/dist/immutable.js":{"id":172,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/lodash/lodash.js":{"id":173,"meta":{}},"./strapi-helper-plugin/node_modules/webpack/buildin/module.js":{"id":174,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/babel-polyfill/lib/index.js":{"id":175,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/shim.js":{"id":176,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.symbol.js":{"id":177,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_enum-keys.js":{"id":178,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.create.js":{"id":179,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.define-property.js":{"id":180,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.define-properties.js":{"id":181,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js":{"id":182,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.get-prototype-of.js":{"id":183,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.keys.js":{"id":184,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.get-own-property-names.js":{"id":185,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.freeze.js":{"id":186,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.seal.js":{"id":187,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.prevent-extensions.js":{"id":188,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is-frozen.js":{"id":189,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is-sealed.js":{"id":190,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is-extensible.js":{"id":191,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.assign.js":{"id":192,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.is.js":{"id":193,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_same-value.js":{"id":194,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.set-prototype-of.js":{"id":195,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.object.to-string.js":{"id":196,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.function.bind.js":{"id":197,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.function.name.js":{"id":198,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.function.has-instance.js":{"id":199,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.parse-int.js":{"id":200,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.parse-float.js":{"id":201,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.constructor.js":{"id":202,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.to-fixed.js":{"id":203,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.to-precision.js":{"id":204,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.epsilon.js":{"id":205,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-finite.js":{"id":206,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-integer.js":{"id":207,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-nan.js":{"id":208,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.is-safe-integer.js":{"id":209,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.max-safe-integer.js":{"id":210,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.min-safe-integer.js":{"id":211,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.parse-float.js":{"id":212,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.number.parse-int.js":{"id":213,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.acosh.js":{"id":214,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.asinh.js":{"id":215,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.atanh.js":{"id":216,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.cbrt.js":{"id":217,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.clz32.js":{"id":218,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.cosh.js":{"id":219,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.expm1.js":{"id":220,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.fround.js":{"id":221,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.hypot.js":{"id":222,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.imul.js":{"id":223,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.log10.js":{"id":224,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.log1p.js":{"id":225,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.log2.js":{"id":226,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.sign.js":{"id":227,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.sinh.js":{"id":228,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.tanh.js":{"id":229,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.math.trunc.js":{"id":230,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.from-code-point.js":{"id":231,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.raw.js":{"id":232,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.trim.js":{"id":233,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.iterator.js":{"id":234,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.code-point-at.js":{"id":235,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.ends-with.js":{"id":236,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.includes.js":{"id":237,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.repeat.js":{"id":238,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.starts-with.js":{"id":239,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.anchor.js":{"id":240,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.big.js":{"id":241,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.blink.js":{"id":242,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.bold.js":{"id":243,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.fixed.js":{"id":244,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.fontcolor.js":{"id":245,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.fontsize.js":{"id":246,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.italics.js":{"id":247,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.link.js":{"id":248,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.small.js":{"id":249,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.strike.js":{"id":250,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.sub.js":{"id":251,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.string.sup.js":{"id":252,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.now.js":{"id":253,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-json.js":{"id":254,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-iso-string.js":{"id":255,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_date-to-iso-string.js":{"id":256,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-string.js":{"id":257,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.date.to-primitive.js":{"id":258,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_date-to-primitive.js":{"id":259,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.is-array.js":{"id":260,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.from.js":{"id":261,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.of.js":{"id":262,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.join.js":{"id":263,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.slice.js":{"id":264,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.sort.js":{"id":265,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.for-each.js":{"id":266,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_array-species-constructor.js":{"id":267,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.map.js":{"id":268,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.filter.js":{"id":269,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.some.js":{"id":270,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.every.js":{"id":271,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.reduce.js":{"id":272,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.reduce-right.js":{"id":273,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.index-of.js":{"id":274,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.last-index-of.js":{"id":275,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.copy-within.js":{"id":276,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.fill.js":{"id":277,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.find.js":{"id":278,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.find-index.js":{"id":279,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.array.species.js":{"id":280,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.constructor.js":{"id":281,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.to-string.js":{"id":282,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.match.js":{"id":283,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.replace.js":{"id":284,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.search.js":{"id":285,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.regexp.split.js":{"id":286,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.promise.js":{"id":287,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.weak-set.js":{"id":288,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.array-buffer.js":{"id":289,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.data-view.js":{"id":290,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.int8-array.js":{"id":291,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint8-array.js":{"id":292,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js":{"id":293,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.int16-array.js":{"id":294,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint16-array.js":{"id":295,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.int32-array.js":{"id":296,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.uint32-array.js":{"id":297,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.float32-array.js":{"id":298,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.typed.float64-array.js":{"id":299,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.apply.js":{"id":300,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.construct.js":{"id":301,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.define-property.js":{"id":302,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.delete-property.js":{"id":303,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.enumerate.js":{"id":304,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.get.js":{"id":305,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js":{"id":306,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.get-prototype-of.js":{"id":307,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.has.js":{"id":308,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.is-extensible.js":{"id":309,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.own-keys.js":{"id":310,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.prevent-extensions.js":{"id":311,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.set.js":{"id":312,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es6.reflect.set-prototype-of.js":{"id":313,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.array.includes.js":{"id":314,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.array.flat-map.js":{"id":315,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.array.flatten.js":{"id":316,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.at.js":{"id":317,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.pad-start.js":{"id":318,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.pad-end.js":{"id":319,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.trim-left.js":{"id":320,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.trim-right.js":{"id":321,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.string.match-all.js":{"id":322,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.symbol.async-iterator.js":{"id":323,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.symbol.observable.js":{"id":324,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js":{"id":325,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.values.js":{"id":326,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.entries.js":{"id":327,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.define-getter.js":{"id":328,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.define-setter.js":{"id":329,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.lookup-getter.js":{"id":330,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.object.lookup-setter.js":{"id":331,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.map.to-json.js":{"id":332,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.set.to-json.js":{"id":333,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.map.of.js":{"id":334,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.set.of.js":{"id":335,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-map.of.js":{"id":336,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-set.of.js":{"id":337,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.map.from.js":{"id":338,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.set.from.js":{"id":339,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-map.from.js":{"id":340,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.weak-set.from.js":{"id":341,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.global.js":{"id":342,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.system.global.js":{"id":343,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.error.is-error.js":{"id":344,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.clamp.js":{"id":345,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.deg-per-rad.js":{"id":346,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.degrees.js":{"id":347,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.fscale.js":{"id":348,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.iaddh.js":{"id":349,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.isubh.js":{"id":350,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.imulh.js":{"id":351,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.rad-per-deg.js":{"id":352,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.radians.js":{"id":353,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.scale.js":{"id":354,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.umulh.js":{"id":355,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.math.signbit.js":{"id":356,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.promise.finally.js":{"id":357,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.promise.try.js":{"id":358,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.define-metadata.js":{"id":359,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.delete-metadata.js":{"id":360,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-metadata.js":{"id":361,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-metadata-keys.js":{"id":362,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-own-metadata.js":{"id":363,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js":{"id":364,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.has-metadata.js":{"id":365,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.has-own-metadata.js":{"id":366,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.reflect.metadata.js":{"id":367,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.asap.js":{"id":368,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/es7.observable.js":{"id":369,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/web.timers.js":{"id":370,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/web.immediate.js":{"id":371,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/web.dom.iterable.js":{"id":372,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js":{"id":373,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/fn/regexp/escape.js":{"id":374,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/core.regexp.escape.js":{"id":375,"meta":{}},"./strapi-admin/node_modules/strapi-helper-plugin/node_modules/core-js/modules/_replacer.js":{"id":376,"meta":{}}}}
diff --git a/packages/strapi-admin/admin/src/containers/App/index.js b/packages/strapi-admin/admin/src/containers/App/index.js
index 7441753f96..961d13049d 100644
--- a/packages/strapi-admin/admin/src/containers/App/index.js
+++ b/packages/strapi-admin/admin/src/containers/App/index.js
@@ -14,14 +14,12 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Switch, Route } from 'react-router-dom';
-
import AdminPage from 'containers/AdminPage';
import NotFoundPage from 'containers/NotFoundPage';
-
import NotificationProvider from 'containers/NotificationProvider';
-
+import AppLoader from 'containers/AppLoader';
+import LoadingIndicatorPage from 'components/LoadingIndicatorPage';
import '../../styles/main.scss';
-
import styles from './styles.scss';
export class App extends React.Component { // eslint-disable-line react/prefer-stateless-function
@@ -29,12 +27,22 @@ export class App extends React.Component { // eslint-disable-line react/prefer-s
return (
-
-
-
-
-
-
+
+ {({ shouldLoad }) => {
+ if (shouldLoad) {
+ return ;
+ }
+
+ return (
+
+
+
+
+
+
+ );
+ }}
+
);
}
diff --git a/packages/strapi-admin/admin/src/containers/App/selectors.js b/packages/strapi-admin/admin/src/containers/App/selectors.js
index 23f8460b9f..09401b3b74 100644
--- a/packages/strapi-admin/admin/src/containers/App/selectors.js
+++ b/packages/strapi-admin/admin/src/containers/App/selectors.js
@@ -14,6 +14,11 @@ const selectPlugins = () => createSelector(
(appState) => appState.get('plugins')
);
+const makeSelectApp = () => createSelector(
+ selectApp(),
+ appState => appState.toJS(),
+);
+
const selectHasUserPlugin = () => createSelector(
selectApp(),
(appState) => appState.get('hasUserPlugin'),
@@ -38,7 +43,7 @@ const makeSelectAppPlugins = () => createSelector(
selectApp(),
appState => appState.get('appPlugins').toJS(),
);
-
+export default makeSelectApp;
export {
selectApp,
selectHasUserPlugin,
diff --git a/packages/strapi-admin/admin/src/containers/AppLoader/index.js b/packages/strapi-admin/admin/src/containers/AppLoader/index.js
new file mode 100644
index 0000000000..446e59eda2
--- /dev/null
+++ b/packages/strapi-admin/admin/src/containers/AppLoader/index.js
@@ -0,0 +1,34 @@
+/**
+ *
+ * AppLoader
+ *
+ */
+
+import React from 'react';
+import { connect } from 'react-redux';
+import PropTypes from 'prop-types';
+import makeSelectApp from 'containers/App/selectors';
+
+class AppLoader extends React.Component {
+ shouldLoad = () => {
+ const { appPlugins, plugins: mountedPlugins } = this.props;
+
+ return appPlugins.length !== Object.keys(mountedPlugins).length;
+ }
+
+ render() {
+ const { children } = this.props;
+
+ return children({ shouldLoad: this.shouldLoad() });
+ }
+}
+
+AppLoader.propTypes = {
+ appPlugins: PropTypes.array.isRequired,
+ children: PropTypes.func.isRequired,
+ plugins: PropTypes.object.isRequired,
+};
+
+const mapStateToProps = makeSelectApp();
+
+export default connect(mapStateToProps, null)(AppLoader);
\ No newline at end of file
diff --git a/packages/strapi-admin/admin/src/containers/HomePage/saga.js b/packages/strapi-admin/admin/src/containers/HomePage/saga.js
index d4086e6f8d..881ecb72e3 100644
--- a/packages/strapi-admin/admin/src/containers/HomePage/saga.js
+++ b/packages/strapi-admin/admin/src/containers/HomePage/saga.js
@@ -2,15 +2,14 @@ import 'whatwg-fetch';
import { dropRight, take } from 'lodash';
import removeMd from 'remove-markdown';
import {
+ all,
call,
fork,
put,
select,
takeLatest,
} from 'redux-saga/effects';
-
import request from 'utils/request';
-
import { getArticlesSucceeded, submitSucceeded } from './actions';
import { GET_ARTICLES, SUBMIT } from './constants';
import { makeSelectBody } from './selectors';
@@ -51,8 +50,10 @@ function* submit() {
}
function* defaultSaga() {
- yield fork(takeLatest, SUBMIT, submit);
- yield fork(takeLatest, GET_ARTICLES, getArticles);
+ yield all([
+ fork(takeLatest, SUBMIT, submit),
+ fork(takeLatest, GET_ARTICLES, getArticles),
+ ]);
}
diff --git a/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js b/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js
index a6257fbb1c..4c9e051b42 100644
--- a/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js
+++ b/packages/strapi-admin/admin/src/containers/ListPluginsPage/saga.js
@@ -1,10 +1,9 @@
import { LOCATION_CHANGE } from 'react-router-redux';
import { get } from 'lodash';
-import { fork, call, put, select, takeLatest, take, cancel } from 'redux-saga/effects';
+import { all, fork, call, put, select, takeLatest, take, cancel } from 'redux-saga/effects';
import { pluginDeleted } from 'containers/App/actions';
import auth from 'utils/auth';
import request from 'utils/request';
-
import { selectLocale } from '../LanguageProvider/selectors';
import { deletePluginSucceeded, getAppCurrentEnvSucceeded, getPluginsSucceeded } from './actions';
import { GET_PLUGINS, ON_DELETE_PLUGIN_CONFIRM } from './constants';
@@ -36,10 +35,10 @@ export function* deletePlugin() {
export function* pluginsGet() {
try {
// Fetch plugins.
- const response = yield [
+ const response = yield all([
call(request, '/admin/plugins', { method: 'GET' }),
call(request, '/admin/currentEnvironment', { method: 'GET' }),
- ];
+ ]);
const locale = yield select(selectLocale());
const opts = {
diff --git a/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js b/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js
index aa6b0c4965..9f16adc14d 100644
--- a/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js
+++ b/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js
@@ -35,6 +35,8 @@ export class LocaleToggle extends React.Component { // eslint-disable-line
return 'https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/flags/4x3/sa.svg';
case 'ko':
return 'https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/flags/4x3/kr.svg';
+ case 'ja':
+ return 'https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/flags/4x3/jp.svg';
default:
return `https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/flags/4x3/${locale}.svg`;
}
diff --git a/packages/strapi-admin/admin/src/translations/de.json b/packages/strapi-admin/admin/src/translations/de.json
index d8d0e4b1e8..05ecb5c30d 100644
--- a/packages/strapi-admin/admin/src/translations/de.json
+++ b/packages/strapi-admin/admin/src/translations/de.json
@@ -63,7 +63,7 @@
"app.components.InstallPluginPopup.navLink.avis": "avis",
"app.components.InstallPluginPopup.navLink.changelog": "Änderungsprotokoll",
"app.components.InstallPluginPopup.navLink.description": "Beschreibung",
- "app.components.InstallPluginPopup.navLink.faq": "faq",
+ "app.components.InstallPluginPopup.navLink.faq": "FAQ",
"app.components.InstallPluginPopup.navLink.screenshots": "Screenshots",
"app.components.InstallPluginPopup.noDescription": "Keine Beschreibung verfügbar",
"app.components.LeftMenuFooter.poweredBy": "Stolz präsentiert von ",
@@ -85,7 +85,7 @@
"app.components.PluginCard.compatible": "Mit der App kompatibel",
"app.components.PluginCard.compatibleCommunity": "Mit der Community kompatibel",
"app.components.PluginCard.more-details": "Mehr Details",
- "app.components.PluginCard.price.free": "Umsonst",
+ "app.components.PluginCard.price.free": "Kostenlos",
"app.components.listPlugins.button": "Neues Plugin hinzufügen",
"app.components.listPlugins.title.none": "Es ist kein Plugin installiert",
"app.components.listPlugins.title.plural": "{number} Plugins sind installiert",
diff --git a/packages/strapi-admin/admin/src/translations/es.json b/packages/strapi-admin/admin/src/translations/es.json
index 18a005c70f..ff056c0055 100644
--- a/packages/strapi-admin/admin/src/translations/es.json
+++ b/packages/strapi-admin/admin/src/translations/es.json
@@ -136,5 +136,6 @@
"components.popUpWarning.title": "Por favor, confirme",
"notification.error": "Se ha producido un error",
"notification.error.layout": "No se pudo recuperar el esquema",
- "request.error.model.unknown": "Este modelo no existe"
+ "request.error.model.unknown": "Este modelo no existe",
+ "app.utils.delete": "Eliminar"
}
\ No newline at end of file
diff --git a/packages/strapi-admin/admin/src/translations/fr.json b/packages/strapi-admin/admin/src/translations/fr.json
index fec7ee627e..7f002a80e8 100644
--- a/packages/strapi-admin/admin/src/translations/fr.json
+++ b/packages/strapi-admin/admin/src/translations/fr.json
@@ -3,7 +3,7 @@
"Auth & Permissions": "Auth & Permissions",
"Content Manager": "Content Manager",
"Content Type Builder": "Content Type Builder",
- "Email": "Email",
+ "Email": "E-mail",
"Files Upload": "Téléversement de fichiers",
"HomePage.notification.newsLetter.success": "Vous avez souscrit à la newsletter",
"New entry": "Nouvelle entrée",
@@ -20,8 +20,8 @@
"app.components.BlockLink.code.content": "Apprenez en testant les projets développés par la communauté.",
"app.components.BlockLink.documentation": "Voir la documentation",
"app.components.BlockLink.documentation.content": "Découvrez les concepts, guides et tutoriaux.",
- "app.components.Button.cancel": "Cancel",
- "app.components.Button.save": "Save",
+ "app.components.Button.cancel": "Annuler",
+ "app.components.Button.save": "Sauvegarder",
"app.components.ComingSoonPage.comingSoon": "Bientôt disponible",
"app.components.ComingSoonPage.featuresNotAvailable": "Cette fonctionnalité est toujours en cours de développement.",
"app.components.DownloadInfo.download": "Téléchargement en cours...",
@@ -39,32 +39,32 @@
"app.components.HomePage.newsLetter": "Inscrivez-vous à la newsletter pour être contacté à propos de Strapi",
"app.components.HomePage.support": "SUPPORT US",
"app.components.HomePage.support.content": "En achetant notre T-shirt, vous nous aidez à poursuivre à maintenir le projet pour que nous puissions vous donner la meilleure expérience possible!",
- "app.components.HomePage.support.link": "OBTENEZ VOTRE T-SHIRT!",
- "app.components.HomePage.welcome": "Bienvenue à bord!",
+ "app.components.HomePage.support.link": "OBTENEZ VOTRE T-SHIRT !",
+ "app.components.HomePage.welcome": "Bienvenue à bord !",
"app.components.HomePage.welcome.again": "Bienvenue ",
"app.components.HomePage.welcomeBlock.content": "Nous sommes heureux de vous compter parmi nos membres. Nous sommes à l'écoute de vos retours alors, n'hésitez pas à nous envoyer des DM sur ",
"app.components.HomePage.welcomeBlock.content.again": "Nous espérons que votre projet avance bien... Découvrez les derniers articles à propos de Strapi. Nous faisons de notre mieux pour améliorer le produit selon vos retours.",
"app.components.HomePage.welcomeBlock.content.issues": "issues",
"app.components.HomePage.welcomeBlock.content.raise": " ou soumetez des ",
- "app.components.ImgPreview.hint": "Drag & drop dans cette zone ou {browse} un fichier à télécharger",
+ "app.components.ImgPreview.hint": "Glissez-déposez dans cette zone ou {browse} un fichier à télécharger",
"app.components.ImgPreview.hint.browse": "recherchez",
- "app.components.InputFile.newFile": "Ajouter un nouveau fichier",
+ "app.components.InputFile.newFile": "Ajouter un nouveau fichier",
"app.components.InputFileDetails.open": "Ouvrir dans une nouvelle fenêtre",
- "app.components.InputFileDetails.originalName": "Nom d'origine:",
+ "app.components.InputFileDetails.originalName": "Nom d'origine :",
"app.components.InputFileDetails.remove": "Supprimer ce fichier",
"app.components.InputFileDetails.size": "Taille:",
"app.components.InstallPluginPage.InputSearch.label": " ",
- "app.components.InstallPluginPage.InputSearch.placeholder": "Recherchez un plugin... (ex: authentification)",
+ "app.components.InstallPluginPage.InputSearch.placeholder": "Recherchez un plugin... (ex : authentification)",
"app.components.InstallPluginPage.description": "Améliorez votre app sans efforts",
"app.components.InstallPluginPage.helmet": "Marketplace - Plugins",
- "app.components.InstallPluginPage.plugin.support-us.description": "Soutenez-nous en achetant un Strapi tee shirt. Cela nous aidera a continuer de travailler sur le projet pour vous donner la meilleure expérience possible!",
+ "app.components.InstallPluginPage.plugin.support-us.description": "Soutenez-nous en achetant un t-shirt Strapi. Cela nous aidera a continuer de travailler sur le projet pour vous donner la meilleure expérience possible!",
"app.components.InstallPluginPage.title": "Marketplace - Plugins",
"app.components.InstallPluginPopup.downloads": "téléchargements",
"app.components.InstallPluginPopup.navLink.avis": "avis",
"app.components.InstallPluginPopup.navLink.changelog": "changelog",
"app.components.InstallPluginPopup.navLink.description": "Description",
- "app.components.InstallPluginPopup.navLink.faq": "faq",
- "app.components.InstallPluginPopup.navLink.screenshots": "Screenshots",
+ "app.components.InstallPluginPopup.navLink.faq": "FAQ",
+ "app.components.InstallPluginPopup.navLink.screenshots": "Captures d'écran",
"app.components.InstallPluginPopup.noDescription": "Aucune description disponible",
"app.components.LeftMenuFooter.poweredBy": "Propulsé par ",
"app.components.LeftMenuLinkContainer.configuration": "Configurations",
@@ -82,8 +82,8 @@
"app.components.PluginCard.Button.label.download": "Télécharger",
"app.components.PluginCard.Button.label.install": "Déjà installé",
"app.components.PluginCard.Button.label.support": "Nous soutenir",
- "app.components.PluginCard.compatible": "Compatble avec votre app",
- "app.components.PluginCard.compatibleCommunity": "Compatble avec la communauté",
+ "app.components.PluginCard.compatible": "Compatible avec votre app",
+ "app.components.PluginCard.compatibleCommunity": "Compatible avec la communauté",
"app.components.PluginCard.more-details": "Plus de détails",
"app.components.PluginCard.price.free": "Gratuit",
"app.components.listPlugins.button": "Ajouter un Nouveau Plugin",
@@ -102,13 +102,13 @@
"components.Input.error.attribute.taken": "Ce champ existe déjà",
"components.Input.error.contentTypeName.taken": "Ce nom existe déjà",
"components.Input.error.custom-error": "{errorMessage} ",
- "components.Input.error.validation.email": "Le format n'est pas de type email",
+ "components.Input.error.validation.email": "Le format n'est pas de type e-mail",
"components.Input.error.validation.json": "Le format JSON n'est pas respecté",
"components.Input.error.validation.max": "La valeur est trop grande.",
"components.Input.error.validation.maxLength": "La valeur est trop longue.",
"components.Input.error.validation.min": "La valeur est trop basse.",
"components.Input.error.validation.minLength": "La valeur est trop courte.",
- "components.Input.error.validation.minSupMax": "Ne peut pas être plus grand",
+ "components.Input.error.validation.minSupMax": "Ne peut pas être plus grand.",
"components.Input.error.validation.regex": "La valeur ne correspond pas au format attendu.",
"components.Input.error.validation.required": "Ce champ est obligatoire.",
"components.ListRow.empty": "Il n'y a pas de données à afficher.",
@@ -118,7 +118,7 @@
"components.ProductionBlocker.description": "Pour des raisons de sécurité il est désactivé dans les autres environnements.",
"components.ProductionBlocker.header": "Ce plugin est disponible uniquement en développement.",
"components.Wysiwyg.ToggleMode.markdown": "Retour au markdown",
- "components.Wysiwyg.ToggleMode.preview": "Voir la preview",
+ "components.Wysiwyg.ToggleMode.preview": "Voir une prévisualisation",
"components.Wysiwyg.collapse": "Fermer",
"components.Wysiwyg.selectOptions.H1": "Titre H1",
"components.Wysiwyg.selectOptions.H2": "Titre H2",
@@ -127,16 +127,16 @@
"components.Wysiwyg.selectOptions.H5": "Titre H5",
"components.Wysiwyg.selectOptions.H6": "Titre H6",
"components.Wysiwyg.selectOptions.title": "Ajouter un titre",
- "components.WysiwygBottomControls.charactersIndicators": "charactères",
+ "components.WysiwygBottomControls.charactersIndicators": "caractères",
"components.WysiwygBottomControls.fullscreen": "Plein écran",
- "components.WysiwygBottomControls.uploadFiles": "Ajouter des fichiers en les 'droppant', {browse}, ou en les collant depuis le presse-papier",
+ "components.WysiwygBottomControls.uploadFiles": "Ajouter des fichiers en les 'glissant-déposant', {browse}, ou en les collant depuis le presse-papier",
"components.WysiwygBottomControls.uploadFiles.browse": "en les selectionnant",
"components.popUpWarning.button.cancel": "Annuler",
"components.popUpWarning.button.confirm": "Confirmer",
- "components.popUpWarning.message": "Etes-vous sure de vouloir le supprimer?",
+ "components.popUpWarning.message": "Etes-vous sure de vouloir le supprimer ?",
"components.popUpWarning.title": "Merci de confirmer",
"notification.error": "Une erreur est survenue",
"notification.error.layout": "Impossible de récupérer le layout de l'admin",
"request.error.model.unknown": "Le model n'existe pas",
"app.utils.delete": "Supprimer"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-admin/admin/src/translations/it.json b/packages/strapi-admin/admin/src/translations/it.json
index fde596172f..6e97e59eca 100644
--- a/packages/strapi-admin/admin/src/translations/it.json
+++ b/packages/strapi-admin/admin/src/translations/it.json
@@ -25,6 +25,7 @@
"app.components.ComingSoonPage.featuresNotAvailable": "Questa funzionalità è ancora sotto sviluppo attivo.",
"app.components.DownloadInfo.download": "Download in corso...",
"app.components.DownloadInfo.text": "Potrebbe volerci un minuto. Grazie della pazienza.",
+ "app.components.EmptyAttributes.title": "Campi non ancora presenti.",
"app.components.HomePage.button.blog": "LEGGI DI PIÙ SUL BLOG",
"app.components.HomePage.button.quickStart": "INIZIA IL TUTORIAL QUICK START",
"app.components.HomePage.community": "Trova la community sul web",
@@ -137,4 +138,4 @@
"notification.error.layout": "Non è stato possibile recuperare il layout",
"request.error.model.unknow": "Questo modello non esiste",
"request.error.model.unknown": "Questo modello non esiste"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-admin/admin/src/translations/ja.json b/packages/strapi-admin/admin/src/translations/ja.json
new file mode 100644
index 0000000000..dc940acb2f
--- /dev/null
+++ b/packages/strapi-admin/admin/src/translations/ja.json
@@ -0,0 +1,141 @@
+{
+ "Analytics": "分析",
+ "Content Manager": "コンテンツ管理",
+ "Content Type Builder": "コンテンツタイプ作成",
+ "Email": "Email",
+ "Files Upload": "ファイルアップロード",
+ "HomePage.notification.newsLetter.success": "ニュースレターの購読しました。",
+ "New entry": "新規投稿",
+ "Password": "パスワード",
+ "Provider": "Provider",
+ "ResetPasswordToken": "パスワードトークンをリセット",
+ "Role": "Role",
+ "Roles & Permissions": "ロールと権限",
+ "Settings Manager": "設定管理",
+ "Username": "ユーザー名",
+ "Users": "ユーザー",
+ "Users & Permissions": "ユーザーと権限",
+ "app.components.BlockLink.code": "コード例",
+ "app.components.BlockLink.code.content": "コミュニティを開発した実際のプロジェクトをテストすることで学びます",
+ "app.components.BlockLink.documentation": "ドキュメントを読む",
+ "app.components.BlockLink.documentation.content": "コンセプト、リファレンスガイド、チュートリアルを探す",
+ "app.components.Button.cancel": "キャンセル",
+ "app.components.Button.save": "保存",
+ "app.components.ComingSoonPage.comingSoon": "Coming soon",
+ "app.components.ComingSoonPage.featuresNotAvailable": "この機能は現在開発中です",
+ "app.components.DownloadInfo.download": "ダウンロード中...",
+ "app.components.DownloadInfo.text": "これには数分かかることがあります。 お待ちください",
+ "app.components.EmptyAttributes.title": "There are no fields yet",
+ "app.components.HomePage.button.blog": "ブログでもっと見る",
+ "app.components.HomePage.button.quickStart": "クイックスタートチュートリアルで始める",
+ "app.components.HomePage.community": "コミュニティで見つける",
+ "app.components.HomePage.community.content": "異なるチャンネルでチームメンバー、コントリビューターやデベロッパーと議論する",
+ "app.components.HomePage.create": "コンテンツタイプを作成する",
+ "app.components.HomePage.createBlock.content.first": " ",
+ "app.components.HomePage.createBlock.content.second": "プラグインを使用すると、モデルのデータ構造を定義するのに役立ちます。ここで新しい方には、",
+ "app.components.HomePage.createBlock.content.tutorial": "チュートリアル",
+ "app.components.HomePage.cta": "確認",
+ "app.components.HomePage.newsLetter": "ニュースレターを購読してStrapiと連絡をとる",
+ "app.components.HomePage.support": "SUPPORT US",
+ "app.components.HomePage.support.content": "Tシャツを購入することで、最高の体験を提供するためにプロジェクトの作業を続けることができます。",
+ "app.components.HomePage.support.link": "今すぐT-シャツをゲット!",
+ "app.components.HomePage.welcome": "ボードにようこそ!",
+ "app.components.HomePage.welcome.again": "ようこそ ",
+ "app.components.HomePage.welcomeBlock.content": "私たちはコミュニティメンバーのひとりとしてあなたをお待ちしております。私たちは常にフィードバックを求めていますので、DMを送ってください",
+ "app.components.HomePage.welcomeBlock.content.again": "あなたのプロジェクトを進歩させていただければ幸いです... Strapiに関する最新の新情報をお読みください。私たちはあなたのフィードバックに基づいて製品を改善するために最善を尽くしています。",
+ "app.components.HomePage.welcomeBlock.content.issues": "問題",
+ "app.components.HomePage.welcomeBlock.content.raise": "または上げる",
+ "app.components.ImgPreview.hint": "ファイルをドラッグ&ドロップ、もしくは、アップロード{browse}",
+ "app.components.ImgPreview.hint.browse": "ブラウズ",
+ "app.components.InputFile.newFile": "ファイルを追加",
+ "app.components.InputFileDetails.open": "別のタブを開く",
+ "app.components.InputFileDetails.originalName": "オリジナル名:",
+ "app.components.InputFileDetails.remove": "ファイルを取り除く",
+ "app.components.InputFileDetails.size": "サイズ:",
+ "app.components.InstallPluginPage.InputSearch.label": " ",
+ "app.components.InstallPluginPage.InputSearch.placeholder": "プラグインを探す... (ex: authentication)",
+ "app.components.InstallPluginPage.description": "簡単にアプリを拡張する",
+ "app.components.InstallPluginPage.helmet": "マーケットプレイス - プラグイン",
+ "app.components.InstallPluginPage.plugin.support-us.description": "Strapi Tシャツを購入して私たちをサポートしてください。それは私たちがプロジェクトに取り組むことを可能にし、あなたに最高の経験を与えることを試みます!",
+ "app.components.InstallPluginPage.title": "マーケットプレイス - プラグイン",
+ "app.components.InstallPluginPopup.downloads": "ダウンロード",
+ "app.components.InstallPluginPopup.navLink.avis": "ビュー",
+ "app.components.InstallPluginPopup.navLink.changelog": "changelog",
+ "app.components.InstallPluginPopup.navLink.description": "説明文",
+ "app.components.InstallPluginPopup.navLink.faq": "faq",
+ "app.components.InstallPluginPopup.navLink.screenshots": "スクリーンショット",
+ "app.components.InstallPluginPopup.noDescription": "No description available",
+ "app.components.LeftMenuFooter.poweredBy": "Powered by ",
+ "app.components.LeftMenuLinkContainer.configuration": "構成",
+ "app.components.LeftMenuLinkContainer.general": "一般",
+ "app.components.LeftMenuLinkContainer.installNewPlugin": "マーケットプレイス",
+ "app.components.LeftMenuLinkContainer.listPlugins": "プラグイン",
+ "app.components.LeftMenuLinkContainer.noPluginsInstalled": "プラグインがインストールされていません",
+ "app.components.LeftMenuLinkContainer.plugins": "プラグイン",
+ "app.components.ListPluginsPage.description": "このプロジェクトでインストールされたプラグイン一覧",
+ "app.components.ListPluginsPage.helmet.title": "プラグイン一覧",
+ "app.components.ListPluginsPage.title": "プラグイン",
+ "app.components.NotFoundPage.back": "ホームページに戻る",
+ "app.components.NotFoundPage.description": "見つかりません",
+ "app.components.Official": "オフィシャル",
+ "app.components.PluginCard.Button.label.download": "ダウンロード",
+ "app.components.PluginCard.Button.label.install": "インストール済み",
+ "app.components.PluginCard.Button.label.support": "Support us",
+ "app.components.PluginCard.compatible": "アプリとの互換性",
+ "app.components.PluginCard.compatibleCommunity": "コミュニティとの互換性",
+ "app.components.PluginCard.more-details": "詳細を見る",
+ "app.components.PluginCard.price.free": "無料",
+ "app.components.listPlugins.button": "プラグインを追加",
+ "app.components.listPlugins.title.none": "インストール済みのプラグインはありません",
+ "app.components.listPlugins.title.plural": "{number} 個のプラグインがインストールされました",
+ "app.components.listPlugins.title.singular": "{number} 個のプラグインがインストールされました",
+ "app.components.listPluginsPage.deletePlugin.error": "アンインストール中にエラーが発生しました",
+ "app.utils.defaultMessage": " ",
+ "app.utils.delete": "削除",
+ "app.utils.placeholder.defaultMessage": " ",
+ "app.utils.SelectOption.defaultMessage": " ",
+ "components.AutoReloadBlocker.description": "以下のファイルを開いて、有効化してください",
+ "components.AutoReloadBlocker.header": "プラグインを有効化するにはリロードが必要です",
+ "components.ErrorBoundary.title": "なにかが間違っています...",
+ "components.Input.error.attribute.key.taken": "この値はすでに存在しています",
+ "components.Input.error.attribute.sameKeyAndName": "等しくありません",
+ "components.Input.error.attribute.taken": "このフィールド名はすでに存在します",
+ "components.Input.error.contentTypeName.taken": "この名前はすでに存在します",
+ "components.Input.error.custom-error": "{errorMessage} ",
+ "components.Input.error.validation.email": "E-mailアドレスではありません",
+ "components.Input.error.validation.json": "JSONフォーマットではありません",
+ "components.Input.error.validation.max": "値が高すぎます",
+ "components.Input.error.validation.maxLength": "この値は長すぎます",
+ "components.Input.error.validation.min": "値が低すぎます",
+ "components.Input.error.validation.minLength": "値は短すぎます",
+ "components.Input.error.validation.minSupMax": "Can't be superior",
+ "components.Input.error.validation.regex": "The value not match the regex.",
+ "components.Input.error.validation.required": "値は必須項目です",
+ "components.ListRow.empty": "表示するデータがありません",
+ "components.OverlayBlocker.description": "サーバーのりスタートが必要な機能を使用しています。サーバーが起動するまでお待ち下さい",
+ "components.OverlayBlocker.title": "リスタートを待っています...",
+ "components.PageFooter.select": "ページ毎に表示する投稿数",
+ "components.ProductionBlocker.description": "このプラグインは、安全のため、他の環境では無効する必要があります",
+ "components.ProductionBlocker.header": "このプラグインはデベロップ環境でのみ利用できます",
+ "components.Wysiwyg.ToggleMode.markdown": "マークダウンに切り替える",
+ "components.Wysiwyg.ToggleMode.preview": "プレビューに切り替える",
+ "components.Wysiwyg.collapse": "Collapse",
+ "components.Wysiwyg.selectOptions.H1": "Title H1",
+ "components.Wysiwyg.selectOptions.H2": "Title H2",
+ "components.Wysiwyg.selectOptions.H3": "Title H3",
+ "components.Wysiwyg.selectOptions.H4": "Title H4",
+ "components.Wysiwyg.selectOptions.H5": "Title H5",
+ "components.Wysiwyg.selectOptions.H6": "Title H6",
+ "components.Wysiwyg.selectOptions.title": "Add a title",
+ "components.WysiwygBottomControls.charactersIndicators": "キャラクター",
+ "components.WysiwygBottomControls.fullscreen": "広げる",
+ "components.WysiwygBottomControls.uploadFiles": "ファイルをドラッグ&ドロップ, クリップボードからペースト もしくは {browse}.",
+ "components.WysiwygBottomControls.uploadFiles.browse": "選ぶ",
+ "components.popUpWarning.button.cancel": "キャンセル",
+ "components.popUpWarning.button.confirm": "確認",
+ "components.popUpWarning.message": "本当に削除しますか?",
+ "components.popUpWarning.title": "確認してください",
+ "notification.error": "エラーが発生しました",
+ "notification.error.layout": "レイアウトを復旧できませんでした",
+ "request.error.model.unknown": "modelが存在しません"
+}
diff --git a/packages/strapi-admin/admin/src/translations/pt-BR.json b/packages/strapi-admin/admin/src/translations/pt-BR.json
index f2908c6b9b..0c1282247e 100644
--- a/packages/strapi-admin/admin/src/translations/pt-BR.json
+++ b/packages/strapi-admin/admin/src/translations/pt-BR.json
@@ -25,6 +25,7 @@
"app.components.ComingSoonPage.featuresNotAvailable": "Este recurso está em desenvolvimento",
"app.components.DownloadInfo.download": "Transferência em progresso...",
"app.components.DownloadInfo.text": "Isto poderá levar alguns minutos. Obrigado pela sua paciência",
+ "app.components.EmptyAttributes.title": "Ainda não existem campos",
"app.components.HomePage.button.blog": "VEJA MAIS NO BLOG",
"app.components.HomePage.button.quickStart": "INICIAR TUTORIAL (Quick Start)",
"app.components.HomePage.community": "Nossa comunidade na web",
@@ -91,6 +92,7 @@
"app.components.listPluginsPage.deletePlugin.error": "Ocorreu um erro ao desinstalar extensão",
"app.utils.SelectOption.defaultMessage": " ",
"app.utils.defaultMessage": " ",
+ "app.utils.delete": "Excluir",
"app.utils.placeholder.defaultMessage": " ",
"components.AutoReloadBlocker.description": "Abra o seguinte arquivo e ative o recurso.",
"components.AutoReloadBlocker.header": "Auto recarregamento é necessário para esta extensão.",
@@ -136,4 +138,4 @@
"notification.error": "Ocorreu um erro",
"notification.error.layout": "Não foi possível recuperar o layout",
"request.error.model.unknown": "Este modelo não existe"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-admin/admin/src/translations/tr.json b/packages/strapi-admin/admin/src/translations/tr.json
index becc5fb2c6..a617294458 100644
--- a/packages/strapi-admin/admin/src/translations/tr.json
+++ b/packages/strapi-admin/admin/src/translations/tr.json
@@ -136,5 +136,6 @@
"components.popUpWarning.title": "Lütfen onaylayın",
"notification.error": "Bir hata oluştu",
"notification.error.layout": "Düzen alınamadı",
- "request.error.model.unknown": "Bu model bulunmamaktadır."
+ "request.error.model.unknown": "Bu model bulunmamaktadır.",
+ "app.utils.delete": "Sil"
}
\ No newline at end of file
diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json
index a844d9987d..df45a68a17 100644
--- a/packages/strapi-admin/package.json
+++ b/packages/strapi-admin/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-admin",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Strapi Admin",
"repository": {
"type": "git",
@@ -31,8 +31,8 @@
},
"devDependencies": {
"sanitize.css": "^4.1.0",
- "strapi-helper-plugin": "3.0.0-alpha.14.3",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-helper-plugin": "3.0.0-alpha.14.5",
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"author": {
"name": "Strapi",
diff --git a/packages/strapi-generate-admin/lib/after.js b/packages/strapi-generate-admin/lib/after.js
index ecb48527c6..6253ff67d3 100644
--- a/packages/strapi-generate-admin/lib/after.js
+++ b/packages/strapi-generate-admin/lib/after.js
@@ -18,7 +18,7 @@ const { packageManager } = require('strapi-utils'); // eslint-disable-line impor
module.exports = (scope, cb) => {
// Copy the admin files.
- fs.copySync(path.resolve(__dirname, '..', 'files'), path.resolve(scope.rootPath, 'admin'));
+ fs.copySync(path.resolve(__dirname, '..', 'templates', 'gitignore'), path.join(scope.rootPath, 'admin', '.gitignore'));
if (scope.developerMode) {
return cb();
diff --git a/packages/strapi-generate-admin/lib/before.js b/packages/strapi-generate-admin/lib/before.js
index 2cfcd11d72..77f28df621 100644
--- a/packages/strapi-generate-admin/lib/before.js
+++ b/packages/strapi-generate-admin/lib/before.js
@@ -1,13 +1,7 @@
'use strict';
-/**
- * Module dependencies
- */
-
-// Node.js core.
const path = require('path');
-// Public node modules.
const _ = require('lodash');
const fs = require('fs-extra');
@@ -18,7 +12,6 @@ const fs = require('fs-extra');
* @param {Object} scope
* @param {Function} cb
*/
-
module.exports = function (scope, cb) {
if (scope.developerMode) {
fs.mkdirsSync(path.resolve(scope.rootPath));
diff --git a/packages/strapi-generate-admin/package.json b/packages/strapi-generate-admin/package.json
index f15d693a04..753028126d 100644
--- a/packages/strapi-generate-admin/package.json
+++ b/packages/strapi-generate-admin/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-admin",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate the default admin panel for a Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
@@ -15,8 +15,8 @@
"dependencies": {
"fs-extra": "^4.0.1",
"lodash": "^4.17.5",
- "strapi-admin": "3.0.0-alpha.14.3",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-admin": "3.0.0-alpha.14.5",
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"author": {
"email": "hi@strapi.io",
diff --git a/packages/strapi-generate-admin/files/.gitignore b/packages/strapi-generate-admin/templates/gitignore
similarity index 100%
rename from packages/strapi-generate-admin/files/.gitignore
rename to packages/strapi-generate-admin/templates/gitignore
diff --git a/packages/strapi-generate-api/package.json b/packages/strapi-generate-api/package.json
index 044f8cef8c..578b7f715f 100644
--- a/packages/strapi-generate-api/package.json
+++ b/packages/strapi-generate-api/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-api",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate an API for a Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-generate-api/templates/bookshelf/service.template b/packages/strapi-generate-api/templates/bookshelf/service.template
index 3bcefb435e..90657eb78c 100644
--- a/packages/strapi-generate-api/templates/bookshelf/service.template
+++ b/packages/strapi-generate-api/templates/bookshelf/service.template
@@ -30,7 +30,7 @@ module.exports = {
return <%= globalID %>.query(function(qb) {
_.forEach(filters.where, (where, key) => {
- if (_.isArray(where.value)) {
+ if (_.isArray(where.value) && where.symbol !== 'IN') {
for (const value in where.value) {
qb[value ? 'where' : 'orWhere'](key, where.symbol, where.value[value])
}
diff --git a/packages/strapi-generate-controller/package.json b/packages/strapi-generate-controller/package.json
index 3204c6c9f7..327ea828ba 100644
--- a/packages/strapi-generate-controller/package.json
+++ b/packages/strapi-generate-controller/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-controller",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate a controller for a Strapi API.",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-generate-model/package.json b/packages/strapi-generate-model/package.json
index 57623aa732..f3e58fcd31 100644
--- a/packages/strapi-generate-model/package.json
+++ b/packages/strapi-generate-model/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-model",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate a model for a Strapi API.",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-generate-new/files/config/.init.json b/packages/strapi-generate-new/files/config/.init.json
new file mode 100644
index 0000000000..9697e15cde
--- /dev/null
+++ b/packages/strapi-generate-new/files/config/.init.json
@@ -0,0 +1,3 @@
+{
+ "init": true
+}
diff --git a/packages/strapi-generate-new/files/config/environments/development/server.json b/packages/strapi-generate-new/files/config/environments/development/server.json
index 81302a2134..25068e628f 100644
--- a/packages/strapi-generate-new/files/config/environments/development/server.json
+++ b/packages/strapi-generate-new/files/config/environments/development/server.json
@@ -11,6 +11,6 @@
"enabled": false
},
"admin": {
- "autoOpen": true
+ "autoOpen": false
}
}
diff --git a/packages/strapi-generate-new/json/package.json.js b/packages/strapi-generate-new/json/package.json.js
index e9aee7d5e7..1b1f2fad2f 100644
--- a/packages/strapi-generate-new/json/package.json.js
+++ b/packages/strapi-generate-new/json/package.json.js
@@ -48,13 +48,13 @@ module.exports = scope => {
},
'devDependencies': {
'babel-eslint': '^7.1.1',
- 'eslint': '^3.12.2',
+ 'eslint': '^4.19.1',
'eslint-config-airbnb': '^13.0.0',
- 'eslint-plugin-import': '^2.2.0',
- 'eslint-plugin-react': '^6.8.0'
+ 'eslint-plugin-import': '^2.11.0',
+ 'eslint-plugin-react': '^7.7.0'
},
'dependencies': Object.assign({}, {
- 'lodash': '4.x.x',
+ 'lodash': '^4.17.5',
'strapi': getDependencyVersion(cliPkg, 'strapi'),
[scope.client.connector]: getDependencyVersion(cliPkg, 'strapi'),
}, additionalsDependencies, {
diff --git a/packages/strapi-generate-new/lib/after.js b/packages/strapi-generate-new/lib/after.js
index 17a8e38092..82ee83968f 100644
--- a/packages/strapi-generate-new/lib/after.js
+++ b/packages/strapi-generate-new/lib/after.js
@@ -94,8 +94,8 @@ module.exports = (scope, cb) => {
});
} else {
const alphaDependencies = othersDependencies.map(dep => {
- if (_.includes(dep, 'strapi') && !_.includes(dep, '@alpha')) { // We need this for yarn
- return `${dep}@alpha`;
+ if (_.includes(dep, 'strapi')) { // We need this for yarn
+ return `${dep}@${scope.strapiPackageJSON.version}`;
}
return dep;
diff --git a/packages/strapi-generate-new/lib/before.js b/packages/strapi-generate-new/lib/before.js
index 856de0d85d..bc69e93e2e 100644
--- a/packages/strapi-generate-new/lib/before.js
+++ b/packages/strapi-generate-new/lib/before.js
@@ -225,14 +225,14 @@ module.exports = (scope, cb) => {
shell.exec(`mkdir ${scope.tmpPath}`);
}
- let cmd = `${packageCmd} ${scope.client.connector}@alpha`;
+ let cmd = `${packageCmd} ${scope.client.connector}@${scope.strapiPackageJSON.version}`;
if (scope.client.module) {
cmd += ` ${scope.client.module}`;
}
if (scope.client.connector === 'strapi-hook-bookshelf') {
- cmd += ` strapi-hook-knex@alpha`;
+ cmd += ` strapi-hook-knex@${scope.strapiPackageJSON.version}`;
scope.additionalsDependencies = ['strapi-hook-knex', 'knex'];
}
diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json
index f06c6cd17c..1aa3398e36 100644
--- a/packages/strapi-generate-new/package.json
+++ b/packages/strapi-generate-new/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-new",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate a new Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
@@ -19,7 +19,7 @@
"listr": "^0.14.1",
"lodash": "^4.17.5",
"ora": "^2.1.0",
- "strapi-utils": "3.0.0-alpha.14.3",
+ "strapi-utils": "3.0.0-alpha.14.5",
"uuid": "^3.1.0"
},
"scripts": {
diff --git a/packages/strapi-generate-plugin/package.json b/packages/strapi-generate-plugin/package.json
index 844bc443e3..3579ff8e67 100644
--- a/packages/strapi-generate-plugin/package.json
+++ b/packages/strapi-generate-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-plugin",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate an plugin for a Strapi application.",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-generate-policy/package.json b/packages/strapi-generate-policy/package.json
index d97c8cd9cc..113a98fd22 100644
--- a/packages/strapi-generate-policy/package.json
+++ b/packages/strapi-generate-policy/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-policy",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate a policy for a Strapi API.",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-generate-service/package.json b/packages/strapi-generate-service/package.json
index 1a94e0bb05..22a089c12c 100644
--- a/packages/strapi-generate-service/package.json
+++ b/packages/strapi-generate-service/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate-service",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Generate a service for a Strapi API.",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-generate/package.json b/packages/strapi-generate/package.json
index 11ee66e34d..a2265da64e 100644
--- a/packages/strapi-generate/package.json
+++ b/packages/strapi-generate/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-generate",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Master of ceremonies for the Strapi generators.",
"homepage": "http://strapi.io",
"keywords": [
@@ -17,7 +17,7 @@
"fs-extra": "^4.0.0",
"lodash": "^4.17.5",
"reportback": "^2.0.1",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"author": {
"name": "Strapi team",
diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/loadAdminConfigurations.js b/packages/strapi-helper-plugin/lib/internals/scripts/loadAdminConfigurations.js
index 4e53f933da..e99c4a4d0f 100644
--- a/packages/strapi-helper-plugin/lib/internals/scripts/loadAdminConfigurations.js
+++ b/packages/strapi-helper-plugin/lib/internals/scripts/loadAdminConfigurations.js
@@ -3,9 +3,8 @@ const shell = require('shelljs');
const pwd = shell.pwd();
const isDevelopmentMode = path.resolve(pwd.stdout).indexOf('strapi-admin') !== -1;
+const isSetup = process.env.IS_MONOREPO || false;
const appPath = isDevelopmentMode ? path.resolve(process.env.PWD, '..') : path.resolve(pwd.stdout, '..');
-// const isSetup = path.resolve(process.env.PWD, '..', '..') === path.resolve(process.env.INIT_CWD);
-const isSetup = process.env.IS_MONOREPO;
// Load the app configurations only when :
// - starting the app in dev mode
diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js
index 3e446c207e..588528cbf5 100644
--- a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js
+++ b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js
@@ -14,15 +14,8 @@ const isAdmin = process.env.IS_ADMIN === 'true';
const ExtractTextPlugin = require('extract-text-webpack-plugin');
-const appPath = (() => {
- if (process.env.APP_PATH) {
- return process.env.APP_PATH;
- }
-
- return isAdmin ? path.resolve(process.env.PWD, '..') : path.resolve(process.env.PWD, '..', '..');
-})();
-// const isSetup = path.resolve(process.env.PWD, '..', '..') === path.resolve(process.env.INIT_CWD);
-const isSetup = process.env.IS_MONOREPO;
+const isSetup = process.env.IS_MONOREPO || false;
+const appPath = process.env.APP_PATH || path.resolve(process.env.PWD, '..', ( isAdmin ? '' : '..' ));
const adminPath = (() => {
if (isAdmin && isSetup) {
diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dev.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dev.babel.js
index 74fae158b6..89ffbf6af4 100644
--- a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dev.babel.js
+++ b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dev.babel.js
@@ -16,19 +16,11 @@ const LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
const isAdmin = process.env.IS_ADMIN === 'true';
const isSetup = path.resolve(process.env.PWD, '..', '..') === path.resolve(process.env.INIT_CWD);
-const appPath = (() => {
- if (process.env.APP_PATH) {
- return process.env.APP_PATH;
- }
-
- return isAdmin ? path.resolve(process.env.PWD, '..') : path.resolve(process.env.PWD, '..', '..');
-})();
+const appPath = process.env.APP_PATH || path.resolve(process.env.PWD, '..', ( isAdmin ? '' : '..' ));
const rootAdminpath = (() => {
if (isSetup) {
- return isAdmin
- ? path.resolve(appPath, 'strapi-admin')
- : path.resolve(appPath, 'packages', 'strapi-admin');
+ return isAdmin ? path.resolve(appPath, 'strapi-admin') : path.resolve(appPath, 'packages', 'strapi-admin');
}
return path.resolve(appPath, 'admin');
})();
diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dll.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dll.babel.js
index 9cf7b23f22..22a28cf889 100644
--- a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dll.babel.js
+++ b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dll.babel.js
@@ -9,8 +9,7 @@ const path = require('path');
const webpack = require('webpack');
const isAdmin = process.env.IS_ADMIN === 'true';
-// const isSetup = path.resolve(process.env.PWD, '..', '..') === path.resolve(process.env.INIT_CWD);
-const isSetup = process.env.IS_MONOREPO;
+const isSetup = process.env.IS_MONOREPO || false;
const appPath = process.env.APP_PATH || path.resolve(process.env.PWD, '..', ( isAdmin ? '' : '..' ));
const rootAdminpath = (() => {
diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js
index 975b48f54b..ea6f0e29de 100644
--- a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js
+++ b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js
@@ -15,14 +15,8 @@ const base = require('./webpack.base.babel');
const isAdmin = process.env.IS_ADMIN === 'true';
// const isSetup = path.resolve(process.env.PWD, '..', '..') === path.resolve(process.env.INIT_CWD);
-const isSetup = process.env.IS_MONOREPO;
-const appPath = (() => {
- if (process.env.APP_PATH) {
- return process.env.APP_PATH;
- }
-
- return isAdmin ? path.resolve(process.env.PWD, '..') : path.resolve(process.env.PWD, '..', '..');
-})();
+const isSetup = process.env.IS_MONOREPO || false;
+const appPath = process.env.APP_PATH || path.resolve(process.env.PWD, '..', ( isAdmin ? '' : '..' ));
const adminPath = (() => {
if (isSetup) {
return isAdmin ? path.resolve(appPath, 'strapi-admin') : path.resolve(process.env.PWD, '..');
@@ -33,9 +27,7 @@ const adminPath = (() => {
const rootAdminpath = (() => {
if (isSetup) {
- return isAdmin
- ? path.resolve(appPath, 'strapi-admin')
- : path.resolve(appPath, 'packages', 'strapi-admin');
+ return isAdmin ? path.resolve(appPath, 'strapi-admin') : path.resolve(appPath, 'packages', 'strapi-admin');
}
return path.resolve(appPath, 'admin');
})();
diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json
index 00671a816e..65cbb948e7 100644
--- a/packages/strapi-helper-plugin/package.json
+++ b/packages/strapi-helper-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-helper-plugin",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Helper for Strapi plugins development",
"engines": {
"node": ">= 9.0.0",
diff --git a/packages/strapi-hook-bookshelf/lib/index.js b/packages/strapi-hook-bookshelf/lib/index.js
index 89422c36da..efd8b33b75 100644
--- a/packages/strapi-hook-bookshelf/lib/index.js
+++ b/packages/strapi-hook-bookshelf/lib/index.js
@@ -479,7 +479,7 @@ module.exports = function(strapi) {
? column
: `"${column}"`;
- return ORM.knex.raw(`CREATE INDEX search_${_.toLower(indexName)} ON "${table}" USING gin(${attribute} gin_trgm_ops)`);
+ return ORM.knex.raw(`CREATE INDEX IF NOT EXISTS search_${_.toLower(indexName)} ON "${table}" USING gin(${attribute} gin_trgm_ops)`);
});
await Promise.all(indexes);
diff --git a/packages/strapi-hook-bookshelf/package.json b/packages/strapi-hook-bookshelf/package.json
index c85231b16a..fcc26d0293 100644
--- a/packages/strapi-hook-bookshelf/package.json
+++ b/packages/strapi-hook-bookshelf/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-hook-bookshelf",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Bookshelf hook for the Strapi framework",
"homepage": "http://strapi.io",
"keywords": [
@@ -21,8 +21,8 @@
"lodash": "^4.17.5",
"pluralize": "^6.0.0",
"rimraf": "^2.6.2",
- "strapi-hook-knex": "3.0.0-alpha.14.3",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-hook-knex": "3.0.0-alpha.14.5",
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"strapi": {
"dependencies": [
diff --git a/packages/strapi-hook-ejs/package.json b/packages/strapi-hook-ejs/package.json
index ecb16fffd3..9f1585353c 100644
--- a/packages/strapi-hook-ejs/package.json
+++ b/packages/strapi-hook-ejs/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-hook-ejs",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "EJS hook for the Strapi framework",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-hook-knex/package.json b/packages/strapi-hook-knex/package.json
index 4b54097350..7fce5ffa12 100644
--- a/packages/strapi-hook-knex/package.json
+++ b/packages/strapi-hook-knex/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-hook-knex",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Knex hook for the Strapi framework",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-hook-mongoose/lib/index.js b/packages/strapi-hook-mongoose/lib/index.js
index 3829faed44..b2cc899a6a 100644
--- a/packages/strapi-hook-mongoose/lib/index.js
+++ b/packages/strapi-hook-mongoose/lib/index.js
@@ -174,7 +174,10 @@ module.exports = function (strapi) {
_.forEach(postLifecycle, (fn, key) => {
if (_.isFunction(target[model.toLowerCase()][fn])) {
collection.schema.post(key, function (doc, next) {
- target[model.toLowerCase()][fn](this, doc).then(next).catch(err => strapi.log.error(err));
+ target[model.toLowerCase()][fn](this, doc).then(next).catch(err => {
+ strapi.log.error(err);
+ next(err);
+ });
});
}
});
diff --git a/packages/strapi-hook-mongoose/lib/relations.js b/packages/strapi-hook-mongoose/lib/relations.js
index 0dcf8d35b7..8fc4832a1d 100644
--- a/packages/strapi-hook-mongoose/lib/relations.js
+++ b/packages/strapi-hook-mongoose/lib/relations.js
@@ -124,22 +124,11 @@ module.exports = {
}
virtualFields.push(
- model.findOne({
- [model.primaryKey]: getValuePrimaryKey(value, model.primaryKey)
+ module.exports.addRelation.call(model, {
+ id: getValuePrimaryKey(value, this.primaryKey),
+ values: _.pick(value, [this.primaryKey, details.via]),
+ foreignKey: current
})
- .populate([details.via])
- .lean()
- .then(entry => {
- if (_.isArray(entry[details.via])) {
- value[details.via] = entry[details.via].map(entry => _.get(entry, '_id', entry)).concat(value[details.via]);
- }
-
- return module.exports.addRelation.call(model, {
- id: getValuePrimaryKey(value, this.primaryKey),
- values: _.pick(value, [this.primaryKey, details.via]),
- foreignKey: current
- });
- })
);
});
diff --git a/packages/strapi-hook-mongoose/package.json b/packages/strapi-hook-mongoose/package.json
index ad78bbb365..3e97436bd1 100644
--- a/packages/strapi-hook-mongoose/package.json
+++ b/packages/strapi-hook-mongoose/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-hook-mongoose",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Mongoose hook for the Strapi framework",
"homepage": "http://strapi.io",
"keywords": [
@@ -20,7 +20,7 @@
"mongoose-float": "^1.0.2",
"pluralize": "^6.0.0",
"rimraf": "^2.6.2",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"author": {
"email": "hi@strapi.io",
diff --git a/packages/strapi-hook-redis/package.json b/packages/strapi-hook-redis/package.json
index d8acb7db66..ab53cbf39b 100644
--- a/packages/strapi-hook-redis/package.json
+++ b/packages/strapi-hook-redis/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-hook-redis",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Redis hook for the Strapi framework",
"homepage": "http://strapi.io",
"keywords": [
@@ -19,7 +19,7 @@
"lodash": "^4.17.5",
"rimraf": "^2.6.2",
"stack-trace": "0.0.10",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"author": {
"email": "hi@strapi.io",
diff --git a/packages/strapi-lint/lib/internals/prettier/index.js b/packages/strapi-lint/lib/internals/prettier/index.js
index b3bc9185f0..4956faaf62 100644
--- a/packages/strapi-lint/lib/internals/prettier/index.js
+++ b/packages/strapi-lint/lib/internals/prettier/index.js
@@ -16,7 +16,7 @@ const files = glob
.filter(f => changedFiles.has(f))
.filter(
package =>
- !package.includes('README.md') &&
+ !package.includes('CLI.md') &&
!package.includes('strapi-middleware-views') &&
!package.includes('strapi-lint') &&
!package.includes('strapi-plugin-settings-manager'),
diff --git a/packages/strapi-lint/package.json b/packages/strapi-lint/package.json
index 9b81f8a93a..595cd71f48 100644
--- a/packages/strapi-lint/package.json
+++ b/packages/strapi-lint/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-lint",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Strapi eslint and prettier configurations",
"directories": {
"lib": "lib"
diff --git a/packages/strapi-middleware-views/package.json b/packages/strapi-middleware-views/package.json
index 0d69ab9f96..98c77b2523 100644
--- a/packages/strapi-middleware-views/package.json
+++ b/packages/strapi-middleware-views/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-middleware-views",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Views middleware to enable server-side rendering for the Strapi framework",
"homepage": "http://strapi.io",
"keywords": [
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/TableRow/index.js b/packages/strapi-plugin-content-manager/admin/src/components/TableRow/index.js
index a81a7896c4..f3cfae6241 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/TableRow/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/TableRow/index.js
@@ -7,7 +7,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import moment from 'moment';
-import { isEmpty, isNull, isObject, toString } from 'lodash';
+import { isEmpty, isNull, isObject, toLower, toString } from 'lodash';
import cn from 'classnames';
import CustomInputCheckbox from 'components/CustomInputCheckbox';
@@ -31,17 +31,17 @@ class TableRow extends React.Component {
* @returns {*}
*/
getDisplayedValue(type, value, name) {
- switch (type.toLowerCase()) {
+ switch (toLower(type)) {
case 'string':
case 'text':
case 'email':
case 'enumeration':
- return (value && !isEmpty(value.toString())) || name === 'id' ? value.toString() : '-';
+ return (value && !isEmpty(toString(value))) || name === 'id' ? toString(value) : '-';
case 'float':
case 'integer':
case 'biginteger':
case 'decimal':
- return !isNull(value) ? value.toString() : '-';
+ return !isNull(value) ? toString(value) : '-';
case 'boolean':
return value !== null ? toString(value) : '-';
case 'date':
diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js b/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js
index 0b15e3f1e2..d4521f1a9f 100644
--- a/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js
+++ b/packages/strapi-plugin-content-manager/admin/src/containers/App/sagas.js
@@ -1,8 +1,6 @@
import { LOCATION_CHANGE } from 'react-router-redux';
import { fork, put, call, takeLatest, take, cancel, select } from 'redux-saga/effects';
import request from 'utils/request';
-
-
import { getModelEntriesSucceeded, loadedModels, submitSucceeded } from './actions';
import { GET_MODEL_ENTRIES, LOAD_MODELS, ON_SUBMIT } from './constants';
import { makeSelectModifiedSchema } from './selectors';
diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js
index f559c4d543..1c906ba375 100644
--- a/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js
+++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js
@@ -1,6 +1,7 @@
import { LOCATION_CHANGE } from 'react-router-redux';
import { findIndex, get, isArray, isEmpty, includes, isNumber, isString, map } from 'lodash';
import {
+ all,
call,
cancel,
fork,
@@ -34,9 +35,9 @@ function* dataGet(action) {
try {
const modelName = yield select(makeSelectModelName());
const params = { source: action.source };
- const [response] = yield [
+ const [response] = yield all([
call(request, `/content-manager/explorer/${modelName}/${action.id}`, { method: 'GET', params }),
- ];
+ ]);
const pluginHeaderTitle = yield call(templateObject, { mainField: action.mainField }, response);
yield put(getDataSucceeded(action.id, response, pluginHeaderTitle.mainField));
@@ -74,6 +75,7 @@ export function* submit() {
const source = yield select(makeSelectSource());
const schema = yield select(makeSelectSchema());
let shouldAddTranslationSuffix = false;
+
// Remove the updated_at & created_at fields so it is updated correctly when using Postgres or MySQL db
if (record.updated_at) {
delete record.created_at;
diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/saga.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/saga.js
index cf2db9228e..ed49fe770d 100644
--- a/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/saga.js
+++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListPage/saga.js
@@ -1,6 +1,7 @@
// Dependencies.
import { LOCATION_CHANGE } from 'react-router-redux';
import {
+ all,
call,
cancel,
fork,
@@ -9,10 +10,8 @@ import {
take,
takeLatest,
} from 'redux-saga/effects';
-
// Utils.
import request from 'utils/request';
-
// Actions
import {
deleteDataSuccess,
@@ -63,10 +62,10 @@ export function* dataGet(action) {
params._q = _q;
}
- const response = yield [
+ const response = yield all([
call(request, countURL, { method: 'GET', params }),
call(request, recordsURL, { method: 'GET', params }),
- ];
+ ]);
yield put(getDataSucceeded(response));
} catch(err) {
diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/de.json b/packages/strapi-plugin-content-manager/admin/src/translations/de.json
index e4a7447643..eebdf7ecee 100644
--- a/packages/strapi-plugin-content-manager/admin/src/translations/de.json
+++ b/packages/strapi-plugin-content-manager/admin/src/translations/de.json
@@ -47,12 +47,12 @@
"containers.SettingPage.addRelationalField": "Füge ein neues relationales Feld hinzu",
"containers.SettingPage.attributes": "Attribut Felder",
"containers.SettingPage.attributes.description": "Reihenfolge der Attribute festlegen",
- "containers.SettingPage.editSettings.description": "Drag & drop the fields to build the layout",
- "containers.SettingPage.editSettings.title": "Edit — Settings",
+ "containers.SettingPage.editSettings.description": "Ziehen die Felder via Drag & Drop, um das Layout zu erstellen",
+ "containers.SettingPage.editSettings.title": "Bearbeiten — Einstellungen",
"containers.SettingPage.listSettings.description": "Konfiguriere die Optionen für diesen Inhaltstyp.",
"containers.SettingPage.listSettings.title": "Liste - Einstellungen",
"containers.SettingPage.pluginHeaderDescription": "Konfiguriere die spezifischen Einstellungen für diesen Inhaltstyp.",
- "containers.SettingPage.relations": "Relational fields",
+ "containers.SettingPage.relations": "Relational Felder",
"containers.SettingsPage.Block.contentType.description": "Konfiguriere die spezifischen Einstellungen.",
"containers.SettingsPage.Block.contentType.title": "Inhaltstypen",
"containers.SettingsPage.Block.generalSettings.description": "Konfiguriere die Standardoptionen für deine Inhaltstypen.",
@@ -83,9 +83,9 @@
"error.validation.required": "Dieser Wert ist erforderlich.",
"form.Input.bulkActions": "Bulk-Bearbeitung aktivieren",
"form.Input.defaultSort": "Standard-Sortierattribut",
- "form.Input.description": "Description",
- "form.Input.description.placeholder": "Display name in the profile",
- "form.Input.disabled": "Editable field",
+ "form.Input.description": "Beschreibung",
+ "form.Input.description.placeholder": "Zeige den Namen im Profil",
+ "form.Input.disabled": "Editierbares Feld",
"form.Input.filters": "Filter aktivieren",
"form.Input.label": "Label",
"form.Input.label.inputDescription": "Dieser Wert überschreibt das im Kopf der Tabelle angezeigte Label.",
diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/fr.json b/packages/strapi-plugin-content-manager/admin/src/translations/fr.json
index f537f0481f..8218fe12e6 100644
--- a/packages/strapi-plugin-content-manager/admin/src/translations/fr.json
+++ b/packages/strapi-plugin-content-manager/admin/src/translations/fr.json
@@ -2,7 +2,7 @@
"EditRelations.title": "Données associées",
"components.AddFilterCTA.add": "Filtres",
"components.AddFilterCTA.hide": "Filtres",
- "components.DraggableAttr.edit": "Clicquez pour modifier",
+ "components.DraggableAttr.edit": "Cliquez pour modifier",
"components.EmptyAttributesBlock.button": "Voir la page des configurations",
"components.EmptyAttributesBlock.description": "Vous pouvez modifiez vos paramètres",
"components.FilterOptions.FILTER_TYPES.=": "est",
@@ -46,16 +46,16 @@
"containers.SettingPage.addField": "Ajouter un nouveau champs",
"containers.SettingPage.addRelationalField": "Ajouter un nouveau champs relationnel",
"containers.SettingPage.attributes": "Attributs",
- "containers.SettingPage.attributes.description": "Organiser les attributs du modèle",
+ "containers.SettingPage.attributes.description": "Organisez les attributs du modèle",
"containers.SettingPage.editSettings.description": "Glissez & déposez les champs pour construire le layout",
"containers.SettingPage.editSettings.title": "Edit — Paramètres",
"containers.SettingPage.listSettings.description": "Configurez les options de ce modèle",
"containers.SettingPage.listSettings.title": "Liste — Paramètres",
"containers.SettingPage.pluginHeaderDescription": "Configurez les paramètres de ce modèle",
"containers.SettingPage.relations": "Champs relationnels",
- "containers.SettingsPage.Block.contentType.description": "Configurer les paramètres spécifiques",
+ "containers.SettingsPage.Block.contentType.description": "Configurez les paramètres spécifiques",
"containers.SettingsPage.Block.contentType.title": "Types de contenu",
- "containers.SettingsPage.Block.generalSettings.description": "Configurez les options par défault de vos modèles",
+ "containers.SettingsPage.Block.generalSettings.description": "Configurez les options par défault de vos modèles",
"containers.SettingsPage.Block.generalSettings.title": "Général",
"containers.SettingsPage.pluginHeaderDescription": "Configurez les paramètres par défaut de vos modèles",
"emptyAttributes.button": "Ouvrir le Content Type Builder",
@@ -84,17 +84,17 @@
"form.Input.bulkActions": "Autoriser les actions groupées",
"form.Input.defaultSort": "Attribut de tri par défault",
"form.Input.description": "Description",
- "form.Input.description.placeholder": "Afficher le nom dans le profile",
+ "form.Input.description.placeholder": "Afficher le nom dans le profil",
"form.Input.disabled": "Champ editable",
"form.Input.filters": "Autoriser les filtres",
"form.Input.label": "Label",
"form.Input.label.inputDescription": "Cette valeur modifie celle du champs de la table",
"form.Input.pageEntries": "Nombre d'entrées par page",
- "form.Input.pageEntries.inputDescription": "Note: Vous pouvez modifier ces valeurs par modèle",
+ "form.Input.pageEntries.inputDescription": "Note : Vous pouvez modifier ces valeurs par modèle",
"form.Input.placeholder": "Placeholder",
"form.Input.placeholder.placeholder": "Mon super placeholder",
- "form.Input.search": "Autoriser la search",
- "form.Input.search.field": "Autoriser la search sur ce champs",
+ "form.Input.search": "Autoriser la recherche",
+ "form.Input.search.field": "Autoriser la recherche sur ce champs",
"form.Input.sort.field": "Autoriser le tri sur ce champs",
"notification.error.displayedFields": "Vous devez avoir au moins un champ d'affiché",
"notification.error.relationship.fetch": "Une erreur est survenue en récupérant les relations.",
@@ -107,8 +107,9 @@
"popUpWarning.button.cancel": "Annuler",
"popUpWarning.button.confirm": "Confirmer",
"popUpWarning.title": "Confirmation requise",
- "popUpWarning.warning.cancelAllSettings": "Êtes-vous sûr de vouloir vos modifications?",
+ "popUpWarning.warning.cancelAllSettings": "Êtes-vous sûr de vouloir abandonner vos modifications ?",
"popUpWarning.warning.updateAllSettings": "Cela modifiera tous vos précédents paramètres.",
"success.record.delete": "Supprimé",
"success.record.save": "Sauvegardé"
-}
\ No newline at end of file
+}
+
diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/it.json b/packages/strapi-plugin-content-manager/admin/src/translations/it.json
index 615c08a2a7..d99e4bb541 100644
--- a/packages/strapi-plugin-content-manager/admin/src/translations/it.json
+++ b/packages/strapi-plugin-content-manager/admin/src/translations/it.json
@@ -3,6 +3,8 @@
"components.AddFilterCTA.add": "Filtri",
"components.AddFilterCTA.hide": "Filtri",
"components.DraggableAttr.edit": "Clicca per modificare",
+ "components.EmptyAttributesBlock.button": "Vai alla pagina delle impostazioni",
+ "components.EmptyAttributesBlock.description" : "Puoi cambiare le tue impostazioni",
"components.FilterOptions.FILTER_TYPES.=": "si",
"components.FilterOptions.FILTER_TYPES._contains": "contiene",
"components.FilterOptions.FILTER_TYPES._containss": "contiene (maiuscole e minuscole)",
@@ -25,11 +27,14 @@
"components.TableEmpty.withFilters": "Non vi è alcun {contentType} con l'applicazione di filtri...",
"components.TableEmpty.withSearch": "Non vi è alcun {contentType} corrispondente alla ricerca ({search})...",
"components.TableEmpty.withoutFilter": "Non vi è alcun {contentType}...",
+ "containers.Edit.addAnItem": "Aggiungi un elemento...",
+ "containers.Edit.clickToJump": "Clicca per andare alla riga",
"containers.Edit.delete": "Elimina",
"containers.Edit.editing": "Modificando...",
"containers.Edit.reset": "Resetta",
"containers.Edit.returnList": "Tornare alla lista",
"containers.Edit.submit": "Salva",
+ "containers.Edit.seeDetails": "Dettagli",
"containers.Home.introduction": "Per modificare le voci, visitare il link nel menu di sinistra. Questo plugin non ha un suo modo corretto di modificare le impostazioni ed è ancora in fase di sviluppo attivo.",
"containers.Home.pluginHeaderDescription": "Gestire le voci attraverso un potente e bella interfaccia.",
"containers.Home.pluginHeaderTitle": "Content Manager",
@@ -37,9 +42,14 @@
"containers.List.errorFetchRecords": "Errore",
"containers.List.pluginHeaderDescription": "{label} voci non trovato",
"containers.List.pluginHeaderDescription.singular": "{label} voce trovati",
+ "containers.ListPage.displayedFields": "Campi visualizzati",
"containers.SettingPage.addField": "Aggiungi un nuovo campo",
+ "containers.SettingPage.addRelationalField": "Aggiungi nuovo campo relazionale",
"containers.SettingPage.attributes": "Attributi",
"containers.SettingPage.attributes.description": "Definisci l'ordine degli attributi",
+ "containers.SettingPage.editSettings.description": "Sposta il campo per costruire il layout",
+ "containers.SettingPage.editSettings.title": "Modifica - Impostazioni",
+ "containers.SettingPage.relations": "Campi relazionali",
"containers.SettingPage.listSettings.description": "Configura le opzioni per questo Tipo di Contenuto",
"containers.SettingPage.listSettings.title": "Lista — Impostazioni",
"containers.SettingPage.pluginHeaderDescription": "Configura le impostazioni specifiche per questo Tipo di Contenuto",
@@ -81,9 +91,12 @@
"form.Input.label.inputDescription": "Questo valore sovrascrive l'etichetta mostrata nell'intestazione della tabella",
"form.Input.pageEntries": "Righe per pagina",
"form.Input.pageEntries.inputDescription": "Attenzione: Puoi sovrascrivere questo valore nella pagina delle impostazioni del Tipo di Contenuto",
+ "form.Input.placeholder": "Segnaposto",
+ "form.Input.placeholder.placeholder": "Il mio fantastico valore",
"form.Input.search": "Abilita ricerca",
"form.Input.search.field": "Abilita la ricerca su questo campo",
"form.Input.sort.field": "Abilita ordinamento su questo campo",
+ "notification.error.displayedFields": "E' necessario almeno un campo visualizzato",
"notification.error.relationship.fetch": "Si è verificato un errore durante il rapporto di recupero.",
"notification.info.SettingPage.disableSort": "E' necessario un attributo con l'ordinamento abilitato",
"pageNotFound": "Pagina non trovata",
@@ -98,4 +111,4 @@
"popUpWarning.warning.updateAllSettings": "Questa operazione modificherà tutte le tue impostazioni",
"success.record.delete": "Eliminato",
"success.record.save": "Salvato"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/ja.json b/packages/strapi-plugin-content-manager/admin/src/translations/ja.json
new file mode 100644
index 0000000000..db504a5779
--- /dev/null
+++ b/packages/strapi-plugin-content-manager/admin/src/translations/ja.json
@@ -0,0 +1,114 @@
+{
+ "EditRelations.title": "リレーショナルデータ",
+ "components.AddFilterCTA.add": "フィルタ",
+ "components.AddFilterCTA.hide": "フィルタ",
+ "components.DraggableAttr.edit": "クリックして編集",
+ "components.EmptyAttributesBlock.button": "設定ページに移動",
+ "components.EmptyAttributesBlock.description": "設定を変更することができます",
+ "components.FilterOptions.FILTER_TYPES.=": "は",
+ "components.FilterOptions.FILTER_TYPES._contains": "含まれる",
+ "components.FilterOptions.FILTER_TYPES._containss": "含まれる(大文字と小文字を区別)",
+ "components.FilterOptions.FILTER_TYPES._gt": "より大きい",
+ "components.FilterOptions.FILTER_TYPES._gte": "より大きい、もしくは、等しい",
+ "components.FilterOptions.FILTER_TYPES._lt": "より低い",
+ "components.FilterOptions.FILTER_TYPES._lte": "より低い、もしくは、等しい",
+ "components.FilterOptions.FILTER_TYPES._ne": "ではない",
+ "components.FilterOptions.button.apply": "適用",
+ "components.FiltersPickWrapper.PluginHeader.actions.apply": "適用",
+ "components.FiltersPickWrapper.PluginHeader.actions.clearAll": "すべてクリア",
+ "components.FiltersPickWrapper.PluginHeader.description": "エントリをフィルタリングするための条件を設定する",
+ "components.FiltersPickWrapper.PluginHeader.title.filter": "フィルタ",
+ "components.FiltersPickWrapper.hide": "隠す",
+ "components.LimitSelect.itemsPerPage": "ページあたりのアイテム数",
+ "components.Search.placeholder": "エントリを検索する...",
+ "components.TableDelete.delete": "すべて削除",
+ "components.TableDelete.entries.plural": "{number} 個のエントリが選択されました",
+ "components.TableDelete.entries.singular": "{number} 個のエントリが選択されました",
+ "components.TableEmpty.withFilters": "適用されたフィルタには{contentType}はありません...",
+ "components.TableEmpty.withSearch": "検索に対応する{contentType}はありません({search})...",
+ "components.TableEmpty.withoutFilter": "{contentType}はありません...",
+ "containers.Edit.addAnItem": "アイテムを追加する...",
+ "containers.Edit.clickToJump": "クリックするとエントリにジャンプします",
+ "containers.Edit.delete": "削除",
+ "containers.Edit.editing": "編集...",
+ "containers.Edit.reset": "リセット",
+ "containers.Edit.returnList": "リストに戻る",
+ "containers.Edit.seeDetails": "詳細",
+ "containers.Edit.submit": "保存",
+ "containers.Home.introduction": "あなたのエントリーを編集するには、左側のメニューの特定のリンクに行きます。このプラグインは設定を編集する適切な方法がなく、まだアクティブな開発中です",
+ "containers.Home.pluginHeaderDescription": "パワフルで美しいインターフェイスでエントリを管理します。",
+ "containers.Home.pluginHeaderTitle": "コンテンツ マネージャ",
+ "containers.List.addAnEntry": "{entity}を追加",
+ "containers.List.errorFetchRecords": "エラー",
+ "containers.List.pluginHeaderDescription": "{label} 個のエントリーが見つかりました",
+ "containers.List.pluginHeaderDescription.singular": "{label} 個のエントリーが見つかりました",
+ "containers.ListPage.displayedFields": "フィールドが表示されました",
+ "containers.SettingPage.addField": "フィールドを追加",
+ "containers.SettingPage.addRelationalField": "新しいリレーショナルフィールドを追加する",
+ "containers.SettingPage.attributes": "属性フィールド",
+ "containers.SettingPage.attributes.description": "属性の順序を定義する",
+ "containers.SettingPage.editSettings.description": "フィールドをドラッグアンドドロップしてレイアウトを作成する",
+ "containers.SettingPage.editSettings.title": "編集 — 設定",
+ "containers.SettingPage.listSettings.description": "このコンテンツタイプのオプションを構成する",
+ "containers.SettingPage.listSettings.title": "一覧 — 設定",
+ "containers.SettingPage.pluginHeaderDescription": "このコンテンツタイプの特定の設定を構成する",
+ "containers.SettingPage.relations": "リレーショナルフィールド",
+ "containers.SettingsPage.Block.contentType.description": "特定の設定を構成する",
+ "containers.SettingsPage.Block.contentType.title": "コンテンツタイプ",
+ "containers.SettingsPage.Block.generalSettings.description": "コンテンツタイプのデフォルトオプションを設定する",
+ "containers.SettingsPage.Block.generalSettings.title": "一般",
+ "containers.SettingsPage.pluginHeaderDescription": "すべてのコンテンツタイプのデフォルト設定を構成する",
+ "emptyAttributes.button": "コンテンツタイプビルダーに移動",
+ "emptyAttributes.description": "コンテンツタイプに最初のフィールドを追加する",
+ "emptyAttributes.title": "フィールドはまだありません",
+ "error.attribute.key.taken": "この値は既に存在します",
+ "error.attribute.sameKeyAndName": "同じにすることはできません",
+ "error.attribute.taken": "このフィールド名は既に存在します",
+ "error.contentTypeName.taken": "この名前は既に存在します",
+ "error.model.fetch": "モデルの設定フェッチ中にエラーが発生しました",
+ "error.record.create": "レコードの作成中にエラーが発生しました",
+ "error.record.delete": "レコードの削除中にエラーが発生しました",
+ "error.record.fetch": "レコードの取得中にエラーが発生しました",
+ "error.record.update": "レコードの更新中にエラーが発生しました",
+ "error.records.count": "カウントレコードのフェッチ中にエラーが発生しました.",
+ "error.records.fetch": "レコードの取得中にエラーが発生しました",
+ "error.schema.generation": "スキーマの生成中にエラーが発生しました",
+ "error.validation.json": "これはJSONではありません",
+ "error.validation.max": "値が高すぎます",
+ "error.validation.maxLength": "値が長すぎます",
+ "error.validation.min": "値が低すぎます",
+ "error.validation.minLength": "値が小さすぎます",
+ "error.validation.minSupMax": "優れていることはできません",
+ "error.validation.regex": "値は正規表現と一致しません",
+ "error.validation.required": "この値の入力は必須です",
+ "form.Input.bulkActions": "一括処理を有効にする",
+ "form.Input.defaultSort": "デフォルトのソート属性",
+ "form.Input.description": "説明文",
+ "form.Input.description.placeholder": "プロフィールの表示名",
+ "form.Input.disabled": "編集可能なフィールド",
+ "form.Input.filters": "フィルタを有効にする",
+ "form.Input.label": "Label",
+ "form.Input.label.inputDescription": "この値は、テーブルの先頭に表示されるラベル",
+ "form.Input.pageEntries": "1ページあたりのエントリ数",
+ "form.Input.pageEntries.inputDescription": "注:コンテンツタイプ設定ページでこの値を上書きすることができます。",
+ "form.Input.placeholder": "プレースホルダー",
+ "form.Input.placeholder.placeholder": "My awesome value",
+ "form.Input.search": "検索を有効にする",
+ "form.Input.search.field": "このフィールドで検索を有効にする",
+ "form.Input.sort.field": "このフィールドでソートを有効にする",
+ "notification.error.displayedFields": "少なくとも1つの表示フィールドが必要です",
+ "notification.error.relationship.fetch": "リレーションシップフェッチ中にエラーが発生しました",
+ "notification.info.SettingPage.disableSort": "並べ替えを許可する属性が1つ必要です",
+ "pageNotFound": "ページが見つかりません",
+ "plugin.description.long": "データベース内のデータを表示、編集、削除するための方法。",
+ "plugin.description.short": "データベース内のデータを表示、編集、削除するための方法。",
+ "popUpWarning.bodyMessage.contentType.delete": "このエントリを削除してもよろしいですか?",
+ "popUpWarning.bodyMessage.contentType.delete.all": "これらのエントリを削除してもよろしいですか?",
+ "popUpWarning.button.cancel": "キャンセル",
+ "popUpWarning.button.confirm": "確認",
+ "popUpWarning.title": "確認してください",
+ "popUpWarning.warning.cancelAllSettings": "変更をキャンセルしてもよろしいですか?",
+ "popUpWarning.warning.updateAllSettings": "これにより、すべての設定が変更されます",
+ "success.record.delete": "削除",
+ "success.record.save": "保存"
+}
diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/pt-BR.json b/packages/strapi-plugin-content-manager/admin/src/translations/pt-BR.json
index 54dbc6badf..15c12086b3 100644
--- a/packages/strapi-plugin-content-manager/admin/src/translations/pt-BR.json
+++ b/packages/strapi-plugin-content-manager/admin/src/translations/pt-BR.json
@@ -3,6 +3,8 @@
"components.AddFilterCTA.add": "Filtros",
"components.AddFilterCTA.hide": "Filtros",
"components.DraggableAttr.edit": "Clique para editar",
+ "components.EmptyAttributesBlock.button": "Ir para página de configurações",
+ "components.EmptyAttributesBlock.description": "Você pode alterar suas configurações",
"components.FilterOptions.FILTER_TYPES.=": "é",
"components.FilterOptions.FILTER_TYPES._contains": "contém",
"components.FilterOptions.FILTER_TYPES._containss": "contém (case sensitive)",
@@ -25,10 +27,13 @@
"components.TableEmpty.withFilters": "Nenhum {contentType} com os filtros aplicados...",
"components.TableEmpty.withSearch": "Nenhum {contentType} encontrado na pesquisa ({search})...",
"components.TableEmpty.withoutFilter": "Nenhum {contentType}...",
+ "containers.Edit.addAnItem": "Adicione um item...",
+ "containers.Edit.clickToJump": "Clique para pular para o registro",
"containers.Edit.delete": "Remove",
"containers.Edit.editing": "Editando...",
"containers.Edit.reset": "Reiniciar",
"containers.Edit.returnList": "Retornar à lista",
+ "containers.Edit.seeDetails": "Detalhes",
"containers.Edit.submit": "Salvar",
"containers.Home.introduction": "Para editar seus registros, acesse o link específico no menu à esquerda. Esta extensão não permite editar configurações, ainda está em desenvolvimento.",
"containers.Home.pluginHeaderDescription": "Gerencie seus registros através de uma interface poderosa e elegante.",
@@ -37,15 +42,17 @@
"containers.List.errorFetchRecords": "Erro",
"containers.List.pluginHeaderDescription": "{label} registros encontrados",
"containers.List.pluginHeaderDescription.singular": "{label} registro encontrado",
+ "containers.ListPage.displayedFields": "Campos exibidos",
"containers.SettingPage.addField": "Adicionar campo",
+ "containers.SettingPage.addRelationalField": "Adicionar novo campo relacional",
"containers.SettingPage.attributes": "Atributos",
"containers.SettingPage.attributes.description": "Define a ordem dos atributos",
- "containers.SettingPage.editSettings.description": "Drag & drop the fields to build the layout",
- "containers.SettingPage.editSettings.title": "Edit — Settings",
+ "containers.SettingPage.editSettings.description": "Arraste e solte os campos para construir o layout",
+ "containers.SettingPage.editSettings.title": "Editar — Configurações",
"containers.SettingPage.listSettings.description": "Configure as opções para este Tipo de Conteúdo",
"containers.SettingPage.listSettings.title": "Lista — Configurações",
"containers.SettingPage.pluginHeaderDescription": "Defina as configurações específicas para este Tipo de Conteúdo",
- "containers.SettingPage.relations": "Relational fields",
+ "containers.SettingPage.relations": "Campos relacionais",
"containers.SettingsPage.Block.contentType.description": "Defina as configurações específicas",
"containers.SettingsPage.Block.contentType.title": "Tipos de Conteúdo",
"containers.SettingsPage.Block.generalSettings.description": "Configure as opções padrões para seu Tipo de Conteúdo",
@@ -76,14 +83,20 @@
"error.validation.required": "O valor deste registro é obrigatório.",
"form.Input.bulkActions": "Habilitar ações em lote",
"form.Input.defaultSort": "Atributo de ordenação padrão",
+ "form.Input.description": "Descrição",
+ "form.Input.description.placeholder": "Nome exibido no perfil",
+ "form.Input.disabled": "Campo editável",
"form.Input.filters": "Habilitar filtros",
"form.Input.label": "Rótulo",
"form.Input.label.inputDescription": "Este valor substitui o rótulo apresentado no cabeçalho da tabela",
"form.Input.pageEntries": "Entradas por página",
"form.Input.pageEntries.inputDescription": "Nota: Você pode substituir este valor na página de configurações do Tipo de Conteúdo.",
+ "form.Input.placeholder": "Placeholder",
+ "form.Input.placeholder.placeholder": "Meu valor incrível",
"form.Input.search": "Habilitar busca",
"form.Input.search.field": "Habilitar busca neste campo",
"form.Input.sort.field": "Habilitar ordenação neste campo",
+ "notification.error.displayedFields": "Você precisa ao menos um campo exibido",
"notification.error.relationship.fetch": "Ocorreu um erro durante a busca da relação.",
"notification.info.SettingPage.disableSort": "Você precisa de um atributo com permissão de ordenação",
"pageNotFound": "Página não encontrada",
@@ -98,4 +111,4 @@
"popUpWarning.warning.updateAllSettings": "Isto irá modificar todas as suas configurações",
"success.record.delete": "Removido",
"success.record.save": "Salvo"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-content-manager/config/functions/bootstrap.js b/packages/strapi-plugin-content-manager/config/functions/bootstrap.js
index f866b8cffd..292887ff91 100644
--- a/packages/strapi-plugin-content-manager/config/functions/bootstrap.js
+++ b/packages/strapi-plugin-content-manager/config/functions/bootstrap.js
@@ -104,10 +104,8 @@ module.exports = async cb => {
});
// Don't display fields that are hidden by default like the resetPasswordToken for the model user
- fieldsToRemove.forEach(field => {
- _.unset(fields, field);
- _.unset(schemaModel.attributes, field);
- });
+ _.unset(fields, fieldsToRemove);
+ schemaModel.attributes = _.omit(schemaModel.attributes, fieldsToRemove);
schemaModel.fields = fields;
schemaModel.editDisplay.availableFields = fields;
@@ -293,6 +291,15 @@ module.exports = async cb => {
// Update the displayed fields
const updatedListDisplay = prevListDisplay.filter(obj => obj.name !== currentAttr.join());
+ // Retrieve the model's displayed fields for the `EditPage`
+ const fieldsPath = getEditDisplayFieldsPath(attrPath);
+ // Retrieve the previous settings
+ const prevEditDisplayFields = _.get(prevSchema.models, fieldsPath);
+ // Update the fields
+ const updatedEditDisplayFields = prevEditDisplayFields.filter(field => field !== currentAttr.join());
+ // Set the new layout
+ _.set(prevSchema.models, fieldsPath, updatedEditDisplayFields);
+
if (updatedListDisplay.length === 0) {
// Update it with the one from the generated schema
_.set(prevSchema.models, listDisplayPath, _.get(schema.models, listDisplayPath, []));
diff --git a/packages/strapi-plugin-content-manager/config/queries/bookshelf.js b/packages/strapi-plugin-content-manager/config/queries/bookshelf.js
index 2ac90f343f..1f422444f5 100644
--- a/packages/strapi-plugin-content-manager/config/queries/bookshelf.js
+++ b/packages/strapi-plugin-content-manager/config/queries/bookshelf.js
@@ -184,7 +184,7 @@ module.exports = {
withRelated: populate || this.associations.map(x => x.alias)
});
- const data = record.toJSON ? record.toJSON() : record;
+ const data = _.get(record, 'toJSON()', record);
// Retrieve data manually.
if (_.isEmpty(populate)) {
diff --git a/packages/strapi-plugin-content-manager/config/queries/mongoose.js b/packages/strapi-plugin-content-manager/config/queries/mongoose.js
index e5efe8f7db..c80dbd7fbe 100644
--- a/packages/strapi-plugin-content-manager/config/queries/mongoose.js
+++ b/packages/strapi-plugin-content-manager/config/queries/mongoose.js
@@ -106,11 +106,12 @@ module.exports = {
const request = await this.create(values)
.catch((err) => {
- const message = err.message.split('index:');
- const field = _.words(_.last(message).split('_')[0]);
- const error = { message: `This ${field} is already taken`, field };
-
- throw error;
+ if (err.message) {
+ const message = err.message.split('index:');
+ const field = _.words(_.last(message).split('_')[0]);
+ err = { message: `This ${field} is already taken`, field };
+ }
+ throw err;
});
// Transform to JSON object.
diff --git a/packages/strapi-plugin-content-manager/package.json b/packages/strapi-plugin-content-manager/package.json
index ede2b4cd05..00ebdc6394 100644
--- a/packages/strapi-plugin-content-manager/package.json
+++ b/packages/strapi-plugin-content-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-plugin-content-manager",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "A powerful UI to easily manage your data.",
"strapi": {
"name": "Content Manager",
@@ -26,7 +26,7 @@
"draft-js": "^0.10.5",
"react-select": "^1.2.1",
"showdown": "^1.8.6",
- "strapi-helper-plugin": "3.0.0-alpha.14.3"
+ "strapi-helper-plugin": "3.0.0-alpha.14.5"
},
"dependencies": {
"pluralize": "^7.0.0"
diff --git a/packages/strapi-plugin-content-manager/services/ContentManager.js b/packages/strapi-plugin-content-manager/services/ContentManager.js
index 3bf15942e3..082d7c30c3 100644
--- a/packages/strapi-plugin-content-manager/services/ContentManager.js
+++ b/packages/strapi-plugin-content-manager/services/ContentManager.js
@@ -8,7 +8,7 @@ const _ = require('lodash');
module.exports = {
fetchAll: async (params, query) => {
- const { limit, skip, sort, query : request, queryAttribute, source, page, populate = [] } = query; // eslint-disable-line no-unused-vars
+ const { limit, skip, sort, query : request, queryAttribute, source, populate = [] } = query;
const filters = strapi.utils.models.convertParams(params.model, query);
const where = !_.isEmpty(request) ? request : filters.where;
diff --git a/packages/strapi-plugin-content-type-builder/admin/src/translations/de.json b/packages/strapi-plugin-content-type-builder/admin/src/translations/de.json
index 7b3a57ef4f..83039399a2 100644
--- a/packages/strapi-plugin-content-type-builder/admin/src/translations/de.json
+++ b/packages/strapi-plugin-content-type-builder/admin/src/translations/de.json
@@ -37,8 +37,8 @@
"form.attribute.item.customColumnName.description": "Dies ist nützlich, um Spalten in der Datenbank für Antworten der API umzubenennen",
"form.attribute.item.date.name": "Name",
"form.attribute.item.defineRelation.fieldName": "Feldname",
- "form.attribute.item.enumeration.graphql": "Name override for GraphQL",
- "form.attribute.item.enumeration.graphql.description": "Allows you to override the default generated name for GraphQL",
+ "form.attribute.item.enumeration.graphql": "Namensüberschreibung für GraphQL",
+ "form.attribute.item.enumeration.graphql.description": "Ermöglicht dir, den standardmäßig generierten Namen für GraphQL zu überschreiben",
"form.attribute.item.enumeration.name": "Name",
"form.attribute.item.enumeration.placeholder": "Ex: Morgen, Mittag, Abend",
"form.attribute.item.enumeration.rules": "Werte (trenne sie mit einem Komma)",
@@ -62,7 +62,7 @@
"form.attribute.item.uniqueField": "Einzigartiges Feld",
"form.attribute.item.uniqueField.description": "Du wirst keinen Eintrag anlegen können, wenn es bereits einen Eintrag mit identischem Inhalt gibt",
"form.attribute.settings.default": "Standardwert",
- "form.attribute.settings.default.checkboxLabel": "Set to true",
+ "form.attribute.settings.default.checkboxLabel": "Auf aktiv gesetzt",
"form.button.cancel": "Abbrechen",
"form.button.continue": "Weiter",
"form.button.save": "Speichern",
diff --git a/packages/strapi-plugin-content-type-builder/admin/src/translations/fr.json b/packages/strapi-plugin-content-type-builder/admin/src/translations/fr.json
index b2781793fe..676303da13 100644
--- a/packages/strapi-plugin-content-type-builder/admin/src/translations/fr.json
+++ b/packages/strapi-plugin-content-type-builder/admin/src/translations/fr.json
@@ -29,18 +29,18 @@
"error.validation.minSupMax": "Ne peut pas être plus grand",
"error.validation.regex": "La valeur ne correspond pas au format attendu.",
"error.validation.required": "Ce champ est obligatoire.",
- "form.attribute.item.appearance.description": "Sinon, il sera editable à partir d'une simple textarea",
+ "form.attribute.item.appearance.description": "Sinon, il sera editable à partir d'une simple zone de texte",
"form.attribute.item.appearance.label": "Editable avec un WYSIWYG",
"form.attribute.item.appearance.name": "Apparence",
"form.attribute.item.boolean.name": "Nom",
- "form.attribute.item.customColumnName": "Nom de colonne custom",
+ "form.attribute.item.customColumnName": "Nom de colonne personalisée",
"form.attribute.item.customColumnName.description": "Pratique pour renommer la colonne de la db dans un format plus comprehensible pour les responses de l'API",
"form.attribute.item.date.name": "Nom",
"form.attribute.item.defineRelation.fieldName": "Nom du Champ",
"form.attribute.item.enumeration.graphql": "Surchage du nom pour GraphQL",
"form.attribute.item.enumeration.graphql.description": "Vous permet de remplacer le nom généré par défaut pour GraphQL",
"form.attribute.item.enumeration.name": "Nom",
- "form.attribute.item.enumeration.placeholder": "Ex: matin,midi,soir",
+ "form.attribute.item.enumeration.placeholder": "Ex : matin,midi,soir",
"form.attribute.item.enumeration.rules": "Valeurs (les séparer par une virgule)",
"form.attribute.item.json.name": "Nom",
"form.attribute.item.maximum": "Valeur maximum",
@@ -64,7 +64,7 @@
"form.attribute.settings.default": "Valeur par défault",
"form.attribute.settings.default.checkboxLabel": "Définir à true",
"form.button.cancel": "Annuler",
- "form.button.continue": "Continue",
+ "form.button.continue": "Continuer",
"form.button.save": "Sauvegarder",
"form.contentType.item.collectionName": "Nom de la Collection",
"form.contentType.item.collectionName.inputDescription": "Pratique quand le Nom de votre Modèle et de votre table sont différents",
@@ -111,7 +111,7 @@
"popUpForm.attributes.date.description": "Date événements, horaires",
"popUpForm.attributes.date.name": "Date",
"popUpForm.attributes.email.description": "Email utilisateurs",
- "popUpForm.attributes.email.name": "Email",
+ "popUpForm.attributes.email.name": "E-mail",
"popUpForm.attributes.enumeration": "Énumération",
"popUpForm.attributes.enumeration.description": "Liste de choix",
"popUpForm.attributes.enumeration.name": "Énumération",
@@ -144,7 +144,7 @@
"popUpWarning.button.cancel": "Annuler",
"popUpWarning.button.confirm": "Confirmer",
"popUpWarning.title": "Merci de confirmer",
- "relation.attributeName.placeholder": "Ex: auteur, catégorie, tag",
+ "relation.attributeName.placeholder": "Ex : auteur, catégorie, tag",
"relation.manyToMany": "a plusieurs",
"relation.manyToOne": "a plusieurs",
"relation.oneToMany": "appartient a",
@@ -155,4 +155,4 @@
"table.contentType.head.name": "Nom",
"table.contentType.title.plural": "Modèles sont disponibles",
"table.contentType.title.singular": "Modèle est disponible"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-content-type-builder/admin/src/translations/ja.json b/packages/strapi-plugin-content-type-builder/admin/src/translations/ja.json
new file mode 100644
index 0000000000..c367f42025
--- /dev/null
+++ b/packages/strapi-plugin-content-type-builder/admin/src/translations/ja.json
@@ -0,0 +1,157 @@
+{
+ "attribute.WYSIWYG": "Text (WYSIWYG)",
+ "attribute.boolean": "Boolean",
+ "attribute.date": "Date",
+ "attribute.decimal": "Decimal",
+ "attribute.email": "Email",
+ "attribute.enumeration": "Enumeration",
+ "attribute.float": "Float",
+ "attribute.integer": "integer",
+ "attribute.json": "JSON",
+ "attribute.media": "Media",
+ "attribute.password": "Password",
+ "attribute.relation": "Relation",
+ "attribute.string": "String",
+ "attribute.text": "Text",
+ "button.attributes.add": "新しいフィールドを追加",
+ "button.contentType.add": "コンテンツタイプを追加",
+ "button.contentType.create": "コンテンツタイプの作成",
+ "contentType.temporaryDisplay": "(保存されません)",
+ "error.attribute.forbidden": "この属性名は予約済みです",
+ "error.attribute.key.taken": "この値は既に存在します",
+ "error.attribute.sameKeyAndName": "等しくありません",
+ "error.attribute.taken": "このフィールド名は既に存在します",
+ "error.contentTypeName.taken": "この名前は既に存在します",
+ "error.validation.max": "値が高すぎます",
+ "error.validation.maxLength": "値が長すぎます",
+ "error.validation.min": "値が低すぎます",
+ "error.validation.minLength": "値が短すぎます",
+ "error.validation.minSupMax": "Can't be superior",
+ "error.validation.regex": "値が正規表現と一致しません",
+ "error.validation.required": "この値の入力は必須です.",
+ "form.attribute.item.appearance.description": "それ以外の場合、値は基本的なtextareaフィールドを通じて編集可能になります",
+ "form.attribute.item.appearance.label": "WYSIWYGで表示",
+ "form.attribute.item.appearance.name": "外観",
+ "form.attribute.item.boolean.name": "名前",
+ "form.attribute.item.customColumnName": "カスタム列名",
+ "form.attribute.item.customColumnName.description": "これは、データベースのカラム名をAPIのレスポンスのより包括的なフォーマットに変更する場合に便利です",
+ "form.attribute.item.date.name": "名前",
+ "form.attribute.item.defineRelation.fieldName": "フィールド名",
+ "form.attribute.item.enumeration.graphql": "GraphQLの名前の上書き",
+ "form.attribute.item.enumeration.graphql.description": "GraphQLの既定の生成名をオーバーライドできます",
+ "form.attribute.item.enumeration.name": "名前",
+ "form.attribute.item.enumeration.placeholder": "例:朝、正午、夕方",
+ "form.attribute.item.enumeration.rules": "値 (カンマ区切り)",
+ "form.attribute.item.json.name": "名前",
+ "form.attribute.item.maximum": "最大値",
+ "form.attribute.item.maximumLength": "最大長",
+ "form.attribute.item.media.multiple": "複数のファイルを許可する",
+ "form.attribute.item.media.name": "名前",
+ "form.attribute.item.minimum": "最小値",
+ "form.attribute.item.minimumLength": "最小長",
+ "form.attribute.item.number.name": "名前",
+ "form.attribute.item.number.type": "数値形式",
+ "form.attribute.item.number.type.decimal": "decimal (ex: 2.22)",
+ "form.attribute.item.number.type.float": "float (ex: 3.33333333)",
+ "form.attribute.item.number.type.integer": "integer (ex: 10)",
+ "form.attribute.item.requiredField": "必須フィールド",
+ "form.attribute.item.requiredField.description": "このフィールドが空の場合、エントリを作成することはできません",
+ "form.attribute.item.settings.name": "設定",
+ "form.attribute.item.string.name": "名前",
+ "form.attribute.item.textarea.name": "名前",
+ "form.attribute.item.uniqueField": "一意のフィールド",
+ "form.attribute.item.uniqueField.description": "同じ内容の既存のエントリがある場合、エントリを作成することはできません",
+ "form.attribute.settings.default": "デフォルト値",
+ "form.attribute.settings.default.checkboxLabel": "trueに設定する",
+ "form.button.cancel": "キャンセル",
+ "form.button.continue": "続ける",
+ "form.button.save": "保存",
+ "form.contentType.item.collectionName": "コレクション名",
+ "form.contentType.item.collectionName.inputDescription": "コンテンツタイプの名前とテーブル名が異なる場合に便利です",
+ "form.contentType.item.connections": "接続",
+ "form.contentType.item.description": "説明文",
+ "form.contentType.item.description.placeholder": "ここに簡単な説明を書いてください...",
+ "form.contentType.item.name": "名前",
+ "form.contentType.item.name.description": "コンテンツタイプの名前は一意である必要があります:{link}",
+ "form.contentType.item.name.link.description": "ドキュメントをチェックしてください",
+ "from": "from",
+ "home.contentTypeBuilder.description": "独自のコンテンツタイプを作成して更新します",
+ "home.contentTypeBuilder.name": "コンテンツタイプ",
+ "home.emptyAttributes.description": "新しいコンテンツタイプに最初のフィールドを追加する",
+ "home.emptyAttributes.title": "フィールドはまだありません",
+ "home.emptyContentType.description": "最初のコンテンツタイプを作成して、APIからデータを取得できるようにします。",
+ "home.emptyContentType.title": "コンテンツタイプはありません",
+ "menu.section.contentTypeBuilder.name.plural": "コンテンツタイプ",
+ "menu.section.contentTypeBuilder.name.singular": "コンテンツタイプ",
+ "menu.section.documentation.guide": "コンテンツタイプの詳細はこちら",
+ "menu.section.documentation.guideLink": "ガイド.",
+ "menu.section.documentation.name": "ドキュメント",
+ "menu.section.documentation.tutorial": "",
+ "menu.section.documentation.tutorialLink": "チュートリアルビデオを確認してください",
+ "modelPage.attribute.relationWith": "関係",
+ "modelPage.contentHeader.emptyDescription.description": "このコンテンツタイプの説明はありません",
+ "modelPage.contentType.list.relationShipTitle.plural": "関係",
+ "modelPage.contentType.list.relationShipTitle.singular": "関係",
+ "modelPage.contentType.list.title.including": "含む",
+ "modelPage.contentType.list.title.plural": "フィールド",
+ "modelPage.contentType.list.title.singular": "フィールド",
+ "noTableWarning.description": "あなたのデータベースに `{modelName}`テーブルを作成することを忘れないでください",
+ "noTableWarning.infos": "詳細情報",
+ "notification.error.message": "エラーが発生しました",
+ "notification.info.contentType.creating.notSaved": "新しいコンテンツタイプを作成する前に、現在のコンテンツタイプを保存してください",
+ "notification.info.disable": "このフィールドは現時点では編集できません...😮",
+ "notification.info.optimized": "このプラグインはlocalStorageで最適化されています",
+ "notification.success.contentTypeDeleted": "コンテンツタイプが削除されました",
+ "notification.success.message.contentType.create": "あなたのコンテンツタイプが作成されました",
+ "notification.success.message.contentType.edit": "あなたのコンテンツタイプが更新されました",
+ "plugin.description.long": "APIのデータ構造をモデル化します。数分で新しいフィールドと関係を作成します。ファイルはプロジェクトで自動的に作成され、更新されます。",
+ "plugin.description.short": "APIのデータ構造をモデル化します。",
+ "popUpForm.attributes.boolean.description": "Yes or no, 1 or 0, true or false",
+ "popUpForm.attributes.boolean.name": "Boolean",
+ "popUpForm.attributes.date.description": "Event date, opening hours",
+ "popUpForm.attributes.date.name": "Date",
+ "popUpForm.attributes.email.description": "ユーザーのEメール...",
+ "popUpForm.attributes.email.name": "Eメール",
+ "popUpForm.attributes.enumeration.description": "選択肢リスト",
+ "popUpForm.attributes.enumeration.name": "Enumeration",
+ "popUpForm.attributes.json.description": "Data in JSON format",
+ "popUpForm.attributes.json.name": "JSON",
+ "popUpForm.attributes.media.description": "Images, videos, PDFs and other files",
+ "popUpForm.attributes.media.name": "メディア",
+ "popUpForm.attributes.number.description": "すべての数値",
+ "popUpForm.attributes.number.name": "Number",
+ "popUpForm.attributes.password.description": "ユーザーのパスワード...",
+ "popUpForm.attributes.password.name": "パスワード",
+ "popUpForm.attributes.relation.description": "コンテンツタイプを参照する",
+ "popUpForm.attributes.relation.name": "関係",
+ "popUpForm.attributes.string.description": "タイトル、名前、段落、名前のリスト",
+ "popUpForm.attributes.string.name": "String",
+ "popUpForm.attributes.text.description": "説明、テキスト段落、記事",
+ "popUpForm.attributes.text.name": "Text",
+ "popUpForm.choose.attributes.header.title": "フィールドを追加",
+ "popUpForm.create": "新規追加",
+ "popUpForm.create.contentType.header.title": "新規コンテンツタイプを追加",
+ "popUpForm.edit": "編集",
+ "popUpForm.edit.contentType.header.title": "コンテンツタイプを編集",
+ "popUpForm.field": "フィールド",
+ "popUpForm.navContainer.advanced": "高度な設定",
+ "popUpForm.navContainer.base": "基本設定",
+ "popUpForm.navContainer.relation": "関係を定義する",
+ "popUpRelation.title": "関係",
+ "popUpWarning.bodyMessage.attribute.delete": "このフィールドを削除してもよろしいですか?",
+ "popUpWarning.bodyMessage.contentType.delete": "このコンテンツタイプを削除してもよろしいですか?",
+ "popUpWarning.button.cancel": "キャンセル",
+ "popUpWarning.button.confirm": "確認",
+ "popUpWarning.title": "確認してください",
+ "relation.attributeName.placeholder": "例:author、category、tag",
+ "relation.manyToMany": "has and belongs to many",
+ "relation.manyToOne": "has many",
+ "relation.oneToMany": "belongs to many",
+ "relation.oneToOne": "has and belongs to one",
+ "relation.oneWay": "has one",
+ "table.contentType.head.description": "説明文",
+ "table.contentType.head.fields": "フィールド",
+ "table.contentType.head.name": "名前",
+ "table.contentType.title.plural": "個のコンテンツタイプが利用できます。",
+ "table.contentType.title.singular": "コンテンツタイプは利用可能です"
+}
\ No newline at end of file
diff --git a/packages/strapi-plugin-content-type-builder/controllers/ContentTypeBuilder.js b/packages/strapi-plugin-content-type-builder/controllers/ContentTypeBuilder.js
index 078a9d545e..907caf2a25 100644
--- a/packages/strapi-plugin-content-type-builder/controllers/ContentTypeBuilder.js
+++ b/packages/strapi-plugin-content-type-builder/controllers/ContentTypeBuilder.js
@@ -4,6 +4,7 @@ const fs = require('fs');
const _ = require('lodash');
const Service = require('../services/ContentTypeBuilder');
+const { escapeNewlines } = require('../utils/helpers.js');
module.exports = {
getModels: async ctx => {
@@ -47,11 +48,13 @@ module.exports = {
return ctx.badRequest(null, [{ messages: attributesErrors }]);
}
+ const _description = escapeNewlines(description, '\\n');
+
strapi.reload.isWatching = false;
await Service.appearance(formatedAttributes, name);
- await Service.generateAPI(name, description, connection, collectionName, []);
+ await Service.generateAPI(name, _description, connection, collectionName, []);
const modelFilePath = await Service.getModelPath(name, plugin);
@@ -103,12 +106,14 @@ module.exports = {
return ctx.badRequest(null, [{ messages: attributesErrors }]);
}
+ const _description = escapeNewlines(description);
+
let modelFilePath = Service.getModelPath(model, plugin);
strapi.reload.isWatching = false;
if (name !== model) {
- await Service.generateAPI(name, description, connection, collectionName, []);
+ await Service.generateAPI(name, _description, connection, collectionName, []);
}
await Service.appearance(formatedAttributes, name, plugin);
@@ -120,7 +125,7 @@ module.exports = {
modelJSON.collectionName = collectionName;
modelJSON.info = {
name,
- description
+ description: _description
};
modelJSON.attributes = formatedAttributes;
diff --git a/packages/strapi-plugin-content-type-builder/package.json b/packages/strapi-plugin-content-type-builder/package.json
index 9221a31be6..69a70e73b1 100644
--- a/packages/strapi-plugin-content-type-builder/package.json
+++ b/packages/strapi-plugin-content-type-builder/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-plugin-content-type-builder",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Strapi plugin to create content type (API).",
"strapi": {
"name": "Content Type Builder",
@@ -24,11 +24,11 @@
"dependencies": {
"immutable": "^3.8.2",
"pluralize": "^7.0.0",
- "strapi-generate": "3.0.0-alpha.14.3",
- "strapi-generate-api": "3.0.0-alpha.14.3"
+ "strapi-generate": "3.0.0-alpha.14.5",
+ "strapi-generate-api": "3.0.0-alpha.14.5"
},
"devDependencies": {
- "strapi-helper-plugin": "3.0.0-alpha.14.3"
+ "strapi-helper-plugin": "3.0.0-alpha.14.5"
},
"author": {
"name": "Strapi team",
diff --git a/packages/strapi-plugin-content-type-builder/utils/helpers.js b/packages/strapi-plugin-content-type-builder/utils/helpers.js
index 023dc247f5..7036c1585a 100644
--- a/packages/strapi-plugin-content-type-builder/utils/helpers.js
+++ b/packages/strapi-plugin-content-type-builder/utils/helpers.js
@@ -61,10 +61,15 @@ const reorderList = (manager, list) => {
return List(flattenDeep(reordered));
};
+const escapeNewlines = (content, placeholder = '\n') => {
+ return content.replace(/[\r\n]+/g, placeholder);
+}
+
module.exports = {
createArrayOfLastEls,
createManager,
getElementsOnALine,
removeColsLine,
reorderList,
+ escapeNewlines
};
\ No newline at end of file
diff --git a/packages/strapi-plugin-email/admin/src/containers/ConfigPage/saga.js b/packages/strapi-plugin-email/admin/src/containers/ConfigPage/saga.js
index cdc0929252..15d9916671 100644
--- a/packages/strapi-plugin-email/admin/src/containers/ConfigPage/saga.js
+++ b/packages/strapi-plugin-email/admin/src/containers/ConfigPage/saga.js
@@ -1,7 +1,6 @@
// import { LOCATION_CHANGE } from 'react-router-redux';
-import { call, fork, put, select, takeLatest } from 'redux-saga/effects';
+import { all, call, fork, put, select, takeLatest } from 'redux-saga/effects';
import request from 'utils/request';
-
import {
getSettingsSucceeded,
submitSucceeded,
@@ -18,10 +17,10 @@ import {
export function* settingsGet(action) {
try {
const requestURL = `/email/settings/${action.env}`;
- const response = yield [
+ const response = yield all([
call(request, requestURL, { method: 'GET' }),
call(request, '/email/environments', { method: 'GET' }),
- ];
+ ]);
yield put(getSettingsSucceeded(response[0], response[1].environments));
} catch(err) {
diff --git a/packages/strapi-plugin-email/admin/src/translations/fr.json b/packages/strapi-plugin-email/admin/src/translations/fr.json
index b632053210..17a1af7a45 100644
--- a/packages/strapi-plugin-email/admin/src/translations/fr.json
+++ b/packages/strapi-plugin-email/admin/src/translations/fr.json
@@ -4,8 +4,8 @@
"EditForm.Input.number.label": "Taille maximale autorisée (en MB)",
"EditForm.Input.select.inputDescription": "Les e-mails peuvent être envoyés avec le fournisseur par défaut (Sendmail) ou un fournisseur externe.",
"EditForm.Input.select.label": "Fournisseurs",
- "EditForm.Input.toggle.label": "Activer l'envoi de e-mails",
+ "EditForm.Input.toggle.label": "Activer l'envoi d'e-mails",
"notification.config.success": "Les paramètres ont été mis à jour.",
"plugin.description.long": "Envoyez des emails",
"plugin.description.short": "Envoyez des emails"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-email/admin/src/translations/ja.json b/packages/strapi-plugin-email/admin/src/translations/ja.json
new file mode 100644
index 0000000000..ab5972a2c7
--- /dev/null
+++ b/packages/strapi-plugin-email/admin/src/translations/ja.json
@@ -0,0 +1,11 @@
+{
+ "ConfigPage.description": "Eメールプラグインを設定する",
+ "ConfigPage.title": "Eメール - 設定",
+ "EditForm.Input.number.label": "許可される最大サイズ(MB単位)",
+ "EditForm.Input.select.inputDescription": "電子メールは、デフォルトのプロバイダ(Sendmail)または外部プロバイダ",
+ "EditForm.Input.select.label": "プロバイダー",
+ "EditForm.Input.toggle.label": "メール送信を有効にする",
+ "notification.config.success": "設定が更新されました",
+ "plugin.description.long": "メールを送る",
+ "plugin.description.short": "メールを送る"
+}
\ No newline at end of file
diff --git a/packages/strapi-plugin-email/package.json b/packages/strapi-plugin-email/package.json
index 7857fde38b..47c9f0f0ff 100644
--- a/packages/strapi-plugin-email/package.json
+++ b/packages/strapi-plugin-email/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-plugin-email",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "This is the description of the plugin.",
"strapi": {
"name": "Email",
@@ -22,11 +22,11 @@
"prepublishOnly": "IS_MONOREPO=true npm run build"
},
"dependencies": {
- "strapi-provider-email-sendmail": "3.0.0-alpha.14.3"
+ "strapi-provider-email-sendmail": "3.0.0-alpha.14.5"
},
"devDependencies": {
"react-copy-to-clipboard": "5.0.1",
- "strapi-helper-plugin": "3.0.0-alpha.14.3"
+ "strapi-helper-plugin": "3.0.0-alpha.14.5"
},
"author": {
"name": "Strapi team",
@@ -49,4 +49,4 @@
"npm": ">= 5.0.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-graphql/hooks/graphql/index.js b/packages/strapi-plugin-graphql/hooks/graphql/index.js
index c6872a80f1..7530b4e042 100644
--- a/packages/strapi-plugin-graphql/hooks/graphql/index.js
+++ b/packages/strapi-plugin-graphql/hooks/graphql/index.js
@@ -35,7 +35,7 @@ module.exports = strapi => {
// Load root configurations.
new Promise((resolve, reject) => {
glob(
- './config/*.graphql',
+ './config/*.graphql?(.js)',
{
cwd: strapi.config.appPath,
},
@@ -54,7 +54,7 @@ module.exports = strapi => {
// Load APIs configurations.
new Promise((resolve, reject) => {
glob(
- './api/*/config/*.graphql',
+ './api/*/config/*.graphql?(.js)',
{
cwd: strapi.config.appPath,
},
@@ -73,7 +73,7 @@ module.exports = strapi => {
// Load plugins configurations.
new Promise((resolve, reject) => {
glob(
- './plugins/*/config/*.graphql',
+ './plugins/*/config/*.graphql?(.js)',
{
cwd: strapi.config.appPath,
},
diff --git a/packages/strapi-plugin-graphql/package.json b/packages/strapi-plugin-graphql/package.json
index e31ccef755..8f1e94b9a8 100644
--- a/packages/strapi-plugin-graphql/package.json
+++ b/packages/strapi-plugin-graphql/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-plugin-graphql",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "This is the description of the plugin.",
"strapi": {
"name": "graphql",
@@ -30,7 +30,7 @@
"graphql-type-json": "^0.2.1",
"graphql-type-datetime": "^0.2.2",
"pluralize": "^7.0.0",
- "strapi-utils": "3.0.0-alpha.14.3"
+ "strapi-utils": "3.0.0-alpha.14.5"
},
"author": {
"name": "A Strapi developer",
diff --git a/packages/strapi-plugin-graphql/services/Aggregator.js b/packages/strapi-plugin-graphql/services/Aggregator.js
index 22616e9146..b4ad4ef304 100644
--- a/packages/strapi-plugin-graphql/services/Aggregator.js
+++ b/packages/strapi-plugin-graphql/services/Aggregator.js
@@ -9,6 +9,7 @@
const _ = require('lodash');
const pluralize = require('pluralize');
const Schema = require('./Schema.js');
+/* eslint-disable no-unused-vars */
module.exports = {
/**
@@ -387,22 +388,6 @@ module.exports = {
};
},
- /**
- * Returns a list of fields that have type included in fieldTypes.
- */
- getFieldsByTypes: (fields, typeCheck, returnType) => {
- return _.reduce(
- fields,
- (acc, fieldType, fieldName) => {
- if (typeCheck(fieldType)) {
- acc[fieldName] = returnType(fieldType, fieldName);
- }
- return acc;
- },
- {},
- );
- },
-
/**
* Generate the connection type of each non-array field of the model
*
diff --git a/packages/strapi-plugin-graphql/services/Mutation.js b/packages/strapi-plugin-graphql/services/Mutation.js
index 7cc8e0094f..94ee870e19 100644
--- a/packages/strapi-plugin-graphql/services/Mutation.js
+++ b/packages/strapi-plugin-graphql/services/Mutation.js
@@ -10,6 +10,7 @@ const _ = require('lodash');
const pluralize = require('pluralize');
const policyUtils = require('strapi-utils').policy;
const Query = require('./Query.js');
+/* eslint-disable no-unused-vars */
module.exports = {
/**
@@ -64,10 +65,7 @@ module.exports = {
const [name, action] = handler.split('.');
const controller = plugin
- ? _.get(
- strapi.plugins,
- `${plugin}.controllers.${_.toLower(name)}.${action}`,
- )
+ ? _.get(strapi.plugins, `${plugin}.controllers.${_.toLower(name)}.${action}`)
: _.get(strapi.controllers, `${_.toLower(name)}.${action}`);
if (!controller) {
@@ -148,10 +146,7 @@ module.exports = {
const [name, action] = resolverOf.split('.');
const controller = plugin
- ? _.get(
- strapi.plugins,
- `${plugin}.controllers.${_.toLower(name)}.${action}`,
- )
+ ? _.get(strapi.plugins, `${plugin}.controllers.${_.toLower(name)}.${action}`)
: _.get(strapi.controllers, `${_.toLower(name)}.${action}`);
if (!controller) {
diff --git a/packages/strapi-plugin-graphql/services/Query.js b/packages/strapi-plugin-graphql/services/Query.js
index d2825af948..32a5c16e34 100644
--- a/packages/strapi-plugin-graphql/services/Query.js
+++ b/packages/strapi-plugin-graphql/services/Query.js
@@ -95,10 +95,7 @@ module.exports = {
const [name, action] = handler.split('.');
const controller = plugin
- ? _.get(
- strapi.plugins,
- `${plugin}.controllers.${_.toLower(name)}.${action}`,
- )
+ ? _.get(strapi.plugins, `${plugin}.controllers.${_.toLower(name)}.${action}`)
: _.get(strapi.controllers, `${_.toLower(name)}.${action}`);
if (!controller) {
@@ -199,10 +196,7 @@ module.exports = {
const [name, action] = resolverOf.split('.');
const controller = plugin
- ? _.get(
- strapi.plugins,
- `${plugin}.controllers.${_.toLower(name)}.${action}`,
- )
+ ? _.get(strapi.plugins, `${plugin}.controllers.${_.toLower(name)}.${action}`)
: _.get(strapi.controllers, `${_.toLower(name)}.${action}`);
if (!controller) {
diff --git a/packages/strapi-plugin-graphql/services/Resolvers.js b/packages/strapi-plugin-graphql/services/Resolvers.js
index 45328cc731..8c117334f6 100644
--- a/packages/strapi-plugin-graphql/services/Resolvers.js
+++ b/packages/strapi-plugin-graphql/services/Resolvers.js
@@ -65,11 +65,11 @@ module.exports = {
});
Object.assign(acc.resolver[globalId], {
- createdAt: (obj, options, context) => {
+ createdAt: (obj) => {
// eslint-disable-line no-unused-vars
return obj.createdAt || obj.created_at;
},
- updatedAt: (obj, options, context) => {
+ updatedAt: (obj) => {
// eslint-disable-line no-unused-vars
return obj.updatedAt || obj.updated_at;
},
@@ -154,7 +154,7 @@ module.exports = {
Object.keys(queries).forEach(type => {
// The query cannot be built.
if (_.isError(queries[type])) {
- console.error(queries[type]);
+ strapi.log.error(queries[type]);
strapi.stop();
}
@@ -303,7 +303,7 @@ module.exports = {
case 'manyMorphToMany':
case 'manyToManyMorph':
return _.merge(acc.resolver[globalId], {
- [association.alias]: async (obj, options, context) => {
+ [association.alias]: async (obj) => {
// eslint-disable-line no-unused-vars
const [withRelated, withoutRelated] = await Promise.all([
resolvers.fetch(
@@ -362,7 +362,7 @@ module.exports = {
}
_.merge(acc.resolver[globalId], {
- [association.alias]: async (obj, options, context) => {
+ [association.alias]: async (obj, options) => {
// eslint-disable-line no-unused-vars
// Construct parameters object to retrieve the correct related entries.
const params = {
@@ -399,21 +399,19 @@ module.exports = {
switch (association.nature) {
case 'manyToMany': {
- if (association.dominant) {
- const arrayOfIds = (obj[association.alias] || []).map(
- related => {
- return related[ref.primaryKey] || related;
- },
- );
+ const arrayOfIds = (obj[association.alias] || []).map(
+ related => {
+ return related[ref.primaryKey] || related;
+ },
+ );
- // Where.
- queryOpts.query = strapi.utils.models.convertParams(name, {
- // Construct the "where" query to only retrieve entries which are
- // related to this entry.
- [ref.primaryKey]: arrayOfIds,
- ...where.where,
- }).where;
- }
+ // Where.
+ queryOpts.query = strapi.utils.models.convertParams(name, {
+ // Construct the "where" query to only retrieve entries which are
+ // related to this entry.
+ [ref.primaryKey]: arrayOfIds,
+ ...where.where,
+ }).where;
break;
// falls through
}
@@ -428,6 +426,14 @@ module.exports = {
}
}
+ if (queryOpts.hasOwnProperty('query') &&
+ queryOpts.query.hasOwnProperty('id') &&
+ queryOpts.query.id.hasOwnProperty('value') &&
+ Array.isArray(queryOpts.query.id.value)
+ ){
+ queryOpts.query.id.symbol = 'IN';
+ }
+
const value = await (association.model
? resolvers.fetch(params, association.plugin, [])
: resolvers.fetchAll(params, { ...queryOpts, populate: [] }));
diff --git a/packages/strapi-plugin-graphql/services/Schema.js b/packages/strapi-plugin-graphql/services/Schema.js
index 130c8b978d..d13249e3ed 100644
--- a/packages/strapi-plugin-graphql/services/Schema.js
+++ b/packages/strapi-plugin-graphql/services/Schema.js
@@ -135,22 +135,22 @@ module.exports = {
const shadowCRUD =
strapi.plugins.graphql.config.shadowCRUD !== false
? (() => {
- // Exclude core models.
+ // Exclude core models.
const models = Object.keys(strapi.models).filter(
- model => model !== 'core_store',
- );
+ model => model !== 'core_store',
+ );
// Reproduce the same pattern for each plugin.
return Object.keys(strapi.plugins).reduce((acc, plugin) => {
const {
- definition,
- query,
- mutation,
- resolver,
- } = Resolvers.shadowCRUD(
- Object.keys(strapi.plugins[plugin].models),
- plugin,
- );
+ definition,
+ query,
+ mutation,
+ resolver,
+ } = Resolvers.shadowCRUD(
+ Object.keys(strapi.plugins[plugin].models),
+ plugin,
+ );
// We cannot put this in the merge because it's a string.
acc.definition += definition || '';
@@ -196,8 +196,6 @@ module.exports = {
}
if (!_.isFunction(acc[type][resolver])) {
- console.log(type, resolver);
-
acc[type][resolver] = acc[type][resolver].resolver;
}
@@ -305,7 +303,7 @@ module.exports = {
if (err && err.code === 'ENOENT') {
fs.mkdirSync(generatedFolder);
} else {
- console.error(err);
+ strapi.log.error(err);
}
}
diff --git a/packages/strapi-plugin-graphql/services/Types.js b/packages/strapi-plugin-graphql/services/Types.js
index 7150fe8c5c..1bf6a4c770 100644
--- a/packages/strapi-plugin-graphql/services/Types.js
+++ b/packages/strapi-plugin-graphql/services/Types.js
@@ -12,6 +12,7 @@ const graphql = require('graphql');
const GraphQLJSON = require('graphql-type-json');
const GraphQLDateTime = require('graphql-type-datetime');
const pluralize = require('pluralize');
+/* eslint-disable no-unused-vars */
module.exports = {
/**
@@ -212,7 +213,7 @@ module.exports = {
const inputName = `${_.capitalize(name)}Input`;
const payloadName = `${_.capitalize(name)}Payload`;
-
+ /* eslint-disable indent */
switch (type) {
case 'create':
return `
@@ -238,5 +239,6 @@ module.exports = {
default:
// Nothing
}
+ /* eslint-enable indent */
},
};
diff --git a/packages/strapi-plugin-settings-manager/admin/src/containers/HomePage/sagas.js b/packages/strapi-plugin-settings-manager/admin/src/containers/HomePage/sagas.js
index c993d6e182..a325f8cc3d 100644
--- a/packages/strapi-plugin-settings-manager/admin/src/containers/HomePage/sagas.js
+++ b/packages/strapi-plugin-settings-manager/admin/src/containers/HomePage/sagas.js
@@ -1,11 +1,9 @@
import { LOCATION_CHANGE } from 'react-router-redux';
import { forEach, set, map, replace } from 'lodash';
-import { call, take, put, fork, cancel, select, takeLatest } from 'redux-saga/effects';
+import { all, call, take, put, fork, cancel, select, takeLatest } from 'redux-saga/effects';
import request from 'utils/request';
-
// selectors
import { makeSelectModifiedData } from './selectors';
-
import {
CONFIG_FETCH,
EDIT_SETTINGS,
@@ -18,7 +16,6 @@ import {
SPECIFIC_DATABASE_FETCH,
DATABASE_EDIT,
} from './constants';
-
import {
configFetchSucceded,
databasesFetchSucceeded,
@@ -121,10 +118,10 @@ export function* fetchDatabases(action) {
const requestUrlListDatabases = `/settings-manager/configurations/databases/${action.environment}`;
const requestUrlAppDatabases = '/settings-manager/configurations/database/model';
- const [listDatabasesData, appDatabaseData] = yield [
+ const [listDatabasesData, appDatabaseData] = yield all([
call(request, requestUrlListDatabases, opts),
call(request, requestUrlAppDatabases, opts),
- ];
+ ]);
yield put(databasesFetchSucceeded(listDatabasesData, appDatabaseData));
} catch(error) {
strapi.notification.error('settings-manager.strapi.notification.error');
@@ -139,10 +136,10 @@ export function* fetchLanguages() {
const requestUrlAppLanguages = '/settings-manager/configurations/languages';
const requestUrlListLanguages = '/settings-manager/configurations/i18n';
- const [appLanguagesData, listLanguagesData] = yield [
+ const [appLanguagesData, listLanguagesData] = yield all([
call(request, requestUrlAppLanguages, opts),
call(request, requestUrlListLanguages, opts),
- ];
+ ]);
yield put(languagesFetchSucceeded(appLanguagesData, listLanguagesData));
} catch(error) {
strapi.notification.error('settings-manager.strapi.notification.error');
diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/de.json b/packages/strapi-plugin-settings-manager/admin/src/translations/de.json
index 812acb1445..07203c3e1f 100644
--- a/packages/strapi-plugin-settings-manager/admin/src/translations/de.json
+++ b/packages/strapi-plugin-settings-manager/admin/src/translations/de.json
@@ -596,7 +596,7 @@
"menu.item.server": "Server",
"menu.section.environments": "Umgebungen",
"menu.section.global-settings": "Systemweite Einstellungen",
- "pageNotFound": "Page not found",
+ "pageNotFound": "Seite nicht gefunden",
"plugin.description.long": "Passe dein Projekt in Sekundenschnelle an.",
"plugin.description.short": "Passe dein Projekt in Sekundenschnelle an.",
"popUpWarning.danger.ok.message": "Ich stimme zu",
diff --git a/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json b/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json
new file mode 100644
index 0000000000..4982111786
--- /dev/null
+++ b/packages/strapi-plugin-settings-manager/admin/src/translations/ja.json
@@ -0,0 +1,635 @@
+{
+ "components.DownloadDb.download": "インストールの進行中...",
+ "components.DownloadDb.text": "これには1〜2分かかります。お待ち頂きまして、ありがとうございます。",
+ "form.advanced.description": "詳細設定を構成します。",
+ "form.advanced.item.admin": "ダッシュボードのURL",
+ "form.advanced.item.prefix": "Prefix API",
+ "form.advanced.name": "Advanced",
+ "form.application.description": "アプリケーション設定を構成します",
+ "form.application.item.description": "説明文",
+ "form.application.item.name": "名前",
+ "form.application.item.version": "バージョン",
+ "form.application.name": "アプリケーション",
+ "form.button.cancel": "キャンセル",
+ "form.button.confirm": "確認",
+ "form.button.save": "保存",
+ "form.database.item.authenticationDatabase": "認証データベース",
+ "form.database.item.client": "クライアント",
+ "form.database.item.connector": "コネクタ",
+ "form.database.item.database": "データベース",
+ "form.database.item.default": "デフォルト接続として設定する",
+ "form.database.item.host": "ホスト",
+ "form.database.item.name": "接続名",
+ "form.database.item.password": "パスワード",
+ "form.database.item.port": "ポート",
+ "form.database.item.provider.mongo": "Mongo",
+ "form.database.item.provider.mysql": "MySQL",
+ "form.database.item.provider.postgres": "PostgresSQL",
+ "form.database.item.provider.redis": "Redis",
+ "form.database.item.ssl": "SSL",
+ "form.database.item.username": "Username",
+ "form.databases.description": "環境ごとにデータベース設定を構成します",
+ "form.databases.name": "データベース",
+ "form.language.choose": "言語を選択してください:",
+ "form.language.description": "言語を設定します",
+ "form.language.name": "言語",
+ "form.request.description": "リクエスト設定を構成する",
+ "form.request.item.logger": "Logger",
+ "form.request.item.logger.exposeInContext": "Expose in context",
+ "form.request.item.logger.level": "Level",
+ "form.request.item.logger.requests": "Requests",
+ "form.request.item.parser": "Parser",
+ "form.request.item.parser.multipart": "Parser Multipart",
+ "form.request.item.prefix": "Prefix",
+ "form.request.item.prefix.prefix": "Prefix",
+ "form.request.item.router": "Router",
+ "form.request.item.router.prefix": "Prefix",
+ "form.request.name": "リクエスト",
+ "form.response.description": "レスポンス設定を構成します。",
+ "form.response.item.gzip.enabled": "Gzip",
+ "form.response.item.responseTime.enabled": "Response Time",
+ "form.response.name": "レスポンス",
+ "form.security.description": "セキュリティ設定を構成します。",
+ "form.security.item.cors": "Cors",
+ "form.security.item.cors.origin": "Origin",
+ "form.security.item.csrf": "CSRF",
+ "form.security.item.csrf.angular": "Angular",
+ "form.security.item.csrf.cookie": "Cookie",
+ "form.security.item.csrf.key": "Key",
+ "form.security.item.csrf.secret": "Secret",
+ "form.security.item.hsts": "HOSTS",
+ "form.security.item.hsts.includeSubDomains": "サブドメインを含める",
+ "form.security.item.hsts.maxAge": "Max Age",
+ "form.security.item.hsts.preload": "Preload",
+ "form.security.item.p3p": "P3P",
+ "form.security.item.p3p.value": "Value",
+ "form.security.item.session": "Session",
+ "form.security.item.session.key": "Secret key",
+ "form.security.item.session.maxAge": "Maximum age",
+ "form.security.item.xframe": "Xframe",
+ "form.security.item.xframe.allow-from": "ALLOW-FROM",
+ "form.security.item.xframe.deny": "DENY",
+ "form.security.item.xframe.sameorigin": "SAMEORIGIN",
+ "form.security.item.xframe.value": "Options",
+ "form.security.item.xssProtection": "xss Protection",
+ "form.security.item.xssProtection.mode": "モード",
+ "form.security.name": "セキュリティ",
+ "form.server.description": "サーバー設定を構成します",
+ "form.server.item.cron": "Cron",
+ "form.server.item.host": "Host",
+ "form.server.item.port": "Port",
+ "form.server.item.proxy": "Proxy 設定",
+ "form.server.item.proxy.enable": "Proxy 有効化",
+ "form.server.item.proxy.host": "Proxy Host",
+ "form.server.item.proxy.port": "Proxy Port",
+ "form.server.item.proxy.ssl": "Proxy SSL",
+ "form.server.name": "サーバー",
+ "language.af": "Afrikaans",
+ "language.af_NA": "Afrikaans (Namibië)",
+ "language.af_ZA": "Afrikaans (Suid-Afrika)",
+ "language.agq": "Aghem",
+ "language.agq_CM": "Aghem (Kàmàlûŋ)",
+ "language.ak": "Akan",
+ "language.ak_GH": "Akan (Gaana)",
+ "language.am": "አማርኛ",
+ "language.am_ET": "አማርኛ (ኢትዮጵያ)",
+ "language.ar": "العربية",
+ "language.ar_001": "العربية (العالم)",
+ "language.ar_AE": "العربية (الإمارات العربية المتحدة)",
+ "language.ar_BH": "العربية (البحرين)",
+ "language.ar_DZ": "العربية (الجزائر)",
+ "language.ar_EG": "العربية (مصر)",
+ "language.ar_IQ": "العربية (العراق)",
+ "language.ar_JO": "العربية (الأردن)",
+ "language.ar_KW": "العربية (الكويت)",
+ "language.ar_LB": "العربية (لبنان)",
+ "language.ar_LY": "العربية (ليبيا)",
+ "language.ar_MA": "العربية (المغرب)",
+ "language.ar_OM": "العربية (عُمان)",
+ "language.ar_QA": "العربية (قطر)",
+ "language.ar_SA": "العربية (المملكة العربية السعودية)",
+ "language.ar_SD": "العربية (السودان)",
+ "language.ar_SY": "العربية (سوريا)",
+ "language.ar_TN": "العربية (تونس)",
+ "language.ar_YE": "العربية (اليمن)",
+ "language.as": "অসমীয়া",
+ "language.as_IN": "অসমীয়া (ভাৰত)",
+ "language.asa": "Kipare",
+ "language.asa_TZ": "Kipare (Tadhania)",
+ "language.az": "azərbaycanca",
+ "language.az_Cyrl": "Азәрбајҹан (kiril)",
+ "language.az_Cyrl_AZ": "Азәрбајҹан (kiril, Азәрбајҹан)",
+ "language.az_Latn": "azərbaycanca (latın)",
+ "language.az_Latn_AZ": "azərbaycanca (latın, Azərbaycan)",
+ "language.bas": "Ɓàsàa",
+ "language.bas_CM": "Ɓàsàa (Kàmɛ̀rûn)",
+ "language.be": "беларуская",
+ "language.be_BY": "беларуская (Беларусь)",
+ "language.bem": "Ichibemba",
+ "language.bem_ZM": "Ichibemba (Zambia)",
+ "language.bez": "Hibena",
+ "language.bez_TZ": "Hibena (Hutanzania)",
+ "language.bg": "български",
+ "language.bg_BG": "български (България)",
+ "language.bm": "bamanakan",
+ "language.bm_ML": "bamanakan (Mali)",
+ "language.bn": "বাংলা",
+ "language.bn_BD": "বাংলা (বাংলাদেশ)",
+ "language.bn_IN": "বাংলা (ভারত)",
+ "language.bo": "པོད་སྐད་",
+ "language.bo_CN": "པོད་སྐད་ (རྒྱ་ནག)",
+ "language.bo_IN": "པོད་སྐད་ (རྒྱ་གར་)",
+ "language.br": "brezhoneg",
+ "language.br_FR": "brezhoneg (Frañs)",
+ "language.brx": "बड़ो",
+ "language.brx_IN": "बड़ो (भारत)",
+ "language.bs": "bosanski",
+ "language.bs_BA": "bosanski (Bosna i Hercegovina)",
+ "language.ca": "català",
+ "language.ca_ES": "català (Espanya)",
+ "language.cgg": "Rukiga",
+ "language.cgg_UG": "Rukiga (Uganda)",
+ "language.chr": "ᏣᎳᎩ",
+ "language.chr_US": "ᏣᎳᎩ (ᎠᎹᏰᏟ)",
+ "language.cs": "čeština",
+ "language.cs_CZ": "čeština (Česká republika)",
+ "language.cy": "Cymraeg",
+ "language.cy_GB": "Cymraeg (Prydain Fawr)",
+ "language.da": "dansk",
+ "language.da_DK": "dansk (Danmark)",
+ "language.dav": "Kitaita",
+ "language.dav_KE": "Kitaita (Kenya)",
+ "language.de": "Deutsch",
+ "language.de_AT": "Deutsch (Österreich)",
+ "language.de_BE": "Deutsch (Belgien)",
+ "language.de_CH": "Deutsch (Schweiz)",
+ "language.de_DE": "Deutsch (Deutschland)",
+ "language.de_LI": "Deutsch (Liechtenstein)",
+ "language.de_LU": "Deutsch (Luxemburg)",
+ "language.dje": "Zarmaciine",
+ "language.dje_NE": "Zarmaciine (Nižer)",
+ "language.dua": "duálá",
+ "language.dua_CM": "duálá (Cameroun)",
+ "language.dyo": "joola",
+ "language.dyo_SN": "joola (Senegal)",
+ "language.ebu": "Kĩembu",
+ "language.ebu_KE": "Kĩembu (Kenya)",
+ "language.ee": "eʋegbe",
+ "language.ee_GH": "eʋegbe (Ghana nutome)",
+ "language.ee_TG": "eʋegbe (Togo nutome)",
+ "language.el": "Ελληνικά",
+ "language.el_CY": "Ελληνικά (Κύπρος)",
+ "language.el_GR": "Ελληνικά (Ελλάδα)",
+ "language.en": "English",
+ "language.en_AS": "English (American Samoa)",
+ "language.en_AU": "English (Australia)",
+ "language.en_BB": "English (Barbados)",
+ "language.en_BE": "English (Belgium)",
+ "language.en_BM": "English (Bermuda)",
+ "language.en_BW": "English (Botswana)",
+ "language.en_BZ": "English (Belize)",
+ "language.en_CA": "English (Canada)",
+ "language.en_GB": "English (United Kingdom)",
+ "language.en_GU": "English (Guam)",
+ "language.en_GY": "English (Guyana)",
+ "language.en_HK": "English (Hong Kong SAR China)",
+ "language.en_IE": "English (Ireland)",
+ "language.en_IN": "English (India)",
+ "language.en_JM": "English (Jamaica)",
+ "language.en_MH": "English (Marshall Islands)",
+ "language.en_MP": "English (Northern Mariana Islands)",
+ "language.en_MT": "English (Malta)",
+ "language.en_MU": "English (Mauritius)",
+ "language.en_NA": "English (Namibia)",
+ "language.en_NZ": "English (New Zealand)",
+ "language.en_PH": "English (Philippines)",
+ "language.en_PK": "English (Pakistan)",
+ "language.en_SG": "English (Singapore)",
+ "language.en_TT": "English (Trinidad and Tobago)",
+ "language.en_UM": "English (U.S. Minor Outlying Islands)",
+ "language.en_US": "English (United States)",
+ "language.en_US_POSIX": "English (United States, Computer)",
+ "language.en_VI": "English (U.S. Virgin Islands)",
+ "language.en_ZA": "English (South Africa)",
+ "language.en_ZW": "English (Zimbabwe)",
+ "language.eo": "esperanto",
+ "language.es": "español",
+ "language.es_419": "español (Latinoamérica)",
+ "language.es_AR": "español (Argentina)",
+ "language.es_BO": "español (Bolivia)",
+ "language.es_CL": "español (Chile)",
+ "language.es_CO": "español (Colombia)",
+ "language.es_CR": "español (Costa Rica)",
+ "language.es_DO": "español (República Dominicana)",
+ "language.es_EC": "español (Ecuador)",
+ "language.es_ES": "español (España)",
+ "language.es_GQ": "español (Guinea Ecuatorial)",
+ "language.es_GT": "español (Guatemala)",
+ "language.es_HN": "español (Honduras)",
+ "language.es_MX": "español (México)",
+ "language.es_NI": "español (Nicaragua)",
+ "language.es_PA": "español (Panamá)",
+ "language.es_PE": "español (Perú)",
+ "language.es_PR": "español (Puerto Rico)",
+ "language.es_PY": "español (Paraguay)",
+ "language.es_SV": "español (El Salvador)",
+ "language.es_US": "español (Estados Unidos)",
+ "language.es_UY": "español (Uruguay)",
+ "language.es_VE": "español (Venezuela)",
+ "language.et": "eesti",
+ "language.et_EE": "eesti (Eesti)",
+ "language.eu": "euskara",
+ "language.eu_ES": "euskara (Espainia)",
+ "language.ewo": "ewondo",
+ "language.ewo_CM": "ewondo (Kamǝrún)",
+ "language.fa": "فارسی",
+ "language.fa_AF": "دری (افغانستان)",
+ "language.fa_IR": "فارسی (ایران)",
+ "language.ff": "Pulaar",
+ "language.ff_SN": "Pulaar (Senegaal)",
+ "language.fi": "suomi",
+ "language.fi_FI": "suomi (Suomi)",
+ "language.fil": "Filipino",
+ "language.fil_PH": "Filipino (Pilipinas)",
+ "language.fo": "føroyskt",
+ "language.fo_FO": "føroyskt (Føroyar)",
+ "language.fr": "français",
+ "language.fr_BE": "français (Belgique)",
+ "language.fr_BF": "français (Burkina Faso)",
+ "language.fr_BI": "français (Burundi)",
+ "language.fr_BJ": "français (Bénin)",
+ "language.fr_BL": "français (Saint-Barthélémy)",
+ "language.fr_CA": "français (Canada)",
+ "language.fr_CD": "français (République démocratique du Congo)",
+ "language.fr_CF": "français (République centrafricaine)",
+ "language.fr_CG": "français (Congo-Brazzaville)",
+ "language.fr_CH": "français (Suisse)",
+ "language.fr_CI": "français (Côte d’Ivoire)",
+ "language.fr_CM": "français (Cameroun)",
+ "language.fr_DJ": "français (Djibouti)",
+ "language.fr_FR": "français (France)",
+ "language.fr_GA": "français (Gabon)",
+ "language.fr_GF": "français (Guyane française)",
+ "language.fr_GN": "français (Guinée)",
+ "language.fr_GP": "français (Guadeloupe)",
+ "language.fr_GQ": "français (Guinée équatoriale)",
+ "language.fr_KM": "français (Comores)",
+ "language.fr_LU": "français (Luxembourg)",
+ "language.fr_MC": "français (Monaco)",
+ "language.fr_MF": "français (Saint-Martin)",
+ "language.fr_MG": "français (Madagascar)",
+ "language.fr_ML": "français (Mali)",
+ "language.fr_MQ": "français (Martinique)",
+ "language.fr_NE": "français (Niger)",
+ "language.fr_RE": "français (Réunion)",
+ "language.fr_RW": "français (Rwanda)",
+ "language.fr_SN": "français (Sénégal)",
+ "language.fr_TD": "français (Tchad)",
+ "language.fr_TG": "français (Togo)",
+ "language.fr_YT": "français (Mayotte)",
+ "language.ga": "Gaeilge",
+ "language.ga_IE": "Gaeilge (Éire)",
+ "language.gl": "galego",
+ "language.gl_ES": "galego (España)",
+ "language.gsw": "Schwiizertüütsch",
+ "language.gsw_CH": "Schwiizertüütsch (Schwiiz)",
+ "language.gu": "ગુજરાતી",
+ "language.gu_IN": "ગુજરાતી (ભારત)",
+ "language.guz": "Ekegusii",
+ "language.guz_KE": "Ekegusii (Kenya)",
+ "language.gv": "Gaelg",
+ "language.gv_GB": "Gaelg (Rywvaneth Unys)",
+ "language.ha": "Hausa",
+ "language.ha_Latn": "Hausa (Latn)",
+ "language.ha_Latn_GH": "Hausa (Latn, Gana)",
+ "language.ha_Latn_NE": "Hausa (Latn, Nijar)",
+ "language.ha_Latn_NG": "Hausa (Latn, Najeriya)",
+ "language.haw": "ʻŌlelo Hawaiʻi",
+ "language.haw_US": "ʻŌlelo Hawaiʻi (ʻAmelika Hui Pū ʻIa)",
+ "language.he": "עברית",
+ "language.he_IL": "עברית (ישראל)",
+ "language.hi": "हिन्दी",
+ "language.hi_IN": "हिन्दी (भारत)",
+ "language.hr": "hrvatski",
+ "language.hr_HR": "hrvatski (Hrvatska)",
+ "language.hu": "magyar",
+ "language.hu_HU": "magyar (Magyarország)",
+ "language.hy": "Հայերէն",
+ "language.hy_AM": "Հայերէն (Հայաստանի Հանրապետութիւն)",
+ "language.id": "Bahasa Indonesia",
+ "language.id_ID": "Bahasa Indonesia (Indonesia)",
+ "language.ig": "Igbo",
+ "language.ig_NG": "Igbo (Nigeria)",
+ "language.ii": "ꆈꌠꉙ",
+ "language.ii_CN": "ꆈꌠꉙ (ꍏꇩ)",
+ "language.is": "íslenska",
+ "language.is_IS": "íslenska (Ísland)",
+ "language.it": "italiano",
+ "language.it_CH": "italiano (Svizzera)",
+ "language.it_IT": "italiano (Italia)",
+ "language.ja": "日本語",
+ "language.ja_JP": "日本語(日本)",
+ "language.jmc": "Kimachame",
+ "language.jmc_TZ": "Kimachame (Tanzania)",
+ "language.ka": "ქართული",
+ "language.ka_GE": "ქართული (საქართველო)",
+ "language.kab": "Taqbaylit",
+ "language.kab_DZ": "Taqbaylit (Lezzayer)",
+ "language.kam": "Kikamba",
+ "language.kam_KE": "Kikamba (Kenya)",
+ "language.kde": "Chimakonde",
+ "language.kde_TZ": "Chimakonde (Tanzania)",
+ "language.kea": "kabuverdianu",
+ "language.kea_CV": "kabuverdianu (Kabu Verdi)",
+ "language.khq": "Koyra ciini",
+ "language.khq_ML": "Koyra ciini (Maali)",
+ "language.ki": "Gikuyu",
+ "language.ki_KE": "Gikuyu (Kenya)",
+ "language.kk": "қазақ тілі",
+ "language.kk_Cyrl": "қазақ тілі (кириллица)",
+ "language.kk_Cyrl_KZ": "қазақ тілі (кириллица, Қазақстан)",
+ "language.kl": "kalaallisut",
+ "language.kl_GL": "kalaallisut (Kalaallit Nunaat)",
+ "language.kln": "Kalenjin",
+ "language.kln_KE": "Kalenjin (Emetab Kenya)",
+ "language.km": "ភាសាខ្មែរ",
+ "language.km_KH": "ភាសាខ្មែរ (កម្ពុជា)",
+ "language.kn": "ಕನ್ನಡ",
+ "language.kn_IN": "ಕನ್ನಡ (ಭಾರತ)",
+ "language.ko": "한국어",
+ "language.ko_KR": "한국어(대한민국)",
+ "language.kok": "कोंकणी",
+ "language.kok_IN": "कोंकणी (भारत)",
+ "language.ksb": "Kishambaa",
+ "language.ksb_TZ": "Kishambaa (Tanzania)",
+ "language.ksf": "rikpa",
+ "language.ksf_CM": "rikpa (kamɛrún)",
+ "language.kw": "kernewek",
+ "language.kw_GB": "kernewek (Rywvaneth Unys)",
+ "language.lag": "Kɨlaangi",
+ "language.lag_TZ": "Kɨlaangi (Taansanía)",
+ "language.lg": "Luganda",
+ "language.lg_UG": "Luganda (Yuganda)",
+ "language.ln": "lingála",
+ "language.ln_CD": "lingála (Repibiki demokratiki ya Kongó)",
+ "language.ln_CG": "lingála (Kongo)",
+ "language.lt": "lietuvių",
+ "language.lt_LT": "lietuvių (Lietuva)",
+ "language.lu": "Tshiluba",
+ "language.lu_CD": "Tshiluba (Ditunga wa Kongu)",
+ "language.luo": "Dholuo",
+ "language.luo_KE": "Dholuo (Kenya)",
+ "language.luy": "Luluhia",
+ "language.luy_KE": "Luluhia (Kenya)",
+ "language.lv": "latviešu",
+ "language.lv_LV": "latviešu (Latvija)",
+ "language.mas": "Maa",
+ "language.mas_KE": "Maa (Kenya)",
+ "language.mas_TZ": "Maa (Tansania)",
+ "language.mer": "Kĩmĩrũ",
+ "language.mer_KE": "Kĩmĩrũ (Kenya)",
+ "language.mfe": "kreol morisien",
+ "language.mfe_MU": "kreol morisien (Moris)",
+ "language.mg": "Malagasy",
+ "language.mg_MG": "Malagasy (Madagasikara)",
+ "language.mgh": "Makua",
+ "language.mgh_MZ": "Makua (Umozambiki)",
+ "language.mk": "македонски",
+ "language.mk_MK": "македонски (Македонија)",
+ "language.ml": "മലയാളം",
+ "language.ml_IN": "മലയാളം (ഇന്ത്യ)",
+ "language.mr": "मराठी",
+ "language.mr_IN": "मराठी (भारत)",
+ "language.ms": "Bahasa Melayu",
+ "language.ms_BN": "Bahasa Melayu (Brunei)",
+ "language.ms_MY": "Bahasa Melayu (Malaysia)",
+ "language.mt": "Malti",
+ "language.mt_MT": "Malti (Malta)",
+ "language.mua": "MUNDAŊ",
+ "language.mua_CM": "MUNDAŊ (kameruŋ)",
+ "language.my": "ဗမာ",
+ "language.my_MM": "ဗမာ (မြန်မာ)",
+ "language.naq": "Khoekhoegowab",
+ "language.naq_NA": "Khoekhoegowab (Namibiab)",
+ "language.nb": "norsk bokmål",
+ "language.nb_NO": "norsk bokmål (Norge)",
+ "language.nd": "isiNdebele",
+ "language.nd_ZW": "isiNdebele (Zimbabwe)",
+ "language.ne": "नेपाली",
+ "language.ne_IN": "नेपाली (भारत)",
+ "language.ne_NP": "नेपाली (नेपाल)",
+ "language.nl": "Nederlands",
+ "language.nl_AW": "Nederlands (Aruba)",
+ "language.nl_BE": "Nederlands (België)",
+ "language.nl_CW": "Nederlands (Curaçao)",
+ "language.nl_NL": "Nederlands (Nederland)",
+ "language.nl_SX": "Nederlands (Sint Maarten)",
+ "language.nmg": "nmg",
+ "language.nmg_CM": "nmg (Kamerun)",
+ "language.nn": "nynorsk",
+ "language.nn_NO": "nynorsk (Noreg)",
+ "language.nus": "Thok Nath",
+ "language.nus_SD": "Thok Nath (Sudan)",
+ "language.nyn": "Runyankore",
+ "language.nyn_UG": "Runyankore (Uganda)",
+ "language.om": "Oromoo",
+ "language.om_ET": "Oromoo (Itoophiyaa)",
+ "language.om_KE": "Oromoo (Keeniyaa)",
+ "language.or": "ଓଡ଼ିଆ",
+ "language.or_IN": "ଓଡ଼ିଆ (ଭାରତ)",
+ "language.pa": "ਪੰਜਾਬੀ",
+ "language.pa_Arab": "پنجاب (العربية)",
+ "language.pa_Arab_PK": "پنجاب (العربية, پکستان)",
+ "language.pa_Guru": "ਪੰਜਾਬੀ (Guru)",
+ "language.pa_Guru_IN": "ਪੰਜਾਬੀ (Guru, ਭਾਰਤ)",
+ "language.pl": "polski",
+ "language.pl_PL": "polski (Polska)",
+ "language.ps": "پښتو",
+ "language.ps_AF": "پښتو (افغانستان)",
+ "language.pt": "português",
+ "language.pt_AO": "português (Angola)",
+ "language.pt_BR": "português (Brasil)",
+ "language.pt_GW": "português (Guiné Bissau)",
+ "language.pt_MZ": "português (Moçambique)",
+ "language.pt_PT": "português (Portugal)",
+ "language.pt_ST": "português (São Tomé e Príncipe)",
+ "language.rm": "rumantsch",
+ "language.rm_CH": "rumantsch (Svizra)",
+ "language.rn": "Ikirundi",
+ "language.rn_BI": "Ikirundi (Uburundi)",
+ "language.ro": "română",
+ "language.ro_MD": "română (Republica Moldova)",
+ "language.ro_RO": "română (România)",
+ "language.rof": "Kihorombo",
+ "language.rof_TZ": "Kihorombo (Tanzania)",
+ "language.ru": "русский",
+ "language.ru_MD": "русский (Молдова)",
+ "language.ru_RU": "русский (Россия)",
+ "language.ru_UA": "русский (Украина)",
+ "language.rw": "Kinyarwanda",
+ "language.rw_RW": "Kinyarwanda (Rwanda)",
+ "language.rwk": "Kiruwa",
+ "language.rwk_TZ": "Kiruwa (Tanzania)",
+ "language.saq": "Kisampur",
+ "language.saq_KE": "Kisampur (Kenya)",
+ "language.sbp": "Ishisangu",
+ "language.sbp_TZ": "Ishisangu (Tansaniya)",
+ "language.seh": "sena",
+ "language.seh_MZ": "sena (Moçambique)",
+ "language.ses": "Koyraboro senni",
+ "language.ses_ML": "Koyraboro senni (Maali)",
+ "language.sg": "Sängö",
+ "language.sg_CF": "Sängö (Ködörösêse tî Bêafrîka)",
+ "language.shi": "tamazight",
+ "language.shi_Latn": "tamazight (Latn)",
+ "language.shi_Latn_MA": "tamazight (Latn, lmɣrib)",
+ "language.shi_Tfng": "ⵜⴰⵎⴰⵣⵉⵖⵜ (Tfng)",
+ "language.shi_Tfng_MA": "ⵜⴰⵎⴰⵣⵉⵖⵜ (Tfng, ⵍⵎⵖⵔⵉⴱ)",
+ "language.si": "සිංහල",
+ "language.si_LK": "සිංහල (ශ්රී ලංකාව)",
+ "language.sk": "slovenčina",
+ "language.sk_SK": "slovenčina (Slovenská republika)",
+ "language.sl": "slovenščina",
+ "language.sl_SI": "slovenščina (Slovenija)",
+ "language.sn": "chiShona",
+ "language.sn_ZW": "chiShona (Zimbabwe)",
+ "language.so": "Soomaali",
+ "language.so_DJ": "Soomaali (Jabuuti)",
+ "language.so_ET": "Soomaali (Itoobiya)",
+ "language.so_KE": "Soomaali (Kiiniya)",
+ "language.so_SO": "Soomaali (Soomaaliya)",
+ "language.sq": "shqip",
+ "language.sq_AL": "shqip (Shqipëria)",
+ "language.sr": "Српски",
+ "language.sr_Cyrl": "Српски (Ћирилица)",
+ "language.sr_Cyrl_BA": "Српски (Ћирилица, Босна и Херцеговина)",
+ "language.sr_Cyrl_ME": "Српски (Ћирилица, Црна Гора)",
+ "language.sr_Cyrl_RS": "Српски (Ћирилица, Србија)",
+ "language.sr_Latn": "Srpski (Latinica)",
+ "language.sr_Latn_BA": "Srpski (Latinica, Bosna i Hercegovina)",
+ "language.sr_Latn_ME": "Srpski (Latinica, Crna Gora)",
+ "language.sr_Latn_RS": "Srpski (Latinica, Srbija)",
+ "language.sv": "svenska",
+ "language.sv_FI": "svenska (Finland)",
+ "language.sv_SE": "svenska (Sverige)",
+ "language.sw": "Kiswahili",
+ "language.sw_KE": "Kiswahili (Kenya)",
+ "language.sw_TZ": "Kiswahili (Tanzania)",
+ "language.swc": "Kiswahili ya Kongo",
+ "language.swc_CD": "Kiswahili ya Kongo (Jamhuri ya Kidemokrasia ya Kongo)",
+ "language.ta": "தமிழ்",
+ "language.ta_IN": "தமிழ் (இந்தியா)",
+ "language.ta_LK": "தமிழ் (இலங்கை)",
+ "language.te": "తెలుగు",
+ "language.te_IN": "తెలుగు (భారత దేశం)",
+ "language.teo": "Kiteso",
+ "language.teo_KE": "Kiteso (Kenia)",
+ "language.teo_UG": "Kiteso (Uganda)",
+ "language.th": "ไทย",
+ "language.th_TH": "ไทย (ไทย)",
+ "language.ti": "ትግርኛ",
+ "language.ti_ER": "ትግርኛ (ER)",
+ "language.ti_ET": "ትግርኛ (ET)",
+ "language.to": "lea fakatonga",
+ "language.to_TO": "lea fakatonga (Tonga)",
+ "language.tr": "Türkçe",
+ "language.tr_TR": "Türkçe (Türkiye)",
+ "language.twq": "Tasawaq senni",
+ "language.twq_NE": "Tasawaq senni (Nižer)",
+ "language.tzm": "Tamaziɣt",
+ "language.tzm_Latn": "Tamaziɣt (Latn)",
+ "language.tzm_Latn_MA": "Tamaziɣt (Latn, Meṛṛuk)",
+ "language.uk": "українська",
+ "language.uk_UA": "українська (Україна)",
+ "language.ur": "اردو",
+ "language.ur_IN": "اردو (بھارت)",
+ "language.ur_PK": "اردو (پاکستان)",
+ "language.uz": "Ўзбек",
+ "language.uz_Arab": "اۉزبېک (Arab)",
+ "language.uz_Arab_AF": "اۉزبېک (Arab, افغانستان)",
+ "language.uz_Cyrl": "Ўзбек (Cyrl)",
+ "language.uz_Cyrl_UZ": "Ўзбек (Cyrl, Ўзбекистон)",
+ "language.uz_Latn": "oʼzbekcha (Lotin)",
+ "language.uz_Latn_UZ": "oʼzbekcha (Lotin, Oʼzbekiston)",
+ "language.vai": "ꕙꔤ",
+ "language.vai_Latn": "Vai (Latn)",
+ "language.vai_Latn_LR": "Vai (Latn, Laibhiya)",
+ "language.vai_Vaii": "ꕙꔤ (Vaii)",
+ "language.vai_Vaii_LR": "ꕙꔤ (Vaii, ꕞꔤꔫꕩ)",
+ "language.vi": "Tiếng Việt",
+ "language.vi_VN": "Tiếng Việt (Việt Nam)",
+ "language.vun": "Kyivunjo",
+ "language.vun_TZ": "Kyivunjo (Tanzania)",
+ "language.xog": "Olusoga",
+ "language.xog_UG": "Olusoga (Yuganda)",
+ "language.yav": "nuasue",
+ "language.yav_CM": "nuasue (Kemelún)",
+ "language.yo": "Èdè Yorùbá",
+ "language.yo_NG": "Èdè Yorùbá (Orílẹ́ède Nàìjíríà)",
+ "language.zh": "中文",
+ "language.zh_Hans": "中文(简体中文)",
+ "language.zh_Hans_CN": "中文(简体中文、中国)",
+ "language.zh_Hans_HK": "中文(简体中文、中国香港特别行政区)",
+ "language.zh_Hans_MO": "中文(简体中文、中国澳门特别行政区)",
+ "language.zh_Hans_SG": "中文(简体中文、新加坡)",
+ "language.zh_Hant": "中文(繁體中文)",
+ "language.zh_Hant_HK": "中文(繁體中文,中華人民共和國香港特別行政區)",
+ "language.zh_Hant_MO": "中文(繁體中文,中華人民共和國澳門特別行政區)",
+ "language.zh_Hant_TW": "中文(繁體中文,台灣)",
+ "language.zu": "isiZulu",
+ "language.zu_ZA": "isiZulu (iNingizimu Afrika)",
+ "list.databases.button.label": "新しいコネクションを追加する",
+ "list.databases.title.plural": "個の環境での接続",
+ "list.databases.title.singular": "個の環境での接続",
+ "list.languages.button.label": "新しい言語を追加する",
+ "list.languages.default.languages": "デフォルト言語",
+ "list.languages.set.languages": "デフォルトとして設定",
+ "list.languages.title.plural": "個の言語は利用可能です",
+ "list.languages.title.singular": "個の言語は利用可能です",
+ "menu.item.advanced": "高度",
+ "menu.item.application": "アプリケーション",
+ "menu.item.database": "データベース",
+ "menu.item.languages": "言語",
+ "menu.item.request": "リクエスト",
+ "menu.item.response": "レスポンス",
+ "menu.item.security": "セキュリティ",
+ "menu.item.server": "サーバー",
+ "menu.section.environments": "環境",
+ "menu.section.global-settings": "全体設定",
+ "pageNotFound": "ページが見つかりません",
+ "plugin.description.long": "プロジェクトを設定する",
+ "plugin.description.short": "プロジェクトを設定する",
+ "popUpWarning.danger.ok.message": "理解しました",
+ "popUpWarning.databases.danger.message": "コンテンツタイプはまだこの接続にリンクされています。これを削除すると、アプリに重大な問題が発生する可能性があります。注意してください...",
+ "popUpWarning.databases.delete.message": "本当にこのデータベースを削除しますか?",
+ "popUpWarning.languages.delete.message": "本当にこの言語を削除しますか?",
+ "popUpWarning.title": "確認してください",
+ "request.error.config": "設定ファイルが存在しません。",
+ "request.error.database.exist": "この接続はすでに存在しています",
+ "request.error.database.unknow": "そのような接続はありません",
+ "request.error.environment.required": "環境が必要です。",
+ "request.error.environment.unknow": "環境は不明です。",
+ "request.error.languages.exist": "この言語は既に存在します。",
+ "request.error.languages.incorrect": "この言語は正しくありません。",
+ "request.error.languages.unknow": "この言語は存在しません。",
+ "request.error.type.boolean": "ブール値が必要です。",
+ "request.error.type.number": "数値が必要です。",
+ "request.error.type.select": "値は事前定義されたリストにある必要があります。",
+ "request.error.type.string": "テキストが必要です。",
+ "request.error.validation.max": "値が高すぎます。",
+ "request.error.validation.maxLength": "値が長すぎます。",
+ "request.error.validation.min": "値が低すぎます。",
+ "request.error.validation.minLength": "値が大きすぎます。",
+ "request.error.validation.regex": "値が正規表現と一致しません。",
+ "request.error.validation.required": "この値の入力は必須です。",
+ "strapi.notification.error": "エラーが発生しました。",
+ "strapi.notification.info.serverRestart": "サーバーが再起動します。",
+ "strapi.notification.info.settingsEqual": "Settings are equals",
+ "strapi.notification.success.databaseAdd": "データベースが正常に追加されました。",
+ "strapi.notification.success.databaseDelete": "データベースは正常に削除されました。",
+ "strapi.notification.success.databaseDeleted": "データベースが削除されました。",
+ "strapi.notification.success.databaseEdit": "データベース設定が正常に更新されました。",
+ "strapi.notification.success.languageAdd": "言語が正常に追加されました。",
+ "strapi.notification.success.languageDelete": "言語は正常に削除されました。",
+ "strapi.notification.success.settingsEdit": "設定が正常に更新されました。"
+}
diff --git a/packages/strapi-plugin-settings-manager/package.json b/packages/strapi-plugin-settings-manager/package.json
index 996a012ed5..81d670c3c5 100644
--- a/packages/strapi-plugin-settings-manager/package.json
+++ b/packages/strapi-plugin-settings-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-plugin-settings-manager",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "Strapi plugin to manage settings.",
"strapi": {
"name": "Settings Manager",
@@ -25,7 +25,7 @@
"devDependencies": {
"flag-icon-css": "^2.8.0",
"react-select": "^1.0.0-rc.5",
- "strapi-helper-plugin": "3.0.0-alpha.14.3"
+ "strapi-helper-plugin": "3.0.0-alpha.14.5"
},
"author": {
"name": "Strapi team",
diff --git a/packages/strapi-plugin-settings-manager/services/SettingsManager.js b/packages/strapi-plugin-settings-manager/services/SettingsManager.js
index 8821a267d3..503c94b175 100644
--- a/packages/strapi-plugin-settings-manager/services/SettingsManager.js
+++ b/packages/strapi-plugin-settings-manager/services/SettingsManager.js
@@ -936,7 +936,7 @@ module.exports = {
if (connector && !installedConnector) {
strapi.log.info(`Installing ${connector} dependency ...`);
- exec('npm', ['install', `${connector}@alpha`]);
+ exec('npm', ['install', `${connector}@${strapi.config.info.strapi}`]);
}
if (client && !installedClient) {
diff --git a/packages/strapi-plugin-upload/admin/src/containers/ConfigPage/saga.js b/packages/strapi-plugin-upload/admin/src/containers/ConfigPage/saga.js
index 49c5d05ed7..d3604a548a 100644
--- a/packages/strapi-plugin-upload/admin/src/containers/ConfigPage/saga.js
+++ b/packages/strapi-plugin-upload/admin/src/containers/ConfigPage/saga.js
@@ -1,7 +1,5 @@
-// import { LOCATION_CHANGE } from 'react-router-redux';
-import { call, fork, put, select, takeLatest } from 'redux-saga/effects';
+import { all, call, fork, put, select, takeLatest } from 'redux-saga/effects';
import request from 'utils/request';
-
import {
getSettingsSucceeded,
submitSucceeded,
@@ -18,10 +16,10 @@ import {
export function* settingsGet(action) {
try {
const requestURL = `/upload/settings/${action.env}`;
- const response = yield [
+ const response = yield all([
call(request, requestURL, { method: 'GET' }),
call(request, '/upload/environments', { method: 'GET' }),
- ];
+ ]);
yield put(getSettingsSucceeded(response[0], response[1].environments));
} catch(err) {
diff --git a/packages/strapi-plugin-upload/admin/src/containers/HomePage/saga.js b/packages/strapi-plugin-upload/admin/src/containers/HomePage/saga.js
index 7c32cb731a..cf3e24469f 100644
--- a/packages/strapi-plugin-upload/admin/src/containers/HomePage/saga.js
+++ b/packages/strapi-plugin-upload/admin/src/containers/HomePage/saga.js
@@ -1,7 +1,7 @@
import { LOCATION_CHANGE } from 'react-router-redux';
import { Map } from 'immutable';
import { isEmpty } from 'lodash';
-import { call, fork, put, select, take, takeLatest } from 'redux-saga/effects';
+import { all, call, fork, put, select, take, takeLatest } from 'redux-saga/effects';
import request from 'utils/request';
import {
@@ -44,10 +44,10 @@ function* dataGet() {
_sort: pageParams._sort,
_start,
};
- const data = yield [
+ const data = yield all([
call(request, '/upload/files', { method: 'GET', params }),
call(request, '/upload/files/count', { method: 'GET' }),
- ];
+ ]);
const entries = data[0].length === 0 ? [] : data[0].map(obj => Map(obj));
yield put(getDataSuccess(entries, data[1].count));
} catch(err) {
diff --git a/packages/strapi-plugin-upload/admin/src/translations/fr.json b/packages/strapi-plugin-upload/admin/src/translations/fr.json
index 0d0d7931ee..b0e876ab16 100644
--- a/packages/strapi-plugin-upload/admin/src/translations/fr.json
+++ b/packages/strapi-plugin-upload/admin/src/translations/fr.json
@@ -20,9 +20,9 @@
"ListHeader.updated": "Modifié",
"PluginInputFile.link": "recherchez",
"PluginInputFile.loading": "Vos fichiers sont en train d'être téléchargés...",
- "PluginInputFile.text": "Drag & drop vos fichiers dans cette zone ou {link} un fichier à télécharger",
+ "PluginInputFile.text": "Glissez-déposez vos fichiers dans cette zone ou {link} un fichier à télécharger",
"notification.config.success": "Les paramètres ont été mis à jour.",
"notification.delete.success": "Le fichier a bien été supprimé",
"notification.dropFile.success": "Votre fichier a été téléchargé",
"notification.dropFiles.success": "{number} fichiers ont été téléchargées"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-upload/admin/src/translations/ja.json b/packages/strapi-plugin-upload/admin/src/translations/ja.json
new file mode 100644
index 0000000000..df8467fc0e
--- /dev/null
+++ b/packages/strapi-plugin-upload/admin/src/translations/ja.json
@@ -0,0 +1,28 @@
+{
+ "ConfigPage.description": "アップロードプラグイン設定",
+ "ConfigPage.title": "アップロード - 設定",
+ "EditForm.Input.number.label": "許可される最大サイズ (in MB)",
+ "EditForm.Input.select.inputDescription": "ファイルは、サーバーまたは外部プロバイダーにアップロードすることができます。",
+ "EditForm.Input.select.label": "プロバイダー",
+ "EditForm.Input.toggle.label": "ファイルアップロードを有効化する",
+ "EmptyLi.message": "アップデートされたファイルはありません",
+ "EntriesNumber.number": "{number} 個のファイルがみつかりました",
+ "EntriesNumber.number.plural": "{number} 個のファイルがみつかりました",
+ "HomePage.InputSearch.placeholder": "ファイルを検索する...",
+ "HomePage.description": "アップデートされたファイルを探す",
+ "HomePage.title": "アップロード",
+ "Li.linkCopied": "リンクはクリップボードにコピーされました",
+ "ListHeader.hash": "ハッシュ",
+ "ListHeader.name": "名前",
+ "ListHeader.related": "関連する",
+ "ListHeader.size": "サイズ",
+ "ListHeader.type": "タイプ",
+ "ListHeader.updated": "アップデート",
+ "PluginInputFile.link": "ブラウズ",
+ "PluginInputFile.loading": "ファイルがアップロードされました...",
+ "PluginInputFile.text": "ファイルをこの領域にドラッグ&ドロップするか、{link}からファイルをアップロード",
+ "notification.config.success": "設定が更新されました",
+ "notification.delete.success": "ファイルが削除されました",
+ "notification.dropFile.success": "ファイルがアップロードされました",
+ "notification.dropFiles.success": "{number}個のファイルがアップロードされました"
+}
\ No newline at end of file
diff --git a/packages/strapi-plugin-upload/package.json b/packages/strapi-plugin-upload/package.json
index 7c92005331..76c576a467 100644
--- a/packages/strapi-plugin-upload/package.json
+++ b/packages/strapi-plugin-upload/package.json
@@ -1,6 +1,6 @@
{
"name": "strapi-plugin-upload",
- "version": "3.0.0-alpha.14.3",
+ "version": "3.0.0-alpha.14.5",
"description": "This is the description of the plugin.",
"strapi": {
"name": "Files Upload",
@@ -23,12 +23,12 @@
},
"dependencies": {
"react-copy-to-clipboard": "^5.0.1",
- "strapi-provider-upload-local": "3.0.0-alpha.14.3",
+ "strapi-provider-upload-local": "3.0.0-alpha.14.5",
"stream-to-array": "^2.3.0",
"uuid": "^3.2.1"
},
"devDependencies": {
- "strapi-helper-plugin": "3.0.0-alpha.14.3"
+ "strapi-helper-plugin": "3.0.0-alpha.14.5"
},
"author": {
"name": "A Strapi developer",
@@ -47,4 +47,4 @@
"npm": ">= 3.0.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js b/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js
index df4357dc3e..757283664a 100644
--- a/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js
+++ b/packages/strapi-plugin-users-permissions/admin/src/containers/AuthPage/index.js
@@ -21,6 +21,7 @@ import Button from 'components/Button';
import Input from 'components/InputsIndex';
// Utils
+import auth from 'utils/auth';
import injectSaga from 'utils/injectSaga';
import injectReducer from 'utils/injectReducer';
@@ -40,47 +41,90 @@ import styles from './styles.scss';
export class AuthPage extends React.Component { // eslint-disable-line react/prefer-stateless-function
componentDidMount() {
- const params = this.props.location.search ? replace(this.props.location.search, '?code=', '') : this.props.match.params.id;
- this.props.setForm(this.props.match.params.authType, params);
+ auth.clearAppStorage();
+ this.setForm();
}
- componentWillReceiveProps(nextProps) {
- if (this.props.match.params.authType !== nextProps.match.params.authType) {
- const params = nextProps.location.search ? replace(nextProps.location.search, '?code=', '') : nextProps.match.params.id;
- this.props.setForm(nextProps.match.params.authType, params);
- this.props.hideLoginErrorsInput(false);
+ componentDidUpdate(prevProps) {
+ const {
+ hideLoginErrorsInput,
+ match: {
+ params : {
+ authType,
+ },
+ },
+ submitSuccess,
+ } = this.props;
+
+ if (authType !== prevProps.match.params.authType) {
+ this.setForm();
+ hideLoginErrorsInput(false);
}
- if (nextProps.submitSuccess) {
- switch (this.props.match.params.authType) {
+ if (submitSuccess) {
+ switch (authType) {
case 'login':
- case 'reset-password':
- this.props.history.push('/');
+ case 'reset-password':
+ // Check if we have token to handle redirection to login or admin.
+ // Done to prevent redirection to admin after reset password if user should
+ // not have access.
+ auth.getToken()
+ ? this.redirect('/')
+ : this.redirect('/plugins/users-permissions/auth/login');
break;
case 'register':
- this.props.history.push('/');
+ this.redirect('/');
// NOTE: prepare for comfirm email;
- // this.props.history.push(`/plugins/users-permissions/auth/register-success/${this.props.modifiedData.email}`);
+ // this.redirect(`/plugins/users-permissions/auth/register-success/${this.props.modifiedData.email}`);
break;
default:
-
}
}
}
+ // Get form Errors shortcut.
+ getFormErrors = () => {
+ const { formErrors } = this.props;
+ return get(formErrors, ['0', 'errors', '0', 'id']);
+ }
+
+ setForm = () => {
+ const {
+ location: {
+ search,
+ },
+ match: {
+ params: {
+ authType,
+ id,
+ },
+ },
+ setForm,
+ } = this.props;
+ const params = search ? replace(search, '?code=', '') : id;
+
+ setForm(authType, params);
+ }
+
+ isAuthType = type => {
+ const { match: { params: { authType } } } = this.props;
+ return authType === type;
+ }
+
handleSubmit = (e) => {
+ const { modifiedData, setErrors, submit } = this.props;
e.preventDefault();
- const formErrors = Object.keys(this.props.modifiedData).reduce((acc, key) => {
- if (isEmpty(get(this.props.modifiedData, key)) && !isBoolean(get(this.props.modifiedData, key))) {
+ const formErrors = Object.keys(modifiedData).reduce((acc, key) => {
+ if (isEmpty(get(modifiedData, key)) && !isBoolean(get(modifiedData, key))) {
acc.push({ name: key, errors: [{ id: 'components.Input.error.validation.required' }] });
}
- if (!isEmpty(get(this.props.modifiedData, 'password')) && !isEmpty(get(this.props.modifiedData, 'confirmPassword')) && findIndex(acc, ['name', 'confirmPassword']) === -1) {
- if (this.props.modifiedData.password.length < 6) {
+ if (!isEmpty(get(modifiedData, 'password')) && !isEmpty(get(modifiedData, 'confirmPassword')) && findIndex(acc, ['name', 'confirmPassword']) === -1) {
+ if (modifiedData.password.length < 6) {
acc.push({ name: 'password', errors: [{ id: 'users-permissions.components.Input.error.password.length' }] });
}
- if (get(this.props.modifiedData, 'password') !== get(this.props.modifiedData, 'confirmPassword')) {
+ if (get(modifiedData, 'password') !== get(modifiedData, 'confirmPassword')) {
acc.push({ name: 'confirmPassword', errors: [{ id: 'users-permissions.components.Input.error.password.noMatch' }] });
}
}
@@ -88,25 +132,27 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
return acc;
}, []);
- this.props.setErrors(formErrors);
+ setErrors(formErrors);
if (isEmpty(formErrors)) {
- this.props.submit(this.context);
+ submit(this.context);
}
}
+ redirect = path => this.props.history.push(path);
+
renderButton = () => {
const { match: { params: { authType } }, submitSuccess } = this.props;
- if (this.props.match.params.authType === 'login') {
+ if (this.isAuthType('login')) {
return (
);
}
- const isEmailForgotSent = authType === 'forgot-password' && submitSuccess;
- const label = isEmailForgotSent ? 'users-permissions.Auth.form.button.forgot-password.success' : `users-permissions.Auth.form.button.${this.props.match.params.authType}`;
+ const isEmailForgotSent = this.isAuthType('forgot-password') && submitSuccess;
+ const label = isEmailForgotSent ? 'users-permissions.Auth.form.button.forgot-password.success' : `users-permissions.Auth.form.button.${authType}`;
return (
@@ -121,9 +167,10 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
);
}
+ renderLogo = () => this.isAuthType('register') &&
;
+
renderLink = () => {
-
- if (this.props.match.params.authType === 'login') {
+ if (this.isAuthType('login')) {
return (
@@ -131,7 +178,7 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
);
}
- if (this.props.match.params.authType === 'forgot-password' || this.props.match.params.authType === 'register-success') {
+ if (this.isAuthType('forgot-password') || this.isAuthType('register-success')) {
return (
@@ -143,33 +190,53 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
}
renderInputs = () => {
- const { match: { params: { authType } } } = this.props;
+ const {
+ didCheckErrors,
+ formErrors,
+ match: {
+ params: {
+ authType,
+ },
+ },
+ modifiedData,
+ noErrorsDescription,
+ onChangeInput,
+ submitSuccess,
+ } = this.props;
+
const inputs = get(form, ['form', authType]);
-
- return map(inputs, (input, key) => (
-
- ));
+ const isForgotEmailSent = this.isAuthType('forgot-password') && submitSuccess;
+ return map(inputs, (input, key) => {
+ const label =
+ isForgotEmailSent
+ ? { id: 'users-permissions.Auth.form.forgot-password.email.label.success' }
+ : get(input, 'label');
+
+ return (
+
+ );
+ });
}
render() {
- const { match: { params: { authType } }, modifiedData, submitSuccess } = this.props;
- let divStyle = authType === 'register' ? { marginTop: '3.2rem' } : { marginTop: '.9rem' };
+ const { modifiedData, noErrorsDescription, submitSuccess } = this.props;
+ let divStyle = this.isAuthType('register') ? { marginTop: '3.2rem' } : { marginTop: '.9rem' };
- if (authType === 'forgot-password' && submitSuccess) {
+ if (this.isAuthType('forgot-password') && submitSuccess) {
divStyle = { marginTop: '.9rem', minHeight: '18.2rem' };
}
@@ -177,33 +244,33 @@ export class AuthPage extends React.Component { // eslint-disable-line react/pre
- {this.props.match.params.authType === 'register' ? (
+ {this.isAuthType('register') ? (
) : (
)}
- {authType === 'register' && }
+ {this.isAuthType('register') && }