mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-04 03:43:34 +00:00 
			
		
		
		
	Merge branch 'master' into issue/2327
This commit is contained in:
		
						commit
						f90255bb75
					
				
							
								
								
									
										12
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/PULL_REQUEST_TEMPLATE.md
									
									
									
									
										vendored
									
									
								
							@ -2,18 +2,26 @@
 | 
			
		||||
 | 
			
		||||
<!-- Uncomment the correct contribution type. !-->
 | 
			
		||||
 | 
			
		||||
My PR is a:
 | 
			
		||||
**My PR is a:**
 | 
			
		||||
- [ ] 💥 Breaking change
 | 
			
		||||
- [ ] 🐛 Bug fix #issueNumber
 | 
			
		||||
- [ ] 💅 Enhancement
 | 
			
		||||
- [ ] 🚀 New feature
 | 
			
		||||
 | 
			
		||||
Main update on the:
 | 
			
		||||
**Main update on the:**
 | 
			
		||||
- [ ] Admin
 | 
			
		||||
- [ ] Documentation
 | 
			
		||||
- [ ] Framework
 | 
			
		||||
- [ ] Plugin
 | 
			
		||||
 | 
			
		||||
<!-- Please note that all databases should be tested and confirmed to be working prior to the PR being merged. -->
 | 
			
		||||
**Manual testing done on the follow databases:**
 | 
			
		||||
- [ ] Not applicable
 | 
			
		||||
- [ ] MongoDB
 | 
			
		||||
- [ ] MySQL
 | 
			
		||||
- [ ] Postgres
 | 
			
		||||
 | 
			
		||||
<!-- Write a short description of what your PR does and link the concerned issues of your update. -->
 | 
			
		||||
**Description:**
 | 
			
		||||
 | 
			
		||||
<!-- ⚠️ Please link issue(s) you close / fix by using GitHub keywords https://help.github.com/articles/closing-issues-using-keywords/ !-->
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								README.md
									
									
									
									
									
								
							@ -57,7 +57,7 @@ Node:
 | 
			
		||||
 * NodeJS >= 10.x
 | 
			
		||||
 * NPM >= 6.x
 | 
			
		||||
 | 
			
		||||
**Please note that right now Node 11 is not Officially supported, and the current Node LTS (v10) should be used.**
 | 
			
		||||
**Please note that right now Node 11 is not supported, and the current Node LTS (v10) should be used.**
 | 
			
		||||
 | 
			
		||||
Database:
 | 
			
		||||
 * MongoDB >= 3.x
 | 
			
		||||
@ -71,8 +71,8 @@ Database:
 | 
			
		||||
npm install strapi@alpha -g
 | 
			
		||||
````
 | 
			
		||||
 | 
			
		||||
**We recommend to use the latest version of Strapi to start your new project**.
 | 
			
		||||
Some breaking changes might happen, new releases are shipped every two weeks to fix/enhance the product.
 | 
			
		||||
**We recommend always using the latest version of Strapi to start your new project**.
 | 
			
		||||
As this project is currently in Alpha, some breaking changes may occur. New releases are shipped every two weeks to fix/enhance the project.
 | 
			
		||||
 | 
			
		||||
#### 🏗 Create a new project
 | 
			
		||||
 | 
			
		||||
@ -80,7 +80,7 @@ Some breaking changes might happen, new releases are shipped every two weeks to
 | 
			
		||||
strapi new my-project
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
It will generate a brand new project with the default features (authentication, permissions, content management, content type builder & file upload).
 | 
			
		||||
This command will generate a brand new project with the default features (authentication, permissions, content management, content type builder & file upload).
 | 
			
		||||
 | 
			
		||||
#### 🚀 Start your project
 | 
			
		||||
 | 
			
		||||
@ -109,8 +109,7 @@ Be aware that one of the content type builder won't work due to the writing file
 | 
			
		||||
 | 
			
		||||
## Features
 | 
			
		||||
 | 
			
		||||
- **Modern Admin Panel:**
 | 
			
		||||
  Elegant, entirely customizable and fully extensible admin panel.
 | 
			
		||||
- **Modern Admin Panel:** Elegant, entirely customizable and fully extensible admin panel.
 | 
			
		||||
- **Secure by default:** Reusable policies, CSRF, CORS, P3P, Xframe, XSS, and more.
 | 
			
		||||
- **Plugins Oriented:** Install auth system, content management, custom plugins, and more, in seconds.
 | 
			
		||||
- **Blazing Fast:** Built on top of Node.js, Strapi delivers amazing performances.
 | 
			
		||||
@ -133,7 +132,7 @@ For more information on the upcoming version, please take a look to our [ROADMAP
 | 
			
		||||
For general help using Strapi, please refer to [the official Strapi documentation](https://strapi.io/documentation/). For additional help, you can use one of this channel to ask question:
 | 
			
		||||
 | 
			
		||||
- [StackOverflow](http://stackoverflow.com/questions/tagged/strapi)
 | 
			
		||||
- [Slack](http://slack.strapi.io) (highly recommended for realtime support)
 | 
			
		||||
- [Slack](http://slack.strapi.io) (highly recommended for faster support)
 | 
			
		||||
- [GitHub](https://github.com/strapi/strapi)
 | 
			
		||||
- [Twitter](https://twitter.com/strapijs)
 | 
			
		||||
- [Facebook](https://www.facebook.com/Strapi-616063331867161).
 | 
			
		||||
 | 
			
		||||
@ -28,9 +28,9 @@ npm install strapi@alpha -g
 | 
			
		||||
If you encounter npm permissions issues, [change the permissions to npm default directory](https://docs.npmjs.com/getting-started/fixing-npm-permissions#option-1-change-the-permission-to-npms-default-directory).
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
It takes about 20 seconds with a good Internet connection. You can take a coffee ☕️  if you have a slow one.
 | 
			
		||||
It takes about 20 seconds with a good Internet connection. You can take a coffee ☕️ break if your internet is slow.
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
Having troubles during the installation? Check if someone already had the [same issue](https://github.com/strapi/strapi/issues). If not, please [submit an issue](https://github.com/strapi/strapi/issues/new).
 | 
			
		||||
 | 
			
		||||
## Check installation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,22 @@ Update the `production` settings with the IP and domain name where the project w
 | 
			
		||||
In case your database is not running on the same server, make sure that the environment of your production 
 | 
			
		||||
database (`./config/environments/production/database.json`) is set properly.
 | 
			
		||||
 | 
			
		||||
If you are passing a number of configuration item values via environment variables which is always encouraged for production environment to keep application stateless, checkout the section for [Dynamic Configuration](../configurations/configurations.md#dynamic-configurations). Here is a hint on how to do it for production, for the configuration mentioned above:
 | 
			
		||||
 
 | 
			
		||||
 **Path —** `./config/environments/production/server.json`.
 | 
			
		||||
```js
 | 
			
		||||
{
 | 
			
		||||
  "host": "${process.env.APP_HOST || '127.0.0.1'}"
 | 
			
		||||
  "port": "${process.env.NODE_PORT || 1337}",
 | 
			
		||||
  "autoReload": {
 | 
			
		||||
    "enabled": false
 | 
			
		||||
  },
 | 
			
		||||
  "admin": {
 | 
			
		||||
    "path": "/dashboard" // We highly recommend to change the default `/admin` path for security reasons.
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**⚠️  If you changed the path to access to the administration, the step #2 is required.**
 | 
			
		||||
 | 
			
		||||
#### #2 - Setup (optional)
 | 
			
		||||
 | 
			
		||||
@ -82,7 +82,7 @@ Requests system can be implemented in custom code sections.
 | 
			
		||||
 | 
			
		||||
### Extracting requests filters
 | 
			
		||||
 | 
			
		||||
To extract the filters from an JavaScript object or a request, you need to call the [`strapi.utils.models.convertParams` helper](../api-reference/reference.md#strapiutils).
 | 
			
		||||
To extract the filters from a JavaScript object or a request, you need to call the [`strapi.utils.models.convertParams` helper](../api-reference/reference.md#strapiutils).
 | 
			
		||||
 | 
			
		||||
::: note
 | 
			
		||||
The returned objects are formatted according to the ORM used by the model.
 | 
			
		||||
 | 
			
		||||
@ -194,7 +194,7 @@ You can also apply different parameters to the query to make more complex querie
 | 
			
		||||
  - `<field>_lt`: Lower than.
 | 
			
		||||
  - `<field>_lte`: Lower than or equal to.
 | 
			
		||||
  - `<field>_gt`: Greater than.
 | 
			
		||||
  - `<field>_gte`: Lower than or equal to.
 | 
			
		||||
  - `<field>_gte`: Greater than or equal to.
 | 
			
		||||
  - `<field>_contains`: Contains.
 | 
			
		||||
  - `<field>_containss`: Contains sensitive.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,7 @@ The info key on the model-json states information about the model. This informat
 | 
			
		||||
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'). _Only valid for strapi-hook-bookshelf_
 | 
			
		||||
   - `idAttributeType`: Data type of `idAttribute`, accepted list of value bellow. _Only valid for strapi-hook-bookshelf_
 | 
			
		||||
   - `timestamps`: This tells the model which attributes to use for timestamps. Accepts either `boolean` or `Array` of strings where frist element is create data and second elemtent is update date. Default value when set to `true` for Bookshelf is `["created_at", "updated_at"]` and for MongoDB is `["createdAt", "updatedAt"]`.
 | 
			
		||||
 | 
			
		||||
## Define the attributes
 | 
			
		||||
 | 
			
		||||
@ -56,6 +57,7 @@ If you're using SQL databases, you should use the native SQL constraints to appl
 | 
			
		||||
 | 
			
		||||
  - `required` (boolean) — if true adds a required validator for this property.
 | 
			
		||||
  - `unique` (boolean) — whether to define a unique index on this property.
 | 
			
		||||
  - `index` (boolean) — adds an index on this property, this will create a [single field index](https://docs.mongodb.com/manual/indexes/#single-field) that will run in the background (*only supported by MongoDB*).
 | 
			
		||||
  - `max` (integer) — checks if the value is greater than or equal to the given minimum.
 | 
			
		||||
  - `min` (integer) — checks if the value is less than or equal to the given maximum.
 | 
			
		||||
 | 
			
		||||
@ -100,7 +102,8 @@ To improve the Developer eXperience when developing or using the administration
 | 
			
		||||
    "age": {
 | 
			
		||||
      "type": "integer",
 | 
			
		||||
      "min": 18,
 | 
			
		||||
      "max": 99
 | 
			
		||||
      "max": 99,
 | 
			
		||||
      "index": true
 | 
			
		||||
    },
 | 
			
		||||
    "birthday": {
 | 
			
		||||
      "type": "date"
 | 
			
		||||
 | 
			
		||||
@ -63,10 +63,10 @@ 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:
 | 
			
		||||
Now it is time to make the HTTP call. In this example we will use `axios`. Let's install it:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
npm i request --save
 | 
			
		||||
npm i axios --save
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Edit `api/yourContentType/models/YourContentType.js`:
 | 
			
		||||
@ -76,7 +76,7 @@ Edit `api/yourContentType/models/YourContentType.js`:
 | 
			
		||||
```js
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const request = require('request');
 | 
			
		||||
const axios = require('axios');
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Lifecycle callbacks for the `Post` model.
 | 
			
		||||
@ -119,5 +119,5 @@ So, to trigger an url on delete, please add `request.post(strapi.config.currentE
 | 
			
		||||
 - `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.
 | 
			
		||||
Do not forget to require `axios` at the top of these files.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,6 @@
 | 
			
		||||
- [Migration guide from alpha.14.4 to alpha.14.5](migration-guide-alpha.14.4-to-alpha.14.5.md)
 | 
			
		||||
- [Migration guide from alpha.14.5 to alpha.15](migration-guide-alpha.14.5-to-alpha.15.md)
 | 
			
		||||
- [Migration guide from alpha.15 to alpha.16](migration-guide-alpha.15-to-alpha.16.md)
 | 
			
		||||
- [Migration guide from alpha.15 to alpha.16](migration-guide-alpha.15-to-alpha.16.md)
 | 
			
		||||
- [Migration guide from alpha.16 to alpha.17](migration-guide-alpha.16-to-alpha.17.md)
 | 
			
		||||
- [Migration guide from alpha.17 to alpha.18](migration-guide-alpha.17-to-alpha.18.md)
 | 
			
		||||
- [Migration guide from alpha.18 to alpha.19](migration-guide-alpha.18-to-alpha.19.md)
 | 
			
		||||
 | 
			
		||||
@ -49,7 +49,7 @@ Delete your old admin folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
Copy this file `/plugins/users-permissions/config/jwt.json` **from your old project** and paste it in the corresponding one in your new project.
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -45,7 +45,7 @@ Delete your old admin folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
## Update the Plugins
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it by the new one.
 | 
			
		||||
If you did custom update on one of the plugin, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,7 @@ Delete your old admin folder and replace it with the new one.
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,76 @@
 | 
			
		||||
# Migration guide from alpha.18 to alpha.19
 | 
			
		||||
 | 
			
		||||
**Here are the major changes:**
 | 
			
		||||
 | 
			
		||||
- Fix CLI database issue for Windows
 | 
			
		||||
- Custom timestamp
 | 
			
		||||
- Fix write file on production environment
 | 
			
		||||
 | 
			
		||||
**Useful links:**
 | 
			
		||||
- Changelog: [https://github.com/strapi/strapi/releases/tag/v3.0.0-alpha.19](https://github.com/strapi/strapi/releases/tag/v3.0.0-alpha.19)
 | 
			
		||||
- GitHub diff: [https://github.com/strapi/strapi/compare/v3.0.0-alpha.18...v3.0.0-alpha.19](https://github.com/strapi/strapi/compare/v3.0.0-alpha.18...v3.0.0-alpha.19)
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
::: note
 | 
			
		||||
Feel free to [join us on Slack](http://slack.strapi.io) and ask questions about the migration process.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
## Getting started
 | 
			
		||||
 | 
			
		||||
Install Strapi `alpha.19` globally on your computer. To do so run `npm install strapi@3.0.0-alpha.19 -g`.
 | 
			
		||||
 | 
			
		||||
When it's done, generate a new empty project `strapi new myNewProject` (don't pay attention to the database configuration).
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
## Update node modules
 | 
			
		||||
 | 
			
		||||
Update the Strapi's dependencies version (move Strapi's dependencies to `3.0.0-alpha.19` version) of your project.
 | 
			
		||||
 | 
			
		||||
Run `npm install strapi@3.0.0-alpha.19 --save` to update your strapi version.
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
## Update the Admin
 | 
			
		||||
 | 
			
		||||
::: note
 | 
			
		||||
If you performed updates in the Admin, you will have to manually migrate your changes.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Delete your old admin folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
## Update the Plugins
 | 
			
		||||
 | 
			
		||||
::: note
 | 
			
		||||
If you did a custom update on one of the plugins, you will have to manually migrate your update.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it with the new one.
 | 
			
		||||
 | 
			
		||||
## Production environment
 | 
			
		||||
 | 
			
		||||
If you deploy your application on a server that you don't have write file access you will have to update your procution config file.
 | 
			
		||||
In `config/environments/production/server.json` file you have to add `production` key with `true` as value.
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
{
 | 
			
		||||
  ...
 | 
			
		||||
  "port": "${process.env.PORT || 1337}",
 | 
			
		||||
  "production": true,
 | 
			
		||||
  "proxy": {
 | 
			
		||||
    "enabled": false
 | 
			
		||||
  },
 | 
			
		||||
  ...
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
That's all, you have now upgraded to Strapi `alpha.19`.
 | 
			
		||||
@ -60,7 +60,7 @@ Delete your old admin folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
Copy this file `/plugins/users-permissions/config/jwt.json` **from your old project** and paste it in the corresponding one in your new project.
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -49,7 +49,7 @@ Delete your old admin folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
Copy this file `/plugins/users-permissions/config/jwt.json` **from your old project** and paste it in the corresponding one in your new project.
 | 
			
		||||
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` file in the new one.
 | 
			
		||||
Copy the fields and relations you had in your `/plugins/users-permissions/models/User.settings.json` and `/plugins/users-permissions/config/jwt.json` file in the new one.
 | 
			
		||||
 | 
			
		||||
Then, delete your old `plugins` folder and replace it by the new one.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "dependencies": {},
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "assert": "~1.3.0",
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,8 @@ import React from 'react';
 | 
			
		||||
import { defineMessages, FormattedMessage } from 'react-intl';
 | 
			
		||||
import { PropTypes } from 'prop-types';
 | 
			
		||||
 | 
			
		||||
import LeftMenuLink from 'components/LeftMenuLink';
 | 
			
		||||
 | 
			
		||||
import styles from './styles.scss';
 | 
			
		||||
import messages from './messages.json';
 | 
			
		||||
defineMessages(messages);
 | 
			
		||||
@ -15,8 +17,22 @@ defineMessages(messages);
 | 
			
		||||
function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function
 | 
			
		||||
  return (
 | 
			
		||||
    <div className={styles.leftMenuFooter}>
 | 
			
		||||
      <FormattedMessage {...messages.poweredBy} />
 | 
			
		||||
      <a href={`https://github.com/strapi/strapi/releases/tag/v${version}`} target="_blank">v{version}</a>
 | 
			
		||||
      <ul className={styles.list}>
 | 
			
		||||
        <LeftMenuLink
 | 
			
		||||
          icon="book"
 | 
			
		||||
          label={messages.documentation.id}
 | 
			
		||||
          destination="https://strapi.io/documentation"
 | 
			
		||||
        />
 | 
			
		||||
        <LeftMenuLink
 | 
			
		||||
          icon="question-circle"
 | 
			
		||||
          label={messages.help.id}
 | 
			
		||||
          destination="https://strapi.io/help"
 | 
			
		||||
        />
 | 
			
		||||
      </ul>
 | 
			
		||||
      <div className={styles.poweredBy}>
 | 
			
		||||
        <FormattedMessage {...messages.poweredBy} />
 | 
			
		||||
        <a href="https://strapi.io" target="_blank">Strapi</a> <a href={`https://github.com/strapi/strapi/releases/tag/v${version}`} target="_blank">v{version}</a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "documentation": {
 | 
			
		||||
    "id": "app.components.LeftMenuFooter.documentation",
 | 
			
		||||
    "defaultMessage": "Documentation"
 | 
			
		||||
  },
 | 
			
		||||
  "help": {
 | 
			
		||||
    "id": "app.components.LeftMenuFooter.help",
 | 
			
		||||
    "defaultMessage": "Help"
 | 
			
		||||
  },
 | 
			
		||||
  "poweredBy": {
 | 
			
		||||
    "id": "app.components.LeftMenuFooter.poweredBy",
 | 
			
		||||
    "defaultMessage": "Proudly powered by "
 | 
			
		||||
 | 
			
		||||
@ -4,26 +4,27 @@
 | 
			
		||||
.leftMenuFooter { /* stylelint-disable */
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
  background: $left-menu-bg;
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.list {
 | 
			
		||||
  list-style: none;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  margin-bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.poweredBy {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  height: 3rem;
 | 
			
		||||
  padding-left: 15px;
 | 
			
		||||
  padding-right: 15px;
 | 
			
		||||
  line-height: 3rem;
 | 
			
		||||
  font-family: 'Lato';
 | 
			
		||||
  background-color: rgba(255, 255, 255, .02);
 | 
			
		||||
  font-size: 1rem;
 | 
			
		||||
  font-weight: 400;
 | 
			
		||||
  letter-spacing: 0.05rem;
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
  color: $strapi-gray-light;
 | 
			
		||||
 | 
			
		||||
  a {
 | 
			
		||||
    color: #0097f7;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  select{
 | 
			
		||||
    outline: none;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -47,8 +47,22 @@ class LeftMenuLink extends React.Component {
 | 
			
		||||
      <span className={styles.linkLabel}>{this.props.label}</span>
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <li className={styles.item}>
 | 
			
		||||
    // Icon.
 | 
			
		||||
    const icon = <i className={`${styles.linkIcon} fa-${this.props.icon} fa`} />;
 | 
			
		||||
 | 
			
		||||
    // Create external or internal link.
 | 
			
		||||
    const link = this.props.destination.includes('http')
 | 
			
		||||
      ? (
 | 
			
		||||
        <a
 | 
			
		||||
          className={`${styles.link} ${isLinkActive ? styles.linkActive : ''}`}
 | 
			
		||||
          href={this.props.destination}
 | 
			
		||||
          target="_blank"
 | 
			
		||||
        >
 | 
			
		||||
          {icon}
 | 
			
		||||
          {content}
 | 
			
		||||
        </a>
 | 
			
		||||
      )
 | 
			
		||||
      : (
 | 
			
		||||
        <Link
 | 
			
		||||
          className={`${styles.link} ${isLinkActive ? styles.linkActive : ''}`}
 | 
			
		||||
          to={{
 | 
			
		||||
@ -56,9 +70,14 @@ class LeftMenuLink extends React.Component {
 | 
			
		||||
            search: this.props.source ? `?source=${this.props.source}` : '',
 | 
			
		||||
          }}
 | 
			
		||||
        >
 | 
			
		||||
          <i className={`${styles.linkIcon} fa-${this.props.icon} fa`} />
 | 
			
		||||
          {icon}
 | 
			
		||||
          {content}
 | 
			
		||||
        </Link>
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <li className={styles.item}>
 | 
			
		||||
        {link}
 | 
			
		||||
        {plugin}
 | 
			
		||||
      </li>
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@
 | 
			
		||||
 | 
			
		||||
.leftMenuLinkContainer { /* stylelint-ignore */
 | 
			
		||||
  padding-top: .6rem;
 | 
			
		||||
  padding-bottom: 10.2rem; // LeftMenuFooter height
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 60px;
 | 
			
		||||
  right: 0;
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import React from 'react';
 | 
			
		||||
import { FormattedMessage } from 'react-intl';
 | 
			
		||||
import { get } from 'lodash';
 | 
			
		||||
import PropTypes from 'prop-types';
 | 
			
		||||
import { ButtonDropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';
 | 
			
		||||
@ -40,10 +41,10 @@ class Logout extends React.Component { // eslint-disable-line react/prefer-state
 | 
			
		||||
          </DropdownToggle>
 | 
			
		||||
          <DropdownMenu className={styles.dropDownContent}>
 | 
			
		||||
            <DropdownItem onClick={this.handleGoTo} className={styles.item}>
 | 
			
		||||
              Profile
 | 
			
		||||
              <FormattedMessage id="app.components.Logout.profile" />
 | 
			
		||||
            </DropdownItem>
 | 
			
		||||
            <DropdownItem onClick={this.handleLogout}>
 | 
			
		||||
              Logout
 | 
			
		||||
              <FormattedMessage id="app.components.Logout.logout" />
 | 
			
		||||
              <i className="fa fa-sign-out" />
 | 
			
		||||
            </DropdownItem>
 | 
			
		||||
          </DropdownMenu>
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "قائمة الإضافيات المثبتة في المشروع.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "قائمة الإضافات",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "الإضافات",
 | 
			
		||||
  "app.components.Logout.profile": "الملف الشخصي",
 | 
			
		||||
  "app.components.Logout.logout": "الخروج",
 | 
			
		||||
  "app.components.NotFoundPage.back": "العودة للرئيسية",
 | 
			
		||||
  "app.components.NotFoundPage.description": "لا يوجد",
 | 
			
		||||
  "app.components.Official": "الرسمية",
 | 
			
		||||
@ -138,4 +140,4 @@
 | 
			
		||||
  "notification.error.layout": "تعذّر استرداد التنسيق",
 | 
			
		||||
  "request.error.model.unknow": "هذا النموذج غير موجود",
 | 
			
		||||
  "request.error.model.unknown": "هذا النموذج غير موجود"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.plugins": "Plugins",
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Liste aller im Projekt installierten Plugins.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Plugins anzeigen",
 | 
			
		||||
  "app.components.Logout.profile": "Profil",
 | 
			
		||||
  "app.components.Logout.logout": "Ausloggen",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Plugins",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Zurück zur Homepage",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Nicht gefunden",
 | 
			
		||||
 | 
			
		||||
@ -65,6 +65,8 @@
 | 
			
		||||
  "app.components.InstallPluginPopup.navLink.faq": "faq",
 | 
			
		||||
  "app.components.InstallPluginPopup.navLink.screenshots": "Screenshots",
 | 
			
		||||
  "app.components.InstallPluginPopup.noDescription": "No description available",
 | 
			
		||||
  "app.components.LeftMenuFooter.documentation": "Documentation",
 | 
			
		||||
  "app.components.LeftMenuFooter.help": "Help",
 | 
			
		||||
  "app.components.LeftMenuFooter.poweredBy": "Powered by ",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.configuration": "Configurations",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.general": "General",
 | 
			
		||||
@ -75,6 +77,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "List of the installed plugins in the project.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "List plugins",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Plugins",
 | 
			
		||||
  "app.components.Logout.profile": "Profile",
 | 
			
		||||
  "app.components.Logout.logout": "Logout",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Back to homepage",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Not Found",
 | 
			
		||||
  "app.components.Official": "Official",
 | 
			
		||||
@ -138,4 +142,4 @@
 | 
			
		||||
  "notification.error.layout": "Couldn't retrieve the layout",
 | 
			
		||||
  "request.error.model.unknown": "This model doesn't exist",
 | 
			
		||||
  "app.utils.delete": "Delete"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Lista de los plugins instalados en el proyecto.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Lista de plugins",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Plugins",
 | 
			
		||||
  "app.components.Logout.profile": "Perfil",
 | 
			
		||||
  "app.components.Logout.logout": "Cerrar sesión",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Volver a la página de inicio",
 | 
			
		||||
  "app.components.NotFoundPage.description": "No encontrado",
 | 
			
		||||
  "app.components.Official": "Oficial",
 | 
			
		||||
@ -138,4 +140,4 @@
 | 
			
		||||
  "notification.error.layout": "No se pudo recuperar el esquema",
 | 
			
		||||
  "request.error.model.unknown": "Este modelo no existe",
 | 
			
		||||
  "app.utils.delete": "Eliminar"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -66,6 +66,8 @@
 | 
			
		||||
  "app.components.InstallPluginPopup.navLink.faq": "FAQ",
 | 
			
		||||
  "app.components.InstallPluginPopup.navLink.screenshots": "Captures d'écran",
 | 
			
		||||
  "app.components.InstallPluginPopup.noDescription": "Aucune description disponible",
 | 
			
		||||
  "app.components.LeftMenuFooter.documentation": "Documentation",
 | 
			
		||||
  "app.components.LeftMenuFooter.help": "Aide",
 | 
			
		||||
  "app.components.LeftMenuFooter.poweredBy": "Propulsé par ",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.configuration": "Configurations",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.general": "Général",
 | 
			
		||||
@ -75,6 +77,8 @@
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.plugins": "Plugins",
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Liste des plugins installés dans le projet.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "List plugins",
 | 
			
		||||
  "app.components.Logout.profile": "Profil",
 | 
			
		||||
  "app.components.Logout.logout": "Connectez - Out",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Plugins",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Retourner à la page d'accueil",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Page introuvable",
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Lista dei plugin installati nel progetto.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Lista plugin",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Plugins",
 | 
			
		||||
  "app.components.Logout.profile": "Profilo",
 | 
			
		||||
  "app.components.Logout.logout": "Disconnettersi",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Torna alla home",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Non trovato",
 | 
			
		||||
  "app.components.Official": "Ufficiale",
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "このプロジェクトでインストールされたプラグイン一覧",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "プラグイン一覧",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "プラグイン",
 | 
			
		||||
  "app.components.Logout.profile": "プロフィール",
 | 
			
		||||
  "app.components.Logout.logout": "ログアウト",
 | 
			
		||||
  "app.components.NotFoundPage.back": "ホームページに戻る",
 | 
			
		||||
  "app.components.NotFoundPage.description": "見つかりません",
 | 
			
		||||
  "app.components.Official": "オフィシャル",
 | 
			
		||||
 | 
			
		||||
@ -74,6 +74,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "이 프로젝트에 설치된 플러그인 목록입니다.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "플러그인 목록",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "플러그인",
 | 
			
		||||
  "app.components.Logout.profile": "옆모습",
 | 
			
		||||
  "app.components.Logout.logout": "로그 아웃",
 | 
			
		||||
  "app.components.NotFoundPage.back": "홈으로 돌아가기",
 | 
			
		||||
  "app.components.NotFoundPage.description": "찾을 수 없는 페이지입니다.",
 | 
			
		||||
  "app.components.Official": "공식",
 | 
			
		||||
@ -136,4 +138,4 @@
 | 
			
		||||
  "notification.error": "에러가 발생했습니다.",
 | 
			
		||||
  "notification.error.layout": "레이아웃을 가져올 수 없습니다.",
 | 
			
		||||
  "request.error.model.unknown": "모델이 없습니다."
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Lijst van alle plugins voor dit project",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Alle extensies",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Extensies",
 | 
			
		||||
  "app.components.Logout.profile": "Profil",
 | 
			
		||||
  "app.components.Logout.logout": "Log ud",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Terug naar home pagina",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Niets gevonden",
 | 
			
		||||
  "app.components.Official": "Officieel",
 | 
			
		||||
@ -137,4 +139,4 @@
 | 
			
		||||
  "notification.error": "Er is een fout opgetreden",
 | 
			
		||||
  "notification.error.layout": "Kon de opzet niet laden",
 | 
			
		||||
  "request.error.model.unknown": "Dit model bestaat niet"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Lista zainstalowanych wtyczek w projekcie.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Lista wtyczek",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Wtyczki",
 | 
			
		||||
  "app.components.Logout.profile": "Profil",
 | 
			
		||||
  "app.components.Logout.logout": "Wyloguj",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Powrót do strony głównej",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Nie znaleziono",
 | 
			
		||||
  "app.components.Official": "Oficjalna",
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Lista de extensões instaladas no projeto.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Lista de extensões",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Extensões",
 | 
			
		||||
  "app.components.Logout.profile": "Perfil",
 | 
			
		||||
  "app.components.Logout.logout": "Sair",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Voltar à página inicial",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Não encontrado",
 | 
			
		||||
  "app.components.Official": "Oficial",
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Lista de extensões instaladas no projecto.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Lista de extensões",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Extensões",
 | 
			
		||||
  "app.components.Logout.profile": "Perfil",
 | 
			
		||||
  "app.components.Logout.logout": "Sair",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Voltar à página inicial",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Não encontrado",
 | 
			
		||||
  "app.components.Official": "Oficial",
 | 
			
		||||
@ -137,4 +139,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"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "Analytics": "Аналитика",
 | 
			
		||||
  "Content Manager": "Редактор контента",
 | 
			
		||||
  "Content Type Builder": "Конструктор Типов Контента",
 | 
			
		||||
  "Content Type Builder": "Типы Контента",
 | 
			
		||||
  "Email": "Email",
 | 
			
		||||
  "Files Upload": "Загрузка файлов",
 | 
			
		||||
  "HomePage.notification.newsLetter.success": "Успешная подписка на рассылку новостей",
 | 
			
		||||
@ -16,9 +16,9 @@
 | 
			
		||||
  "Users": "Пользователи",
 | 
			
		||||
  "Users & Permissions": "Пользователи & Доступы",
 | 
			
		||||
  "app.components.BlockLink.code": "Примеры кода",
 | 
			
		||||
  "app.components.BlockLink.code.content": "Обучайтесь на реальных проектах разработанных в сообществе.",
 | 
			
		||||
  "app.components.BlockLink.code.content": "Обучайтесь на реальных проектах, разработанных в сообществе.",
 | 
			
		||||
  "app.components.BlockLink.documentation": "Прочитать документацию",
 | 
			
		||||
  "app.components.BlockLink.documentation.content": "Ознакомтесь с концепциями, документацией и обучающими материалами.",
 | 
			
		||||
  "app.components.BlockLink.documentation.content": "Ознакомьтесь с концепциями, справочниками и обучающими материалами.",
 | 
			
		||||
  "app.components.Button.cancel": "Отменить",
 | 
			
		||||
  "app.components.Button.save": "Сохранить",
 | 
			
		||||
  "app.components.ComingSoonPage.comingSoon": "Скоро",
 | 
			
		||||
@ -27,26 +27,26 @@
 | 
			
		||||
  "app.components.DownloadInfo.text": "Это может занять около минуты. Спасибо за ваше терпение.",
 | 
			
		||||
  "app.components.EmptyAttributes.title": "Пока нет полей",
 | 
			
		||||
  "app.components.HomePage.button.blog": "СМОТРИТЕ БОЛЬШЕ В БЛОГЕ",
 | 
			
		||||
  "app.components.HomePage.button.quickStart": "ОЗНАКОМТЕСЬ С РУКОВОДСТВОМ ПО БЫСТРОМУ СТАРТУ",
 | 
			
		||||
  "app.components.HomePage.community": "Найти сообщество в интернете",
 | 
			
		||||
  "app.components.HomePage.community.content": "Обсудите с членами команды и разработчиками в разных каналах",
 | 
			
		||||
  "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.second": " — плагин, который поможет вам определить структуру ваших данных. Если вы новичок, мы настоятельно рекомендуем вам изучить наше ",
 | 
			
		||||
  "app.components.HomePage.createBlock.content.tutorial": " руководство.",
 | 
			
		||||
  "app.components.HomePage.cta": "ПОДТВЕРДИТЬ",
 | 
			
		||||
  "app.components.HomePage.newsLetter": "Подпишитесь на рассылку, чтобы быть в курсе новостей о Strapi",
 | 
			
		||||
  "app.components.HomePage.cta": "ПОДПИСАТЬСЯ",
 | 
			
		||||
  "app.components.HomePage.newsLetter": "Подпишитесь на нашу рассылку, чтобы быть в курсе новостей Strapi",
 | 
			
		||||
  "app.components.HomePage.support": "ПОДДЕРЖИТЕ НАС",
 | 
			
		||||
  "app.components.HomePage.support.content": "Купите футболку, это поможет нам продолжать работу над проектом, чтобы предоставить вам наилучшее из возможных решений!",
 | 
			
		||||
  "app.components.HomePage.support.content": "Покупая футболку, вы помогаете нам продолжать работу над проектом и предоставлять вам наилучшее из возможных решений!",
 | 
			
		||||
  "app.components.HomePage.support.link": "ЗАКАЗАТЬ НАШУ ФУТБОЛКУ СЕЙЧАС",
 | 
			
		||||
  "app.components.HomePage.welcome": "Добро пожаловать!",
 | 
			
		||||
  "app.components.HomePage.welcome.again": "Добро пожаловать",
 | 
			
		||||
  "app.components.HomePage.welcomeBlock.content": "Мы рады, что вы вступили в сообщество. Нам необходима обратная связь для развития проекта, поэтому не стесняйтесь писать нам ",
 | 
			
		||||
  "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.HomePage.welcomeBlock.content": "Мы рады, что вы присоединились к сообществу. Нам необходима обратная связь для развития проекта, поэтому не стесняйтесь писать нам в ",
 | 
			
		||||
  "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": "Первоначальное название:",
 | 
			
		||||
@ -56,7 +56,7 @@
 | 
			
		||||
  "app.components.InstallPluginPage.InputSearch.placeholder": "Искать плагин... (ex: authentication)",
 | 
			
		||||
  "app.components.InstallPluginPage.description": "Расширяйте ваше приложение без усилий.",
 | 
			
		||||
  "app.components.InstallPluginPage.helmet": "Магазин - Плагины",
 | 
			
		||||
  "app.components.InstallPluginPage.plugin.support-us.description": "Поддержите нас купив футболку Strapi. Это поможет нам продолжать работу над проектом, чтобы предоставить вам наилучшее из возможных решений!",
 | 
			
		||||
  "app.components.InstallPluginPage.plugin.support-us.description": "Поддержите нас, купив футболку Strapi. Это поможет нам продолжать работу над проектом, чтобы предоставить вам наилучшее из возможных решений!",
 | 
			
		||||
  "app.components.InstallPluginPage.title": "Магазин - Плагины",
 | 
			
		||||
  "app.components.InstallPluginPopup.downloads": "скачать",
 | 
			
		||||
  "app.components.InstallPluginPopup.navLink.avis": "avis",
 | 
			
		||||
@ -70,23 +70,25 @@
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.general": "Общие",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.installNewPlugin": "Магазин",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.listPlugins": "Плагины",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.noPluginsInstalled": "Нет установленых плагинов",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.noPluginsInstalled": "Нет установленных плагинов",
 | 
			
		||||
  "app.components.LeftMenuLinkContainer.plugins": "Плагины",
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Список установленых плагинов.",
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Список установленных плагинов.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Список плагинов",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Плагины",
 | 
			
		||||
  "app.components.Logout.profile": "Профиль",
 | 
			
		||||
  "app.components.Logout.logout": "Выйти",
 | 
			
		||||
  "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.install": "Уже установленно",
 | 
			
		||||
  "app.components.PluginCard.Button.label.support": "Поддержать нас",
 | 
			
		||||
  "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.none": "Нет установленных плагинов",
 | 
			
		||||
  "app.components.listPlugins.title.plural": "{number} плагинов установленно",
 | 
			
		||||
  "app.components.listPlugins.title.singular": "{number} плагин установлен",
 | 
			
		||||
  "app.components.listPluginsPage.deletePlugin.error": "Возникла ошибка при установке плагина",
 | 
			
		||||
@ -109,9 +111,9 @@
 | 
			
		||||
  "components.Input.error.validation.minLength": "Слишком короткое.",
 | 
			
		||||
  "components.Input.error.validation.minSupMax": "Не может быть выше",
 | 
			
		||||
  "components.Input.error.validation.regex": "Не соответствует регулярному выражению.",
 | 
			
		||||
  "components.Input.error.validation.required": "Необходимое поле для заполнение.",
 | 
			
		||||
  "components.Input.error.validation.required": "Необходимое поле для заполнения.",
 | 
			
		||||
  "components.ListRow.empty": "Нет данных для отображения.",
 | 
			
		||||
  "components.OverlayBlocker.description": "Вы воспользовались функционалом который требует перезапуска сервера. Пожалуста подождете пока подниметься сервер.",
 | 
			
		||||
  "components.OverlayBlocker.description": "Вы воспользовались функционалом, который требует перезапуска сервера. Пожалуйста, подождете.",
 | 
			
		||||
  "components.OverlayBlocker.title": "Ожидание перезапуска...",
 | 
			
		||||
  "components.PageFooter.select": "записей на странице",
 | 
			
		||||
  "components.ProductionBlocker.description": "Для безопасности мы должны заблокировать его для других вариантов.",
 | 
			
		||||
@ -128,13 +130,13 @@
 | 
			
		||||
  "components.Wysiwyg.selectOptions.title": "Добавить заголовок",
 | 
			
		||||
  "components.WysiwygBottomControls.charactersIndicators": "букв",
 | 
			
		||||
  "components.WysiwygBottomControls.fullscreen": "Развернуть",
 | 
			
		||||
  "components.WysiwygBottomControls.uploadFiles": "Перетащите файлы в эту область, добавляйте из буфер обмена или {browse}.",
 | 
			
		||||
  "components.WysiwygBottomControls.uploadFiles": "Перетащите файлы в эту область, вставьте из буфера обмена или {browse}.",
 | 
			
		||||
  "components.WysiwygBottomControls.uploadFiles.browse": "выделите их",
 | 
			
		||||
  "components.popUpWarning.button.cancel": "Отменить",
 | 
			
		||||
  "components.popUpWarning.button.confirm": "Подтвердить",
 | 
			
		||||
  "components.popUpWarning.message": "Вы уверены, что хотите удалить это?",
 | 
			
		||||
  "components.popUpWarning.title": "Пожалуйста подтвердите",
 | 
			
		||||
  "components.popUpWarning.title": "Пожалуйста, подтвердите",
 | 
			
		||||
  "notification.error": "Произошла ошибка",
 | 
			
		||||
  "notification.error.layout": "Не удалось получить макет",
 | 
			
		||||
  "request.error.model.unknown": "Модель данных не существует"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "Projedeki yüklenen eklentiler.",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "Eklenti Listesi",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "Etklentiler",
 | 
			
		||||
  "app.components.Logout.profile": "Profil",
 | 
			
		||||
  "app.components.Logout.logout": "Çıkış Yap",
 | 
			
		||||
  "app.components.NotFoundPage.back": "Anasayfaya geri dön",
 | 
			
		||||
  "app.components.NotFoundPage.description": "Bulunamadı",
 | 
			
		||||
  "app.components.Official": "Resmi",
 | 
			
		||||
@ -138,4 +140,4 @@
 | 
			
		||||
  "notification.error.layout": "Düzen alınamadı",
 | 
			
		||||
  "request.error.model.unknown": "Bu model bulunmamaktadır.",
 | 
			
		||||
  "app.utils.delete": "Sil"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -72,6 +72,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "项目中已安装的插件列表",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "插件列表",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "插件",
 | 
			
		||||
  "app.components.Logout.profile": "轮廓",
 | 
			
		||||
  "app.components.Logout.logout": "登出",
 | 
			
		||||
  "app.components.NotFoundPage.back": "返回主页",
 | 
			
		||||
  "app.components.NotFoundPage.description": "没有找到",
 | 
			
		||||
  "app.components.Official": "官方",
 | 
			
		||||
@ -133,4 +135,4 @@
 | 
			
		||||
  "notification.error": "发生了一个错误",
 | 
			
		||||
  "notification.error.layout": "无法获取布局",
 | 
			
		||||
  "request.error.model.unknown": "这个模型已不存在"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,6 +75,8 @@
 | 
			
		||||
  "app.components.ListPluginsPage.description": "這個專案安裝的擴充功能列表",
 | 
			
		||||
  "app.components.ListPluginsPage.helmet.title": "擴充功能列表",
 | 
			
		||||
  "app.components.ListPluginsPage.title": "擴充功能",
 | 
			
		||||
  "app.components.Logout.profile": "輪廓",
 | 
			
		||||
  "app.components.Logout.logout": "登出",
 | 
			
		||||
  "app.components.NotFoundPage.back": "回到主頁",
 | 
			
		||||
  "app.components.NotFoundPage.description": "找不到此頁面",
 | 
			
		||||
  "app.components.Official": "官方",
 | 
			
		||||
@ -138,4 +140,4 @@
 | 
			
		||||
  "notification.error.layout": "無法取得佈局",
 | 
			
		||||
  "request.error.model.unknown": "不存在的資料",
 | 
			
		||||
  "app.utils.delete": "刪除"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-admin",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Strapi Admin",
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
@ -31,8 +31,8 @@
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "sanitize.css": "^4.1.0",
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.18",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.19",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Strapi",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-admin",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-admin": "3.0.0-alpha.19",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "email": "hi@strapi.io",
 | 
			
		||||
 | 
			
		||||
@ -64,31 +64,6 @@ module.exports = scope => {
 | 
			
		||||
      }]
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    if (scope.args.tpl && scope.args.tpl !== 'mongoose') {
 | 
			
		||||
      routes.routes.push({
 | 
			
		||||
        method: 'POST',
 | 
			
		||||
        path: '/' + scope.idPluralized + '/:' + tokenID + '/relationships/:relation',
 | 
			
		||||
        handler: scope.globalID + '.createRelation',
 | 
			
		||||
        config: {
 | 
			
		||||
          policies: []
 | 
			
		||||
        }
 | 
			
		||||
      }, {
 | 
			
		||||
        method: 'PUT',
 | 
			
		||||
        path: '/' + scope.idPluralized + '/:' + tokenID + '/relationships/:relation',
 | 
			
		||||
        handler: scope.globalID + '.updateRelation',
 | 
			
		||||
        config: {
 | 
			
		||||
          policies: []
 | 
			
		||||
        }
 | 
			
		||||
      }, {
 | 
			
		||||
        method: 'DELETE',
 | 
			
		||||
        path: '/' + scope.idPluralized + '/:' + tokenID + '/relationships/:relation',
 | 
			
		||||
        handler: scope.globalID + '.destroyRelation',
 | 
			
		||||
        config: {
 | 
			
		||||
          policies: []
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return routes;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-api",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate an API for a Strapi application.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -70,35 +70,5 @@ module.exports = {
 | 
			
		||||
 | 
			
		||||
  destroy: async (ctx, next) => {
 | 
			
		||||
    return strapi.services.<%= id %>.remove(ctx.params);
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Add relation to a/an <%= id %> record.
 | 
			
		||||
   *
 | 
			
		||||
   * @return {Object}
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  createRelation: async (ctx, next) => {
 | 
			
		||||
    return strapi.services.<%= id %>.addRelation(ctx.params, ctx.request.body);
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Update relation to a/an <%= id %> record.
 | 
			
		||||
   *
 | 
			
		||||
   * @return {Object}
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  updateRelation: async (ctx, next) => {
 | 
			
		||||
    return strapi.services.<%= id %>.editRelation(ctx.params, ctx.request.body);
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Destroy relation to a/an <%= id %> record.
 | 
			
		||||
   *
 | 
			
		||||
   * @return {Object}
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
  destroyRelation: async (ctx, next) => {
 | 
			
		||||
    return strapi.services.<%= id %>.removeRelation(ctx.params, ctx.request.body);
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
/* global <%= globalID %> */
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-controller",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate a controller for a Strapi API.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-model",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate a model for a Strapi API.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "host": "localhost",
 | 
			
		||||
  "port": "${process.env.PORT || 1337}",
 | 
			
		||||
  "production": true,
 | 
			
		||||
  "proxy": {
 | 
			
		||||
    "enabled": false
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "host": "localhost",
 | 
			
		||||
  "port": "${process.env.PORT || 1337}",
 | 
			
		||||
  "production": true,
 | 
			
		||||
  "proxy": {
 | 
			
		||||
    "enabled": false
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@
 | 
			
		||||
 | 
			
		||||
// Public node modules.
 | 
			
		||||
const _ = require('lodash');
 | 
			
		||||
const uuid = require('uuid/v4');
 | 
			
		||||
 | 
			
		||||
const { packageManager } = require('strapi-utils');
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -72,7 +72,7 @@ module.exports = scope => {
 | 
			
		||||
    }],
 | 
			
		||||
    'strapi': {
 | 
			
		||||
      'packageManager': pkgManager,
 | 
			
		||||
      'uuid': uuid()
 | 
			
		||||
      'uuid': scope.uuid
 | 
			
		||||
    },
 | 
			
		||||
    'engines': {
 | 
			
		||||
      "node": ">= 10.0.0",
 | 
			
		||||
 | 
			
		||||
@ -5,8 +5,8 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// Node.js core.
 | 
			
		||||
const path = require('path');
 | 
			
		||||
const { exec, execSync } = require('child_process');
 | 
			
		||||
const path = require('path');
 | 
			
		||||
 | 
			
		||||
// Public node modules.
 | 
			
		||||
const _ = require('lodash');
 | 
			
		||||
@ -15,6 +15,7 @@ const fs = require('fs-extra');
 | 
			
		||||
const npm = require('enpeem');
 | 
			
		||||
const ora = require('ora');
 | 
			
		||||
const shell = require('shelljs');
 | 
			
		||||
const request = require('request');
 | 
			
		||||
 | 
			
		||||
// Logger.
 | 
			
		||||
const { packageManager } = require('strapi-utils');
 | 
			
		||||
@ -32,6 +33,8 @@ module.exports = (scope, cb) => {
 | 
			
		||||
  console.log(`The app has been connected to the database ${green('successfully')}!`);
 | 
			
		||||
  console.log();
 | 
			
		||||
 | 
			
		||||
  trackSuccess('didConnectDatabase', scope);
 | 
			
		||||
 | 
			
		||||
  console.log('🏗  Application generation:');
 | 
			
		||||
 | 
			
		||||
  let loader = ora('Copy dashboard').start();
 | 
			
		||||
@ -193,7 +196,19 @@ module.exports = (scope, cb) => {
 | 
			
		||||
        console.log('⚡️ Start application:');
 | 
			
		||||
        console.log(`$ ${green('strapi start')}`);
 | 
			
		||||
 | 
			
		||||
        trackSuccess('didCreateProject', scope);
 | 
			
		||||
        
 | 
			
		||||
        cb();
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function trackSuccess(event, scope) {
 | 
			
		||||
  request
 | 
			
		||||
    .post('https://analytics.strapi.io/track')
 | 
			
		||||
    .form({
 | 
			
		||||
      event,
 | 
			
		||||
      uuid: scope.uuid
 | 
			
		||||
    })
 | 
			
		||||
    .on('error', () => {});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ const {cyan} = require('chalk');
 | 
			
		||||
const fs = require('fs-extra');
 | 
			
		||||
const inquirer = require('inquirer');
 | 
			
		||||
const shell = require('shelljs');
 | 
			
		||||
const uuid = require('uuid/v4');
 | 
			
		||||
 | 
			
		||||
// Logger.
 | 
			
		||||
const { packageManager } = require('strapi-utils');
 | 
			
		||||
@ -46,6 +47,7 @@ module.exports = (scope, cb) => {
 | 
			
		||||
  // Make changes to the rootPath where the Strapi project will be created.
 | 
			
		||||
  scope.rootPath = path.resolve(process.cwd(), scope.name || '');
 | 
			
		||||
  scope.tmpPath = path.resolve(os.tmpdir(), `strapi${ crypto.randomBytes(6).toString('hex') }`);
 | 
			
		||||
  scope.uuid = uuid();
 | 
			
		||||
 | 
			
		||||
  // Ensure we aren't going to inadvertently delete any files.
 | 
			
		||||
  try {
 | 
			
		||||
@ -190,7 +192,7 @@ module.exports = (scope, cb) => {
 | 
			
		||||
                  default: _.get(scope.database, 'authenticationDatabase', undefined)
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  when: !hasDatabaseConfig && scope.client.database === 'mongo',
 | 
			
		||||
                  when: !hasDatabaseConfig,
 | 
			
		||||
                  type: 'boolean',
 | 
			
		||||
                  name: 'ssl',
 | 
			
		||||
                  message: 'Enable SSL connection:',
 | 
			
		||||
@ -209,7 +211,11 @@ module.exports = (scope, cb) => {
 | 
			
		||||
                scope.database.settings.username = answers.username;
 | 
			
		||||
                scope.database.settings.password = answers.password;
 | 
			
		||||
                scope.database.options.authenticationDatabase = answers.authenticationDatabase;
 | 
			
		||||
                scope.database.options.ssl = _.toString(answers.ssl) === 'true';
 | 
			
		||||
                if (scope.client.database === 'mongo') {
 | 
			
		||||
                  scope.database.options.ssl = _.toString(answers.ssl) === 'true';
 | 
			
		||||
                } else {
 | 
			
		||||
                  scope.database.settings.ssl = _.toString(answers.ssl) === 'true';
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                console.log();
 | 
			
		||||
                console.log('⏳ Testing database connection...');
 | 
			
		||||
 | 
			
		||||
@ -66,7 +66,10 @@ module.exports = {
 | 
			
		||||
    'public/uploads': {
 | 
			
		||||
      folder: {}
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // Copy gitkeep into uploads directory.
 | 
			
		||||
    'public/uploads/.gitkeep': {
 | 
			
		||||
      copy: 'gitkeep'
 | 
			
		||||
    },
 | 
			
		||||
    // Empty node_modules directory.
 | 
			
		||||
    'node_modules': {
 | 
			
		||||
      folder: {}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-new",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate a new Strapi application.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
@ -15,11 +15,12 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "enpeem": "^2.2.0",
 | 
			
		||||
    "fs-extra": "^4.0.0",
 | 
			
		||||
    "inquirer": "^4.0.2",
 | 
			
		||||
    "inquirer": "^6.2.1",
 | 
			
		||||
    "listr": "^0.14.1",
 | 
			
		||||
    "lodash": "^4.17.5",
 | 
			
		||||
    "ora": "^2.1.0",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.18",
 | 
			
		||||
    "request": "^2.88.0",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19",
 | 
			
		||||
    "uuid": "^3.1.0"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
 | 
			
		||||
@ -80,7 +80,8 @@ $RECYCLE.BIN/
 | 
			
		||||
ssl
 | 
			
		||||
.idea
 | 
			
		||||
nbproject
 | 
			
		||||
 | 
			
		||||
public/uploads/*
 | 
			
		||||
!public/uploads/.gitkeep
 | 
			
		||||
 | 
			
		||||
############################
 | 
			
		||||
# Node.js
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								packages/strapi-generate-new/templates/gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packages/strapi-generate-new/templates/gitkeep
									
									
									
									
									
										Normal file
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-plugin",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate an plugin for a Strapi application.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-policy",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate a policy for a Strapi API.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate-service",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Generate a service for a Strapi API.",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-generate",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18"
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Strapi team",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-helper-plugin",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Helper for Strapi plugins development",
 | 
			
		||||
  "engines": {
 | 
			
		||||
    "node": ">= 10.0.0",
 | 
			
		||||
 | 
			
		||||
@ -89,7 +89,7 @@ module.exports = function(strapi) {
 | 
			
		||||
            // Register the final model for Bookshelf.
 | 
			
		||||
            const loadedModel = _.assign({
 | 
			
		||||
              tableName: definition.collectionName,
 | 
			
		||||
              hasTimestamps: _.get(definition, 'options.timestamps') === true,
 | 
			
		||||
              hasTimestamps: _.get(definition, 'options.timestamps', false),
 | 
			
		||||
              idAttribute: _.get(definition, 'options.idAttribute', 'id'),
 | 
			
		||||
              associations: [],
 | 
			
		||||
              defaults: Object.keys(definition.attributes).reduce((acc, current) => {
 | 
			
		||||
@ -100,7 +100,14 @@ module.exports = function(strapi) {
 | 
			
		||||
                return acc;
 | 
			
		||||
              }, {})
 | 
			
		||||
            }, definition.options);
 | 
			
		||||
 | 
			
		||||
            // Use default timestamp column names if value is `true`
 | 
			
		||||
            if (_.get(loadedModel, 'hasTimestamps') === true) {
 | 
			
		||||
              _.set(loadedModel, 'hasTimestamps', ['created_at', 'updated_at']);
 | 
			
		||||
            }
 | 
			
		||||
            // Use false for values other than `Boolean` or `Array`
 | 
			
		||||
            if (!_.isArray(_.get(loadedModel, 'hasTimestamps')) && !_.isBoolean(_.get(loadedModel, 'hasTimestamps'))) {
 | 
			
		||||
              _.set(loadedModel, 'hasTimestamps', false);
 | 
			
		||||
            }
 | 
			
		||||
            if (_.isString(_.get(connection, 'options.pivot_prefix'))) {
 | 
			
		||||
              loadedModel.toJSON = function(options = {}) {
 | 
			
		||||
                const { shallow = false, omitPivot = false } = options;
 | 
			
		||||
@ -619,10 +626,10 @@ module.exports = function(strapi) {
 | 
			
		||||
 | 
			
		||||
                  // Add created_at and updated_at field if timestamp option is true
 | 
			
		||||
                  if (loadedModel.hasTimestamps) {
 | 
			
		||||
                    definition.attributes['created_at'] = {
 | 
			
		||||
                    definition.attributes[_.isString(loadedModel.hasTimestamps[0]) ? loadedModel.hasTimestamps[0] : 'created_at'] = {
 | 
			
		||||
                      type: 'timestamp'
 | 
			
		||||
                    };
 | 
			
		||||
                    definition.attributes['updated_at'] = {
 | 
			
		||||
                    definition.attributes[_.isString(loadedModel.hasTimestamps[1]) ? loadedModel.hasTimestamps[1] : 'updated_at'] = {
 | 
			
		||||
                      type: 'timestampUpdate'
 | 
			
		||||
                    };
 | 
			
		||||
                  }
 | 
			
		||||
@ -701,8 +708,8 @@ module.exports = function(strapi) {
 | 
			
		||||
 | 
			
		||||
                  // Remove from attributes (auto handled by bookshlef and not displayed on ctb)
 | 
			
		||||
                  if (loadedModel.hasTimestamps) {
 | 
			
		||||
                    delete definition.attributes['created_at'];
 | 
			
		||||
                    delete definition.attributes['updated_at'];
 | 
			
		||||
                    delete definition.attributes[_.isString(loadedModel.hasTimestamps[0]) ? loadedModel.hasTimestamps[0] : 'created_at'];
 | 
			
		||||
                    delete definition.attributes[_.isString(loadedModel.hasTimestamps[1]) ? loadedModel.hasTimestamps[1] : 'updated_at'];
 | 
			
		||||
                  }
 | 
			
		||||
 | 
			
		||||
                  resolve();
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-hook-bookshelf",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Bookshelf hook for the Strapi framework",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
@ -17,12 +17,12 @@
 | 
			
		||||
  "main": "./lib",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "bookshelf": "^0.12.1",
 | 
			
		||||
    "inquirer": "^5.2.0",
 | 
			
		||||
    "inquirer": "^6.2.1",
 | 
			
		||||
    "lodash": "^4.17.5",
 | 
			
		||||
    "pluralize": "^6.0.0",
 | 
			
		||||
    "rimraf": "^2.6.2",
 | 
			
		||||
    "strapi-hook-knex": "3.0.0-alpha.18",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-hook-knex": "3.0.0-alpha.19",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "strapi": {
 | 
			
		||||
    "dependencies": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-hook-ejs",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "EJS hook for the Strapi framework",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-hook-knex",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Knex hook for the Strapi framework",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -207,7 +207,16 @@ module.exports = function (strapi) {
 | 
			
		||||
                  });
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                collection.schema.set('timestamps', _.get(definition, 'options.timestamps') === true);
 | 
			
		||||
                // Use provided timestamps if the elemnets in the array are string else use default.
 | 
			
		||||
                if (_.isArray(_.get(definition, 'options.timestamps'))) {
 | 
			
		||||
                  const timestamps = {
 | 
			
		||||
                    createdAt: _.isString(_.get(definition, 'options.timestamps[0]')) ? _.get(definition, 'options.timestamps[0]') : 'createdAt',
 | 
			
		||||
                    updatedAt: _.isString(_.get(definition, 'options.timestamps[1]')) ? _.get(definition, 'options.timestamps[1]') : 'updatedAt'
 | 
			
		||||
                  };
 | 
			
		||||
                  collection.schema.set('timestamps', timestamps);
 | 
			
		||||
                } else {
 | 
			
		||||
                  collection.schema.set('timestamps', _.get(definition, 'options.timestamps') === true);
 | 
			
		||||
                }
 | 
			
		||||
                collection.schema.set('minimize', _.get(definition, 'options.minimize', false) === true);
 | 
			
		||||
 | 
			
		||||
                collection.schema.options.toObject = collection.schema.options.toJSON = {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-hook-mongoose",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Mongoose hook for the Strapi framework",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
@ -20,7 +20,7 @@
 | 
			
		||||
    "mongoose-float": "^1.0.3",
 | 
			
		||||
    "pluralize": "^6.0.0",
 | 
			
		||||
    "rimraf": "^2.6.2",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "email": "hi@strapi.io",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-hook-redis",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18"
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "email": "hi@strapi.io",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-lint",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Strapi eslint and prettier configurations",
 | 
			
		||||
  "directories": {
 | 
			
		||||
    "lib": "lib"
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-middleware-views",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "Views middleware to enable server-side rendering for the Strapi framework",
 | 
			
		||||
  "homepage": "http://strapi.io",
 | 
			
		||||
  "keywords": [
 | 
			
		||||
 | 
			
		||||
@ -77,15 +77,10 @@ export function* submit() {
 | 
			
		||||
  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;
 | 
			
		||||
    delete record.updated_at;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Remove the updatedAt & createdAt fields so it is updated correctly when using MongoDB
 | 
			
		||||
  if (record.updatedAt) {
 | 
			
		||||
    delete record.createdAt;
 | 
			
		||||
    delete record.updatedAt;
 | 
			
		||||
  const timestamps = get(schema, ['models', currentModelName, 'options', 'timestamps'], null);
 | 
			
		||||
  if (timestamps) {
 | 
			
		||||
    delete record[timestamps[0]];
 | 
			
		||||
    delete record[timestamps[1]];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
 | 
			
		||||
@ -12,9 +12,9 @@
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._contains": "содержит",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._containss": "содержит (с учетом регистра)",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._gt": "больше чем",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._gte": "равно или больше чем",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._gte": "больше или равно",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._lt": "меньше чем",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._lte": "меньше или равно чем",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._lte": "меньше или равно",
 | 
			
		||||
  "components.FilterOptions.FILTER_TYPES._ne": "не равно",
 | 
			
		||||
  "components.FilterOptions.button.apply": "Применить",
 | 
			
		||||
  "components.FiltersPickWrapper.PluginHeader.actions.apply": "Применить",
 | 
			
		||||
@ -26,12 +26,12 @@
 | 
			
		||||
  "containers.ListPage.displayedFields": "Отображаемые поля",
 | 
			
		||||
  "components.Search.placeholder": "Поиск записей...",
 | 
			
		||||
  "containers.SettingPage.addRelationalField": "Добавить связанное поле",
 | 
			
		||||
  "containers.SettingPage.editSettings.description": "Перетащите поля для сборки макета",
 | 
			
		||||
  "containers.SettingPage.editSettings.title": "Правка — Настройки",
 | 
			
		||||
  "containers.SettingPage.editSettings.description": "Перетащите поля, чтобы определить макет",
 | 
			
		||||
  "containers.SettingPage.editSettings.title": "Редактирование — Настройки",
 | 
			
		||||
  "containers.SettingPage.relations": "Связанные поля",
 | 
			
		||||
  "components.TableDelete.delete": "Удалить все",
 | 
			
		||||
  "components.TableDelete.entries.plural": "{число} записей выбрано",
 | 
			
		||||
  "components.TableDelete.entries.singular": "{число} записей выделено",
 | 
			
		||||
  "components.TableDelete.entries.plural": "Выбрано {number} записей",
 | 
			
		||||
  "components.TableDelete.entries.singular": "Выбрана {number} запись",
 | 
			
		||||
  "components.TableEmpty.withFilters": "Нет {contentType} с примененными фильтрами...",
 | 
			
		||||
  "components.TableEmpty.withSearch": "Нет {contentType} согласно поиску ({search})",
 | 
			
		||||
  "components.TableEmpty.withoutFilter": "Нет {contentType}...",
 | 
			
		||||
@ -43,23 +43,23 @@
 | 
			
		||||
  "containers.Home.introduction": "Для того чтобы отредактировать ваши записи используйте соответствующую ссылку в меню слева. У плагина отсутствует полноценная возможность редактировать настройки и он все еще находится в стадии активной разработки.",
 | 
			
		||||
  "containers.Home.pluginHeaderDescription": "Manage your entries through a powerful and beautiful interface.",
 | 
			
		||||
  "containers.Home.pluginHeaderTitle": "Редактор контента",
 | 
			
		||||
  "containers.List.addAnEntry": "Добавить новые {entity}",
 | 
			
		||||
  "containers.List.addAnEntry": "Добавить {entity}",
 | 
			
		||||
  "containers.List.errorFetchRecords": "Ошибка",
 | 
			
		||||
  "containers.List.pluginHeaderDescription": "{label} записей найдено",
 | 
			
		||||
  "containers.List.pluginHeaderDescription.singular": "{label} запись найдена",
 | 
			
		||||
  "containers.SettingPage.addField": "Добавить новое поле",
 | 
			
		||||
  "containers.SettingPage.attributes": "Поля атрибутов",
 | 
			
		||||
  "containers.SettingPage.attributes.description": "Определить порядок атребутов",
 | 
			
		||||
  "containers.SettingPage.listSettings.description": "Указать порядок атрибутов",
 | 
			
		||||
  "containers.SettingPage.attributes.description": "Определить порядок атрибутов",
 | 
			
		||||
  "containers.SettingPage.listSettings.description": "Настройки списка записей для этого Типа Контента",
 | 
			
		||||
  "containers.SettingPage.listSettings.title": "Список — Настройки",
 | 
			
		||||
  "containers.SettingPage.pluginHeaderDescription": "Отдельные настройки для этого Типа Данных",
 | 
			
		||||
  "containers.SettingPage.pluginHeaderDescription": "Отдельные настройки для этого Типа Контента",
 | 
			
		||||
  "containers.SettingsPage.Block.contentType.description": "Настроить отдельные параметры",
 | 
			
		||||
  "containers.SettingsPage.Block.contentType.title": "Типы данных",
 | 
			
		||||
  "containers.SettingsPage.Block.generalSettings.description": "Настройте опции по умолчанию для ваших Типов Данных",
 | 
			
		||||
  "containers.SettingsPage.Block.contentType.title": "Типы Контента",
 | 
			
		||||
  "containers.SettingsPage.Block.generalSettings.description": "Настройте опции по умолчанию для ваших Типов Контента",
 | 
			
		||||
  "containers.SettingsPage.Block.generalSettings.title": "Общее",
 | 
			
		||||
  "containers.SettingsPage.pluginHeaderDescription": "Настройте параметры по умолчанию для всех Типов Данных",
 | 
			
		||||
  "containers.SettingsPage.pluginHeaderDescription": "Настройте параметры по умолчанию для всех ваших Типов Контента",
 | 
			
		||||
  "emptyAttributes.button": "Перейти в редактор контента",
 | 
			
		||||
  "emptyAttributes.description": "Добавте новое поле в ваш Тип Данных",
 | 
			
		||||
  "emptyAttributes.description": "Добавьте новое поле в ваш Тип Контента",
 | 
			
		||||
  "emptyAttributes.title": "Пока нет полей",
 | 
			
		||||
  "error.attribute.key.taken": "Это значение уже существует",
 | 
			
		||||
  "error.attribute.sameKeyAndName": "Не может быть одинаковым",
 | 
			
		||||
@ -81,21 +81,21 @@
 | 
			
		||||
  "error.validation.minSupMax": "Не может быть выше",
 | 
			
		||||
  "error.validation.regex": "Значение не соответствует регулярному выражению.",
 | 
			
		||||
  "error.validation.required": "Обязательное значение.",
 | 
			
		||||
  "form.Input.bulkActions": "Применить массовые действия",
 | 
			
		||||
  "form.Input.bulkActions": "Включить массовые действия",
 | 
			
		||||
  "form.Input.defaultSort": "Сортировка по умолчанию",
 | 
			
		||||
  "form.Input.description": "Description",
 | 
			
		||||
  "form.Input.description.placeholder": "Display name in the profile",
 | 
			
		||||
  "form.Input.disabled": "Editable field",
 | 
			
		||||
  "form.Input.filters": "Применить фильтры",
 | 
			
		||||
  "form.Input.label": "Метка",
 | 
			
		||||
  "form.Input.label.inputDescription": "Это знчение переопределит метку, в заголовке таблицы",
 | 
			
		||||
  "form.Input.pageEntries": "Записей на страницу",
 | 
			
		||||
  "form.Input.pageEntries.inputDescription": "Заметка: вы можете переопределить это значение на странице настроек Типа Данных",
 | 
			
		||||
  "form.Input.description": "Описание",
 | 
			
		||||
  "form.Input.description.placeholder": "Имя, отображаемое в профиле",
 | 
			
		||||
  "form.Input.disabled": "Редактируемое поле",
 | 
			
		||||
  "form.Input.filters": "Включить фильтры",
 | 
			
		||||
  "form.Input.label": "Подпись",
 | 
			
		||||
  "form.Input.label.inputDescription": "Это значение переопределяет название, отображаемое в заголовке таблицы",
 | 
			
		||||
  "form.Input.pageEntries": "Записей на странице",
 | 
			
		||||
  "form.Input.pageEntries.inputDescription": "Примечание: вы можете переопределить это значение в настройках Типа Контента",
 | 
			
		||||
  "form.Input.placeholder": "Плейсхолдер",
 | 
			
		||||
  "form.Input.placeholder.placeholder": "Мое значение",
 | 
			
		||||
  "form.Input.search": "Применить поиск",
 | 
			
		||||
  "form.Input.search.field": "Применить поиск по этому полю",
 | 
			
		||||
  "form.Input.sort.field": "Применить сортировку по этому полю",
 | 
			
		||||
  "form.Input.search": "Включить поиск",
 | 
			
		||||
  "form.Input.search.field": "Включить поиск по этому полю",
 | 
			
		||||
  "form.Input.sort.field": "Включить сортировку по этому полю",
 | 
			
		||||
  "notification.error.displayedFields": "Необходимо добавить хотя бы одно поле",
 | 
			
		||||
  "notification.error.relationship.fetch": "Возникла ошибка при получении связей.",
 | 
			
		||||
  "notification.info.SettingPage.disableSort": "У вас должен быть один атрибут с разрешенной сортировкой",
 | 
			
		||||
@ -106,9 +106,9 @@
 | 
			
		||||
  "popUpWarning.bodyMessage.contentType.delete.all": "Вы уверенны, что хотите удалить эти записи?",
 | 
			
		||||
  "popUpWarning.button.cancel": "Отменить",
 | 
			
		||||
  "popUpWarning.button.confirm": "Подтвердить",
 | 
			
		||||
  "popUpWarning.title": "Пожалуйста подтвердите",
 | 
			
		||||
  "popUpWarning.warning.cancelAllSettings": "Вы уверенны, что хотите отменить ваши модификации?",
 | 
			
		||||
  "popUpWarning.title": "Пожалуйста, подтвердите",
 | 
			
		||||
  "popUpWarning.warning.cancelAllSettings": "Вы уверенны, что хотите отменить ваши изменения?",
 | 
			
		||||
  "popUpWarning.warning.updateAllSettings": "Это изменит все ваши настройки",
 | 
			
		||||
  "success.record.delete": "Удалено",
 | 
			
		||||
  "success.record.save": "Сохранено"
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,7 @@ const pickData = (model) => _.pick(model, [
 | 
			
		||||
  'globalId',
 | 
			
		||||
  'globalName',
 | 
			
		||||
  'orm',
 | 
			
		||||
  'options.timestamps',
 | 
			
		||||
  'loadedModel',
 | 
			
		||||
  'primaryKey',
 | 
			
		||||
  'associations'
 | 
			
		||||
@ -84,6 +85,7 @@ module.exports = async cb => {
 | 
			
		||||
      pageEntries: 10,
 | 
			
		||||
      defaultSort: model.primaryKey,
 | 
			
		||||
      sort: 'ASC',
 | 
			
		||||
      options: model.options,
 | 
			
		||||
      editDisplay: {
 | 
			
		||||
        availableFields: {},
 | 
			
		||||
        fields: [],
 | 
			
		||||
@ -330,8 +332,9 @@ module.exports = async cb => {
 | 
			
		||||
    // Here we just need to add the data from the current schema Object
 | 
			
		||||
    apisToAdd.map(apiPath => {
 | 
			
		||||
      const api = _.get(schema.models, apiPath);
 | 
			
		||||
      const { search, filters, bulkActions, pageEntries } = _.get(prevSchema, 'generalSettings');
 | 
			
		||||
      const { search, filters, bulkActions, pageEntries, options } = _.get(prevSchema, 'generalSettings');
 | 
			
		||||
 | 
			
		||||
      _.set(api, 'options', options);
 | 
			
		||||
      _.set(api, 'filters', filters);
 | 
			
		||||
      _.set(api, 'search', search);
 | 
			
		||||
      _.set(api, 'bulkActions', bulkActions);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-plugin-content-manager",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18"
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "pluralize": "^7.0.0"
 | 
			
		||||
 | 
			
		||||
@ -14,8 +14,8 @@
 | 
			
		||||
  "attribute.string": "String",
 | 
			
		||||
  "attribute.text": "Text",
 | 
			
		||||
  "button.attributes.add": "Добавить Новое Поле",
 | 
			
		||||
  "button.contentType.add": "Добавить Тип Данных",
 | 
			
		||||
  "button.contentType.create": "Создать Тип Данных",
 | 
			
		||||
  "button.contentType.add": "Добавить Тип Контента",
 | 
			
		||||
  "button.contentType.create": "Создать Тип Контента",
 | 
			
		||||
  "contentType.temporaryDisplay": "(Не сохранено)",
 | 
			
		||||
  "error.attribute.forbidden": "Такое имя атрибута зарезервировано",
 | 
			
		||||
  "error.attribute.key.taken": "Это значение уже существует",
 | 
			
		||||
@ -29,23 +29,23 @@
 | 
			
		||||
  "error.validation.minSupMax": "Не может быть выше",
 | 
			
		||||
  "error.validation.regex": "Не соответствует регулярному выражению.",
 | 
			
		||||
  "error.validation.required": "Это поле является обязательным.",
 | 
			
		||||
  "form.attribute.item.appearance.description": "В противном случае значение будет доступно для редактирования как обычное текстовое поле",
 | 
			
		||||
  "form.attribute.item.appearance.label": "Показывать WYSIWYG",
 | 
			
		||||
  "form.attribute.item.appearance.description": "Если отключено, значение будет доступно для редактирования как обычное текстовое поле",
 | 
			
		||||
  "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.customColumnName": "Названия столбцов",
 | 
			
		||||
  "form.attribute.item.customColumnName.description": "Может быть полезно переименовать названия столбцов для более читаемых ответов API.",
 | 
			
		||||
  "form.attribute.item.date.name": "Название",
 | 
			
		||||
  "form.attribute.item.defineRelation.fieldName": "Название поля",
 | 
			
		||||
  "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": "Название поля в GraphQL",
 | 
			
		||||
  "form.attribute.item.enumeration.graphql.description": "Позволяет переопределить название поля в GraphQL, сгенерированное по умолчанию",
 | 
			
		||||
  "form.attribute.item.enumeration.name": "Название",
 | 
			
		||||
  "form.attribute.item.enumeration.placeholder": "Например: morning,noon,evening",
 | 
			
		||||
  "form.attribute.item.enumeration.rules": "Значения (разделять запятой)",
 | 
			
		||||
  "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.multiple": "Разрешить несколько файлов",
 | 
			
		||||
  "form.attribute.item.media.name": "Название",
 | 
			
		||||
  "form.attribute.item.minimum": "Минимальное значение",
 | 
			
		||||
  "form.attribute.item.minimumLength": "Минимальная длина",
 | 
			
		||||
@ -55,56 +55,56 @@
 | 
			
		||||
  "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.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.item.uniqueField.description": "Вы не сможете создать запись, если уже существует запись с таким значением",
 | 
			
		||||
  "form.attribute.settings.default": "Стандартное значение",
 | 
			
		||||
  "form.attribute.settings.default.checkboxLabel": "Установить значение — true",
 | 
			
		||||
  "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.collectionName.inputDescription": "Полезно, когда название вашего Типа Контента и название вашей таблицы различаются",
 | 
			
		||||
  "form.contentType.item.connections": "Соединение",
 | 
			
		||||
  "form.contentType.item.description": "Описание",
 | 
			
		||||
  "form.contentType.item.description.placeholder": "Добавьте ваше короткое описание...",
 | 
			
		||||
  "form.contentType.item.description.placeholder": "Добавьте короткое описание...",
 | 
			
		||||
  "form.contentType.item.name": "Название",
 | 
			
		||||
  "form.contentType.item.name.description": "Название Типов Данных должны быть уникальными: {link}",
 | 
			
		||||
  "form.contentType.item.name.description": "Название Типа Контента должно быть уникальным: {link}",
 | 
			
		||||
  "form.contentType.item.name.link.description": "Ознакомьтесь с нашей документацией",
 | 
			
		||||
  "from": "from",
 | 
			
		||||
  "home.contentTypeBuilder.description": "Создавайте и обновляйте ваши Типы Данных.",
 | 
			
		||||
  "home.contentTypeBuilder.name": "Типы Данных",
 | 
			
		||||
  "home.emptyAttributes.description": "Добавьте первое поле в ваш новый Тип Данных",
 | 
			
		||||
  "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": "Прочтите больше о Типах Данных в нашем",
 | 
			
		||||
  "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.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": "поле",
 | 
			
		||||
  "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.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. Создавайте новые поля и связи всего за минуту. Файлы автоматически создаются и обновляются в вашем проекте.",
 | 
			
		||||
  "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": "Да или нет, 1 или 0, true или false",
 | 
			
		||||
  "popUpForm.attributes.boolean.name": "Boolean",
 | 
			
		||||
@ -114,7 +114,7 @@
 | 
			
		||||
  "popUpForm.attributes.email.name": "Email",
 | 
			
		||||
  "popUpForm.attributes.enumeration.description": "Список вариантов",
 | 
			
		||||
  "popUpForm.attributes.enumeration.name": "Enumeration",
 | 
			
		||||
  "popUpForm.attributes.json.description": "Данные в JSON формате",
 | 
			
		||||
  "popUpForm.attributes.json.description": "Данные в формате JSON",
 | 
			
		||||
  "popUpForm.attributes.json.name": "JSON",
 | 
			
		||||
  "popUpForm.attributes.media.description": "Картинки, видео, PDF и другие файлы",
 | 
			
		||||
  "popUpForm.attributes.media.name": "Media",
 | 
			
		||||
@ -122,24 +122,24 @@
 | 
			
		||||
  "popUpForm.attributes.number.name": "Number",
 | 
			
		||||
  "popUpForm.attributes.password.description": "Пароль пользователя...",
 | 
			
		||||
  "popUpForm.attributes.password.name": "Password",
 | 
			
		||||
  "popUpForm.attributes.relation.description": "Связан с Типом Данных",
 | 
			
		||||
  "popUpForm.attributes.relation.description": "Ссылка на другой Тип Контента",
 | 
			
		||||
  "popUpForm.attributes.relation.name": "Relation",
 | 
			
		||||
  "popUpForm.attributes.string.description": "Заголовки, названия, имена, перечень названий",
 | 
			
		||||
  "popUpForm.attributes.string.name": "String",
 | 
			
		||||
  "popUpForm.attributes.text.description": "Описания, текстовые параграфы, статьи",
 | 
			
		||||
  "popUpForm.attributes.text.description": "Описания, параграфы, статьи",
 | 
			
		||||
  "popUpForm.attributes.text.name": "Text",
 | 
			
		||||
  "popUpForm.choose.attributes.header.title": "Добавить новое поле",
 | 
			
		||||
  "popUpForm.create": "Добавить новое",
 | 
			
		||||
  "popUpForm.create.contentType.header.title": "Добавить новый Тип Данных",
 | 
			
		||||
  "popUpForm.create": "Добавить ",
 | 
			
		||||
  "popUpForm.create.contentType.header.title": "Добавить Тип Контента",
 | 
			
		||||
  "popUpForm.edit": "Отредактировать",
 | 
			
		||||
  "popUpForm.edit.contentType.header.title": "Отредактировать Тип Данных",
 | 
			
		||||
  "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.bodyMessage.contentType.delete": "Вы уверены, что хотите удалить этот Тип Контента?",
 | 
			
		||||
  "popUpWarning.button.cancel": "Отменить",
 | 
			
		||||
  "popUpWarning.button.confirm": "Подтвердить",
 | 
			
		||||
  "popUpWarning.title": "Пожалуйста подтвердите",
 | 
			
		||||
@ -152,6 +152,6 @@
 | 
			
		||||
  "table.contentType.head.description": "Описание",
 | 
			
		||||
  "table.contentType.head.fields": "Поля",
 | 
			
		||||
  "table.contentType.head.name": "Название",
 | 
			
		||||
  "table.contentType.title.plural": "Типа Данных доступны",
 | 
			
		||||
  "table.contentType.title.singular": "Тип Данных доступен"
 | 
			
		||||
}
 | 
			
		||||
  "table.contentType.title.plural": "Типов Контента доступны",
 | 
			
		||||
  "table.contentType.title.singular": "Тип Контента доступен"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-plugin-content-type-builder",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18",
 | 
			
		||||
    "strapi-generate-api": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-generate": "3.0.0-alpha.19",
 | 
			
		||||
    "strapi-generate-api": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Strapi team",
 | 
			
		||||
 | 
			
		||||
@ -1,26 +1,29 @@
 | 
			
		||||
{
 | 
			
		||||
  "containers.HomePage.Button.open": "Open the documentation",
 | 
			
		||||
  "containers.HomePage.Button.update": "Update",
 | 
			
		||||
  "containers.HomePage.PluginHeader.title": "Documentation - Settings",
 | 
			
		||||
  "containers.HomePage.PluginHeader.description": "Configure the documentation plugin",
 | 
			
		||||
  "containers.HomePage.Block.title": "Versions",
 | 
			
		||||
  "containers.HomePage.PopUpWarning.message": "Are you sure you want to delete this version?",
 | 
			
		||||
  "containers.HomePage.PopUpWarning.confirm": "I understand",
 | 
			
		||||
  "containers.HomePage.Button.open": "Открыть документацию",
 | 
			
		||||
  "containers.HomePage.Button.update": "Обновить",
 | 
			
		||||
  "containers.HomePage.copied": "Токен скопирован в буфер обмена",
 | 
			
		||||
  "containers.HomePage.PluginHeader.title": "Документация - Настройки",
 | 
			
		||||
  "containers.HomePage.PluginHeader.description": "Настройте плагин документации",
 | 
			
		||||
  "containers.HomePage.Block.title": "Версии",
 | 
			
		||||
  "containers.HomePage.PopUpWarning.message": "Вы уверены что хотите удалить эту версию?",
 | 
			
		||||
  "containers.HomePage.PopUpWarning.confirm": "Я понимаю",
 | 
			
		||||
 | 
			
		||||
  "containers.HomePage.form.restrictedAccess": "Restricted access",
 | 
			
		||||
  "containers.HomePage.form.restrictedAccess.inputDescription": "Make the documentation endpoint private. By default, the access is public",
 | 
			
		||||
  "containers.HomePage.form.password": "Password",
 | 
			
		||||
  "containers.HomePage.form.password.inputDescription": "Set the password to access the documentation",
 | 
			
		||||
  "containers.HomePage.form.showGeneratedFiles": "Show generated files",
 | 
			
		||||
  "containers.HomePage.form.showGeneratedFiles.inputDescription": "Useful when you want to override the generated documentation. \nThe plugin will generate files split by model and plugin. \nBy enabling this option it will be easier to customize your documentation",
 | 
			
		||||
 "containers.HomePage.form.jwtToken": "Получите ваш JWT токен",
 | 
			
		||||
  "containers.HomePage.form.jwtToken.description": "Скопируйте этот токен и используйте его в swagger, чтобы делать запросы",
 | 
			
		||||
  "containers.HomePage.form.restrictedAccess": "Закрытый доступ",
 | 
			
		||||
  "containers.HomePage.form.restrictedAccess.inputDescription": "Сделайте вашу документацию приватной. По умолчанию доступ открыт",
 | 
			
		||||
  "containers.HomePage.form.password": "Пароль",
 | 
			
		||||
  "containers.HomePage.form.password.inputDescription": "Установите пароль для доступа к документации",
 | 
			
		||||
  "containers.HomePage.form.showGeneratedFiles": "Показать сгенерированные файлы",
 | 
			
		||||
  "containers.HomePage.form.showGeneratedFiles.inputDescription": "Полезно, если вы хотите изменить сгенерированную документацию. \nПлагин разделяет файлы на модели и плагины. \nПри включенной опции вам будет проще кастомизировать документацию",
 | 
			
		||||
 | 
			
		||||
  "components.Row.generatedDate": "Last generation",
 | 
			
		||||
  "components.Row.open": "Open",
 | 
			
		||||
  "components.Row.regenerate": "Regenerate",
 | 
			
		||||
  "components.Row.generatedDate": "Последнее обновление",
 | 
			
		||||
  "components.Row.open": "Открыть",
 | 
			
		||||
  "components.Row.regenerate": "Сгенерировать",
 | 
			
		||||
 | 
			
		||||
  "error.regenerateDoc": "An error occurred while regenerating the doc",
 | 
			
		||||
  "error.noVersion": "A version is required",
 | 
			
		||||
  "error.regenerateDoc.versionMissing": "The version you are trying to generate doesn't exist",
 | 
			
		||||
  "error.deleteDoc.versionMissing": "The version you are trying to delete does not exist.",
 | 
			
		||||
  "notification.update.success": "Settings updated successfully"
 | 
			
		||||
}
 | 
			
		||||
  "error.regenerateDoc": "При генерации документации возникла ошибка",
 | 
			
		||||
  "error.noVersion": "Необходимо указать версию",
 | 
			
		||||
  "error.regenerateDoc.versionMissing": "Версии, которую вы пытаетесь сгенерировать, не существует",
 | 
			
		||||
  "error.deleteDoc.versionMissing": "Версии, которую вы пытаетесь удалить, не существует.",
 | 
			
		||||
  "notification.update.success": "Настройки успешно обновлены"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-plugin-documentation",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "This is the description of the plugin.",
 | 
			
		||||
  "strapi": {
 | 
			
		||||
    "name": "Documentation",
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
    "swagger-ui-dist": "^3.18.3-republish2"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "soupette",
 | 
			
		||||
 | 
			
		||||
@ -2,10 +2,10 @@
 | 
			
		||||
  "ConfigPage.description": "Настройка плагина email",
 | 
			
		||||
  "ConfigPage.title": "Email - Настройки",
 | 
			
		||||
  "EditForm.Input.number.label": "Максимально допустимый размер (в МБ)",
 | 
			
		||||
  "EditForm.Input.select.inputDescription": "Письма могут быть отправлены стандартным провайдером (Sendmail), или внешними провайдерами",
 | 
			
		||||
  "EditForm.Input.select.inputDescription": "Письма могут быть отправлены стандартным способом (Sendmail) или с помощью внешних провайдеров",
 | 
			
		||||
  "EditForm.Input.select.label": "Провайдеры",
 | 
			
		||||
  "EditForm.Input.toggle.label": "Активировать отправку писем",
 | 
			
		||||
  "notification.config.success": "Настройки успешно обновлены",
 | 
			
		||||
  "plugin.description.long": "Отсылка почты.",
 | 
			
		||||
  "plugin.description.short": "Отсылка почты."
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-plugin-email",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18"
 | 
			
		||||
    "strapi-provider-email-sendmail": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "react-copy-to-clipboard": "5.0.1",
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Strapi team",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-plugin-graphql",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "description": "This is the description of the plugin.",
 | 
			
		||||
  "strapi": {
 | 
			
		||||
    "name": "graphql",
 | 
			
		||||
@ -31,7 +31,7 @@
 | 
			
		||||
    "graphql-type-datetime": "^0.2.2",
 | 
			
		||||
    "graphql-type-json": "^0.2.1",
 | 
			
		||||
    "pluralize": "^7.0.0",
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.18"
 | 
			
		||||
    "strapi-utils": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "A Strapi developer",
 | 
			
		||||
 | 
			
		||||
@ -266,8 +266,10 @@ module.exports = {
 | 
			
		||||
      resolvers,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // Write schema.
 | 
			
		||||
    this.writeGenerateSchema(graphql.printSchema(schema));
 | 
			
		||||
    if (!strapi.config.currentEnvironment.server.production) {
 | 
			
		||||
      // Write schema.
 | 
			
		||||
      this.writeGenerateSchema(graphql.printSchema(schema));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Remove custom scaler (like Upload);
 | 
			
		||||
    typeDefs = Types.removeCustomScalar(typeDefs, resolvers);
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
  "form.advanced.item.admin": "URL-адрес панели администратора",
 | 
			
		||||
  "form.advanced.item.prefix": "Приставка API",
 | 
			
		||||
  "form.advanced.name": "Расширенные",
 | 
			
		||||
  "form.application.description": "Зайдайте настройки вашего приложения.",
 | 
			
		||||
  "form.application.description": "Задайте настройки вашего приложения.",
 | 
			
		||||
  "form.application.item.description": "Описание",
 | 
			
		||||
  "form.application.item.name": "Название",
 | 
			
		||||
  "form.application.item.version": "Версия",
 | 
			
		||||
@ -17,7 +17,7 @@
 | 
			
		||||
  "form.database.item.client": "Клиент",
 | 
			
		||||
  "form.database.item.connector": "Коннектор",
 | 
			
		||||
  "form.database.item.database": "Базы данных",
 | 
			
		||||
  "form.database.item.default": "Задать как стандартное значение",
 | 
			
		||||
  "form.database.item.default": "Сделать подключением по умолчанию",
 | 
			
		||||
  "form.database.item.host": "Хост",
 | 
			
		||||
  "form.database.item.name": "Название соединения",
 | 
			
		||||
  "form.database.item.password": "Пароль",
 | 
			
		||||
@ -28,11 +28,11 @@
 | 
			
		||||
  "form.database.item.provider.redis": "Redis",
 | 
			
		||||
  "form.database.item.ssl": "SSL",
 | 
			
		||||
  "form.database.item.username": "Имя пользователя",
 | 
			
		||||
  "form.databases.description": "Настройки базы данных в зависимости от окружения.",
 | 
			
		||||
  "form.databases.description": "Настройки базы данных для разных окружений.",
 | 
			
		||||
  "form.databases.name": "База данных",
 | 
			
		||||
  "form.language.choose": "Выберите язык:",
 | 
			
		||||
  "form.language.description": "Настройте ваш язык.",
 | 
			
		||||
  "form.language.name": "Язык",
 | 
			
		||||
  "form.language.description": "Настройте ваши языки.",
 | 
			
		||||
  "form.language.name": "Языки",
 | 
			
		||||
  "form.request.description": "Задайте настройки запроса.",
 | 
			
		||||
  "form.request.item.logger": "Логирование",
 | 
			
		||||
  "form.request.item.logger.exposeInContext": "Выводить в контексте",
 | 
			
		||||
@ -79,7 +79,7 @@
 | 
			
		||||
  "form.server.item.host": "Host",
 | 
			
		||||
  "form.server.item.port": "Port",
 | 
			
		||||
  "form.server.item.proxy": "Настройки прокси",
 | 
			
		||||
  "form.server.item.proxy.enable": "Прокси включен",
 | 
			
		||||
  "form.server.item.proxy.enable": "Включить прокси",
 | 
			
		||||
  "form.server.item.proxy.host": "Хост",
 | 
			
		||||
  "form.server.item.proxy.port": "Порт",
 | 
			
		||||
  "form.server.item.proxy.ssl": "SSL",
 | 
			
		||||
@ -579,13 +579,13 @@
 | 
			
		||||
  "language.zu": "isiZulu",
 | 
			
		||||
  "language.zu_ZA": "isiZulu (iNingizimu Afrika)",
 | 
			
		||||
  "list.databases.button.label": "Добавить новое соединение",
 | 
			
		||||
  "list.databases.title.plural": "соединения в этом окружении",
 | 
			
		||||
  "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": "языка доступен",
 | 
			
		||||
  "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": "База данных",
 | 
			
		||||
@ -596,15 +596,15 @@
 | 
			
		||||
  "menu.item.server": "Сервер",
 | 
			
		||||
  "menu.section.environments": "Окружения приложения",
 | 
			
		||||
  "menu.section.global-settings": "Глобальные настройки",
 | 
			
		||||
  "pageNotFound": "Cтраница не найдена",
 | 
			
		||||
  "plugin.description.long": "Настройте ваш проект в течении считаных секунд.",
 | 
			
		||||
  "plugin.description.short": "Настройте ваш проект в течении считаных секунд.",
 | 
			
		||||
  "pageNotFound": "Страница не найдена",
 | 
			
		||||
  "plugin.description.long": "Настройте ваш проект в считанные секунды.",
 | 
			
		||||
  "plugin.description.short": "Настройте ваш проект в считанные секунды.",
 | 
			
		||||
  "popUpWarning.danger.ok.message": "Я понимаю",
 | 
			
		||||
  "popUpWarning.databases.danger.message": "Типы Данных все еще подключены этому соединению. Удалив его, возможна критическая ошибка в приложении. Будте осторожны...",
 | 
			
		||||
  "popUpWarning.databases.danger.message": "Типы Контента все еще ссылаются на это соединение. При его удалении в приложении может возникнуть критическая ошибка. Будьте осторожны...",
 | 
			
		||||
  "popUpWarning.databases.delete.message": "Вы уверены, что хотите удалить эту базу данных?",
 | 
			
		||||
  "popUpWarning.languages.delete.message": "Вы уверены, что хотите удалить этот язык?",
 | 
			
		||||
  "popUpWarning.title": "Пожалуйта подтвердите",
 | 
			
		||||
  "request.error.config": "Файл с настройками отсутствует.",
 | 
			
		||||
  "popUpWarning.title": "Пожалуйста, подтвердите",
 | 
			
		||||
  "request.error.config": "Файл с настройками не существует.",
 | 
			
		||||
  "request.error.database.exist": "Это соединение уже существует",
 | 
			
		||||
  "request.error.database.unknow": "Нет такого соединения",
 | 
			
		||||
  "request.error.environment.required": "Окружение необходимо.",
 | 
			
		||||
@ -625,11 +625,11 @@
 | 
			
		||||
  "strapi.notification.error": "Возникла ошибка",
 | 
			
		||||
  "strapi.notification.info.serverRestart": "Сервер будет перезапущен",
 | 
			
		||||
  "strapi.notification.info.settingsEqual": "Значения идентичны",
 | 
			
		||||
  "strapi.notification.success.databaseAdd": "База данных успешно добавлен.",
 | 
			
		||||
  "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.languageDelete": "Язык успешно удален.",
 | 
			
		||||
  "strapi.notification.success.settingsEdit": "Настройки успешно обновлены."
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "strapi-plugin-settings-manager",
 | 
			
		||||
  "version": "3.0.0-alpha.18",
 | 
			
		||||
  "version": "3.0.0-alpha.19",
 | 
			
		||||
  "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.18"
 | 
			
		||||
    "strapi-helper-plugin": "3.0.0-alpha.19"
 | 
			
		||||
  },
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Strapi team",
 | 
			
		||||
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user